Package upgrades.

This commit is contained in:
Bob Vandevliet 2024-11-03 12:05:19 +01:00
parent 5f89f3dedb
commit 7d77ae9da3
5 changed files with 727 additions and 753 deletions

390
.eslintrc
View file

@ -1,390 +0,0 @@
{
"root": true,
"env": {
"node": false,
"browser": true,
"es6": true
},
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "script",
"ecmaFeatures": {
"impliedStrict": true
},
"requireConfigFile": false
},
"extends": [
"eslint:recommended"
],
"rules": {
"arrow-body-style": "error",
"array-bracket-newline": [
"error",
"consistent"
],
"array-bracket-spacing": "error",
"array-callback-return": "warn",
"array-element-newline": [
"error",
"consistent"
],
"arrow-parens": [
"error",
"as-needed"
],
"arrow-spacing": "error",
"block-scoped-var": "warn",
"block-spacing": "error",
"brace-style": [
"error",
"allman",
{
"allowSingleLine": true
}
],
"comma-dangle": [
"error",
"always-multiline"
],
"comma-spacing": "error",
"comma-style": "error",
"computed-property-spacing": "error",
"consistent-return": "warn",
"curly": "error",
"default-case-last": "error",
"default-param-last": [
"error"
],
"dot-location": [
"error",
"property"
],
"dot-notation": "error",
"eol-last": [
"error",
"never"
],
"eqeqeq": [
"error",
"smart"
],
"func-call-spacing": [
"error"
],
"func-style": [
"error",
"expression",
{
"allowArrowFunctions": true
}
],
"function-call-argument-newline": [
"error",
"consistent"
],
"function-paren-newline": [
"error",
"consistent"
],
"generator-star-spacing": "error",
"indent": [
"error",
2,
{
"SwitchCase": 1
}
],
"key-spacing": "error",
"keyword-spacing": [
"error"
],
"linebreak-style": [
"error",
"unix"
],
"lines-between-class-members": [
"error"
],
// "naming-convention": [
// "error",
// {
// "selector": "default",
// "format": [
// "camelCase"
// ]
// },
// {
// "selector": "variable",
// "modifiers": [
// "const"
// ],
// "format": [
// "camelCase",
// "PascalCase",
// "UPPER_CASE"
// ]
// },
// {
// "selector": "typeLike",
// "format": [
// "PascalCase"
// ]
// },
// {
// "selector": "memberLike",
// "modifiers": [
// "private"
// ],
// "format": [
// "camelCase"
// ],
// "leadingUnderscore": "require"
// }
// ],
"new-parens": "error",
"no-dupe-class-members": [
"error"
],
"no-duplicate-imports": "error",
// "no-console": "warn",
"no-else-return": "warn",
"no-empty": "error",
"no-empty-function": [
"error"
],
"no-eval": "error",
"no-eq-null": "warn",
"no-explicit-any": "off",
"no-extra-bind": "error",
"no-extra-boolean-cast": "error",
"no-extra-label": "error",
// "no-extra-parens": "off",
"no-extra-semi": [
"error"
],
"no-global-assign": "error",
"no-implicit-coercion": "error",
"no-implicit-globals": "error",
"no-implied-eval": "error",
"no-invalid-this": [
"error"
],
"no-lone-blocks": "error",
"no-lonely-if": "warn",
"no-loop-func": [
"error"
],
"no-loss-of-precision": [
"error"
],
// "no-magic-numbers": [
// "warn"
// ],
"no-mixed-operators": "error",
"no-multi-spaces": "error",
"no-multiple-empty-lines": [
"error",
{
"max": 1,
"maxEOF": 0
}
],
// "no-negated-condition": "warn",
"no-new": "error",
"no-new-func": "error",
"no-new-object": "error",
"no-new-wrappers": "error",
"no-octal-escape": "error",
"no-param-reassign": "warn",
"no-promise-executor-return": "error",
"no-prototype-builtins": "warn",
"no-redeclare": [
"error"
],
"no-return-assign": "error",
"no-return-await": "error",
"no-self-compare": "error",
"no-shadow": [
"warn"
],
"no-tabs": "error",
"no-template-curly-in-string": "warn",
"no-throw-literal": "error",
"no-trailing-spaces": "error",
"no-unneeded-ternary": "error",
"no-unused-expressions": [
"error",
{
"allowShortCircuit": true,
"allowTernary": true
}
],
"no-unused-private-class-members": "error",
"no-unused-vars": [
"warn"
],
"no-use-before-define": [
"error"
],
"no-useless-call": "error",
"no-useless-computed-key": "error",
"no-useless-concat": "error",
"no-useless-constructor": [
"error"
],
"no-useless-rename": "error",
"no-useless-return": "warn",
"no-var": "warn",
"no-void": "error",
"no-whitespace-before-property": "error",
"nonblock-statement-body-position": "error",
"object-curly-newline": [
"error",
{
"consistent": true
}
],
"object-curly-spacing": [
"error",
"always"
],
"operator-assignment": "error",
"operator-linebreak": [
"error",
"before",
{
"overrides": {
"=": "ignore"
}
}
],
"padded-blocks": [
"error",
"never",
{
"allowSingleLineBlocks": true
}
],
"padding-line-between-statements": [
"error",
{
"blankLine": "always",
"prev": "directive",
"next": "*"
},
{
"blankLine": "never",
"prev": "directive",
"next": "directive"
},
{
"blankLine": "always",
"prev": "import",
"next": "*"
},
{
"blankLine": "never",
"prev": "import",
"next": "import"
},
{
"blankLine": "always",
"prev": "*",
"next": [
"block",
"block-like"
]
},
{
"blankLine": "always",
"prev": [
"block",
"block-like"
],
"next": "*"
},
{
"blankLine": "always",
"prev": [
"case",
"default"
],
"next": "*"
},
{
"blankLine": "always",
"prev": "*",
"next": [
"throw",
"empty",
"continue",
"break",
"return"
]
}
],
"prefer-arrow-callback": "error",
"prefer-const": "warn",
"prefer-destructuring": "warn",
"prefer-exponentiation-operator": "error",
"prefer-numeric-literals": "warn",
"prefer-object-spread": "error",
"prefer-promise-reject-errors": "warn",
"prefer-regex-literals": "error",
"prefer-rest-params": "warn",
"prefer-spread": "warn",
"prefer-template": "error",
"quote-props": [
"error",
"as-needed"
],
"quotes": [
"error",
"single"
],
"radix": [
"error",
"as-needed"
],
"require-await": "error",
"require-unicode-regexp": "error",
"rest-spread-spacing": [
"error",
"never"
],
"semi": [
"error"
],
"semi-spacing": "error",
"semi-style": "error",
// "sort-imports": "error", // use Organize Imports [Shift+Alt+O] instead
"space-before-blocks": [
"error"
],
"space-before-function-paren": [
"error"
],
"space-in-parens": "error",
"space-infix-ops": [
"error"
],
"space-unary-ops": "error",
"spaced-comment": "error",
"strict": "error",
"switch-colon-spacing": "error",
"template-curly-spacing": "error",
"template-tag-spacing": [
"error",
"always"
],
"wrap-iife": "error",
"yield-star-spacing": "error",
"yoda": [
"error",
"never",
{
"onlyEquality": true
}
]
}
}

224
eslint.config.mjs Normal file
View file

@ -0,0 +1,224 @@
import globals from 'globals';
import pluginJs from '@eslint/js';
export default [pluginJs.configs.recommended, {
languageOptions: {
globals: {
...Object.fromEntries(Object.entries(globals.node).map(([key]) => [key, 'off'])),
...globals.browser,
},
ecmaVersion: 'latest',
sourceType: 'module',
parserOptions: {
ecmaFeatures: {
impliedStrict: true,
},
requireConfigFile: false,
},
},
rules: {
'arrow-body-style': 'error',
'array-bracket-newline': ['error', 'consistent'],
'array-bracket-spacing': 'error',
'array-callback-return': 'warn',
'array-element-newline': ['error', 'consistent'],
'arrow-parens': ['error', 'as-needed'],
'arrow-spacing': 'error',
'block-scoped-var': 'warn',
'block-spacing': 'error',
'brace-style': ['error', 'allman', {
allowSingleLine: true,
}],
'comma-dangle': ['error', 'always-multiline'],
'comma-spacing': 'error',
'comma-style': 'error',
'computed-property-spacing': 'error',
'consistent-return': 'warn',
curly: 'error',
'default-case-last': 'error',
'default-param-last': ['error'],
'dot-location': ['error', 'property'],
'dot-notation': 'error',
'eol-last': ['error', 'never'],
eqeqeq: ['error', 'smart'],
'func-call-spacing': ['error'],
'func-style': ['error', 'expression', {
allowArrowFunctions: true,
}],
'function-call-argument-newline': ['error', 'consistent'],
'function-paren-newline': ['error', 'consistent'],
'generator-star-spacing': 'error',
indent: ['error', 2, {
SwitchCase: 1,
}],
'key-spacing': 'error',
'keyword-spacing': ['error'],
'linebreak-style': ['error', 'unix'],
'lines-between-class-members': ['error'],
'new-parens': 'error',
'no-dupe-class-members': ['error'],
'no-duplicate-imports': 'error',
'no-else-return': 'warn',
'no-empty': 'error',
'no-empty-function': ['error'],
'no-eval': 'error',
'no-eq-null': 'warn',
'no-explicit-any': 'off',
'no-extra-bind': 'error',
'no-extra-boolean-cast': 'error',
'no-extra-label': 'error',
'no-extra-semi': ['error'],
'no-global-assign': 'error',
'no-implicit-coercion': 'error',
'no-implicit-globals': 'error',
'no-implied-eval': 'error',
'no-invalid-this': ['error'],
'no-lone-blocks': 'error',
'no-lonely-if': 'warn',
'no-loop-func': ['error'],
'no-loss-of-precision': ['error'],
'no-mixed-operators': 'error',
'no-multi-spaces': 'error',
'no-multiple-empty-lines': ['error', {
max: 1,
maxEOF: 0,
}],
'no-new': 'error',
'no-new-func': 'error',
'no-new-object': 'error',
'no-new-wrappers': 'error',
'no-octal-escape': 'error',
'no-param-reassign': 'warn',
'no-promise-executor-return': 'error',
'no-prototype-builtins': 'warn',
'no-redeclare': ['error'],
'no-return-assign': 'error',
'no-return-await': 'error',
'no-self-compare': 'error',
'no-shadow': ['warn'],
'no-tabs': 'error',
'no-template-curly-in-string': 'warn',
'no-throw-literal': 'error',
'no-trailing-spaces': 'error',
'no-unneeded-ternary': 'error',
'no-unused-expressions': ['error', {
allowShortCircuit: true,
allowTernary: true,
}],
'no-unused-private-class-members': 'error',
'no-unused-vars': ['warn'],
'no-use-before-define': ['error'],
'no-useless-call': 'error',
'no-useless-computed-key': 'error',
'no-useless-concat': 'error',
'no-useless-constructor': ['error'],
'no-useless-rename': 'error',
'no-useless-return': 'warn',
'no-var': 'warn',
'no-void': 'error',
'no-whitespace-before-property': 'error',
'nonblock-statement-body-position': 'error',
'object-curly-newline': ['error', {
consistent: true,
}],
'object-curly-spacing': ['error', 'always'],
'operator-assignment': 'error',
'operator-linebreak': ['error', 'before', {
overrides: {
'=': 'ignore',
},
}],
'padded-blocks': ['error', 'never', {
allowSingleLineBlocks: true,
}],
'padding-line-between-statements': ['error', {
blankLine: 'always',
prev: 'directive',
next: '*',
}, {
blankLine: 'never',
prev: 'directive',
next: 'directive',
}, {
blankLine: 'always',
prev: 'import',
next: '*',
}, {
blankLine: 'never',
prev: 'import',
next: 'import',
}, {
blankLine: 'always',
prev: '*',
next: ['block', 'block-like'],
}, {
blankLine: 'always',
prev: ['block', 'block-like'],
next: '*',
}, {
blankLine: 'always',
prev: ['case', 'default'],
next: '*',
}, {
blankLine: 'always',
prev: '*',
next: ['throw', 'empty', 'continue', 'break', 'return'],
}],
'prefer-arrow-callback': 'error',
'prefer-const': 'warn',
'prefer-destructuring': 'warn',
'prefer-exponentiation-operator': 'error',
'prefer-numeric-literals': 'warn',
'prefer-object-spread': 'error',
'prefer-promise-reject-errors': 'warn',
'prefer-regex-literals': 'error',
'prefer-rest-params': 'warn',
'prefer-spread': 'warn',
'prefer-template': 'error',
'quote-props': ['error', 'as-needed'],
quotes: ['error', 'single'],
radix: ['error', 'as-needed'],
'require-await': 'error',
'require-unicode-regexp': 'error',
'rest-spread-spacing': ['error', 'never'],
semi: ['error'],
'semi-spacing': 'error',
'semi-style': 'error',
'space-before-blocks': ['error'],
'space-before-function-paren': ['error'],
'space-in-parens': 'error',
'space-infix-ops': ['error'],
'space-unary-ops': 'error',
'spaced-comment': 'error',
strict: 'error',
'switch-colon-spacing': 'error',
'template-curly-spacing': 'error',
'template-tag-spacing': ['error', 'always'],
'wrap-iife': 'error',
'yield-star-spacing': 'error',
yoda: ['error', 'never', {
onlyEquality: true,
}],
},
}];

View file

@ -7,25 +7,26 @@
"packageManager": "pnpm@9.2.0+sha1.886364ebd6dae009284bebc56ed4296bb6dd557a", "packageManager": "pnpm@9.2.0+sha1.886364ebd6dae009284bebc56ed4296bb6dd557a",
"scripts": { "scripts": {
"build": "npm-run-all css-compile css-prefix js-minify", "build": "npm-run-all css-compile css-prefix js-minify",
"css-compile": "sass --style compressed --source-map --embed-sources --no-error-css --load-path=node_modules src/scss/styles.scss:public/assets/css/styles.min.css", "css-compile": "sass --style compressed --source-map --embed-sources --no-error-css --load-path=node_modules --quiet-deps src/scss/styles.scss:public/assets/css/styles.min.css --silence-deprecation=import",
"css-prefix": "postcss --replace public/assets/css/styles.min.css --use autoprefixer --map", "css-prefix": "postcss --replace public/assets/css/styles.min.css --use autoprefixer --map",
"js-minify": "bash -c 'mkdir -p public/assets/js' && terser --compress --mangle --source-map --output public/assets/js/scripts.min.js -- src/js/scripts.js", "js-minify": "bash -c 'mkdir -p public/assets/js' && terser --compress --mangle --source-map --output public/assets/js/scripts.min.js -- src/js/scripts.js",
"server": "docker compose up -d", "server": "docker compose up -d",
"start": "npm-run-all build server" "start": "npm-run-all build server"
}, },
"dependencies": { "dependencies": {
"bootstrap": "^5" "bootstrap": "^5.3.3"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^8", "@eslint/js": "^9.14.0",
"autoprefixer": "^10", "autoprefixer": "^10.4.20",
"clean-css": "^5", "clean-css": "^5.3.3",
"eslint": "^8", "eslint": "^9.14.0",
"html-minifier-terser": "^7", "globals": "^15.11.0",
"npm-run-all": "^4", "html-minifier-terser": "^7.2.0",
"postcss": "^8", "npm-run-all": "^4.1.5",
"postcss-cli": "^11", "postcss": "^8.4.47",
"sass": "^1", "postcss-cli": "^11.0.0",
"terser": "^5" "sass": "^1.80.6",
"terser": "^5.36.0"
} }
} }

763
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@
// $enable-shadows: true; // $enable-shadows: true;
// Include functions first (so you can manipulate colors, SVGs, calc, etc) // Include functions first (so you can manipulate colors, SVGs, calc, etc)
@import "../../node_modules/bootstrap/scss/functions"; @import "bootstrap/scss/functions";
// scss-docs-start color-variables // scss-docs-start color-variables
$red: #cc2929; // Default: #dc3545 $red: #cc2929; // Default: #dc3545
@ -12,8 +12,8 @@ $red: #cc2929; // Default: #dc3545
$primary: $red; // Default: $blue $primary: $red; // Default: $blue
// Include remainder of required Bootstrap stylesheets // Include remainder of required Bootstrap stylesheets
@import "../../node_modules/bootstrap/scss/variables"; @import "bootstrap/scss/variables";
@import "../../node_modules/bootstrap/scss/variables-dark"; @import "bootstrap/scss/variables-dark";
// Include any default map overrides here // Include any default map overrides here
$carousel-dark-indicator-active-bg: $white; $carousel-dark-indicator-active-bg: $white;
@ -21,48 +21,48 @@ $carousel-dark-caption-color: $white;
$carousel-dark-control-icon-filter: unset; $carousel-dark-control-icon-filter: unset;
// Include remainder of required parts // Include remainder of required parts
@import "../../node_modules/bootstrap/scss/maps"; @import "bootstrap/scss/maps";
@import "../../node_modules/bootstrap/scss/mixins"; @import "bootstrap/scss/mixins";
@import "../../node_modules/bootstrap/scss/root"; @import "bootstrap/scss/root";
// Include any other parts as needed // Include any other parts as needed
@import "../../node_modules/bootstrap/scss/reboot"; @import "bootstrap/scss/reboot";
@import "../../node_modules/bootstrap/scss/type"; @import "bootstrap/scss/type";
@import "../../node_modules/bootstrap/scss/containers"; @import "bootstrap/scss/containers";
@import "../../node_modules/bootstrap/scss/grid"; @import "bootstrap/scss/grid";
@import "../../node_modules/bootstrap/scss/nav"; @import "bootstrap/scss/nav";
@import "../../node_modules/bootstrap/scss/navbar"; // Requires nav @import "bootstrap/scss/navbar"; // Requires nav
@import "../../node_modules/bootstrap/scss/buttons"; @import "bootstrap/scss/buttons";
@import "../../node_modules/bootstrap/scss/card"; @import "bootstrap/scss/card";
@import "../../node_modules/bootstrap/scss/carousel"; @import "bootstrap/scss/carousel";
@import "../../node_modules/bootstrap/scss/images"; @import "bootstrap/scss/images";
@import "../../node_modules/bootstrap/scss/list-group"; @import "bootstrap/scss/list-group";
@import "../../node_modules/bootstrap/scss/transitions"; @import "bootstrap/scss/transitions";
// @import "../../node_modules/bootstrap/scss/accordion"; // @import "bootstrap/scss/accordion";
// @import "../../node_modules/bootstrap/scss/alert"; // @import "bootstrap/scss/alert";
// @import "../../node_modules/bootstrap/scss/badge"; // @import "bootstrap/scss/badge";
// @import "../../node_modules/bootstrap/scss/breadcrumb"; // @import "bootstrap/scss/breadcrumb";
// @import "../../node_modules/bootstrap/scss/button-group"; // @import "bootstrap/scss/button-group";
// @import "../../node_modules/bootstrap/scss/close"; // @import "bootstrap/scss/close";
// @import "../../node_modules/bootstrap/scss/dropdown"; // @import "bootstrap/scss/dropdown";
// @import "../../node_modules/bootstrap/scss/forms"; // @import "bootstrap/scss/forms";
// @import "../../node_modules/bootstrap/scss/modal"; // Requires transitions // @import "bootstrap/scss/modal"; // Requires transitions
// @import "../../node_modules/bootstrap/scss/offcanvas"; // Requires transitions // @import "bootstrap/scss/offcanvas"; // Requires transitions
// @import "../../node_modules/bootstrap/scss/pagination"; // @import "bootstrap/scss/pagination";
// @import "../../node_modules/bootstrap/scss/placeholders"; // @import "bootstrap/scss/placeholders";
// @import "../../node_modules/bootstrap/scss/popover"; // @import "bootstrap/scss/popover";
// @import "../../node_modules/bootstrap/scss/progress"; // @import "bootstrap/scss/progress";
// @import "../../node_modules/bootstrap/scss/spinners"; // @import "bootstrap/scss/spinners";
// @import "../../node_modules/bootstrap/scss/tables"; // @import "bootstrap/scss/tables";
// @import "../../node_modules/bootstrap/scss/toasts"; // @import "bootstrap/scss/toasts";
// @import "../../node_modules/bootstrap/scss/tooltip"; // @import "bootstrap/scss/tooltip";
// Helpers // Helpers
@import "../../node_modules/bootstrap/scss/helpers"; @import "bootstrap/scss/helpers";
// Utilities // Utilities
@import "../../node_modules/bootstrap/scss/utilities"; @import "bootstrap/scss/utilities";
@import "../../node_modules/bootstrap/scss/utilities/api"; @import "bootstrap/scss/utilities/api";
// //
// Custom styles // Custom styles