@outfitter/tooling 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,116 @@
1
+ {
2
+ "name": "@outfitter/tooling",
3
+ "description": "Dev tooling configuration presets for Outfitter projects (biome, typescript, lefthook, markdownlint)",
4
+ "version": "0.2.0",
5
+ "type": "module",
6
+ "files": [
7
+ "dist",
8
+ "registry",
9
+ "biome.json",
10
+ "tsconfig.preset.json",
11
+ "tsconfig.preset.bun.json",
12
+ "lefthook.yml",
13
+ ".markdownlint-cli2.jsonc"
14
+ ],
15
+ "module": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "import": {
20
+ "types": "./dist/index.d.ts",
21
+ "default": "./dist/index.js"
22
+ }
23
+ },
24
+ "./registry": {
25
+ "import": {
26
+ "types": "./dist/index.d.ts",
27
+ "default": "./dist/index.js"
28
+ }
29
+ },
30
+ "./cli/init": {
31
+ "import": {
32
+ "types": "./dist/cli/init.d.ts",
33
+ "default": "./dist/cli/init.js"
34
+ }
35
+ },
36
+ "./cli/fix": {
37
+ "import": {
38
+ "types": "./dist/cli/fix.d.ts",
39
+ "default": "./dist/cli/fix.js"
40
+ }
41
+ },
42
+ "./cli/check": {
43
+ "import": {
44
+ "types": "./dist/cli/check.d.ts",
45
+ "default": "./dist/cli/check.js"
46
+ }
47
+ },
48
+ "./package.json": "./package.json",
49
+ "./biome.json": "./biome.json",
50
+ "./tsconfig.preset.json": "./tsconfig.preset.json",
51
+ "./tsconfig.preset.bun.json": "./tsconfig.preset.bun.json",
52
+ "./lefthook.yml": "./lefthook.yml",
53
+ "./.markdownlint-cli2.jsonc": "./.markdownlint-cli2.jsonc"
54
+ },
55
+ "bin": {
56
+ "tooling": "./dist/cli/index.js"
57
+ },
58
+ "sideEffects": false,
59
+ "scripts": {
60
+ "build:registry": "bun run src/registry/build.ts",
61
+ "prebuild": "bun run build:registry",
62
+ "build": "bunup --filter @outfitter/tooling",
63
+ "lint": "biome lint ./src",
64
+ "lint:fix": "biome lint --write ./src",
65
+ "test": "bun test",
66
+ "typecheck": "tsc --noEmit",
67
+ "clean": "rm -rf dist registry"
68
+ },
69
+ "dependencies": {
70
+ "commander": "^14.0.2",
71
+ "zod": "^3.25.17"
72
+ },
73
+ "devDependencies": {
74
+ "@types/bun": "^1.3.7",
75
+ "typescript": "^5.9.3",
76
+ "yaml": "^2.8.2"
77
+ },
78
+ "peerDependencies": {
79
+ "ultracite": "^7.0.0",
80
+ "lefthook": "^2.0.0",
81
+ "markdownlint-cli2": ">=0.17.0"
82
+ },
83
+ "peerDependenciesMeta": {
84
+ "ultracite": {
85
+ "optional": true
86
+ },
87
+ "lefthook": {
88
+ "optional": true
89
+ },
90
+ "markdownlint-cli2": {
91
+ "optional": true
92
+ }
93
+ },
94
+ "engines": {
95
+ "bun": ">=1.3.7"
96
+ },
97
+ "keywords": [
98
+ "outfitter",
99
+ "tooling",
100
+ "biome",
101
+ "typescript",
102
+ "lefthook",
103
+ "markdownlint",
104
+ "config",
105
+ "presets"
106
+ ],
107
+ "license": "MIT",
108
+ "repository": {
109
+ "type": "git",
110
+ "url": "https://github.com/outfitter-dev/outfitter.git",
111
+ "directory": "packages/tooling"
112
+ },
113
+ "publishConfig": {
114
+ "access": "public"
115
+ }
116
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "blocks": {
4
+ "claude": {
5
+ "name": "claude",
6
+ "description": "Claude Code settings and hooks for automated formatting",
7
+ "files": [
8
+ {
9
+ "path": ".claude/settings.json",
10
+ "content": "{\n \"hooks\": {\n \"SessionStart\": [\n {\n \"matcher\": \"*\",\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"bash \\\"$CLAUDE_PROJECT_DIR/scripts/bootstrap.sh\\\"\",\n \"timeout\": 120\n }\n ]\n }\n ],\n \"Stop\": [\n {\n \"matcher\": \"*\",\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"bash \\\"$CLAUDE_PROJECT_DIR/.claude/hooks/format-code-on-stop.sh\\\"\",\n \"timeout\": 60\n }\n ]\n }\n ]\n },\n \"enabledPlugins\": {\n \"outfitter@outfitter\": true,\n \"team@outfitter\": true,\n \"kit@outfitter\": true\n },\n \"extraKnownMarketplaces\": {\n \"outfitter\": {\n \"source\": {\n \"source\": \"github\",\n \"repo\": \"outfitter/outfitter\"\n }\n }\n }\n}\n"
11
+ },
12
+ {
13
+ "path": ".claude/hooks/format-code-on-stop.sh",
14
+ "content": "#!/usr/bin/env bash\n# format-code-on-stop.sh\n# Formats code and markdown files changed during the session.\n# Designed for Claude Code Stop hook - runs after agent completes work.\n\nset -euo pipefail\n\n# -----------------------------------------------------------------------------\n# Configuration\n# -----------------------------------------------------------------------------\n\n# File patterns for each formatter\nCODE_PATTERNS=\"*.js *.jsx *.ts *.tsx *.json *.jsonc *.css\"\nMARKDOWN_PATTERNS=\"*.md\"\n\n# -----------------------------------------------------------------------------\n# Helpers\n# -----------------------------------------------------------------------------\n\nlog() {\n echo \"[format] $*\"\n}\n\nwarn() {\n echo \"[format] WARNING: $*\" >&2\n}\n\nhint() {\n echo \"[format] HINT: $*\" >&2\n}\n\n# Check if a command exists\nhas_cmd() {\n command -v \"$1\" &>/dev/null\n}\n\n# Get changed files (staged + unstaged, excluding deleted)\nget_changed_files() {\n local patterns=(\"$@\")\n local files=()\n\n # Get both staged and unstaged changes, excluding deleted files\n for pattern in \"${patterns[@]}\"; do\n while IFS= read -r file; do\n [[ -n \"$file\" && -f \"$file\" ]] && files+=(\"$file\")\n done < <(git diff --name-only --diff-filter=d HEAD -- \"$pattern\" 2>/dev/null || true)\n\n # Also check untracked files matching pattern\n while IFS= read -r file; do\n [[ -n \"$file\" && -f \"$file\" ]] && files+=(\"$file\")\n done < <(git ls-files --others --exclude-standard -- \"$pattern\" 2>/dev/null || true)\n done\n\n # Deduplicate\n printf '%s\\n' \"${files[@]}\" | sort -u\n}\n\n# -----------------------------------------------------------------------------\n# Formatters\n# -----------------------------------------------------------------------------\n\nformat_code() {\n local files=()\n\n # Collect changed code files\n while IFS= read -r file; do\n [[ -n \"$file\" ]] && files+=(\"$file\")\n done < <(get_changed_files $CODE_PATTERNS)\n\n if [[ ${#files[@]} -eq 0 ]]; then\n log \"No code files to format\"\n return 0\n fi\n\n log \"Formatting ${#files[@]} code file(s)...\"\n\n # Check for bun\n if ! has_cmd bun; then\n warn \"bun not found - skipping code formatting\"\n hint \"Install bun: curl -fsSL https://bun.sh/install | bash\"\n return 0\n fi\n\n # Check for ultracite (via bun x)\n if ! bun x ultracite --version &>/dev/null; then\n warn \"ultracite not available - skipping code formatting\"\n hint \"Install ultracite: bun add -d ultracite\"\n return 0\n fi\n\n # Run ultracite fix on changed files\n if bun x ultracite fix \"${files[@]}\" 2>/dev/null; then\n log \"Code formatting complete\"\n else\n warn \"ultracite encountered errors (non-fatal)\"\n fi\n}\n\nformat_markdown() {\n local files=()\n\n # Collect changed markdown files\n while IFS= read -r file; do\n [[ -n \"$file\" ]] && files+=(\"$file\")\n done < <(get_changed_files $MARKDOWN_PATTERNS)\n\n if [[ ${#files[@]} -eq 0 ]]; then\n log \"No markdown files to format\"\n return 0\n fi\n\n log \"Formatting ${#files[@]} markdown file(s)...\"\n\n # Check for markdownlint-cli2\n if has_cmd markdownlint-cli2; then\n if markdownlint-cli2 --fix \"${files[@]}\" 2>/dev/null; then\n log \"Markdown formatting complete\"\n else\n warn \"markdownlint-cli2 encountered errors (non-fatal)\"\n fi\n return 0\n fi\n\n # Try via bunx/npx\n if has_cmd bun && bun x markdownlint-cli2 --help &>/dev/null; then\n if bun x markdownlint-cli2 --fix \"${files[@]}\" 2>/dev/null; then\n log \"Markdown formatting complete\"\n else\n warn \"markdownlint-cli2 encountered errors (non-fatal)\"\n fi\n return 0\n fi\n\n if has_cmd npx && npx markdownlint-cli2 --help &>/dev/null; then\n if npx markdownlint-cli2 --fix \"${files[@]}\" 2>/dev/null; then\n log \"Markdown formatting complete\"\n else\n warn \"markdownlint-cli2 encountered errors (non-fatal)\"\n fi\n return 0\n fi\n\n warn \"markdownlint-cli2 not found - skipping markdown formatting\"\n hint \"Install: bun add -g markdownlint-cli2 OR npm install -g markdownlint-cli2\"\n}\n\n# -----------------------------------------------------------------------------\n# Main\n# -----------------------------------------------------------------------------\n\nmain() {\n # Ensure we're in a git repo\n if ! git rev-parse --is-inside-work-tree &>/dev/null; then\n warn \"Not in a git repository - skipping formatting\"\n exit 0\n fi\n\n # Change to repo root\n cd \"$(git rev-parse --show-toplevel)\"\n\n log \"Checking for files to format...\"\n\n format_code\n format_markdown\n\n log \"Done\"\n}\n\nmain \"$@\"\n",
15
+ "executable": true
16
+ }
17
+ ]
18
+ },
19
+ "biome": {
20
+ "name": "biome",
21
+ "description": "Biome linter/formatter configuration via Ultracite",
22
+ "files": [
23
+ {
24
+ "path": "biome.json",
25
+ "content": "{\n \"$schema\": \"https://biomejs.dev/schemas/1.9.4/schema.json\",\n \"root\": false,\n \"javascript\": {\n \"globals\": [\"Bun\"]\n },\n \"linter\": {\n \"rules\": {\n \"complexity\": {\n \"useLiteralKeys\": \"off\",\n \"noVoid\": \"off\",\n \"noExcessiveCognitiveComplexity\": \"off\"\n },\n \"performance\": {\n \"useTopLevelRegex\": \"off\"\n },\n \"style\": {\n \"useBlockStatements\": \"off\"\n },\n \"suspicious\": {\n \"noConsole\": \"error\"\n }\n }\n },\n \"vcs\": {\n \"enabled\": true,\n \"clientKind\": \"git\",\n \"useIgnoreFile\": true\n },\n \"files\": {\n \"ignoreUnknown\": true,\n \"includes\": [\"!**/node_modules\", \"!**/dist\", \"!**/.turbo\", \"!**/*.gen.ts\"]\n },\n \"overrides\": [\n {\n \"includes\": [\"packages/*/src/index.ts\", \"apps/*/src/index.ts\", \"**/index.ts\"],\n \"linter\": {\n \"rules\": {\n \"performance\": {\n \"noBarrelFile\": \"off\"\n }\n }\n }\n },\n {\n \"includes\": [\"**/*.test.ts\", \"**/__tests__/**/*\"],\n \"linter\": {\n \"rules\": {\n \"suspicious\": {\n \"useAwait\": \"off\",\n \"noConsole\": \"off\"\n },\n \"performance\": {\n \"noDelete\": \"off\"\n }\n }\n }\n },\n {\n \"includes\": [\n \"apps/**/*.ts\",\n \"scripts/**/*.ts\",\n \"**/scripts/**/*.ts\"\n ],\n \"linter\": {\n \"rules\": {\n \"suspicious\": {\n \"noConsole\": \"off\"\n }\n }\n }\n }\n ]\n}\n"
26
+ }
27
+ ],
28
+ "devDependencies": {
29
+ "ultracite": "^7.0.0"
30
+ }
31
+ },
32
+ "lefthook": {
33
+ "name": "lefthook",
34
+ "description": "Git hooks via Lefthook for pre-commit and pre-push",
35
+ "files": [
36
+ {
37
+ "path": ".lefthook.yml",
38
+ "content": "# Lefthook configuration preset for Outfitter projects\n# https://github.com/evilmartians/lefthook\n#\n# Usage: In your project's .lefthook.yml, add:\n# extends:\n# - node_modules/@outfitter/tooling/lefthook.yml\n\npre-commit:\n parallel: true\n commands:\n ultracite:\n glob: \"*.{js,jsx,ts,tsx,json,jsonc,css}\"\n run: bun x ultracite fix {staged_files}\n stage_fixed: true\n\n typecheck:\n glob: \"*.{ts,tsx}\"\n run: bun run typecheck\n\npre-push:\n parallel: false\n commands:\n build:\n run: bun run build\n\n test:\n # TDD-aware: skips tests on RED phase branches (*-tests, */tests, *_tests)\n # Override with `run: bun run test` if you don't want TDD support\n # Requires: @outfitter/tooling must be a devDependency in your project\n run: bunx @outfitter/tooling pre-push\n"
39
+ }
40
+ ],
41
+ "devDependencies": {
42
+ "lefthook": "^2.0.0"
43
+ }
44
+ },
45
+ "markdownlint": {
46
+ "name": "markdownlint",
47
+ "description": "Markdown linting configuration via markdownlint-cli2",
48
+ "files": [
49
+ {
50
+ "path": ".markdownlint-cli2.jsonc",
51
+ "content": "{\n // Outfitter markdownlint preset\n // https://github.com/DavidAnson/markdownlint\n\n \"config\": {\n // Headings\n \"MD003\": { \"style\": \"atx\" }, // ATX-style headings (# Heading)\n \"MD022\": { \"lines_above\": 1, \"lines_below\": 1 }, // Blank lines around headings\n \"MD024\": { \"siblings_only\": true }, // Allow duplicate headings in different sections\n \"MD041\": false, // First line doesn't need to be h1 (frontmatter, etc.)\n\n // Line length - disabled for prose flexibility\n \"MD013\": false,\n\n // Lists\n \"MD004\": { \"style\": \"dash\" }, // Unordered list style: dash (-)\n \"MD007\": { \"indent\": 2 }, // List indentation: 2 spaces\n \"MD032\": true, // Blank lines around lists\n\n // Code blocks\n \"MD040\": true, // Fenced code blocks should have a language\n \"MD046\": { \"style\": \"fenced\" }, // Code block style: fenced (```)\n \"MD048\": { \"style\": \"backtick\" }, // Code fence style: backticks\n\n // Links\n \"MD034\": true, // No bare URLs (use <url> or [text](url))\n\n // Whitespace\n \"MD009\": { \"br_spaces\": 2 }, // Allow 2 trailing spaces for <br>\n \"MD010\": { \"spaces_per_tab\": 2 }, // Tabs to spaces\n \"MD012\": { \"maximum\": 1 }, // Max 1 consecutive blank line\n \"MD047\": true, // Files should end with newline\n\n // HTML - allow for GitHub-specific elements\n \"MD033\": {\n \"allowed_elements\": [\n \"details\",\n \"summary\",\n \"kbd\",\n \"br\",\n \"sup\",\n \"sub\",\n \"img\",\n \"picture\",\n \"source\",\n \"a\"\n ]\n },\n\n // Emphasis\n \"MD049\": { \"style\": \"asterisk\" }, // Emphasis style: *italic*\n \"MD050\": { \"style\": \"asterisk\" } // Strong style: **bold**\n },\n\n // Ignore patterns\n \"ignores\": [\n \"node_modules/**\",\n \"**/node_modules/**\",\n \"dist/**\",\n \"**/dist/**\",\n \".turbo/**\",\n \"**/.turbo/**\",\n \"CHANGELOG.md\",\n \"**/CHANGELOG.md\"\n ]\n}\n"
52
+ }
53
+ ]
54
+ },
55
+ "bootstrap": {
56
+ "name": "bootstrap",
57
+ "description": "Project bootstrap script for installing tools and dependencies",
58
+ "files": [
59
+ {
60
+ "path": "scripts/bootstrap.sh",
61
+ "content": "#!/usr/bin/env bash\n#\n# bootstrap.sh — Get this repo from clone to runnable\n#\n# Usage: ./scripts/bootstrap.sh [--force]\n#\n# By default, exits immediately if all tools and deps are present.\n# Use --force to run full bootstrap regardless.\n#\n\nset -euo pipefail\n\n# -----------------------------------------------------------------------------\n# Fast path — exit immediately if all tools and deps are present\n# -----------------------------------------------------------------------------\nif [[ \"${1:-}\" != \"--force\" ]]; then\n all_present=true\n command -v bun &>/dev/null || all_present=false\n command -v gh &>/dev/null || all_present=false\n command -v gt &>/dev/null || all_present=false\n command -v markdownlint-cli2 &>/dev/null || all_present=false\n [[ -d \"node_modules\" ]] || all_present=false\n\n if $all_present; then\n exit 0 # All good, nothing to do\n fi\nfi\n\n# Strip --force if present\n[[ \"${1:-}\" == \"--force\" ]] && shift\n\n# Colors\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[0;33m'\nBLUE='\\033[0;34m'\nNC='\\033[0m' # No Color\n\ninfo() { echo -e \"${BLUE}▸${NC} $1\"; }\nsuccess() { echo -e \"${GREEN}✓${NC} $1\"; }\nwarn() { echo -e \"${YELLOW}!${NC} $1\"; }\nerror() { echo -e \"${RED}✗${NC} $1\" >&2; }\n\n# Check if command exists\nhas() { command -v \"$1\" &>/dev/null; }\n\n# Detect OS\nOS=\"$(uname -s)\"\ncase \"$OS\" in\n Darwin) IS_MACOS=true ;;\n Linux) IS_MACOS=false ;;\n *) error \"Unsupported OS: $OS\"; exit 1 ;;\nesac\n\n# -----------------------------------------------------------------------------\n# Homebrew (macOS only)\n# -----------------------------------------------------------------------------\ninstall_homebrew() {\n if $IS_MACOS && ! has brew; then\n info \"Installing Homebrew...\"\n /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n success \"Homebrew installed\"\n fi\n}\n\n# -----------------------------------------------------------------------------\n# Bun\n# -----------------------------------------------------------------------------\ninstall_bun() {\n if has bun; then\n success \"Bun already installed ($(bun --version))\"\n else\n info \"Installing Bun...\"\n curl -fsSL https://bun.sh/install | bash\n # Source the updated profile\n export BUN_INSTALL=\"$HOME/.bun\"\n export PATH=\"$BUN_INSTALL/bin:$PATH\"\n success \"Bun installed ($(bun --version))\"\n fi\n}\n\n# -----------------------------------------------------------------------------\n# GitHub CLI (gh)\n# -----------------------------------------------------------------------------\ninstall_gh() {\n if has gh; then\n success \"GitHub CLI already installed ($(gh --version | head -1))\"\n else\n info \"Installing GitHub CLI...\"\n if $IS_MACOS; then\n brew install gh\n else\n # Linux: use official apt repo\n curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg\n echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null\n sudo apt update && sudo apt install gh -y\n fi\n success \"GitHub CLI installed\"\n fi\n}\n\n# -----------------------------------------------------------------------------\n# Graphite CLI (gt)\n# -----------------------------------------------------------------------------\ninstall_graphite() {\n if has gt; then\n success \"Graphite CLI already installed ($(gt --version 2>/dev/null || echo 'unknown'))\"\n else\n info \"Installing Graphite CLI...\"\n if $IS_MACOS && has brew; then\n brew install withgraphite/tap/graphite\n else\n bun install -g @withgraphite/graphite-cli\n fi\n success \"Graphite CLI installed\"\n fi\n}\n\n# -----------------------------------------------------------------------------\n# markdownlint-cli2\n# -----------------------------------------------------------------------------\ninstall_markdownlint() {\n if has markdownlint-cli2; then\n success \"markdownlint-cli2 already installed\"\n else\n info \"Installing markdownlint-cli2...\"\n bun install -g markdownlint-cli2\n success \"markdownlint-cli2 installed\"\n fi\n}\n\n# -----------------------------------------------------------------------------\n# Auth checks\n# -----------------------------------------------------------------------------\ncheck_auth() {\n echo \"\"\n info \"Checking authentication...\"\n\n # GitHub CLI\n if [[ -n \"${GH_TOKEN:-}\" ]] || [[ -n \"${GITHUB_TOKEN:-}\" ]]; then\n success \"GitHub CLI token found in environment\"\n elif gh auth status &>/dev/null; then\n success \"GitHub CLI already authenticated\"\n else\n echo \" GitHub CLI not authenticated. Run 'gh auth login' or set GH_TOKEN\"\n fi\n\n # Graphite CLI\n if [[ -n \"${GT_AUTH_TOKEN:-}\" ]]; then\n info \"Authenticating Graphite CLI...\"\n gt auth --token \"$GT_AUTH_TOKEN\"\n success \"Graphite CLI authenticated\"\n elif gt auth status &>/dev/null 2>&1; then\n success \"Graphite CLI already authenticated\"\n else\n echo \" Graphite CLI not authenticated. Run 'gt auth' or set GT_AUTH_TOKEN\"\n fi\n}\n\n# -----------------------------------------------------------------------------\n# Project dependencies\n# -----------------------------------------------------------------------------\ninstall_deps() {\n info \"Installing project dependencies...\"\n bun install\n success \"Dependencies installed\"\n}\n\n# -----------------------------------------------------------------------------\n# Main\n# -----------------------------------------------------------------------------\nmain() {\n echo \"\"\n echo -e \"${BLUE}Outfitter Kit Bootstrap${NC}\"\n echo \"────────────────────────\"\n echo \"\"\n\n # Prerequisites\n if $IS_MACOS; then\n install_homebrew\n fi\n\n # Core tools\n install_bun\n install_gh\n install_graphite\n install_markdownlint\n\n # Auth status\n check_auth\n\n echo \"\"\n\n # Project setup\n install_deps\n\n echo \"\"\n echo -e \"${GREEN}Bootstrap complete!${NC}\"\n echo \"\"\n echo \"Next steps:\"\n echo \" bun run build # Build all packages\"\n echo \" bun run test # Run tests\"\n echo \"\"\n}\n\nmain \"$@\"\n",
62
+ "executable": true
63
+ }
64
+ ]
65
+ },
66
+ "scaffolding": {
67
+ "name": "scaffolding",
68
+ "description": "Full starter kit: Claude settings, Biome, Lefthook, markdownlint, and bootstrap script",
69
+ "extends": [
70
+ "claude",
71
+ "biome",
72
+ "lefthook",
73
+ "markdownlint",
74
+ "bootstrap"
75
+ ]
76
+ }
77
+ }
78
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "extends": "./tsconfig.preset.json",
4
+ "compilerOptions": {
5
+ "types": ["@types/bun"]
6
+ }
7
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ "target": "ESNext",
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "lib": ["ESNext"],
8
+
9
+ "strict": true,
10
+ "noImplicitAny": true,
11
+ "strictNullChecks": true,
12
+ "strictFunctionTypes": true,
13
+ "strictBindCallApply": true,
14
+ "strictPropertyInitialization": true,
15
+ "noImplicitThis": true,
16
+ "useUnknownInCatchVariables": true,
17
+ "alwaysStrict": true,
18
+
19
+ "noUncheckedIndexedAccess": true,
20
+ "noImplicitReturns": true,
21
+ "noFallthroughCasesInSwitch": true,
22
+ "noUnusedLocals": true,
23
+ "noUnusedParameters": true,
24
+ "exactOptionalPropertyTypes": true,
25
+ "noPropertyAccessFromIndexSignature": true,
26
+
27
+ "declaration": true,
28
+ "declarationMap": true,
29
+ "sourceMap": true,
30
+
31
+ "esModuleInterop": true,
32
+ "forceConsistentCasingInFileNames": true,
33
+ "isolatedModules": true,
34
+ "verbatimModuleSyntax": true,
35
+ "skipLibCheck": true,
36
+
37
+ "resolveJsonModule": true,
38
+ "allowSyntheticDefaultImports": true
39
+ }
40
+ }