Compare commits
3 Commits
ceb2146c1b
...
0.8.5
| Author | SHA1 | Date | |
|---|---|---|---|
| e838e6f321 | |||
| ca983c72d4 | |||
| 91dd5256e9 |
@@ -1,6 +0,0 @@
|
|||||||
FROM mcr.microsoft.com/vscode/devcontainers/base:alpine-3.12
|
|
||||||
RUN apk update
|
|
||||||
RUN apk add --upgrade nodejs-current npm
|
|
||||||
RUN npm i -g yarn rimraf
|
|
||||||
RUN rimraf node_modules
|
|
||||||
RUN yarn set version berry
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Node.js",
|
|
||||||
"build": {
|
|
||||||
"dockerfile": "Dockerfile"
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"terminal.integrated.shell.linux": "/bin/sh"
|
|
||||||
},
|
|
||||||
"extensions": [
|
|
||||||
"dbaeumer.vscode-eslint",
|
|
||||||
"2gua.rainbow-brackets",
|
|
||||||
"christian-kohler.npm-intellisense",
|
|
||||||
"remimarsal.prettier-now",
|
|
||||||
"svelte.svelte-vscode",
|
|
||||||
"lokalise.i18n-ally",
|
|
||||||
"fivethree.vscode-svelte-snippets",
|
|
||||||
"voorjaar.windicss-intellisense"
|
|
||||||
],
|
|
||||||
"postCreateCommand": "yarn && yarn dev --open"
|
|
||||||
}
|
|
||||||
@@ -1 +1,3 @@
|
|||||||
public/env.sample.js
|
public/env.sample.js
|
||||||
|
public/workbox-*.js
|
||||||
|
public/workbox-*.js.map
|
||||||
9
.gitignore
vendored
9
.gitignore
vendored
@@ -1,10 +1,11 @@
|
|||||||
node_modules
|
node_modules
|
||||||
|
build
|
||||||
package-lock.json
|
package-lock.json
|
||||||
yarn.lock
|
yarn.lock
|
||||||
*.map
|
*.map
|
||||||
public/env.js
|
public/env.js
|
||||||
|
public/sw.js
|
||||||
|
public/index.html
|
||||||
|
public/workbox-*.js
|
||||||
|
svelte.config.js
|
||||||
public/index.html
|
public/index.html
|
||||||
/dist
|
|
||||||
.yarn
|
|
||||||
.pnp.js
|
|
||||||
.yarnrc.yml
|
|
||||||
|
|||||||
3
.vscode/extensions.json
vendored
3
.vscode/extensions.json
vendored
@@ -5,8 +5,7 @@
|
|||||||
"remimarsal.prettier-now",
|
"remimarsal.prettier-now",
|
||||||
"svelte.svelte-vscode",
|
"svelte.svelte-vscode",
|
||||||
"lokalise.i18n-ally",
|
"lokalise.i18n-ally",
|
||||||
"fivethree.vscode-svelte-snippets",
|
"fivethree.vscode-svelte-snippets"
|
||||||
"voorjaar.windicss-intellisense"
|
|
||||||
],
|
],
|
||||||
"unwantedRecommendations": [
|
"unwantedRecommendations": [
|
||||||
"antfu.i18n-ally"
|
"antfu.i18n-ally"
|
||||||
|
|||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"i18n-ally.localesPaths": "src/locales",
|
"i18n-ally.localesPaths": "src/locales",
|
||||||
"i18n-ally.keystyle": "nested",
|
"i18n-ally.keystyle": "nested"
|
||||||
"windicss.enableCodeFolding": false,
|
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,16 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||||
|
|
||||||
|
#### [0.8.5](https://git.odit.services/lfk/frontend/compare/0.8.4...0.8.5)
|
||||||
|
|
||||||
|
- Fixed dupliacate mutation 🐞 [`91dd525`](https://git.odit.services/lfk/frontend/commit/91dd5256e9545f62e4342ae5477c36262d6e3401)
|
||||||
|
|
||||||
#### [0.8.4](https://git.odit.services/lfk/frontend/compare/0.8.3...0.8.4)
|
#### [0.8.4](https://git.odit.services/lfk/frontend/compare/0.8.3...0.8.4)
|
||||||
|
|
||||||
|
> 20 March 2021
|
||||||
|
|
||||||
- CONFIG: default_username + default_password [`cc926e8`](https://git.odit.services/lfk/frontend/commit/cc926e84fb8bd9d6c9fd37349e25eb802e1bb324)
|
- CONFIG: default_username + default_password [`cc926e8`](https://git.odit.services/lfk/frontend/commit/cc926e84fb8bd9d6c9fd37349e25eb802e1bb324)
|
||||||
|
- 🚀RELEASE v0.8.4 [`3d4dc2d`](https://git.odit.services/lfk/frontend/commit/3d4dc2d72b129f0134ae9f230810c3301dbd5caa)
|
||||||
- CONFIG: add 'demo' as default username/password [`ba34710`](https://git.odit.services/lfk/frontend/commit/ba3471068ab00e2d5dbe21d6d763094e662f8347)
|
- CONFIG: add 'demo' as default username/password [`ba34710`](https://git.odit.services/lfk/frontend/commit/ba3471068ab00e2d5dbe21d6d763094e662f8347)
|
||||||
|
|
||||||
#### [0.8.3](https://git.odit.services/lfk/frontend/compare/0.8.2...0.8.3)
|
#### [0.8.3](https://git.odit.services/lfk/frontend/compare/0.8.2...0.8.3)
|
||||||
|
|||||||
12
Dockerfile
12
Dockerfile
@@ -1,14 +1,18 @@
|
|||||||
FROM node:15.5.1-alpine3.12
|
FROM node:15.5.1-alpine3.12
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
RUN npm i -g pnpm
|
||||||
COPY package.json ./
|
COPY package.json ./
|
||||||
RUN yarn
|
RUN pnpm i
|
||||||
COPY package.json *.config.js index.html ./
|
COPY package.json *.config.js workbox-config.js template-copy.js index.template.html s-config.template.js ./
|
||||||
COPY src ./src
|
COPY src ./src
|
||||||
COPY public ./public
|
COPY public ./public
|
||||||
RUN yarn build
|
RUN pnpm run build
|
||||||
# final image
|
# final image
|
||||||
FROM alpine
|
FROM alpine
|
||||||
COPY --from=0 /app/dist /app
|
COPY --from=0 /app/build /app
|
||||||
|
RUN rm -rf /app/build/_dist_/components
|
||||||
|
RUN rm -rf /app/build/_dist_/locales
|
||||||
|
RUN rm -rf /app/build-manifest.json
|
||||||
FROM fholzer/nginx-brotli:v1.19.1
|
FROM fholzer/nginx-brotli:v1.19.1
|
||||||
COPY --from=1 /app /usr/share/nginx/html
|
COPY --from=1 /app /usr/share/nginx/html
|
||||||
COPY ./nginx.conf /etc/nginx/nginx.conf
|
COPY ./nginx.conf /etc/nginx/nginx.conf
|
||||||
22
README.md
22
README.md
@@ -1,22 +0,0 @@
|
|||||||
# @odit/lfk-frontend
|
|
||||||
|
|
||||||
## ✒️ Overview
|
|
||||||
This is an API client for [https://git.odit.services/lfk/backend](@lfk/backend)
|
|
||||||
- WebApp built with [Svelte](https://svelte.dev), [WindiCSS](https://windicss.org/) (to compile [TailwindCSS](https://tailwindcss.com/)) and [Vite](https://vitejs.dev).
|
|
||||||
|
|
||||||
This application is intended for use by admin users/ members only.
|
|
||||||
|
|
||||||
## 🚀 Getting Started
|
|
||||||
```
|
|
||||||
yarn
|
|
||||||
```
|
|
||||||
## Development
|
|
||||||
```
|
|
||||||
yarn dev
|
|
||||||
/
|
|
||||||
yarn dev --open
|
|
||||||
```
|
|
||||||
## Build
|
|
||||||
```
|
|
||||||
yarn build
|
|
||||||
```
|
|
||||||
@@ -1,22 +1,23 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<link rel="icon" href="/favicon.png" />
|
<link rel="icon" href="/favicon.png" />
|
||||||
<link rel="manifest" href="/manifest.webmanifest">
|
<link rel="manifest" href="/manifest.webmanifest">
|
||||||
<link rel="apple-touch-icon" href="/lfk-logo.png">
|
<link rel="apple-touch-icon" href="/lfk-logo.png">
|
||||||
<meta name="theme-color" content="#FFFFFF">
|
<meta name="theme-color" content="#FFFFFF">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="description" content="Lauf Für Kaya! - Admin" />
|
<meta name="description" content="Lauf Für Kaya! - Admin" />
|
||||||
<title>Lauf für Kaya! - Admin</title>
|
<title>Lauf für Kaya! - Admin</title>
|
||||||
</head>
|
__TAILWIND_INSERT__
|
||||||
|
</head>
|
||||||
<body>
|
|
||||||
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.8.4-RELEASE_INFO</span>
|
<body>
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.8.5-RELEASE_INFO</span>
|
||||||
<script src="/env.js"></script>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
<script type="module" src="/src/main.js"></script>
|
<script src="/env.js"></script>
|
||||||
</body>
|
<script defer type="module" src="/_dist_/index.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -6,15 +6,6 @@ http {
|
|||||||
server {
|
server {
|
||||||
error_page 404 /index.html;
|
error_page 404 /index.html;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
location = /index.html {
|
|
||||||
add_header Cache-Control 'no-store';
|
|
||||||
}
|
|
||||||
location = / {
|
|
||||||
add_header Cache-Control 'no-store';
|
|
||||||
}
|
|
||||||
location = /env.js {
|
|
||||||
add_header Cache-Control 'no-store';
|
|
||||||
}
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/ /index.html;
|
try_files $uri $uri/ /index.html;
|
||||||
}
|
}
|
||||||
|
|||||||
58
package.json
58
package.json
@@ -1,39 +1,45 @@
|
|||||||
{
|
{
|
||||||
"name": "@odit/lfk-frontend",
|
"name": "@odit/lfk-frontend",
|
||||||
"version": "0.8.4",
|
"version": "0.8.5",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"i18n-order": "node order.js",
|
"i18n-order": "node order.js",
|
||||||
"dev": "vite",
|
"dev:all": "yarn prebuild && snowpack dev",
|
||||||
"build": "vite build",
|
"dev": "cross-env NODE_ENV_ODIT=development_fast node template-copy.js && yarn build:sw && snowpack dev",
|
||||||
|
"build": "yarn prebuild && snowpack build",
|
||||||
|
"prebuild": "cross-env NODE_ENV_ODIT=production node template-copy.js && yarn build:sw",
|
||||||
|
"build:sw": "workbox generateSW workbox-config.js",
|
||||||
"release": "release-it",
|
"release": "release-it",
|
||||||
"licenses:export": "license-exporter --json -o public"
|
"licenses:export": "license-exporter --json -o public"
|
||||||
},
|
},
|
||||||
"license": "CC-BY-NC-SA-4.0",
|
"license": "CC-BY-NC-SA-4.0",
|
||||||
"devDependencies": {
|
"dependencies": {
|
||||||
"@odit/lfk-client-js": "0.9.2",
|
"@odit/lfk-client-js": "0.6.4",
|
||||||
"@odit/license-exporter": "0.0.11",
|
"csvtojson": "^2.0.10",
|
||||||
"@sveltejs/vite-plugin-svelte": "1.0.0-next.5",
|
"gridjs": "3.3.0",
|
||||||
"@types/html-minifier": "4.0.0",
|
|
||||||
"auto-changelog": "2.2.1",
|
|
||||||
"autoprefixer": "10.2.5",
|
|
||||||
"csvtojson": "2.0.10",
|
|
||||||
"gridjs": "3.4.0",
|
|
||||||
"html-minifier": "4.0.0",
|
|
||||||
"localforage": "1.9.0",
|
"localforage": "1.9.0",
|
||||||
"marked": "2.0.1",
|
"marked": "^2.0.1",
|
||||||
"release-it": "14.5.1",
|
"svelte-focus-trap": "1.0.1",
|
||||||
"svelte": "3.37.0",
|
"svelte-i18n": "3.3.7",
|
||||||
"svelte-focus-trap": "1.2.0",
|
"svelte-select": "^3.17.0",
|
||||||
"svelte-i18n": "3.3.9",
|
"tailwindcss": "2.0.3",
|
||||||
"svelte-preprocess": "4.7.0",
|
|
||||||
"svelte-select": "3.17.0",
|
|
||||||
"tailwindcss": "2.0.4",
|
|
||||||
"tinro": "0.6.1",
|
"tinro": "0.6.1",
|
||||||
"toastify-js": "1.10.0",
|
"toastify-js": "1.9.3",
|
||||||
"validator": "13.5.2",
|
"validator": "13.5.2",
|
||||||
"vite": "2.1.5",
|
"xlsx": "^0.16.9"
|
||||||
"vite-plugin-windicss": "0.12.2",
|
},
|
||||||
"xlsx": "0.16.9"
|
"devDependencies": {
|
||||||
|
"@odit/license-exporter": "^0.0.11",
|
||||||
|
"@snowpack/plugin-svelte": "3.5.2",
|
||||||
|
"auto-changelog": "^2.2.1",
|
||||||
|
"autoprefixer": "10.2.5",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
|
"postcss": "8.2.8",
|
||||||
|
"postcss-load-config": "3.0.1",
|
||||||
|
"release-it": "^14.4.1",
|
||||||
|
"snowpack": "3.0.13",
|
||||||
|
"svelte": "3.35.0",
|
||||||
|
"svelte-preprocess": "4.6.9",
|
||||||
|
"workbox-cli": "6.1.2"
|
||||||
},
|
},
|
||||||
"release-it": {
|
"release-it": {
|
||||||
"git": {
|
"git": {
|
||||||
@@ -49,7 +55,7 @@
|
|||||||
"publish": false
|
"publish": false
|
||||||
},
|
},
|
||||||
"hooks": {
|
"hooks": {
|
||||||
"after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.html && node order.js && git add src/locales"
|
"after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.template.html && node order.js && git add src/locales"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
Nostrud tempor dolor aute ea excepteur aute mollit elit eiusmod exercitation. Magna laborum pariatur adipisicing pariatur cupidatat exercitation duis aliquip pariatur sint exercitation deserunt labore. Consectetur id laboris dolore nostrud do velit ipsum. Eu laboris velit do commodo ad ea sint ex cillum. Cillum ipsum qui eiusmod laborum mollit sunt dolore incididunt. Cillum sunt culpa veniam voluptate et qui ut magna anim occaecat ut mollit dolor. Duis irure proident eu incididunt dolore sunt nisi aute dolore amet eu fugiat laboris quis.
|
|
||||||
File diff suppressed because one or more lines are too long
6
s-config.template.js
Normal file
6
s-config.template.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
const sveltePreprocess = require('svelte-preprocess');
|
||||||
|
const preprocess = sveltePreprocess(__insert__);
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
preprocess
|
||||||
|
};
|
||||||
26
snowpack.config.js
Normal file
26
snowpack.config.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/** @type {import("snowpack").SnowpackUserConfig } */
|
||||||
|
module.exports = {
|
||||||
|
mount: {
|
||||||
|
public: '/',
|
||||||
|
src: '/_dist_'
|
||||||
|
},
|
||||||
|
plugins: [ '@snowpack/plugin-svelte' ],
|
||||||
|
routes: [
|
||||||
|
/* Enable an SPA Fallback in development: */
|
||||||
|
{ match: 'routes', src: '.*', dest: '/index.html' }
|
||||||
|
],
|
||||||
|
packageOptions: {
|
||||||
|
/* ... */
|
||||||
|
sourceMap: false
|
||||||
|
},
|
||||||
|
devOptions: {
|
||||||
|
/* ... */
|
||||||
|
},
|
||||||
|
buildOptions: {
|
||||||
|
/* ... */
|
||||||
|
},
|
||||||
|
alias: {
|
||||||
|
/* ... */
|
||||||
|
},
|
||||||
|
optimize: { bundle: true, minify: true }
|
||||||
|
};
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
<script>
|
<script>
|
||||||
|
import "./TailwindStyles.svelte";
|
||||||
|
import "toastify-js/src/toastify.css";
|
||||||
|
import "gridjs/dist/theme/mermaid.css";
|
||||||
import { Route, router } from "tinro";
|
import { Route, router } from "tinro";
|
||||||
router.subscribe((routeInfo) => {
|
router.subscribe((routeInfo) => {
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
@@ -50,6 +53,7 @@
|
|||||||
import { OpenAPI } from "@odit/lfk-client-js";
|
import { OpenAPI } from "@odit/lfk-client-js";
|
||||||
import UserDetail from "./components/users/UserDetail.svelte";
|
import UserDetail from "./components/users/UserDetail.svelte";
|
||||||
OpenAPI.BASE = config.baseurl;
|
OpenAPI.BASE = config.baseurl;
|
||||||
|
import { register as registerSW } from "./swmodule";
|
||||||
import TeamDetail from "./components/teams/TeamDetail.svelte";
|
import TeamDetail from "./components/teams/TeamDetail.svelte";
|
||||||
import UserPermissions from "./components/users/UserPermissions.svelte";
|
import UserPermissions from "./components/users/UserPermissions.svelte";
|
||||||
import GroupPermissions from "./components/groups/GroupPermissions.svelte";
|
import GroupPermissions from "./components/groups/GroupPermissions.svelte";
|
||||||
@@ -71,6 +75,7 @@
|
|||||||
import Scans from "./components/scans/Scans.svelte";
|
import Scans from "./components/scans/Scans.svelte";
|
||||||
import ScanDetail from "./components/scans/ScanDetail.svelte";
|
import ScanDetail from "./components/scans/ScanDetail.svelte";
|
||||||
store.init();
|
store.init();
|
||||||
|
registerSW();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Route>
|
<Route>
|
||||||
|
|||||||
6
src/TailwindStyles.svelte
Normal file
6
src/TailwindStyles.svelte
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<style global>
|
||||||
|
/*! @import */
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
</style>
|
||||||
@@ -6,13 +6,15 @@
|
|||||||
let html = "";
|
let html = "";
|
||||||
async function load() {
|
async function load() {
|
||||||
let md = await fetch("/imprint_" + getLocaleFromNavigator() + ".md");
|
let md = await fetch("/imprint_" + getLocaleFromNavigator() + ".md");
|
||||||
if((await md.text()).includes("<meta")){
|
let text = (await md.text()).toString();
|
||||||
|
if(text.includes("<meta")){
|
||||||
md.ok=false
|
md.ok=false
|
||||||
}
|
}
|
||||||
if (!md.ok) {
|
if (!md.ok) {
|
||||||
md = await fetch("/imprint_en.md");
|
md = await fetch("/imprint_en.md");
|
||||||
|
text = await md.text();
|
||||||
}
|
}
|
||||||
html = marked(await md.text());
|
html = marked(text);
|
||||||
}
|
}
|
||||||
const promise = load();
|
const promise = load();
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -6,13 +6,15 @@
|
|||||||
let html = "";
|
let html = "";
|
||||||
async function load() {
|
async function load() {
|
||||||
let md = await fetch("/privacy_" + getLocaleFromNavigator() + ".md");
|
let md = await fetch("/privacy_" + getLocaleFromNavigator() + ".md");
|
||||||
if((await md.text()).includes("<meta")){
|
let text = (await md.text()).toString();
|
||||||
|
if(text.includes("<meta")){
|
||||||
md.ok=false
|
md.ok=false
|
||||||
}
|
}
|
||||||
if (!md.ok) {
|
if (!md.ok) {
|
||||||
md = await fetch("/privacy_en.md");
|
md = await fetch("/privacy_en.md");
|
||||||
|
text = await md.text();
|
||||||
}
|
}
|
||||||
html = marked(await md.text());
|
html = marked(text);
|
||||||
}
|
}
|
||||||
const promise = load();
|
const promise = load();
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
duration: -1,
|
duration: -1,
|
||||||
}).showToast();
|
}).showToast();
|
||||||
let count = 0;
|
let count = 0;
|
||||||
for (const o of orgs) {
|
for await (const o of orgs) {
|
||||||
const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
|
const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
|
||||||
o.id
|
o.id
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
duration: -1,
|
duration: -1,
|
||||||
}).showToast();
|
}).showToast();
|
||||||
let count = 0;
|
let count = 0;
|
||||||
for (const t of teams) {
|
for await (const t of teams) {
|
||||||
count++;
|
count++;
|
||||||
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
||||||
t.id
|
t.id
|
||||||
|
|||||||
14
src/index.js
Normal file
14
src/index.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import App from './App.svelte';
|
||||||
|
|
||||||
|
const app = new App({
|
||||||
|
target: document.body
|
||||||
|
});
|
||||||
|
|
||||||
|
export default app;
|
||||||
|
// HMR
|
||||||
|
if (import.meta.hot) {
|
||||||
|
import.meta.hot.accept();
|
||||||
|
import.meta.hot.dispose(() => {
|
||||||
|
app.$destroy();
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import 'windi.css';
|
|
||||||
import "toastify-js/src/toastify.css";
|
|
||||||
import "gridjs/dist/theme/mermaid.css";
|
|
||||||
import App from './App.svelte';
|
|
||||||
|
|
||||||
const app = new App({
|
|
||||||
target: document.body
|
|
||||||
});
|
|
||||||
export default app;
|
|
||||||
14
src/swmodule.js
Normal file
14
src/swmodule.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
export const register = () => {
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
navigator.serviceWorker.register('/sw.js').then(
|
||||||
|
(registration) => {
|
||||||
|
// console.log(`sw successful with scope: ${registration.scope}`);
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
// console.log(`sw failed: ${err}`);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
|
purge: {
|
||||||
|
content: [ './src/**/*.svelte' ]
|
||||||
|
},
|
||||||
|
// darkMode: 'media',
|
||||||
|
variants: {},
|
||||||
|
plugins: [],
|
||||||
theme: {
|
theme: {
|
||||||
extend: {
|
container: {
|
||||||
colors: {
|
center: true,
|
||||||
reepolee: {
|
padding: '1.5rem'
|
||||||
500: '#b40000',
|
|
||||||
600: '#9c0000',
|
|
||||||
700: '#750000'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
19
template-copy.js
Normal file
19
template-copy.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
let content_svelteconfig = fs.readFileSync('./s-config.template.js', { encoding: 'utf8' });
|
||||||
|
let content_html = fs.readFileSync('./index.template.html', { encoding: 'utf8' });
|
||||||
|
if (process.env.NODE_ENV_ODIT == 'development_fast') {
|
||||||
|
content_html = content_html.replace(
|
||||||
|
'__TAILWIND_INSERT__',
|
||||||
|
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tailwindcss@2.0.2/dist/tailwind.min.css">'
|
||||||
|
);
|
||||||
|
content_svelteconfig = content_svelteconfig.replace('__insert__', '{postcss:{}}');
|
||||||
|
} else {
|
||||||
|
content_html = content_html.replace('__TAILWIND_INSERT__', '');
|
||||||
|
content_svelteconfig = content_svelteconfig.replace(
|
||||||
|
'__insert__',
|
||||||
|
"{postcss:{plugins:[require('tailwindcss'),require('autoprefixer')]}}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
fs.writeFileSync('./public/index.html', content_html);
|
||||||
|
fs.writeFileSync('./svelte.config.js', content_svelteconfig);
|
||||||
|
console.info('dev setup script done');
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const package = JSON.parse(fs.readFileSync(`./package.json`, { encoding: 'utf-8' }));
|
const package = JSON.parse(fs.readFileSync(`./package.json`, { encoding: 'utf-8' }));
|
||||||
const original = fs.readFileSync(`./index.html`, { encoding: 'utf-8' });
|
const original = fs.readFileSync(`./index.template.html`, { encoding: 'utf-8' });
|
||||||
let out = original.replace(/RELEASE_INFO-(\S)+-RELEASE_INFO/gi, 'RELEASE_INFO-' + package.version + '-RELEASE_INFO');
|
let out = original.replace(/RELEASE_INFO-(\S)+-RELEASE_INFO/gi, 'RELEASE_INFO-' + package.version + '-RELEASE_INFO');
|
||||||
fs.writeFileSync(`./index.html`, out);
|
fs.writeFileSync(`./index.template.html`, out);
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
import svelte from '@sveltejs/vite-plugin-svelte';
|
|
||||||
import windiCSS from 'vite-plugin-windicss';
|
|
||||||
import { minify } from 'html-minifier';
|
|
||||||
import { defineConfig } from 'vite';
|
|
||||||
//
|
|
||||||
const indexReplace = () => {
|
|
||||||
return {
|
|
||||||
name: 'html-transform',
|
|
||||||
transformIndexHtml(html) {
|
|
||||||
return minify(html, {
|
|
||||||
collapseWhitespace: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export default defineConfig(({ command, mode }) => {
|
|
||||||
const isProduction = mode === 'production';
|
|
||||||
return {
|
|
||||||
// base: './',
|
|
||||||
build: {
|
|
||||||
polyfillDynamicImport: false,
|
|
||||||
cssCodeSplit: false,
|
|
||||||
minify: isProduction
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
windiCSS({
|
|
||||||
//@ts-ignore
|
|
||||||
verbose: true,
|
|
||||||
silent: false,
|
|
||||||
debug: true,
|
|
||||||
config: 'tailwind.config.js', // tailwind config file path (optional)
|
|
||||||
compile: false, // false: interpretation mode; true: compilation mode
|
|
||||||
prefix: 'windi-', // set compilation mode style prefix
|
|
||||||
globalPreflight: true, // set preflight style is global or scoped
|
|
||||||
globalUtility: true // set utility style is global or scoped
|
|
||||||
}),
|
|
||||||
svelte({
|
|
||||||
//@ts-ignore
|
|
||||||
hot: !isProduction,
|
|
||||||
emitCss: true,
|
|
||||||
extensions: [ '.md', '.svx', '.svelte' ],
|
|
||||||
preprocess: [
|
|
||||||
//
|
|
||||||
]
|
|
||||||
}),
|
|
||||||
indexReplace()
|
|
||||||
]
|
|
||||||
};
|
|
||||||
});
|
|
||||||
9
workbox-config.js
Normal file
9
workbox-config.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
module.exports = {
|
||||||
|
globDirectory: 'public',
|
||||||
|
globPatterns: [ '**/*.{js,ico,png,svg,html,webmanifest,txt,json}' ],
|
||||||
|
globIgnores: [ 'env.js', 'env.sample.js' ],
|
||||||
|
swDest: 'public/sw.js',
|
||||||
|
cleanupOutdatedCaches: true,
|
||||||
|
mode: 'production',
|
||||||
|
sourcemap: false
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user