commit
						a31676b2b1
					
				| @ -0,0 +1,11 @@ | ||||
| version: '4' | ||||
| 
 | ||||
| services: | ||||
|   web: | ||||
|     build: | ||||
|       context: ./web | ||||
|     environment: | ||||
|       ORIGIN: http://localhost:3300 | ||||
|     ports: | ||||
|       - '3300:3000' | ||||
|     restart: always | ||||
| @ -0,0 +1,13 @@ | ||||
| .DS_Store | ||||
| node_modules | ||||
| /build | ||||
| /.svelte-kit | ||||
| /package | ||||
| .env | ||||
| .env.* | ||||
| !.env.example | ||||
| 
 | ||||
| # Ignore files for PNPM, NPM and YARN | ||||
| pnpm-lock.yaml | ||||
| package-lock.json | ||||
| yarn.lock | ||||
| @ -0,0 +1,20 @@ | ||||
| module.exports = { | ||||
| 	root: true, | ||||
| 	parser: '@typescript-eslint/parser', | ||||
| 	extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], | ||||
| 	plugins: ['svelte3', '@typescript-eslint'], | ||||
| 	ignorePatterns: ['*.cjs'], | ||||
| 	overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], | ||||
| 	settings: { | ||||
| 		'svelte3/typescript': () => require('typescript') | ||||
| 	}, | ||||
| 	parserOptions: { | ||||
| 		sourceType: 'module', | ||||
| 		ecmaVersion: 2020 | ||||
| 	}, | ||||
| 	env: { | ||||
| 		browser: true, | ||||
| 		es2017: true, | ||||
| 		node: true | ||||
| 	} | ||||
| }; | ||||
| @ -0,0 +1,10 @@ | ||||
| .DS_Store | ||||
| node_modules | ||||
| /build | ||||
| /.svelte-kit | ||||
| /package | ||||
| .env | ||||
| .env.* | ||||
| !.env.example | ||||
| vite.config.js.timestamp-* | ||||
| vite.config.ts.timestamp-* | ||||
| @ -0,0 +1 @@ | ||||
| engine-strict=true | ||||
| @ -0,0 +1,13 @@ | ||||
| .DS_Store | ||||
| node_modules | ||||
| /build | ||||
| /.svelte-kit | ||||
| /package | ||||
| .env | ||||
| .env.* | ||||
| !.env.example | ||||
| 
 | ||||
| # Ignore files for PNPM, NPM and YARN | ||||
| pnpm-lock.yaml | ||||
| package-lock.json | ||||
| yarn.lock | ||||
| @ -0,0 +1,20 @@ | ||||
| { | ||||
| 	"useTabs": true, | ||||
| 	"singleQuote": true, | ||||
| 	"trailingComma": "none", | ||||
| 	"printWidth": 150, | ||||
| 	"plugins": [ | ||||
| 		"prettier-plugin-svelte" | ||||
| 	], | ||||
| 	"pluginSearchDirs": [ | ||||
| 		"." | ||||
| 	], | ||||
| 	"overrides": [ | ||||
| 		{ | ||||
| 			"files": "*.svelte", | ||||
| 			"options": { | ||||
| 				"parser": "svelte" | ||||
| 			} | ||||
| 		} | ||||
| 	] | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| FROM node:18-alpine AS build | ||||
| 
 | ||||
| # install dependencies | ||||
| WORKDIR /app | ||||
| COPY package.json yarn.lock ./ | ||||
| RUN yarn install | ||||
| 
 | ||||
| # Copy all local files into the image. | ||||
| COPY . . | ||||
| 
 | ||||
| RUN yarn build | ||||
| 
 | ||||
| ### | ||||
| # Only copy over the Node pieces we need | ||||
| # ~> Saves 35MB | ||||
| ### | ||||
| FROM node:18-alpine AS deploy | ||||
| 
 | ||||
| WORKDIR /app | ||||
| COPY --from=0 /app . | ||||
| COPY . . | ||||
| 
 | ||||
| EXPOSE 3000 | ||||
| CMD ["node", "./build"] | ||||
| @ -0,0 +1,38 @@ | ||||
| # create-svelte | ||||
| 
 | ||||
| Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). | ||||
| 
 | ||||
| ## Creating a project | ||||
| 
 | ||||
| If you're seeing this, you've probably already done this step. Congrats! | ||||
| 
 | ||||
| ```bash | ||||
| # create a new project in the current directory | ||||
| npm create svelte@latest | ||||
| 
 | ||||
| # create a new project in my-app | ||||
| npm create svelte@latest my-app | ||||
| ``` | ||||
| 
 | ||||
| ## Developing | ||||
| 
 | ||||
| Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: | ||||
| 
 | ||||
| ```bash | ||||
| npm run dev | ||||
| 
 | ||||
| # or start the server and open the app in a new browser tab | ||||
| npm run dev -- --open | ||||
| ``` | ||||
| 
 | ||||
| ## Building | ||||
| 
 | ||||
| To create a production version of your app: | ||||
| 
 | ||||
| ```bash | ||||
| npm run build | ||||
| ``` | ||||
| 
 | ||||
| You can preview the production build with `npm run preview`. | ||||
| 
 | ||||
| > To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. | ||||
| @ -0,0 +1,35 @@ | ||||
| { | ||||
| 	"name": "web", | ||||
| 	"version": "0.0.1", | ||||
| 	"private": true, | ||||
| 	"scripts": { | ||||
| 		"dev": "vite dev", | ||||
| 		"build": "vite build", | ||||
| 		"preview": "vite preview", | ||||
| 		"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", | ||||
| 		"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", | ||||
| 		"lint": "prettier --plugin-search-dir . --check . && eslint .", | ||||
| 		"format": "prettier --plugin-search-dir . --write ." | ||||
| 	}, | ||||
| 	"devDependencies": { | ||||
| 		"@sveltejs/adapter-auto": "^1.0.0", | ||||
| 		"@sveltejs/adapter-node": "^1.1.4", | ||||
| 		"@sveltejs/kit": "^1.0.0", | ||||
| 		"@typescript-eslint/eslint-plugin": "^5.45.0", | ||||
| 		"@typescript-eslint/parser": "^5.45.0", | ||||
| 		"eslint": "^8.28.0", | ||||
| 		"eslint-config-prettier": "^8.5.0", | ||||
| 		"eslint-plugin-svelte3": "^4.0.0", | ||||
| 		"prettier": "^2.8.0", | ||||
| 		"prettier-plugin-svelte": "^2.8.1", | ||||
| 		"svelte": "^3.54.0", | ||||
| 		"svelte-check": "^3.0.1", | ||||
| 		"tslib": "^2.4.1", | ||||
| 		"typescript": "^4.9.3", | ||||
| 		"vite": "^4.0.0" | ||||
| 	}, | ||||
| 	"type": "module", | ||||
| 	"dependencies": { | ||||
| 		"dotenv": "^16.0.3" | ||||
| 	} | ||||
| } | ||||
| @ -0,0 +1,12 @@ | ||||
| // See https://kit.svelte.dev/docs/types#app
 | ||||
| // for information about these interfaces
 | ||||
| declare global { | ||||
| 	namespace App { | ||||
| 		// interface Error {}
 | ||||
| 		// interface Locals {}
 | ||||
| 		// interface PageData {}
 | ||||
| 		// interface Platform {}
 | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| export {}; | ||||
| @ -0,0 +1,12 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| 	<head> | ||||
| 		<meta charset="utf-8" /> | ||||
| 		<link rel="icon" href="%sveltekit.assets%/favicon.png" /> | ||||
| 		<meta name="viewport" content="width=device-width" /> | ||||
| 		%sveltekit.head% | ||||
| 	</head> | ||||
| 	<body data-sveltekit-preload-data="hover"> | ||||
| 		<div style="display: contents">%sveltekit.body%</div> | ||||
| 	</body> | ||||
| </html> | ||||
| @ -0,0 +1,134 @@ | ||||
| class Operator { | ||||
| 	name: string; | ||||
| 	gender: Gender; | ||||
| 	side: Side; | ||||
| 	roles: Array<Role>; | ||||
| 	speed: number; | ||||
| 	squad: Squad; | ||||
| 
 | ||||
| 	constructor(name: string, gender: Gender, side: Side, roles: Array<Role>, speed: number, squad: Squad) { | ||||
| 		this.name = name; | ||||
| 		this.gender = gender; | ||||
| 		this.side = side; | ||||
| 		this.roles = roles; | ||||
| 		this.speed = speed; | ||||
| 		this.squad = squad; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| enum Gender { | ||||
| 	male, | ||||
| 	female, | ||||
| 	divers | ||||
| } | ||||
| 
 | ||||
| enum Side { | ||||
| 	attacker, | ||||
| 	defender | ||||
| } | ||||
| 
 | ||||
| enum Squad { | ||||
| 	Rainbow, | ||||
| 	Nighthaven, | ||||
| 	Wolfguard, | ||||
| 	Ghosteyes | ||||
| } | ||||
| 
 | ||||
| enum Role { | ||||
| 	Intel_Gatherer, | ||||
| 	Area_Denial, | ||||
| 	Covering_Fire, | ||||
| 	Crowd_Control, | ||||
| 	Anchor, | ||||
| 	Secure, | ||||
| 	Anti_Roam, | ||||
| 	Roam, | ||||
| 	Buff, | ||||
| 	Soft_Breach, | ||||
| 	Disable, | ||||
| 	Back_Line, | ||||
| 	Intel_Denier, | ||||
| 	Front_Line, | ||||
| 	Hard_Breach, | ||||
| 	Flank, | ||||
| 	Trap, | ||||
| 	Anti_Hard_Breach, | ||||
| 	Shield | ||||
| } | ||||
| 
 | ||||
| const operators: Array<Operator> = [ | ||||
| 	new Operator('Solid', Gender.female, Side.defender, [Role.Intel_Gatherer], 2, Squad.Ghosteyes), | ||||
| 	new Operator('Grim', Gender.male, Side.attacker, [Role.Intel_Gatherer, Role.Area_Denial], 3, Squad.Nighthaven), | ||||
| 	new Operator('Sens', Gender.divers, Side.attacker, [Role.Covering_Fire, Role.Area_Denial, Role.Crowd_Control], 3, Squad.Wolfguard), | ||||
| 	new Operator('Azami', Gender.female, Side.defender, [Role.Area_Denial], 2, Squad.Rainbow), | ||||
| 	new Operator('Thorn', Gender.female, Side.defender, [Role.Anchor, Role.Secure], 2, Squad.Rainbow), | ||||
| 	new Operator('Osa', Gender.divers, Side.attacker, [Role.Intel_Gatherer, Role.Area_Denial, Role.Anti_Roam], 1, Squad.Nighthaven), | ||||
| 	new Operator('Thunderbird', Gender.female, Side.defender, [Role.Secure, Role.Roam, Role.Buff], 2, Squad.Wolfguard), | ||||
| 	new Operator('Flores', Gender.male, Side.attacker, [Role.Disable, Role.Soft_Breach, Role.Area_Denial, Role.Back_Line], 2, Squad.Ghosteyes), | ||||
| 	new Operator('Aruni', Gender.female, Side.defender, [Role.Intel_Gatherer, Role.Secure, Role.Anchor], 1, Squad.Nighthaven), | ||||
| 	new Operator('Zero', Gender.male, Side.attacker, [Role.Intel_Denier, Role.Intel_Gatherer], 3, Squad.Ghosteyes), | ||||
| 	new Operator('Ace', Gender.male, Side.attacker, [Role.Front_Line, Role.Hard_Breach], 2, Squad.Nighthaven), | ||||
| 	new Operator('Melusi', Gender.female, Side.defender, [Role.Intel_Gatherer, Role.Secure, Role.Crowd_Control], 1, Squad.Wolfguard), | ||||
| 	new Operator('Oryx', Gender.male, Side.defender, [Role.Roam, Role.Soft_Breach], 2, Squad.Rainbow), | ||||
| 	new Operator('Iana', Gender.female, Side.attacker, [Role.Intel_Denier, Role.Intel_Gatherer], 2, Squad.Ghosteyes), | ||||
| 	new Operator('Wamai', Gender.male, Side.defender, [Role.Anchor, Role.Secure], 2, Squad.Nighthaven), | ||||
| 	new Operator('Kali', Gender.female, Side.attacker, [Role.Back_Line, Role.Covering_Fire, Role.Disable], 2, Squad.Nighthaven), | ||||
| 	new Operator('Amaru', Gender.female, Side.attacker, [Role.Front_Line, Role.Flank], 2, Squad.Rainbow), | ||||
| 	new Operator('Goyo', Gender.male, Side.defender, [Role.Area_Denial, Role.Secure], 2, Squad.Rainbow), | ||||
| 	new Operator('Nøkk', Gender.female, Side.attacker, [Role.Intel_Denier, Role.Flank], 2, Squad.Ghosteyes), | ||||
| 	new Operator('Warden', Gender.male, Side.defender, [Role.Anchor, Role.Intel_Denier], 2, Squad.Ghosteyes), | ||||
| 	new Operator('Mozzie', Gender.male, Side.defender, [Role.Intel_Gatherer, Role.Intel_Denier, Role.Secure], 2, Squad.Ghosteyes), | ||||
| 	new Operator('Gridlock', Gender.female, Side.attacker, [Role.Anti_Roam, Role.Area_Denial, Role.Crowd_Control], 1, Squad.Rainbow), | ||||
| 	new Operator('Nomad', Gender.female, Side.attacker, [Role.Anti_Roam, Role.Trap, Role.Crowd_Control], 2, Squad.Wolfguard), | ||||
| 	new Operator('Kaid', Gender.male, Side.defender, [Role.Anti_Hard_Breach, Role.Secure, Role.Anchor], 1, Squad.Rainbow), | ||||
| 	new Operator('Clash', Gender.female, Side.defender, [Role.Crowd_Control, Role.Intel_Gatherer, Role.Secure, Role.Shield], 1, Squad.Wolfguard), | ||||
| 	new Operator('Maverick', Gender.male, Side.attacker, [Role.Hard_Breach, Role.Back_Line, Role.Disable, Role.Flank], 3, Squad.Ghosteyes), | ||||
| 	new Operator('Maestro', Gender.male, Side.defender, [Role.Secure, Role.Anchor, Role.Area_Denial, Role.Intel_Gatherer], 1, Squad.Rainbow), | ||||
| 	new Operator('Alibi', Gender.female, Side.defender, [Role.Intel_Denier, Role.Intel_Gatherer, Role.Roam, Role.Trap], 3, Squad.Rainbow), | ||||
| 	new Operator('Lion', Gender.male, Side.attacker, [Role.Intel_Gatherer, Role.Back_Line, Role.Anti_Roam, Role.Crowd_Control], 2, Squad.Wolfguard), | ||||
| 	new Operator('Finka', Gender.female, Side.attacker, [Role.Back_Line, Role.Buff], 2, Squad.Nighthaven), | ||||
| 	new Operator('Vigil', Gender.male, Side.defender, [Role.Intel_Denier, Role.Roam], 3, Squad.Ghosteyes), | ||||
| 	new Operator('Dokkaebi', Gender.female, Side.attacker, [Role.Intel_Gatherer, Role.Intel_Denier, Role.Anti_Roam, Role.Flank], 3, Squad.Rainbow), | ||||
| 	new Operator( | ||||
| 		'Zofia', | ||||
| 		Gender.female, | ||||
| 		Side.attacker, | ||||
| 		[Role.Anti_Roam, Role.Crowd_Control, Role.Disable, Role.Flank, Role.Soft_Breach], | ||||
| 		1, | ||||
| 		Squad.Ghosteyes | ||||
| 	), | ||||
| 	new Operator('Ela', Gender.female, Side.defender, [Role.Crowd_Control, Role.Trap, Role.Roam], 2, Squad.Nighthaven), | ||||
| 	new Operator('Ying', Gender.female, Side.attacker, [Role.Crowd_Control, Role.Front_Line], 2, Squad.Wolfguard), | ||||
| 	new Operator( | ||||
| 		'Lesion', | ||||
| 		Gender.male, | ||||
| 		Side.defender, | ||||
| 		[Role.Crowd_Control, Role.Trap, Role.Roam, Role.Anchor, Role.Intel_Gatherer], | ||||
| 		2, | ||||
| 		Squad.Ghosteyes | ||||
| 	), | ||||
| 	new Operator('Mira', Gender.female, Side.defender, [Role.Secure, Role.Anchor, Role.Intel_Gatherer], 1, Squad.Rainbow), | ||||
| 	new Operator('Jackal', Gender.male, Side.attacker, [Role.Anti_Roam, Role.Intel_Gatherer], 2, Squad.Rainbow), | ||||
| 	new Operator('Hibana', Gender.female, Side.attacker, [Role.Hard_Breach, Role.Back_Line, Role.Front_Line], 3, Squad.Rainbow), | ||||
| 	new Operator('Echo', Gender.male, Side.defender, [Role.Anchor, Role.Crowd_Control, Role.Intel_Gatherer, Role.Secure], 2, Squad.Rainbow), | ||||
| 	new Operator('Caveira', Gender.female, Side.defender, [Role.Intel_Denier, Role.Intel_Gatherer, Role.Roam], 3, Squad.Ghosteyes), | ||||
| 	new Operator('Capitão', Gender.male, Side.attacker, [Role.Area_Denial, Role.Flank, Role.Front_Line], 3, Squad.Rainbow), | ||||
| 	new Operator('Blackbeard', Gender.male, Side.attacker, [Role.Back_Line, Role.Covering_Fire, Role.Shield], 2, Squad.Rainbow), | ||||
| 	new Operator('Valkyrie', Gender.female, Side.defender, [Role.Intel_Gatherer, Role.Roam], 2, Squad.Ghosteyes), | ||||
| 	new Operator('Buck', Gender.male, Side.attacker, [Role.Flank, Role.Soft_Breach], 2, Squad.Rainbow), | ||||
| 	new Operator('Frost', Gender.female, Side.defender, [Role.Crowd_Control, Role.Trap], 2, Squad.Wolfguard), | ||||
| 	new Operator('Mute', Gender.male, Side.defender, [Role.Anti_Hard_Breach, Role.Secure, Role.Intel_Denier], 1, Squad.Rainbow), | ||||
| 	new Operator('Sledge', Gender.male, Side.attacker, [Role.Flank, Role.Soft_Breach], 1, Squad.Rainbow), | ||||
| 	new Operator('Smoke', Gender.male, Side.defender, [Role.Anchor, Role.Secure, Role.Area_Denial], 2, Squad.Nighthaven), | ||||
| 	new Operator('Thatcher', Gender.male, Side.attacker, [Role.Back_Line, Role.Disable], 1, Squad.Rainbow), | ||||
| 	new Operator('Ash', Gender.female, Side.attacker, [Role.Flank, Role.Front_Line, Role.Disable, Role.Soft_Breach], 3, Squad.Rainbow), | ||||
| 	new Operator('Castle', Gender.male, Side.defender, [Role.Anchor, Role.Secure], 2, Squad.Wolfguard), | ||||
| 	new Operator('Pulse', Gender.male, Side.defender, [Role.Intel_Gatherer, Role.Roam], 3, Squad.Nighthaven), | ||||
| 	new Operator('Thermite', Gender.male, Side.attacker, [Role.Hard_Breach, Role.Back_Line], 2, Squad.Rainbow), | ||||
| 	new Operator('Montagne', Gender.male, Side.attacker, [Role.Shield], 1, Squad.Wolfguard), | ||||
| 	new Operator('Twitch', Gender.female, Side.attacker, [Role.Back_Line, Role.Disable, Role.Front_Line, Role.Intel_Gatherer], 2, Squad.Wolfguard), | ||||
| 	new Operator('Doc', Gender.male, Side.defender, [Role.Anchor, Role.Buff], 1, Squad.Wolfguard), | ||||
| 	new Operator('Rook', Gender.male, Side.defender, [Role.Anchor, Role.Buff], 1, Squad.Rainbow) | ||||
| ]; | ||||
| 
 | ||||
| export { operators }; | ||||
| @ -0,0 +1,2 @@ | ||||
| <h1>Welcome to SvelteKit</h1> | ||||
| <p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p> | ||||
| After Width: | Height: | Size: 1.5 KiB | 
| @ -0,0 +1,15 @@ | ||||
| import adapter from '@sveltejs/adapter-node'; | ||||
| import { vitePreprocess } from '@sveltejs/kit/vite'; | ||||
| 
 | ||||
| /** @type {import('@sveltejs/kit').Config} */ | ||||
| const config = { | ||||
| 	// Consult https://kit.svelte.dev/docs/integrations#preprocessors
 | ||||
| 	// for more information about preprocessors
 | ||||
| 	preprocess: vitePreprocess(), | ||||
| 
 | ||||
| 	kit: { | ||||
| 		adapter: adapter() | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| export default config; | ||||
| @ -0,0 +1,17 @@ | ||||
| { | ||||
| 	"extends": "./.svelte-kit/tsconfig.json", | ||||
| 	"compilerOptions": { | ||||
| 		"allowJs": true, | ||||
| 		"checkJs": true, | ||||
| 		"esModuleInterop": true, | ||||
| 		"forceConsistentCasingInFileNames": true, | ||||
| 		"resolveJsonModule": true, | ||||
| 		"skipLibCheck": true, | ||||
| 		"sourceMap": true, | ||||
| 		"strict": true | ||||
| 	} | ||||
| 	// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias | ||||
| 	// | ||||
| 	// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes | ||||
| 	// from the referenced tsconfig.json - TypeScript does not merge them in | ||||
| } | ||||
| @ -0,0 +1,8 @@ | ||||
| import { sveltekit } from '@sveltejs/kit/vite'; | ||||
| import type { UserConfig } from 'vite'; | ||||
| 
 | ||||
| const config: UserConfig = { | ||||
| 	plugins: [sveltekit()] | ||||
| }; | ||||
| 
 | ||||
| export default config; | ||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
					Loading…
					
					
				
		Reference in new issue