From d0e8fa5fc8dd4fcda958a133bde73c72605f501c Mon Sep 17 00:00:00 2001 From: narnaud Date: Sat, 18 Feb 2023 14:32:12 +0100 Subject: [PATCH] changed to vite building and docker skeleton --- .env | 3 + .gitignore | 26 +- .prettierrc | 8 - Makefile | 30 + cont/back/Dockerfile | 6 + cont/front/Dockerfile | 8 + docker-compose.yml | 31 + package.json | 28 - public/global.css | 63 -- public/img/pog.jpg | Bin 9348 -> 0 bytes public/img/pong.png | Bin 1434 -> 0 bytes public/img/profileicon.png | Bin 9190 -> 0 bytes public/index.html | 17 - rollup.config.js | 84 -- scripts/setupTypeScript.js | 121 --- src/App.svelte | 82 -- src/components/Friends.svelte | 80 -- src/components/MatchHistory.svelte | 58 -- src/components/NavBar.svelte | 106 -- src/components/Play.svelte | 38 - src/components/Pong/Ball.ts | 15 - src/components/Pong/Game.ts | 80 -- src/components/Pong/Paddle.ts | 29 - src/components/Pong/Player.ts | 19 - src/components/Pong/Pong.svelte | 56 -- src/components/Pong/constants.ts | 32 - src/components/Pong/utils.ts | 88 -- src/components/Profile.svelte | 109 -- src/components/Spectate.svelte | 53 - src/main.ts | 7 - tsconfig.json | 32 - volumes/front/README.md | 47 + volumes/front/index.html | 17 + volumes/front/package-lock.json | 1474 ++++++++++++++++++++++++++++ volumes/front/package.json | 21 + volumes/front/svelte.config.js | 7 + volumes/front/tsconfig.json | 21 + volumes/front/tsconfig.node.json | 8 + volumes/front/vite.config.ts | 7 + 39 files changed, 1702 insertions(+), 1209 deletions(-) create mode 100644 .env delete mode 100644 .prettierrc create mode 100644 Makefile create mode 100644 cont/back/Dockerfile create mode 100644 cont/front/Dockerfile create mode 100644 docker-compose.yml delete mode 100644 package.json delete mode 100644 public/global.css delete mode 100644 public/img/pog.jpg delete mode 100644 public/img/pong.png delete mode 100644 public/img/profileicon.png delete mode 100644 public/index.html delete mode 100644 rollup.config.js delete mode 100644 scripts/setupTypeScript.js delete mode 100644 src/App.svelte delete mode 100644 src/components/Friends.svelte delete mode 100644 src/components/MatchHistory.svelte delete mode 100644 src/components/NavBar.svelte delete mode 100644 src/components/Play.svelte delete mode 100644 src/components/Pong/Ball.ts delete mode 100644 src/components/Pong/Game.ts delete mode 100644 src/components/Pong/Paddle.ts delete mode 100644 src/components/Pong/Player.ts delete mode 100644 src/components/Pong/Pong.svelte delete mode 100644 src/components/Pong/constants.ts delete mode 100644 src/components/Pong/utils.ts delete mode 100644 src/components/Profile.svelte delete mode 100644 src/components/Spectate.svelte delete mode 100644 src/main.ts delete mode 100644 tsconfig.json create mode 100644 volumes/front/README.md create mode 100644 volumes/front/index.html create mode 100644 volumes/front/package-lock.json create mode 100644 volumes/front/package.json create mode 100644 volumes/front/svelte.config.js create mode 100644 volumes/front/tsconfig.json create mode 100644 volumes/front/tsconfig.node.json create mode 100644 volumes/front/vite.config.ts diff --git a/.env b/.env new file mode 100644 index 0000000..1b182d1 --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +POSTGRES_USER: postgres_usr +POSTGRES_PASSWORD: postgres_pw +POSTGRES_DB: transcendence diff --git a/.gitignore b/.gitignore index 001a8db..3e20103 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,23 @@ -node_modules -package-lock.json -yarn.lock +* + +!.gitignore +!LICENCE +!README.md + +!Makefile +!docker-compose.yml +!.env + +!cont/ +!cont/front +!cont/back +!cont/front/* +!cont/back/* + + +!volumes/ +!volumes/front +!volumes/back +!volumes/front/* +!volumes/back/* -public \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 2616dce..0000000 --- a/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "none", - "semi": true, - "printWidth": 120, - "tabWidth": 4, - "useTabs": true -} \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1c21cc4 --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +NAME = transcendence +USER = gavaniwast + +CERT = volumes/ssl/$(NAME).pem + +all: clean start + +$(CERT): + openssl req -newkey rsa:4096 -x509 -sha256 -days 365 -nodes \ + -out $(NAME).pem -keyout $(NAME).pem \ + -subj "/C=FR/ST=Nice/L=Nice/O=42/OU=student/CN=$(NAME)_$(USER)/" + mkdir -p volumes/ssl + mv $(NAME).pem volumes/ssl + +start: $(CERT) + sudo docker compose -f docker-compose.yml up --build + +debug: $(CERT) + sudo BUILDKIT_PROGRESS=plain docker compose -f docker-compose.yml up --build + +stop: + sudo docker compose -f docker-compose.yml down + +clean: stop + sudo docker system prune -f + +fclean: stop + sudo docker system prune -af --volumes + +re: fclean start diff --git a/cont/back/Dockerfile b/cont/back/Dockerfile new file mode 100644 index 0000000..17867c2 --- /dev/null +++ b/cont/back/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine:3.15 + +RUN apk update && apk upgrade && apk add --no-cache npm \ + && npm install -g @nestjs/cli + +WORKDIR /var/html/ diff --git a/cont/front/Dockerfile b/cont/front/Dockerfile new file mode 100644 index 0000000..44b1892 --- /dev/null +++ b/cont/front/Dockerfile @@ -0,0 +1,8 @@ +FROM alpine:3.15 + +RUN apk update && apk upgrade && apk add npm nginx + +RUN mkdir -p /var/ssl + +WORKDIR /var/www/html +ENTRYPOINT npm install && npm build && npm preview diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5806807 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +version: '3.8' + +networks: + transcendence: + +services: + front: + container_name: front + build: cont/front/ + env_file: .env + depends_on: [postgres, back] + ports: [80:80] + volumes: [./volumes/front:/var/www/html] + networks: [transcendence] + restart: always + back: + container_name: back + build: cont/back/ + env_file: .env + depends_on: [postgres] + ports: [3030:3030] + networks: [transcendence] + volumes: [./volumes/back:/var/www/html] + restart: always + postgres: + container_name: postgres + image: postgres + ports: [5432:5432] + restart: always + env_file: .env + diff --git a/package.json b/package.json deleted file mode 100644 index 0470527..0000000 --- a/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "svelte-app", - "version": "1.0.0", - "private": true, - "scripts": { - "build": "rollup -c", - "dev": "rollup -c -w", - "start": "sirv public --no-clear" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^17.0.0", - "@rollup/plugin-node-resolve": "^11.0.0", - "@tsconfig/svelte": "^3.0.0", - "rollup": "^2.3.4", - "rollup-plugin-css-only": "^3.1.0", - "rollup-plugin-livereload": "^2.0.0", - "rollup-plugin-svelte": "^7.0.0", - "rollup-plugin-terser": "^7.0.0", - "svelte": "^3.0.0" - }, - "dependencies": { - "@rollup/plugin-typescript": "^11.0.0", - "sirv-cli": "^2.0.0", - "svelte-check": "^3.0.3", - "svelte-preprocess": "^5.0.1", - "svelte-routing": "^1.6.0" - } -} diff --git a/public/global.css b/public/global.css deleted file mode 100644 index bb28a94..0000000 --- a/public/global.css +++ /dev/null @@ -1,63 +0,0 @@ -html, body { - position: relative; - width: 100%; - height: 100%; -} - -body { - color: #333; - margin: 0; - padding: 8px; - box-sizing: border-box; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; -} - -a { - color: rgb(0,100,200); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -a:visited { - color: rgb(0,80,160); -} - -label { - display: block; -} - -input, button, select, textarea { - font-family: inherit; - font-size: inherit; - -webkit-padding: 0.4em 0; - padding: 0.4em; - margin: 0 0 0.5em 0; - box-sizing: border-box; - border: 1px solid #ccc; - border-radius: 2px; -} - -input:disabled { - color: #ccc; -} - -button { - color: #333; - background-color: #f4f4f4; - outline: none; -} - -button:disabled { - color: #999; -} - -button:not(:disabled):active { - background-color: #ddd; -} - -button:focus { - border-color: #666; -} diff --git a/public/img/pog.jpg b/public/img/pog.jpg deleted file mode 100644 index 353331e186f8e76a2427b7bc8944ea184eb7251f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9348 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 diff --git a/public/img/pong.png b/public/img/pong.png deleted file mode 100644 index 72657d30758e979c333b75f07c425c8d50ba4798..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1434 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 - - - - - - Pong - - - - - - - - - - diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 4b75ee7..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,84 +0,0 @@ -import svelte from "rollup-plugin-svelte"; -import commonjs from "@rollup/plugin-commonjs"; -import resolve from "@rollup/plugin-node-resolve"; -import livereload from "rollup-plugin-livereload"; -import { terser } from "rollup-plugin-terser"; -import css from "rollup-plugin-css-only"; -import autoPreprocess from "svelte-preprocess"; -import typescript from "@rollup/plugin-typescript"; - -const production = !process.env.ROLLUP_WATCH; - -function serve() { - let server; - - function toExit() { - if (server) server.kill(0); - } - - return { - writeBundle() { - if (server) return; - server = require("child_process").spawn( - "npm", - ["run", "start", "--", "--dev"], - { - stdio: ["ignore", "inherit", "inherit"], - shell: true, - } - ); - - process.on("SIGTERM", toExit); - process.on("exit", toExit); - }, - }; -} - -export default { - input: "src/main.ts", - output: { - sourcemap: true, - format: "iife", - name: "app", - file: "public/build/bundle.js", - }, - plugins: [ - svelte({ - preprocess: autoPreprocess(), - compilerOptions: { - // enable run-time checks when not in production - dev: !production, - }, - }), - typescript({ sourceMap: !production }), - // we'll extract any component CSS out into - // a separate file - better for performance - css({ output: "bundle.css" }), - - // If you have external dependencies installed from - // npm, you'll most likely need these plugins. In - // some cases you'll need additional configuration - - // consult the documentation for details: - // https://github.com/rollup/plugins/tree/master/packages/commonjs - resolve({ - browser: true, - dedupe: ["svelte"], - }), - commonjs(), - - // In dev mode, call `npm run start` once - // the bundle has been generated - !production && serve(), - - // Watch the `public` directory and refresh the - // browser on changes when not in production - !production && livereload("public"), - - // If we're building for production (npm run build - // instead of npm run dev), minify - production && terser(), - ], - watch: { - clearScreen: false, - }, -}; diff --git a/scripts/setupTypeScript.js b/scripts/setupTypeScript.js deleted file mode 100644 index 133658a..0000000 --- a/scripts/setupTypeScript.js +++ /dev/null @@ -1,121 +0,0 @@ -// @ts-check - -/** This script modifies the project to support TS code in .svelte files like: - - - - As well as validating the code for CI. - */ - -/** To work on this script: - rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template -*/ - -const fs = require("fs") -const path = require("path") -const { argv } = require("process") - -const projectRoot = argv[2] || path.join(__dirname, "..") - -// Add deps to pkg.json -const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8")) -packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, { - "svelte-check": "^2.0.0", - "svelte-preprocess": "^4.0.0", - "@rollup/plugin-typescript": "^8.0.0", - "typescript": "^4.0.0", - "tslib": "^2.0.0", - "@tsconfig/svelte": "^2.0.0" -}) - -// Add script for checking -packageJSON.scripts = Object.assign(packageJSON.scripts, { - "check": "svelte-check --tsconfig ./tsconfig.json" -}) - -// Write the package JSON -fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " ")) - -// mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too -const beforeMainJSPath = path.join(projectRoot, "src", "main.js") -const afterMainTSPath = path.join(projectRoot, "src", "main.ts") -fs.renameSync(beforeMainJSPath, afterMainTSPath) - -// Switch the app.svelte file to use TS -const appSveltePath = path.join(projectRoot, "src", "App.svelte") -let appFile = fs.readFileSync(appSveltePath, "utf8") -appFile = appFile.replace(" - -
- - {#if isSpectateOpen} -
(isSpectateOpen = false)} on:keydown={() => (isSpectateOpen = false)}> - -
- {/if} - {#if isFriendOpen} -
(isFriendOpen = false)} on:keydown={() => (isFriendOpen = false)}> - -
- {/if} - {#if isHistoryOpen} -
(isHistoryOpen = false)} on:keydown={() => (isHistoryOpen = false)}> - -
- {/if} - {#if isProfileOpen} -
(isProfileOpen = false)} on:keydown={() => (isProfileOpen = false)}> - -
- {/if} - - -
- - diff --git a/src/components/Friends.svelte b/src/components/Friends.svelte deleted file mode 100644 index 452ec7b..0000000 --- a/src/components/Friends.svelte +++ /dev/null @@ -1,80 +0,0 @@ - - - - -
-
-
- {#if friends.length > 0} -

Monkey friends

- {#each friends.slice(0, 10) as friend} -
  • - {friend.username} is {friend.status} -
  • - {/each} - {:else} -

    No friends to display

    - {/if} -
    -

    Add a friend

    -
    - - -
    -
    -
    -
    -
    - - diff --git a/src/components/MatchHistory.svelte b/src/components/MatchHistory.svelte deleted file mode 100644 index 68c9101..0000000 --- a/src/components/MatchHistory.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - - - -
    -
    -
    - {#if matches.length > 0} -

    Last 10 monkey games

    - {#each matches.slice(0, 10) as match} -
  • - {match.winner} 1 - 0 {match.loser} - {#if match.points > 0} - +{match.points} - {:else} - {match.points} - {/if} - MP | rank #{match.rank} -
  • - {/each} - {:else} -

    No matches to display

    - {/if} -
    -
    -
    - - diff --git a/src/components/NavBar.svelte b/src/components/NavBar.svelte deleted file mode 100644 index a101a28..0000000 --- a/src/components/NavBar.svelte +++ /dev/null @@ -1,106 +0,0 @@ - - - - - diff --git a/src/components/Play.svelte b/src/components/Play.svelte deleted file mode 100644 index ca6f100..0000000 --- a/src/components/Play.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - -
    -

    Choose a gamemode

    - - - -
    - - diff --git a/src/components/Pong/Ball.ts b/src/components/Pong/Ball.ts deleted file mode 100644 index cfb0828..0000000 --- a/src/components/Pong/Ball.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Point, Rect } from './utils'; - -export class Ball { - rect: Rect; - speed: Point; - color: string | CanvasGradient | CanvasPattern = 'white'; - - constructor(spawn: Point, size: Point = new Point(20, 20), speed: Point = new Point(10, 2)) { - this.rect = new Rect(spawn, size); - } - - draw(context: CanvasRenderingContext2D) { - this.rect.draw(context, this.color); - } -} diff --git a/src/components/Pong/Game.ts b/src/components/Pong/Game.ts deleted file mode 100644 index 8b37993..0000000 --- a/src/components/Pong/Game.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Ball } from './Ball'; -import { GAME_EVENTS } from './constants'; -import type { GameInfo, GameUpdate } from './constants'; -import { Paddle } from './Paddle'; -import { Player } from './Player'; -import { formatWebsocketData, Point } from './utils'; - -const BG_COLOR = 'black'; - -export class Game { - canvas: HTMLCanvasElement; - context: CanvasRenderingContext2D; - ball: Ball; - players: Player[]; - my_paddle: Paddle; - - constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D) { - this.canvas = canvas; - this.context = context; - this.players = []; - this.my_paddle = null; - } - - setInfo(data: GameInfo) { - this.canvas.width = data.mapSize.x; - this.canvas.height = data.mapSize.y; - - this.ball = new Ball(new Point(this.canvas.width / 2, this.canvas.height / 2), data.ballSize); - - const paddle1: Paddle = new Paddle(new Point(data.playerXOffset, this.canvas.height / 2), data.paddleSize); - const paddle2: Paddle = new Paddle( - new Point(this.canvas.width - data.playerXOffset, this.canvas.height / 2), - data.paddleSize - ); - this.players = [new Player(paddle1), new Player(paddle2)]; - this.my_paddle = this.players[data.yourPaddleIndex].paddle; - } - - start(socket: WebSocket) { - if (this.my_paddle) { - this.canvas.addEventListener('mousemove', (e) => { - this.my_paddle.move(e); - socket.send( - formatWebsocketData(GAME_EVENTS.PLAYER_MOVE, { - position: this.my_paddle.rect.center - }) - ); - }); - console.log('Game started!'); - } - } - - update(data: GameUpdate) { - if (this.players[0].paddle != this.my_paddle) { - this.players[0].paddle.rect.center = data.paddlesPositions[0]; - } - if (this.players[1].paddle != this.my_paddle) { - this.players[1].paddle.rect.center = data.paddlesPositions[1]; - } - this.ball.rect.center = data.ballPosition; - for (let i = 0; i < data.scores.length; i++) { - this.players[i].score = data.scores[i]; - } - } - - draw() { - this.context.fillStyle = BG_COLOR; - this.context.fillRect(0, 0, this.canvas.width, this.canvas.height); - - this.players.forEach((p) => p.draw(this.context)); - this.ball.draw(this.context); - - const max_width = 50; - this.context.font = '50px Arial'; - const text_width = this.context.measureText('0').width; - const text_offset = 50; - this.players[0].drawScore(this.canvas.width / 2 - (text_width + text_offset), max_width, this.context); - this.players[1].drawScore(this.canvas.width / 2 + text_offset, max_width, this.context); - } -} diff --git a/src/components/Pong/Paddle.ts b/src/components/Pong/Paddle.ts deleted file mode 100644 index ee7f419..0000000 --- a/src/components/Pong/Paddle.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Point, Rect } from './utils'; - -export class Paddle { - rect: Rect; - color: string | CanvasGradient | CanvasPattern = 'white'; - - constructor(spawn: Point, size: Point = new Point(6, 100)) { - this.rect = new Rect(spawn, size); - } - - draw(context: CanvasRenderingContext2D) { - this.rect.draw(context, this.color); - } - - move(e: MouseEvent) { - const canvas = e.target as HTMLCanvasElement; - const rect = canvas.getBoundingClientRect(); - const new_y = ((e.clientY - rect.top) * canvas.height) / rect.height; - - const offset: number = this.rect.size.y / 2; - if (new_y - offset < 0) { - this.rect.center.y = offset; - } else if (new_y + offset > canvas.height) { - this.rect.center.y = canvas.height - offset; - } else { - this.rect.center.y = new_y; - } - } -} diff --git a/src/components/Pong/Player.ts b/src/components/Pong/Player.ts deleted file mode 100644 index eec3dc9..0000000 --- a/src/components/Pong/Player.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Paddle } from './Paddle'; - -export class Player { - paddle: Paddle; - score: number; - - constructor(paddle: Paddle) { - this.paddle = paddle; - this.score = 0; - } - - draw(context: CanvasRenderingContext2D) { - this.paddle.draw(context); - } - - drawScore(score_position_x: number, max_width: number, context: CanvasRenderingContext2D) { - context.fillText(this.score.toString(), score_position_x, 50, max_width); - } -} diff --git a/src/components/Pong/Pong.svelte b/src/components/Pong/Pong.svelte deleted file mode 100644 index 66337bf..0000000 --- a/src/components/Pong/Pong.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - -
    - -
    -
    - -
    diff --git a/src/components/Pong/constants.ts b/src/components/Pong/constants.ts deleted file mode 100644 index b06ad8d..0000000 --- a/src/components/Pong/constants.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Point } from './utils'; - -export const GAME_EVENTS = { - START_GAME: 'START_GAME', - GAME_TICK: 'GAME_TICK', - PLAYER_MOVE: 'PLAYER_MOVE', - GET_GAME_INFO: 'GET_GAME_INFO' -}; - -export interface GameInfo extends GameInfoConstants { - yourPaddleIndex: number; -} -export interface GameInfoConstants { - mapSize: Point; - paddleSize: Point; - playerXOffset: number; - ballSize: Point; - winScore: number; -} -export const gameInfoConstants: GameInfoConstants = { - mapSize: new Point(600, 400), - paddleSize: new Point(6, 50), - playerXOffset: 50, - ballSize: new Point(20, 20), - winScore: 2 -}; - -export interface GameUpdate { - paddlesPositions: Point[]; - ballPosition: Point; - scores: number[]; -} diff --git a/src/components/Pong/utils.ts b/src/components/Pong/utils.ts deleted file mode 100644 index b083261..0000000 --- a/src/components/Pong/utils.ts +++ /dev/null @@ -1,88 +0,0 @@ -export class Point { - x: number; - y: number; - - constructor(x: number, y: number) { - this.x = x; - this.y = y; - } - - //Returns a new point - add(other: Point) { - return new Point(this.x + other.x, this.y + other.y); - } - - //Modifies `this` point - add_inplace(other: Point) { - this.x += other.x; - this.y += other.y; - } - - clone(): Point { - return new Point(this.x, this.y); - } -} - -export class Rect { - center: Point; - size: Point; - - constructor(center: Point, size: Point) { - this.center = center; - this.size = size; - } - - draw(context: CanvasRenderingContext2D, color: string | CanvasGradient | CanvasPattern) { - const offset: Point = new Point(this.size.x / 2, this.size.y / 2); - - context.fillStyle = color; - context.fillRect(this.center.x - offset.x, this.center.y - offset.y, this.size.x, this.size.y); - } - - //True if `this` rect contains `other` rect in the x-axis - contains_x(other: Rect): boolean { - const offset: number = this.size.x / 2; - const offset_other: number = other.size.x / 2; - - if ( - this.center.x - offset <= other.center.x - offset_other && - this.center.x + offset >= other.center.x + offset_other - ) - return true; - return false; - } - - //True if `this` rect contains `other` rect in the y-axis - contains_y(other: Rect): boolean { - const offset: number = this.size.y / 2; - const offset_other: number = other.size.y / 2; - - if ( - this.center.y - offset <= other.center.y - offset_other && - this.center.y + offset >= other.center.y + offset_other - ) - return true; - return false; - } - - collides(other: Rect): boolean { - const offset: Point = new Point(this.size.x / 2, this.size.y / 2); - const offset_other: Point = new Point(other.size.x / 2, other.size.y / 2); - - if ( - this.center.x - offset.x < other.center.x + offset_other.x && - this.center.x + offset.x > other.center.x - offset_other.x && - this.center.y - offset.y < other.center.y + offset_other.y && - this.center.y + offset.y > other.center.y - offset_other.y - ) - return true; - return false; - } -} - -export function formatWebsocketData(event: string, data?: any): string { - return JSON.stringify({ - event, - data - }); -} diff --git a/src/components/Profile.svelte b/src/components/Profile.svelte deleted file mode 100644 index 210bb92..0000000 --- a/src/components/Profile.svelte +++ /dev/null @@ -1,109 +0,0 @@ - - -
    -
    -
    - Profile Icon -

    {realname}

    -
    - -
    -
    -
    -
    -
    - - -
    - -
    -

    Wins: {wins}

    -

    Losses: {losses}

    -

    Winrate: {(wins / (wins + losses)) * 100}%

    -

    Elo : {elo}

    -

    Rank: {rank}

    -
    - -
    -
    -
    -
    - - diff --git a/src/components/Spectate.svelte b/src/components/Spectate.svelte deleted file mode 100644 index a9a4b36..0000000 --- a/src/components/Spectate.svelte +++ /dev/null @@ -1,53 +0,0 @@ - - - - -
    -
    -
    - {#if spectate.length > 0} -

    Monkey spectating

    - {#each spectate.slice(0, 10) as _spectate} -
  • - {_spectate.player1} VS {_spectate.player2} - -
  • - {/each} - {:else} -

    No matches to spectate

    - {/if} -
    -
    -
    - - diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index d80e9a3..0000000 --- a/src/main.ts +++ /dev/null @@ -1,7 +0,0 @@ -import App from './App.svelte'; - -const app = new App({ - target: document.body, -}); - -export default app; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index dd2e147..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "es6", - "strict": true, - "noImplicitAny": true, - "jsx": "preserve", - "importHelpers": true, - "moduleResolution": "node", - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "sourceMap": true, - "baseUrl": ".", - "types": [ - "svelte" - ], - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "skipDefaultLibCheck": true, - "strictNullChecks": false, - "declaration": false, - "downlevelIteration": true - }, - "include": [ - "src/**/*" - ], - "exclude": [ - "node_modules/*", - "public/*" - ], - "extends": "@tsconfig/svelte/tsconfig.json" -} \ No newline at end of file diff --git a/volumes/front/README.md b/volumes/front/README.md new file mode 100644 index 0000000..e6cd94f --- /dev/null +++ b/volumes/front/README.md @@ -0,0 +1,47 @@ +# Svelte + TS + Vite + +This template should help get you started developing with Svelte and TypeScript in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). + +## Need an official Svelte framework? + +Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. + +## Technical considerations + +**Why use this over SvelteKit?** + +- It brings its own routing solution which might not be preferable for some users. +- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. + +This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. + +Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. + +**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** + +Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. + +**Why include `.vscode/extensions.json`?** + +Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. + +**Why enable `allowJs` in the TS template?** + +While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. + +**Why is HMR not preserving my local component state?** + +HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). + +If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. + +```ts +// store.ts +// An extremely simple external store +import { writable } from 'svelte/store' +export default writable(0) +``` diff --git a/volumes/front/index.html b/volumes/front/index.html new file mode 100644 index 0000000..f7bb4f8 --- /dev/null +++ b/volumes/front/index.html @@ -0,0 +1,17 @@ + + + + + + + Pong + + + + + + + + + + diff --git a/volumes/front/package-lock.json b/volumes/front/package-lock.json new file mode 100644 index 0000000..cc4ce8d --- /dev/null +++ b/volumes/front/package-lock.json @@ -0,0 +1,1474 @@ +{ + "name": "Transcendence", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "Transcendence", + "version": "0.0.0", + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.0.2", + "@tsconfig/svelte": "^3.0.0", + "svelte": "^3.55.1", + "svelte-check": "^2.10.3", + "tslib": "^2.5.0", + "typescript": "^4.9.3", + "vite": "^4.1.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", + "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.27.0", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.3" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.54.0", + "vite": "^4.0.0" + } + }, + "node_modules/@tsconfig/svelte": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", + "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", + "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", + "dev": true + }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.0.tgz", + "integrity": "sha512-0zZQ0J4p0ZtTla6l8sheDTUyNfGZQDpU5h0nPHf6xtUXIzKK70LmB2IRR0wLnzaL8a02fjmsJy+XCncbSwOpjg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.55.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", + "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-check": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", + "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.9", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.24.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0", + "svelte": "^3.23.0", + "typescript": "^3.9.5 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-preprocess/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/vite": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.2.tgz", + "integrity": "sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.14", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", + "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + } +} diff --git a/volumes/front/package.json b/volumes/front/package.json new file mode 100644 index 0000000..88f4e75 --- /dev/null +++ b/volumes/front/package.json @@ -0,0 +1,21 @@ +{ + "name": "Transcendence", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-check --tsconfig ./tsconfig.json" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.0.2", + "@tsconfig/svelte": "^3.0.0", + "svelte": "^3.55.1", + "svelte-check": "^2.10.3", + "tslib": "^2.5.0", + "typescript": "^4.9.3", + "vite": "^4.1.0" + } +} diff --git a/volumes/front/svelte.config.js b/volumes/front/svelte.config.js new file mode 100644 index 0000000..b0683fd --- /dev/null +++ b/volumes/front/svelte.config.js @@ -0,0 +1,7 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +export default { + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + preprocess: vitePreprocess(), +} diff --git a/volumes/front/tsconfig.json b/volumes/front/tsconfig.json new file mode 100644 index 0000000..816c97e --- /dev/null +++ b/volumes/front/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": true, + "checkJs": true, + "isolatedModules": true + }, + "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], + "exclude": ["node_modules/*", "public/*"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/volumes/front/tsconfig.node.json b/volumes/front/tsconfig.node.json new file mode 100644 index 0000000..65dbdb9 --- /dev/null +++ b/volumes/front/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node" + }, + "include": ["vite.config.ts"] +} diff --git a/volumes/front/vite.config.ts b/volumes/front/vite.config.ts new file mode 100644 index 0000000..d701969 --- /dev/null +++ b/volumes/front/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import { svelte } from '@sveltejs/vite-plugin-svelte' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [svelte()], +})