Basics, Setup, Launcher
This commit is contained in:
241
.gitignore
vendored
Normal file
241
.gitignore
vendored
Normal file
@@ -0,0 +1,241 @@
|
||||
### JetBrains template
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### Node template
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional stylelint cache
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
.temp
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
|
||||
### Windows template
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
Thumbs.db:encryptable
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
|
||||
# Dump file
|
||||
*.stackdump
|
||||
|
||||
# Folder config file
|
||||
[Dd]esktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
### Advent of Code specific
|
||||
|
||||
**/input*.txt
|
||||
**/index.js
|
||||
.idea/
|
||||
15
LICENSE
Normal file
15
LICENSE
Normal file
@@ -0,0 +1,15 @@
|
||||
ISC License
|
||||
|
||||
Copyright (c) 2024 Alix von Schirp
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
66
README.md
66
README.md
@@ -1 +1,65 @@
|
||||
# aoc2024
|
||||
# Advent of Coding 2024
|
||||
|
||||
<div align="center">
|
||||
|
||||
[](LICENSE)
|
||||

|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<details open="open">
|
||||
<summary>Table of Contents</summary>
|
||||
|
||||
- [About](#about)
|
||||
- [Built With](#built-with)
|
||||
- [Getting Started](#getting-started)
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Installation](#installation)
|
||||
- [Usage](#usage)
|
||||
- [License](#license)
|
||||
- [Acknowledgements](#acknowledgements)
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## About
|
||||
|
||||
My solutions to the Advent of Code 2024.
|
||||
|
||||
### Built With
|
||||
|
||||
- TypeScript
|
||||
- Launcher build with inquirer.js
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- pnpm 9
|
||||
- node 20
|
||||
|
||||
### Installation
|
||||
|
||||
1. git clone
|
||||
2. pnpm install
|
||||
3. pnpm start
|
||||
|
||||
## Usage
|
||||
|
||||
- run `pnpm start`
|
||||
- download your input
|
||||
- Select day
|
||||
- select part
|
||||
- select input
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the **ISC license**.
|
||||
|
||||
See [LICENSE](LICENSE) for more information.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
Thanks to [Eric Wastl](https://was.tl/) for creating Advent of Code!
|
||||
119
index.ts
Normal file
119
index.ts
Normal file
@@ -0,0 +1,119 @@
|
||||
import {search} from '@inquirer/prompts'
|
||||
import fs from "node:fs";
|
||||
import * as process from "node:process";
|
||||
import * as path from "node:path";
|
||||
|
||||
|
||||
type Choice<Value> = {
|
||||
value: Value;
|
||||
name?: string;
|
||||
description?: string;
|
||||
short?: string;
|
||||
disabled?: boolean | string;
|
||||
};
|
||||
|
||||
async function main(day: string | undefined, part : string | undefined, input: string | undefined) {
|
||||
if ((day ?? null) == null) {
|
||||
day = await search({
|
||||
message: "Select a day",
|
||||
source: async (input) => {
|
||||
if (!input) return fs.readdirSync("./", {withFileTypes: true})
|
||||
.filter(value => value.isDirectory())
|
||||
.filter(value => {
|
||||
return !value.name.match("node_modules")
|
||||
}).filter(value => {
|
||||
return !value.name.startsWith(".")
|
||||
}).map(value => value.name)
|
||||
|
||||
return fs.readdirSync("./", {withFileTypes: true})
|
||||
.filter(value => {
|
||||
return (path.join(value.parentPath, value.name)).match(input)
|
||||
})
|
||||
.filter(value => value.isDirectory())
|
||||
.filter(value => {
|
||||
return !value.name.match("node_modules")
|
||||
}).filter(value => {
|
||||
return !value.name.startsWith(".")
|
||||
}).map(value => value.name)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if ((part ?? null) == null) {
|
||||
part = await search({
|
||||
message: "Select a Part",
|
||||
source: async (input) => {
|
||||
if (!input) return fs.readdirSync(`./${day}`, {withFileTypes: true})
|
||||
.filter(value => value.isDirectory())
|
||||
.filter(value => {
|
||||
return !value.name.match("node_modules")
|
||||
}).filter(value => {
|
||||
return !value.name.startsWith(".")
|
||||
}).map(value => value.name)
|
||||
|
||||
return fs.readdirSync("./", {withFileTypes: true})
|
||||
.filter(value => {
|
||||
return (path.join(value.parentPath, value.name)).match(input)
|
||||
})
|
||||
.filter(value => value.isDirectory())
|
||||
.filter(value => {
|
||||
return !value.name.startsWith(".")
|
||||
}).map(value => value.name)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if ((input ?? null) == null) {
|
||||
|
||||
const inputs = fs.readdirSync(`./${day}`, {withFileTypes: true})
|
||||
.filter(value => value.isFile())
|
||||
.filter(value => value.isFile()).filter(value => {
|
||||
return !value.parentPath.match("node_modules")
|
||||
}).filter(value => {
|
||||
return !value.parentPath.startsWith(".") || value.parentPath.startsWith("./")
|
||||
}).filter(value => {
|
||||
return !value.name.startsWith(".")
|
||||
}).map<Choice<string>>(value => {
|
||||
return {
|
||||
name: value.name,
|
||||
value: path.join(value.parentPath, value.name)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
input = await search({
|
||||
message: `Select file (Select within ./${day} or search within ./*))`,
|
||||
source: async (input) => {
|
||||
if (!input) return inputs;
|
||||
|
||||
return fs.readdirSync("./", {recursive: true, withFileTypes: true})
|
||||
.filter(value => {
|
||||
return (path.join(value.parentPath, value.name)).match(input)
|
||||
}).filter(value => value.isFile())
|
||||
.filter(value => value.isFile()).filter(value => {
|
||||
return !value.parentPath.match("node_modules")
|
||||
}).filter(value => {
|
||||
return !value.parentPath.startsWith(".") || value.parentPath.startsWith("./")
|
||||
}).filter(value => {
|
||||
return !value.name.startsWith(".")
|
||||
}).map<Choice<string>>(value => {
|
||||
return {
|
||||
name: path.join(value.parentPath, value.name),
|
||||
value: path.join(value.parentPath, value.name)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
console.log(input)
|
||||
|
||||
const {default: runner} = await import(`./${day}/${part}/index.js`)
|
||||
runner(input)
|
||||
}
|
||||
|
||||
const day = process.argv[2]
|
||||
const part = process.argv[3]
|
||||
const input = process.argv[4]
|
||||
|
||||
main(day, part, input).then()
|
||||
23
package.json
Normal file
23
package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "advent-of-code-2024",
|
||||
"version": "1.0.0",
|
||||
"description": "My solutions to the 2024 advent of code.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "tsc -b",
|
||||
"start:nobuild": "node index.js",
|
||||
"start": "pnpm build && node index.js"
|
||||
},
|
||||
"keywords": ["challenge", "typescript", "advent-of-code", "programming-puzzles", "advent-of-code-2024", "aoc-2024", "advent-of-code-2024-javascript", "advent-of-code-2024-typescript", "aoc-2024-in-typescript"],
|
||||
"author": "b00tload",
|
||||
"license": "ISC",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.10.1",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.7.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@inquirer/prompts": "^7.2.0"
|
||||
}
|
||||
}
|
||||
383
pnpm-lock.yaml
generated
Normal file
383
pnpm-lock.yaml
generated
Normal file
@@ -0,0 +1,383 @@
|
||||
lockfileVersion: '9.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
'@inquirer/prompts':
|
||||
specifier: ^7.2.0
|
||||
version: 7.2.0(@types/node@22.10.1)
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^22.10.1
|
||||
version: 22.10.1
|
||||
tslib:
|
||||
specifier: ^2.8.1
|
||||
version: 2.8.1
|
||||
typescript:
|
||||
specifier: ^5.7.2
|
||||
version: 5.7.2
|
||||
|
||||
packages:
|
||||
|
||||
'@inquirer/checkbox@4.0.3':
|
||||
resolution: {integrity: sha512-CEt9B4e8zFOGtc/LYeQx5m8nfqQeG/4oNNv0PUvXGG0mys+wR/WbJ3B4KfSQ4Fcr3AQfpiuFOi3fVvmPfvNbxw==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/confirm@5.1.0':
|
||||
resolution: {integrity: sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/core@10.1.1':
|
||||
resolution: {integrity: sha512-rmZVXy9iZvO3ZStEe/ayuuwIJ23LSF13aPMlLMTQARX6lGUBDHGV8UB5i9MRrfy0+mZwt5/9bdy8llszSD3NQA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@inquirer/editor@4.2.0':
|
||||
resolution: {integrity: sha512-Z3LeGsD3WlItDqLxTPciZDbGtm0wrz7iJGS/uUxSiQxef33ZrBq7LhsXg30P7xrWz1kZX4iGzxxj5SKZmJ8W+w==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/expand@4.0.3':
|
||||
resolution: {integrity: sha512-MDszqW4HYBpVMmAoy/FA9laLrgo899UAga0itEjsYrBthKieDZNc0e16gdn7N3cQ0DSf/6zsTBZMuDYDQU4ktg==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/figures@1.0.8':
|
||||
resolution: {integrity: sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@inquirer/input@4.1.0':
|
||||
resolution: {integrity: sha512-16B8A9hY741yGXzd8UJ9R8su/fuuyO2e+idd7oVLYjP23wKJ6ILRIIHcnXe8/6AoYgwRS2zp4PNsW/u/iZ24yg==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/number@3.0.3':
|
||||
resolution: {integrity: sha512-HA/W4YV+5deKCehIutfGBzNxWH1nhvUC67O4fC9ufSijn72yrYnRmzvC61dwFvlXIG1fQaYWi+cqNE9PaB9n6Q==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/password@4.0.3':
|
||||
resolution: {integrity: sha512-3qWjk6hS0iabG9xx0U1plwQLDBc/HA/hWzLFFatADpR6XfE62LqPr9GpFXBkLU0KQUaIXZ996bNG+2yUvocH8w==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/prompts@7.2.0':
|
||||
resolution: {integrity: sha512-ZXYZ5oGVrb+hCzcglPeVerJ5SFwennmDOPfXq1WyeZIrPGySLbl4W6GaSsBFvu3WII36AOK5yB8RMIEEkBjf8w==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/rawlist@4.0.3':
|
||||
resolution: {integrity: sha512-5MhinSzfmOiZlRoPezfbJdfVCZikZs38ja3IOoWe7H1dxL0l3Z2jAUgbBldeyhhOkELdGvPlBfQaNbeLslib1w==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/search@3.0.3':
|
||||
resolution: {integrity: sha512-mQTCbdNolTGvGGVCJSI6afDwiSGTV+fMLPEIMDJgIV6L/s3+RYRpxt6t0DYnqMQmemnZ/Zq0vTIRwoHT1RgcTg==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/select@4.0.3':
|
||||
resolution: {integrity: sha512-OZfKDtDE8+J54JYAFTUGZwvKNfC7W/gFCjDkcsO7HnTH/wljsZo9y/FJquOxMy++DY0+9l9o/MOZ8s5s1j5wmw==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@inquirer/type@3.0.1':
|
||||
resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@types/node': '>=18'
|
||||
|
||||
'@types/node@22.10.1':
|
||||
resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
|
||||
|
||||
ansi-escapes@4.3.2:
|
||||
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
ansi-regex@5.0.1:
|
||||
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
ansi-styles@4.3.0:
|
||||
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
chardet@0.7.0:
|
||||
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
|
||||
|
||||
cli-width@4.1.0:
|
||||
resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
|
||||
engines: {node: '>= 12'}
|
||||
|
||||
color-convert@2.0.1:
|
||||
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
||||
engines: {node: '>=7.0.0'}
|
||||
|
||||
color-name@1.1.4:
|
||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||
|
||||
emoji-regex@8.0.0:
|
||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||
|
||||
external-editor@3.1.0:
|
||||
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
iconv-lite@0.4.24:
|
||||
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
is-fullwidth-code-point@3.0.0:
|
||||
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
mute-stream@2.0.0:
|
||||
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
|
||||
engines: {node: ^18.17.0 || >=20.5.0}
|
||||
|
||||
os-tmpdir@1.0.2:
|
||||
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
safer-buffer@2.1.2:
|
||||
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||
|
||||
signal-exit@4.1.0:
|
||||
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
string-width@4.2.3:
|
||||
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
strip-ansi@6.0.1:
|
||||
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
tmp@0.0.33:
|
||||
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
|
||||
engines: {node: '>=0.6.0'}
|
||||
|
||||
tslib@2.8.1:
|
||||
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
||||
|
||||
type-fest@0.21.3:
|
||||
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
typescript@5.7.2:
|
||||
resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
|
||||
engines: {node: '>=14.17'}
|
||||
hasBin: true
|
||||
|
||||
undici-types@6.20.0:
|
||||
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
|
||||
|
||||
wrap-ansi@6.2.0:
|
||||
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
yoctocolors-cjs@2.1.2:
|
||||
resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
snapshots:
|
||||
|
||||
'@inquirer/checkbox@4.0.3(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/figures': 1.0.8
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
ansi-escapes: 4.3.2
|
||||
yoctocolors-cjs: 2.1.2
|
||||
|
||||
'@inquirer/confirm@5.1.0(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
|
||||
'@inquirer/core@10.1.1(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/figures': 1.0.8
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
ansi-escapes: 4.3.2
|
||||
cli-width: 4.1.0
|
||||
mute-stream: 2.0.0
|
||||
signal-exit: 4.1.0
|
||||
strip-ansi: 6.0.1
|
||||
wrap-ansi: 6.2.0
|
||||
yoctocolors-cjs: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
|
||||
'@inquirer/editor@4.2.0(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
external-editor: 3.1.0
|
||||
|
||||
'@inquirer/expand@4.0.3(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
yoctocolors-cjs: 2.1.2
|
||||
|
||||
'@inquirer/figures@1.0.8': {}
|
||||
|
||||
'@inquirer/input@4.1.0(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
|
||||
'@inquirer/number@3.0.3(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
|
||||
'@inquirer/password@4.0.3(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
ansi-escapes: 4.3.2
|
||||
|
||||
'@inquirer/prompts@7.2.0(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/checkbox': 4.0.3(@types/node@22.10.1)
|
||||
'@inquirer/confirm': 5.1.0(@types/node@22.10.1)
|
||||
'@inquirer/editor': 4.2.0(@types/node@22.10.1)
|
||||
'@inquirer/expand': 4.0.3(@types/node@22.10.1)
|
||||
'@inquirer/input': 4.1.0(@types/node@22.10.1)
|
||||
'@inquirer/number': 3.0.3(@types/node@22.10.1)
|
||||
'@inquirer/password': 4.0.3(@types/node@22.10.1)
|
||||
'@inquirer/rawlist': 4.0.3(@types/node@22.10.1)
|
||||
'@inquirer/search': 3.0.3(@types/node@22.10.1)
|
||||
'@inquirer/select': 4.0.3(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
|
||||
'@inquirer/rawlist@4.0.3(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
yoctocolors-cjs: 2.1.2
|
||||
|
||||
'@inquirer/search@3.0.3(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/figures': 1.0.8
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
yoctocolors-cjs: 2.1.2
|
||||
|
||||
'@inquirer/select@4.0.3(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@inquirer/core': 10.1.1(@types/node@22.10.1)
|
||||
'@inquirer/figures': 1.0.8
|
||||
'@inquirer/type': 3.0.1(@types/node@22.10.1)
|
||||
'@types/node': 22.10.1
|
||||
ansi-escapes: 4.3.2
|
||||
yoctocolors-cjs: 2.1.2
|
||||
|
||||
'@inquirer/type@3.0.1(@types/node@22.10.1)':
|
||||
dependencies:
|
||||
'@types/node': 22.10.1
|
||||
|
||||
'@types/node@22.10.1':
|
||||
dependencies:
|
||||
undici-types: 6.20.0
|
||||
|
||||
ansi-escapes@4.3.2:
|
||||
dependencies:
|
||||
type-fest: 0.21.3
|
||||
|
||||
ansi-regex@5.0.1: {}
|
||||
|
||||
ansi-styles@4.3.0:
|
||||
dependencies:
|
||||
color-convert: 2.0.1
|
||||
|
||||
chardet@0.7.0: {}
|
||||
|
||||
cli-width@4.1.0: {}
|
||||
|
||||
color-convert@2.0.1:
|
||||
dependencies:
|
||||
color-name: 1.1.4
|
||||
|
||||
color-name@1.1.4: {}
|
||||
|
||||
emoji-regex@8.0.0: {}
|
||||
|
||||
external-editor@3.1.0:
|
||||
dependencies:
|
||||
chardet: 0.7.0
|
||||
iconv-lite: 0.4.24
|
||||
tmp: 0.0.33
|
||||
|
||||
iconv-lite@0.4.24:
|
||||
dependencies:
|
||||
safer-buffer: 2.1.2
|
||||
|
||||
is-fullwidth-code-point@3.0.0: {}
|
||||
|
||||
mute-stream@2.0.0: {}
|
||||
|
||||
os-tmpdir@1.0.2: {}
|
||||
|
||||
safer-buffer@2.1.2: {}
|
||||
|
||||
signal-exit@4.1.0: {}
|
||||
|
||||
string-width@4.2.3:
|
||||
dependencies:
|
||||
emoji-regex: 8.0.0
|
||||
is-fullwidth-code-point: 3.0.0
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
strip-ansi@6.0.1:
|
||||
dependencies:
|
||||
ansi-regex: 5.0.1
|
||||
|
||||
tmp@0.0.33:
|
||||
dependencies:
|
||||
os-tmpdir: 1.0.2
|
||||
|
||||
tslib@2.8.1: {}
|
||||
|
||||
type-fest@0.21.3: {}
|
||||
|
||||
typescript@5.7.2: {}
|
||||
|
||||
undici-types@6.20.0: {}
|
||||
|
||||
wrap-ansi@6.2.0:
|
||||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
yoctocolors-cjs@2.1.2: {}
|
||||
23
tsconfig.json
Normal file
23
tsconfig.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"lib": ["ESNext", "DOM"],
|
||||
"target": "es2022",
|
||||
"module": "ESNext",
|
||||
"moduleDetection": "force",
|
||||
"jsx": "react-jsx",
|
||||
"allowJs": true,
|
||||
|
||||
"moduleResolution": "bundler",
|
||||
"verbatimModuleSyntax": true,
|
||||
"skipLibCheck": true,
|
||||
|
||||
// strictness
|
||||
"strict": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedIndexedAccess": true,
|
||||
"checkJs": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user