diff --git a/.github/workflows/build_resolver.yml b/.github/workflows/build_resolver.yml new file mode 100644 index 000000000..c3690859e --- /dev/null +++ b/.github/workflows/build_resolver.yml @@ -0,0 +1,42 @@ +name: Ontime Resolver build + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + build_cli: + permissions: + id-token: write + 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: 22 + registry-url: 'https://registry.npmjs.org' + + - name: Setup pnpm + uses: pnpm/action-setup@v3 + with: + version: 10 + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build project packages + run: pnpm turbo @getontime/resolver#build + + - name: Publish to NPM + run: pnpm publish --access public --no-git-checks + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_CONFIG_PROVENANCE: true + working-directory: ./apps/resolver diff --git a/apps/client/src/common/utils/socket.ts b/apps/client/src/common/utils/socket.ts index df8fc5b67..c655443ce 100644 --- a/apps/client/src/common/utils/socket.ts +++ b/apps/client/src/common/utils/socket.ts @@ -1,5 +1,5 @@ import { - ApiAction, + ApiActionTag, Log, MessageTag, RefetchKey, @@ -199,7 +199,7 @@ export const connectSocket = () => { }; }; -export function sendSocket( +export function sendSocket( tag: T, payload: T extends MessageTag ? Pick['payload'] : unknown, ): void { diff --git a/apps/resolver/.gitignore b/apps/resolver/.gitignore new file mode 100644 index 000000000..9e30eb9b7 --- /dev/null +++ b/apps/resolver/.gitignore @@ -0,0 +1 @@ +*.tgz \ No newline at end of file diff --git a/apps/resolver/README.md b/apps/resolver/README.md new file mode 100644 index 000000000..b4758c38a --- /dev/null +++ b/apps/resolver/README.md @@ -0,0 +1,17 @@ +# Ontime Resolver + +Congratulations! You got this far into Ontime's rabbit hole and want to manage your installation. + +The Resolver is an attempt to expose our ontime's api so it is easier to integrate with + +## 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 donations](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/resolver/package.json b/apps/resolver/package.json new file mode 100644 index 000000000..52a256929 --- /dev/null +++ b/apps/resolver/package.json @@ -0,0 +1,29 @@ +{ + "name": "@getontime/resolver", + "version": "4.0.0-beta.3", + "type": "module", + "repository": "https://github.com/cpvalente/ontime", + "types": "./dist/main.d.ts", + "main": "./dist/main.js", + "private": true, + "description": "shared typings for ontime", + "scripts": { + "lint": "eslint . --quiet", + "prebuild": "pnpm rimraf ./dist", + "build": "tsup && pnpm rimraf ./dist/index.js", + "postbuild": "pnpm rimraf ./dist/index.d.ts" + }, + "keywords": ["ontime", "resolver", "parser"], + "author": "", + "license": "AGPL-3.0-only", + "devDependencies": { + "@sprout2000/esbuild-copy-plugin": "^1.1.19", + "@typescript-eslint/parser": "catalog:", + "eslint": "catalog:", + "tsup": "^8.5.0", + "rimraf": "catalog:", + "typescript": "catalog:", + "ontime-types": "workspace:^4.0.0" + }, + "files": ["dist"] +} diff --git a/apps/resolver/src/main.ts b/apps/resolver/src/main.ts new file mode 100644 index 000000000..2dde600a7 --- /dev/null +++ b/apps/resolver/src/main.ts @@ -0,0 +1,20 @@ +// api +export { MessageTag, RefetchKey } from 'ontime-types'; +export type { ApiAction, ApiActionTag, ApiResponse } from 'ontime-types'; +export type { WsPacketToClient, WsPacketToServer } from 'ontime-types'; + +// stores +export type { RuntimeStore, TimerState, MessageState, RundownState, Offset } from 'ontime-types'; +export { TimerPhase, Playback, runtimeStorePlaceholder, OffsetMode } from 'ontime-types'; + +// aux timer +export type { SimpleTimerState } from 'ontime-types'; +export { SimplePlayback, SimpleDirection } from 'ontime-types'; + +// entries +export type { OntimeEvent, OntimeGroup, EntryCustomFields, CustomFields, Rundown } from 'ontime-types'; +export { SupportedEntry, isOntimeEvent, isOntimeGroup, isOntimeDelay, isOntimeMilestone } from 'ontime-types'; + +// functions +export { isWsPacketToClient } from './websocket.js'; +export type { SocketSender } from './websocket.js'; \ No newline at end of file diff --git a/apps/resolver/src/websocket.ts b/apps/resolver/src/websocket.ts new file mode 100644 index 000000000..85cee3884 --- /dev/null +++ b/apps/resolver/src/websocket.ts @@ -0,0 +1,18 @@ +import { ApiAction, ApiActionTag, MessageTag, WsPacketToClient, WsPacketToServer } from 'ontime-types'; + +/** + * A helper type for sending correct websocket messages to ontime + */ +export type SocketSender = ( + tag: T, + payload: T extends MessageTag + ? Pick['payload'] + : Pick['payload'], +) => void; + +/** + * a soft type guard for WS packets + */ +export function isWsPacketToClient(data: unknown): data is WsPacketToClient { + return typeof data === 'object' && data !== null && 'tag' in data && 'payload' in data; +} diff --git a/apps/resolver/tsconfig.json b/apps/resolver/tsconfig.json new file mode 100644 index 000000000..3f6b39eea --- /dev/null +++ b/apps/resolver/tsconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "preserve", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noImplicitThis": true, + "strictNullChecks": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "removeComments": true, + "preserveConstEnums": true, + "allowJs": true, + "declaration": true, + "outDir": "dist", + "sourceMap": true, + "baseUrl": "src", + }, + "include": [ + "src", + ], + "exclude": [ + "node_modules", + ] +} diff --git a/apps/resolver/tsup.config.js b/apps/resolver/tsup.config.js new file mode 100644 index 000000000..26f3a378e --- /dev/null +++ b/apps/resolver/tsup.config.js @@ -0,0 +1,20 @@ +import { defineConfig } from 'tsup'; +import copyPlugin from '@sprout2000/esbuild-copy-plugin'; + +export default defineConfig({ + clean: false, //we can't use clean as i dose so after the copy plugin runs + entry: ['src/main.ts'], + outDir: 'dist', + bundle: true, + + dts: { resolve: true }, + format: 'esm', + target: 'esnext', + platform: 'node', + esbuildPlugins: [ + copyPlugin.copyPlugin({ + src: './node_modules/ontime-types/dist', + dest: './dist', + }), + ], +}); diff --git a/apps/server/package.json b/apps/server/package.json index 71716d9d2..c40a01948 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -41,7 +41,7 @@ "prettier": "catalog:", "server-timing": "^3.3.3", "shx": "^0.3.4", - "ts-essentials": "^10.0.3", + "ts-essentials": "catalog:", "tsx": "^4.19.2", "typescript": "catalog:", "vitest": "catalog:" diff --git a/apps/server/src/api-integration/integration.controller.ts b/apps/server/src/api-integration/integration.controller.ts index f18ee9e35..fcc170703 100644 --- a/apps/server/src/api-integration/integration.controller.ts +++ b/apps/server/src/api-integration/integration.controller.ts @@ -1,5 +1,5 @@ import { - ApiAction, + ApiActionTag, MessageState, OffsetMode, OntimeEvent, @@ -30,7 +30,7 @@ let lastRequest: Date | null = null; export function dispatchFromAdapter(tag: string, payload: unknown, _source?: 'osc' | 'ws' | 'http') { const action = tag.toLowerCase(); - const handler = actionHandlers[action as ApiAction]; + const handler = actionHandlers[action as ApiActionTag]; lastRequest = new Date(); if (handler) { @@ -46,7 +46,7 @@ export function getLastRequest() { type ActionHandler = (payload: unknown) => { payload: unknown }; -const actionHandlers: Record = { +const actionHandlers: Record = { /* General */ version: () => ({ payload: ONTIME_VERSION }), poll: () => ({ diff --git a/package.json b/package.json index aaa674957..097097ea4 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "e2e": "pnpm clear-temp && cross-env DEBUG=pw:webserver npx playwright test -c playwright.config.ts", "e2e:ui": "cross-env DEBUG=pw:webserver npx playwright test --ui -c playwright.config.ts", "e2e:i": "npx playwright codegen", - "cleanup": "rm -rf node_modules && rm -rf **/node_modules && rm -rf **/**/node_modules", + "cleanup": "pnpm rimraf node_modules && rimraf **/node_modules && rimraf **/**/node_modules", "clear-temp": "rm -rf e2e/tests/fixtures/tmp" }, "devDependencies": { @@ -47,7 +47,8 @@ "eslint-plugin-playwright": "^1.5.2", "prettier": "catalog:", "turbo": "^2.3.3", - "typescript": "catalog:" + "typescript": "catalog:", + "rimraf": "catalog:" }, "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" } diff --git a/packages/types/package.json b/packages/types/package.json index d498feb82..2e84f51c3 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,4 +1,5 @@ { + "version": "4.0.0-beta.3", "name": "ontime-types", "type": "module", "main": "./src/index.ts", @@ -7,7 +8,8 @@ "description": "shared typings for ontime", "scripts": { "cleanup": "rm -rf .turbo && rm -rf node_modules", - "lint": "eslint . --quiet" + "lint": "eslint . --quiet", + "build": "tsc" }, "keywords": [], "author": "", @@ -16,6 +18,7 @@ "@typescript-eslint/eslint-plugin": "catalog:", "@typescript-eslint/parser": "catalog:", "eslint": "catalog:", - "typescript": "catalog:" + "typescript": "catalog:", + "ts-essentials": "catalog:" } } diff --git a/packages/types/src/api/websocket/api.type.ts b/packages/types/src/api/websocket/api.type.ts index f6a509d8d..c8c247535 100644 --- a/packages/types/src/api/websocket/api.type.ts +++ b/packages/types/src/api/websocket/api.type.ts @@ -1,15 +1,174 @@ +import type { DeepPartial } from 'ts-essentials'; + +import type { OntimeEvent } from '../../definitions/core/OntimeEntry.js'; +import type { SimpleDirection, SimplePlayback } from '../../definitions/runtime/AuxTimer.type.js'; +import type { MessageState } from '../../definitions/runtime/MessageControl.type.js'; +import type { OffsetMode } from '../../definitions/runtime/Offset.type.js'; +import type { RuntimeStore } from '../../definitions/runtime/RuntimeStore.type.js'; + +export type VersionAction = { + tag: 'version'; + payload: undefined; +}; +export type VersionResponse = { + tag: 'version'; + payload: string; +}; + +export type PollAction = { + tag: 'poll'; + payload: undefined; +}; +export type PollResponse = { + tag: 'poll'; + payload: RuntimeStore; +}; + +export type ChangeAction = { + tag: 'change'; + payload: { [x: string]: Partial }; +}; +export type ChangeResponse = { + tag: 'change'; + payload: 'success' | 'throttled'; +}; + +export type MessageAction = { + tag: 'message'; + payload: DeepPartial; +}; +export type MessageResponse = { + tag: 'message'; + payload: MessageState; +}; + +export type StartAction = { + tag: 'start'; + payload: undefined | { index: number } | { id: string } | { cue: string } | 'next' | 'previous'; +}; +export type StartResponse = { + tag: 'start'; + payload: 'success'; +}; + +export type PauseAction = { + tag: 'pause'; + payload: undefined; +}; +export type PauseResponse = { + tag: 'pause'; + payload: 'success'; +}; + +export type StopAction = { + tag: 'stop'; + payload: undefined; +}; +export type StopResponse = { + tag: 'stop'; + payload: 'success'; +}; + +export type ReloadAction = { + tag: 'reload'; + payload: undefined; +}; +export type ReloadResponse = { + tag: 'reload'; + payload: 'success'; +}; + +export type RollAction = { + tag: 'roll'; + payload: undefined; +}; +export type RollResponse = { + tag: 'roll'; + payload: 'success'; +}; + +export type LoadAction = { + tag: 'load'; + payload: { index: number } | { id: string } | { cue: string } | 'next' | 'previous'; +}; +export type LoadResponse = { + tag: 'load'; + payload: 'success'; +}; + +export type AddtimeAction = { + tag: 'addtime'; + payload: { add: number } | { remove: number } | number; +}; +export type AddtimeResponse = { + tag: 'addtime'; + payload: 'success'; +}; + +export type AuxtimerAction = { + tag: 'auxtimer'; + payload: + | { '1': SimplePlayback } + | { '1': { duration?: number; addtime?: number; direction?: SimpleDirection } } + | { '2': SimplePlayback } + | { '2': { duration?: number; addtime?: number; direction?: SimpleDirection } } + | { '3': SimplePlayback } + | { '3': { duration?: number; addtime?: number; direction?: SimpleDirection } }; +}; + +export type AuxtimerResponse = { + tag: 'auxtimer'; + payload: 'success'; +}; + +export type ClientAction = { + tag: 'client'; + payload: { target: string } & ({ rename: string } | { redirect: string } | { identify: string }); +}; +export type ClientResponse = { + tag: 'client'; + payload: 'success'; +}; + +export type OffsetmodeAction = { + tag: 'offsetmode'; + payload: OffsetMode; +}; +export type OffsetmodeResponse = { + tag: 'offsetmode'; + payload: 'success'; +}; + export type ApiAction = - | 'version' - | 'poll' - | 'change' - | 'message' - | 'start' - | 'pause' - | 'stop' - | 'reload' - | 'roll' - | 'load' - | 'addtime' - | 'auxtimer' - | 'client' - | 'offsetmode'; + | VersionAction + | PollAction + | ChangeAction + | MessageAction + | StartAction + | PauseAction + | StopAction + | ReloadAction + | RollAction + | LoadAction + | AddtimeAction + | AuxtimerAction + | ClientAction + | OffsetmodeAction; + + export type ApiResponse = + | VersionResponse + | PollResponse + | ChangeResponse + | MessageResponse + | StartResponse + | PauseResponse + | StopResponse + | ReloadResponse + | RollResponse + | LoadResponse + | AddtimeResponse + | AuxtimerResponse + | ClientResponse + | OffsetmodeResponse; + +export type ApiActionTag = ApiAction['tag']; diff --git a/packages/types/src/definitions/DataModel.type.ts b/packages/types/src/definitions/DataModel.type.ts index a846bd737..51533d967 100644 --- a/packages/types/src/definitions/DataModel.type.ts +++ b/packages/types/src/definitions/DataModel.type.ts @@ -1,12 +1,11 @@ -import type { - AutomationSettings, - CustomFields, - ProjectData, - ProjectRundowns, - Settings, - URLPreset, - ViewSettings, -} from '../index.js'; + +import type { AutomationSettings } from './core/Automation.type.js'; +import type { CustomFields } from './core/CustomFields.type.js'; +import type { ProjectData } from './core/ProjectData.type.js'; +import type { ProjectRundowns } from './core/Rundown.type.js'; +import type { Settings } from './core/Settings.type.js'; +import type { URLPreset } from './core/UrlPreset.type.js'; +import type { ViewSettings } from './core/Views.type.js'; export type DatabaseModel = { rundowns: ProjectRundowns; diff --git a/packages/types/src/definitions/core/OntimeEntry.ts b/packages/types/src/definitions/core/OntimeEntry.ts index 9e811b222..4eee0c18e 100644 --- a/packages/types/src/definitions/core/OntimeEntry.ts +++ b/packages/types/src/definitions/core/OntimeEntry.ts @@ -1,4 +1,9 @@ -import type { EndAction, EntryCustomFields, MaybeNumber, TimerType, TimeStrategy, Trigger } from '../../index.js'; +import type { MaybeNumber } from '../../utils/utils.type.js'; +import type { EndAction } from '../EndAction.type.js'; +import type { TimerType } from '../TimerType.type.js'; +import type { TimeStrategy } from '../TimeStrategy.type.js'; +import type { Trigger } from './Automation.type.js'; +import type { EntryCustomFields } from './CustomFields.type.js'; export type EntryId = string; diff --git a/packages/types/src/definitions/runtime/TimerState.type.ts b/packages/types/src/definitions/runtime/TimerState.type.ts index 039af9008..7b889eb84 100644 --- a/packages/types/src/definitions/runtime/TimerState.type.ts +++ b/packages/types/src/definitions/runtime/TimerState.type.ts @@ -1,4 +1,4 @@ -import type { MaybeNumber } from '../../index.js'; +import type { MaybeNumber } from '../../utils/utils.type.js'; import type { Playback } from './Playback.type.js'; export enum TimerPhase { diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 6d9400e59..a4d07e3a8 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -90,7 +90,7 @@ export type { LinkOptions } from './api/session-controller/BackendResponse.type. export { MessageTag } from './api/websocket/data.type.js'; export type { WsPacketToServer, WsPacketToClient } from './api/websocket/data.type.js'; export { RefetchKey } from './api/websocket/refetch.type.js'; -export type { ApiAction } from './api/websocket/api.type.js'; +export type { ApiAction, ApiActionTag, ApiResponse } from './api/websocket/api.type.js'; // SERVER RUNTIME export { type Log, LogLevel, type LogMessage, LogOrigin } from './definitions/runtime/Logger.type.js'; export { Playback } from './definitions/runtime/Playback.type.js'; diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json new file mode 100644 index 000000000..cc8366dc7 --- /dev/null +++ b/packages/types/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node10", + "resolveJsonModule": false, + "isolatedModules": false, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noImplicitThis": true, + "strictNullChecks": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "removeComments": true, + "preserveConstEnums": true, + "allowJs": true, + "declaration": true, + "outDir": "dist", + }, + "include": [ + "src/index.ts", + ], + "exclude": [ + "node_modules", "dist" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05ae53617..642522844 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,12 @@ catalogs: prettier: specifier: 3.3.1 version: 3.3.1 + rimraf: + specifier: 6.0.1 + version: 6.0.1 + ts-essentials: + specifier: 10.1.1 + version: 10.1.1 typescript: specifier: 5.5.3 version: 5.5.3 @@ -65,6 +71,9 @@ importers: prettier: specifier: 'catalog:' version: 3.3.1 + rimraf: + specifier: 'catalog:' + version: 6.0.1 turbo: specifier: ^2.3.3 version: 2.5.6 @@ -271,6 +280,30 @@ importers: specifier: ^7.2.0 version: 7.2.0 + apps/resolver: + devDependencies: + '@sprout2000/esbuild-copy-plugin': + specifier: ^1.1.19 + version: 1.1.19 + '@typescript-eslint/parser': + specifier: 'catalog:' + version: 7.16.1(eslint@8.56.0)(typescript@5.5.3) + eslint: + specifier: 'catalog:' + version: 8.56.0 + ontime-types: + specifier: workspace:^4.0.0 + version: link:../../packages/types + rimraf: + specifier: 'catalog:' + version: 6.0.1 + tsup: + specifier: ^8.5.0 + version: 8.5.0(jiti@2.4.2)(postcss@8.5.4)(tsx@4.20.5)(typescript@5.5.3) + typescript: + specifier: 'catalog:' + version: 5.5.3 + apps/server: dependencies: '@googleapis/sheets': @@ -377,7 +410,7 @@ importers: specifier: ^0.3.4 version: 0.3.4 ts-essentials: - specifier: ^10.0.3 + specifier: 'catalog:' version: 10.1.1(typescript@5.5.3) tsx: specifier: ^4.19.2 @@ -400,6 +433,9 @@ importers: eslint: specifier: 'catalog:' version: 8.56.0 + ts-essentials: + specifier: 'catalog:' + version: 10.1.1(typescript@5.5.3) typescript: specifier: 'catalog:' version: 5.5.3 @@ -1575,6 +1611,10 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} + '@sprout2000/esbuild-copy-plugin@1.1.19': + resolution: {integrity: sha512-KXI1nDBWKLubg5EJy+jkxhqvtg9wlshF+ycVMoad6j2pr/APQiDMwAv6JUzkgU6INxg40E4/7xfgefi/Gn+blA==} + engines: {node: '>=16.7'} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -2030,6 +2070,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2233,6 +2276,12 @@ packages: builder-util@26.0.17: resolution: {integrity: sha512-fym+vg0kegrHBSCmkYYql2EbsLvnlUhIUKRQJ7EHjyftwMz8mibpvTRll3pzK1rtWm/VRdjl7AB397jdtg/Jmw==} + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -2377,6 +2426,10 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -2396,9 +2449,16 @@ packages: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + config-file-ts@0.2.6: resolution: {integrity: sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + content-disposition@1.0.0: resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} engines: {node: '>= 0.6'} @@ -2985,6 +3045,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + flat-cache@3.1.1: resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} @@ -3126,6 +3189,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -3506,6 +3574,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -3518,6 +3590,10 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3597,9 +3673,17 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -3619,6 +3703,9 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash.union@4.6.0: resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} @@ -3650,6 +3737,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.2.1: + resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -3808,6 +3899,9 @@ packages: engines: {node: '>=10'} hasBin: true + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3815,6 +3909,9 @@ packages: resolution: {integrity: sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==} engines: {node: '>= 10.16.0'} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3999,6 +4096,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-to-regexp@8.2.0: resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} engines: {node: '>=16'} @@ -4021,9 +4122,6 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -4035,6 +4133,13 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + playwright-core@1.55.0: resolution: {integrity: sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==} engines: {node: '>=18'} @@ -4053,6 +4158,24 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + postcss@8.5.4: resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} engines: {node: ^10 || ^12 || >=14} @@ -4268,6 +4391,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -4300,6 +4427,11 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + roarr@2.15.4: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} @@ -4498,6 +4630,11 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions + sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} @@ -4580,6 +4717,11 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + sumchecker@3.0.1: resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} @@ -4626,6 +4768,13 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + tiny-async-pool@1.3.0: resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} @@ -4677,10 +4826,17 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} @@ -4704,6 +4860,9 @@ packages: typescript: optional: true + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} @@ -4717,6 +4876,25 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tsup@8.5.0: + resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tsx@4.20.5: resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} engines: {node: '>=18.0.0'} @@ -4805,6 +4983,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -4994,6 +5175,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -5020,6 +5204,9 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -5177,7 +5364,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 - picocolors: 1.0.1 + picocolors: 1.1.1 '@babel/code-frame@7.27.1': dependencies: @@ -5252,8 +5439,8 @@ snapshots: '@babel/generator@7.23.6': dependencies: '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 jsesc: 2.5.2 '@babel/generator@7.27.5': @@ -5426,7 +5613,7 @@ snapshots: '@babel/helper-validator-identifier': 7.27.1 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.1 '@babel/parser@7.23.6': dependencies: @@ -6302,6 +6489,8 @@ snapshots: '@sindresorhus/is@4.6.0': {} + '@sprout2000/esbuild-copy-plugin@1.1.19': {} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.6)': dependencies: '@babel/core': 7.23.6 @@ -6780,8 +6969,7 @@ snapshots: acorn@8.14.0: {} - acorn@8.15.0: - optional: true + acorn@8.15.0: {} adler-32@1.3.1: {} @@ -6831,6 +7019,8 @@ snapshots: ansi-styles@6.2.1: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -7194,6 +7384,11 @@ snapshots: transitivePeerDependencies: - supports-color + bundle-require@5.1.0(esbuild@0.25.5): + dependencies: + esbuild: 0.25.5 + load-tsconfig: 0.2.5 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -7361,6 +7556,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + commander@4.1.1: {} + commander@5.1.0: {} compare-version@0.1.2: {} @@ -7381,11 +7578,15 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 + confbox@0.1.8: {} + config-file-ts@0.2.6: dependencies: glob: 10.4.5 typescript: 5.9.2 + consola@3.4.2: {} + content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 @@ -8191,6 +8392,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.17 + mlly: 1.8.0 + rollup: 4.41.1 + flat-cache@3.1.1: dependencies: flatted: 3.2.9 @@ -8362,6 +8569,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.0.3: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -8780,6 +8996,10 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + jake@10.9.2: dependencies: async: 3.2.6 @@ -8797,6 +9017,8 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + joycon@3.1.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -8899,8 +9121,12 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} + load-tsconfig@0.2.5: {} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -8915,6 +9141,8 @@ snapshots: lodash.merge@4.6.2: {} + lodash.sortby@4.7.0: {} + lodash.union@4.6.0: {} lodash@4.17.21: {} @@ -8942,6 +9170,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.2.1: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -9093,6 +9323,13 @@ snapshots: mkdirp@1.0.4: {} + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + ms@2.1.3: {} multer@2.0.1: @@ -9105,6 +9342,12 @@ snapshots: type-is: 1.6.18 xtend: 4.0.2 + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nanoid@3.3.11: {} nanoid@5.1.5: {} @@ -9288,6 +9531,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.2.1 + minipass: 7.1.2 + path-to-regexp@8.2.0: {} path-type@4.0.0: {} @@ -9300,14 +9548,20 @@ snapshots: pend@1.2.0: {} - picocolors@1.0.1: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} + pirates@4.0.7: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + playwright-core@1.55.0: {} playwright@1.55.0: @@ -9324,6 +9578,14 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.4)(tsx@4.20.5): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 2.4.2 + postcss: 8.5.4 + tsx: 4.20.5 + postcss@8.5.4: dependencies: nanoid: 3.3.11 @@ -9534,6 +9796,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} resolve@1.22.10: @@ -9565,6 +9829,11 @@ snapshots: dependencies: glob: 7.2.3 + rimraf@6.0.1: + dependencies: + glob: 11.0.3 + package-json-from-dist: 1.0.1 + roarr@2.15.4: dependencies: boolean: 3.2.0 @@ -9832,6 +10101,10 @@ snapshots: source-map@0.6.1: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + sprintf-js@1.1.3: optional: true @@ -9934,6 +10207,16 @@ snapshots: strip-json-comments@3.1.1: {} + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + sumchecker@3.0.1: dependencies: debug: 4.4.1 @@ -9988,6 +10271,14 @@ snapshots: text-table@0.2.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + tiny-async-pool@1.3.0: dependencies: semver: 5.7.2 @@ -10033,11 +10324,17 @@ snapshots: tr46@0.0.3: {} + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + tr46@3.0.0: dependencies: punycode: 2.3.1 optional: true + tree-kill@1.2.2: {} + truncate-utf8-bytes@1.0.2: dependencies: utf8-byte-length: 1.0.4 @@ -10054,12 +10351,42 @@ snapshots: optionalDependencies: typescript: 5.5.3 + ts-interface-checker@0.1.13: {} + tsconfck@3.1.6(typescript@5.5.3): optionalDependencies: typescript: 5.5.3 tslib@2.6.2: {} + tsup@8.5.0(jiti@2.4.2)(postcss@8.5.4)(tsx@4.20.5)(typescript@5.5.3): + dependencies: + bundle-require: 5.1.0(esbuild@0.25.5) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.1 + esbuild: 0.25.5 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.4)(tsx@4.20.5) + resolve-from: 5.0.0 + rollup: 4.41.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.4 + typescript: 5.5.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tsx@4.20.5: dependencies: esbuild: 0.25.5 @@ -10153,6 +10480,8 @@ snapshots: typescript@5.9.2: {} + ufo@1.6.1: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -10190,7 +10519,7 @@ snapshots: dependencies: browserslist: 4.22.2 escalade: 3.1.1 - picocolors: 1.0.1 + picocolors: 1.1.1 update-browserslist-db@1.1.3(browserslist@4.25.0): dependencies: @@ -10363,6 +10692,8 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} + webidl-conversions@7.0.0: optional: true @@ -10389,6 +10720,12 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 821bc7190..00574dd4e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,6 +11,8 @@ catalog: eslint-config-prettier: 9.1.0 eslint-plugin-prettier: 5.1.3 vitest: 3.2.1 + rimraf: 6.0.1 + ts-essentials: 10.1.1 onlyBuiltDependencies: - electron - esbuild diff --git a/turbo.json b/turbo.json index e62cf01e6..ff9e97e6e 100644 --- a/turbo.json +++ b/turbo.json @@ -26,6 +26,9 @@ "cache": false }, "build": { + "dependsOn": [ + "^build" + ], "env": ["SENTRY_AUTH_TOKEN"] }, "build:local": {},