commit ab34b614dd258d18db375ed7cd5b8230b876472a Author: Alexander Zinn Date: Fri Nov 21 02:38:36 2025 -0500 Initial Commit * Initialize project with essential configuration files including ** .gitignore ** .npmrc ** .nvmrc ** .prettierrc ** bunfig.toml ** eslint.config.ts ** package.json ** README.md ** tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a14702c --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..ba4055d --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +package-lock=false +save-exact=true +@techniker-me:registry=https://npm.techniker.me diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..e69de29 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..5e87b44 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,12 @@ +{ + "arrowParens": "avoid", + "bracketSameLine": true, + "bracketSpacing": false, + "printWidth": 180, + "semi": true, + "singleAttributePerLine": false, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "none", + "useTabs": false +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..a3ec39a --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# speedtest diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 0000000..be17e90 --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,8 @@ +[install] +exact = true + +[install.lockfile] +save = false + +[install.scopes] +"@techniker-me" = "https://npm.techniker.me" diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 0000000..900f136 --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,15 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; +import json from '@eslint/json'; +import markdown from '@eslint/markdown'; +import css from '@eslint/css'; +import {defineConfig} from 'eslint/config'; + +export default defineConfig([ + {files: ['**/*.{js,mjs,cjs,ts,mts,cts}'], plugins: {js}, extends: ['js/recommended'], languageOptions: {globals: globals.node}}, + tseslint.configs.recommended, + {files: ['**/*.json'], plugins: {json}, language: 'json/json', extends: ['json/recommended']}, + {files: ['**/*.md'], plugins: {markdown}, language: 'markdown/commonmark', extends: ['markdown/recommended']}, + {files: ['**/*.css'], plugins: {css}, language: 'css/css', extends: ['css/recommended']} +]); diff --git a/package.json b/package.json new file mode 100644 index 0000000..a6a9c3b --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "speedtest", + "version": "0.0.0", + "author": "Alexander Zinn", + "type": "module", + "private": true, + "scripts": { + "format": "prettier --write .", + "lint": "eslint --max-warnings 0 './src'", + "prelint:fix": "bun run format", + "lint:fix": "eslint --fix './src'" + }, + "devDependencies": { + "@eslint/css": "0.14.1", + "@eslint/js": "9.39.1", + "@eslint/json": "0.14.0", + "@eslint/markdown": "7.5.1", + "@types/bun": "latest", + "eslint": "9.39.1", + "globals": "16.5.0", + "jiti": "2.6.1", + "prettier": "3.6.2", + "typescript-eslint": "8.47.0" + }, + "dependencies": { + "@techniker-me/logger": "0.0.15" + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5365ad0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + // Environment setup & latest features + "lib": ["ESNext"], + "target": "ESNext", + "module": "Preserve", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + "noUnusedParameters": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noPropertyAccessFromIndexSignature": false + } +}