diff --git a/.github/workflows/build_cli.yml b/.github/workflows/build_cli.yml new file mode 100644 index 000000000..29406e2b2 --- /dev/null +++ b/.github/workflows/build_cli.yml @@ -0,0 +1,50 @@ +name: Ontime CLI build + +on: + push: + tags: [ "*" ] + workflow_dispatch: + +jobs: + build_cli: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: 18.18.2 + + - name: Setup pnpm + uses: pnpm/action-setup@v3 + with: + version: 8 + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build project packages + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + run: pnpm build + + - name: Copy server + run: mkdir -p apps/cli/server && cp apps/server/dist/index.cjs apps/cli/server/index.cjs + + - name: Copy client + run: cp -R apps/client/build apps/cli/client + + - name: Copy external + run: cp -R apps/server/src/external apps/cli/external + + - name: Publish to NPM + run: pnpm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_CONFIG_PROVENANCE: true + working-directory: ./apps/cli \ No newline at end of file diff --git a/apps/cli/.eslintrc b/apps/cli/.eslintrc new file mode 100644 index 000000000..192099671 --- /dev/null +++ b/apps/cli/.eslintrc @@ -0,0 +1,16 @@ +{ + "parserOptions": { + "sourceType": "module" + }, + "env": { + "browser": true, + "node": true + }, + "extends": [ + "eslint:recommended" + ], + "plugins": [], + "rules": { + "@typescript-eslint/no-var-requires": "off" + } +} diff --git a/apps/cli/.gitignore b/apps/cli/.gitignore new file mode 100644 index 000000000..5e2314c8b --- /dev/null +++ b/apps/cli/.gitignore @@ -0,0 +1,3 @@ +server +external +client \ No newline at end of file diff --git a/apps/cli/.prettierrc b/apps/cli/.prettierrc new file mode 100644 index 000000000..66c9b5f83 --- /dev/null +++ b/apps/cli/.prettierrc @@ -0,0 +1,9 @@ +{ + "endOfLine": "lf", + "trailingComma": "all", + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "jsxSingleQuote": true, + "printWidth": 120 +} diff --git a/apps/cli/README.md b/apps/cli/README.md new file mode 100644 index 000000000..d8a83c53e --- /dev/null +++ b/apps/cli/README.md @@ -0,0 +1,44 @@ +# Ontime CLI + +![Ontime](https://github.com/cpvalente/ontime/blob/9e63261b350e5b7b61c7ffb17c9e75a6c5a8c711/.github/aux-images/editor.png) +> Ontime is an application for managing rundown and event timers. + +Congratulations! You got this far into Ontime's rabbit hole and want to manage your installation. + +The CLI tool is a fast and lightweight way of installing Ontime and is perfect for self-hosting and headless installs. + +## Getting started + +### Prerequisites +You will need to have installed the correct version of node.js +Please check [the app engines declaration](https://github.com/cpvalente/ontime/blob/master/package.json) for the correct version. + +### Running Ontime +To get Ontime running, all you need to do is install it in your system using your package manager of choice: + +Install globally in your system +```bash +npm install -g @getontime/cli +``` + +... and run using the installed script +```bash +ontime +``` + +Or install and run ontime (the installation here is temporary for the duration of the session) +```bash +npx install @getontime/cli +``` + +## Links +- [Ontime's repository](https://github.com/cpvalente/ontime) +- [Ontime's documentation](https://docs.getontime.no/) +- [Ontime's website](https://getontime.no/) + +## Sponsoring +You can help the development of this project or say thank you with a one time donation. \ +See the [terms of fonations](https://github.com/cpvalente/ontime/blob/master/SPONSOR.md) + +[![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/cpvalente) +[![](https://img.shields.io/static/v1?label=Buy%20me%20a%20coffee&message=%E2%9D%A4&logo=buymeacoffee&color=%23fe8e86)](https://www.buymeacoffee.com/cpvalente) diff --git a/apps/cli/main.js b/apps/cli/main.js new file mode 100644 index 000000000..73f5260ba --- /dev/null +++ b/apps/cli/main.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +// NOTE: for now the following needs to be in place: ./server/index.cjs, ./client, ./external + +const ontimeServer = require('./server/index.cjs'); +const { initAssets, startServer, startIntegrations, shutdown } = ontimeServer; + +async function startOntime() { + await initAssets(); + + await startServer(); + + await startIntegrations(); +} + +startOntime(); + +process.on(['SIGHUP', 'SIGINT', 'SIGTERM'], () => { + shutdown(); +}); diff --git a/apps/cli/package.json b/apps/cli/package.json new file mode 100644 index 000000000..8f8cdcc3c --- /dev/null +++ b/apps/cli/package.json @@ -0,0 +1,27 @@ +{ + "name": "@getontime/cli", + "version": "3.1.0", + "author": "Carlos Valente", + "description": "Time keeping for live events", + "repository": "https://github.com/cpvalente/ontime", + "keywords": [ + "lighdev", + "ontime", + "timer" + ], + "license": "AGPL-3.0-only", + "main": "main.js", + "bin": { + "ontime": "main.js" + }, + "files": [ + "client", + "external", + "server" + ], + "devDependencies": { + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "prettier": "^3.0.3" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f92812710..4d7c8e14b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,10 +16,10 @@ importers: version: 18.11.18 '@typescript-eslint/eslint-plugin': specifier: ^v7.12.0 - version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(@typescript-eslint/parser@7.13.0)(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.12.0 - version: 7.12.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(eslint@8.56.0)(typescript@5.4.3) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -48,6 +48,18 @@ importers: specifier: ^5.4.3 version: 5.4.3 + apps/cli: + devDependencies: + eslint: + specifier: ^8.53.0 + version: 8.56.0 + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.1.0(eslint@8.56.0) + prettier: + specifier: ^3.0.3 + version: 3.3.1 + apps/client: dependencies: '@chakra-ui/react': @@ -161,10 +173,10 @@ importers: version: 5.14.5 '@typescript-eslint/eslint-plugin': specifier: ^v7.12.0 - version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(@typescript-eslint/parser@7.13.0)(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.12.0 - version: 7.12.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(eslint@8.56.0)(typescript@5.4.3) '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.2.1(vite@5.2.11) @@ -176,7 +188,7 @@ importers: version: 9.1.0(eslint@8.56.0) eslint-plugin-jest: specifier: ^28.6.0 - version: 28.6.0(@typescript-eslint/eslint-plugin@7.12.0)(eslint@8.56.0)(typescript@5.4.3) + version: 28.6.0(@typescript-eslint/eslint-plugin@7.13.0)(eslint@8.56.0)(typescript@5.4.3) eslint-plugin-prettier: specifier: ^5.1.3 version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.3.1) @@ -324,10 +336,10 @@ importers: version: 8.5.10 '@typescript-eslint/eslint-plugin': specifier: ^v7.12.0 - version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(@typescript-eslint/parser@7.13.0)(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.12.0 - version: 7.12.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(eslint@8.56.0)(typescript@5.4.3) esbuild: specifier: ^0.19.10 version: 0.19.10 @@ -366,10 +378,10 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^v7.12.0 - version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(@typescript-eslint/parser@7.13.0)(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.12.0 - version: 7.12.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(eslint@8.56.0)(typescript@5.4.3) eslint: specifier: ^8.56.0 version: 8.56.0 @@ -388,10 +400,10 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^v7.12.0 - version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(@typescript-eslint/parser@7.13.0)(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.12.0 - version: 7.12.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.13.0(eslint@8.56.0)(typescript@5.4.3) eslint: specifier: ^8.56.0 version: 8.56.0 @@ -2515,6 +2527,7 @@ packages: /@humanwhocodes/config-array@0.11.13: resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead dependencies: '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 @@ -2530,6 +2543,7 @@ packages: /@humanwhocodes/object-schema@2.0.1: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + deprecated: Use @eslint/object-schema instead dev: true /@jest/expect-utils@29.3.1: @@ -3597,8 +3611,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==} + /@typescript-eslint/eslint-plugin@7.13.0(@typescript-eslint/parser@7.13.0)(eslint@8.56.0)(typescript@5.4.3): + resolution: {integrity: sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -3609,11 +3623,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.12.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/type-utils': 7.12.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.12.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/parser': 7.13.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.13.0 + '@typescript-eslint/type-utils': 7.13.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.13.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.13.0 eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -3624,8 +3638,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.12.0(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} + /@typescript-eslint/parser@7.13.0(eslint@8.56.0)(typescript@5.4.3): + resolution: {integrity: sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3634,10 +3648,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/scope-manager': 7.13.0 + '@typescript-eslint/types': 7.13.0 + '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.13.0 debug: 4.3.4 eslint: 8.56.0 typescript: 5.4.3 @@ -3661,16 +3675,24 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@7.12.0: - resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@7.12.0(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==} + /@typescript-eslint/scope-manager@7.13.0: + resolution: {integrity: sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.13.0 + '@typescript-eslint/visitor-keys': 7.13.0 + dev: true + + /@typescript-eslint/type-utils@7.13.0(eslint@8.56.0)(typescript@5.4.3): + resolution: {integrity: sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3679,8 +3701,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.12.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.3) + '@typescript-eslint/utils': 7.13.0(eslint@8.56.0)(typescript@5.4.3) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.3.0(typescript@5.4.3) @@ -3699,8 +3721,13 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@7.12.0: - resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/types@7.13.0: + resolution: {integrity: sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==} engines: {node: ^18.18.0 || >=20.0.0} dev: true @@ -3746,8 +3773,30 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.3): - resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.13.0(typescript@5.4.3): + resolution: {integrity: sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -3755,8 +3804,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/types': 7.13.0 + '@typescript-eslint/visitor-keys': 7.13.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3808,16 +3857,35 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.12.0(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==} + /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.4.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.5 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3) + eslint: 8.56.0 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@7.13.0(eslint@8.56.0)(typescript@5.4.3): + resolution: {integrity: sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.13.0 + '@typescript-eslint/types': 7.13.0 + '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.3) eslint: 8.56.0 transitivePeerDependencies: - supports-color @@ -3840,11 +3908,19 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.12.0: - resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@7.13.0: + resolution: {integrity: sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/types': 7.13.0 eslint-visitor-keys: 3.4.3 dev: true @@ -5525,7 +5601,7 @@ packages: eslint: 8.56.0 dev: true - /eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.12.0)(eslint@8.56.0)(typescript@5.4.3): + /eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.0)(eslint@8.56.0)(typescript@5.4.3): resolution: {integrity: sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==} engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} peerDependencies: @@ -5538,8 +5614,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.12.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/eslint-plugin': 7.13.0(@typescript-eslint/parser@7.13.0)(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.4.3) eslint: 8.56.0 transitivePeerDependencies: - supports-color @@ -6279,7 +6355,7 @@ packages: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.5.4 + semver: 7.6.2 serialize-error: 7.0.1 dev: true optional: true @@ -6310,7 +6386,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.2.4 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -6580,11 +6656,6 @@ packages: resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} dev: true - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -7374,6 +7445,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'}