From 522f4270e83a85564ecc977aa470fcf8560547e2 Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Thu, 30 Dec 2021 14:15:40 +0100 Subject: [PATCH] init SvelteKit frontend --- web/pw-server/.eslintrc.cjs | 20 +++++++++++ web/pw-server/.gitignore | 9 +++++ web/pw-server/.npmrc | 1 + web/pw-server/.prettierrc | 6 ++++ web/pw-server/README.md | 38 ++++++++++++++++++++ web/pw-server/package.json | 37 +++++++++++++++++++ web/pw-server/src/app.html | 13 +++++++ web/pw-server/src/global.d.ts | 1 + web/pw-server/src/routes/index.svelte | 2 ++ web/pw-server/static/favicon.ico | Bin 0 -> 3985 bytes web/pw-server/svelte.config.js | 49 ++++++++++++++++++++++++++ web/pw-server/tsconfig.json | 31 ++++++++++++++++ 12 files changed, 207 insertions(+) create mode 100644 web/pw-server/.eslintrc.cjs create mode 100644 web/pw-server/.gitignore create mode 100644 web/pw-server/.npmrc create mode 100644 web/pw-server/.prettierrc create mode 100644 web/pw-server/README.md create mode 100644 web/pw-server/package.json create mode 100644 web/pw-server/src/app.html create mode 100644 web/pw-server/src/global.d.ts create mode 100644 web/pw-server/src/routes/index.svelte create mode 100644 web/pw-server/static/favicon.ico create mode 100644 web/pw-server/svelte.config.js create mode 100644 web/pw-server/tsconfig.json diff --git a/web/pw-server/.eslintrc.cjs b/web/pw-server/.eslintrc.cjs new file mode 100644 index 0000000..3ccf435 --- /dev/null +++ b/web/pw-server/.eslintrc.cjs @@ -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 + } +}; diff --git a/web/pw-server/.gitignore b/web/pw-server/.gitignore new file mode 100644 index 0000000..dc61a8d --- /dev/null +++ b/web/pw-server/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +package-lock.json \ No newline at end of file diff --git a/web/pw-server/.npmrc b/web/pw-server/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/web/pw-server/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/web/pw-server/.prettierrc b/web/pw-server/.prettierrc new file mode 100644 index 0000000..ff2677e --- /dev/null +++ b/web/pw-server/.prettierrc @@ -0,0 +1,6 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100 +} diff --git a/web/pw-server/README.md b/web/pw-server/README.md new file mode 100644 index 0000000..82510ca --- /dev/null +++ b/web/pw-server/README.md @@ -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 init svelte@next + +# create a new project in my-app +npm init svelte@next my-app +``` + +> Note: the `@next` is temporary + +## 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 + +Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then: + +```bash +npm run build +``` + +> You can preview the built app with `npm run preview`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production. diff --git a/web/pw-server/package.json b/web/pw-server/package.json new file mode 100644 index 0000000..29d59f6 --- /dev/null +++ b/web/pw-server/package.json @@ -0,0 +1,37 @@ +{ + "name": "pw-server", + "version": "0.0.1", + "scripts": { + "dev": "svelte-kit dev", + "build": "svelte-kit build", + "package": "svelte-kit package", + "preview": "svelte-kit preview", + "check": "svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .", + "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. ." + }, + "devDependencies": { + "@sveltejs/adapter-auto": "next", + "@sveltejs/kit": "next", + "@typescript-eslint/eslint-plugin": "^4.31.1", + "@typescript-eslint/parser": "^4.31.1", + "@originjs/vite-plugin-commonjs": "^1.0.1", + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.30", + "vite-plugin-wasm-pack": "^0.1.9", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-svelte3": "^3.2.1", + "prettier": "^2.4.1", + "prettier-plugin-svelte": "^2.4.0", + "svelte": "^3.44.0", + "svelte-check": "^2.2.6", + "svelte-preprocess": "^4.9.4", + "tslib": "^2.3.1", + "typescript": "^4.4.3" + }, + "dependencies": { + "moment": "^2.29.1" + }, + "type": "module" +} \ No newline at end of file diff --git a/web/pw-server/src/app.html b/web/pw-server/src/app.html new file mode 100644 index 0000000..9c8080f --- /dev/null +++ b/web/pw-server/src/app.html @@ -0,0 +1,13 @@ + + + + + + + + %svelte.head% + + +
%svelte.body%
+ + diff --git a/web/pw-server/src/global.d.ts b/web/pw-server/src/global.d.ts new file mode 100644 index 0000000..63908c6 --- /dev/null +++ b/web/pw-server/src/global.d.ts @@ -0,0 +1 @@ +/// diff --git a/web/pw-server/src/routes/index.svelte b/web/pw-server/src/routes/index.svelte new file mode 100644 index 0000000..5982b0a --- /dev/null +++ b/web/pw-server/src/routes/index.svelte @@ -0,0 +1,2 @@ +

Welcome to SvelteKit

+

Visit kit.svelte.dev to read the documentation

diff --git a/web/pw-server/static/favicon.ico b/web/pw-server/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..628e6ed72d238912f37bfb6b5060fce31a39b14e GIT binary patch literal 3985 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 O0G*qL=yKHkNB;*JM}ZRn literal 0 HcmV?d00001 diff --git a/web/pw-server/svelte.config.js b/web/pw-server/svelte.config.js new file mode 100644 index 0000000..14e6a05 --- /dev/null +++ b/web/pw-server/svelte.config.js @@ -0,0 +1,49 @@ +import adapter from '@sveltejs/adapter-auto'; +import preprocess from 'svelte-preprocess'; +// import { svelte } from '@sveltejs/vite-plugin-svelte' +import { viteCommonjs } from '@originjs/vite-plugin-commonjs' +import wasmPack from 'vite-plugin-wasm-pack'; + + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://github.com/sveltejs/svelte-preprocess + // for more information about preprocessors + preprocess: preprocess(), + + kit: { + adapter: adapter(), + + // hydrate the
element in src/app.html + target: '#svelte', + ssr: false, + vite: { + plugins: [ + // svelte(), + // wasmPack([], ["planetwars-rs"]), + viteCommonjs({ + transformMixedEsModules: true, + }), + ], + build: { + commonjsOptions: { + transformMixedEsModules: true, + }, + }, + server: { + proxy: { + "/api/": "http://localhost:9000", + "/ws": "ws://localhost:9000/ws", + }, + fs: { + // Allow serving files from one level up to the project root + allow: ['..'] + } + }, + } + + }, + +}; + +export default config; diff --git a/web/pw-server/tsconfig.json b/web/pw-server/tsconfig.json new file mode 100644 index 0000000..0555d52 --- /dev/null +++ b/web/pw-server/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "module": "es2020", + "lib": ["es2020", "DOM"], + "target": "es2020", + /** + svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript + to enforce using \`import type\` instead of \`import\` for Types. + */ + "importsNotUsedAsValues": "error", + "isolatedModules": true, + "resolveJsonModule": true, + /** + To have warnings/errors of the Svelte compiler at the correct position, + enable source maps by default. + */ + "sourceMap": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "allowJs": true, + "checkJs": true, + "paths": { + "$lib": ["src/lib"], + "$lib/*": ["src/lib/*"] + } + }, + "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.ts", "src/**/*.svelte"] +}