From 0e4521a50405d0052db630f76b7f004e30e02185 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:02:15 +0300 Subject: [PATCH 1/8] Update dependencies --- package-lock.json | 1921 ++++++++++++++++++++++----------------------- package.json | 11 +- yarn.lock | 581 +++++++------- 3 files changed, 1225 insertions(+), 1288 deletions(-) diff --git a/package-lock.json b/package-lock.json index 96e7dc1c..70798455 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@alex_neo/jest-expect-message": "^1.0.5", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.17.0", - "@freearhey/core": "^0.5.1", + "@freearhey/core": "^0.7.0", "@ntlab/sfetch": "^1.2.0", "@octokit/core": "^6.1.3", "@octokit/plugin-paginate-rest": "^11.3.6", @@ -48,7 +48,7 @@ "globals": "^15.14.0", "husky": "^9.1.7", "iconv-lite": "^0.4.24", - "inquirer": "^8.2.6", + "inquirer": "^12.5.0", "jest": "^29.7.0", "jest-offline": "^1.0.1", "langs": "^2.0.0", @@ -61,7 +61,7 @@ "node-gzip": "^1.1.2", "numeral": "^2.0.6", "pako": "^2.1.0", - "parse-duration": "^1.0.0", + "parse-duration": "^2.1.3", "pdf-parse": "^1.1.1", "pm2": "^5.4.3", "readline": "^1.3.0", @@ -106,73 +106,18 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", @@ -338,17 +283,17 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "engines": { "node": ">=6.9.0" } @@ -362,91 +307,24 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dependencies": { + "@babel/types": "^7.27.0" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -618,13 +496,13 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" @@ -659,13 +537,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -719,9 +596,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", "cpu": [ "ppc64" ], @@ -734,9 +611,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", "cpu": [ "arm" ], @@ -749,9 +626,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", "cpu": [ "arm64" ], @@ -764,9 +641,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", "cpu": [ "x64" ], @@ -779,9 +656,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", "cpu": [ "arm64" ], @@ -794,9 +671,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", "cpu": [ "x64" ], @@ -809,9 +686,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", "cpu": [ "arm64" ], @@ -824,9 +701,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", "cpu": [ "x64" ], @@ -839,9 +716,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", "cpu": [ "arm" ], @@ -854,9 +731,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", "cpu": [ "arm64" ], @@ -869,9 +746,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", "cpu": [ "ia32" ], @@ -884,9 +761,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", "cpu": [ "loong64" ], @@ -899,9 +776,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", "cpu": [ "mips64el" ], @@ -914,9 +791,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", "cpu": [ "ppc64" ], @@ -929,9 +806,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", "cpu": [ "riscv64" ], @@ -944,9 +821,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", "cpu": [ "s390x" ], @@ -959,9 +836,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", "cpu": [ "x64" ], @@ -973,10 +850,25 @@ "node": ">=18" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", "cpu": [ "x64" ], @@ -989,9 +881,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", "cpu": [ "arm64" ], @@ -1004,9 +896,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", "cpu": [ "x64" ], @@ -1019,9 +911,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", "cpu": [ "x64" ], @@ -1034,9 +926,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", "cpu": [ "arm64" ], @@ -1049,9 +941,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", "cpu": [ "ia32" ], @@ -1064,9 +956,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "cpu": [ "x64" ], @@ -1204,9 +1096,9 @@ } }, "node_modules/@freearhey/core": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.5.1.tgz", - "integrity": "sha512-UDKIOyrtcUXaiAeIvjNFTI6DlempiOQaRB83CqHNF1VPRHNBiNhGhERWyInHE2cjLp/cc0CA/IykOYS39kBK7Q==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.7.0.tgz", + "integrity": "sha512-HXkKPYGY7ife7JAc1q/Qxzy0WUdSnyt3rHThCShZHgnH3rz0tpkjHFW7LNegB3he0IKn/Zc95/YSOQ97Fq8ctA==", "dependencies": { "@types/fs-extra": "^11.0.2", "@types/lodash": "^4.14.198", @@ -1343,6 +1235,328 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@inquirer/checkbox": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.4.tgz", + "integrity": "sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz", + "integrity": "sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.1.9", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz", + "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==", + "dependencies": { + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@inquirer/core/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/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.9.tgz", + "integrity": "sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.11.tgz", + "integrity": "sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz", + "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.8.tgz", + "integrity": "sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.11.tgz", + "integrity": "sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.11.tgz", + "integrity": "sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.0.tgz", + "integrity": "sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==", + "dependencies": { + "@inquirer/checkbox": "^4.1.4", + "@inquirer/confirm": "^5.1.8", + "@inquirer/editor": "^4.2.9", + "@inquirer/expand": "^4.0.11", + "@inquirer/input": "^4.1.8", + "@inquirer/number": "^3.0.11", + "@inquirer/password": "^4.0.11", + "@inquirer/rawlist": "^4.0.11", + "@inquirer/search": "^3.0.11", + "@inquirer/select": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.11.tgz", + "integrity": "sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.11.tgz", + "integrity": "sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.0.tgz", + "integrity": "sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==", + "dependencies": { + "@inquirer/core": "^10.1.9", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz", + "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1897,9 +2111,9 @@ } }, "node_modules/@octokit/endpoint": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz", - "integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "dependencies": { "@octokit/types": "^13.6.2", "universal-user-agent": "^7.0.2" @@ -1922,16 +2136,16 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.6.tgz", - "integrity": "sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz", + "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==", "dependencies": { - "@octokit/types": "^13.6.2" + "@octokit/types": "^13.10.0" }, "engines": { "node": ">= 18" @@ -1955,12 +2169,12 @@ } }, "node_modules/@octokit/request": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz", - "integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" @@ -1970,9 +2184,9 @@ } }, "node_modules/@octokit/request-error": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", - "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "dependencies": { "@octokit/types": "^13.6.2" }, @@ -1981,11 +2195,11 @@ } }, "node_modules/@octokit/types": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", - "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", "dependencies": { - "@octokit/openapi-types": "^22.2.0" + "@octokit/openapi-types": "^24.2.0" } }, "node_modules/@pkgjs/parseargs": { @@ -3212,9 +3426,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -3356,25 +3570,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/basic-ftp": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", @@ -3399,16 +3594,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/blessed": { "version": "0.1.81", "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", @@ -3616,29 +3801,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -3894,17 +4056,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cli-progress": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", @@ -3916,17 +4067,6 @@ "node": ">=4" } }, - "node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-tableau": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", @@ -3951,11 +4091,11 @@ } }, "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/clipboardy": { @@ -3984,14 +4124,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "engines": { - "node": ">=0.8" - } - }, "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -4355,17 +4487,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -4611,9 +4732,9 @@ } }, "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -4622,30 +4743,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, "node_modules/escalade": { @@ -5084,20 +5206,6 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -5542,25 +5650,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -5643,41 +5732,36 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.5.0.tgz", + "integrity": "sha512-aiBBq5aKF1k87MTxXDylLfwpRwToShiHrSv4EmB07EYyLgmnjEz5B3rn0aGw1X3JA/64Ngf2T54oGwc+BCsPIQ==", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" + "@inquirer/core": "^10.1.9", + "@inquirer/prompts": "^7.4.0", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "mute-stream": "^2.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/inquirer/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/ip-address": { @@ -5806,14 +5890,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6838,32 +6914,6 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/logform": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", @@ -7268,39 +7318,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -7411,9 +7428,9 @@ } }, "node_modules/parse-duration": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.2.tgz", - "integrity": "sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-2.1.3.tgz", + "integrity": "sha512-MtbharL7Bets65qDBXuDOHHWyY1BxTJZmJ/xGmS90iEbKE0gZ6yZpZtCda7O79GeOi/f0NwBaplIuReExIoVsw==" }, "node_modules/parse-json": { "version": "5.2.0", @@ -8223,18 +8240,6 @@ "lowercase-keys": "^2.0.0" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -8245,9 +8250,9 @@ } }, "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "engines": { "node": ">=0.12.0" } @@ -8303,9 +8308,9 @@ ] }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dependencies": { "tslib": "^2.1.0" } @@ -8870,11 +8875,6 @@ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, "node_modules/tldts": { "version": "6.1.68", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.68.tgz", @@ -8907,14 +8907,6 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9025,11 +9017,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tsx": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", - "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "dependencies": { - "esbuild": "~0.23.0", + "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -9245,14 +9237,6 @@ "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -9509,6 +9493,17 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -9532,58 +9527,13 @@ } }, "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { @@ -9710,14 +9660,14 @@ } }, "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" }, "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" }, "@babel/helper-validator-option": { "version": "7.22.5", @@ -9725,75 +9675,21 @@ "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==" }, "@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - } - }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" } }, "@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==" + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "requires": { + "@babel/types": "^7.27.0" + } }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -9908,13 +9804,13 @@ } }, "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" } }, "@babel/traverse": { @@ -9942,13 +9838,12 @@ } }, "@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" } }, "@bcoe/v8-coverage": { @@ -9995,147 +9890,153 @@ } }, "@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", "optional": true }, "@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", "optional": true }, "@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", "optional": true }, "@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", "optional": true }, "@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", "optional": true }, "@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", "optional": true }, "@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", "optional": true }, "@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", "optional": true }, "@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", "optional": true }, "@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", "optional": true }, "@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", "optional": true }, "@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", "optional": true }, "@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", "optional": true }, "@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", "optional": true }, "@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", "optional": true }, "@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "optional": true }, "@eslint-community/eslint-utils": { @@ -10224,9 +10125,9 @@ } }, "@freearhey/core": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.5.1.tgz", - "integrity": "sha512-UDKIOyrtcUXaiAeIvjNFTI6DlempiOQaRB83CqHNF1VPRHNBiNhGhERWyInHE2cjLp/cc0CA/IykOYS39kBK7Q==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.7.0.tgz", + "integrity": "sha512-HXkKPYGY7ife7JAc1q/Qxzy0WUdSnyt3rHThCShZHgnH3rz0tpkjHFW7LNegB3he0IKn/Zc95/YSOQ97Fq8ctA==", "requires": { "@types/fs-extra": "^11.0.2", "@types/lodash": "^4.14.198", @@ -10319,6 +10220,173 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==" }, + "@inquirer/checkbox": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.4.tgz", + "integrity": "sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/confirm": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz", + "integrity": "sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5" + } + }, + "@inquirer/core": { + "version": "10.1.9", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz", + "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==", + "requires": { + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "dependencies": { + "mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==" + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "@inquirer/editor": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.9.tgz", + "integrity": "sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "external-editor": "^3.1.0" + } + }, + "@inquirer/expand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.11.tgz", + "integrity": "sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/figures": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz", + "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==" + }, + "@inquirer/input": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.8.tgz", + "integrity": "sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5" + } + }, + "@inquirer/number": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.11.tgz", + "integrity": "sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5" + } + }, + "@inquirer/password": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.11.tgz", + "integrity": "sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2" + } + }, + "@inquirer/prompts": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.0.tgz", + "integrity": "sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==", + "requires": { + "@inquirer/checkbox": "^4.1.4", + "@inquirer/confirm": "^5.1.8", + "@inquirer/editor": "^4.2.9", + "@inquirer/expand": "^4.0.11", + "@inquirer/input": "^4.1.8", + "@inquirer/number": "^3.0.11", + "@inquirer/password": "^4.0.11", + "@inquirer/rawlist": "^4.0.11", + "@inquirer/search": "^3.0.11", + "@inquirer/select": "^4.1.0" + } + }, + "@inquirer/rawlist": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.11.tgz", + "integrity": "sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/search": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.11.tgz", + "integrity": "sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/select": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.0.tgz", + "integrity": "sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==", + "requires": { + "@inquirer/core": "^10.1.9", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/type": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz", + "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==", + "requires": {} + }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -10740,9 +10808,9 @@ } }, "@octokit/endpoint": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz", - "integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "requires": { "@octokit/types": "^13.6.2", "universal-user-agent": "^7.0.2" @@ -10759,16 +10827,16 @@ } }, "@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==" }, "@octokit/plugin-paginate-rest": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.6.tgz", - "integrity": "sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz", + "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==", "requires": { - "@octokit/types": "^13.6.2" + "@octokit/types": "^13.10.0" } }, "@octokit/plugin-rest-endpoint-methods": { @@ -10780,31 +10848,31 @@ } }, "@octokit/request": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz", - "integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "requires": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "@octokit/request-error": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", - "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "requires": { "@octokit/types": "^13.6.2" } }, "@octokit/types": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", - "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", "requires": { - "@octokit/openapi-types": "^22.2.0" + "@octokit/openapi-types": "^24.2.0" } }, "@pkgjs/parseargs": { @@ -11683,9 +11751,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "requires": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -11790,11 +11858,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, "basic-ftp": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", @@ -11810,16 +11873,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "blessed": { "version": "0.1.81", "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", @@ -11946,15 +11999,6 @@ "node-int64": "^0.4.0" } }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -12128,14 +12172,6 @@ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==" }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, "cli-progress": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", @@ -12144,11 +12180,6 @@ "string-width": "^4.2.3" } }, - "cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==" - }, "cli-tableau": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", @@ -12169,9 +12200,9 @@ } }, "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==" }, "clipboardy": { "version": "3.0.0", @@ -12193,11 +12224,6 @@ "wrap-ansi": "^7.0.0" } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -12484,14 +12510,6 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, - "defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "requires": { - "clone": "^1.0.2" - } - }, "defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -12676,34 +12694,35 @@ } }, "esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "requires": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, "escalade": { @@ -13007,14 +13026,6 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -13310,11 +13321,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -13375,36 +13381,23 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.5.0.tgz", + "integrity": "sha512-aiBBq5aKF1k87MTxXDylLfwpRwToShiHrSv4EmB07EYyLgmnjEz5B3rn0aGw1X3JA/64Ngf2T54oGwc+BCsPIQ==", "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" + "@inquirer/core": "^10.1.9", + "@inquirer/prompts": "^7.4.0", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "mute-stream": "^2.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.2" }, "dependencies": { - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } + "mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==" } } }, @@ -13483,11 +13476,6 @@ "is-extglob": "^2.1.1" } }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -14272,22 +14260,6 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - } - } - }, "logform": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", @@ -14605,29 +14577,6 @@ "type-check": "^0.4.0" } }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - } - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -14707,9 +14656,9 @@ } }, "parse-duration": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.2.tgz", - "integrity": "sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-2.1.3.tgz", + "integrity": "sha512-MtbharL7Bets65qDBXuDOHHWyY1BxTJZmJ/xGmS90iEbKE0gZ6yZpZtCda7O79GeOi/f0NwBaplIuReExIoVsw==" }, "parse-json": { "version": "5.2.0", @@ -15304,24 +15253,15 @@ "lowercase-keys": "^2.0.0" } }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==" }, "run-parallel": { "version": "1.2.0", @@ -15342,9 +15282,9 @@ "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==" }, "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "requires": { "tslib": "^2.1.0" } @@ -15755,11 +15695,6 @@ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, "tldts": { "version": "6.1.68", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.68.tgz", @@ -15786,11 +15721,6 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -15863,11 +15793,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "tsx": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", - "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "requires": { - "esbuild": "~0.23.0", + "esbuild": "~0.25.0", "fsevents": "~2.3.3", "get-tsconfig": "^4.7.5" } @@ -16022,14 +15952,6 @@ "makeerror": "1.0.12" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "requires": { - "defaults": "^1.0.3" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -16203,6 +16125,11 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + }, + "yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==" } } } diff --git a/package.json b/package.json index 18d89625..28a940f6 100644 --- a/package.json +++ b/package.json @@ -33,13 +33,16 @@ "/sites/**/*.test.(js|ts)", "/tests/commands/**/*.test.(js|ts)" ], - "testTimeout": 10000 + "testTimeout": 10000, + "transformIgnorePatterns": [ + "/node_modules/(?!parse-duration/.*)" + ] }, "dependencies": { "@alex_neo/jest-expect-message": "^1.0.5", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.17.0", - "@freearhey/core": "^0.5.1", + "@freearhey/core": "^0.7.0", "@ntlab/sfetch": "^1.2.0", "@octokit/core": "^6.1.3", "@octokit/plugin-paginate-rest": "^11.3.6", @@ -76,7 +79,7 @@ "globals": "^15.14.0", "husky": "^9.1.7", "iconv-lite": "^0.4.24", - "inquirer": "^8.2.6", + "inquirer": "^12.5.0", "jest": "^29.7.0", "jest-offline": "^1.0.1", "langs": "^2.0.0", @@ -89,7 +92,7 @@ "node-gzip": "^1.1.2", "numeral": "^2.0.6", "pako": "^2.1.0", - "parse-duration": "^1.0.0", + "parse-duration": "^2.1.3", "pdf-parse": "^1.1.1", "pm2": "^5.4.3", "readline": "^1.3.0", diff --git a/yarn.lock b/yarn.lock index caf495b9..ef6c4326 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,13 +20,14 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.22.5": - version "7.22.13" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== dependencies: - "@babel/highlight" "^7.22.13" - chalk "^2.4.2" + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" "@babel/compat-data@^7.22.6": version "7.22.6" @@ -135,15 +136,15 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== -"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.22.5", "@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== "@babel/helper-validator-option@^7.22.5": version "7.22.5" @@ -151,27 +152,19 @@ integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== "@babel/helpers@^7.22.6": - version "7.22.6" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz" - integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== + version "7.27.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz" + integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.6" - "@babel/types" "^7.22.5" + "@babel/template" "^7.27.0" + "@babel/types" "^7.27.0" -"@babel/highlight@^7.22.13": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.7", "@babel/parser@^7.23.3", "@babel/parser@^7.27.0": + version "7.27.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz" + integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.7", "@babel/parser@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz" - integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== + "@babel/types" "^7.27.0" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -271,16 +264,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.27.0", "@babel/template@^7.3.3": + version "7.27.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz" + integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" + "@babel/code-frame" "^7.26.2" + "@babel/parser" "^7.27.0" + "@babel/types" "^7.27.0" -"@babel/traverse@^7.22.5", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": +"@babel/traverse@^7.22.5", "@babel/traverse@^7.22.8": version "7.23.3" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz" integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== @@ -296,14 +289,13 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.3.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz" - integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.27.0", "@babel/types@^7.3.3": + version "7.27.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz" + integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -331,10 +323,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@esbuild/darwin-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz" - integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== +"@esbuild/darwin-x64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz" + integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.1" @@ -396,10 +388,10 @@ dependencies: levn "^0.4.1" -"@freearhey/core@^0.5.1": - version "0.5.1" - resolved "https://registry.npmjs.org/@freearhey/core/-/core-0.5.1.tgz" - integrity sha512-UDKIOyrtcUXaiAeIvjNFTI6DlempiOQaRB83CqHNF1VPRHNBiNhGhERWyInHE2cjLp/cc0CA/IykOYS39kBK7Q== +"@freearhey/core@^0.7.0": + version "0.7.0" + resolved "https://registry.npmjs.org/@freearhey/core/-/core-0.7.0.tgz" + integrity sha512-HXkKPYGY7ife7JAc1q/Qxzy0WUdSnyt3rHThCShZHgnH3rz0tpkjHFW7LNegB3he0IKn/Zc95/YSOQ97Fq8ctA== dependencies: "@types/fs-extra" "^11.0.2" "@types/lodash" "^4.14.198" @@ -443,6 +435,138 @@ resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz" integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== +"@inquirer/checkbox@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.4.tgz" + integrity sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/figures" "^1.0.11" + "@inquirer/type" "^3.0.5" + ansi-escapes "^4.3.2" + yoctocolors-cjs "^2.1.2" + +"@inquirer/confirm@^5.1.8": + version "5.1.8" + resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz" + integrity sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/type" "^3.0.5" + +"@inquirer/core@^10.1.9": + version "10.1.9" + resolved "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz" + integrity sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw== + dependencies: + "@inquirer/figures" "^1.0.11" + "@inquirer/type" "^3.0.5" + ansi-escapes "^4.3.2" + cli-width "^4.1.0" + mute-stream "^2.0.0" + signal-exit "^4.1.0" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" + +"@inquirer/editor@^4.2.9": + version "4.2.9" + resolved "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.9.tgz" + integrity sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/type" "^3.0.5" + external-editor "^3.1.0" + +"@inquirer/expand@^4.0.11": + version "4.0.11" + resolved "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.11.tgz" + integrity sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/type" "^3.0.5" + yoctocolors-cjs "^2.1.2" + +"@inquirer/figures@^1.0.11": + version "1.0.11" + resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz" + integrity sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw== + +"@inquirer/input@^4.1.8": + version "4.1.8" + resolved "https://registry.npmjs.org/@inquirer/input/-/input-4.1.8.tgz" + integrity sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/type" "^3.0.5" + +"@inquirer/number@^3.0.11": + version "3.0.11" + resolved "https://registry.npmjs.org/@inquirer/number/-/number-3.0.11.tgz" + integrity sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/type" "^3.0.5" + +"@inquirer/password@^4.0.11": + version "4.0.11" + resolved "https://registry.npmjs.org/@inquirer/password/-/password-4.0.11.tgz" + integrity sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/type" "^3.0.5" + ansi-escapes "^4.3.2" + +"@inquirer/prompts@^7.4.0": + version "7.4.0" + resolved "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.0.tgz" + integrity sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w== + dependencies: + "@inquirer/checkbox" "^4.1.4" + "@inquirer/confirm" "^5.1.8" + "@inquirer/editor" "^4.2.9" + "@inquirer/expand" "^4.0.11" + "@inquirer/input" "^4.1.8" + "@inquirer/number" "^3.0.11" + "@inquirer/password" "^4.0.11" + "@inquirer/rawlist" "^4.0.11" + "@inquirer/search" "^3.0.11" + "@inquirer/select" "^4.1.0" + +"@inquirer/rawlist@^4.0.11": + version "4.0.11" + resolved "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.11.tgz" + integrity sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/type" "^3.0.5" + yoctocolors-cjs "^2.1.2" + +"@inquirer/search@^3.0.11": + version "3.0.11" + resolved "https://registry.npmjs.org/@inquirer/search/-/search-3.0.11.tgz" + integrity sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/figures" "^1.0.11" + "@inquirer/type" "^3.0.5" + yoctocolors-cjs "^2.1.2" + +"@inquirer/select@^4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@inquirer/select/-/select-4.1.0.tgz" + integrity sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA== + dependencies: + "@inquirer/core" "^10.1.9" + "@inquirer/figures" "^1.0.11" + "@inquirer/type" "^3.0.5" + ansi-escapes "^4.3.2" + yoctocolors-cjs "^2.1.2" + +"@inquirer/type@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz" + integrity sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" @@ -766,10 +890,10 @@ before-after-hook "^3.0.2" universal-user-agent "^7.0.0" -"@octokit/endpoint@^10.0.0": - version "10.1.2" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz" - integrity sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA== +"@octokit/endpoint@^10.1.3": + version "10.1.3" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz" + integrity sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA== dependencies: "@octokit/types" "^13.6.2" universal-user-agent "^7.0.2" @@ -783,17 +907,17 @@ "@octokit/types" "^13.6.2" universal-user-agent "^7.0.0" -"@octokit/openapi-types@^22.2.0": - version "22.2.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz" - integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== +"@octokit/openapi-types@^24.2.0": + version "24.2.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz" + integrity sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg== "@octokit/plugin-paginate-rest@^11.3.6": - version "11.3.6" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.6.tgz" - integrity sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw== + version "11.6.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz" + integrity sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw== dependencies: - "@octokit/types" "^13.6.2" + "@octokit/types" "^13.10.0" "@octokit/plugin-rest-endpoint-methods@^13.2.6": version "13.2.6" @@ -802,30 +926,30 @@ dependencies: "@octokit/types" "^13.6.1" -"@octokit/request-error@^6.0.1", "@octokit/request-error@^6.1.6": - version "6.1.6" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz" - integrity sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg== +"@octokit/request-error@^6.1.6", "@octokit/request-error@^6.1.7": + version "6.1.7" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz" + integrity sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g== dependencies: "@octokit/types" "^13.6.2" "@octokit/request@^9.1.4": - version "9.2.0" - resolved "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz" - integrity sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw== + version "9.2.2" + resolved "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz" + integrity sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg== dependencies: - "@octokit/endpoint" "^10.0.0" - "@octokit/request-error" "^6.0.1" + "@octokit/endpoint" "^10.1.3" + "@octokit/request-error" "^6.1.7" "@octokit/types" "^13.6.2" fast-content-type-parse "^2.0.0" universal-user-agent "^7.0.2" -"@octokit/types@^13.6.1", "@octokit/types@^13.6.2": - version "13.6.2" - resolved "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz" - integrity sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA== +"@octokit/types@^13.10.0", "@octokit/types@^13.6.1", "@octokit/types@^13.6.2": + version "13.10.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz" + integrity sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA== dependencies: - "@octokit/openapi-types" "^22.2.0" + "@octokit/openapi-types" "^24.2.0" "@pkgjs/parseargs@^0.11.0": version "0.11.0" @@ -1142,7 +1266,7 @@ resolved "https://registry.npmjs.org/@types/node-cleanup/-/node-cleanup-2.1.2.tgz" integrity sha512-HTksao/sZs9nqxKD/vWOR3WxSrQsyJlBPEFFCgq9lMmhRsuQF+2p6hy+7FaCYn6lOeiDc3ywI8jDQ2bz5y6m8w== -"@types/node@*": +"@types/node@*", "@types/node@>=18": version "20.7.1" resolved "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz" integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg== @@ -1376,7 +1500,7 @@ ansi-colors@^4.1.1: resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -1524,9 +1648,9 @@ axios-mock-adapter@^1.20.0: is-buffer "^2.0.5" axios@^1.5.1, axios@^1.6.1, axios@^1.7.9, "axios@>= 0.9.0", axios@>=0.20.0: - version "1.7.9" - resolved "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz" - integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== + version "1.8.4" + resolved "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz" + integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" @@ -1597,11 +1721,6 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - basic-ftp@^5.0.2: version "5.0.5" resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz" @@ -1617,15 +1736,6 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - blessed@0.1.81: version "0.1.81" resolved "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz" @@ -1699,14 +1809,6 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - bytes@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" @@ -1781,16 +1883,7 @@ chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1894,13 +1987,6 @@ cli-boxes@^3.0.0: resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz" integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - cli-progress@^3.12.0: version "3.12.0" resolved "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz" @@ -1908,11 +1994,6 @@ cli-progress@^3.12.0: dependencies: string-width "^4.2.3" -cli-spinners@^2.5.0: - version "2.9.1" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz" - integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== - cli-tableau@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz" @@ -1920,10 +2001,10 @@ cli-tableau@^2.0.0: dependencies: chalk "3.0.0" -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== clipboardy@3.0.0: version "3.0.0" @@ -1959,11 +2040,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - co@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" @@ -2003,7 +2079,7 @@ color-name@^1.0.0, color-name@~1.1.4: color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-string@^1.6.0: version "1.9.1" @@ -2245,13 +2321,6 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - defer-to-connect@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" @@ -2411,35 +2480,36 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -esbuild@~0.23.0: - version "0.23.1" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz" - integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== +esbuild@~0.25.0: + version "0.25.2" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz" + integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ== optionalDependencies: - "@esbuild/aix-ppc64" "0.23.1" - "@esbuild/android-arm" "0.23.1" - "@esbuild/android-arm64" "0.23.1" - "@esbuild/android-x64" "0.23.1" - "@esbuild/darwin-arm64" "0.23.1" - "@esbuild/darwin-x64" "0.23.1" - "@esbuild/freebsd-arm64" "0.23.1" - "@esbuild/freebsd-x64" "0.23.1" - "@esbuild/linux-arm" "0.23.1" - "@esbuild/linux-arm64" "0.23.1" - "@esbuild/linux-ia32" "0.23.1" - "@esbuild/linux-loong64" "0.23.1" - "@esbuild/linux-mips64el" "0.23.1" - "@esbuild/linux-ppc64" "0.23.1" - "@esbuild/linux-riscv64" "0.23.1" - "@esbuild/linux-s390x" "0.23.1" - "@esbuild/linux-x64" "0.23.1" - "@esbuild/netbsd-x64" "0.23.1" - "@esbuild/openbsd-arm64" "0.23.1" - "@esbuild/openbsd-x64" "0.23.1" - "@esbuild/sunos-x64" "0.23.1" - "@esbuild/win32-arm64" "0.23.1" - "@esbuild/win32-ia32" "0.23.1" - "@esbuild/win32-x64" "0.23.1" + "@esbuild/aix-ppc64" "0.25.2" + "@esbuild/android-arm" "0.25.2" + "@esbuild/android-arm64" "0.25.2" + "@esbuild/android-x64" "0.25.2" + "@esbuild/darwin-arm64" "0.25.2" + "@esbuild/darwin-x64" "0.25.2" + "@esbuild/freebsd-arm64" "0.25.2" + "@esbuild/freebsd-x64" "0.25.2" + "@esbuild/linux-arm" "0.25.2" + "@esbuild/linux-arm64" "0.25.2" + "@esbuild/linux-ia32" "0.25.2" + "@esbuild/linux-loong64" "0.25.2" + "@esbuild/linux-mips64el" "0.25.2" + "@esbuild/linux-ppc64" "0.25.2" + "@esbuild/linux-riscv64" "0.25.2" + "@esbuild/linux-s390x" "0.25.2" + "@esbuild/linux-x64" "0.25.2" + "@esbuild/netbsd-arm64" "0.25.2" + "@esbuild/netbsd-x64" "0.25.2" + "@esbuild/openbsd-arm64" "0.25.2" + "@esbuild/openbsd-x64" "0.25.2" + "@esbuild/sunos-x64" "0.25.2" + "@esbuild/win32-arm64" "0.25.2" + "@esbuild/win32-ia32" "0.25.2" + "@esbuild/win32-x64" "0.25.2" escalade@^3.1.1: version "3.1.1" @@ -2619,7 +2689,7 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -external-editor@^3.0.3: +external-editor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== @@ -2707,13 +2777,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" @@ -2971,7 +3034,7 @@ graphemer@^1.4.0: has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: version "4.0.0" @@ -3053,11 +3116,6 @@ iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" @@ -3097,7 +3155,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@^2.0.4, inherits@2: +inherits@^2.0.3, inherits@2: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3107,26 +3165,18 @@ ini@^1.3.5, ini@~1.3.0: resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@^8.2.6: - version "8.2.6" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== +inquirer@^12.5.0: + version "12.5.0" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-12.5.0.tgz" + integrity sha512-aiBBq5aKF1k87MTxXDylLfwpRwToShiHrSv4EmB07EYyLgmnjEz5B3rn0aGw1X3JA/64Ngf2T54oGwc+BCsPIQ== dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^6.0.1" + "@inquirer/core" "^10.1.9" + "@inquirer/prompts" "^7.4.0" + "@inquirer/type" "^3.0.5" + ansi-escapes "^4.3.2" + mute-stream "^2.0.0" + run-async "^3.0.0" + rxjs "^7.8.2" ip-address@^9.0.5: version "9.0.5" @@ -3197,11 +3247,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" @@ -3217,11 +3262,6 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" @@ -3868,14 +3908,6 @@ lodash@^4.17.14, lodash@^4.17.21: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - logform@^2.3.2, logform@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz" @@ -4070,7 +4102,12 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -mute-stream@~0.0.4, mute-stream@0.0.8: +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== + +mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -4202,7 +4239,7 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -4221,21 +4258,6 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" @@ -4337,10 +4359,10 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-duration@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.2.tgz" - integrity sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg== +parse-duration@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/parse-duration/-/parse-duration-2.1.3.tgz" + integrity sha512-MtbharL7Bets65qDBXuDOHHWyY1BxTJZmJ/xGmS90iEbKE0gZ6yZpZtCda7O79GeOi/f0NwBaplIuReExIoVsw== parse-json@^4.0.0: version "4.0.0" @@ -4761,23 +4783,15 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== run-parallel@^1.1.9: version "1.2.0" @@ -4796,10 +4810,10 @@ run-series@^1.1.8: resolved "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz" integrity sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g== -rxjs@^7.2.0, rxjs@^7.5.5: - version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== +rxjs@^7.2.0, rxjs@^7.8.2: + version "7.8.2" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== dependencies: tslib "^2.1.0" @@ -4928,7 +4942,7 @@ shimmer@^1.2.0: resolved "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz" integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -4938,6 +4952,11 @@ signal-exit@^4.0.1: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + signale@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz" @@ -5192,11 +5211,6 @@ text-hex@1.0.x: resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - tldts-core@^6.1.68: version "6.1.68" resolved "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.68.tgz" @@ -5221,11 +5235,6 @@ tmpl@1.0.5: resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -5292,11 +5301,11 @@ tslib@1.9.3: integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tsx@^4.19.2: - version "4.19.2" - resolved "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz" - integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g== + version "4.19.3" + resolved "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz" + integrity sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ== dependencies: - esbuild "~0.23.0" + esbuild "~0.25.0" get-tsconfig "^4.7.5" optionalDependencies: fsevents "~2.3.3" @@ -5426,13 +5435,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -5486,7 +5488,7 @@ winston@^3.3.3: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^6.0.1: +wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== @@ -5607,3 +5609,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yoctocolors-cjs@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz" + integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== From 510d89c8c897c38ccdd800a14fd7a7d07a2aadcf Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:08:57 +0300 Subject: [PATCH 2/8] Update tests/__data__ --- .../expected/api_generate/guides.json | 1 + .../channels_edit/example.com.channels.xml | 4 + .../channels_parse/example.com.channels.xml | 5 + .../expected/{ => epg_grab}/guide.xml | 0 .../expected/{ => epg_grab}/guide.xml.gz | Bin .../{guide2.xml => epg_grab/guide_2.xml} | 0 .../guide_3.xml} | 0 .../{ => epg_grab}/guides/en/example.com.xml | 0 .../{ => epg_grab}/guides/fr/example.com.xml | 0 tests/__data__/expected/guides.json | 1 - .../channels-edit/example.com.channels.xml | 4 - .../channels-parse-clean.channels.xml | 5 - .../channels-parse.channels.xml | 5 - .../example.com.config.js | 0 .../example.com.test.js | 0 .../sites-init => sites_init}/readme.md | 0 .../expected/{ => sites_update}/SITES.md | 0 .../{temp/data => __data__}/channels.json | 46 +- .../{temp/data => __data__}/countries.json | 0 tests/__data__/input/__data__/feeds.json | 30 + .../{temp/data => __data__}/regions.json | 0 .../{temp/data => __data__}/subdivisions.json | 0 .../example.com/example.com.channels.xml | 6 + .../example2.com/example2.com.channels.xml | 6 + .../channels-edit/example.com.channels.xml | 4 - .../input/channels-lint/error.channels.xml | 4 - .../input/channels-lint/invalid.channels.xml | 5 - .../channels-lint/single_quotes.channels.xml | 4 - .../input/channels-lint/valid.channels.xml | 4 - .../channels-parse.channels.xml | 4 - .../wrong_xmltv_id.channels.xml | 4 - .../channels_edit/example.com.channels.xml | 6 + .../input/channels_lint/error.channels.xml | 4 + .../input/channels_lint/invalid.channels.xml | 5 + .../channels_lint/single_quotes.channels.xml | 4 + .../input/channels_lint/valid.channels.xml | 4 + .../channels_parse/example.com.channels.xml | 4 + .../example.com.config.js} | 4 +- .../duplicate.channels.xml | 4 +- .../wrong_xmltv_id.channels.xml | 6 + .../custom.channels.xml | 0 .../example.com/example.com.channels.xml | 0 .../sites/example.com/example.com.config.js | 0 .../example2.com/example2.com.channels.xml | 0 .../sites/example2.com/example2.com.config.js | 0 .../input/issues/broken_guide_warning.mjs | 974 ---- .../issues.mjs} | 4074 ++++++++++------- .../iltalehti.fi/iltalehti.fi.channels.xml | 0 .../sites/iltalehti.fi/readme.md | 0 .../indihometv.com.channels.xml | 0 .../sites/indihometv.com/readme.md | 0 .../kan.org.il/kan.org.il_1.channels.xml | 0 .../kan.org.il/kan.org.il_2.channels.xml | 0 .../sites/kan.org.il/readme.md | 0 54 files changed, 2630 insertions(+), 2601 deletions(-) create mode 100644 tests/__data__/expected/api_generate/guides.json create mode 100644 tests/__data__/expected/channels_edit/example.com.channels.xml create mode 100644 tests/__data__/expected/channels_parse/example.com.channels.xml rename tests/__data__/expected/{ => epg_grab}/guide.xml (100%) rename tests/__data__/expected/{ => epg_grab}/guide.xml.gz (100%) rename tests/__data__/expected/{guide2.xml => epg_grab/guide_2.xml} (100%) rename tests/__data__/expected/{custom_guide.xml => epg_grab/guide_3.xml} (100%) rename tests/__data__/expected/{ => epg_grab}/guides/en/example.com.xml (100%) rename tests/__data__/expected/{ => epg_grab}/guides/fr/example.com.xml (100%) delete mode 100644 tests/__data__/expected/guides.json delete mode 100644 tests/__data__/expected/sites/channels-edit/example.com.channels.xml delete mode 100644 tests/__data__/expected/sites/channels-parse/channels-parse-clean.channels.xml delete mode 100644 tests/__data__/expected/sites/channels-parse/channels-parse.channels.xml rename tests/__data__/expected/{sites/sites-init => sites_init}/example.com.config.js (100%) rename tests/__data__/expected/{sites/sites-init => sites_init}/example.com.test.js (100%) rename tests/__data__/expected/{sites/sites-init => sites_init}/readme.md (100%) rename tests/__data__/expected/{ => sites_update}/SITES.md (100%) rename tests/__data__/input/{temp/data => __data__}/channels.json (81%) rename tests/__data__/input/{temp/data => __data__}/countries.json (100%) create mode 100644 tests/__data__/input/__data__/feeds.json rename tests/__data__/input/{temp/data => __data__}/regions.json (100%) rename tests/__data__/input/{temp/data => __data__}/subdivisions.json (100%) create mode 100644 tests/__data__/input/api_generate/sites/example.com/example.com.channels.xml create mode 100644 tests/__data__/input/api_generate/sites/example2.com/example2.com.channels.xml delete mode 100644 tests/__data__/input/channels-edit/example.com.channels.xml delete mode 100644 tests/__data__/input/channels-lint/error.channels.xml delete mode 100644 tests/__data__/input/channels-lint/invalid.channels.xml delete mode 100644 tests/__data__/input/channels-lint/single_quotes.channels.xml delete mode 100644 tests/__data__/input/channels-lint/valid.channels.xml delete mode 100644 tests/__data__/input/channels-parse/channels-parse.channels.xml delete mode 100644 tests/__data__/input/channels-validate/wrong_xmltv_id.channels.xml create mode 100644 tests/__data__/input/channels_edit/example.com.channels.xml create mode 100644 tests/__data__/input/channels_lint/error.channels.xml create mode 100644 tests/__data__/input/channels_lint/invalid.channels.xml create mode 100644 tests/__data__/input/channels_lint/single_quotes.channels.xml create mode 100644 tests/__data__/input/channels_lint/valid.channels.xml create mode 100644 tests/__data__/input/channels_parse/example.com.channels.xml rename tests/__data__/input/{channels-parse/channels-parse.config.js => channels_parse/example.com.config.js} (75%) rename tests/__data__/input/{channels-validate => channels_validate}/duplicate.channels.xml (51%) create mode 100644 tests/__data__/input/channels_validate/wrong_xmltv_id.channels.xml rename tests/__data__/input/{epg-grab => epg_grab}/custom.channels.xml (100%) rename tests/__data__/input/{epg-grab => epg_grab}/sites/example.com/example.com.channels.xml (100%) rename tests/__data__/input/{epg-grab => epg_grab}/sites/example.com/example.com.config.js (100%) rename tests/__data__/input/{epg-grab => epg_grab}/sites/example2.com/example2.com.channels.xml (100%) rename tests/__data__/input/{epg-grab => epg_grab}/sites/example2.com/example2.com.config.js (100%) delete mode 100644 tests/__data__/input/issues/broken_guide_warning.mjs rename tests/__data__/input/{issues/broken_guide_down.mjs => sites_update/issues.mjs} (58%) rename tests/__data__/input/{sites-update => sites_update}/sites/iltalehti.fi/iltalehti.fi.channels.xml (100%) rename tests/__data__/input/{sites-update => sites_update}/sites/iltalehti.fi/readme.md (100%) rename tests/__data__/input/{sites-update => sites_update}/sites/indihometv.com/indihometv.com.channels.xml (100%) rename tests/__data__/input/{sites-update => sites_update}/sites/indihometv.com/readme.md (100%) rename tests/__data__/input/{sites-update => sites_update}/sites/kan.org.il/kan.org.il_1.channels.xml (100%) rename tests/__data__/input/{sites-update => sites_update}/sites/kan.org.il/kan.org.il_2.channels.xml (100%) rename tests/__data__/input/{sites-update => sites_update}/sites/kan.org.il/readme.md (100%) diff --git a/tests/__data__/expected/api_generate/guides.json b/tests/__data__/expected/api_generate/guides.json new file mode 100644 index 00000000..b658a782 --- /dev/null +++ b/tests/__data__/expected/api_generate/guides.json @@ -0,0 +1 @@ +[{"channel":"Channel1.us","feed":"SD","site":"example.com","site_id":"140","site_name":"Channel 1","lang":"en"},{"channel":"Channel2.us","feed":null,"site":"example.com","site_id":"142","site_name":"Channel 2","lang":"en"},{"channel":"Channel1.us","feed":"HD","site":"example.com","site_id":"140","site_name":"Channel 1","lang":"fr"},{"channel":"Channel3.us","feed":"HD","site":"example2.com","site_id":"150","site_name":"Channel 3","lang":"en"},{"channel":"Channel4.us","feed":null,"site":"example2.com","site_id":"152","site_name":"Channel 4","lang":"en"},{"channel":"Channel1.us","feed":null,"site":"example2.com","site_id":"140","site_name":"Channel 1","lang":"fr"}] \ No newline at end of file diff --git a/tests/__data__/expected/channels_edit/example.com.channels.xml b/tests/__data__/expected/channels_edit/example.com.channels.xml new file mode 100644 index 00000000..f325d07a --- /dev/null +++ b/tests/__data__/expected/channels_edit/example.com.channels.xml @@ -0,0 +1,4 @@ + + + CNN International + diff --git a/tests/__data__/expected/channels_parse/example.com.channels.xml b/tests/__data__/expected/channels_parse/example.com.channels.xml new file mode 100644 index 00000000..d85053e0 --- /dev/null +++ b/tests/__data__/expected/channels_parse/example.com.channels.xml @@ -0,0 +1,5 @@ + + + BBC World News + CNN International + diff --git a/tests/__data__/expected/guide.xml b/tests/__data__/expected/epg_grab/guide.xml similarity index 100% rename from tests/__data__/expected/guide.xml rename to tests/__data__/expected/epg_grab/guide.xml diff --git a/tests/__data__/expected/guide.xml.gz b/tests/__data__/expected/epg_grab/guide.xml.gz similarity index 100% rename from tests/__data__/expected/guide.xml.gz rename to tests/__data__/expected/epg_grab/guide.xml.gz diff --git a/tests/__data__/expected/guide2.xml b/tests/__data__/expected/epg_grab/guide_2.xml similarity index 100% rename from tests/__data__/expected/guide2.xml rename to tests/__data__/expected/epg_grab/guide_2.xml diff --git a/tests/__data__/expected/custom_guide.xml b/tests/__data__/expected/epg_grab/guide_3.xml similarity index 100% rename from tests/__data__/expected/custom_guide.xml rename to tests/__data__/expected/epg_grab/guide_3.xml diff --git a/tests/__data__/expected/guides/en/example.com.xml b/tests/__data__/expected/epg_grab/guides/en/example.com.xml similarity index 100% rename from tests/__data__/expected/guides/en/example.com.xml rename to tests/__data__/expected/epg_grab/guides/en/example.com.xml diff --git a/tests/__data__/expected/guides/fr/example.com.xml b/tests/__data__/expected/epg_grab/guides/fr/example.com.xml similarity index 100% rename from tests/__data__/expected/guides/fr/example.com.xml rename to tests/__data__/expected/epg_grab/guides/fr/example.com.xml diff --git a/tests/__data__/expected/guides.json b/tests/__data__/expected/guides.json deleted file mode 100644 index 9d0065a6..00000000 --- a/tests/__data__/expected/guides.json +++ /dev/null @@ -1 +0,0 @@ -[{"channel":"Channel1.us","site":"example.com","site_id":"140","site_name":"Channel 1","lang":"en"},{"channel":"Channel2.us","site":"example.com","site_id":"142","site_name":"Channel 2","lang":"en"},{"channel":"Channel1.us","site":"example.com","site_id":"140","site_name":"Channel 1","lang":"fr"},{"channel":"Channel3.us","site":"example2.com","site_id":"150","site_name":"Channel 3","lang":"en"},{"channel":"Channel4.us","site":"example2.com","site_id":"152","site_name":"Channel 4","lang":"en"},{"channel":"Channel1.us","site":"example2.com","site_id":"140","site_name":"Channel 1","lang":"fr"}] \ No newline at end of file diff --git a/tests/__data__/expected/sites/channels-edit/example.com.channels.xml b/tests/__data__/expected/sites/channels-edit/example.com.channels.xml deleted file mode 100644 index b06024fc..00000000 --- a/tests/__data__/expected/sites/channels-edit/example.com.channels.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - CNN International - diff --git a/tests/__data__/expected/sites/channels-parse/channels-parse-clean.channels.xml b/tests/__data__/expected/sites/channels-parse/channels-parse-clean.channels.xml deleted file mode 100644 index ebf174d8..00000000 --- a/tests/__data__/expected/sites/channels-parse/channels-parse-clean.channels.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - CNN International - BBC World News - diff --git a/tests/__data__/expected/sites/channels-parse/channels-parse.channels.xml b/tests/__data__/expected/sites/channels-parse/channels-parse.channels.xml deleted file mode 100644 index 57e699ea..00000000 --- a/tests/__data__/expected/sites/channels-parse/channels-parse.channels.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - BBC World News - CNN International - diff --git a/tests/__data__/expected/sites/sites-init/example.com.config.js b/tests/__data__/expected/sites_init/example.com.config.js similarity index 100% rename from tests/__data__/expected/sites/sites-init/example.com.config.js rename to tests/__data__/expected/sites_init/example.com.config.js diff --git a/tests/__data__/expected/sites/sites-init/example.com.test.js b/tests/__data__/expected/sites_init/example.com.test.js similarity index 100% rename from tests/__data__/expected/sites/sites-init/example.com.test.js rename to tests/__data__/expected/sites_init/example.com.test.js diff --git a/tests/__data__/expected/sites/sites-init/readme.md b/tests/__data__/expected/sites_init/readme.md similarity index 100% rename from tests/__data__/expected/sites/sites-init/readme.md rename to tests/__data__/expected/sites_init/readme.md diff --git a/tests/__data__/expected/SITES.md b/tests/__data__/expected/sites_update/SITES.md similarity index 100% rename from tests/__data__/expected/SITES.md rename to tests/__data__/expected/sites_update/SITES.md diff --git a/tests/__data__/input/temp/data/channels.json b/tests/__data__/input/__data__/channels.json similarity index 81% rename from tests/__data__/input/temp/data/channels.json rename to tests/__data__/input/__data__/channels.json index 4ff2f615..90f9cc9d 100644 --- a/tests/__data__/input/temp/data/channels.json +++ b/tests/__data__/input/__data__/channels.json @@ -1,34 +1,36 @@ [ { - "id": "BravoEast.us", - "name": "Bravo East", + "id": "Bravo.us", + "name": "Bravo", + "network": null, + "country": "US", + "subdivision": null, + "city": null, + "categories": [], + "is_nsfw": false, + "closed": "2020-01-01", + "replaced_by": "R6.co", + "logo": "https://www.directv.com/images/logos/channels/dark/large/579.png" + }, + { + "id": "Bravos.us", + "name": "Bravos", "network": null, "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "logo": "https://www.directv.com/images/logos/channels/dark/large/579.png" }, { - "id": "CNNInternationalEurope.us", - "name": "CNN International Europe", + "id": "CNNInternational.us", + "name": "CNN International", + "alt_names": ["CNN", "CNN Int"], "network": null, "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "r/EUR" - ], - "languages": [ - "eng" - ], "categories": [ "news" ], @@ -42,12 +44,6 @@ "country": "ZA", "subdivision": null, "city": null, - "broadcast_area": [ - "c/ZA" - ], - "languages": [ - "afr" - ], "categories": [], "is_nsfw": false, "logo": "https://rndcdn.dstv.com/dstvcms/2020/08/31/M-Net_Movies_2_Logo_4-3_lightbackground_xlrg.png" @@ -61,12 +57,6 @@ "country": "US", "subdivision": null, "city": null, - "broadcast_area": [ - "c/US" - ], - "languages": [ - "eng" - ], "categories": [], "is_nsfw": false, "logo": "https://www.directv.com/images/logos/channels/dark/large/579.png" diff --git a/tests/__data__/input/temp/data/countries.json b/tests/__data__/input/__data__/countries.json similarity index 100% rename from tests/__data__/input/temp/data/countries.json rename to tests/__data__/input/__data__/countries.json diff --git a/tests/__data__/input/__data__/feeds.json b/tests/__data__/input/__data__/feeds.json new file mode 100644 index 00000000..2aacf6b7 --- /dev/null +++ b/tests/__data__/input/__data__/feeds.json @@ -0,0 +1,30 @@ +[ + { + "channel": "CNNInternational.us", + "id": "SD", + "name": "SD", + "is_main": true, + "broadcast_area": [ + "r/INT" + ], + "timezones": [ + "America/New_York" + ], + "languages": [], + "video_format": "480i" + }, + { + "channel": "CNNInternational.us", + "id": "Europe", + "name": "Europe", + "is_main": false, + "broadcast_area": [ + "r/EUR" + ], + "timezones": [ + "America/New_York" + ], + "languages": [], + "video_format": "480i" + } +] \ No newline at end of file diff --git a/tests/__data__/input/temp/data/regions.json b/tests/__data__/input/__data__/regions.json similarity index 100% rename from tests/__data__/input/temp/data/regions.json rename to tests/__data__/input/__data__/regions.json diff --git a/tests/__data__/input/temp/data/subdivisions.json b/tests/__data__/input/__data__/subdivisions.json similarity index 100% rename from tests/__data__/input/temp/data/subdivisions.json rename to tests/__data__/input/__data__/subdivisions.json diff --git a/tests/__data__/input/api_generate/sites/example.com/example.com.channels.xml b/tests/__data__/input/api_generate/sites/example.com/example.com.channels.xml new file mode 100644 index 00000000..630e9225 --- /dev/null +++ b/tests/__data__/input/api_generate/sites/example.com/example.com.channels.xml @@ -0,0 +1,6 @@ + + + Channel 1 + Channel 2 + Channel 1 + \ No newline at end of file diff --git a/tests/__data__/input/api_generate/sites/example2.com/example2.com.channels.xml b/tests/__data__/input/api_generate/sites/example2.com/example2.com.channels.xml new file mode 100644 index 00000000..f95bdb8d --- /dev/null +++ b/tests/__data__/input/api_generate/sites/example2.com/example2.com.channels.xml @@ -0,0 +1,6 @@ + + + Channel 3 + Channel 4 + Channel 1 + \ No newline at end of file diff --git a/tests/__data__/input/channels-edit/example.com.channels.xml b/tests/__data__/input/channels-edit/example.com.channels.xml deleted file mode 100644 index dd78c49c..00000000 --- a/tests/__data__/input/channels-edit/example.com.channels.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - CNN International - diff --git a/tests/__data__/input/channels-lint/error.channels.xml b/tests/__data__/input/channels-lint/error.channels.xml deleted file mode 100644 index 7983d18e..00000000 --- a/tests/__data__/input/channels-lint/error.channels.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - CNN International - diff --git a/tests/__data__/input/channels-lint/invalid.channels.xml b/tests/__data__/input/channels-lint/invalid.channels.xml deleted file mode 100644 index f69d9631..00000000 --- a/tests/__data__/input/channels-lint/invalid.channels.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - Bravo - \ No newline at end of file diff --git a/tests/__data__/input/channels-lint/single_quotes.channels.xml b/tests/__data__/input/channels-lint/single_quotes.channels.xml deleted file mode 100644 index a95422cd..00000000 --- a/tests/__data__/input/channels-lint/single_quotes.channels.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Bravo 2 - \ No newline at end of file diff --git a/tests/__data__/input/channels-lint/valid.channels.xml b/tests/__data__/input/channels-lint/valid.channels.xml deleted file mode 100644 index 8c499450..00000000 --- a/tests/__data__/input/channels-lint/valid.channels.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Bravo's - \ No newline at end of file diff --git a/tests/__data__/input/channels-parse/channels-parse.channels.xml b/tests/__data__/input/channels-parse/channels-parse.channels.xml deleted file mode 100644 index a69639f9..00000000 --- a/tests/__data__/input/channels-parse/channels-parse.channels.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - CNN International - diff --git a/tests/__data__/input/channels-validate/wrong_xmltv_id.channels.xml b/tests/__data__/input/channels-validate/wrong_xmltv_id.channels.xml deleted file mode 100644 index efbe406a..00000000 --- a/tests/__data__/input/channels-validate/wrong_xmltv_id.channels.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - CNN International - \ No newline at end of file diff --git a/tests/__data__/input/channels_edit/example.com.channels.xml b/tests/__data__/input/channels_edit/example.com.channels.xml new file mode 100644 index 00000000..cba9c26f --- /dev/null +++ b/tests/__data__/input/channels_edit/example.com.channels.xml @@ -0,0 +1,6 @@ + + + CNN International + CNN International + Bravo + diff --git a/tests/__data__/input/channels_lint/error.channels.xml b/tests/__data__/input/channels_lint/error.channels.xml new file mode 100644 index 00000000..da9d20ce --- /dev/null +++ b/tests/__data__/input/channels_lint/error.channels.xml @@ -0,0 +1,4 @@ + + + CNN International + diff --git a/tests/__data__/input/channels_lint/invalid.channels.xml b/tests/__data__/input/channels_lint/invalid.channels.xml new file mode 100644 index 00000000..8e04129e --- /dev/null +++ b/tests/__data__/input/channels_lint/invalid.channels.xml @@ -0,0 +1,5 @@ + + + + Bravo + \ No newline at end of file diff --git a/tests/__data__/input/channels_lint/single_quotes.channels.xml b/tests/__data__/input/channels_lint/single_quotes.channels.xml new file mode 100644 index 00000000..e4762ce3 --- /dev/null +++ b/tests/__data__/input/channels_lint/single_quotes.channels.xml @@ -0,0 +1,4 @@ + + + Bravo 2 + \ No newline at end of file diff --git a/tests/__data__/input/channels_lint/valid.channels.xml b/tests/__data__/input/channels_lint/valid.channels.xml new file mode 100644 index 00000000..42a447bb --- /dev/null +++ b/tests/__data__/input/channels_lint/valid.channels.xml @@ -0,0 +1,4 @@ + + + Bravo's + \ No newline at end of file diff --git a/tests/__data__/input/channels_parse/example.com.channels.xml b/tests/__data__/input/channels_parse/example.com.channels.xml new file mode 100644 index 00000000..227eb4be --- /dev/null +++ b/tests/__data__/input/channels_parse/example.com.channels.xml @@ -0,0 +1,4 @@ + + + CNN International + diff --git a/tests/__data__/input/channels-parse/channels-parse.config.js b/tests/__data__/input/channels_parse/example.com.config.js similarity index 75% rename from tests/__data__/input/channels-parse/channels-parse.config.js rename to tests/__data__/input/channels_parse/example.com.config.js index 6829ec21..e1b5c368 100644 --- a/tests/__data__/input/channels-parse/channels-parse.config.js +++ b/tests/__data__/input/channels_parse/example.com.config.js @@ -1,6 +1,6 @@ module.exports = { - site: 'parse-channels.com', - url: 'https://parse-channels.com', + site: 'example.com', + url: 'https://example.com', parser() { return [] }, diff --git a/tests/__data__/input/channels-validate/duplicate.channels.xml b/tests/__data__/input/channels_validate/duplicate.channels.xml similarity index 51% rename from tests/__data__/input/channels-validate/duplicate.channels.xml rename to tests/__data__/input/channels_validate/duplicate.channels.xml index 3415cd06..70f38140 100644 --- a/tests/__data__/input/channels-validate/duplicate.channels.xml +++ b/tests/__data__/input/channels_validate/duplicate.channels.xml @@ -1,5 +1,5 @@ - + Bravo 2 - Bravo + Bravo \ No newline at end of file diff --git a/tests/__data__/input/channels_validate/wrong_xmltv_id.channels.xml b/tests/__data__/input/channels_validate/wrong_xmltv_id.channels.xml new file mode 100644 index 00000000..2534dc6c --- /dev/null +++ b/tests/__data__/input/channels_validate/wrong_xmltv_id.channels.xml @@ -0,0 +1,6 @@ + + + CNN International + Bravo + Bravo + \ No newline at end of file diff --git a/tests/__data__/input/epg-grab/custom.channels.xml b/tests/__data__/input/epg_grab/custom.channels.xml similarity index 100% rename from tests/__data__/input/epg-grab/custom.channels.xml rename to tests/__data__/input/epg_grab/custom.channels.xml diff --git a/tests/__data__/input/epg-grab/sites/example.com/example.com.channels.xml b/tests/__data__/input/epg_grab/sites/example.com/example.com.channels.xml similarity index 100% rename from tests/__data__/input/epg-grab/sites/example.com/example.com.channels.xml rename to tests/__data__/input/epg_grab/sites/example.com/example.com.channels.xml diff --git a/tests/__data__/input/epg-grab/sites/example.com/example.com.config.js b/tests/__data__/input/epg_grab/sites/example.com/example.com.config.js similarity index 100% rename from tests/__data__/input/epg-grab/sites/example.com/example.com.config.js rename to tests/__data__/input/epg_grab/sites/example.com/example.com.config.js diff --git a/tests/__data__/input/epg-grab/sites/example2.com/example2.com.channels.xml b/tests/__data__/input/epg_grab/sites/example2.com/example2.com.channels.xml similarity index 100% rename from tests/__data__/input/epg-grab/sites/example2.com/example2.com.channels.xml rename to tests/__data__/input/epg_grab/sites/example2.com/example2.com.channels.xml diff --git a/tests/__data__/input/epg-grab/sites/example2.com/example2.com.config.js b/tests/__data__/input/epg_grab/sites/example2.com/example2.com.config.js similarity index 100% rename from tests/__data__/input/epg-grab/sites/example2.com/example2.com.config.js rename to tests/__data__/input/epg_grab/sites/example2.com/example2.com.config.js diff --git a/tests/__data__/input/issues/broken_guide_warning.mjs b/tests/__data__/input/issues/broken_guide_warning.mjs deleted file mode 100644 index d8828b90..00000000 --- a/tests/__data__/input/issues/broken_guide_warning.mjs +++ /dev/null @@ -1,974 +0,0 @@ -export default [ - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2543', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/events', - html_url: 'https://github.com/iptv-org/epg/issues/2543', - id: 2759693796, - node_id: 'I_kwDOFLVvtM6kfZXk', - number: 2543, - title: 'flixed.io is downloding old programming', - user: { - login: 'SiWafer', - id: 10903014, - node_id: 'MDQ6VXNlcjEwOTAzMDE0', - avatar_url: 'https://avatars.githubusercontent.com/u/10903014?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/SiWafer', - html_url: 'https://github.com/SiWafer', - followers_url: 'https://api.github.com/users/SiWafer/followers', - following_url: 'https://api.github.com/users/SiWafer/following{/other_user}', - gists_url: 'https://api.github.com/users/SiWafer/gists{/gist_id}', - starred_url: 'https://api.github.com/users/SiWafer/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/SiWafer/subscriptions', - organizations_url: 'https://api.github.com/users/SiWafer/orgs', - repos_url: 'https://api.github.com/users/SiWafer/repos', - events_url: 'https://api.github.com/users/SiWafer/events{/privacy}', - received_events_url: 'https://api.github.com/users/SiWafer/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2024-12-26T12:09:43Z', - updated_at: '2024-12-27T05:29:58Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Describe your issue\r\n\r\nJust ran and updated, and seems the output is loading old programming and it also is not complete\r\n\r\nExample is Bravo channel\r\n\r\n```\r\nepg@rpi:~/epg$ npm run grab --- --site=flixed.io --maxConnections=10 -o "flixed.xml"\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=flixed.io --maxConnections=10 -o flixed.xml\r\n\r\nstarting...\r\nconfig:\r\n output: flixed.xml\r\n maxConnections: 10\r\n gzip: false\r\n site: flixed.io\r\nloading channels...\r\n found 94 channel(s)\r\nrun #1:\r\n [1/94] flixed.io (en) - BravoEast.us - Dec 26, 2024 (2 programs)\r\n [2/94] flixed.io (en) - ComedyCentralEast.us - Dec 26, 2024 (5 programs)\r\n [3/94] flixed.io (en) - ACCNetwork.us - Dec 26, 2024 (26 programs)\r\n [4/94] flixed.io (en) - CNN.us - Dec 26, 2024 (25 programs)\r\n [5/94] flixed.io (en) - BloombergTV.us - Dec 26, 2024 (21 programs)\r\n [6/94] flixed.io (en) - AEEast.us - Dec 26, 2024 (6 programs)\r\n [7/94] flixed.io (en) - CNBC.us - Dec 26, 2024 (3 programs)\r\n [8/94] flixed.io (en) - CinemaxEast.us - Dec 26, 2024 (14 programs)\r\n [9/94] flixed.io (en) - AMCEast.us - Dec 26, 2024 (19 programs)\r\n [10/94] flixed.io (en) - BigTenNetwork.us - Dec 26, 2024 (3 programs)\r\n [11/94] flixed.io (en) - FoxWest.us - Dec 26, 2024 (8 programs)\r\n [12/94] flixed.io (en) - FreeformEast.us - Dec 26, 2024 (2 programs)\r\n [13/94] flixed.io (en) - FoxSports2.us - Dec 26, 2024 (2 programs)\r\n [14/94] flixed.io (en) - FoodNetworkEast.us - Dec 26, 2024 (3 programs)\r\n...\r\n...\r\n...\r\n\r\n```\r\nSnip from xml file out\r\n![image](https://github.com/user-attachments/assets/5ed6d7eb-df59-4951-9b2c-5214e24d24ac)\r\n\r\nThe date is September 26, 2024, 01:00:00 for Bravo\r\n\r\n', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2516', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/events', - html_url: 'https://github.com/iptv-org/epg/issues/2516', - id: 2745387354, - node_id: 'I_kwDOFLVvtM6jo0la', - number: 2516, - title: 'Duplicate programmes with sky.com grab', - user: { - login: 'misar1', - id: 69795879, - node_id: 'MDQ6VXNlcjY5Nzk1ODc5', - avatar_url: 'https://avatars.githubusercontent.com/u/69795879?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/misar1', - html_url: 'https://github.com/misar1', - followers_url: 'https://api.github.com/users/misar1/followers', - following_url: 'https://api.github.com/users/misar1/following{/other_user}', - gists_url: 'https://api.github.com/users/misar1/gists{/gist_id}', - starred_url: 'https://api.github.com/users/misar1/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/misar1/subscriptions', - organizations_url: 'https://api.github.com/users/misar1/orgs', - repos_url: 'https://api.github.com/users/misar1/repos', - events_url: 'https://api.github.com/users/misar1/events{/privacy}', - received_events_url: 'https://api.github.com/users/misar1/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 1, - created_at: '2024-12-17T16:19:36Z', - updated_at: '2024-12-27T05:27:44Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\n\nsky.com\n\n### Description\n\n\r\nI changed to the recently updated sky.com script a couple of days ago (using a completely new install as in the readme) and have found an anomaly. This does not occur with an identical grab using my previous installation. The grabs are for about 60 UK FTA channels which I can list if it would be helpful.\r\n\r\nA number of programmes have two identical blocks in the XML, including their start and finish times. This occurs only from around approximately 22:00 each day and up to about midnight GMT. During this period most channels are affected and it is consistent between successive grabs. In case of a timing issue I tested delays of 100, 1000, 3000 and 5000 msec but the XML was unchanged.', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2501', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/events', - html_url: 'https://github.com/iptv-org/epg/issues/2501', - id: 2738899005, - node_id: 'I_kwDOFLVvtM6jQEg9', - number: 2501, - title: 'Sky.com', - user: { - login: 'Chris230291', - id: 5328818, - node_id: 'MDQ6VXNlcjUzMjg4MTg=', - avatar_url: 'https://avatars.githubusercontent.com/u/5328818?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/Chris230291', - html_url: 'https://github.com/Chris230291', - followers_url: 'https://api.github.com/users/Chris230291/followers', - following_url: 'https://api.github.com/users/Chris230291/following{/other_user}', - gists_url: 'https://api.github.com/users/Chris230291/gists{/gist_id}', - starred_url: 'https://api.github.com/users/Chris230291/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/Chris230291/subscriptions', - organizations_url: 'https://api.github.com/users/Chris230291/orgs', - repos_url: 'https://api.github.com/users/Chris230291/repos', - events_url: 'https://api.github.com/users/Chris230291/events{/privacy}', - received_events_url: 'https://api.github.com/users/Chris230291/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 2, - created_at: '2024-12-13T17:45:02Z', - updated_at: '2024-12-27T05:25:49Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\n\nsky.com\n\n### Description\n\n```\r\n Viaplay 1 HD\r\n Viaplay 2 HD\r\n```\r\n\r\nThese should be "Premier Sports 1 HD" and "Premier Sports 2 HD".\r\nAlso, the UK and ROI have different schedules for these 2 channels.', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2446', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/events', - html_url: 'https://github.com/iptv-org/epg/issues/2446', - id: 2568624116, - node_id: 'I_kwDOFLVvtM6ZGhf0', - number: 2446, - title: 'Eleven channels returning 0 programs on meo.pt', - user: { - login: 'jonatasgz', - id: 78122211, - node_id: 'MDQ6VXNlcjc4MTIyMjEx', - avatar_url: 'https://avatars.githubusercontent.com/u/78122211?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/jonatasgz', - html_url: 'https://github.com/jonatasgz', - followers_url: 'https://api.github.com/users/jonatasgz/followers', - following_url: 'https://api.github.com/users/jonatasgz/following{/other_user}', - gists_url: 'https://api.github.com/users/jonatasgz/gists{/gist_id}', - starred_url: 'https://api.github.com/users/jonatasgz/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/jonatasgz/subscriptions', - organizations_url: 'https://api.github.com/users/jonatasgz/orgs', - repos_url: 'https://api.github.com/users/jonatasgz/repos', - events_url: 'https://api.github.com/users/jonatasgz/events{/privacy}', - received_events_url: 'https://api.github.com/users/jonatasgz/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 2, - created_at: '2024-10-06T12:00:48Z', - updated_at: '2024-12-27T05:23:16Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\n\nmeo.pt\n\n### Description\n\nEleven (DAZN) channels return 0 programs.', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2400', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/events', - html_url: 'https://github.com/iptv-org/epg/issues/2400', - id: 2370209498, - node_id: 'I_kwDOFLVvtM6NRoba', - number: 2400, - title: 'tvgids.nl', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2024-06-24T13:05:05Z', - updated_at: '2024-12-27T05:19:25Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: "### Site\n\ntvgids.nl\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- tvgids.nl \r\n\r\n> test\r\n> run-script-os tvgids.nl\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand tvgids.nl\r\n\r\n FAIL sites/tvgids.nl/tvgids.nl.test.js\r\n ✓ can generate valid url (29 ms)\r\n ✕ can generate valid url for today (4 ms)\r\n ✓ can parse response (307 ms)\r\n ✓ can handle empty guide (3 ms)\r\n\r\n ● can generate valid url for today\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: \"https://www.tvgids.nl/gids/npo1\"\r\n Received: \"https://www.tvgids.nl/gids/25-06-2024/npo1\"\r\n\r\n 21 | const today = dayjs().startOf('d')\r\n 22 |\r\n > 23 | expect(url({ date: today, channel })).toBe('https://www.tvgids.nl/gids/npo1')\r\n | ^\r\n 24 | })\r\n 25 |\r\n 26 | it('can parse response', () => {\r\n\r\n at Object. (sites/tvgids.nl/tvgids.nl.test.js:23:41)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 3 passed, 4 total\r\nSnapshots: 0 total\r\nTime: 3.52 s\r\nRan all test suites matching /tvgids.nl/i.\r\n```", - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2399', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/events', - html_url: 'https://github.com/iptv-org/epg/issues/2399', - id: 2370207356, - node_id: 'I_kwDOFLVvtM6NRn58', - number: 2399, - title: 'tvprofil.com', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 1, - created_at: '2024-06-24T13:04:08Z', - updated_at: '2024-12-27T05:18:50Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\ntvprofil.com\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- tvprofil.com\r\n\r\n> test\r\n> run-script-os tvprofil.com\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand tvprofil.com\r\n\r\n FAIL sites/tvprofil.com/tvprofil.com.test.js\r\n ✕ can generate valid url (14 ms)\r\n ✓ can generate valid request headers (1 ms)\r\n ✓ can parse response (76 ms)\r\n ✓ can handle empty guide (2 ms)\r\n\r\n ● can generate valid url\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: "https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b51=818933"\r\n Received: "https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b49=819461"\r\n\r\n 15 |\r\n 16 | it(\'can generate valid url\', () => {\r\n > 17 | expect(url({ channel, date })).toBe(\r\n | ^\r\n 18 | \'https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b51=818933\'\r\n 19 | )\r\n 20 | })\r\n\r\n at Object. (sites/tvprofil.com/tvprofil.com.test.js:17:34)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 3 passed, 4 total\r\nSnapshots: 0 total\r\nTime: 3.307 s\r\nRan all test suites matching /tvprofil.com/i.\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2396', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/events', - html_url: 'https://github.com/iptv-org/epg/issues/2396', - id: 2370189473, - node_id: 'I_kwDOFLVvtM6NRjih', - number: 2396, - title: 'iltalehti.fi', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2024-06-24T12:56:45Z', - updated_at: '2024-12-27T05:18:16Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\niltalehti.fi\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- iltalehti.fi \r\n\r\n> test\r\n> run-script-os iltalehti.fi\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand iltalehti.fi\r\n\r\n FAIL sites/iltalehti.fi/iltalehti.fi.test.js\r\n ✕ can generate valid url (10 ms)\r\n ✓ can parse response (28 ms)\r\n ✓ can handle empty guide (1 ms)\r\n\r\n ● can generate valid url\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: "https://telkku.com/api/channel-groups/default_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails"\r\n Received: "https://telkku.com/api/channel-groups/default_builtin_channelgroupdefault_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails"\r\n\r\n 15 |\r\n 16 | it(\'can generate valid url\', () => {\r\n > 17 | expect(url({ channel, date })).toBe(\r\n | ^\r\n 18 | \'https://telkku.com/api/channel-groups/default_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails\'\r\n 19 | )\r\n 20 | })\r\n\r\n at Object. (sites/iltalehti.fi/iltalehti.fi.test.js:17:34)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 2 passed, 3 total\r\nSnapshots: 0 total\r\nTime: 3.193 s\r\nRan all test suites matching /iltalehti.fi/i.\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2395', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/events', - html_url: 'https://github.com/iptv-org/epg/issues/2395', - id: 2370186157, - node_id: 'I_kwDOFLVvtM6NRiut', - number: 2395, - title: 'chaines-tv.orange.fr', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 2, - created_at: '2024-06-24T12:55:21Z', - updated_at: '2024-12-27T05:17:25Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\r\n\r\nchaines-tv.orange.fr\r\n\r\n### Description\r\n\r\nTest failed:\r\n\r\n```sh\r\nnpm test -- chaines-tv.orange.fr\r\n\r\n> test\r\n> run-script-os chaines-tv.orange.fr\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand chaines-tv.orange.fr\r\n\r\n FAIL sites/chaines-tv.orange.fr/chaines-tv.orange.fr.test.js\r\n ✓ can generate valid url (5 ms)\r\n ✕ can parse response (12 ms)\r\n ✓ can handle empty guide (1 ms)\r\n\r\n ● can parse response\r\n\r\n expect(received).toMatchObject(expected)\r\n\r\n - Expected - 1\r\n + Received + 1\r\n\r\n @@ -3,8 +3,8 @@\r\n "category": "Série Suspense",\r\n "description": "Un tueur en série prend un plaisir pervers à prévenir les autorités de Tallahassee avant chaque nouveau meurtre. Rossi apprend le décès d\'un de ses vieux amis.",\r\n "icon": "https://proxymedia.woopic.com/340/p/169_EMI_9697669.jpg",\r\n "start": "2021-11-07T23:35:00.000Z",\r\n "stop": "2021-11-08T00:20:00.000Z",\r\n - "title": "Tête de liste",\r\n + "title": "Esprits criminels",\r\n },\r\n ]\r\n\r\n 23 | it(\'can parse response\', () => {\r\n 24 | const result = parser({ date, channel, content })\r\n > 25 | expect(result).toMatchObject([\r\n | ^\r\n 26 | {\r\n 27 | start: \'2021-11-07T23:35:00.000Z\',\r\n 28 | stop: \'2021-11-08T00:20:00.000Z\',\r\n\r\n at Object. (sites/chaines-tv.orange.fr/chaines-tv.orange.fr.test.js:25:18)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 2 passed, 3 total\r\nSnapshots: 0 total\r\nTime: 4.003 s\r\nRan all test suites matching /chaines-tv.orange.fr/i.\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2304', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/events', - html_url: 'https://github.com/iptv-org/epg/issues/2304', - id: 2064638324, - node_id: 'I_kwDOFLVvtM57D-F0', - number: 2304, - title: 'digiturk.com.tr Missing Channel Identifications', - user: { - login: 'UzunMuhalefet', - id: 80906858, - node_id: 'MDQ6VXNlcjgwOTA2ODU4', - avatar_url: 'https://avatars.githubusercontent.com/u/80906858?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/UzunMuhalefet', - html_url: 'https://github.com/UzunMuhalefet', - followers_url: 'https://api.github.com/users/UzunMuhalefet/followers', - following_url: 'https://api.github.com/users/UzunMuhalefet/following{/other_user}', - gists_url: 'https://api.github.com/users/UzunMuhalefet/gists{/gist_id}', - starred_url: 'https://api.github.com/users/UzunMuhalefet/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/UzunMuhalefet/subscriptions', - organizations_url: 'https://api.github.com/users/UzunMuhalefet/orgs', - repos_url: 'https://api.github.com/users/UzunMuhalefet/repos', - events_url: 'https://api.github.com/users/UzunMuhalefet/events{/privacy}', - received_events_url: 'https://api.github.com/users/UzunMuhalefet/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2024-01-03T20:57:58Z', - updated_at: '2024-12-27T05:32:37Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\r\n\r\ndigiturk.com.tr\r\n\r\n### Describe your issue\r\n\r\nThe following channels can be corrected as follows. (I added the TVG-IDs if they exist in https://iptv-org.github.io/)\r\n\r\n```\r\nKANAL 24 HD\r\nTARIH TV HD\r\nSÖZCÜ TV HD\r\n```\r\n\r\nLet me clarify the cases:\r\n- SZC changed its name to Sözcü TV\r\n- 24 TV often called as Kanal (Channel) 24\r\n- Tarih TV is straightforward.\r\n', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2303', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/events', - html_url: 'https://github.com/iptv-org/epg/issues/2303', - id: 2064633657, - node_id: 'I_kwDOFLVvtM57D885', - number: 2303, - title: 'dsmart.com.tr Channel Identifications', - user: { - login: 'UzunMuhalefet', - id: 80906858, - node_id: 'MDQ6VXNlcjgwOTA2ODU4', - avatar_url: 'https://avatars.githubusercontent.com/u/80906858?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/UzunMuhalefet', - html_url: 'https://github.com/UzunMuhalefet', - followers_url: 'https://api.github.com/users/UzunMuhalefet/followers', - following_url: 'https://api.github.com/users/UzunMuhalefet/following{/other_user}', - gists_url: 'https://api.github.com/users/UzunMuhalefet/gists{/gist_id}', - starred_url: 'https://api.github.com/users/UzunMuhalefet/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/UzunMuhalefet/subscriptions', - organizations_url: 'https://api.github.com/users/UzunMuhalefet/orgs', - repos_url: 'https://api.github.com/users/UzunMuhalefet/repos', - events_url: 'https://api.github.com/users/UzunMuhalefet/events{/privacy}', - received_events_url: 'https://api.github.com/users/UzunMuhalefet/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 1, - created_at: '2024-01-03T20:53:34Z', - updated_at: '2024-12-27T05:44:16Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Describe your issue\r\n\r\nThe following channels can be corrected as follows. (I added the TVG-IDs if they exist in https://iptv-org.github.io/)\r\n\r\n```\r\nNR1\r\nNR1 Türk\r\nTRT EBA TV İlkokul\r\nTRT EBA TV Ortaokul\r\nTRT EBA TV Lise\r\nÇifçi TV\r\nKanal 16\r\nFlash Haber\r\nYeni Kocaeli TV\r\nATV Turkiye SD\r\nTRT EBA TV İlkokul SD\r\nTRT EBA TV Ortaokul SD\r\nTRT EBA TV Lise SD\r\nTarih Tv\r\nSZC\r\nTRT 3 Spor\r\n``` \r\n\r\nLet me clarify the cases: \r\n\r\n- NR1 stands for Number One\r\n- Cifci TV - Çiftçi TV - misspelling\r\n- The number 16 is spelled as onaltı (on -> 10, altı->6, on6 -> 16) in Turkish so on6 - Kanal 16\r\n- Flash TV changed its name to Flash Haber TV\r\n- SZC changed its name to Sözcü TV\r\n- TRT 3 is a strange channel that usually streams the same content as TRT Spor but when there is a Turkish parliament event it switches to that event. So, the channel is both called TRT 3 and TRT 3 Spor.\r\n', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2272', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/events', - html_url: 'https://github.com/iptv-org/epg/issues/2272', - id: 2022135766, - node_id: 'I_kwDOFLVvtM54h1fW', - number: 2272, - title: 'Film titles with numbers only in the title (as in "1900" or "1917") don\'t show up', - user: { - login: 'GlamoramaAttack', - id: 116585465, - node_id: 'U_kgDOBvLz-Q', - avatar_url: 'https://avatars.githubusercontent.com/u/116585465?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/GlamoramaAttack', - html_url: 'https://github.com/GlamoramaAttack', - followers_url: 'https://api.github.com/users/GlamoramaAttack/followers', - following_url: 'https://api.github.com/users/GlamoramaAttack/following{/other_user}', - gists_url: 'https://api.github.com/users/GlamoramaAttack/gists{/gist_id}', - starred_url: 'https://api.github.com/users/GlamoramaAttack/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/GlamoramaAttack/subscriptions', - organizations_url: 'https://api.github.com/users/GlamoramaAttack/orgs', - repos_url: 'https://api.github.com/users/GlamoramaAttack/repos', - events_url: 'https://api.github.com/users/GlamoramaAttack/events{/privacy}', - received_events_url: 'https://api.github.com/users/GlamoramaAttack/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 2, - created_at: '2023-12-02T17:29:50Z', - updated_at: '2024-12-27T05:02:05Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\r\n\r\ntvpassport.com\r\n\r\n### Describe your issue\r\n\r\nFilm titles with numbers only in the title -as in "1900" or "1917"- don\'t show up at all.\r\n\r\nSorry, I don\'t understand anything about how to write a script or fix it but I see there is notable difference in the **guide.xml** file - the examples are excerpts from tvpassport.com. This isn\'t a new bug I think, it\'s just that I thought for a long time it\'s a Kodi problem before looking into the guide.xml file...\r\n\r\n```\r\nchannel="Showtime2East.us">The Caine Mutiny Court-MartialA \r\nchannel="Showtime2East.us">Two British soldiers receive seemingly impossible orders \r\nchannel="Showtime2East.us">There Will Be BloodDaniel \r\n```\r\nor:\r\n\r\n```\r\nchannel="MGMPlusEast.us">A Fistful of DynamiteA thief \r\nchannel="MGMPlusEast.us">The son (Robert De Niro) of a landowner and the son \r\nchannel="MGMPlusEast.us">Indecent ProposalA Las Vegas \r\n```\r\n\r\nFor some reason "title lang" gets replaced by "desc lang" and the film title is nowhere displayed.\r\n\r\nOn Kodi it looks like this for the films and you can also see it\'s not a problem if the film title includes more than numbers (see "88 Minutes" or "Resistance: 1942"). But titles as "1900", "1917" or "1408" (Horror with John Cusack) appear blank.\r\n\r\n![NoTitleWithNumbers](https://github.com/iptv-org/epg/assets/116585465/155f98f8-8529-4c42-af3c-def1edcf5651)\r\n\r\nI\'m not sure whether the problem also exists with other sources than tvpassport.com because I use only two other (German language) EPG sources that have currently no film titles with numbers only. But I assume it\'s a bug if it\'s not reduced to tvpassport.', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2176', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/events', - html_url: 'https://github.com/iptv-org/epg/issues/2176', - id: 1915947653, - node_id: 'I_kwDOFLVvtM5yMwqF', - number: 2176, - title: 'tvtv', - user: { - login: 'jvdillon', - id: 1137078, - node_id: 'MDQ6VXNlcjExMzcwNzg=', - avatar_url: 'https://avatars.githubusercontent.com/u/1137078?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/jvdillon', - html_url: 'https://github.com/jvdillon', - followers_url: 'https://api.github.com/users/jvdillon/followers', - following_url: 'https://api.github.com/users/jvdillon/following{/other_user}', - gists_url: 'https://api.github.com/users/jvdillon/gists{/gist_id}', - starred_url: 'https://api.github.com/users/jvdillon/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/jvdillon/subscriptions', - organizations_url: 'https://api.github.com/users/jvdillon/orgs', - repos_url: 'https://api.github.com/users/jvdillon/repos', - events_url: 'https://api.github.com/users/jvdillon/events{/privacy}', - received_events_url: 'https://api.github.com/users/jvdillon/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710318, - node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', - name: 'status:warning', - color: 'fbca06', - default: false, - description: 'The guide downloads, but contains errors' - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 6, - created_at: '2023-09-27T16:34:00Z', - updated_at: '2024-12-27T04:55:00Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\r\n\r\ntvtv.us\r\n\r\n### Description\r\n\r\nStarts getting error 429 after several 100 scrapes. I tried setting the delay to 1000ms, 1500ms, and 2000ms but keep seeing the issue.\r\n\r\nIt almost appears to happen after a sequence of 0 program scrapes. I wonder if the delay is not happening when nothing is downloaded which causes tvtv.us to throttle which triggers 0 programs downloaded. (Ie a feedback loop)', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/timeline', - performed_via_github_app: null, - state_reason: null - } -] diff --git a/tests/__data__/input/issues/broken_guide_down.mjs b/tests/__data__/input/sites_update/issues.mjs similarity index 58% rename from tests/__data__/input/issues/broken_guide_down.mjs rename to tests/__data__/input/sites_update/issues.mjs index 9f069689..96048350 100644 --- a/tests/__data__/input/issues/broken_guide_down.mjs +++ b/tests/__data__/input/sites_update/issues.mjs @@ -1,1551 +1,2523 @@ -export default [ - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2547', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/events', - html_url: 'https://github.com/iptv-org/epg/issues/2547', - id: 2760418979, - node_id: 'I_kwDOFLVvtM6kiKaj', - number: 2547, - title: 'digiturk.com.tr', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 1, - created_at: '2024-12-27T05:33:47Z', - updated_at: '2024-12-28T20:37:53Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\ndigiturk.com.tr\n\n### Description\n\n```sh\r\nnpm run grab --- --site=digiturk.com.tr\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=digiturk.com.tr\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: digiturk.com.tr\r\nloading channels...\r\n found 139 channel(s)\r\nrun #1:\r\n [1/278] digiturk.com.tr (en) - AlJazeeraEnglish.qa - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/278] digiturk.com.tr (en) - AlJazeeraEnglish.qa - Dec 28, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/278] digiturk.com.tr (tr) - Yaban.tr - Dec 28, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/reactions', - total_count: 1, - '+1': 1, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2542', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/events', - html_url: 'https://github.com/iptv-org/epg/issues/2542', - id: 2759639980, - node_id: 'I_kwDOFLVvtM6kfMOs', - number: 2542, - title: 'tvguide.com not working', - user: { - login: 'SiWafer', - id: 10903014, - node_id: 'MDQ6VXNlcjEwOTAzMDE0', - avatar_url: 'https://avatars.githubusercontent.com/u/10903014?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/SiWafer', - html_url: 'https://github.com/SiWafer', - followers_url: 'https://api.github.com/users/SiWafer/followers', - following_url: 'https://api.github.com/users/SiWafer/following{/other_user}', - gists_url: 'https://api.github.com/users/SiWafer/gists{/gist_id}', - starred_url: 'https://api.github.com/users/SiWafer/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/SiWafer/subscriptions', - organizations_url: 'https://api.github.com/users/SiWafer/orgs', - repos_url: 'https://api.github.com/users/SiWafer/repos', - events_url: 'https://api.github.com/users/SiWafer/events{/privacy}', - received_events_url: 'https://api.github.com/users/SiWafer/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2024-12-26T11:11:24Z', - updated_at: '2024-12-27T05:28:55Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\n\ntvguide.com\n\n### Description\n\n```\r\nepg@rpi:~/epg$ npm run grab --- --site=tvguide.com\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tvguide.com\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tvguide.com\r\nloading channels...\r\n found 39 channel(s)\r\nrun #1:\r\n [1/78] tvguide.com (en) - AEEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [2/78] tvguide.com (en) - AEEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [3/78] tvguide.com (en) - AMCEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [4/78] tvguide.com (en) - AMCEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [5/78] tvguide.com (en) - BravoEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [6/78] tvguide.com (en) - BravoEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [7/78] tvguide.com (en) - BBCAmericaEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [8/78] tvguide.com (en) - CNBC.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [9/78] tvguide.com (en) - CNBC.us - Dec 26, 2024 (0 programs)\r\n...\r\n...\r\n...\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2541', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/events', - html_url: 'https://github.com/iptv-org/epg/issues/2541', - id: 2758749907, - node_id: 'I_kwDOFLVvtM6kby7T', - number: 2541, - title: 'elcinema.com grab error 403', - user: { - login: 'xercessss', - id: 189765257, - node_id: 'U_kgDOC0-WiQ', - avatar_url: 'https://avatars.githubusercontent.com/u/189765257?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/xercessss', - html_url: 'https://github.com/xercessss', - followers_url: 'https://api.github.com/users/xercessss/followers', - following_url: 'https://api.github.com/users/xercessss/following{/other_user}', - gists_url: 'https://api.github.com/users/xercessss/gists{/gist_id}', - starred_url: 'https://api.github.com/users/xercessss/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/xercessss/subscriptions', - organizations_url: 'https://api.github.com/users/xercessss/orgs', - repos_url: 'https://api.github.com/users/xercessss/repos', - events_url: 'https://api.github.com/users/xercessss/events{/privacy}', - received_events_url: 'https://api.github.com/users/xercessss/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2024-12-25T11:34:16Z', - updated_at: '2024-12-27T05:28:07Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\n\nelcinema.com\n\n### Description\n\ngrabbing elcinema.com epg return error 403 for both ar and en language:\r\nERR: Request failed with status code 403\r\n', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2509', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/events', - html_url: 'https://github.com/iptv-org/epg/issues/2509', - id: 2740938968, - node_id: 'I_kwDOFLVvtM6jX2jY', - number: 2509, - title: 'ssl problem maxtv.hrvatskitelekom.hr', - user: { - login: 'uploadkom', - id: 130712472, - node_id: 'U_kgDOB8qDmA', - avatar_url: 'https://avatars.githubusercontent.com/u/130712472?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/uploadkom', - html_url: 'https://github.com/uploadkom', - followers_url: 'https://api.github.com/users/uploadkom/followers', - following_url: 'https://api.github.com/users/uploadkom/following{/other_user}', - gists_url: 'https://api.github.com/users/uploadkom/gists{/gist_id}', - starred_url: 'https://api.github.com/users/uploadkom/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/uploadkom/subscriptions', - organizations_url: 'https://api.github.com/users/uploadkom/orgs', - repos_url: 'https://api.github.com/users/uploadkom/repos', - events_url: 'https://api.github.com/users/uploadkom/events{/privacy}', - received_events_url: 'https://api.github.com/users/uploadkom/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 3, - created_at: '2024-12-15T22:21:22Z', - updated_at: '2024-12-27T05:26:26Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\n\nmaxtv.hrvatskitelekom.hr\n\n### Description\n\nssl problem', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2498', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/events', - html_url: 'https://github.com/iptv-org/epg/issues/2498', - id: 2728188494, - node_id: 'I_kwDOFLVvtM6inNpO', - number: 2498, - title: 'movistarplus.es', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2024-12-09T20:26:07Z', - updated_at: '2024-12-27T05:23:48Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\nmovistarplus.es\n\n### Description\n\n```sh\r\nnpm run grab -- --site=movistarplus.es\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=movistarplus.es\r\n\r\n(node:22362) ExperimentalWarning: `--experimental-loader` may be removed in the future; instead use `register()`:\r\n--import \'data:text/javascript,import { register } from "node:module"; import { pathToFileURL } from "node:url"; register("file%3A///Users/Arhey/Code/iptv-org/epg/node_modules/tsx/dist/loader.mjs", pathToFileURL("./"));\'\r\n(Use `node --trace-warnings ...` to show where the warning was created)\r\n(node:22362) UnsupportedWarning: `globalPreload` has been removed; use `initialize` instead.\r\n(Use `node --trace-warnings ...` to show where the warning was created)\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: movistarplus.es\r\nloading channels...\r\n(node:22362) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\r\n found 186 channel(s)\r\nrun #1:\r\n [1/372] movistarplus.es (es) - ANTV - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/372] movistarplus.es (es) - ANTV - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/372] movistarplus.es (es) - ARAGTV - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [4/372] movistarplus.es (es) - CANSUR - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [5/372] movistarplus.es (es) - DAZNL2 - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [6/372] movistarplus.es (es) - MLIGS - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [7/372] movistarplus.es (es) - AMC.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [8/372] movistarplus.es (es) - ComediaporMovistarPlusPlus.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [9/372] movistarplus.es (es) - LasEstrellasEuropa.mx - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [10/372] movistarplus.es (es) - LasEstrellasEuropa.mx - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [11/372] movistarplus.es (es) - ComediaporMovistarPlusPlus.es - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [12/372] movistarplus.es (es) - LaResistencia.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [13/372] movistarplus.es (es) - LaResistencia.es - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2445', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/events', - html_url: 'https://github.com/iptv-org/epg/issues/2445', - id: 2567652015, - node_id: 'I_kwDOFLVvtM6ZC0Kv', - number: 2445, - title: 'EPG from dishtv.in stopped with error code 404', - user: { - login: 'dheer99', - id: 20639130, - node_id: 'MDQ6VXNlcjIwNjM5MTMw', - avatar_url: 'https://avatars.githubusercontent.com/u/20639130?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/dheer99', - html_url: 'https://github.com/dheer99', - followers_url: 'https://api.github.com/users/dheer99/followers', - following_url: 'https://api.github.com/users/dheer99/following{/other_user}', - gists_url: 'https://api.github.com/users/dheer99/gists{/gist_id}', - starred_url: 'https://api.github.com/users/dheer99/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/dheer99/subscriptions', - organizations_url: 'https://api.github.com/users/dheer99/orgs', - repos_url: 'https://api.github.com/users/dheer99/repos', - events_url: 'https://api.github.com/users/dheer99/events{/privacy}', - received_events_url: 'https://api.github.com/users/dheer99/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 2, - created_at: '2024-10-05T04:30:52Z', - updated_at: '2024-12-27T05:20:11Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\n\ndishtv.in\n\n### Description\n\nEPG from dishtv.in stopped with error code 404\r\n\r\n [91/98] dishtv.in (en) - StarPlus.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [92/98] dishtv.in (en) - SET.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [93/98] dishtv.in (en) - ZeeCinema.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [94/98] dishtv.in (en) - SonySportsTen5.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [95/98] dishtv.in (en) - StarSports1.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [96/98] dishtv.in (en) - SET.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [97/98] dishtv.in (en) - SonySportsTen3.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [98/98] dishtv.in (en) - Colors.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n done in 00h 00m 03s\r\n', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2339', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/events', - html_url: 'https://github.com/iptv-org/epg/issues/2339', - id: 2172864415, - node_id: 'I_kwDOFLVvtM6Bg0ef', - number: 2339, - title: - 'directv.com.ar and directv.com.uy not working ERR: Unexpected token \'<\', " grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=kan.org.il --output=kan.org.il.xml\r\n\r\nstarting...\r\nconfig:\r\n output: kan.org.il.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: kan.org.il\r\nloading channels...\r\n found 3 channel(s)\r\nrun #1:\r\n [1/6] kan.org.il (ar) - Makan33.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/6] kan.org.il (ar) - Makan33.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/6] kan.org.il (he) - KanEducational.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [4/6] kan.org.il (he) - KanEducational.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [5/6] kan.org.il (he) - Kan11.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [6/6] kan.org.il (he) - Kan11.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n done in 00h 00m 01s\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2273/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2273/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2270', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/events', - html_url: 'https://github.com/iptv-org/epg/issues/2270', - id: 2022018570, - node_id: 'I_kwDOFLVvtM54hY4K', - number: 2270, - title: 'vivacom.bg is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2023-12-02T12:16:22Z', - updated_at: '2024-12-27T05:00:36Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\nvivacom.bg\n\n### Description\n\n```sh\r\nnpm run grab -- --site=vivacom.bg\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=vivacom.bg\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: vivacom.bg\r\nloading channels...\r\n found 154 channel(s)\r\nrun #1:\r\n [1/308] vivacom.bg (bg) - 24Kitchen.bg - Dec 2, 2023 (0 programs)\r\n [2/308] vivacom.bg (bg) - 24Kitchen.bg - Dec 3, 2023 (0 programs)\r\n [3/308] vivacom.bg (bg) - 78TV.bg - Dec 3, 2023 (0 programs)\r\n [4/308] vivacom.bg (bg) - AlfaTV.bg - Dec 3, 2023 (0 programs)\r\n [5/308] vivacom.bg (bg) - AXNEurope.gr - Dec 3, 2023 (0 programs)\r\n [6/308] vivacom.bg (bg) - BNT3.bg - Dec 3, 2023 (0 programs)\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2264', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/events', - html_url: 'https://github.com/iptv-org/epg/issues/2264', - id: 2019407629, - node_id: 'I_kwDOFLVvtM54XbcN', - number: 2264, - title: 'tva.tv is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2023-11-30T20:00:18Z', - updated_at: '2024-12-27T05:00:24Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\ntva.tv\n\n### Description\n\n```sh\r\nnpm run grab -- --site=tva.tv\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tva.tv\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tva.tv\r\nloading channels...\r\n found 28 channel(s)\r\nrun #1:\r\n [1/56] tva.tv (fa) - DocTV.ir - Nov 30, 2023 (0 programs)\r\n ERR: Connection timeout\r\n [2/56] tva.tv (fa) - DocTV.ir - Dec 1, 2023 (0 programs)\r\n ERR: Connection timeout\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2263', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/events', - html_url: 'https://github.com/iptv-org/epg/issues/2263', - id: 2019376043, - node_id: 'I_kwDOFLVvtM54XTur', - number: 2263, - title: 'tv.yettel.hu is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2023-11-30T19:38:28Z', - updated_at: '2024-12-27T04:59:14Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\ntv.yettel.hu\n\n### Description\n\n```sh\r\nnpm run grab -- --site=tv.yettel.hu\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tv.yettel.hu\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tv.yettel.hu\r\nloading channels...\r\n found 74 channel(s)\r\nrun #1:\r\n [1/148] tv.yettel.hu (en) - BBCNewsEurope.uk - Nov 30, 2023 (0 programs)\r\n ERR: Client network socket disconnected before secure TLS connection was established\r\n [2/148] tv.yettel.hu (en) - BBCNewsEurope.uk - Dec 1, 2023 (0 programs)\r\n ERR: Client network socket disconnected before secure TLS connection was established\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2257', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/events', - html_url: 'https://github.com/iptv-org/epg/issues/2257', - id: 2011054011, - node_id: 'I_kwDOFLVvtM533j-7', - number: 2257, - title: 'rtb.gov.bn is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2023-11-26T14:02:13Z', - updated_at: '2024-12-27T04:59:29Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\nrtb.gov.bn\n\n### Description\n\n```sh\r\nnpm run grab -- --site=rtb.gov.bn\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=rtb.gov.bn\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: rtb.gov.bn\r\nloading channels...\r\n found 3 channel(s)\r\nrun #1:\r\n [1/6] rtb.gov.bn (ms) - RTBAneka.bn - Nov 26, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n [2/6] rtb.gov.bn (ms) - RTBAneka.bn - Nov 27, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n [3/6] rtb.gov.bn (ms) - RTBPerdana.bn - Nov 27, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n```\r\n\r\nThere is no link to the guide on the website at the moment either: https://www.rtb.gov.bn/SitePages/Programme%20Guide.aspx', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2255', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/events', - html_url: 'https://github.com/iptv-org/epg/issues/2255', - id: 2011043202, - node_id: 'I_kwDOFLVvtM533hWC', - number: 2255, - title: 'rev.bs is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 1, - created_at: '2023-11-26T13:31:22Z', - updated_at: '2024-12-27T22:02:28Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\nrev.bs\n\n### Description\n\n```sh\r\nnpm run grab -- --site=rev.bs\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=rev.bs\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: rev.bs\r\nloading channels...\r\n found 179 channel(s)\r\nrun #1:\r\n [1/358] rev.bs (en) - 3ABNEnglish.us - Nov 26, 2023 (0 programs)\r\n [2/358] rev.bs (en) - 3ABNEnglish.us - Nov 27, 2023 (0 programs)\r\n [3/358] rev.bs (en) - AEEast.us - Nov 27, 2023 (0 programs)\r\n [4/358] rev.bs (en) - AMCEast.us - Nov 27, 2023 (0 programs)\r\n```\r\n---\r\n\r\n```json\r\n{\r\n\t"status": "OK",\r\n\t"data": {\r\n\t\t"schedule": [],\r\n\t\t"dateTime": {\r\n\t\t\t"date": "2023-11-27",\r\n\t\t\t"page": 0\r\n\t\t},\r\n\t\t"runtimes": [\r\n\t\t\t{\r\n\t\t\t\t"Rev class loaded": 1700899490.604637\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"TVGuide Class Loaded": 1700899490.638891\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"Validated form": 1700899490.640116\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"Pulled schedules": 1700899490.642099\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n}\r\n```\r\n\r\nhttps://www.rev.bs/wp-content/uploads/tv-guide/2023-11-27_0.json\r\n\r\n---\r\n\r\nimage\r\n\r\nhttps://www.rev.bs/tv-guide-404/', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2241', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/events', - html_url: 'https://github.com/iptv-org/epg/issues/2241', - id: 2002096969, - node_id: 'I_kwDOFLVvtM53VZNJ', - number: 2241, - title: 'm.tv.sms.cz is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 4, - created_at: '2023-11-20T12:28:47Z', - updated_at: '2024-12-27T04:58:41Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\nm.tv.sms.cz\n\n### Description\n\n```sh\r\nnpm run grab -- --site=m.tv.sms.cz\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=m.tv.sms.cz\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: m.tv.sms.cz\r\nloading channels...\r\n found 525 channel(s)\r\nrun #1:\r\n [1/1050] m.tv.sms.cz (bs) - BNTV.ba - Nov 20, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n\r\n [2/1050] m.tv.sms.cz (bs) - BNTV.ba - Nov 21, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n\r\n [3/1050] m.tv.sms.cz (cs) - AMC.cz - Nov 21, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n```\r\n\r\nhttps://check-host.net/check-report/135d7e05kb9d', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2240', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/events', - html_url: 'https://github.com/iptv-org/epg/issues/2240', - id: 2001847449, - node_id: 'I_kwDOFLVvtM53UcSZ', - number: 2240, - title: 'kplus.vn is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2023-11-20T10:19:23Z', - updated_at: '2024-12-27T04:57:49Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\nkplus.vn\n\n### Description\n\n```sh\r\nnpm run grab -- --site=kplus.vn\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=kplus.vn\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: kplus.vn\r\nloading channels...\r\n found 26 channel(s)\r\nrun #1:\r\n [1/52] kplus.vn (vi) - AsianFoodNetwork.sg - Nov 20, 2023 (0 programs)\r\n [2/52] kplus.vn (vi) - AsianFoodNetwork.sg - Nov 21, 2023 (0 programs)\r\n [3/52] kplus.vn (vi) - AXN.vn - Nov 21, 2023 (0 programs)\r\n [4/52] kplus.vn (vi) - DiscoveryChannelSoutheastAsia.sg - Nov 21, 2023 (0 programs)\r\n```\r\n\r\nThe site also currently does not display the guide:\r\nimage\r\nhttps://www.kplus.vn/highlights/broadcast-schedule', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2239', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/events', - html_url: 'https://github.com/iptv-org/epg/issues/2239', - id: 2000457187, - node_id: 'I_kwDOFLVvtM53PI3j', - number: 2239, - title: 'comteco.com.bo is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 3, - created_at: '2023-11-18T15:03:48Z', - updated_at: '2024-12-27T21:25:41Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\ncomteco.com.bo\n\n### Description\n\n```sh\r\nnpm run grab -- --site=comteco.com.bo\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=comteco.com.bo\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: comteco.com.bo\r\nloading channels...\r\n found 72 channel(s)\r\nrun #1:\r\n [1/144] comteco.com.bo (es) - AbyaYalaTV.bo - Nov 18, 2023 (0 programs)\r\n [2/144] comteco.com.bo (es) - AbyaYalaTV.bo - Nov 19, 2023 (0 programs)\r\n [3/144] comteco.com.bo (es) - AEPanregional.us - Nov 19, 2023 (0 programs)\r\n [4/144] comteco.com.bo (es) - AnimalPlanetLatinAmerica.us - Nov 19, 2023 (0 programs)\r\n [5/144] comteco.com.bo (es) - BoliviaTV72.bo - Nov 19, 2023 (0 programs)\r\n```\r\n\r\nhttps://comteco.com.bo/pages/canales-y-programacion-tv/paquete-oro/ABYA%20YALA\r\nimage', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2237', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/events', - html_url: 'https://github.com/iptv-org/epg/issues/2237', - id: 2000349577, - node_id: 'I_kwDOFLVvtM53OumJ', - number: 2237, - title: 'canalplus-haiti.com is broken', - user: { - login: 'freearhey', - id: 7253922, - node_id: 'MDQ6VXNlcjcyNTM5MjI=', - avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/freearhey', - html_url: 'https://github.com/freearhey', - followers_url: 'https://api.github.com/users/freearhey/followers', - following_url: 'https://api.github.com/users/freearhey/following{/other_user}', - gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', - starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', - organizations_url: 'https://api.github.com/users/freearhey/orgs', - repos_url: 'https://api.github.com/users/freearhey/repos', - events_url: 'https://api.github.com/users/freearhey/events{/privacy}', - received_events_url: 'https://api.github.com/users/freearhey/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 0, - created_at: '2023-11-18T09:46:29Z', - updated_at: '2024-12-27T04:57:02Z', - closed_at: null, - author_association: 'COLLABORATOR', - active_lock_reason: null, - body: '### Site\n\ncanalplus-haiti.com\n\n### Description\n\n```sh\r\nnpm run grab -- --site=canalplus-haiti.com\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=canalplus-haiti.com\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: canalplus-haiti.com\r\nloading channels...\r\n found 111 channel(s)\r\nrun #1:\r\n [1/222] canalplus-haiti.com (fr) - 13emeRue.fr - Nov 18, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [2/222] canalplus-haiti.com (fr) - 13emeRue.fr - Nov 19, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [3/222] canalplus-haiti.com (fr) - ZoukTV.mq - Nov 19, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [4/222] canalplus-haiti.com (fr) - ZoukTV.mq - Nov 18, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n```\r\n\r\nhttps://check-host.net/check-report/134fc56bk333', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/reactions', - total_count: 0, - '+1': 0, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/timeline', - performed_via_github_app: null, - state_reason: null - }, - { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2173', - repository_url: 'https://api.github.com/repos/iptv-org/epg', - labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/labels{/name}', - comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/comments', - events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/events', - html_url: 'https://github.com/iptv-org/epg/issues/2173', - id: 1903824500, - node_id: 'I_kwDOFLVvtM5xeg50', - number: 2173, - title: 'hd-plus.de - 0 programs on all channels', - user: { - login: 'x011', - id: 4313821, - node_id: 'MDQ6VXNlcjQzMTM4MjE=', - avatar_url: 'https://avatars.githubusercontent.com/u/4313821?v=4', - gravatar_id: '', - url: 'https://api.github.com/users/x011', - html_url: 'https://github.com/x011', - followers_url: 'https://api.github.com/users/x011/followers', - following_url: 'https://api.github.com/users/x011/following{/other_user}', - gists_url: 'https://api.github.com/users/x011/gists{/gist_id}', - starred_url: 'https://api.github.com/users/x011/starred{/owner}{/repo}', - subscriptions_url: 'https://api.github.com/users/x011/subscriptions', - organizations_url: 'https://api.github.com/users/x011/orgs', - repos_url: 'https://api.github.com/users/x011/repos', - events_url: 'https://api.github.com/users/x011/events{/privacy}', - received_events_url: 'https://api.github.com/users/x011/received_events', - type: 'User', - user_view_type: 'public', - site_admin: false - }, - labels: [ - { - id: 4542348869, - node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', - url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', - name: 'broken guide', - color: 'eaeaea', - default: false, - description: "There's a problem with the guide" - }, - { - id: 7932710795, - node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', - url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', - name: 'status:down', - color: 'df3a4a', - default: false, - description: "The guide doesn't work" - } - ], - state: 'open', - locked: false, - assignee: null, - assignees: [], - milestone: null, - comments: 1, - created_at: '2023-09-19T22:45:56Z', - updated_at: '2024-12-27T04:54:11Z', - closed_at: null, - author_association: 'NONE', - active_lock_reason: null, - body: '### Site\r\n\r\nhd-plus.de\r\n\r\n### Description\r\n\r\nAll channels on hd-plus.de have 0 programs:\r\n```\r\n[1/60] hd-plus.de - 123tv.de - Sep 19, 2023 (0 programs)\r\n[2/60] hd-plus.de - 123tv.de - Sep 20, 2023 (0 programs)\r\n[3/60] hd-plus.de - ZDF.de - Sep 20, 2023 (0 programs)\r\n[4/60] hd-plus.de - ZDF.de - Sep 19, 2023 (0 programs)\r\n...\r\n```', - closed_by: null, - reactions: { - url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/reactions', - total_count: 6, - '+1': 6, - '-1': 0, - laugh: 0, - hooray: 0, - confused: 0, - heart: 0, - rocket: 0, - eyes: 0 - }, - timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/timeline', - performed_via_github_app: null, - state_reason: null - } -] +export default [ + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2547', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/events', + html_url: 'https://github.com/iptv-org/epg/issues/2547', + id: 2760418979, + node_id: 'I_kwDOFLVvtM6kiKaj', + number: 2547, + title: 'digiturk.com.tr', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2024-12-27T05:33:47Z', + updated_at: '2024-12-28T20:37:53Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ndigiturk.com.tr\n\n### Description\n\n```sh\r\nnpm run grab --- --site=digiturk.com.tr\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=digiturk.com.tr\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: digiturk.com.tr\r\nloading channels...\r\n found 139 channel(s)\r\nrun #1:\r\n [1/278] digiturk.com.tr (en) - AlJazeeraEnglish.qa - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/278] digiturk.com.tr (en) - AlJazeeraEnglish.qa - Dec 28, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/278] digiturk.com.tr (tr) - Yaban.tr - Dec 28, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/reactions', + total_count: 1, + '+1': 1, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2542', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/events', + html_url: 'https://github.com/iptv-org/epg/issues/2542', + id: 2759639980, + node_id: 'I_kwDOFLVvtM6kfMOs', + number: 2542, + title: 'tvguide.com not working', + user: { + login: 'SiWafer', + id: 10903014, + node_id: 'MDQ6VXNlcjEwOTAzMDE0', + avatar_url: 'https://avatars.githubusercontent.com/u/10903014?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/SiWafer', + html_url: 'https://github.com/SiWafer', + followers_url: 'https://api.github.com/users/SiWafer/followers', + following_url: 'https://api.github.com/users/SiWafer/following{/other_user}', + gists_url: 'https://api.github.com/users/SiWafer/gists{/gist_id}', + starred_url: 'https://api.github.com/users/SiWafer/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/SiWafer/subscriptions', + organizations_url: 'https://api.github.com/users/SiWafer/orgs', + repos_url: 'https://api.github.com/users/SiWafer/repos', + events_url: 'https://api.github.com/users/SiWafer/events{/privacy}', + received_events_url: 'https://api.github.com/users/SiWafer/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-12-26T11:11:24Z', + updated_at: '2024-12-27T05:28:55Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\ntvguide.com\n\n### Description\n\n```\r\nepg@rpi:~/epg$ npm run grab --- --site=tvguide.com\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tvguide.com\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tvguide.com\r\nloading channels...\r\n found 39 channel(s)\r\nrun #1:\r\n [1/78] tvguide.com (en) - AEEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [2/78] tvguide.com (en) - AEEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [3/78] tvguide.com (en) - AMCEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [4/78] tvguide.com (en) - AMCEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [5/78] tvguide.com (en) - BravoEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [6/78] tvguide.com (en) - BravoEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [7/78] tvguide.com (en) - BBCAmericaEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [8/78] tvguide.com (en) - CNBC.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [9/78] tvguide.com (en) - CNBC.us - Dec 26, 2024 (0 programs)\r\n...\r\n...\r\n...\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2541', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/events', + html_url: 'https://github.com/iptv-org/epg/issues/2541', + id: 2758749907, + node_id: 'I_kwDOFLVvtM6kby7T', + number: 2541, + title: 'elcinema.com grab error 403', + user: { + login: 'xercessss', + id: 189765257, + node_id: 'U_kgDOC0-WiQ', + avatar_url: 'https://avatars.githubusercontent.com/u/189765257?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/xercessss', + html_url: 'https://github.com/xercessss', + followers_url: 'https://api.github.com/users/xercessss/followers', + following_url: 'https://api.github.com/users/xercessss/following{/other_user}', + gists_url: 'https://api.github.com/users/xercessss/gists{/gist_id}', + starred_url: 'https://api.github.com/users/xercessss/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/xercessss/subscriptions', + organizations_url: 'https://api.github.com/users/xercessss/orgs', + repos_url: 'https://api.github.com/users/xercessss/repos', + events_url: 'https://api.github.com/users/xercessss/events{/privacy}', + received_events_url: 'https://api.github.com/users/xercessss/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-12-25T11:34:16Z', + updated_at: '2024-12-27T05:28:07Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\nelcinema.com\n\n### Description\n\ngrabbing elcinema.com epg return error 403 for both ar and en language:\r\nERR: Request failed with status code 403\r\n', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2509', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/events', + html_url: 'https://github.com/iptv-org/epg/issues/2509', + id: 2740938968, + node_id: 'I_kwDOFLVvtM6jX2jY', + number: 2509, + title: 'ssl problem maxtv.hrvatskitelekom.hr', + user: { + login: 'uploadkom', + id: 130712472, + node_id: 'U_kgDOB8qDmA', + avatar_url: 'https://avatars.githubusercontent.com/u/130712472?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/uploadkom', + html_url: 'https://github.com/uploadkom', + followers_url: 'https://api.github.com/users/uploadkom/followers', + following_url: 'https://api.github.com/users/uploadkom/following{/other_user}', + gists_url: 'https://api.github.com/users/uploadkom/gists{/gist_id}', + starred_url: 'https://api.github.com/users/uploadkom/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/uploadkom/subscriptions', + organizations_url: 'https://api.github.com/users/uploadkom/orgs', + repos_url: 'https://api.github.com/users/uploadkom/repos', + events_url: 'https://api.github.com/users/uploadkom/events{/privacy}', + received_events_url: 'https://api.github.com/users/uploadkom/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 3, + created_at: '2024-12-15T22:21:22Z', + updated_at: '2024-12-27T05:26:26Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\nmaxtv.hrvatskitelekom.hr\n\n### Description\n\nssl problem', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2498', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/events', + html_url: 'https://github.com/iptv-org/epg/issues/2498', + id: 2728188494, + node_id: 'I_kwDOFLVvtM6inNpO', + number: 2498, + title: 'movistarplus.es', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-12-09T20:26:07Z', + updated_at: '2024-12-27T05:23:48Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nmovistarplus.es\n\n### Description\n\n```sh\r\nnpm run grab -- --site=movistarplus.es\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=movistarplus.es\r\n\r\n(node:22362) ExperimentalWarning: `--experimental-loader` may be removed in the future; instead use `register()`:\r\n--import \'data:text/javascript,import { register } from "node:module"; import { pathToFileURL } from "node:url"; register("file%3A///Users/Arhey/Code/iptv-org/epg/node_modules/tsx/dist/loader.mjs", pathToFileURL("./"));\'\r\n(Use `node --trace-warnings ...` to show where the warning was created)\r\n(node:22362) UnsupportedWarning: `globalPreload` has been removed; use `initialize` instead.\r\n(Use `node --trace-warnings ...` to show where the warning was created)\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: movistarplus.es\r\nloading channels...\r\n(node:22362) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\r\n found 186 channel(s)\r\nrun #1:\r\n [1/372] movistarplus.es (es) - ANTV - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/372] movistarplus.es (es) - ANTV - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/372] movistarplus.es (es) - ARAGTV - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [4/372] movistarplus.es (es) - CANSUR - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [5/372] movistarplus.es (es) - DAZNL2 - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [6/372] movistarplus.es (es) - MLIGS - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [7/372] movistarplus.es (es) - AMC.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [8/372] movistarplus.es (es) - ComediaporMovistarPlusPlus.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [9/372] movistarplus.es (es) - LasEstrellasEuropa.mx - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [10/372] movistarplus.es (es) - LasEstrellasEuropa.mx - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [11/372] movistarplus.es (es) - ComediaporMovistarPlusPlus.es - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [12/372] movistarplus.es (es) - LaResistencia.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [13/372] movistarplus.es (es) - LaResistencia.es - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2445', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/events', + html_url: 'https://github.com/iptv-org/epg/issues/2445', + id: 2567652015, + node_id: 'I_kwDOFLVvtM6ZC0Kv', + number: 2445, + title: 'EPG from dishtv.in stopped with error code 404', + user: { + login: 'dheer99', + id: 20639130, + node_id: 'MDQ6VXNlcjIwNjM5MTMw', + avatar_url: 'https://avatars.githubusercontent.com/u/20639130?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/dheer99', + html_url: 'https://github.com/dheer99', + followers_url: 'https://api.github.com/users/dheer99/followers', + following_url: 'https://api.github.com/users/dheer99/following{/other_user}', + gists_url: 'https://api.github.com/users/dheer99/gists{/gist_id}', + starred_url: 'https://api.github.com/users/dheer99/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/dheer99/subscriptions', + organizations_url: 'https://api.github.com/users/dheer99/orgs', + repos_url: 'https://api.github.com/users/dheer99/repos', + events_url: 'https://api.github.com/users/dheer99/events{/privacy}', + received_events_url: 'https://api.github.com/users/dheer99/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: '2024-10-05T04:30:52Z', + updated_at: '2024-12-27T05:20:11Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\ndishtv.in\n\n### Description\n\nEPG from dishtv.in stopped with error code 404\r\n\r\n [91/98] dishtv.in (en) - StarPlus.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [92/98] dishtv.in (en) - SET.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [93/98] dishtv.in (en) - ZeeCinema.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [94/98] dishtv.in (en) - SonySportsTen5.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [95/98] dishtv.in (en) - StarSports1.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [96/98] dishtv.in (en) - SET.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [97/98] dishtv.in (en) - SonySportsTen3.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [98/98] dishtv.in (en) - Colors.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n done in 00h 00m 03s\r\n', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2339', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/events', + html_url: 'https://github.com/iptv-org/epg/issues/2339', + id: 2172864415, + node_id: 'I_kwDOFLVvtM6Bg0ef', + number: 2339, + title: + 'directv.com.ar and directv.com.uy not working ERR: Unexpected token \'<\', " grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=kan.org.il --output=kan.org.il.xml\r\n\r\nstarting...\r\nconfig:\r\n output: kan.org.il.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: kan.org.il\r\nloading channels...\r\n found 3 channel(s)\r\nrun #1:\r\n [1/6] kan.org.il (ar) - Makan33.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/6] kan.org.il (ar) - Makan33.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/6] kan.org.il (he) - KanEducational.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [4/6] kan.org.il (he) - KanEducational.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [5/6] kan.org.il (he) - Kan11.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [6/6] kan.org.il (he) - Kan11.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n done in 00h 00m 01s\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2273/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2273/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2270', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/events', + html_url: 'https://github.com/iptv-org/epg/issues/2270', + id: 2022018570, + node_id: 'I_kwDOFLVvtM54hY4K', + number: 2270, + title: 'vivacom.bg is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-12-02T12:16:22Z', + updated_at: '2024-12-27T05:00:36Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nvivacom.bg\n\n### Description\n\n```sh\r\nnpm run grab -- --site=vivacom.bg\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=vivacom.bg\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: vivacom.bg\r\nloading channels...\r\n found 154 channel(s)\r\nrun #1:\r\n [1/308] vivacom.bg (bg) - 24Kitchen.bg - Dec 2, 2023 (0 programs)\r\n [2/308] vivacom.bg (bg) - 24Kitchen.bg - Dec 3, 2023 (0 programs)\r\n [3/308] vivacom.bg (bg) - 78TV.bg - Dec 3, 2023 (0 programs)\r\n [4/308] vivacom.bg (bg) - AlfaTV.bg - Dec 3, 2023 (0 programs)\r\n [5/308] vivacom.bg (bg) - AXNEurope.gr - Dec 3, 2023 (0 programs)\r\n [6/308] vivacom.bg (bg) - BNT3.bg - Dec 3, 2023 (0 programs)\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2264', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/events', + html_url: 'https://github.com/iptv-org/epg/issues/2264', + id: 2019407629, + node_id: 'I_kwDOFLVvtM54XbcN', + number: 2264, + title: 'tva.tv is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-30T20:00:18Z', + updated_at: '2024-12-27T05:00:24Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ntva.tv\n\n### Description\n\n```sh\r\nnpm run grab -- --site=tva.tv\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tva.tv\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tva.tv\r\nloading channels...\r\n found 28 channel(s)\r\nrun #1:\r\n [1/56] tva.tv (fa) - DocTV.ir - Nov 30, 2023 (0 programs)\r\n ERR: Connection timeout\r\n [2/56] tva.tv (fa) - DocTV.ir - Dec 1, 2023 (0 programs)\r\n ERR: Connection timeout\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2263', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/events', + html_url: 'https://github.com/iptv-org/epg/issues/2263', + id: 2019376043, + node_id: 'I_kwDOFLVvtM54XTur', + number: 2263, + title: 'tv.yettel.hu is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-30T19:38:28Z', + updated_at: '2024-12-27T04:59:14Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ntv.yettel.hu\n\n### Description\n\n```sh\r\nnpm run grab -- --site=tv.yettel.hu\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tv.yettel.hu\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tv.yettel.hu\r\nloading channels...\r\n found 74 channel(s)\r\nrun #1:\r\n [1/148] tv.yettel.hu (en) - BBCNewsEurope.uk - Nov 30, 2023 (0 programs)\r\n ERR: Client network socket disconnected before secure TLS connection was established\r\n [2/148] tv.yettel.hu (en) - BBCNewsEurope.uk - Dec 1, 2023 (0 programs)\r\n ERR: Client network socket disconnected before secure TLS connection was established\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2257', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/events', + html_url: 'https://github.com/iptv-org/epg/issues/2257', + id: 2011054011, + node_id: 'I_kwDOFLVvtM533j-7', + number: 2257, + title: 'rtb.gov.bn is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-26T14:02:13Z', + updated_at: '2024-12-27T04:59:29Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nrtb.gov.bn\n\n### Description\n\n```sh\r\nnpm run grab -- --site=rtb.gov.bn\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=rtb.gov.bn\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: rtb.gov.bn\r\nloading channels...\r\n found 3 channel(s)\r\nrun #1:\r\n [1/6] rtb.gov.bn (ms) - RTBAneka.bn - Nov 26, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n [2/6] rtb.gov.bn (ms) - RTBAneka.bn - Nov 27, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n [3/6] rtb.gov.bn (ms) - RTBPerdana.bn - Nov 27, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n```\r\n\r\nThere is no link to the guide on the website at the moment either: https://www.rtb.gov.bn/SitePages/Programme%20Guide.aspx', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2255', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/events', + html_url: 'https://github.com/iptv-org/epg/issues/2255', + id: 2011043202, + node_id: 'I_kwDOFLVvtM533hWC', + number: 2255, + title: 'rev.bs is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2023-11-26T13:31:22Z', + updated_at: '2024-12-27T22:02:28Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nrev.bs\n\n### Description\n\n```sh\r\nnpm run grab -- --site=rev.bs\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=rev.bs\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: rev.bs\r\nloading channels...\r\n found 179 channel(s)\r\nrun #1:\r\n [1/358] rev.bs (en) - 3ABNEnglish.us - Nov 26, 2023 (0 programs)\r\n [2/358] rev.bs (en) - 3ABNEnglish.us - Nov 27, 2023 (0 programs)\r\n [3/358] rev.bs (en) - AEEast.us - Nov 27, 2023 (0 programs)\r\n [4/358] rev.bs (en) - AMCEast.us - Nov 27, 2023 (0 programs)\r\n```\r\n---\r\n\r\n```json\r\n{\r\n\t"status": "OK",\r\n\t"data": {\r\n\t\t"schedule": [],\r\n\t\t"dateTime": {\r\n\t\t\t"date": "2023-11-27",\r\n\t\t\t"page": 0\r\n\t\t},\r\n\t\t"runtimes": [\r\n\t\t\t{\r\n\t\t\t\t"Rev class loaded": 1700899490.604637\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"TVGuide Class Loaded": 1700899490.638891\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"Validated form": 1700899490.640116\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"Pulled schedules": 1700899490.642099\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n}\r\n```\r\n\r\nhttps://www.rev.bs/wp-content/uploads/tv-guide/2023-11-27_0.json\r\n\r\n---\r\n\r\nimage\r\n\r\nhttps://www.rev.bs/tv-guide-404/', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2241', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/events', + html_url: 'https://github.com/iptv-org/epg/issues/2241', + id: 2002096969, + node_id: 'I_kwDOFLVvtM53VZNJ', + number: 2241, + title: 'm.tv.sms.cz is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 4, + created_at: '2023-11-20T12:28:47Z', + updated_at: '2024-12-27T04:58:41Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nm.tv.sms.cz\n\n### Description\n\n```sh\r\nnpm run grab -- --site=m.tv.sms.cz\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=m.tv.sms.cz\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: m.tv.sms.cz\r\nloading channels...\r\n found 525 channel(s)\r\nrun #1:\r\n [1/1050] m.tv.sms.cz (bs) - BNTV.ba - Nov 20, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n\r\n [2/1050] m.tv.sms.cz (bs) - BNTV.ba - Nov 21, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n\r\n [3/1050] m.tv.sms.cz (cs) - AMC.cz - Nov 21, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n```\r\n\r\nhttps://check-host.net/check-report/135d7e05kb9d', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2240', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/events', + html_url: 'https://github.com/iptv-org/epg/issues/2240', + id: 2001847449, + node_id: 'I_kwDOFLVvtM53UcSZ', + number: 2240, + title: 'kplus.vn is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-20T10:19:23Z', + updated_at: '2024-12-27T04:57:49Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nkplus.vn\n\n### Description\n\n```sh\r\nnpm run grab -- --site=kplus.vn\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=kplus.vn\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: kplus.vn\r\nloading channels...\r\n found 26 channel(s)\r\nrun #1:\r\n [1/52] kplus.vn (vi) - AsianFoodNetwork.sg - Nov 20, 2023 (0 programs)\r\n [2/52] kplus.vn (vi) - AsianFoodNetwork.sg - Nov 21, 2023 (0 programs)\r\n [3/52] kplus.vn (vi) - AXN.vn - Nov 21, 2023 (0 programs)\r\n [4/52] kplus.vn (vi) - DiscoveryChannelSoutheastAsia.sg - Nov 21, 2023 (0 programs)\r\n```\r\n\r\nThe site also currently does not display the guide:\r\nimage\r\nhttps://www.kplus.vn/highlights/broadcast-schedule', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2239', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/events', + html_url: 'https://github.com/iptv-org/epg/issues/2239', + id: 2000457187, + node_id: 'I_kwDOFLVvtM53PI3j', + number: 2239, + title: 'comteco.com.bo is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 3, + created_at: '2023-11-18T15:03:48Z', + updated_at: '2024-12-27T21:25:41Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ncomteco.com.bo\n\n### Description\n\n```sh\r\nnpm run grab -- --site=comteco.com.bo\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=comteco.com.bo\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: comteco.com.bo\r\nloading channels...\r\n found 72 channel(s)\r\nrun #1:\r\n [1/144] comteco.com.bo (es) - AbyaYalaTV.bo - Nov 18, 2023 (0 programs)\r\n [2/144] comteco.com.bo (es) - AbyaYalaTV.bo - Nov 19, 2023 (0 programs)\r\n [3/144] comteco.com.bo (es) - AEPanregional.us - Nov 19, 2023 (0 programs)\r\n [4/144] comteco.com.bo (es) - AnimalPlanetLatinAmerica.us - Nov 19, 2023 (0 programs)\r\n [5/144] comteco.com.bo (es) - BoliviaTV72.bo - Nov 19, 2023 (0 programs)\r\n```\r\n\r\nhttps://comteco.com.bo/pages/canales-y-programacion-tv/paquete-oro/ABYA%20YALA\r\nimage', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2237', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/events', + html_url: 'https://github.com/iptv-org/epg/issues/2237', + id: 2000349577, + node_id: 'I_kwDOFLVvtM53OumJ', + number: 2237, + title: 'canalplus-haiti.com is broken', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-18T09:46:29Z', + updated_at: '2024-12-27T04:57:02Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ncanalplus-haiti.com\n\n### Description\n\n```sh\r\nnpm run grab -- --site=canalplus-haiti.com\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=canalplus-haiti.com\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: canalplus-haiti.com\r\nloading channels...\r\n found 111 channel(s)\r\nrun #1:\r\n [1/222] canalplus-haiti.com (fr) - 13emeRue.fr - Nov 18, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [2/222] canalplus-haiti.com (fr) - 13emeRue.fr - Nov 19, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [3/222] canalplus-haiti.com (fr) - ZoukTV.mq - Nov 19, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [4/222] canalplus-haiti.com (fr) - ZoukTV.mq - Nov 18, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n```\r\n\r\nhttps://check-host.net/check-report/134fc56bk333', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2173', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/events', + html_url: 'https://github.com/iptv-org/epg/issues/2173', + id: 1903824500, + node_id: 'I_kwDOFLVvtM5xeg50', + number: 2173, + title: 'hd-plus.de - 0 programs on all channels', + user: { + login: 'x011', + id: 4313821, + node_id: 'MDQ6VXNlcjQzMTM4MjE=', + avatar_url: 'https://avatars.githubusercontent.com/u/4313821?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/x011', + html_url: 'https://github.com/x011', + followers_url: 'https://api.github.com/users/x011/followers', + following_url: 'https://api.github.com/users/x011/following{/other_user}', + gists_url: 'https://api.github.com/users/x011/gists{/gist_id}', + starred_url: 'https://api.github.com/users/x011/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/x011/subscriptions', + organizations_url: 'https://api.github.com/users/x011/orgs', + repos_url: 'https://api.github.com/users/x011/repos', + events_url: 'https://api.github.com/users/x011/events{/privacy}', + received_events_url: 'https://api.github.com/users/x011/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2023-09-19T22:45:56Z', + updated_at: '2024-12-27T04:54:11Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\r\n\r\nhd-plus.de\r\n\r\n### Description\r\n\r\nAll channels on hd-plus.de have 0 programs:\r\n```\r\n[1/60] hd-plus.de - 123tv.de - Sep 19, 2023 (0 programs)\r\n[2/60] hd-plus.de - 123tv.de - Sep 20, 2023 (0 programs)\r\n[3/60] hd-plus.de - ZDF.de - Sep 20, 2023 (0 programs)\r\n[4/60] hd-plus.de - ZDF.de - Sep 19, 2023 (0 programs)\r\n...\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/reactions', + total_count: 6, + '+1': 6, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2543', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/events', + html_url: 'https://github.com/iptv-org/epg/issues/2543', + id: 2759693796, + node_id: 'I_kwDOFLVvtM6kfZXk', + number: 2543, + title: 'flixed.io is downloding old programming', + user: { + login: 'SiWafer', + id: 10903014, + node_id: 'MDQ6VXNlcjEwOTAzMDE0', + avatar_url: 'https://avatars.githubusercontent.com/u/10903014?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/SiWafer', + html_url: 'https://github.com/SiWafer', + followers_url: 'https://api.github.com/users/SiWafer/followers', + following_url: 'https://api.github.com/users/SiWafer/following{/other_user}', + gists_url: 'https://api.github.com/users/SiWafer/gists{/gist_id}', + starred_url: 'https://api.github.com/users/SiWafer/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/SiWafer/subscriptions', + organizations_url: 'https://api.github.com/users/SiWafer/orgs', + repos_url: 'https://api.github.com/users/SiWafer/repos', + events_url: 'https://api.github.com/users/SiWafer/events{/privacy}', + received_events_url: 'https://api.github.com/users/SiWafer/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-12-26T12:09:43Z', + updated_at: '2024-12-27T05:29:58Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Describe your issue\r\n\r\nJust ran and updated, and seems the output is loading old programming and it also is not complete\r\n\r\nExample is Bravo channel\r\n\r\n```\r\nepg@rpi:~/epg$ npm run grab --- --site=flixed.io --maxConnections=10 -o "flixed.xml"\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=flixed.io --maxConnections=10 -o flixed.xml\r\n\r\nstarting...\r\nconfig:\r\n output: flixed.xml\r\n maxConnections: 10\r\n gzip: false\r\n site: flixed.io\r\nloading channels...\r\n found 94 channel(s)\r\nrun #1:\r\n [1/94] flixed.io (en) - BravoEast.us - Dec 26, 2024 (2 programs)\r\n [2/94] flixed.io (en) - ComedyCentralEast.us - Dec 26, 2024 (5 programs)\r\n [3/94] flixed.io (en) - ACCNetwork.us - Dec 26, 2024 (26 programs)\r\n [4/94] flixed.io (en) - CNN.us - Dec 26, 2024 (25 programs)\r\n [5/94] flixed.io (en) - BloombergTV.us - Dec 26, 2024 (21 programs)\r\n [6/94] flixed.io (en) - AEEast.us - Dec 26, 2024 (6 programs)\r\n [7/94] flixed.io (en) - CNBC.us - Dec 26, 2024 (3 programs)\r\n [8/94] flixed.io (en) - CinemaxEast.us - Dec 26, 2024 (14 programs)\r\n [9/94] flixed.io (en) - AMCEast.us - Dec 26, 2024 (19 programs)\r\n [10/94] flixed.io (en) - BigTenNetwork.us - Dec 26, 2024 (3 programs)\r\n [11/94] flixed.io (en) - FoxWest.us - Dec 26, 2024 (8 programs)\r\n [12/94] flixed.io (en) - FreeformEast.us - Dec 26, 2024 (2 programs)\r\n [13/94] flixed.io (en) - FoxSports2.us - Dec 26, 2024 (2 programs)\r\n [14/94] flixed.io (en) - FoodNetworkEast.us - Dec 26, 2024 (3 programs)\r\n...\r\n...\r\n...\r\n\r\n```\r\nSnip from xml file out\r\n![image](https://github.com/user-attachments/assets/5ed6d7eb-df59-4951-9b2c-5214e24d24ac)\r\n\r\nThe date is September 26, 2024, 01:00:00 for Bravo\r\n\r\n', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2516', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/events', + html_url: 'https://github.com/iptv-org/epg/issues/2516', + id: 2745387354, + node_id: 'I_kwDOFLVvtM6jo0la', + number: 2516, + title: 'Duplicate programmes with sky.com grab', + user: { + login: 'misar1', + id: 69795879, + node_id: 'MDQ6VXNlcjY5Nzk1ODc5', + avatar_url: 'https://avatars.githubusercontent.com/u/69795879?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/misar1', + html_url: 'https://github.com/misar1', + followers_url: 'https://api.github.com/users/misar1/followers', + following_url: 'https://api.github.com/users/misar1/following{/other_user}', + gists_url: 'https://api.github.com/users/misar1/gists{/gist_id}', + starred_url: 'https://api.github.com/users/misar1/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/misar1/subscriptions', + organizations_url: 'https://api.github.com/users/misar1/orgs', + repos_url: 'https://api.github.com/users/misar1/repos', + events_url: 'https://api.github.com/users/misar1/events{/privacy}', + received_events_url: 'https://api.github.com/users/misar1/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2024-12-17T16:19:36Z', + updated_at: '2024-12-27T05:27:44Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\nsky.com\n\n### Description\n\n\r\nI changed to the recently updated sky.com script a couple of days ago (using a completely new install as in the readme) and have found an anomaly. This does not occur with an identical grab using my previous installation. The grabs are for about 60 UK FTA channels which I can list if it would be helpful.\r\n\r\nA number of programmes have two identical blocks in the XML, including their start and finish times. This occurs only from around approximately 22:00 each day and up to about midnight GMT. During this period most channels are affected and it is consistent between successive grabs. In case of a timing issue I tested delays of 100, 1000, 3000 and 5000 msec but the XML was unchanged.', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2501', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/events', + html_url: 'https://github.com/iptv-org/epg/issues/2501', + id: 2738899005, + node_id: 'I_kwDOFLVvtM6jQEg9', + number: 2501, + title: 'Sky.com', + user: { + login: 'Chris230291', + id: 5328818, + node_id: 'MDQ6VXNlcjUzMjg4MTg=', + avatar_url: 'https://avatars.githubusercontent.com/u/5328818?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/Chris230291', + html_url: 'https://github.com/Chris230291', + followers_url: 'https://api.github.com/users/Chris230291/followers', + following_url: 'https://api.github.com/users/Chris230291/following{/other_user}', + gists_url: 'https://api.github.com/users/Chris230291/gists{/gist_id}', + starred_url: 'https://api.github.com/users/Chris230291/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/Chris230291/subscriptions', + organizations_url: 'https://api.github.com/users/Chris230291/orgs', + repos_url: 'https://api.github.com/users/Chris230291/repos', + events_url: 'https://api.github.com/users/Chris230291/events{/privacy}', + received_events_url: 'https://api.github.com/users/Chris230291/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: '2024-12-13T17:45:02Z', + updated_at: '2024-12-27T05:25:49Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\nsky.com\n\n### Description\n\n```\r\n Viaplay 1 HD\r\n Viaplay 2 HD\r\n```\r\n\r\nThese should be "Premier Sports 1 HD" and "Premier Sports 2 HD".\r\nAlso, the UK and ROI have different schedules for these 2 channels.', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2446', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/events', + html_url: 'https://github.com/iptv-org/epg/issues/2446', + id: 2568624116, + node_id: 'I_kwDOFLVvtM6ZGhf0', + number: 2446, + title: 'Eleven channels returning 0 programs on meo.pt', + user: { + login: 'jonatasgz', + id: 78122211, + node_id: 'MDQ6VXNlcjc4MTIyMjEx', + avatar_url: 'https://avatars.githubusercontent.com/u/78122211?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/jonatasgz', + html_url: 'https://github.com/jonatasgz', + followers_url: 'https://api.github.com/users/jonatasgz/followers', + following_url: 'https://api.github.com/users/jonatasgz/following{/other_user}', + gists_url: 'https://api.github.com/users/jonatasgz/gists{/gist_id}', + starred_url: 'https://api.github.com/users/jonatasgz/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/jonatasgz/subscriptions', + organizations_url: 'https://api.github.com/users/jonatasgz/orgs', + repos_url: 'https://api.github.com/users/jonatasgz/repos', + events_url: 'https://api.github.com/users/jonatasgz/events{/privacy}', + received_events_url: 'https://api.github.com/users/jonatasgz/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: '2024-10-06T12:00:48Z', + updated_at: '2024-12-27T05:23:16Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\nmeo.pt\n\n### Description\n\nEleven (DAZN) channels return 0 programs.', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2400', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/events', + html_url: 'https://github.com/iptv-org/epg/issues/2400', + id: 2370209498, + node_id: 'I_kwDOFLVvtM6NRoba', + number: 2400, + title: 'tvgids.nl', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-06-24T13:05:05Z', + updated_at: '2024-12-27T05:19:25Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: "### Site\n\ntvgids.nl\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- tvgids.nl \r\n\r\n> test\r\n> run-script-os tvgids.nl\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand tvgids.nl\r\n\r\n FAIL sites/tvgids.nl/tvgids.nl.test.js\r\n ✓ can generate valid url (29 ms)\r\n ✕ can generate valid url for today (4 ms)\r\n ✓ can parse response (307 ms)\r\n ✓ can handle empty guide (3 ms)\r\n\r\n ● can generate valid url for today\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: \"https://www.tvgids.nl/gids/npo1\"\r\n Received: \"https://www.tvgids.nl/gids/25-06-2024/npo1\"\r\n\r\n 21 | const today = dayjs().startOf('d')\r\n 22 |\r\n > 23 | expect(url({ date: today, channel })).toBe('https://www.tvgids.nl/gids/npo1')\r\n | ^\r\n 24 | })\r\n 25 |\r\n 26 | it('can parse response', () => {\r\n\r\n at Object. (sites/tvgids.nl/tvgids.nl.test.js:23:41)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 3 passed, 4 total\r\nSnapshots: 0 total\r\nTime: 3.52 s\r\nRan all test suites matching /tvgids.nl/i.\r\n```", + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2399', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/events', + html_url: 'https://github.com/iptv-org/epg/issues/2399', + id: 2370207356, + node_id: 'I_kwDOFLVvtM6NRn58', + number: 2399, + title: 'tvprofil.com', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2024-06-24T13:04:08Z', + updated_at: '2024-12-27T05:18:50Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ntvprofil.com\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- tvprofil.com\r\n\r\n> test\r\n> run-script-os tvprofil.com\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand tvprofil.com\r\n\r\n FAIL sites/tvprofil.com/tvprofil.com.test.js\r\n ✕ can generate valid url (14 ms)\r\n ✓ can generate valid request headers (1 ms)\r\n ✓ can parse response (76 ms)\r\n ✓ can handle empty guide (2 ms)\r\n\r\n ● can generate valid url\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: "https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b51=818933"\r\n Received: "https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b49=819461"\r\n\r\n 15 |\r\n 16 | it(\'can generate valid url\', () => {\r\n > 17 | expect(url({ channel, date })).toBe(\r\n | ^\r\n 18 | \'https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b51=818933\'\r\n 19 | )\r\n 20 | })\r\n\r\n at Object. (sites/tvprofil.com/tvprofil.com.test.js:17:34)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 3 passed, 4 total\r\nSnapshots: 0 total\r\nTime: 3.307 s\r\nRan all test suites matching /tvprofil.com/i.\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2396', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/events', + html_url: 'https://github.com/iptv-org/epg/issues/2396', + id: 2370189473, + node_id: 'I_kwDOFLVvtM6NRjih', + number: 2396, + title: 'iltalehti.fi', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-06-24T12:56:45Z', + updated_at: '2024-12-27T05:18:16Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\niltalehti.fi\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- iltalehti.fi \r\n\r\n> test\r\n> run-script-os iltalehti.fi\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand iltalehti.fi\r\n\r\n FAIL sites/iltalehti.fi/iltalehti.fi.test.js\r\n ✕ can generate valid url (10 ms)\r\n ✓ can parse response (28 ms)\r\n ✓ can handle empty guide (1 ms)\r\n\r\n ● can generate valid url\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: "https://telkku.com/api/channel-groups/default_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails"\r\n Received: "https://telkku.com/api/channel-groups/default_builtin_channelgroupdefault_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails"\r\n\r\n 15 |\r\n 16 | it(\'can generate valid url\', () => {\r\n > 17 | expect(url({ channel, date })).toBe(\r\n | ^\r\n 18 | \'https://telkku.com/api/channel-groups/default_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails\'\r\n 19 | )\r\n 20 | })\r\n\r\n at Object. (sites/iltalehti.fi/iltalehti.fi.test.js:17:34)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 2 passed, 3 total\r\nSnapshots: 0 total\r\nTime: 3.193 s\r\nRan all test suites matching /iltalehti.fi/i.\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2395', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/events', + html_url: 'https://github.com/iptv-org/epg/issues/2395', + id: 2370186157, + node_id: 'I_kwDOFLVvtM6NRiut', + number: 2395, + title: 'chaines-tv.orange.fr', + user: { + login: 'freearhey', + id: 7253922, + node_id: 'MDQ6VXNlcjcyNTM5MjI=', + avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/freearhey', + html_url: 'https://github.com/freearhey', + followers_url: 'https://api.github.com/users/freearhey/followers', + following_url: 'https://api.github.com/users/freearhey/following{/other_user}', + gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}', + starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions', + organizations_url: 'https://api.github.com/users/freearhey/orgs', + repos_url: 'https://api.github.com/users/freearhey/repos', + events_url: 'https://api.github.com/users/freearhey/events{/privacy}', + received_events_url: 'https://api.github.com/users/freearhey/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: '2024-06-24T12:55:21Z', + updated_at: '2024-12-27T05:17:25Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\r\n\r\nchaines-tv.orange.fr\r\n\r\n### Description\r\n\r\nTest failed:\r\n\r\n```sh\r\nnpm test -- chaines-tv.orange.fr\r\n\r\n> test\r\n> run-script-os chaines-tv.orange.fr\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand chaines-tv.orange.fr\r\n\r\n FAIL sites/chaines-tv.orange.fr/chaines-tv.orange.fr.test.js\r\n ✓ can generate valid url (5 ms)\r\n ✕ can parse response (12 ms)\r\n ✓ can handle empty guide (1 ms)\r\n\r\n ● can parse response\r\n\r\n expect(received).toMatchObject(expected)\r\n\r\n - Expected - 1\r\n + Received + 1\r\n\r\n @@ -3,8 +3,8 @@\r\n "category": "Série Suspense",\r\n "description": "Un tueur en série prend un plaisir pervers à prévenir les autorités de Tallahassee avant chaque nouveau meurtre. Rossi apprend le décès d\'un de ses vieux amis.",\r\n "icon": "https://proxymedia.woopic.com/340/p/169_EMI_9697669.jpg",\r\n "start": "2021-11-07T23:35:00.000Z",\r\n "stop": "2021-11-08T00:20:00.000Z",\r\n - "title": "Tête de liste",\r\n + "title": "Esprits criminels",\r\n },\r\n ]\r\n\r\n 23 | it(\'can parse response\', () => {\r\n 24 | const result = parser({ date, channel, content })\r\n > 25 | expect(result).toMatchObject([\r\n | ^\r\n 26 | {\r\n 27 | start: \'2021-11-07T23:35:00.000Z\',\r\n 28 | stop: \'2021-11-08T00:20:00.000Z\',\r\n\r\n at Object. (sites/chaines-tv.orange.fr/chaines-tv.orange.fr.test.js:25:18)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 2 passed, 3 total\r\nSnapshots: 0 total\r\nTime: 4.003 s\r\nRan all test suites matching /chaines-tv.orange.fr/i.\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2304', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/events', + html_url: 'https://github.com/iptv-org/epg/issues/2304', + id: 2064638324, + node_id: 'I_kwDOFLVvtM57D-F0', + number: 2304, + title: 'digiturk.com.tr Missing Channel Identifications', + user: { + login: 'UzunMuhalefet', + id: 80906858, + node_id: 'MDQ6VXNlcjgwOTA2ODU4', + avatar_url: 'https://avatars.githubusercontent.com/u/80906858?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/UzunMuhalefet', + html_url: 'https://github.com/UzunMuhalefet', + followers_url: 'https://api.github.com/users/UzunMuhalefet/followers', + following_url: 'https://api.github.com/users/UzunMuhalefet/following{/other_user}', + gists_url: 'https://api.github.com/users/UzunMuhalefet/gists{/gist_id}', + starred_url: 'https://api.github.com/users/UzunMuhalefet/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/UzunMuhalefet/subscriptions', + organizations_url: 'https://api.github.com/users/UzunMuhalefet/orgs', + repos_url: 'https://api.github.com/users/UzunMuhalefet/repos', + events_url: 'https://api.github.com/users/UzunMuhalefet/events{/privacy}', + received_events_url: 'https://api.github.com/users/UzunMuhalefet/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-01-03T20:57:58Z', + updated_at: '2024-12-27T05:32:37Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\r\n\r\ndigiturk.com.tr\r\n\r\n### Describe your issue\r\n\r\nThe following channels can be corrected as follows. (I added the TVG-IDs if they exist in https://iptv-org.github.io/)\r\n\r\n```\r\nKANAL 24 HD\r\nTARIH TV HD\r\nSÖZCÜ TV HD\r\n```\r\n\r\nLet me clarify the cases:\r\n- SZC changed its name to Sözcü TV\r\n- 24 TV often called as Kanal (Channel) 24\r\n- Tarih TV is straightforward.\r\n', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2303', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/events', + html_url: 'https://github.com/iptv-org/epg/issues/2303', + id: 2064633657, + node_id: 'I_kwDOFLVvtM57D885', + number: 2303, + title: 'dsmart.com.tr Channel Identifications', + user: { + login: 'UzunMuhalefet', + id: 80906858, + node_id: 'MDQ6VXNlcjgwOTA2ODU4', + avatar_url: 'https://avatars.githubusercontent.com/u/80906858?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/UzunMuhalefet', + html_url: 'https://github.com/UzunMuhalefet', + followers_url: 'https://api.github.com/users/UzunMuhalefet/followers', + following_url: 'https://api.github.com/users/UzunMuhalefet/following{/other_user}', + gists_url: 'https://api.github.com/users/UzunMuhalefet/gists{/gist_id}', + starred_url: 'https://api.github.com/users/UzunMuhalefet/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/UzunMuhalefet/subscriptions', + organizations_url: 'https://api.github.com/users/UzunMuhalefet/orgs', + repos_url: 'https://api.github.com/users/UzunMuhalefet/repos', + events_url: 'https://api.github.com/users/UzunMuhalefet/events{/privacy}', + received_events_url: 'https://api.github.com/users/UzunMuhalefet/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2024-01-03T20:53:34Z', + updated_at: '2024-12-27T05:44:16Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Describe your issue\r\n\r\nThe following channels can be corrected as follows. (I added the TVG-IDs if they exist in https://iptv-org.github.io/)\r\n\r\n```\r\nNR1\r\nNR1 Türk\r\nTRT EBA TV İlkokul\r\nTRT EBA TV Ortaokul\r\nTRT EBA TV Lise\r\nÇifçi TV\r\nKanal 16\r\nFlash Haber\r\nYeni Kocaeli TV\r\nATV Turkiye SD\r\nTRT EBA TV İlkokul SD\r\nTRT EBA TV Ortaokul SD\r\nTRT EBA TV Lise SD\r\nTarih Tv\r\nSZC\r\nTRT 3 Spor\r\n``` \r\n\r\nLet me clarify the cases: \r\n\r\n- NR1 stands for Number One\r\n- Cifci TV - Çiftçi TV - misspelling\r\n- The number 16 is spelled as onaltı (on -> 10, altı->6, on6 -> 16) in Turkish so on6 - Kanal 16\r\n- Flash TV changed its name to Flash Haber TV\r\n- SZC changed its name to Sözcü TV\r\n- TRT 3 is a strange channel that usually streams the same content as TRT Spor but when there is a Turkish parliament event it switches to that event. So, the channel is both called TRT 3 and TRT 3 Spor.\r\n', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2272', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/events', + html_url: 'https://github.com/iptv-org/epg/issues/2272', + id: 2022135766, + node_id: 'I_kwDOFLVvtM54h1fW', + number: 2272, + title: 'Film titles with numbers only in the title (as in "1900" or "1917") don\'t show up', + user: { + login: 'GlamoramaAttack', + id: 116585465, + node_id: 'U_kgDOBvLz-Q', + avatar_url: 'https://avatars.githubusercontent.com/u/116585465?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/GlamoramaAttack', + html_url: 'https://github.com/GlamoramaAttack', + followers_url: 'https://api.github.com/users/GlamoramaAttack/followers', + following_url: 'https://api.github.com/users/GlamoramaAttack/following{/other_user}', + gists_url: 'https://api.github.com/users/GlamoramaAttack/gists{/gist_id}', + starred_url: 'https://api.github.com/users/GlamoramaAttack/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/GlamoramaAttack/subscriptions', + organizations_url: 'https://api.github.com/users/GlamoramaAttack/orgs', + repos_url: 'https://api.github.com/users/GlamoramaAttack/repos', + events_url: 'https://api.github.com/users/GlamoramaAttack/events{/privacy}', + received_events_url: 'https://api.github.com/users/GlamoramaAttack/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: '2023-12-02T17:29:50Z', + updated_at: '2024-12-27T05:02:05Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\r\n\r\ntvpassport.com\r\n\r\n### Describe your issue\r\n\r\nFilm titles with numbers only in the title -as in "1900" or "1917"- don\'t show up at all.\r\n\r\nSorry, I don\'t understand anything about how to write a script or fix it but I see there is notable difference in the **guide.xml** file - the examples are excerpts from tvpassport.com. This isn\'t a new bug I think, it\'s just that I thought for a long time it\'s a Kodi problem before looking into the guide.xml file...\r\n\r\n```\r\nchannel="Showtime2East.us">The Caine Mutiny Court-MartialA \r\nchannel="Showtime2East.us">Two British soldiers receive seemingly impossible orders \r\nchannel="Showtime2East.us">There Will Be BloodDaniel \r\n```\r\nor:\r\n\r\n```\r\nchannel="MGMPlusEast.us">A Fistful of DynamiteA thief \r\nchannel="MGMPlusEast.us">The son (Robert De Niro) of a landowner and the son \r\nchannel="MGMPlusEast.us">Indecent ProposalA Las Vegas \r\n```\r\n\r\nFor some reason "title lang" gets replaced by "desc lang" and the film title is nowhere displayed.\r\n\r\nOn Kodi it looks like this for the films and you can also see it\'s not a problem if the film title includes more than numbers (see "88 Minutes" or "Resistance: 1942"). But titles as "1900", "1917" or "1408" (Horror with John Cusack) appear blank.\r\n\r\n![NoTitleWithNumbers](https://github.com/iptv-org/epg/assets/116585465/155f98f8-8529-4c42-af3c-def1edcf5651)\r\n\r\nI\'m not sure whether the problem also exists with other sources than tvpassport.com because I use only two other (German language) EPG sources that have currently no film titles with numbers only. But I assume it\'s a bug if it\'s not reduced to tvpassport.', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2176', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/events', + html_url: 'https://github.com/iptv-org/epg/issues/2176', + id: 1915947653, + node_id: 'I_kwDOFLVvtM5yMwqF', + number: 2176, + title: 'tvtv', + user: { + login: 'jvdillon', + id: 1137078, + node_id: 'MDQ6VXNlcjExMzcwNzg=', + avatar_url: 'https://avatars.githubusercontent.com/u/1137078?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/jvdillon', + html_url: 'https://github.com/jvdillon', + followers_url: 'https://api.github.com/users/jvdillon/followers', + following_url: 'https://api.github.com/users/jvdillon/following{/other_user}', + gists_url: 'https://api.github.com/users/jvdillon/gists{/gist_id}', + starred_url: 'https://api.github.com/users/jvdillon/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/jvdillon/subscriptions', + organizations_url: 'https://api.github.com/users/jvdillon/orgs', + repos_url: 'https://api.github.com/users/jvdillon/repos', + events_url: 'https://api.github.com/users/jvdillon/events{/privacy}', + received_events_url: 'https://api.github.com/users/jvdillon/received_events', + type: 'User', + user_view_type: 'public', + site_admin: false + }, + labels: [ + { + id: 4542348869, + node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ', + url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide', + name: 'broken guide', + color: 'eaeaea', + default: false, + description: "There's a problem with the guide" + }, + { + id: 7932710318, + node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning', + name: 'status:warning', + color: 'fbca06', + default: false, + description: 'The guide downloads, but contains errors' + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 6, + created_at: '2023-09-27T16:34:00Z', + updated_at: '2024-12-27T04:55:00Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\r\n\r\ntvtv.us\r\n\r\n### Description\r\n\r\nStarts getting error 429 after several 100 scrapes. I tried setting the delay to 1000ms, 1500ms, and 2000ms but keep seeing the issue.\r\n\r\nIt almost appears to happen after a sequence of 0 program scrapes. I wonder if the delay is not happening when nothing is downloaded which causes tvtv.us to throttle which triggers 0 programs downloaded. (Ie a feedback loop)', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/reactions', + total_count: 0, + '+1': 0, + '-1': 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0 + }, + timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/timeline', + performed_via_github_app: null, + state_reason: null + } +] diff --git a/tests/__data__/input/sites-update/sites/iltalehti.fi/iltalehti.fi.channels.xml b/tests/__data__/input/sites_update/sites/iltalehti.fi/iltalehti.fi.channels.xml similarity index 100% rename from tests/__data__/input/sites-update/sites/iltalehti.fi/iltalehti.fi.channels.xml rename to tests/__data__/input/sites_update/sites/iltalehti.fi/iltalehti.fi.channels.xml diff --git a/tests/__data__/input/sites-update/sites/iltalehti.fi/readme.md b/tests/__data__/input/sites_update/sites/iltalehti.fi/readme.md similarity index 100% rename from tests/__data__/input/sites-update/sites/iltalehti.fi/readme.md rename to tests/__data__/input/sites_update/sites/iltalehti.fi/readme.md diff --git a/tests/__data__/input/sites-update/sites/indihometv.com/indihometv.com.channels.xml b/tests/__data__/input/sites_update/sites/indihometv.com/indihometv.com.channels.xml similarity index 100% rename from tests/__data__/input/sites-update/sites/indihometv.com/indihometv.com.channels.xml rename to tests/__data__/input/sites_update/sites/indihometv.com/indihometv.com.channels.xml diff --git a/tests/__data__/input/sites-update/sites/indihometv.com/readme.md b/tests/__data__/input/sites_update/sites/indihometv.com/readme.md similarity index 100% rename from tests/__data__/input/sites-update/sites/indihometv.com/readme.md rename to tests/__data__/input/sites_update/sites/indihometv.com/readme.md diff --git a/tests/__data__/input/sites-update/sites/kan.org.il/kan.org.il_1.channels.xml b/tests/__data__/input/sites_update/sites/kan.org.il/kan.org.il_1.channels.xml similarity index 100% rename from tests/__data__/input/sites-update/sites/kan.org.il/kan.org.il_1.channels.xml rename to tests/__data__/input/sites_update/sites/kan.org.il/kan.org.il_1.channels.xml diff --git a/tests/__data__/input/sites-update/sites/kan.org.il/kan.org.il_2.channels.xml b/tests/__data__/input/sites_update/sites/kan.org.il/kan.org.il_2.channels.xml similarity index 100% rename from tests/__data__/input/sites-update/sites/kan.org.il/kan.org.il_2.channels.xml rename to tests/__data__/input/sites_update/sites/kan.org.il/kan.org.il_2.channels.xml diff --git a/tests/__data__/input/sites-update/sites/kan.org.il/readme.md b/tests/__data__/input/sites_update/sites/kan.org.il/readme.md similarity index 100% rename from tests/__data__/input/sites-update/sites/kan.org.il/readme.md rename to tests/__data__/input/sites_update/sites/kan.org.il/readme.md From 37664b49b9fa904bb06ba7f6969df04aba21ca63 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:12:46 +0300 Subject: [PATCH 3/8] Update tests --- tests/commands/api/generate.test.ts | 6 ++-- tests/commands/channels/edit.test.ts | 23 +++---------- tests/commands/channels/lint.test.ts | 10 +++--- tests/commands/channels/parse.test.ts | 10 +++--- tests/commands/channels/validate.test.ts | 18 +++++----- tests/commands/epg/grab.test.ts | 44 +++++++++++++----------- tests/commands/sites/init.test.ts | 6 ++-- tests/commands/sites/update.test.ts | 6 ++-- 8 files changed, 56 insertions(+), 67 deletions(-) diff --git a/tests/commands/api/generate.test.ts b/tests/commands/api/generate.test.ts index 1480ac59..400192c3 100644 --- a/tests/commands/api/generate.test.ts +++ b/tests/commands/api/generate.test.ts @@ -3,10 +3,10 @@ import fs from 'fs-extra' import { pathToFileURL } from 'node:url' import os from 'os' -let ENV_VAR = 'SITES_DIR=tests/__data__/input/epg-grab/sites API_DIR=tests/__data__/output' +let ENV_VAR = 'SITES_DIR=tests/__data__/input/api_generate/sites API_DIR=tests/__data__/output' if (os.platform() === 'win32') { ENV_VAR = - 'SET "SITES_DIR=tests/__data__/input/epg-grab/sites" && SET "API_DIR=tests/__data__/output" &&' + 'SET "SITES_DIR=tests/__data__/input/api_generate/sites" && SET "API_DIR=tests/__data__/output" &&' } beforeEach(() => { @@ -20,7 +20,7 @@ describe('api:generate', () => { if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guides.json')).toEqual( - content('tests/__data__/expected/guides.json') + content('tests/__data__/expected/api_generate/guides.json') ) }) }) diff --git a/tests/commands/channels/edit.test.ts b/tests/commands/channels/edit.test.ts index b2894b82..70bce02d 100644 --- a/tests/commands/channels/edit.test.ts +++ b/tests/commands/channels/edit.test.ts @@ -1,22 +1,21 @@ -import fs from 'fs-extra' import { execSync } from 'child_process' +import fs from 'fs-extra' import os from 'os' -import { pathToFileURL } from 'node:url' type ExecError = { status: number stdout: string } -let ENV_VAR = 'DATA_DIR=tests/__data__/input/temp/data' +let ENV_VAR = 'DATA_DIR=tests/__data__/input/__data__' if (os.platform() === 'win32') { - ENV_VAR = 'SET "DATA_DIR=tests/__data__/input/temp/data" &&' + ENV_VAR = 'SET "DATA_DIR=tests/__data__/input/__data__" &&' } beforeEach(() => { fs.emptyDirSync('tests/__data__/output') fs.copySync( - 'tests/__data__/input/channels-edit/example.com.channels.xml', + 'tests/__data__/input/channels_edit/example.com.channels.xml', 'tests/__data__/output/channels.xml' ) }) @@ -28,29 +27,17 @@ describe('channels:edit', () => { const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) checkStdout(stdout) - expect(content('tests/__data__/output/channels.xml')).toEqual( - content('tests/__data__/expected/sites/channels-edit/example.com.channels.xml') - ) } catch (error) { // NOTE: for Windows only if (process.env.DEBUG === 'true') console.log(cmd, error) checkStdout((error as ExecError).stdout) - expect(content('tests/__data__/output/channels.xml')).toEqual( - content('tests/__data__/expected/sites/channels-edit/example.com.channels.xml') - ) } }) }) function checkStdout(stdout: string) { - expect(stdout).toContain('CNN International Europe | CNNInternationalEurope.us') + expect(stdout).toContain('CNNInternational.us (CNN International, CNN, CNN Int)') expect(stdout).toContain('Type...') expect(stdout).toContain('Skip') expect(stdout).toContain("File 'tests/__data__/output/channels.xml' successfully saved") } - -function content(filepath: string) { - return fs.readFileSync(pathToFileURL(filepath), { - encoding: 'utf8' - }) -} diff --git a/tests/commands/channels/lint.test.ts b/tests/commands/channels/lint.test.ts index 501b6989..61b9f53b 100644 --- a/tests/commands/channels/lint.test.ts +++ b/tests/commands/channels/lint.test.ts @@ -8,7 +8,7 @@ type ExecError = { describe('channels:lint', () => { it('will show a message if the file contains a syntax error', () => { try { - const cmd = 'npm run channels:lint --- tests/__data__/input/channels-lint/error.channels.xml' + const cmd = 'npm run channels:lint --- tests/__data__/input/channels_lint/error.channels.xml' const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) process.exit(1) @@ -23,7 +23,7 @@ describe('channels:lint', () => { it('will show a message if an error occurred while parsing an xml file', () => { try { const cmd = - 'npm run channels:lint --- tests/__data__/input/channels-lint/invalid.channels.xml' + 'npm run channels:lint --- tests/__data__/input/channels_lint/invalid.channels.xml' const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) process.exit(1) @@ -38,7 +38,7 @@ describe('channels:lint', () => { it('can test multiple files at ones', () => { try { const cmd = - 'npm run channels:lint --- tests/__data__/input/channels-lint/error.channels.xml tests/__data__/input/channels-lint/invalid.channels.xml' + 'npm run channels:lint --- tests/__data__/input/channels_lint/error.channels.xml tests/__data__/input/channels_lint/invalid.channels.xml' const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) process.exit(1) @@ -57,7 +57,7 @@ describe('channels:lint', () => { it('will show a message if the file contains single quotes', () => { try { const cmd = - 'npm run channels:lint --- tests/__data__/input/channels-lint/single_quotes.channels.xml' + 'npm run channels:lint --- tests/__data__/input/channels_lint/single_quotes.channels.xml' const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) process.exit(1) @@ -72,7 +72,7 @@ describe('channels:lint', () => { it('does not display errors if there are none', () => { try { - const cmd = 'npm run channels:lint --- tests/__data__/input/channels-lint/valid.channels.xml' + const cmd = 'npm run channels:lint --- tests/__data__/input/channels_lint/valid.channels.xml' const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) } catch (error) { diff --git a/tests/commands/channels/parse.test.ts b/tests/commands/channels/parse.test.ts index 6c9fa113..3e67da0b 100644 --- a/tests/commands/channels/parse.test.ts +++ b/tests/commands/channels/parse.test.ts @@ -5,20 +5,20 @@ import { pathToFileURL } from 'node:url' beforeEach(() => { fs.emptyDirSync('tests/__data__/output') fs.copySync( - 'tests/__data__/input/channels-parse/channels-parse.channels.xml', - 'tests/__data__/output/channels.xml' + 'tests/__data__/input/channels_parse/example.com.channels.xml', + 'tests/__data__/output/example.com.channels.xml' ) }) describe('channels:parse', () => { it('can parse channels', () => { const cmd = - 'npm run channels:parse --- --config=tests/__data__/input/channels-parse/channels-parse.config.js --output=tests/__data__/output/channels.xml' + 'npm run channels:parse --- --config=tests/__data__/input/channels_parse/example.com.config.js --output=tests/__data__/output/example.com.channels.xml' const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) - expect(content('tests/__data__/output/channels.xml')).toEqual( - content('tests/__data__/expected/sites/channels-parse/channels-parse.channels.xml') + expect(content('tests/__data__/output/example.com.channels.xml')).toEqual( + content('tests/__data__/expected/channels_parse/example.com.channels.xml') ) }) }) diff --git a/tests/commands/channels/validate.test.ts b/tests/commands/channels/validate.test.ts index 60aa1fc2..c0356a42 100644 --- a/tests/commands/channels/validate.test.ts +++ b/tests/commands/channels/validate.test.ts @@ -6,26 +6,26 @@ type ExecError = { stdout: string } -let ENV_VAR = 'DATA_DIR=tests/__data__/input/temp/data' +let ENV_VAR = 'DATA_DIR=tests/__data__/input/__data__' if (os.platform() === 'win32') { - ENV_VAR = 'SET "DATA_DIR=tests/__data__/input/temp/data" &&' + ENV_VAR = 'SET "DATA_DIR=tests/__data__/input/__data__" &&' } describe('channels:validate', () => { it('will show a message if the file contains a duplicate', () => { try { - const cmd = `${ENV_VAR} npm run channels:validate --- tests/__data__/input/channels-validate/duplicate.channels.xml` + const cmd = `${ENV_VAR} npm run channels:validate --- tests/__data__/input/channels_validate/duplicate.channels.xml` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) process.exit(1) } catch (error) { expect((error as ExecError).status).toBe(1) expect((error as ExecError).stdout).toContain(` -┌─────────┬─────────────┬──────┬────────────────┬─────────┬─────────┐ -│ (index) │ type │ lang │ xmltv_id │ site_id │ name │ -├─────────┼─────────────┼──────┼────────────────┼─────────┼─────────┤ -│ 0 │ 'duplicate' │ 'en' │ 'BravoEast.us' │ '140' │ 'Bravo' │ -└─────────┴─────────────┴──────┴────────────────┴─────────┴─────────┘ +┌─────────┬─────────────┬──────┬─────────────────┬─────────┬─────────┐ +│ (index) │ type │ lang │ xmltv_id │ site_id │ name │ +├─────────┼─────────────┼──────┼─────────────────┼─────────┼─────────┤ +│ 0 │ 'duplicate' │ 'en' │ 'Bravo.us@East' │ '140' │ 'Bravo' │ +└─────────┴─────────────┴──────┴─────────────────┴─────────┴─────────┘ 1 error(s) in 1 file(s) `) @@ -34,7 +34,7 @@ describe('channels:validate', () => { it('will show a message if the file contains a channel with wrong xmltv_id', () => { try { - const cmd = `${ENV_VAR} npm run channels:validate --- tests/__data__/input/channels-validate/wrong_xmltv_id.channels.xml` + const cmd = `${ENV_VAR} npm run channels:validate --- tests/__data__/input/channels_validate/wrong_xmltv_id.channels.xml` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) process.exit(1) diff --git a/tests/commands/epg/grab.test.ts b/tests/commands/epg/grab.test.ts index 648d5057..7233b427 100644 --- a/tests/commands/epg/grab.test.ts +++ b/tests/commands/epg/grab.test.ts @@ -1,15 +1,15 @@ -import { execSync } from 'child_process' -import fs from 'fs-extra' import { pathToFileURL } from 'node:url' +import { execSync } from 'child_process' +import { Zip } from '@freearhey/core' +import fs from 'fs-extra' import path from 'path' import os from 'os' -import { Zip } from '@freearhey/core' let ENV_VAR = - 'SITES_DIR=tests/__data__/input/epg-grab/sites CURR_DATE=2022-10-20 DATA_DIR=tests/__data__/input/temp/data' + 'SITES_DIR=tests/__data__/input/epg_grab/sites CURR_DATE=2022-10-20 DATA_DIR=tests/__data__/input/__data__' if (os.platform() === 'win32') { ENV_VAR = - 'SET "SITES_DIR=tests/__data__/input/epg-grab/sites" && SET "CURR_DATE=2022-10-20" && SET "DATA_DIR=tests/__data__/input/temp/data" &&' + 'SET "SITES_DIR=tests/__data__/input/epg_grab/sites" && SET "CURR_DATE=2022-10-20" && SET "DATA_DIR=tests/__data__/input/__data__" &&' } beforeEach(() => { @@ -25,73 +25,75 @@ describe('epg:grab', () => { if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guide.xml')).toEqual( - content('tests/__data__/expected/guide2.xml') + content('tests/__data__/expected/epg_grab/guide_2.xml') ) }) it('can grab epg with multiple channels.xml files', () => { - const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/**/*.channels.xml --output=tests/__data__/output/guide.xml` + const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg_grab/sites/**/*.channels.xml --output=tests/__data__/output/guide.xml` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guide.xml')).toEqual( - content('tests/__data__/expected/guide.xml') + content('tests/__data__/expected/epg_grab/guide.xml') ) }) it('can grab epg with gzip option enabled', async () => { - const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/**/*.channels.xml --output="${path.resolve( + const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg_grab/sites/**/*.channels.xml --output="${path.resolve( 'tests/__data__/output/guide.xml' )}" --gzip` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guide.xml')).toEqual( - content('tests/__data__/expected/guide.xml') + content('tests/__data__/expected/epg_grab/guide.xml') ) const zip = new Zip() const expected = await zip.decompress(fs.readFileSync('tests/__data__/output/guide.xml.gz')) - const result = await zip.decompress(fs.readFileSync('tests/__data__/expected/guide.xml.gz')) + const result = await zip.decompress( + fs.readFileSync('tests/__data__/expected/epg_grab/guide.xml.gz') + ) expect(expected).toEqual(result) }, 30000) it('can grab epg with wildcard as output', () => { - const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/example.com/example.com.channels.xml --output=tests/__data__/output/guides/{lang}/{site}.xml` + const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg_grab/sites/example.com/example.com.channels.xml --output=tests/__data__/output/guides/{lang}/{site}.xml` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guides/en/example.com.xml')).toEqual( - content('tests/__data__/expected/guides/en/example.com.xml') + content('tests/__data__/expected/epg_grab/guides/en/example.com.xml') ) expect(content('tests/__data__/output/guides/fr/example.com.xml')).toEqual( - content('tests/__data__/expected/guides/fr/example.com.xml') + content('tests/__data__/expected/epg_grab/guides/fr/example.com.xml') ) }) it('can grab epg then language filter enabled', () => { - const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/example.com/example.com.channels.xml --output=tests/__data__/output/guides/{lang}/{site}.xml --lang=fr` + const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg_grab/sites/example.com/example.com.channels.xml --output=tests/__data__/output/guides/{lang}/{site}.xml --lang=fr` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guides/fr/example.com.xml')).toEqual( - content('tests/__data__/expected/guides/fr/example.com.xml') + content('tests/__data__/expected/epg_grab/guides/fr/example.com.xml') ) }) it('can grab epg using custom channels list', () => { - const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/custom.channels.xml --output=tests/__data__/output/guide.xml` + const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg_grab/custom.channels.xml --output=tests/__data__/output/guide.xml` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guide.xml')).toEqual( - content('tests/__data__/expected/custom_guide.xml') + content('tests/__data__/expected/epg_grab/guide_3.xml') ) }) it('it will raise an error if the timeout is exceeded', () => { - const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/custom.channels.xml --output=tests/__data__/output/guide.xml --timeout=0` + const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg_grab/custom.channels.xml --output=tests/__data__/output/guide.xml --timeout=0` const stdout = execSync(cmd, { encoding: 'utf8' }) if (process.env.DEBUG === 'true') console.log(cmd, stdout) @@ -106,7 +108,7 @@ describe('epg:grab', () => { if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guide.xml')).toEqual( - content('tests/__data__/expected/guide2.xml') + content('tests/__data__/expected/epg_grab/guide_2.xml') ) }) @@ -118,7 +120,7 @@ describe('epg:grab', () => { if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/guide.xml')).toEqual( - content('tests/__data__/expected/guide2.xml') + content('tests/__data__/expected/epg_grab/guide_2.xml') ) }) }) diff --git a/tests/commands/sites/init.test.ts b/tests/commands/sites/init.test.ts index 091948f0..814557e5 100644 --- a/tests/commands/sites/init.test.ts +++ b/tests/commands/sites/init.test.ts @@ -24,13 +24,13 @@ it('can create new site config from template', () => { expect(exists('tests/__data__/output/sites/example.com/example.com.config.js')).toBe(true) expect(exists('tests/__data__/output/sites/example.com/readme.md')).toBe(true) expect(content('tests/__data__/output/sites/example.com/example.com.test.js')).toEqual( - content('tests/__data__/expected/sites/sites-init/example.com.test.js') + content('tests/__data__/expected/sites_init/example.com.test.js') ) expect(content('tests/__data__/output/sites/example.com/example.com.config.js')).toEqual( - content('tests/__data__/expected/sites/sites-init/example.com.config.js') + content('tests/__data__/expected/sites_init/example.com.config.js') ) expect(content('tests/__data__/output/sites/example.com/readme.md')).toEqual( - content('tests/__data__/expected/sites/sites-init/readme.md') + content('tests/__data__/expected/sites_init/readme.md') ) }) diff --git a/tests/commands/sites/update.test.ts b/tests/commands/sites/update.test.ts index c14a7370..7c49226b 100644 --- a/tests/commands/sites/update.test.ts +++ b/tests/commands/sites/update.test.ts @@ -3,10 +3,10 @@ import fs from 'fs-extra' import { pathToFileURL } from 'node:url' import os from 'os' -let ENV_VAR = 'SITES_DIR=tests/__data__/input/sites-update/sites ROOT_DIR=tests/__data__/output' +let ENV_VAR = 'SITES_DIR=tests/__data__/input/sites_update/sites ROOT_DIR=tests/__data__/output' if (os.platform() === 'win32') { ENV_VAR = - 'SET "SITES_DIR=tests/__data__/input/sites-update/sites" && SET "ROOT_DIR=tests/__data__/output" &&' + 'SET "SITES_DIR=tests/__data__/input/sites_update/sites" && SET "ROOT_DIR=tests/__data__/output" &&' } beforeEach(() => { @@ -20,7 +20,7 @@ it('can update SITES.md', () => { if (process.env.DEBUG === 'true') console.log(cmd, stdout) expect(content('tests/__data__/output/SITES.md')).toEqual( - content('tests/__data__/expected/SITES.md') + content('tests/__data__/expected/sites_update/SITES.md') ) }) From 5dd131e2d37e17e00759408fe8bc9d5b4b6699c4 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:13:39 +0300 Subject: [PATCH 4/8] Update scripts --- scripts/commands/api/generate.ts | 11 +- scripts/commands/api/load.ts | 1 + scripts/commands/channels/.gitignore | 1 - scripts/commands/channels/edit.ts | 216 ++++++++++++++++---------- scripts/commands/channels/validate.ts | 18 +-- scripts/commands/sites/init.ts | 4 +- scripts/commands/sites/update.ts | 23 ++- scripts/core/apiChannel.ts | 79 ---------- scripts/core/index.ts | 1 - scripts/core/issueLoader.ts | 21 +-- scripts/core/queueCreator.ts | 9 +- scripts/models/channel.ts | 56 +++++++ scripts/models/feed.ts | 34 ++++ scripts/models/index.ts | 2 + scripts/templates/_readme.md | 2 +- 15 files changed, 274 insertions(+), 204 deletions(-) delete mode 100644 scripts/commands/channels/.gitignore delete mode 100644 scripts/core/apiChannel.ts create mode 100644 scripts/models/channel.ts create mode 100644 scripts/models/feed.ts diff --git a/scripts/commands/api/generate.ts b/scripts/commands/api/generate.ts index 43634f8c..b43bc84b 100644 --- a/scripts/commands/api/generate.ts +++ b/scripts/commands/api/generate.ts @@ -2,10 +2,11 @@ import { Logger, Storage, Collection } from '@freearhey/core' import { ChannelsParser } from '../../core' import path from 'path' import { SITES_DIR, API_DIR } from '../../constants' -import { Channel } from 'epg-grabber' +import epgGrabber from 'epg-grabber' type OutputItem = { channel: string | null + feed: string | null site: string site_id: string site_name: string @@ -31,9 +32,13 @@ async function main() { logger.info(` found ${parsedChannels.count()} channel(s)`) - const output = parsedChannels.map((channel: Channel): OutputItem => { + const output = parsedChannels.map((channel: epgGrabber.Channel): OutputItem => { + const xmltv_id = channel.xmltv_id || '' + const [channelId, feedId] = xmltv_id.split('@') + return { - channel: channel.xmltv_id || null, + channel: channelId || null, + feed: feedId || null, site: channel.site || '', site_id: channel.site_id || '', site_name: channel.name, diff --git a/scripts/commands/api/load.ts b/scripts/commands/api/load.ts index 9e0cd0a6..28d19912 100644 --- a/scripts/commands/api/load.ts +++ b/scripts/commands/api/load.ts @@ -7,6 +7,7 @@ async function main() { const requests = [ client.download('channels.json'), + client.download('feeds.json'), client.download('countries.json'), client.download('regions.json'), client.download('subdivisions.json') diff --git a/scripts/commands/channels/.gitignore b/scripts/commands/channels/.gitignore deleted file mode 100644 index c7b0476d..00000000 --- a/scripts/commands/channels/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/replace.ts \ No newline at end of file diff --git a/scripts/commands/channels/edit.ts b/scripts/commands/channels/edit.ts index 484ba08e..87e81999 100644 --- a/scripts/commands/channels/edit.ts +++ b/scripts/commands/channels/edit.ts @@ -1,12 +1,16 @@ +import { Storage, Collection, Logger, Dictionary } from '@freearhey/core' +import { select, input } from '@inquirer/prompts' +import { ChannelsParser, XML } from '../../core' +import { Channel, Feed } from '../../models' import { DATA_DIR } from '../../constants' -import { Storage, Collection, Logger } from '@freearhey/core' -import { ChannelsParser, XML, ApiChannel } from '../../core' -import { Channel } from 'epg-grabber' import nodeCleanup from 'node-cleanup' -import { program } from 'commander' -import inquirer, { QuestionCollection } from 'inquirer' -import Fuse from 'fuse.js' +import epgGrabber from 'epg-grabber' +import { Command } from 'commander' import readline from 'readline' +import Fuse from 'fuse.js' + +type ChoiceValue = { type: string; value?: Feed | Channel } +type Choice = { name: string; short?: string; value: ChoiceValue } if (process.platform === 'win32') { readline @@ -19,105 +23,159 @@ if (process.platform === 'win32') { }) } +const program = new Command() + program.argument('', 'Path to *.channels.xml file to edit').parse(process.argv) const filepath = program.args[0] - const logger = new Logger() const storage = new Storage() -let channels = new Collection() +let parsedChannels = new Collection() -async function main() { +main(filepath) +nodeCleanup(() => { + save(filepath) +}) + +export default async function main(filepath: string) { if (!(await storage.exists(filepath))) { throw new Error(`File "${filepath}" does not exists`) } const parser = new ChannelsParser({ storage }) - channels = await parser.parse(filepath) + parsedChannels = await parser.parse(filepath) const dataStorage = new Storage(DATA_DIR) - const channelsContent = await dataStorage.json('channels.json') - const searchIndex = new Fuse(channelsContent, { keys: ['name', 'alt_names'], threshold: 0.4 }) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const feedsData = await dataStorage.json('feeds.json') + const feeds = new Collection(feedsData).map(data => new Feed(data)) + const feedsGroupedByChannelId = feeds.groupBy((feed: Feed) => feed.channelId) - for (const channel of channels.all()) { + const searchIndex: Fuse = new Fuse(channels.all(), { + keys: ['name', 'alt_names'], + threshold: 0.4 + }) + + for (const channel of parsedChannels.all()) { if (channel.xmltv_id) continue - const question: QuestionCollection = { - name: 'option', - message: `Select xmltv_id for "${channel.name}" (${channel.site_id}):`, - type: 'list', - choices: getOptions(searchIndex, channel), - pageSize: 10 + try { + channel.xmltv_id = await selectChannel(channel, searchIndex, feedsGroupedByChannelId) + } catch { + break } - - await inquirer.prompt(question).then(async selected => { - switch (selected.option) { - case 'Type...': - const input = await getInput(channel) - channel.xmltv_id = input.xmltv_id - break - case 'Skip': - channel.xmltv_id = '-' - break - default: - const [, xmltv_id] = selected.option - .replace(/ \[.*\]/, '') - .split('|') - .map((i: string) => i.trim()) - channel.xmltv_id = xmltv_id - break - } - }) } - channels.forEach((channel: Channel) => { + parsedChannels.forEach((channel: epgGrabber.Channel) => { if (channel.xmltv_id === '-') { channel.xmltv_id = '' } }) } -main() +async function selectChannel( + channel: epgGrabber.Channel, + searchIndex: Fuse, + feedsGroupedByChannelId: Dictionary +): Promise { + const similarChannels = searchIndex + .search(channel.name) + .map((result: { item: Channel }) => result.item) -function save() { + const selected: ChoiceValue = await select({ + message: `Select channel ID for "${channel.name}" (${channel.site_id}):`, + choices: getChannelChoises(new Collection(similarChannels)), + pageSize: 10 + }) + + switch (selected.type) { + case 'skip': + return '-' + case 'type': { + const typedChannelId = await input({ message: ' Channel ID:' }) + const typedFeedId = await input({ message: ' Feed ID:', default: 'SD' }) + return [typedChannelId, typedFeedId].join('@') + } + case 'channel': { + const selectedChannel = selected.value + if (!selectedChannel) return '' + const selectedFeedId = await selectFeed(selectedChannel.id, feedsGroupedByChannelId) + return [selectedChannel.id, selectedFeedId].join('@') + } + } + + return '' +} + +async function selectFeed(channelId: string, feedsGroupedByChannelId: Dictionary): Promise { + const channelFeeds = feedsGroupedByChannelId.get(channelId) || [] + if (channelFeeds.length <= 1) return '' + + const selected: ChoiceValue = await select({ + message: `Select feed ID for "${channelId}":`, + choices: getFeedChoises(channelFeeds), + pageSize: 10 + }) + + switch (selected.type) { + case 'type': + return await input({ message: ' Feed ID:' }) + case 'feed': + const selectedFeed = selected.value + if (!selectedFeed) return '' + return selectedFeed.id + } + + return '' +} + +function getChannelChoises(channels: Collection): Choice[] { + const choises: Choice[] = [] + + channels.forEach((channel: Channel) => { + const names = [channel.name, ...channel.altNames.all()].join(', ') + + choises.push({ + value: { + type: 'channel', + value: channel + }, + name: `${channel.id} (${names})`, + short: `${channel.id}` + }) + }) + + choises.push({ name: 'Type...', value: { type: 'type' } }) + choises.push({ name: 'Skip', value: { type: 'skip' } }) + + return choises +} + +function getFeedChoises(feeds: Collection): Choice[] { + const choises: Choice[] = [] + + feeds.forEach((feed: Feed) => { + let name = `${feed.id} (${feed.name})` + if (feed.isMain) name += ' [main]' + + choises.push({ + value: { + type: 'feed', + value: feed + }, + name, + short: feed.id + }) + }) + + choises.push({ name: 'Type...', value: { type: 'type' } }) + + return choises +} + +function save(filepath: string) { if (!storage.existsSync(filepath)) return - - const xml = new XML(channels) - + const xml = new XML(parsedChannels) storage.saveSync(filepath, xml.toString()) - logger.info(`\nFile '${filepath}' successfully saved`) } - -nodeCleanup(() => { - save() -}) - -async function getInput(channel: Channel) { - const name = channel.name.trim() - const input = await inquirer.prompt([ - { - name: 'xmltv_id', - message: ' xmltv_id:', - type: 'input' - } - ]) - - return { name, xmltv_id: input['xmltv_id'] } -} - -function getOptions(index, channel: Channel) { - const similar = index.search(channel.name).map(result => new ApiChannel(result.item)) - - const variants = new Collection() - similar.forEach((_channel: ApiChannel) => { - const altNames = _channel.altNames.notEmpty() ? ` (${_channel.altNames.join(',')})` : '' - const closed = _channel.closed ? ` [closed:${_channel.closed}]` : '' - const replacedBy = _channel.replacedBy ? `[replaced_by:${_channel.replacedBy}]` : '' - - variants.add(`${_channel.name}${altNames} | ${_channel.id}${closed}${replacedBy}`) - }) - variants.add('Type...') - variants.add('Skip') - - return variants.all() -} diff --git a/scripts/commands/channels/validate.ts b/scripts/commands/channels/validate.ts index 05b78b78..47e6088c 100644 --- a/scripts/commands/channels/validate.ts +++ b/scripts/commands/channels/validate.ts @@ -1,10 +1,11 @@ import { Storage, Collection, Dictionary, File } from '@freearhey/core' -import { ChannelsParser, ApiChannel } from '../../core' +import { ChannelsParser } from '../../core' +import { Channel } from '../../models' import { program } from 'commander' import chalk from 'chalk' import langs from 'langs' import { DATA_DIR } from '../../constants' -import { Channel } from 'epg-grabber' +import epgGrabber from 'epg-grabber' program.argument('[filepath]', 'Path to *.channels.xml files to validate').parse(process.argv) @@ -21,8 +22,9 @@ async function main() { const parser = new ChannelsParser({ storage: new Storage() }) const dataStorage = new Storage(DATA_DIR) - const channelsContent = await dataStorage.json('channels.json') - const channels = new Collection(channelsContent).map(data => new ApiChannel(data)) + const channelsData = await dataStorage.json('channels.json') + const channels = new Collection(channelsData).map(data => new Channel(data)) + const channelsGroupedById = channels.groupBy((channel: Channel) => channel.id) let totalFiles = 0 let totalErrors = 0 @@ -37,7 +39,7 @@ async function main() { const bufferBySiteId = new Dictionary() const errors: ValidationError[] = [] - parsedChannels.forEach((channel: Channel) => { + parsedChannels.forEach((channel: epgGrabber.Channel) => { const bufferId: string = channel.site_id if (bufferBySiteId.missing(bufferId)) { bufferBySiteId.set(bufferId, true) @@ -52,10 +54,8 @@ async function main() { } if (!channel.xmltv_id) return - - const foundChannel = channels.first( - (_channel: ApiChannel) => _channel.id === channel.xmltv_id - ) + const [channelId] = channel.xmltv_id.split('@') + const foundChannel = channelsGroupedById.get(channelId) if (!foundChannel) { errors.push({ type: 'wrong_xmltv_id', ...channel }) totalErrors++ diff --git a/scripts/commands/sites/init.ts b/scripts/commands/sites/init.ts index bf34e1ad..44df0c95 100644 --- a/scripts/commands/sites/init.ts +++ b/scripts/commands/sites/init.ts @@ -1,8 +1,8 @@ import { Logger, Storage } from '@freearhey/core' -import { program } from 'commander' import { SITES_DIR } from '../../constants' -import fs from 'fs-extra' import { pathToFileURL } from 'node:url' +import { program } from 'commander' +import fs from 'fs-extra' program.argument('', 'Domain name of the site').parse(process.argv) diff --git a/scripts/commands/sites/update.ts b/scripts/commands/sites/update.ts index 9ffc0b4b..a2cf5cd7 100644 --- a/scripts/commands/sites/update.ts +++ b/scripts/commands/sites/update.ts @@ -1,8 +1,8 @@ -import { Channel } from 'epg-grabber' -import { Logger, Storage, Collection } from '@freearhey/core' import { IssueLoader, HTMLTable, ChannelsParser } from '../../core' -import { Issue, Site } from '../../models' +import { Logger, Storage, Collection } from '@freearhey/core' import { SITES_DIR, ROOT_DIR } from '../../constants' +import { Issue, Site } from '../../models' +import { Channel } from 'epg-grabber' async function main() { const logger = new Logger({ disabled: true }) @@ -15,11 +15,17 @@ async function main() { const folders = await sitesStorage.list('*/') logger.info('loading issues...') - const issues = await loadIssues(loader) + const issues = await loader.load() logger.info('putting the data together...') + const brokenGuideReports = issues.filter(issue => + issue.labels.find((label: string) => label === 'broken guide') + ) for (const domain of folders) { - const filteredIssues = issues.filter((issue: Issue) => domain === issue.data.get('site')) + const filteredIssues = brokenGuideReports.filter( + (issue: Issue) => domain === issue.data.get('site') + ) + const site = new Site({ domain, issues: filteredIssues @@ -62,10 +68,3 @@ async function main() { } main() - -async function loadIssues(loader: IssueLoader) { - const issuesWithStatusWarning = await loader.load({ labels: ['broken guide', 'status:warning'] }) - const issuesWithStatusDown = await loader.load({ labels: ['broken guide', 'status:down'] }) - - return issuesWithStatusWarning.concat(issuesWithStatusDown) -} diff --git a/scripts/core/apiChannel.ts b/scripts/core/apiChannel.ts deleted file mode 100644 index fd1fcd69..00000000 --- a/scripts/core/apiChannel.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { Collection } from '@freearhey/core' - -type ApiChannelProps = { - id: string - name: string - alt_names: string[] - network: string - owners: string[] - country: string - subdivision: string - city: string - broadcast_area: string[] - languages: string[] - categories: string[] - is_nsfw: boolean - launched: string - closed: string - replaced_by: string - website: string - logo: string -} - -export class ApiChannel { - id: string - name: string - altNames: Collection - network: string - owners: Collection - country: string - subdivision: string - city: string - broadcastArea: Collection - languages: Collection - categories: Collection - isNSFW: boolean - launched: string - closed: string - replacedBy: string - website: string - logo: string - - constructor({ - id, - name, - alt_names, - network, - owners, - country, - subdivision, - city, - broadcast_area, - languages, - categories, - is_nsfw, - launched, - closed, - replaced_by, - website, - logo - }: ApiChannelProps) { - this.id = id - this.name = name - this.altNames = new Collection(alt_names) - this.network = network - this.owners = new Collection(owners) - this.country = country - this.subdivision = subdivision - this.city = city - this.broadcastArea = new Collection(broadcast_area) - this.languages = new Collection(languages) - this.categories = new Collection(categories) - this.isNSFW = is_nsfw - this.launched = launched - this.closed = closed - this.replacedBy = replaced_by - this.website = website - this.logo = logo - } -} diff --git a/scripts/core/index.ts b/scripts/core/index.ts index db3e75a5..91a684ff 100644 --- a/scripts/core/index.ts +++ b/scripts/core/index.ts @@ -7,7 +7,6 @@ export * from './job' export * from './queue' export * from './guideManager' export * from './guide' -export * from './apiChannel' export * from './apiClient' export * from './queueCreator' export * from './issueLoader' diff --git a/scripts/core/issueLoader.ts b/scripts/core/issueLoader.ts index 8d9b6479..4aa1cceb 100644 --- a/scripts/core/issueLoader.ts +++ b/scripts/core/issueLoader.ts @@ -1,27 +1,22 @@ -import { Collection } from '@freearhey/core' import { restEndpointMethods } from '@octokit/plugin-rest-endpoint-methods' import { paginateRest } from '@octokit/plugin-paginate-rest' +import { TESTING, OWNER, REPO } from '../constants' +import { Collection } from '@freearhey/core' import { Octokit } from '@octokit/core' import { IssueParser } from './' -import { TESTING, OWNER, REPO } from '../constants' const CustomOctokit = Octokit.plugin(paginateRest, restEndpointMethods) const octokit = new CustomOctokit() export class IssueLoader { - async load({ labels }: { labels: string[] | string }) { - labels = Array.isArray(labels) ? labels.join(',') : labels + async load(props?: { labels: string[] | string }) { + let labels = '' + if (props && props.labels) { + labels = Array.isArray(props.labels) ? props.labels.join(',') : props.labels + } let issues: object[] = [] if (TESTING) { - switch (labels) { - case 'broken guide,status:warning': - issues = (await import('../../tests/__data__/input/issues/broken_guide_warning.mjs')) - .default - break - case 'broken guide,status:down': - issues = (await import('../../tests/__data__/input/issues/broken_guide_down.mjs')).default - break - } + issues = (await import('../../tests/__data__/input/sites_update/issues.mjs')).default } else { issues = await octokit.paginate(octokit.rest.issues.listForRepo, { owner: OWNER, diff --git a/scripts/core/queueCreator.ts b/scripts/core/queueCreator.ts index 1a906f9d..d1ebf381 100644 --- a/scripts/core/queueCreator.ts +++ b/scripts/core/queueCreator.ts @@ -1,9 +1,10 @@ import { Storage, Collection, DateTime, Logger } from '@freearhey/core' -import { ChannelsParser, ConfigLoader, ApiChannel, Queue } from './' +import { ChannelsParser, ConfigLoader, Queue } from './' import { SITES_DIR, DATA_DIR } from '../constants' import { SiteConfig } from 'epg-grabber' import path from 'path' import { GrabOptions } from '../commands/epg/grab' +import { Channel } from '../models' type QueueCreatorProps = { logger: Logger @@ -32,7 +33,7 @@ export class QueueCreator { async create(): Promise { const channelsContent = await this.dataStorage.json('channels.json') - const channels = new Collection(channelsContent).map(data => new ApiChannel(data)) + const channels = new Collection(channelsContent).map(data => new Channel(data)) const queue = new Queue() for (const channel of this.parsedChannels.all()) { @@ -44,8 +45,8 @@ export class QueueCreator { if (channel.xmltv_id) { if (!channel.icon) { - const found: ApiChannel = channels.first( - (_channel: ApiChannel) => _channel.id === channel.xmltv_id + const found: Channel = channels.first( + (_channel: Channel) => _channel.id === channel.xmltv_id ) if (found) { diff --git a/scripts/models/channel.ts b/scripts/models/channel.ts new file mode 100644 index 00000000..281c3914 --- /dev/null +++ b/scripts/models/channel.ts @@ -0,0 +1,56 @@ +import { Collection } from '@freearhey/core' + +type ChannelData = { + id: string + name: string + alt_names: string[] + network: string + owners: Collection + country: string + subdivision: string + city: string + categories: Collection + is_nsfw: boolean + launched: string + closed: string + replaced_by: string + website: string + logo: string +} + +export class Channel { + id: string + name: string + altNames: Collection + network?: string + owners: Collection + countryCode: string + subdivisionCode?: string + cityName?: string + categoryIds: Collection + categories?: Collection + isNSFW: boolean + launched?: string + closed?: string + replacedBy?: string + website?: string + logo: string + + constructor(data: ChannelData) { + this.id = data.id + this.name = data.name + this.altNames = new Collection(data.alt_names) + this.network = data.network || undefined + this.owners = new Collection(data.owners) + this.countryCode = data.country + this.subdivisionCode = data.subdivision || undefined + this.cityName = data.city || undefined + this.categoryIds = new Collection(data.categories) + this.isNSFW = data.is_nsfw + this.launched = data.launched || undefined + this.closed = data.closed || undefined + this.replacedBy = data.replaced_by || undefined + this.website = data.website || undefined + this.logo = data.logo + } +} diff --git a/scripts/models/feed.ts b/scripts/models/feed.ts new file mode 100644 index 00000000..4941d4f7 --- /dev/null +++ b/scripts/models/feed.ts @@ -0,0 +1,34 @@ +import { Collection } from '@freearhey/core' + +type FeedData = { + channel: string + id: string + name: string + is_main: boolean + broadcast_area: Collection + languages: Collection + timezones: Collection + video_format: string +} + +export class Feed { + channelId: string + id: string + name: string + isMain: boolean + broadcastAreaCodes: Collection + languageCodes: Collection + timezoneIds: Collection + videoFormat: string + + constructor(data: FeedData) { + this.channelId = data.channel + this.id = data.id + this.name = data.name + this.isMain = data.is_main + this.broadcastAreaCodes = new Collection(data.broadcast_area) + this.languageCodes = new Collection(data.languages) + this.timezoneIds = new Collection(data.timezones) + this.videoFormat = data.video_format + } +} diff --git a/scripts/models/index.ts b/scripts/models/index.ts index f8188a40..1b602c54 100644 --- a/scripts/models/index.ts +++ b/scripts/models/index.ts @@ -1,2 +1,4 @@ export * from './issue' export * from './site' +export * from './channel' +export * from './feed' diff --git a/scripts/templates/_readme.md b/scripts/templates/_readme.md index 3260ab62..4aa94527 100644 --- a/scripts/templates/_readme.md +++ b/scripts/templates/_readme.md @@ -1,6 +1,6 @@ # -https://example.com +https:// ### Download the guide From fbc0d92a1ec68d93f3edf3b7fde7c0d236d67a83 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:14:15 +0300 Subject: [PATCH 5/8] Update issue templates --- ...ource-request.yml => 1_source-request.yml} | 0 ...nnel-request.yml => 2_channel-request.yml} | 0 ...---broken-guide.yml => 3_broken-guide.yml} | 0 .github/ISSUE_TEMPLATE/4_feature-request.yml | 24 +++++++++++++++++++ .../{--bug-report.yml => 5_bug-report.yml} | 0 .github/ISSUE_TEMPLATE/config.yml | 3 --- 6 files changed, 24 insertions(+), 3 deletions(-) rename .github/ISSUE_TEMPLATE/{-----source-request.yml => 1_source-request.yml} (100%) rename .github/ISSUE_TEMPLATE/{----channel-request.yml => 2_channel-request.yml} (100%) rename .github/ISSUE_TEMPLATE/{---broken-guide.yml => 3_broken-guide.yml} (100%) create mode 100644 .github/ISSUE_TEMPLATE/4_feature-request.yml rename .github/ISSUE_TEMPLATE/{--bug-report.yml => 5_bug-report.yml} (100%) diff --git a/.github/ISSUE_TEMPLATE/-----source-request.yml b/.github/ISSUE_TEMPLATE/1_source-request.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/-----source-request.yml rename to .github/ISSUE_TEMPLATE/1_source-request.yml diff --git a/.github/ISSUE_TEMPLATE/----channel-request.yml b/.github/ISSUE_TEMPLATE/2_channel-request.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/----channel-request.yml rename to .github/ISSUE_TEMPLATE/2_channel-request.yml diff --git a/.github/ISSUE_TEMPLATE/---broken-guide.yml b/.github/ISSUE_TEMPLATE/3_broken-guide.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/---broken-guide.yml rename to .github/ISSUE_TEMPLATE/3_broken-guide.yml diff --git a/.github/ISSUE_TEMPLATE/4_feature-request.yml b/.github/ISSUE_TEMPLATE/4_feature-request.yml new file mode 100644 index 00000000..da08aab1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4_feature-request.yml @@ -0,0 +1,24 @@ +name: ✨ Feature request +description: Ask for a feature to be added to the guide +labels: ['feature request'] + +body: + - type: markdown + attributes: + value: | + Please fill out the issue template as much as you can so we could efficiently process your request. + + - type: input + attributes: + label: Site + description: The name of the site + placeholder: 'guidatv.sky.it' + validations: + required: true + + - type: textarea + attributes: + label: Description + description: Detailed description of the feature. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/--bug-report.yml b/.github/ISSUE_TEMPLATE/5_bug-report.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/--bug-report.yml rename to .github/ISSUE_TEMPLATE/5_bug-report.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index f303ae6e..2bc849ec 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,5 @@ blank_issues_enabled: true contact_links: - - name: 💡 Feature request - url: https://github.com/orgs/iptv-org/discussions/categories/ideas - about: For any ideas or feature requests - name: ❓ Ask a question url: https://github.com/orgs/iptv-org/discussions/categories/q-a about: Ask questions about this project From 36a900a90f56b6da3c2bad3b23238198bbda6753 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:25:59 +0300 Subject: [PATCH 6/8] Update CONTRIBUTING.md --- CONTRIBUTING.md | 288 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 247 insertions(+), 41 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7288d327..3ec1c282 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,11 @@ ### How to add a channel to the guide? -First, select a site from the [SITES.md](SITES.md) that you know has a guide for the channel you need. Then go to the folder with its config and open the file `*.channels.xml`. +To ask for help with adding a channel simply fill out this [form](https://github.com/iptv-org/epg/issues/new?assignees=&labels=channel+request&projects=&template=2_channel-request.yml). + +If you want to add a channel to the list yourself, here are the instructions on how to do it. + +First select the site from [SITES.md](SITES.md) that you know has a guide for the channel you need. Then go to the folder with its config and open the file `*.channels.xml`. Make sure that the desired channel is not already in the list. If it is not, simply add its description to the end of the list as shown here: @@ -20,43 +24,25 @@ Make sure that the desired channel is not already in the list. If it is not, sim ``` -| Attribute | Description | Example | -| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------- | -| SITE | Site domain name. | `example.com` | -| LANGUAGE_CODE | Language of the guide ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code). | `en` | -| CHANNEL_ID | Channel ID from [iptv-org/database](https://github.com/iptv-org/database). A complete list of supported channels can also be found at https://iptv-org.github.io/. | `BBCOne.uk` | -| SITE_ID | Unique ID of the channel used in the source. | `bbc1` | -| CHANNEL_NAME | Name of the channel used in the source. | `BBC One` | +| Attribute | Description | Example | +| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | +| SITE | Site domain name. | `example.com` | +| LANGUAGE_CODE | Language of the guide ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code). | `en` | +| CHANNEL_ID | ID of the channel. Full list of supported channels with corresponding ID could be found on [iptv-org.github.io](https://iptv-org.github.io/). | `HBO.us@East` | +| SITE_ID | Unique ID of the channel used in the source. | `hbo` | +| CHANNEL_NAME | Name of the channel used in the source. | `HBO East` | After that just [commit](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits) all changes and send a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). -### How to map the channels? +### How to report broken guide? -In order for the guides to be linked with playlists from [iptv-org/iptv](https://github.com/iptv-org/iptv) and also with our other projects, each channel must have the same ID in the description as in our [iptv-org/database](https://github.com/iptv-org/database). - -To check this, select one of the sites in the [SITES.md](SITES.md), open its `*.channels.xml` file and check that all channels have a valid `xmltv_id`. If it is missing somewhere, just copy the matching ID from the [iptv-org.github.io](https://iptv-org.github.io/). If the channel is not in our database yet, you can add it to it through this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=channels%3Aadd&projects=&template=__channels_add.yml&title=Add%3A+). - -If the `*.channels.xml` file contains many channels without `xmltv_id`, you can speed up the process by running the command in the [Console](https://en.wikipedia.org/wiki/Windows_Console) (or [Terminal]() if you have macOS): - -```sh -npm run channels:edit path/to/channels.xml -``` - -This way, you can map channels by simply selecting the proper ID from the list: - -```sh -? Select xmltv_id for "BBC One" (bbc1): (Use arrow keys) -❯ BBC One (BBC1, BBC Television, BBC Television Service) | BBCOne.uk - BBC One HD | BBCOneHD.uk - Type... - Skip -``` - -Once complete, [commit](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits) all changes and send a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). +If you start to get errors when downloading the guide or if nothing loads at all, please let us know via this [form](https://github.com/iptv-org/epg/issues/new?assignees=&labels=broken+guide&projects=&template=3_broken-guide.yml). ### How to add a new source to the repository? -To do this, you will need to create a new folder in the [/sites](/sites) directory with at least 4 files: +If you are not familiar with javascript programming, you can ask for help from other community members through this [form](https://github.com/iptv-org/epg/issues/new?assignees=&labels=source+request&projects=&template=1_source-request.yml). Otherwise, below are the instructions for you. + +To start with, you need to create a new folder in the [/sites](/sites) folder and put at least 4 files in it:
example.com.config.js @@ -70,9 +56,9 @@ module.exports = { url({ channel, date }) { return `https://example.com/api/${channel.site_id}/${date.format('YYYY-MM-DD')}` }, - parser({ content }) { + parser(context) { try { - return JSON.parse(content) + return JSON.parse(context.content) } catch { return [] } @@ -80,7 +66,189 @@ module.exports = { } ``` -More detailed instructions for this file can be found here: https://github.com/freearhey/epg-grabber#site-config +### Context Object + +From each function in `config.js` you can access a `context` object containing the following data: + +- `channel`: The object describing the current channel (xmltv_id, site_id, name, lang) +- `date`: The 'dayjs' instance with the requested date +- `content`: The response data as a String +- `buffer`: The response data as an ArrayBuffer +- `headers`: The response headers +- `request`: The request config +- `cached`: A boolean to check whether this request was cached or not + +### Program Properties + +List of properties that can be assigned to each program during parsing. + +| Property | Aliases | Type | Required | +| --------------- | -------------------------------- | ------------------------------------------ | -------- | +| start | | `String \| Number \| Date()` | true | +| stop | | `String \| Number \| Date()` | true | +| title | titles | `String \| Object \| String[] \| Object[]` | true | +| subTitle | subTitles, sub_title, sub_titles | `String \| Object \| String[] \| Object[]` | false | +| description | desc, descriptions | `String \| Object \| String[] \| Object[]` | false | +| date | | `String \| Number \| Date()` | false | +| category | categories | `String \| Object \| String[] \| Object[]` | false | +| keyword | keywords | `String \| Object \| String[] \| Object[]` | false | +| language | languages | `String \| Object \| String[] \| Object[]` | false | +| origLanguage | origLanguages | `String \| Object \| String[] \| Object[]` | false | +| length | | `String \| Object \| String[] \| Object[]` | false | +| url | urls | `String \| Object \| String[] \| Object[]` | false | +| country | countries | `String \| Object \| String[] \| Object[]` | false | +| video | | `Object` | false | +| audio | | `Object` | false | +| season | | `String \| Number` | false | +| episode | | `String \| Number` | false | +| episodeNumber | episodeNum, episodeNumbers | `Object` | false | +| previouslyShown | | `String \| Object \| String[] \| Object[]` | false | +| premiere | | `String \| Object \| String[] \| Object[]` | false | +| lastChance | | `String \| Object \| String[] \| Object[]` | false | +| new | | `Boolean` | false | +| subtitles | | `Object \| Object[]` | false | +| rating | ratings | `String \| Object \| String[] \| Object[]` | false | +| starRating | starRatings | `String \| Object \| String[] \| Object[]` | false | +| review | reviews | `String \| Object \| String[] \| Object[]` | false | +| director | directors | `String \| Object \| String[] \| Object[]` | false | +| actor | actors | `String \| Object \| String[] \| Object[]` | false | +| writer | writers | `String \| Object \| String[] \| Object[]` | false | +| adapter | adapters | `String \| Object \| String[] \| Object[]` | false | +| producer | producers | `String \| Object \| String[] \| Object[]` | false | +| presenter | presenters | `String \| Object \| String[] \| Object[]` | false | +| composer | composers | `String \| Object \| String[] \| Object[]` | false | +| editor | editors | `String \| Object \| String[] \| Object[]` | false | +| commentator | commentators | `String \| Object \| String[] \| Object[]` | false | +| guest | guests | `String \| Object \| String[] \| Object[]` | false | +| image | images | `String \| Object \| String[] \| Object[]` | false | +| icon | icons | `String \| Object \| String[] \| Object[]` | false | + +Example: + +```js +{ + start: '2021-03-19T06:00:00.000Z', + stop: '2021-03-19T06:30:00.000Z', + title: 'Program 1', + subTitle: 'Sub-title & 1', + description: 'Description for Program 1', + date: '2022-05-06', + categories: ['Comedy', 'Drama'], + keywords: [ + { lang: 'en', value: 'physical-comedy' }, + { lang: 'en', value: 'romantic' } + ], + language: 'English', + origLanguage: { lang: 'en', value: 'French' }, + length: { units: 'minutes', value: '60' }, + url: 'http://example.com/title.html', + country: 'US', + video: { + present: 'yes', + colour: 'no', + aspect: '16:9', + quality: 'HDTV' + }, + audio: { + present: 'yes', + stereo: 'Dolby Digital' + }, + season: 9, + episode: 239, + previouslyShown: [{ start: '20080711000000', channel: 'channel-two.tv' }], + premiere: 'First time on British TV', + lastChance: [{ lang: 'en', value: 'Last time on this channel' }], + new: true, + subtitles: [ + { type: 'teletext', language: 'English' }, + { type: 'onscreen', language: [{ lang: 'en', value: 'Spanish' }] } + ], + rating: { + system: 'MPAA', + value: 'P&G', + icon: 'http://example.com/pg_symbol.png' + }, + starRatings: [ + { + system: 'TV Guide', + value: '4/5', + icon: [{ src: 'stars.png', width: 100, height: 100 }] + }, + { + system: 'IMDB', + value: '8/10' + } + ], + reviews: [ + { + type: 'text', + source: 'Rotten Tomatoes', + reviewer: 'Joe Bloggs', + lang: 'en', + value: 'This is a fantastic show!' + }, + { + type: 'text', + source: 'IDMB', + reviewer: 'Jane Doe', + lang: 'en', + value: 'I love this show!' + }, + { + type: 'url', + source: 'Rotten Tomatoes', + reviewer: 'Joe Bloggs', + lang: 'en', + value: 'https://example.com/programme_one_review' + } + ], + directors: [ + { + value: 'Director 1', + url: { value: 'http://example.com/director1.html', system: 'TestSystem' }, + image: [ + 'https://example.com/image1.jpg', + { + value: 'https://example.com/image2.jpg', + type: 'person', + size: '2', + system: 'TestSystem', + orient: 'P' + } + ] + }, + 'Director 2' + ], + actors: ['Actor 1', 'Actor 2'], + writer: 'Writer 1', + producers: 'Roger Dobkowitz', + presenters: 'Drew Carey', + images: [ + { + type: 'poster', + size: '1', + orient: 'P', + system: 'tvdb', + value: 'https://tvdb.com/programme_one_poster_1.jpg' + }, + { + type: 'poster', + size: '2', + orient: 'P', + system: 'tmdb', + value: 'https://tmdb.com/programme_one_poster_2.jpg' + }, + { + type: 'backdrop', + size: '3', + orient: 'L', + system: 'tvdb', + value: 'https://tvdb.com/programme_one_backdrop_3.jpg' + } + ], + icon: 'https://example.com/images/Program1.png?x=шеллы&sid=777' +} +```
@@ -135,12 +303,6 @@ it('can handle empty guide', () => { }) ``` -To run all of these tests use the following command: - -```sh -npm test --- example.com -``` - Detailed documentation for the tests can be found here: https://jestjs.io/docs/using-matchers @@ -192,7 +354,51 @@ The fastest way to create all these files is to use the command: npm run sites:init --- example.com ``` -Once you are done working on the config make sure the tests pass, the guide downloads correctly, [commit](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits) all changes and send us a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). +After you finish working on the files you can make sure that everything works by running the config test: + +``` +npm test --- example.com +``` + +Then check that all channels have the correct `xmltv-id`: + +``` +npm run channels:validate sites/example.com/example.com.channels.xml +``` + +And then try downloading the guide itself: + +``` +npm run grab --- example.com +``` + +If everything goes well just [commit](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits) all changes and send us a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). + +### How to map the channels? + +In order for the guides to be linked with playlists from [iptv-org/iptv](https://github.com/iptv-org/iptv) and also with our other projects, each channel must have the same ID in the description as in our [iptv-org/database](https://github.com/iptv-org/database). + +To check this, select one of the sites in the [SITES.md](SITES.md), open its `*.channels.xml` file and check that all channels have a valid `xmltv_id`. A list of all channels with corresponding IDs can be found at [iptv-org.github.io](https://iptv-org.github.io/). + +If the channel is not in our database yet, you can add it to it through this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=channels%3Aadd&projects=&template=1_channels_add.yml&title=Add%3A+). + +If the `*.channels.xml` file contains many channels without `xmltv_id`, you can speed up the process by running the command in the [Console](https://en.wikipedia.org/wiki/Windows_Console) (or [Terminal]() if you have macOS): + +```sh +npm run channels:edit path/to/channels.xml +``` + +This way, you can map channels by simply selecting the proper ID from the list: + +```sh +? Select xmltv_id for "BBC One" (bbc1): (Use arrow keys) +❯ BBC One (BBC1, BBC Television, BBC Television Service) | BBCOne.uk + BBC One HD | BBCOneHD.uk + Type... + Skip +``` + +Once complete, [commit](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits) all changes and send a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). ## Project Structure From 3e36c64ef9ac6c6b934db50b794d345e4d63737e Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:26:05 +0300 Subject: [PATCH 7/8] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 7faa59b8..7b997b56 100644 --- a/README.md +++ b/README.md @@ -146,10 +146,6 @@ And then update all the dependencies: npm install ``` -## Playlists - -Playlists with already linked guides can be found in the [iptv-org/iptv](https://github.com/iptv-org/iptv) repository. - ## Database All channel data is taken from the [iptv-org/database](https://github.com/iptv-org/database) repository. If you find any errors please open a new [issue](https://github.com/iptv-org/database/issues) there. From a4d1c48bbdf52b5c975fc1e409713491b6edcb43 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:26:22 +0300 Subject: [PATCH 8/8] Update sites --- sites/freeview.co.uk/freeview.co.uk.config.js | 2 +- sites/programme-tv.net/programme-tv.net.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/freeview.co.uk/freeview.co.uk.config.js b/sites/freeview.co.uk/freeview.co.uk.config.js index 3a713e90..fab60372 100644 --- a/sites/freeview.co.uk/freeview.co.uk.config.js +++ b/sites/freeview.co.uk/freeview.co.uk.config.js @@ -1,7 +1,7 @@ const axios = require('axios') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') -const parseDuration = require('parse-duration') +const parseDuration = require('parse-duration').default dayjs.extend(utc) diff --git a/sites/programme-tv.net/programme-tv.net.config.js b/sites/programme-tv.net/programme-tv.net.config.js index 4d69ed6e..cea808c6 100644 --- a/sites/programme-tv.net/programme-tv.net.config.js +++ b/sites/programme-tv.net/programme-tv.net.config.js @@ -1,4 +1,4 @@ -const durationParser = require('parse-duration') +const durationParser = require('parse-duration').default const cheerio = require('cheerio') const srcset = require('srcset') const dayjs = require('dayjs')