diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 75ce8a9..92c8ebe 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/Dockerfile b/Dockerfile index 262f6ff..5834ecf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,20 +17,18 @@ COPY tsconfig.json ./ COPY prisma ./prisma COPY src ./src -RUN yarn prisma generate && yarn build +RUN yarn prisma generate # ── Stage 2: runtime ─────────────────────────────────────────────────────────── FROM node:22-slim AS runner WORKDIR /app -RUN yarn prisma migrate deploy - RUN corepack enable COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./dist +COPY --from=builder /app/src ./src COPY --from=builder /app/prisma ./prisma -COPY package.json yarn.lock .yarnrc.yml ./ +COPY package.json yarn.lock .yarnrc.yml tsconfig.json ./ # install Chromium + all system dependencies for Playwright RUN npx playwright install --with-deps chromium @@ -43,4 +41,4 @@ ENV NODE_ENV=production VOLUME ["/data"] # apply pending migrations then start the bot -CMD ["sh", "-c", "npx prisma migrate deploy && node dist/index.js"] +CMD ["sh", "-c", "npx prisma migrate deploy && npx tsx src/index.ts"] diff --git a/README.md b/README.md index 069fb47..1d603fb 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,40 @@ Resume — текст резюме, привязан к пользоват Settings — searchQuery, maxApplies ``` -## Запуск +## Docker + +### Сборка образа + +```bash +docker build -t oscr-test-bot . +``` + +### Запуск контейнера + +Создай файл `.env.docker`: + +``` +DATABASE_URL=file:/data/dev.db +TG_BOT_TOKEN=your_token +GROQ_API_KEY=your_key +OPENROUTER_API_KEY=your_key +``` + +Запуск (Linux/Mac): + +```bash +docker run --rm --env-file .env.docker -v $(pwd)/data:/data oscr-test-bot +``` + +Запуск (Windows PowerShell): + +```powershell +docker run --rm --env-file .env.docker -v //c/MyApps/oscr-test-bot/data:/data oscr-test-bot +``` + +SQLite база данных сохраняется в папку `data/` и переживает перезапуски контейнера. + +## Запуск локально ```bash # 1. Установить зависимости diff --git a/data/dev.db b/data/dev.db new file mode 100644 index 0000000..d85727d Binary files /dev/null and b/data/dev.db differ diff --git a/package.json b/package.json index 868141b..9f259b3 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "tsx watch --env-file=.env src/index.ts", - "build": "tsc", + "build": "tsc && tsc-alias", "start": "node --env-file=.env dist/index.js", "db-view": "yarn prisma studio", "db:deploy": "npx prisma migrate deploy && npx prisma generate", @@ -35,6 +35,7 @@ "@types/node-telegram-bot-api": "^0.64.14", "eslint": "^9.18.0", "ts-node": "^10.9.2", + "tsc-alias": "^1.8.17", "tsx": "^4.21.0", "typescript": "^6.0.3" } diff --git a/src/hh/bot-commands.ts b/src/hh/bot-commands.ts index bdf2db8..994b02d 100644 --- a/src/hh/bot-commands.ts +++ b/src/hh/bot-commands.ts @@ -3,7 +3,7 @@ import bot from '@bot' import prisma from '@prisma' import cron, { type ScheduledTask } from 'node-cron' import { applyToJobs, checkIsAuth, listResumes, login, saveResume } from './scraper.js' -import { BACK_MARKUP, createStatusReporter, escapeHtml, LOGIN_MARKUP, MAIN_MARKUP, showResult } from './ui.js' +import { BACK_MARKUP, createStatusReporter, escapeHtml, LOGIN_MARKUP, MAIN_MARKUP, safeEdit, showResult } from './ui.js' interface UserState { autoCron: ScheduledTask | null @@ -43,7 +43,7 @@ async function showMenu(chatId: number, messageId?: number | null): Promise { const state = getState(chatId) state.pendingResumes = resumes - await bot.editMessageText('📄 Выбери резюме:', { + await safeEdit('📄 Выбери резюме:', { chat_id: chatId, message_id: messageId, reply_markup: { @@ -241,7 +241,7 @@ export function registerHHCommands() { const text = resume.data.length > MAX ? `${resume.data.slice(0, MAX)}\n\n… (текст обрезан)` : resume.data - await bot.editMessageText( + await safeEdit( `📋 Твоё резюме:\n ${resume.title}\n
${escapeHtml(text)}
`, { chat_id: chatId, @@ -340,7 +340,7 @@ export function registerHHCommands() { } const lines = ['🚫 Вакансии с опросником (бот не может откликнуться):', ''] skipped.forEach(v => lines.push(`• ${escapeHtml(v.title)}`)) - await bot.editMessageText(lines.join('\n'), { + await safeEdit(lines.join('\n'), { chat_id: chatId, message_id: messageId, parse_mode: 'HTML', @@ -351,7 +351,7 @@ export function registerHHCommands() { } case 'hh_resume_list': { - await bot.editMessageText('🔄 Загружаю список резюме...', { + await safeEdit('🔄 Загружаю список резюме...', { chat_id: chatId, message_id: messageId, reply_markup: { inline_keyboard: [] }, @@ -361,7 +361,7 @@ export function registerHHCommands() { await showResult(chatId, messageId, '⚠️ Резюме не найдены. Создайте резюме на hh.ru') } else if (resumes.length === 1) { - await bot.editMessageText('🔄 Сохраняю резюме...', { + await safeEdit('🔄 Сохраняю резюме...', { chat_id: chatId, message_id: messageId, reply_markup: { inline_keyboard: [] }, @@ -384,7 +384,7 @@ export function registerHHCommands() { await showResult(chatId, messageId, '❌ Резюме не найдено, попробуйте снова') break } - await bot.editMessageText('🔄 Сохраняю резюме...', { + await safeEdit('🔄 Сохраняю резюме...', { chat_id: chatId, message_id: messageId, reply_markup: { inline_keyboard: [] }, diff --git a/src/hh/ui.ts b/src/hh/ui.ts index ecf5c8d..d93196b 100644 --- a/src/hh/ui.ts +++ b/src/hh/ui.ts @@ -37,8 +37,19 @@ export function escapeHtml(text: string): string { return text.replace(/&/g, '&').replace(//g, '>') } +export async function safeEdit( + text: string, + options: Parameters[1], +): Promise { + await bot.editMessageText(text, options).catch((e: unknown) => { + if (e instanceof Error && e.message.includes('message is not modified')) + return + throw e + }) +} + export async function showResult(chatId: number, messageId: number, text: string): Promise { - await bot.editMessageText(text, { + await safeEdit(text, { chat_id: chatId, message_id: messageId, reply_markup: BACK_MARKUP, diff --git a/src/index.ts b/src/index.ts index 3a922c4..7dbe4ad 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,11 @@ import bot from '@bot' import prisma from '@prisma' + +process.on('unhandledRejection', (reason) => { + const msg = reason instanceof Error ? reason.message : String(reason) + console.error('[unhandledRejection]', msg) +}) import { registerHHCommands, triggerHHStart } from './hh/bot-commands.js' registerHHCommands() diff --git a/tsconfig.json b/tsconfig.json index f1514a9..f8ae66d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "baseUrl": ".", + "ignoreDeprecations": "6.0", "paths": { "@/*": ["src/*"], "@bot": ["src/bot-singleton"], @@ -11,6 +12,7 @@ "outDir": "dist", "rootDir": "src", "strict": true, + "skipLibCheck": true, "esModuleInterop": true } } diff --git a/yarn.lock b/yarn.lock index b0f14ec..25e4524 100644 --- a/yarn.lock +++ b/yarn.lock @@ -670,6 +670,33 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + "@opencode-ai/sdk@npm:^1.15.10": version: 1.15.10 resolution: "@opencode-ai/sdk@npm:1.15.10" @@ -1294,6 +1321,16 @@ __metadata: languageName: node linkType: hard +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + "are-docs-informative@npm:^0.0.2": version: 0.0.2 resolution: "are-docs-informative@npm:0.0.2" @@ -1332,6 +1369,13 @@ __metadata: languageName: node linkType: hard +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + "array.prototype.findindex@npm:^2.0.2": version: 2.2.4 resolution: "array.prototype.findindex@npm:2.2.4" @@ -1453,6 +1497,13 @@ __metadata: languageName: node linkType: hard +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + "bl@npm:^1.2.3": version: 1.2.3 resolution: "bl@npm:1.2.3" @@ -1516,6 +1567,15 @@ __metadata: languageName: node linkType: hard +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + "browserslist@npm:^4.28.1": version: 4.28.2 resolution: "browserslist@npm:4.28.2" @@ -1647,6 +1707,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + "chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" @@ -1738,6 +1817,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^9.0.0": + version: 9.5.0 + resolution: "commander@npm:9.5.0" + checksum: 10c0/5f7784fbda2aaec39e89eb46f06a999e00224b3763dc65976e05929ec486e174fe9aac2655f03ba6a5e83875bd173be5283dc19309b7c65954701c02025b3c1d + languageName: node + linkType: hard + "comment-parser@npm:1.4.1": version: 1.4.1 resolution: "comment-parser@npm:1.4.1" @@ -2082,6 +2168,15 @@ __metadata: languageName: node linkType: hard +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + "dotenv@npm:^16.6.1": version: 16.6.1 resolution: "dotenv@npm:16.6.1" @@ -3021,6 +3116,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.9": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -3035,6 +3143,15 @@ __metadata: languageName: node linkType: hard +"fastq@npm:^1.6.0": + version: 1.20.1 + resolution: "fastq@npm:1.20.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e + languageName: node + linkType: hard + "fault@npm:^2.0.0": version: 2.0.1 resolution: "fault@npm:2.0.1" @@ -3072,6 +3189,15 @@ __metadata: languageName: node linkType: hard +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + "finalhandler@npm:~1.3.1": version: 1.3.2 resolution: "finalhandler@npm:1.3.2" @@ -3198,7 +3324,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.3": +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -3217,7 +3343,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -3310,7 +3436,7 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.10.1, get-tsconfig@npm:^4.7.5, get-tsconfig@npm:^4.8.1": +"get-tsconfig@npm:^4.10.0, get-tsconfig@npm:^4.10.1, get-tsconfig@npm:^4.7.5, get-tsconfig@npm:^4.8.1": version: 4.14.0 resolution: "get-tsconfig@npm:4.14.0" dependencies: @@ -3351,6 +3477,15 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + "glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" @@ -3393,6 +3528,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^11.0.4": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -3662,6 +3811,15 @@ __metadata: languageName: node linkType: hard +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + "is-boolean-object@npm:^1.2.1": version: 1.2.2 resolution: "is-boolean-object@npm:1.2.2" @@ -3754,7 +3912,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -3787,6 +3945,13 @@ __metadata: languageName: node linkType: hard +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + "is-regex@npm:^1.2.1": version: 1.2.1 resolution: "is-regex@npm:1.2.1" @@ -4329,6 +4494,13 @@ __metadata: languageName: node linkType: hard +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" @@ -4677,6 +4849,16 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -4769,6 +4951,13 @@ __metadata: languageName: node linkType: hard +"mylas@npm:^2.1.9": + version: 2.1.14 + resolution: "mylas@npm:2.1.14" + checksum: 10c0/2f30cee712c497a8f5c2a7218b6644efd67babf9fa7f8442f8536e2c95e4fded44b7117aea61cb1616c8ce0cdcfd9de329d6fa16d81818141267942b4eadb711 + languageName: node + linkType: hard + "napi-postinstall@npm:^0.3.0": version: 0.3.4 resolution: "napi-postinstall@npm:0.3.4" @@ -4889,6 +5078,13 @@ __metadata: languageName: node linkType: hard +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + "nth-check@npm:^2.1.1": version: 2.1.1 resolution: "nth-check@npm:2.1.1" @@ -5025,6 +5221,7 @@ __metadata: playwright: "npm:^1.59.1" prisma: "npm:6" ts-node: "npm:^10.9.2" + tsc-alias: "npm:^1.8.17" tsx: "npm:^4.21.0" typescript: "npm:^6.0.3" languageName: unknown @@ -5170,6 +5367,13 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + "pathe@npm:^2.0.0, pathe@npm:^2.0.1, pathe@npm:^2.0.3": version: 2.0.3 resolution: "pathe@npm:2.0.3" @@ -5198,6 +5402,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": + version: 2.3.2 + resolution: "picomatch@npm:2.3.2" + checksum: 10c0/a554d1709e59be97d1acb9eaedbbc700a5c03dbd4579807baed95100b00420bc729335440ef15004ae2378984e2487a7c1cebd743cfdb72b6fa9ab69223c0d61 + languageName: node + linkType: hard + "picomatch@npm:^4.0.2, picomatch@npm:^4.0.4": version: 4.0.4 resolution: "picomatch@npm:4.0.4" @@ -5251,6 +5462,15 @@ __metadata: languageName: node linkType: hard +"plimit-lit@npm:^1.2.6": + version: 1.6.1 + resolution: "plimit-lit@npm:1.6.1" + dependencies: + queue-lit: "npm:^1.5.1" + checksum: 10c0/af5d351bb55afe1eaa84b27c2b329699e150e4cf70464f3d474f5eabe9bdb9f48ed378ada1498d3b893f68ee7da2423ba6d9a4d88b1429d3b0aea22afcf5292b + languageName: node + linkType: hard + "pluralize@npm:^8.0.0": version: 8.0.0 resolution: "pluralize@npm:8.0.0" @@ -5388,6 +5608,20 @@ __metadata: languageName: node linkType: hard +"queue-lit@npm:^1.5.1": + version: 1.5.2 + resolution: "queue-lit@npm:1.5.2" + checksum: 10c0/8aa838b2c939aeaa6cd272b5b6b172379a3fa1d9193b2a3e687643c68c0efee3cd3493af4f1f8a11ff79b8207e4d00cc5d0b072f6e4bbeaaa27ee01f567ec4ac + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + "radix3@npm:^1.1.2": version: 1.1.2 resolution: "radix3@npm:1.1.2" @@ -5469,6 +5703,15 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + "redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": version: 1.2.0 resolution: "redis-errors@npm:1.2.0" @@ -5621,6 +5864,22 @@ __metadata: languageName: node linkType: hard +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + "safe-array-concat@npm:^1.1.3": version: 1.1.4 resolution: "safe-array-concat@npm:1.1.4" @@ -5853,6 +6112,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + "spdx-correct@npm:^3.0.0": version: 3.2.0 resolution: "spdx-correct@npm:3.2.0" @@ -6119,6 +6385,15 @@ __metadata: languageName: node linkType: hard +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + "toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" @@ -6214,6 +6489,23 @@ __metadata: languageName: node linkType: hard +"tsc-alias@npm:^1.8.17": + version: 1.8.17 + resolution: "tsc-alias@npm:1.8.17" + dependencies: + chokidar: "npm:^3.5.3" + commander: "npm:^9.0.0" + get-tsconfig: "npm:^4.10.0" + globby: "npm:^11.0.4" + mylas: "npm:^2.1.9" + normalize-path: "npm:^3.0.0" + plimit-lit: "npm:^1.2.6" + bin: + tsc-alias: dist/bin/index.js + checksum: 10c0/024301d25e48917da2b11bd92683fdf62c9c9603eb711937f0aa8e24df0d988290a4f5e94ac91b77601ea36335bf4ab5637944c47755df82a2a0cf95720d5c0f + languageName: node + linkType: hard + "tslib@npm:^2.4.0": version: 2.8.1 resolution: "tslib@npm:2.8.1"