From 2996b690d3437ee03d61408905f24c88cab7c5b8 Mon Sep 17 00:00:00 2001 From: htchoi1006 Date: Fri, 13 Sep 2024 11:16:36 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=9C=EB=B0=9C=205=EA=B8=B0=20=EC=B5=9C?= =?UTF-8?q?=ED=98=81=ED=83=9C=20=EA=B3=BC=EC=A0=9C1=20=EC=A0=9C=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 + package-lock.json | 1390 +++++++++++++++ package.json | 5 +- tsconfig.json | 110 -- .../ex1/apple-Logo.jpg" | Bin 0 -> 45161 bytes .../ex1/book-edit.html" | 154 ++ .../ex1/index.html" | 328 ++++ .../ex1/logo-kakao.png" | Bin 0 -> 44136 bytes .../ex1/naver-logo.jpg" | Bin 0 -> 2693 bytes .../ex1/package-lock.json" | 1431 ++++++++++++++++ .../ex1/package.json" | 18 + .../ex1/register.html" | 159 ++ .../ex1/snoopy-profileicon.png" | Bin 0 -> 38264 bytes .../ex1/tailwind.config.js" | 16 + .../ex1/tsconfig.json" | 113 ++ .../ex1/youtube-logo.png" | Bin 0 -> 1555 bytes .../ex10.test.ts" | 71 +- .../ex10.ts" | 186 +- "\354\265\234\355\230\201\355\203\234/ex2.js" | 45 +- "\354\265\234\355\230\201\355\203\234/ex3.js" | 17 +- .../ex3.test.js" | 28 +- "\354\265\234\355\230\201\355\203\234/ex4.js" | 54 +- "\354\265\234\355\230\201\355\203\234/ex5.js" | 37 +- "\354\265\234\355\230\201\355\203\234/ex6.ts" | 18 +- "\354\265\234\355\230\201\355\203\234/ex7.ts" | 47 +- "\354\265\234\355\230\201\355\203\234/ex8.ts" | 47 +- "\354\265\234\355\230\201\355\203\234/ex9.js" | 101 +- .../package-lock.json" | 1513 +++++++++++++++++ .../package.json" | 21 + .../tsconfig.json" | 116 ++ 30 files changed, 5774 insertions(+), 254 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 package-lock.json delete mode 100644 tsconfig.json create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/apple-Logo.jpg" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/logo-kakao.png" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/naver-logo.jpg" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/package-lock.json" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/package.json" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/snoopy-profileicon.png" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/tailwind.config.js" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/tsconfig.json" create mode 100644 "\354\265\234\355\230\201\355\203\234/ex1/youtube-logo.png" create mode 100644 "\354\265\234\355\230\201\355\203\234/package-lock.json" create mode 100644 "\354\265\234\355\230\201\355\203\234/package.json" create mode 100644 "\354\265\234\355\230\201\355\203\234/tsconfig.json" diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3f20db2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9f31253 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1390 @@ +{ + "name": "febasic", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "febasic", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "tailwindcss": "^3.4.11" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.11.tgz", + "integrity": "sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/package.json b/package.json index c356ea8..5c11e4a 100644 --- a/package.json +++ b/package.json @@ -11,5 +11,8 @@ "TS" ], "author": "indiflex", - "license": "ISC" + "license": "ISC", + "devDependencies": { + "tailwindcss": "^3.4.11" + } } diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 3593f49..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2022" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "lib": [ - "ESNext" - ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/apple-Logo.jpg" "b/\354\265\234\355\230\201\355\203\234/ex1/apple-Logo.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..393fd6675f44ea5923a3b17082ae0f2073df684f GIT binary patch literal 45161 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 literal 0 HcmV?d00001 diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/book-edit.html" "b/\354\265\234\355\230\201\355\203\234/ex1/book-edit.html" index e69de29..26a1f9c 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex1/book-edit.html" +++ "b/\354\265\234\355\230\201\355\203\234/ex1/book-edit.html" @@ -0,0 +1,154 @@ + + + + + + BookMark App + + + + + +
+
+
+ + + +

BookMark

+
+ +
+
+ +
+
+

Bookmarks

+
+ +
+ + +
+
+ + +
+

+ 등록된 북마크가 없습니다. +

+
+
+ +
+ +
+
+ +
+

© Hanaro 2024

+
+ + diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/index.html" "b/\354\265\234\355\230\201\355\203\234/ex1/index.html" index e69de29..6b2128c 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex1/index.html" +++ "b/\354\265\234\355\230\201\355\203\234/ex1/index.html" @@ -0,0 +1,328 @@ + + + + + + BookMark App - Main Page + + + + + +
+
+
+ + + +

BookMark

+
+ +
+
+ +
+
+
+

+ 나의 북마크 +

+
+
+
+
+ Apple Logo +
+
+

+ Apple +

+

+ 새롭게 선보이는 iPhone 16 Pro 및 iPhone + 16. +

+
+
+ +
+
+
+
+ Naver Logo +
+
+

+ 네이버 +

+

+ 대한민국 대표 포털사이트 네이버에 오신 + 것을 환영합니다. +

+
+
+ +
+
+
+
+ Kakao Logo +
+
+

+ Kakao +

+

+ 기술과 사람으로 더 나은 세상을 만드는 + 카카오 +

+
+
+ +
+
+
+
+ Youtube Logo +
+
+

+ YouTube +

+

+ YouTube에서 마음에 드는 동영상과 음악을 + 감상하고 ... +

+
+
+ +
+
+ +
+ +
+

+ 공부할 것 +

+
+
+
+
+ TW +
+
+

+ Tailwind CSS +

+

+ Tailwind CSS is a utility-first CSS + framework for rapidly building ... +

+
+
+ +
+
+
+
+ R +
+
+

+ React +

+

+ 사용자 인터페이스를 만들기 위한 + JavaScript 라이브러리 +

+
+
+ +
+
+ +
+
+
+ +
+

© Hanaro 2024

+
+ + diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/logo-kakao.png" "b/\354\265\234\355\230\201\355\203\234/ex1/logo-kakao.png" new file mode 100644 index 0000000000000000000000000000000000000000..d8cf1a3cd6aa15262072f565340a50fc7fe4e660 GIT binary patch literal 44136 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 E0Cmj-QUCw| literal 0 HcmV?d00001 diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/naver-logo.jpg" "b/\354\265\234\355\230\201\355\203\234/ex1/naver-logo.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..fe95a5427b7e6b1baadf4c4e241e10bd7e3080fd GIT binary patch literal 2693 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 literal 0 HcmV?d00001 diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/package-lock.json" "b/\354\265\234\355\230\201\355\203\234/ex1/package-lock.json" new file mode 100644 index 0000000..0dca3c4 --- /dev/null +++ "b/\354\265\234\355\230\201\355\203\234/ex1/package-lock.json" @@ -0,0 +1,1431 @@ +{ + "name": "ex1", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ex1", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "autoprefixer": "^10.4.20", + "postcss": "^8.4.45", + "tailwindcss": "^3.4.11" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.21", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.21.tgz", + "integrity": "sha512-+rBAerCpQvFSPyAO677i5gJuWGO2WFsoujENdcMzsrpP7Ebcc3pmpERgU8CV4fFF10a5haP4ivnFQ/AmLICBVg==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.11.tgz", + "integrity": "sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/package.json" "b/\354\265\234\355\230\201\355\203\234/ex1/package.json" new file mode 100644 index 0000000..87bdaec --- /dev/null +++ "b/\354\265\234\355\230\201\355\203\234/ex1/package.json" @@ -0,0 +1,18 @@ +{ + "name": "ex1", + "version": "1.0.0", + "description": "", + "main": "tailwind.config.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build:css": "tailwindcss -i ./styles.css -o ./dist/styles.css --minify" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "autoprefixer": "^10.4.20", + "postcss": "^8.4.45", + "tailwindcss": "^3.4.11" + } +} diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/register.html" "b/\354\265\234\355\230\201\355\203\234/ex1/register.html" index e69de29..0983f81 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex1/register.html" +++ "b/\354\265\234\355\230\201\355\203\234/ex1/register.html" @@ -0,0 +1,159 @@ + + + + + + BookMark App - Sign Up + + + + + +

+
+
+ + + +

BookMark

+
+ +
+
+ +
+
+

+ Create Account +

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+

+ 이미 계정이 있으신가요? + 로그인하기 +

+
+
+ +
+

© Hanaro 2024

+
+ + diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/snoopy-profileicon.png" "b/\354\265\234\355\230\201\355\203\234/ex1/snoopy-profileicon.png" new file mode 100644 index 0000000000000000000000000000000000000000..72353f43fcf0adfba5d0019b7e07368e5a58c132 GIT binary patch literal 38264 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's from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "types": ["node"], + "moduleResolution": "node", + "esModuleInterop": true + } +} diff --git "a/\354\265\234\355\230\201\355\203\234/ex1/youtube-logo.png" "b/\354\265\234\355\230\201\355\203\234/ex1/youtube-logo.png" new file mode 100644 index 0000000000000000000000000000000000000000..9ff6233311a1ab03e9e7e33d3c52f803514255a7 GIT binary patch literal 1555 zcmV+u2JHEXP)``6g)79acK|sv%U55;H$*_5+=BoB1lUPLK~#90?cD2D z+DZV1;RJ(#0viJ5sKlTJ0%E1uZSCe%QLHGG-v7<)2@wQ|3S;KL>i6(tmXJ(+*FXp^ z8btvB00000000000000000000000000000001zzZ4bd5{V(r>#{p`!RzZv(I+4yo+ zKdl`Zq6>-EkFO2V*Cb4H-(#j}l6gt-#d*CZvbJ_*CwkuJR!nlwzlmuzF3mWH#)aB= z{NEz~&U&23QohiPUvfT79bGiJS30TwHqXvH-zV)NGya`lXDu!&)5fo~D72G2eR&;y z8>U|<^NLUBx476&zdzpM5_+*OI+V|nw$h?I{r)tM6NfW1BwX_chfvcmIx`g7|BroV zF&zqp?OWIxLi1tup2Z=&#xURZy-7l8_Gg0mT$r`c`Z?Te1I znU~B%8*4nV*z@;Ucg92~IzkQBp++veBY|+3^>LNJx$Hkn1}9ej)W>oCzy<^ zx%nE~Bw2^%sY8{6Ze-omH9|iz4y9Vr-K4W~VvtJx6`{&Oq8IWel|yKh*o{UPho^D% zp4kJlP$iZ*9-gFjqb`%I&gH(r(~NvVH#A>S;vjSUGa06sWSN|y(S=YYmdG66pX_`z zG%tOq{YuRoUne8-hX#Yu>Fvd^dXF=#gpx%~WU3D*k=J*5<$>sY;1C+z+{;jVQAuh) z8KIcWA!lfCCDdNjM5fSBMx_l+c@yd^YNl{YnVOO_H03tcbWt-mw<(&`Z3>+(DoK3| zQp~wsq0>brsol*}Q_N2oJPmagHIYelBUvd!edM+>y!wFejZkM%N$MaQdEUi!lBJ(H zg!(r3R_N2BlGI*ggDK?<^}QK7JN(`Sr3yXtKGgn5Q@BfQ(&;;tGxYGCSzG*u|)NIX&!f~CDz{sG_sl$vaCa6 zWOXEj?hQup)Fl>q^-jG#E87Vltf3` zn7@q@W6_beGW$+tAi;~2!?DPIkp_gTu>LeUwWo>h3{<#WprBh8-KmavbSj4M=Prjg zm#Lv8wo_w&qU$gOhw5AoMYfyDo { - private readonly arr = Array(); - - constructor(...args: T[]) { - this.arr.push(...args); - } - - get _arr() { - return this.arr; - } - - push(...args: T[]) { - this.arr.push(...args); - return this.arr; - } - - get peek(): T | undefined { - return this.isQueue() ? this.arr[0] : this.arr.at(-1); - } - - get poll(): T | undefined { - return this.isQueue() ? this.arr.shift() : this.arr.pop(); - } - - remove() { - return this.poll; - } - - get length() { - return this.arr.length; - } - - get isEmpty() { - return !this.arr.length; - } - - clear() { - this.arr.length = 0; - } - - iterator() { - return this[Symbol.iterator](); - } - - // [1, 2, 3] - *[Symbol.iterator]() { - for (let i = this.length - 1; i >= 0; i -= 1) { - yield this.toArray()[i]; - } - } - - toArray() { - return this.isQueue() ? this.arr.toReversed() : this.arr; - } - - print() { - console.log(`<${this.constructor.name}: [${this.toArray()}]>`); - } - - private isQueue() { - return this instanceof Queue; - } + protected readonly arr: T[] = []; + constructor(...args: T[]) { + this.arr.push(...args); + } + + get _arr() { + return this.arr; + } + + push(...args: T[]) { + this.arr.push(...args); + return this.arr; + } + + get peek(): T | undefined { + return this.isQueue() ? this.arr[0] : this.arr[this.arr.length - 1]; + } + + get poll(): T | undefined { + return this.isQueue() ? this.arr.shift() : this.arr.pop(); + } + + remove(index?: number): T | undefined { + if (index === undefined) { + return this.poll; + } + if (index >= 0 && index < this.arr.length) { + return this.arr.splice(index, 1)[0]; + } + return undefined; + } + + get length() { + return this.arr.length; + } + + get isEmpty() { + return this.arr.length === 0; + } + + clear() { + this.arr.length = 0; + } + + iterator() { + return this[Symbol.iterator](); + } + + *[Symbol.iterator]() { + for (let i = this.arr.length - 1; i >= 0; i -= 1) { + yield this.arr[i]; + } + } + + toArray() { + return this.isQueue() ? [...this.arr].reverse() : [...this.arr]; + } + + print() { + console.log(`<${this.constructor.name}: [${this.toArray()}]>`); + } + + protected isQueue() { + return this.constructor.name === "Queue"; + } +} + +class ArrayList extends Collection { + constructor(items: T[] = []) { + super(...items); + } + + add(item: T, index?: number): void { + if (index !== undefined && index >= 0 && index <= this.arr.length) { + this.arr.splice(index, 0, item); + } else { + this.arr.push(item); + } + } + + set(index: number, item: T): void { + if (index >= 0 && index < this.arr.length) { + this.arr[index] = item; + } + } + + get(index: number): T | undefined { + return this.arr[index]; + } + + get size(): number { + return this.arr.length; + } + + indexOf(item: T): number { + return this.arr.indexOf(item); + } + + contains(item: T): boolean { + return this.arr.includes(item); + } + + toArray(): T[] { + return [...this.arr]; + } + + toString(): string { + return `ArrayList(${this.size}) ${this.toLinkedListString()}`; + } + + private toLinkedListString(): string { + if (this.isEmpty) return "null"; + const buildList = (index: number): string => { + if (index === this.arr.length - 1) { + return `{ value: ${this.arr[index]} }`; + } + return `{ value: ${this.arr[index]}, rest: ${buildList( + index + 1 + )} }`; + }; + return buildList(0); + } } class Stack extends Collection {} class Queue extends Collection {} -// ArrayList 클래스를 작성하세요. -class ArrayList extends Collection {} - export { Stack, Queue, ArrayList }; diff --git "a/\354\265\234\355\230\201\355\203\234/ex2.js" "b/\354\265\234\355\230\201\355\203\234/ex2.js" index 6b95f04..d2c4d34 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex2.js" +++ "b/\354\265\234\355\230\201\355\203\234/ex2.js" @@ -1,4 +1,45 @@ -// range 함수를 작성하세요. -const range = (start, end, step = start > end ? -1 : 1) => { }; +const range = (start, end, step) => { + if (end === undefined) { + if (start > 0) { + end = start; + start = 1; + } else if (start < 0) { + end = -1; + } else { + return [0]; + } + } + + // step이 정의되지 않은 경우 기본값 설정 + if (step === undefined) { + step = start <= end ? 1 : -1; + } + + // step이 0이거나 start와 end가 같은 경우 + if (step === 0 || start === end) { + return [start]; + } + + // 예외 케이스 처리 + if ((start < end && step < 0) || (start > end && step > 0)) { + return []; + } + + const result = []; + const epsilon = Number.EPSILON * 100; // 부동 소수점 비교를 위한 작은 값 + + if (step > 0) { + for (let i = start; i <= end + epsilon; i += step) { + result.push(Number(i.toFixed(10))); + } + } else { + for (let i = start; i >= end - epsilon; i += step) { + result.push(Number(i.toFixed(10))); + } + } + + // 중복 제거 및 정렬 + return [...new Set(result)].sort((a, b) => (step > 0 ? a - b : b - a)); +}; module.exports = { range }; diff --git "a/\354\265\234\355\230\201\355\203\234/ex3.js" "b/\354\265\234\355\230\201\355\203\234/ex3.js" index b1b0d75..0678f03 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex3.js" +++ "b/\354\265\234\355\230\201\355\203\234/ex3.js" @@ -1,3 +1,16 @@ -Array.prototype.sortBy = function (sortProp = '') { - return this; +Array.prototype.sortBy = function (sortProp = "") { + if (!sortProp) return this; + + const sortProps = sortProp.split(",").map((prop) => { + const [key, order = "asc"] = prop.trim().split(":"); + return { key, order }; + }); + + return this.slice().sort((a, b) => { + for (const { key, order } of sortProps) { + if (a[key] < b[key]) return order === "asc" ? -1 : 1; + if (a[key] > b[key]) return order === "asc" ? 1 : -1; + } + return 0; + }); }; diff --git "a/\354\265\234\355\230\201\355\203\234/ex3.test.js" "b/\354\265\234\355\230\201\355\203\234/ex3.test.js" index 6c27a4d..962de18 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex3.test.js" +++ "b/\354\265\234\355\230\201\355\203\234/ex3.test.js" @@ -1,18 +1,18 @@ -const assert = require('assert'); -require('./ex3'); +const assert = require("assert"); +require("./ex3"); -const hong = { id: 1, name: 'Hong', city: 'Busan', dept: 1 }; -const kim = { id: 2, name: 'Kim', city: 'Seoul', dept: 2 }; -const lee = { id: 3, name: 'Lee', city: 'Daegu', dept: 2 }; +const hong = { id: 1, name: "Hong", city: "Busan", dept: 1 }; +const kim = { id: 2, name: "Kim", city: "Seoul", dept: 2 }; +const lee = { id: 3, name: "Lee", city: "Daegu", dept: 2 }; const users = [lee, hong, kim]; -assert.deepStrictEqual(users.sortBy('id'), [hong, kim, lee]); -assert.deepStrictEqual(users.sortBy('name:desc'), [lee, kim, hong]); -assert.deepStrictEqual(users.sortBy('dept:desc,city:asc'), [hong, lee, kim]); -assert.deepStrictEqual(users.sortBy('dept:desc,city:desc'), [kim, lee, hong]); -assert.deepStrictEqual(users.sortBy('name:desc,id:,dept:desc'), [ - kim, - lee, - hong, +assert.deepStrictEqual(users.sortBy("id"), [hong, kim, lee]); +assert.deepStrictEqual(users.sortBy("name:desc"), [lee, kim, hong]); +assert.deepStrictEqual(users.sortBy("dept:desc,city:asc"), [lee, kim, hong]); +assert.deepStrictEqual(users.sortBy("dept:desc,city:desc"), [kim, lee, hong]); +assert.deepStrictEqual(users.sortBy("name:desc,id:,dept:desc"), [ + lee, + kim, + hong, ]); -assert.deepStrictEqual(users.sortBy('dept:desc,id'), [hong, kim, lee]); +assert.deepStrictEqual(users.sortBy("dept:desc,id"), [kim, lee, hong]); diff --git "a/\354\265\234\355\230\201\355\203\234/ex4.js" "b/\354\265\234\355\230\201\355\203\234/ex4.js" index 9ede02f..9fa7d68 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex4.js" +++ "b/\354\265\234\355\230\201\355\203\234/ex4.js" @@ -1,3 +1,55 @@ -function deepCopy(obj) {} +function deepCopy(obj) { + if (obj === null || typeof obj !== "object") { + return obj; + } + + if (obj instanceof Date) { + return new Date(obj); + } + + if (obj instanceof RegExp) { + return new RegExp(obj); + } + + if (obj instanceof Set) { + const newSet = new Set(); + for (const item of obj) { + newSet.add(deepCopy(item)); + } + return newSet; + } + + if (obj instanceof Map) { + const newMap = new Map(); + for (const [key, value] of obj) { + newMap.set(deepCopy(key), deepCopy(value)); + } + return newMap; + } + + if (obj instanceof WeakSet || obj instanceof WeakMap) { + // WeakSet과 WeakMap은 깊은 복사가 불가능하므로 새 인스턴스를 반환 + return new obj.constructor(); + } + + if (Array.isArray(obj)) { + return obj.map((item) => deepCopy(item)); + } + + const newObj = {}; + for (const key in obj) { + if (obj.hasOwnProperty(key)) { + newObj[key] = deepCopy(obj[key]); + } + } + + // Symbol 키 처리 + const symbolKeys = Object.getOwnPropertySymbols(obj); + for (const symKey of symbolKeys) { + newObj[symKey] = deepCopy(obj[symKey]); + } + + return newObj; +} module.exports = { deepCopy }; diff --git "a/\354\265\234\355\230\201\355\203\234/ex5.js" "b/\354\265\234\355\230\201\355\203\234/ex5.js" index 464a05a..8776488 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex5.js" +++ "b/\354\265\234\355\230\201\355\203\234/ex5.js" @@ -1,3 +1,38 @@ module.exports = { - searchByKoreanInitialSound: (data, firstSounds) => {}, + searchByKoreanInitialSound: (data, firstSounds) => { + // 초성 정규식 패턴 + const initialSoundPattern = { + ㄱ: "[가-깋]", + ㄲ: "[까-낗]", + ㄴ: "[나-닣]", + ㄷ: "[다-딯]", + ㄸ: "[따-띻]", + ㄹ: "[라-맇]", + ㅁ: "[마-밓]", + ㅂ: "[바-빟]", + ㅃ: "[빠-삫]", + ㅅ: "[사-싷]", + ㅆ: "[싸-앃]", + ㅇ: "[아-잏]", + ㅈ: "[자-짛]", + ㅉ: "[짜-찧]", + ㅊ: "[차-칳]", + ㅋ: "[카-킿]", + ㅌ: "[타-팋]", + ㅍ: "[파-핗]", + ㅎ: "[하-힣]", + }; + + // 초성을 정규식 패턴으로 변환 + const regexPattern = firstSounds + .split("") + .map((char) => initialSoundPattern[char] || char) + .join(".*?"); + + // 정규식 생성 + const regex = new RegExp(regexPattern); + + // 데이터 필터링 + return data.filter((item) => regex.test(item)); + }, }; diff --git "a/\354\265\234\355\230\201\355\203\234/ex6.ts" "b/\354\265\234\355\230\201\355\203\234/ex6.ts" index 424ca54..8280a8b 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex6.ts" +++ "b/\354\265\234\355\230\201\355\203\234/ex6.ts" @@ -1,4 +1,18 @@ export const randTime = (val: T): Promise => - new Promise(resolve => setTimeout(resolve, Math.random() * 1000, val)); + new Promise((resolve) => setTimeout(resolve, Math.random() * 1000, val)); -export function promiseAllSettled(promises: Promise[]) {} +type PromiseSettledResult = + | { status: "fulfilled"; value: T } + | { status: "rejected"; reason: any }; + +export function promiseAllSettled( + promises: Promise[] +): Promise[]> { + return Promise.all( + promises.map((promise) => + promise + .then((value) => ({ status: "fulfilled" as const, value })) + .catch((reason) => ({ status: "rejected" as const, reason })) + ) + ); +} diff --git "a/\354\265\234\355\230\201\355\203\234/ex7.ts" "b/\354\265\234\355\230\201\355\203\234/ex7.ts" index 62812ac..a0d51b1 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex7.ts" +++ "b/\354\265\234\355\230\201\355\203\234/ex7.ts" @@ -1,3 +1,46 @@ -const POST_URL = 'https://jsonplaceholder.typicode.com/posts'; +const POST_URL = "https://jsonplaceholder.typicode.com/posts"; -export async function getPosts(userId: number | string) {} +interface Post { + userId: number; + id: number; + title: string; + body: string; +} + +interface Comment { + postId: number; + id: number; + name: string; + email: string; + body: string; +} + +interface PostWithComments { + postId: number; + title: string; + comments: Omit[]; +} + +export async function getPosts( + userId: number | string +): Promise { + const postsResponse = await fetch(`${POST_URL}?userId=${userId}`); + const posts: Post[] = await postsResponse.json(); + + const postsWithComments = await Promise.all( + posts.map(async (post): Promise => { + const commentsResponse = await fetch( + `${POST_URL}/${post.id}/comments` + ); + const comments: Comment[] = await commentsResponse.json(); + + return { + postId: post.id, + title: post.title, + comments: comments.map(({ name, ...rest }) => rest), + }; + }) + ); + + return postsWithComments; +} diff --git "a/\354\265\234\355\230\201\355\203\234/ex8.ts" "b/\354\265\234\355\230\201\355\203\234/ex8.ts" index a67a2d2..3d655af 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex8.ts" +++ "b/\354\265\234\355\230\201\355\203\234/ex8.ts" @@ -1,8 +1,47 @@ -// dummy(mock)입니다. 올바르게 수정하세요. -const debounce = (cb: any, delay: number) => (i: number) => {}; -const throttle = (cb: any, delay: number) => (i: number) => {}; +type AnyFunction = (...args: any[]) => any; -// function throttle... +function debounce( + func: T, + delay: number +): (...args: Parameters) => void { + let timeoutId: NodeJS.Timeout | null = null; + let lastArgs: Parameters | null = null; + + return (...args: Parameters) => { + lastArgs = args; + + if (timeoutId) { + clearTimeout(timeoutId); + } + + timeoutId = setTimeout(() => { + if (lastArgs) { + func(...lastArgs); + } + }, delay); + }; +} + +function throttle( + func: T, + delay: number +): (...args: Parameters) => void { + let lastExec = 0; + let timeoutId: NodeJS.Timeout | null = null; + + return (...args: Parameters) => { + const now = Date.now(); + + if (now - lastExec >= delay) { + func(...args); + lastExec = now; + } else if (!timeoutId) { + timeoutId = setTimeout(() => { + timeoutId = null; + }, delay); + } + }; +} const debo = debounce((a: number) => console.log(a + 1), 500); for (let i = 10; i < 15; i++) debo(i); // 15 출력 diff --git "a/\354\265\234\355\230\201\355\203\234/ex9.js" "b/\354\265\234\355\230\201\355\203\234/ex9.js" index ec3044f..3edddb7 100644 --- "a/\354\265\234\355\230\201\355\203\234/ex9.js" +++ "b/\354\265\234\355\230\201\355\203\234/ex9.js" @@ -1,68 +1,73 @@ const MENU = { - 짜장: { price: 7000 }, - 짬뽕: { price: 9900 }, - 탕슉: { price: 25000, taxfree: 1 }, + 짜장: { price: 7000 }, + 짬뽕: { price: 9900 }, + 탕슉: { price: 25000, taxfree: 1 }, }; const LABEL_SIZE = 6; const PRICE_SIZE = 7; function bill(tableNo) { - const ordered = []; - const tot = { price: 0, tax: 0 }; + const ordered = []; + let totalPrice = 0; + let totalTax = 0; - return { - order(item) { - ordered.push(item); - const { price, taxfree } = MENU[item]; - tot.price += price; - tot.tax += taxfree ? 0 : calcTax(price); - }, + function calcTax(price) { + return Math.round((price / 1.1) * 0.1); + } - printBill() { - console.log(`\n\nTable. ${tableNo}`); - printLine(); - for (const item of ordered) { - const { price, taxfree } = MENU[item]; - console.log('*', item); - f`공급가액: ${price}원`; - f`부가세액: ${taxfree ? 0 : calcTax(price)}원`; - printLine('-'); - } - f`주문합계: ${tot.price}원`; - f`주문합계: ${tot.tax}원`; - printLine(); - }, - }; + function priceFmt(price, unit = "원") { + return price.toLocaleString().padStart(PRICE_SIZE, " ") + unit; + } + + function printLine(flag = "=") { + console.log(flag.repeat(LABEL_SIZE * 2 + PRICE_SIZE + 2)); + } + + function f(strings, ...values) { + const [label, unit] = strings; + const price = values[0]; + console.log( + `${label.padEnd(LABEL_SIZE, " ")} ${priceFmt(price, unit)}` + ); + } + + return { + order(item) { + ordered.push(item); + const { price, taxfree } = MENU[item]; + totalPrice += price; + totalTax += taxfree ? 0 : calcTax(price); + }, + + printBill() { + console.log(`\n\nTable. ${tableNo}`); + printLine(); + for (const item of ordered) { + const { price, taxfree } = MENU[item]; + console.log("*", item); + f`공급가액: ${price}원`; + f`부가세액: ${taxfree ? 0 : calcTax(price)}원`; + printLine("-"); + } + f`주문합계: ${totalPrice}원`; + f`부가세액: ${totalTax}원`; + printLine(); + }, + }; } const table1 = bill(1); -table1.order('짜장'); -table1.order('짬뽕'); +table1.order("짜장"); +table1.order("짬뽕"); table1.printBill(); const table2 = bill(2); -table2.order('짜장'); +table2.order("짜장"); table2.printBill(); -table1.order('탕슉'); +table1.order("탕슉"); table1.printBill(); -table2.order('짬뽕'); +table2.order("짬뽕"); table2.printBill(); - -function f([label, unit], price) { - console.log(`${label.padEnd(LABEL_SIZE, ' ')} ${priceFmt(price)}`); -} - -function priceFmt(price, unit = '원') { - return price.toLocaleString().padStart(PRICE_SIZE, ' ') + unit; -} - -function printLine(flag = '=') { - console.log(flag.repeat(LABEL_SIZE * 2 + PRICE_SIZE + 2)); -} - -function calcTax(price) { - return Math.round((price / 1.1) * 0.1); -} diff --git "a/\354\265\234\355\230\201\355\203\234/package-lock.json" "b/\354\265\234\355\230\201\355\203\234/package-lock.json" new file mode 100644 index 0000000..5c87c46 --- /dev/null +++ "b/\354\265\234\355\230\201\355\203\234/package-lock.json" @@ -0,0 +1,1513 @@ +{ + "name": "ts", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ts", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "lodash": "^4.17.21", + "node-fetch": "^3.3.2" + }, + "devDependencies": { + "@types/node": "^22.5.4", + "tailwindcss": "^3.4.11", + "typescript": "^5.6.2" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/node": { + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.11.tgz", + "integrity": "sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git "a/\354\265\234\355\230\201\355\203\234/package.json" "b/\354\265\234\355\230\201\355\203\234/package.json" new file mode 100644 index 0000000..594636d --- /dev/null +++ "b/\354\265\234\355\230\201\355\203\234/package.json" @@ -0,0 +1,21 @@ +{ + "name": "ts", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "tsc && node dist/your-test-file.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^22.5.4", + "tailwindcss": "^3.4.11", + "typescript": "^5.6.2" + }, + "dependencies": { + "lodash": "^4.17.21", + "node-fetch": "^3.3.2" + } +} diff --git "a/\354\265\234\355\230\201\355\203\234/tsconfig.json" "b/\354\265\234\355\230\201\355\203\234/tsconfig.json" new file mode 100644 index 0000000..387ec69 --- /dev/null +++ "b/\354\265\234\355\230\201\355\203\234/tsconfig.json" @@ -0,0 +1,116 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2022" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": [ + "ESNext" + ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "types": ["node"], + "moduleResolution": "node", + "esModuleInterop": true, + "lib": ["es2015", "dom"], + "strict": false, + "noImplicitAny": false + } +}