diff --git a/packages/granite-release-profiler/README.md b/packages/granite-release-profiler/README.md new file mode 100644 index 00000000..f7a2d1b7 --- /dev/null +++ b/packages/granite-release-profiler/README.md @@ -0,0 +1,58 @@ +# granite-release-profiler + +CLI server for inspecting React Native release bundles with React Native DevTools and profiling tools. + +The package starts a local server that exposes React Native DevTools inspector endpoints without serving a Metro development bundle. It is intended for apps that already load a built or remote release bundle, but still need DevTools, profiling, and tracing support during investigation. + +## Features + +- Starts a Fastify server with `@react-native/dev-middleware`. +- Exposes React Native DevTools endpoints such as `/json/list`, `/open-debugger`, and `/inspector/*`. +- Integrates Rozenite middleware, including the TanStack Query plugin. +- Writes collected tracing events to `tracing-events.json` when a `Tracing.tracingComplete` event is received. +- Responds to `/status` with `packager-status:profiler-only` so native Metro checks do not treat it as a running Metro server. + +## Usage + +Run the server with `npx`: + +```bash +npx granite-release-profiler +``` + +Or install it globally: + +```bash +npm install -g granite-release-profiler +granite-release-profiler +``` + +In this repository, you can run the package from the workspace: + +```bash +yarn workspace granite-release-profiler start +``` + +By default, the server listens on `localhost:8081`. + +## CLI Options + +```bash +granite-release-profiler --host localhost --port 8081 +``` + +- `--host`: Hostname to bind. Defaults to `localhost`. +- `--port`: Port to bind. Defaults to `8081`. + +## Keyboard Shortcuts + +When the server is running in an interactive terminal: + +- `d`: Print the connected device list. +- `j`: Open the debugger for the first connected device. + +## Current Limitations + +- The server does not provide a Metro development bundle. +- Source inspection depends on sourcemaps being available from the loaded bundle. +- Network inspection may be limited by how the release bundle transforms or obfuscates request code. diff --git a/packages/granite-release-profiler/package.json b/packages/granite-release-profiler/package.json new file mode 100644 index 00000000..4fdeea28 --- /dev/null +++ b/packages/granite-release-profiler/package.json @@ -0,0 +1,47 @@ +{ + "name": "granite-release-profiler", + "version": "1.0.30", + "type": "module", + "description": "CLI server for profiling React Native release bundles", + "bin": "./dist/cli.js", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js", + "./cli": "./dist/cli.js", + "./package.json": "./package.json" + }, + "files": [ + "dist", + "package.json" + ], + "scripts": { + "prepack": "yarn build", + "start": "tsx src/cli.ts", + "build": "tsdown", + "typecheck": "tsc --noEmit", + "test": "vitest --run" + }, + "devDependencies": { + "@oxc-node/core": "^0.1.0", + "@types/node": "catalog:tools", + "@types/ws": "^8", + "tsdown": "catalog:tools", + "tsx": "^4.21.0", + "typescript": "catalog:tools", + "vitest": "^4.0.12" + }, + "dependencies": { + "@fastify/middie": "^9.3.2", + "@react-native/dev-middleware": "catalog:react-native", + "@rozenite/middleware": "1.10.0", + "@rozenite/tanstack-query-plugin": "1.10.0", + "@tanstack/react-query": "^4.42.0", + "ajv": "^8.20.0", + "es-toolkit": "^1.46.1", + "fastify": "^5.8.5", + "react": "catalog:react-native", + "react-native": "catalog:react-native", + "url": "^0.11.4", + "ws": "^8.20.0" + } +} diff --git a/packages/granite-release-profiler/src/cli-args.spec.ts b/packages/granite-release-profiler/src/cli-args.spec.ts new file mode 100644 index 00000000..97db0268 --- /dev/null +++ b/packages/granite-release-profiler/src/cli-args.spec.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from 'vitest'; +import { parseReleaseProfilerCliArgs } from './cli-args'; + +describe('parseReleaseProfilerCliArgs', () => { + it('starts with default host and port without bundle arguments', () => { + expect(parseReleaseProfilerCliArgs([])).toEqual({ + host: 'localhost', + port: 8081, + }); + }); + + it('allows host and port overrides', () => { + expect(parseReleaseProfilerCliArgs(['--host', '0.0.0.0', '--port', '9090'])).toEqual({ + host: '0.0.0.0', + port: 9090, + }); + }); + + it('rejects positional bundle or sourcemap arguments', () => { + expect(() => parseReleaseProfilerCliArgs(['dist/bundle.ios.hbc'])).toThrow(/Unknown argument/); + }); +}); diff --git a/packages/granite-release-profiler/src/cli-args.ts b/packages/granite-release-profiler/src/cli-args.ts new file mode 100644 index 00000000..07bd0097 --- /dev/null +++ b/packages/granite-release-profiler/src/cli-args.ts @@ -0,0 +1,59 @@ +export interface ReleaseProfilerCliOptions { + host: string; + port: number; +} + +const USAGE = [ + 'Usage: granite-release-profiler [--host HOST] [--port PORT]', + '', + 'Example:', + ' granite-release-profiler', +].join('\n'); + +export function parseReleaseProfilerCliArgs(argv: string[]): ReleaseProfilerCliOptions { + let host = 'localhost'; + let port = 8081; + + for (let index = 0; index < argv.length; index += 1) { + const arg = argv[index]; + if (arg == null) { + continue; + } + + if (arg === '--help' || arg === '-h') { + throw new Error(USAGE); + } + + if (arg === '--host') { + const value = argv[index + 1]; + if (value == null) { + throw new Error(`Missing value for --host\n\n${USAGE}`); + } + host = value; + index += 1; + continue; + } + + if (arg === '--port') { + const value = argv[index + 1]; + const parsedPort = Number(value); + if (value == null || !Number.isInteger(parsedPort) || parsedPort <= 0) { + throw new Error(`Invalid value for --port\n\n${USAGE}`); + } + port = parsedPort; + index += 1; + continue; + } + + if (arg.startsWith('-')) { + throw new Error(`Unknown option: ${arg}\n\n${USAGE}`); + } + + throw new Error(`Unknown argument: ${arg}\n\n${USAGE}`); + } + + return { + host, + port, + }; +} diff --git a/packages/granite-release-profiler/src/cli.ts b/packages/granite-release-profiler/src/cli.ts new file mode 100644 index 00000000..6f57559c --- /dev/null +++ b/packages/granite-release-profiler/src/cli.ts @@ -0,0 +1,14 @@ +#!/usr/bin/env node + +import { parseReleaseProfilerCliArgs } from './cli-args'; +import { startReleaseProfilerServer } from './index'; + +export async function run(argv = process.argv.slice(2)) { + const options = parseReleaseProfilerCliArgs(argv); + await startReleaseProfilerServer(options); +} + +run().catch(error => { + console.error(error instanceof Error ? error.message : error); + process.exit(1); +}); diff --git a/packages/granite-release-profiler/src/index.ts b/packages/granite-release-profiler/src/index.ts new file mode 100644 index 00000000..7c625a2b --- /dev/null +++ b/packages/granite-release-profiler/src/index.ts @@ -0,0 +1,137 @@ +import fs from 'node:fs'; +import { IncomingMessage, ServerResponse } from 'node:http'; +import { createRequire } from 'node:module'; +import path from 'node:path'; +import { Duplex } from 'node:stream'; +import url, { fileURLToPath } from 'node:url'; +import middie from '@fastify/middie'; +import { initializeRozenite } from '@rozenite/middleware'; +import Fastify, { type FastifyReply, type FastifyRequest } from 'fastify'; +import * as ws from 'ws'; +import { setupKeyHandler } from './key-handler'; +import { parseUrl } from './url'; + +type MiddlewareNext = () => void; +type MiddlewareHandler = (req: IncomingMessage, res: ServerResponse, next: MiddlewareNext) => void; +type ReactNativeDevMiddleware = typeof import('@react-native/dev-middleware'); +type MiddlewareCapableFastify = ReturnType & { + use(handler: MiddlewareHandler): MiddlewareCapableFastify; +}; + +const require = createRequire(import.meta.url); + +export interface ReleaseProfilerServerOptions { + host?: string; + port?: number; + projectRoot?: string; +} + +export async function startReleaseProfilerServer(options: ReleaseProfilerServerOptions) { + const host = options.host ?? 'localhost'; + const port = options.port ?? 8081; + const projectRoot = options.projectRoot ?? path.resolve(fileURLToPath(new URL('..', import.meta.url))); + + const fastify = Fastify(); + const rozenite = initializeRozenite({ + projectRoot, + include: ['@rozenite/tanstack-query-plugin'], + }); + const { createDevMiddleware } = loadRozenitePatchedDevMiddleware(projectRoot); + + const { middleware: devMiddleware, websocketEndpoints } = createDevMiddleware({ + serverBaseUrl: url.format({ protocol: 'http', hostname: host, port }), + unstable_experiments: { + enableNetworkInspector: true, + enableStandaloneFuseboxShell: false, + }, + }); + + const deviceWss = websocketEndpoints['/inspector/device'] as ws.WebSocketServer; + const tracingEvents: any[] = []; + + deviceWss.on('connection', socket => { + socket.on('message', message => { + try { + const parsedMessage = JSON.parse(message.toString()); + if (typeof parsedMessage?.payload?.wrappedEvent === 'object') { + const cdpEvent = parsedMessage?.payload?.wrappedEvent; + + if (cdpEvent.method === 'Tracing.start') { + tracingEvents.length = 0; + } + + if (cdpEvent.method === 'Tracing.dataCollected') { + tracingEvents.push(cdpEvent); + } + + if (cdpEvent.method === 'Tracing.tracingComplete') { + fs.writeFileSync(path.join(process.cwd(), 'tracing-events.json'), JSON.stringify(tracingEvents, null, 2)); + console.log('Tracing Complete!', tracingEvents.length); + tracingEvents.length = 0; + } + } + } catch {} + }); + }); + + await fastify.register(middie); + + const fastifyWithMiddleware = fastify as MiddlewareCapableFastify; + + fastifyWithMiddleware + .setNotFoundHandler((_request: FastifyRequest, reply: FastifyReply) => { + reply.code(404).send({ error: 'Not found' }); + }) + .use(rozenite.middleware as MiddlewareHandler) + .use(devMiddleware as MiddlewareHandler); + + process.once('SIGINT', () => { + void rozenite.dispose(); + }); + + fastify.get('/status', (_request, reply) => { + reply.status(200).send('packager-status:profiler-only'); + }); + + fastify.server.on('upgrade', (request: IncomingMessage, socket: Duplex, head: Buffer) => { + if (request.url == null) { + socket.destroy(); + return; + } + + const { pathname } = parseUrl(request.url); + if (pathname != null && websocketEndpoints[pathname]) { + const wss = websocketEndpoints[pathname]; + wss.handleUpgrade(request, socket, head, (socket: any) => { + wss.emit('connection', socket, request); + }); + } else { + socket.destroy(); + } + }); + + const address = await fastify.listen({ host, port }); + console.log(`Server is running on ${address}`); + setupKeyHandler(address); + + return { + address, + close: async () => { + await rozenite.dispose(); + await fastify.close(); + }, + }; +} + +function loadRozenitePatchedDevMiddleware(projectRoot: string): ReactNativeDevMiddleware { + const reactNativePackageJsonPath = require.resolve('react-native/package.json', { paths: [projectRoot] }); + const reactNativePackagePath = path.dirname(reactNativePackageJsonPath); + const communityCliPluginPath = require.resolve('@react-native/community-cli-plugin', { + paths: [reactNativePackagePath], + }); + const devMiddlewarePath = require.resolve('@react-native/dev-middleware', { + paths: [path.dirname(communityCliPluginPath)], + }); + + return require(devMiddlewarePath) as ReactNativeDevMiddleware; +} diff --git a/packages/granite-release-profiler/src/key-handler.ts b/packages/granite-release-profiler/src/key-handler.ts new file mode 100644 index 00000000..3ae55460 --- /dev/null +++ b/packages/granite-release-profiler/src/key-handler.ts @@ -0,0 +1,69 @@ +import readline from 'readline'; + +const CTRL_C = '\x03'; +const CTRL_D = '\x04'; + +let state: 'idle' | 'busy' = 'idle'; + +export function setupKeyHandler(address: string) { + if (!process.stdin.isTTY || process.stdin.setRawMode == null) { + return; + } + + console.log('Press d to print the connected device list'); + console.log('Press j to open the debugger'); + + readline.emitKeypressEvents(process.stdin); + process.stdin.setRawMode(true); + + process.stdin.on('keypress', (_, key: readline.Key) => { + const { ctrl = false } = key; + const sequence = key.sequence?.toLowerCase(); + + if (sequence == null) { + return; + } + + if (ctrl && [CTRL_C, CTRL_D].includes(sequence)) { + process.stdin.setRawMode(false); + process.stdin.pause(); + process.emit('SIGINT'); + process.exit(0); + } + + if (state === 'busy') { + return; + } + + if (sequence === 'd') { + fetchDeviceList(address) + .then(list => console.log(list)) + .finally(() => (state = 'idle')); + } else if (sequence === 'j') { + fetch(`${address}/json/list`, { method: 'GET' }) + .then(response => response.json()) + .then(list => { + const [target] = (list ?? []) as any[]; + + if ((list as any).length > 1) { + console.warn('Multiple devices are connected. Opening the first device.'); + } + + if (target == null) { + throw new Error('No connected device found'); + } + + state = 'busy'; + return fetch(new URL('/open-debugger?target=' + encodeURIComponent(target.id), address), { + method: 'POST', + }); + }) + .catch(console.error) + .finally(() => (state = 'idle')); + } + }); +} + +function fetchDeviceList(address: string) { + return fetch(`${address}/json/list`, { method: 'GET' }).then(response => response.json()) as Promise; +} diff --git a/packages/granite-release-profiler/src/url.ts b/packages/granite-release-profiler/src/url.ts new file mode 100644 index 00000000..bd4817b3 --- /dev/null +++ b/packages/granite-release-profiler/src/url.ts @@ -0,0 +1,26 @@ +export function toQueryObject(searchParams: URLSearchParams) { + return searchParams.entries().reduce( + (acc, [key, value]) => ({ + ...acc, + [key]: value, + }), + {} as any + ); +} + +export function parseUrl(value: string) { + if (value.startsWith('/')) { + const [pathname, query] = value.split('?'); + return { + pathname, + query: query ? toQueryObject(new URLSearchParams(query)) : {}, + }; + } + + const url = new URL(value); + + return { + pathname: url.pathname, + query: toQueryObject(url.searchParams), + }; +} diff --git a/packages/granite-release-profiler/tsconfig.json b/packages/granite-release-profiler/tsconfig.json new file mode 100644 index 00000000..75446513 --- /dev/null +++ b/packages/granite-release-profiler/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "allowImportingTsExtensions": true, + "types": ["node"] + }, + "include": ["src", "tsdown.config.ts"] +} diff --git a/packages/granite-release-profiler/tsdown.config.ts b/packages/granite-release-profiler/tsdown.config.ts new file mode 100644 index 00000000..65035dbc --- /dev/null +++ b/packages/granite-release-profiler/tsdown.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'tsdown'; + +export default defineConfig({ + entry: { + index: 'src/index.ts', + cli: 'src/cli.ts', + }, + format: ['esm'], + target: false, + dts: true, + clean: false, + exports: true, + fixedExtension: false, +}); diff --git a/packages/plugin-release-profiler/package.json b/packages/plugin-release-profiler/package.json new file mode 100644 index 00000000..3c8f3bb0 --- /dev/null +++ b/packages/plugin-release-profiler/package.json @@ -0,0 +1,39 @@ +{ + "name": "@granite-js/plugin-release-profiler", + "version": "1.0.30", + "type": "module", + "description": "Granite plugin for React Native release profiler bundles", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.cts", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "./plugins": { + "import": "./dist/plugins/index.js", + "require": "./dist/plugins/index.cjs" + }, + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "scripts": { + "prepack": "yarn build", + "test": "vitest --run", + "typecheck": "tsc --noEmit", + "build": "tsdown" + }, + "dependencies": { + "@granite-js/plugin-core": "workspace:*" + }, + "devDependencies": { + "@types/node": "catalog:tools", + "tsdown": "catalog:tools", + "typescript": "catalog:tools", + "vitest": "^4.0.12" + }, + "sideEffects": false +} diff --git a/packages/plugin-release-profiler/src/index.ts b/packages/plugin-release-profiler/src/index.ts new file mode 100644 index 00000000..4d1a555f --- /dev/null +++ b/packages/plugin-release-profiler/src/index.ts @@ -0,0 +1,2 @@ +export type { ReleaseProfilerOptions } from './plugins/releaseProfiler'; +export { releaseProfiler } from './plugins/releaseProfiler'; diff --git a/packages/plugin-release-profiler/src/plugins/index.ts b/packages/plugin-release-profiler/src/plugins/index.ts new file mode 100644 index 00000000..55daf821 --- /dev/null +++ b/packages/plugin-release-profiler/src/plugins/index.ts @@ -0,0 +1,2 @@ +export type { ReleaseProfilerOptions } from './releaseProfiler'; +export { releaseProfiler } from './releaseProfiler'; diff --git a/packages/plugin-release-profiler/src/plugins/releaseProfiler.spec.ts b/packages/plugin-release-profiler/src/plugins/releaseProfiler.spec.ts new file mode 100644 index 00000000..8034a40a --- /dev/null +++ b/packages/plugin-release-profiler/src/plugins/releaseProfiler.spec.ts @@ -0,0 +1,123 @@ +import { describe, expect, it } from 'vitest'; +import { releaseProfiler } from './releaseProfiler'; + +describe('releaseProfiler', () => { + it('enables development globals when requested', () => { + const plugin = releaseProfiler({ enabled: true }); + const config = plugin.config as any; + + expect(config).toMatchObject({ + esbuild: { + define: { + __DEV__: 'true', + 'process.env.NODE_ENV': '"development"', + }, + }, + }); + expect(config?.esbuild?.banner?.js).toContain('var __DEV__=true'); + expect(config?.esbuild?.banner?.js).toContain('global.__DEV__=true'); + expect(config?.esbuild?.banner?.js).toContain('var self=global.self=global.self||global;'); + expect(config?.esbuild?.banner?.js).toContain('var window=global.window=global.window||global;'); + expect(config?.esbuild?.banner?.js).toContain('process.env.NODE_ENV="development"'); + expect(config?.esbuild).not.toHaveProperty('prelude'); + }); + + it('keeps TossRN API Gateway requests on the development path', () => { + const plugin = releaseProfiler({ enabled: true }); + const transformSync = (plugin.config as any)?.transformer?.transformSync; + const httpCode = [ + 'export function requestToAPIGateway({ enableE2EEncryption = true, ...options }) {', + ' if (__DEV__) {', + ' return requestToAPIGatewayInPublic(options);', + ' }', + '', + ' if (!enableE2EEncryption) {', + ' return requestToAPIGatewayInPublic(options);', + ' }', + '', + ' return requestToAPIGatewayInApp(options, dword);', + '}', + ].join('\n'); + const rawRequestCode = [ + 'async function requestAPIGateway(input, init) {', + ' if (__DEV__ || !enableE2EEncryption) {', + ' return fetchAPIGatewayResponse(options);', + ' }', + '', + ' return requestToAPIGatewayInApp(options, dword);', + '}', + ].join('\n'); + + const transformedHttpCode = transformSync( + '/.yarn/cache/@tosscore-react-native.zip/node_modules/@tosscore/react-native/src/network/request/http.ts', + httpCode + ); + const transformedRawRequestCode = transformSync( + '/.yarn/cache/@tosscore-react-native.zip/node_modules/@tosscore/react-native/src/network/request/rawRequest.ts', + rawRequestCode + ); + + expect(transformedHttpCode).toContain('if (__DEV__)'); + expect(transformedHttpCode).toContain('return requestToAPIGatewayInPublic(options);'); + expect(transformedRawRequestCode).toContain('if (__DEV__ || !enableE2EEncryption) {'); + expect(transformedRawRequestCode).toContain('return fetchAPIGatewayResponse(options);'); + }); + + it('does not rewrite TossRN API Gateway origins', () => { + const plugin = releaseProfiler({ enabled: true }); + const transformSync = (plugin.config as any)?.transformer?.transformSync; + const originCode = [ + 'function getAPIGatewayTossImOrigin() {', + ' switch (getOperationalEnvironment()) {', + " case 'alpha':", + " return 'https://alpha-api-gateway.toss.im:21099';", + ' }', + '}', + 'function getAPIgatewayTossImOriginAU() {', + ' switch (getOperationalEnvironment()) {', + " case 'alpha':", + " return 'https://alpha-api-gateway.au.toss.im';", + ' }', + '}', + 'function getAPIgatewayTossImOriginEU() {', + ' switch (getOperationalEnvironment()) {', + " case 'alpha':", + " return 'https://alpha-api-gateway.eu.toss.im';", + ' }', + '}', + 'function getPayAPIGatewayTossImOrigin() {', + ' switch (getOperationalEnvironment()) {', + " case 'alpha':", + " return 'https://alpha-payapi-gateway.toss.im:21099';", + ' }', + '}', + ].join('\n'); + + expect( + transformSync( + '/.yarn/cache/@tosscore-react-native.zip/node_modules/@tosscore/react-native/src/env/operational/origin.ts', + originCode + ) + ).toBe(originCode); + }); + + it('removes React Native networking type-only imports that create circular runtime imports', () => { + const plugin = releaseProfiler({ enabled: true }); + const transformSync = (plugin.config as any)?.transformer?.transformSync; + const code = [ + "import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';", + "import {type NativeResponseType} from './XMLHttpRequest';", + 'const RCTNetworking = {};', + ].join('\n'); + + expect(transformSync('/node_modules/react-native/Libraries/Network/RCTNetworking.ios.js', code)).toBe( + ["import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';", 'const RCTNetworking = {};'].join( + '\n' + ) + ); + }); + + it('stays inactive by default', () => { + expect(releaseProfiler().config).toBeUndefined(); + }); +}); diff --git a/packages/plugin-release-profiler/src/plugins/releaseProfiler.ts b/packages/plugin-release-profiler/src/plugins/releaseProfiler.ts new file mode 100644 index 00000000..af6a2b80 --- /dev/null +++ b/packages/plugin-release-profiler/src/plugins/releaseProfiler.ts @@ -0,0 +1,53 @@ +import type { GranitePluginCore } from '@granite-js/plugin-core'; + +const RELEASE_PROFILER_DEV_BANNER = [ + 'var __DEV__=true;', + 'global.__DEV__=true;', + 'var self=global.self=global.self||global;', + 'var window=global.window=global.window||global;', + 'var process=global.process=global.process||{};', + 'process.env=process.env||{};', + 'process.env.NODE_ENV="development";', +].join(''); + +const REACT_NATIVE_RCT_NETWORKING_MODULE = + /[/\\]node_modules[/\\]react-native[/\\]Libraries[/\\]Network[/\\]RCTNetworking\.(ios|android)\.js$/; +const RCT_NETWORKING_TYPE_IMPORT = "import {type NativeResponseType} from './XMLHttpRequest';"; + +export interface ReleaseProfilerOptions { + enabled?: boolean; +} + +function removeRCTNetworkingTypeImport(id: string, code: string) { + if (!REACT_NATIVE_RCT_NETWORKING_MODULE.test(id)) { + return code; + } + + return code.replace(`${RCT_NETWORKING_TYPE_IMPORT}\n`, ''); +} + +function transformReleaseProfilerRuntime(id: string, code: string) { + return removeRCTNetworkingTypeImport(id, code); +} + +export function releaseProfiler(options: ReleaseProfilerOptions = {}): GranitePluginCore { + return { + name: 'release-profiler', + config: options.enabled + ? { + esbuild: { + define: { + __DEV__: 'true', + 'process.env.NODE_ENV': '"development"', + }, + banner: { + js: RELEASE_PROFILER_DEV_BANNER, + }, + }, + transformer: { + transformSync: transformReleaseProfilerRuntime, + }, + } + : undefined, + }; +} diff --git a/packages/plugin-release-profiler/tsconfig.json b/packages/plugin-release-profiler/tsconfig.json new file mode 100644 index 00000000..024804db --- /dev/null +++ b/packages/plugin-release-profiler/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["node", "vitest/globals"] + }, + "include": ["src", "tsdown.config.ts"] +} diff --git a/packages/plugin-release-profiler/tsdown.config.ts b/packages/plugin-release-profiler/tsdown.config.ts new file mode 100644 index 00000000..6e301aac --- /dev/null +++ b/packages/plugin-release-profiler/tsdown.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: { + index: "src/index.ts", + "plugins/index": "src/plugins/index.ts", + }, + format: ["esm", "cjs"], + dts: true, + inlineOnly: false, + exports: true, + fixedExtension: false, +}); diff --git a/yarn.lock b/yarn.lock index 23a754ee..28e7ade3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3884,6 +3884,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:1.9.1": + version: 1.9.1 + resolution: "@emnapi/core@npm:1.9.1" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.0" + tslib: "npm:^2.4.0" + checksum: 10c0/00e7a99a2bc3ad908ca8272ba861a934da87dffa8797a41316c4a3b571a1e4d2743e2fa14b1a0f131fa4a3c2018ddb601cd2a8cb7f574fa940af696df3c2fe8d + languageName: node + linkType: hard + "@emnapi/core@npm:1.9.2": version: 1.9.2 resolution: "@emnapi/core@npm:1.9.2" @@ -3914,6 +3924,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:1.9.1": + version: 1.9.1 + resolution: "@emnapi/runtime@npm:1.9.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/750edca117e0363ab2de10622f8ee60e57d8690c2f29c49704813da5cd627c641798d7f3cb0d953c62fdc71688e02e333ddbf2c1204f38b47e3e40657332a6f5 + languageName: node + linkType: hard + "@emnapi/runtime@npm:1.9.2": version: 1.9.2 resolution: "@emnapi/runtime@npm:1.9.2" @@ -3950,6 +3969,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/wasi-threads@npm:1.2.0": + version: 1.2.0 + resolution: "@emnapi/wasi-threads@npm:1.2.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/1e3724b5814b06c14782fda87eee9b9aa68af01576c81ffeaefdf621ddb74386e419d5b3b1027b6a8172397729d95a92f814fc4b8d3c224376428faa07a6a01a + languageName: node + linkType: hard + "@emnapi/wasi-threads@npm:1.2.1": version: 1.2.1 resolution: "@emnapi/wasi-threads@npm:1.2.1" @@ -4014,6 +4042,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/aix-ppc64@npm:0.28.0" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/android-arm64@npm:0.17.19" @@ -4063,6 +4098,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/android-arm64@npm:0.28.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/android-arm@npm:0.17.19" @@ -4112,6 +4154,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/android-arm@npm:0.28.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/android-x64@npm:0.17.19" @@ -4161,6 +4210,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/android-x64@npm:0.28.0" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/darwin-arm64@npm:0.17.19" @@ -4210,6 +4266,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/darwin-arm64@npm:0.28.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/darwin-x64@npm:0.17.19" @@ -4259,6 +4322,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/darwin-x64@npm:0.28.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/freebsd-arm64@npm:0.17.19" @@ -4308,6 +4378,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/freebsd-arm64@npm:0.28.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/freebsd-x64@npm:0.17.19" @@ -4357,6 +4434,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/freebsd-x64@npm:0.28.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-arm64@npm:0.17.19" @@ -4406,6 +4490,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-arm64@npm:0.28.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-arm@npm:0.17.19" @@ -4455,6 +4546,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-arm@npm:0.28.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-ia32@npm:0.17.19" @@ -4504,6 +4602,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-ia32@npm:0.28.0" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-loong64@npm:0.17.19" @@ -4553,6 +4658,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-loong64@npm:0.28.0" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-mips64el@npm:0.17.19" @@ -4602,6 +4714,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-mips64el@npm:0.28.0" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-ppc64@npm:0.17.19" @@ -4651,6 +4770,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-ppc64@npm:0.28.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-riscv64@npm:0.17.19" @@ -4700,6 +4826,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-riscv64@npm:0.28.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-s390x@npm:0.17.19" @@ -4749,6 +4882,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-s390x@npm:0.28.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-x64@npm:0.17.19" @@ -4798,6 +4938,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/linux-x64@npm:0.28.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/netbsd-arm64@npm:0.25.4" @@ -4826,6 +4973,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/netbsd-arm64@npm:0.28.0" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/netbsd-x64@npm:0.17.19" @@ -4875,6 +5029,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/netbsd-x64@npm:0.28.0" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-arm64@npm:0.25.4": version: 0.25.4 resolution: "@esbuild/openbsd-arm64@npm:0.25.4" @@ -4903,6 +5064,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/openbsd-arm64@npm:0.28.0" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/openbsd-x64@npm:0.17.19" @@ -4952,6 +5120,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/openbsd-x64@npm:0.28.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openharmony-arm64@npm:0.25.8": version: 0.25.8 resolution: "@esbuild/openharmony-arm64@npm:0.25.8" @@ -4973,6 +5148,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openharmony-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/openharmony-arm64@npm:0.28.0" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/sunos-x64@npm:0.17.19" @@ -5022,6 +5204,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/sunos-x64@npm:0.28.0" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/win32-arm64@npm:0.17.19" @@ -5071,6 +5260,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/win32-arm64@npm:0.28.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/win32-ia32@npm:0.17.19" @@ -5120,6 +5316,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/win32-ia32@npm:0.28.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/win32-x64@npm:0.17.19" @@ -5169,6 +5372,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.28.0": + version: 0.28.0 + resolution: "@esbuild/win32-x64@npm:0.28.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": version: 4.9.0 resolution: "@eslint-community/eslint-utils@npm:4.9.0" @@ -5300,6 +5510,17 @@ __metadata: languageName: node linkType: hard +"@fastify/ajv-compiler@npm:^4.0.5": + version: 4.0.5 + resolution: "@fastify/ajv-compiler@npm:4.0.5" + dependencies: + ajv: "npm:^8.12.0" + ajv-formats: "npm:^3.0.1" + fast-uri: "npm:^3.0.0" + checksum: 10c0/b701602c5fad35d1327a6ebda530ca5ba2c7728223cd214b2b24af7cb2522c864b6cbbe77335ddd6a55d03f76899fb009386da783121b7ece136feb7ea937e13 + languageName: node + linkType: hard + "@fastify/error@npm:^3.0.0, @fastify/error@npm:^3.2.0, @fastify/error@npm:^3.3.0": version: 3.4.1 resolution: "@fastify/error@npm:3.4.1" @@ -5307,6 +5528,13 @@ __metadata: languageName: node linkType: hard +"@fastify/error@npm:^4.0.0": + version: 4.2.0 + resolution: "@fastify/error@npm:4.2.0" + checksum: 10c0/8bdafe95b368a71dfc5644ef22e0a2412dfbb2f300cf4658fdbd9035c96d7c034c53fd7d38e1150437d9cf7a2d75e6bd05e458cf9ba5f2e47e527df8a5e0bd4e + languageName: node + linkType: hard + "@fastify/fast-json-stringify-compiler@npm:^4.1.0": version: 4.3.0 resolution: "@fastify/fast-json-stringify-compiler@npm:4.3.0" @@ -5316,6 +5544,22 @@ __metadata: languageName: node linkType: hard +"@fastify/fast-json-stringify-compiler@npm:^5.0.0": + version: 5.0.3 + resolution: "@fastify/fast-json-stringify-compiler@npm:5.0.3" + dependencies: + fast-json-stringify: "npm:^6.0.0" + checksum: 10c0/1f0e33c973fc228de44d997a8a1a43e883a580a8c971773bb9cb2375b0114694f81b47c52ac7e788eb6372d1f3dfc10be3176bad354a80d502d8b26a93dbc6c9 + languageName: node + linkType: hard + +"@fastify/forwarded@npm:^3.0.0": + version: 3.0.1 + resolution: "@fastify/forwarded@npm:3.0.1" + checksum: 10c0/fad9f7fb7ff4bf2f8ba782f79d46de190469817ed1bd55dc789927c381a38e63b53ab8c127d9444d703a449c5393529533bea365a25f6eb85a5ecbc78460be2a + languageName: node + linkType: hard + "@fastify/merge-json-schemas@npm:^0.1.0": version: 0.1.1 resolution: "@fastify/merge-json-schemas@npm:0.1.1" @@ -5325,6 +5569,15 @@ __metadata: languageName: node linkType: hard +"@fastify/merge-json-schemas@npm:^0.2.0": + version: 0.2.1 + resolution: "@fastify/merge-json-schemas@npm:0.2.1" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/dfa884a8f62d53f71de273fdcd0e501b213367767a7d8c522ae87ba6fb571b3eea85175d6e019036d7c0c5419be60305abe54899b9459f76ed5333358699efcb + languageName: node + linkType: hard + "@fastify/middie@npm:8.3.0": version: 8.3.0 resolution: "@fastify/middie@npm:8.3.0" @@ -5337,6 +5590,29 @@ __metadata: languageName: node linkType: hard +"@fastify/middie@npm:^9.3.2": + version: 9.3.2 + resolution: "@fastify/middie@npm:9.3.2" + dependencies: + "@fastify/error": "npm:^4.0.0" + fastify-plugin: "npm:^5.0.0" + find-my-way: "npm:^9.5.0" + path-to-regexp: "npm:^8.1.0" + reusify: "npm:^1.0.4" + checksum: 10c0/b1dc6d12a961fb6f44476fca0d89d74e8762c21f076af4da5ac23cc28741630a870d0f3cc29bbcdaa6a8f3054a48ff17d5dae9fa867bfcb5c56eb71cdaccf2c6 + languageName: node + linkType: hard + +"@fastify/proxy-addr@npm:^5.0.0": + version: 5.1.0 + resolution: "@fastify/proxy-addr@npm:5.1.0" + dependencies: + "@fastify/forwarded": "npm:^3.0.0" + ipaddr.js: "npm:^2.1.0" + checksum: 10c0/d9167e848086cb66a0ae8b008eb6a79e9ae0e17c3e8697a3a22b23152376e22843bea6642a2c07eba5460faa786ebda6157dfa6537ac7b733f758428cd51988b + languageName: node + linkType: hard + "@granite-app/counter@workspace:services/counter": version: 0.0.0-use.local resolution: "@granite-app/counter@workspace:services/counter" @@ -5898,6 +6174,18 @@ __metadata: languageName: unknown linkType: soft +"@granite-js/plugin-release-profiler@workspace:packages/plugin-release-profiler": + version: 0.0.0-use.local + resolution: "@granite-js/plugin-release-profiler@workspace:packages/plugin-release-profiler" + dependencies: + "@granite-js/plugin-core": "workspace:*" + "@types/node": "catalog:tools" + tsdown: "catalog:tools" + typescript: "catalog:tools" + vitest: "npm:^4.0.12" + languageName: unknown + linkType: soft + "@granite-js/plugin-router@workspace:*, @granite-js/plugin-router@workspace:packages/plugin-router": version: 0.0.0-use.local resolution: "@granite-js/plugin-router@workspace:packages/plugin-router" @@ -7095,7 +7383,7 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^1.1.3": +"@napi-rs/wasm-runtime@npm:^1.1.2, @napi-rs/wasm-runtime@npm:^1.1.3": version: 1.1.4 resolution: "@napi-rs/wasm-runtime@npm:1.1.4" dependencies: @@ -7646,6 +7934,190 @@ __metadata: languageName: node linkType: hard +"@oxc-node/core-android-arm-eabi@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-android-arm-eabi@npm:0.1.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@oxc-node/core-android-arm64@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-android-arm64@npm:0.1.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@oxc-node/core-darwin-arm64@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-darwin-arm64@npm:0.1.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@oxc-node/core-darwin-x64@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-darwin-x64@npm:0.1.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@oxc-node/core-freebsd-x64@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-freebsd-x64@npm:0.1.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@oxc-node/core-linux-arm-gnueabihf@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-linux-arm-gnueabihf@npm:0.1.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@oxc-node/core-linux-arm64-gnu@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-linux-arm64-gnu@npm:0.1.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@oxc-node/core-linux-arm64-musl@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-linux-arm64-musl@npm:0.1.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@oxc-node/core-linux-ppc64-gnu@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-linux-ppc64-gnu@npm:0.1.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@oxc-node/core-linux-s390x-gnu@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-linux-s390x-gnu@npm:0.1.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@oxc-node/core-linux-x64-gnu@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-linux-x64-gnu@npm:0.1.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@oxc-node/core-linux-x64-musl@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-linux-x64-musl@npm:0.1.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@oxc-node/core-openharmony-arm64@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-openharmony-arm64@npm:0.1.0" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@oxc-node/core-wasm32-wasi@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-wasm32-wasi@npm:0.1.0" + dependencies: + "@emnapi/core": "npm:1.9.1" + "@emnapi/runtime": "npm:1.9.1" + "@napi-rs/wasm-runtime": "npm:^1.1.2" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@oxc-node/core-win32-arm64-msvc@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-win32-arm64-msvc@npm:0.1.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@oxc-node/core-win32-ia32-msvc@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-win32-ia32-msvc@npm:0.1.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@oxc-node/core-win32-x64-msvc@npm:0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core-win32-x64-msvc@npm:0.1.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@oxc-node/core@npm:^0.1.0": + version: 0.1.0 + resolution: "@oxc-node/core@npm:0.1.0" + dependencies: + "@oxc-node/core-android-arm-eabi": "npm:0.1.0" + "@oxc-node/core-android-arm64": "npm:0.1.0" + "@oxc-node/core-darwin-arm64": "npm:0.1.0" + "@oxc-node/core-darwin-x64": "npm:0.1.0" + "@oxc-node/core-freebsd-x64": "npm:0.1.0" + "@oxc-node/core-linux-arm-gnueabihf": "npm:0.1.0" + "@oxc-node/core-linux-arm64-gnu": "npm:0.1.0" + "@oxc-node/core-linux-arm64-musl": "npm:0.1.0" + "@oxc-node/core-linux-ppc64-gnu": "npm:0.1.0" + "@oxc-node/core-linux-s390x-gnu": "npm:0.1.0" + "@oxc-node/core-linux-x64-gnu": "npm:0.1.0" + "@oxc-node/core-linux-x64-musl": "npm:0.1.0" + "@oxc-node/core-openharmony-arm64": "npm:0.1.0" + "@oxc-node/core-wasm32-wasi": "npm:0.1.0" + "@oxc-node/core-win32-arm64-msvc": "npm:0.1.0" + "@oxc-node/core-win32-ia32-msvc": "npm:0.1.0" + "@oxc-node/core-win32-x64-msvc": "npm:0.1.0" + pirates: "npm:^4.0.7" + dependenciesMeta: + "@oxc-node/core-android-arm-eabi": + optional: true + "@oxc-node/core-android-arm64": + optional: true + "@oxc-node/core-darwin-arm64": + optional: true + "@oxc-node/core-darwin-x64": + optional: true + "@oxc-node/core-freebsd-x64": + optional: true + "@oxc-node/core-linux-arm-gnueabihf": + optional: true + "@oxc-node/core-linux-arm64-gnu": + optional: true + "@oxc-node/core-linux-arm64-musl": + optional: true + "@oxc-node/core-linux-ppc64-gnu": + optional: true + "@oxc-node/core-linux-s390x-gnu": + optional: true + "@oxc-node/core-linux-x64-gnu": + optional: true + "@oxc-node/core-linux-x64-musl": + optional: true + "@oxc-node/core-openharmony-arm64": + optional: true + "@oxc-node/core-wasm32-wasi": + optional: true + "@oxc-node/core-win32-arm64-msvc": + optional: true + "@oxc-node/core-win32-ia32-msvc": + optional: true + "@oxc-node/core-win32-x64-msvc": + optional: true + checksum: 10c0/ff306be03088ed33003ed46033b4938bbad198587c4d33dbc21c50f505a8b4e7b027ef740d490f0abea65246891471f00654dda246bfa0656c57317022bc0958 + languageName: node + linkType: hard + "@oxc-project/types@npm:=0.112.0": version: 0.112.0 resolution: "@oxc-project/types@npm:0.112.0" @@ -7867,6 +8339,13 @@ __metadata: languageName: node linkType: hard +"@pinojs/redact@npm:^0.4.0": + version: 0.4.0 + resolution: "@pinojs/redact@npm:0.4.0" + checksum: 10c0/4b311ba17ee0cf154ff9c39eb063ec04cd0d0017cb3750efcdf06c2d485df3e1095e13e872175993568c5568c23e4508dd877c981bbc9c5ae5e384d569efcdff + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -8762,6 +9241,43 @@ __metadata: languageName: node linkType: hard +"@rozenite/agent-bridge@npm:1.10.0": + version: 1.10.0 + resolution: "@rozenite/agent-bridge@npm:1.10.0" + dependencies: + "@rozenite/agent-shared": "npm:1.10.0" + "@rozenite/plugin-bridge": "npm:1.10.0" + tslib: "npm:^2.3.0" + peerDependencies: + react: ">=17" + checksum: 10c0/6c7f8b27151a843dec260776d42db95c9541e135103ffb044b713455eb878917618f51cc7636a50a332ac65e1ffdb668b9c7cfe92d269b898dce84909ca74d3e + languageName: node + linkType: hard + +"@rozenite/agent-shared@npm:1.10.0": + version: 1.10.0 + resolution: "@rozenite/agent-shared@npm:1.10.0" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/376a743bf66320cf3ebb5a51ce59d11e52e1211e2dfd7c82dae595fc70385298ccd43ebfa1da99cae4a1a6f0a169fd259fa09cdbc4f48c338bb35f180581ff11 + languageName: node + linkType: hard + +"@rozenite/middleware@npm:1.10.0": + version: 1.10.0 + resolution: "@rozenite/middleware@npm:1.10.0" + dependencies: + "@rozenite/agent-shared": "npm:1.10.0" + "@rozenite/runtime": "npm:1.10.0" + "@rozenite/tools": "npm:1.10.0" + express: "npm:^5.1.0" + semver: "npm:^7.7.2" + tslib: "npm:^2.3.0" + ws: "npm:^8.18.3" + checksum: 10c0/bfb25a51d624969401cec98f4bbef0c13c949cbaea675b47816406ecca29daf3c3e34391f55dc1f1482b64cca9b16b65ed80781d97c602ceed670b48cd723a76 + languageName: node + linkType: hard + "@rozenite/middleware@npm:1.6.0": version: 1.6.0 resolution: "@rozenite/middleware@npm:1.6.0" @@ -8775,6 +9291,26 @@ __metadata: languageName: node linkType: hard +"@rozenite/plugin-bridge@npm:1.10.0": + version: 1.10.0 + resolution: "@rozenite/plugin-bridge@npm:1.10.0" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + react: ">=17" + checksum: 10c0/b321f8bfbc78a596ae3233ebf88685ae70865c34594493ed69e4ff81892db873dda8eaa8b8e2701f1518a0c46e5a4e9e0112d86d36aa09f18962483a03b02b65 + languageName: node + linkType: hard + +"@rozenite/runtime@npm:1.10.0": + version: 1.10.0 + resolution: "@rozenite/runtime@npm:1.10.0" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/b81dfaa8866a42f0de1d07265bc7e8ac34669c4731550107d1f5c2e5cc4e71a62df82ea08bba9636ec14883e8a22143a3d0d5bce14e6613ca9224bcb296b8f5b + languageName: node + linkType: hard + "@rozenite/runtime@npm:1.6.0": version: 1.6.0 resolution: "@rozenite/runtime@npm:1.6.0" @@ -8784,6 +9320,29 @@ __metadata: languageName: node linkType: hard +"@rozenite/tanstack-query-plugin@npm:1.10.0": + version: 1.10.0 + resolution: "@rozenite/tanstack-query-plugin@npm:1.10.0" + dependencies: + "@rozenite/agent-bridge": "npm:1.10.0" + "@rozenite/agent-shared": "npm:1.10.0" + "@rozenite/plugin-bridge": "npm:1.10.0" + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + "@tanstack/react-query": ^5.0.0 + react: "*" + react-native: "*" + checksum: 10c0/29bd07dd97514f45e77817b529543492227893616b2f0e8367a42694dd47b5adf5578b9675171a6a99b033a4879aa56996098c7ad1a551b119c6444063c9c5c3 + languageName: node + linkType: hard + +"@rozenite/tools@npm:1.10.0": + version: 1.10.0 + resolution: "@rozenite/tools@npm:1.10.0" + checksum: 10c0/def04439f8e344091ac5332e6604480479c4016c5aa07322c15a8c6cb7ab2bccbd34a45dca17b38a28e870004584a1a2f7d7ed6043993c702c7332a977231ca6 + languageName: node + linkType: hard + "@rozenite/tools@npm:1.6.0": version: 1.6.0 resolution: "@rozenite/tools@npm:1.6.0" @@ -9949,6 +10508,32 @@ __metadata: languageName: node linkType: hard +"@tanstack/query-core@npm:4.44.0": + version: 4.44.0 + resolution: "@tanstack/query-core@npm:4.44.0" + checksum: 10c0/6b8967cbe756d105a43f1ce6e11cf3ba52697c8a53d5780fd5cd234cda6dbe22b6e0a8902af8c891fd3c9daadd7f238a9325f5bbd1bcab4abc4e58a80320882e + languageName: node + linkType: hard + +"@tanstack/react-query@npm:^4.42.0": + version: 4.44.0 + resolution: "@tanstack/react-query@npm:4.44.0" + dependencies: + "@tanstack/query-core": "npm:4.44.0" + use-sync-external-store: "npm:^1.6.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-native: "*" + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 10c0/42852b4ad6cd1bad1bab5226d30ae5829b3091668e2c0434868309b1dfbc5086f2c2c73bedea2389df18a4725a8a560aca945e597f1c42d91933cb78f294a2fb + languageName: node + linkType: hard + "@testing-library/dom@npm:^10.4.0": version: 10.4.1 resolution: "@testing-library/dom@npm:10.4.1" @@ -11791,6 +12376,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.12.0, ajv@npm:^8.20.0": + version: 8.20.0 + resolution: "ajv@npm:8.20.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/5df9a1c8f83863cde1bd3a9ddb426f599718f88e3dc9153616c79fb28e0be455335830d7f21d745576519f057b371352daa31047b6a33d7036fe08777d60cf2a + languageName: node + linkType: hard + "algoliasearch@npm:^5.14.2": version: 5.45.0 resolution: "algoliasearch@npm:5.45.0" @@ -12212,6 +12809,16 @@ __metadata: languageName: node linkType: hard +"avvio@npm:^9.0.0": + version: 9.2.0 + resolution: "avvio@npm:9.2.0" + dependencies: + "@fastify/error": "npm:^4.0.0" + fastq: "npm:^1.17.1" + checksum: 10c0/ebeb1613a507d001922a3a2763336191da731bbd9df93f67d51b08fc98549e14499b058e008220d5df3354e0f14316cfa57107198caf09df6c8ba42c94ce9f51 + languageName: node + linkType: hard + "aws-lambda@npm:^1.0.7": version: 1.0.7 resolution: "aws-lambda@npm:1.0.7" @@ -13750,6 +14357,13 @@ __metadata: languageName: node linkType: hard +"cookie@npm:^1.0.1": + version: 1.1.1 + resolution: "cookie@npm:1.1.1" + checksum: 10c0/79c4ddc0fcad9c4f045f826f42edf54bcc921a29586a4558b0898277fa89fb47be95bc384c2253f493af7b29500c830da28341274527328f18eba9f58afa112c + languageName: node + linkType: hard + "copy-anything@npm:^4": version: 4.0.5 resolution: "copy-anything@npm:4.0.5" @@ -14896,6 +15510,20 @@ __metadata: languageName: node linkType: hard +"es-toolkit@npm:^1.46.1": + version: 1.47.0 + resolution: "es-toolkit@npm:1.47.0" + dependenciesMeta: + "@trivago/prettier-plugin-sort-imports@4.3.0": + unplugged: true + prettier-plugin-sort-re-exports@0.0.1: + unplugged: true + vitepress-plugin-sandpack@1.1.4: + unplugged: true + checksum: 10c0/6edc9709fccc409fa4adddd318971d8a18335de9225f2dc99021aacba44fe66a2437a831923589c643865caab261a087bd974338294a60bb5a74932caa102901 + languageName: node + linkType: hard + "esbuild-register@npm:3.4.2": version: 3.4.2 resolution: "esbuild-register@npm:3.4.2" @@ -15494,6 +16122,95 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:~0.28.0": + version: 0.28.0 + resolution: "esbuild@npm:0.28.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.28.0" + "@esbuild/android-arm": "npm:0.28.0" + "@esbuild/android-arm64": "npm:0.28.0" + "@esbuild/android-x64": "npm:0.28.0" + "@esbuild/darwin-arm64": "npm:0.28.0" + "@esbuild/darwin-x64": "npm:0.28.0" + "@esbuild/freebsd-arm64": "npm:0.28.0" + "@esbuild/freebsd-x64": "npm:0.28.0" + "@esbuild/linux-arm": "npm:0.28.0" + "@esbuild/linux-arm64": "npm:0.28.0" + "@esbuild/linux-ia32": "npm:0.28.0" + "@esbuild/linux-loong64": "npm:0.28.0" + "@esbuild/linux-mips64el": "npm:0.28.0" + "@esbuild/linux-ppc64": "npm:0.28.0" + "@esbuild/linux-riscv64": "npm:0.28.0" + "@esbuild/linux-s390x": "npm:0.28.0" + "@esbuild/linux-x64": "npm:0.28.0" + "@esbuild/netbsd-arm64": "npm:0.28.0" + "@esbuild/netbsd-x64": "npm:0.28.0" + "@esbuild/openbsd-arm64": "npm:0.28.0" + "@esbuild/openbsd-x64": "npm:0.28.0" + "@esbuild/openharmony-arm64": "npm:0.28.0" + "@esbuild/sunos-x64": "npm:0.28.0" + "@esbuild/win32-arm64": "npm:0.28.0" + "@esbuild/win32-ia32": "npm:0.28.0" + "@esbuild/win32-x64": "npm:0.28.0" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/openharmony-arm64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/8acd95c238ec6c4a9d16163277faf228a8994b642d187b3fe667ffbb469008e6748cde144fdc3c175bf8e78ee49e15a0ed9b9f183fdb5fcea1772f87fb1372a4 + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -16149,6 +16866,20 @@ __metadata: languageName: node linkType: hard +"fast-json-stringify@npm:^6.0.0": + version: 6.4.0 + resolution: "fast-json-stringify@npm:6.4.0" + dependencies: + "@fastify/merge-json-schemas": "npm:^0.2.0" + ajv: "npm:^8.12.0" + ajv-formats: "npm:^3.0.1" + fast-uri: "npm:^3.0.0" + json-schema-ref-resolver: "npm:^3.0.0" + rfdc: "npm:^1.2.0" + checksum: 10c0/283c2b7e7d1e40eb58c3b4d2714e76a650e6236d4be27e094408ffbfd8871691ad5a9dca124b3e2598852cd2ce288fd9509ed246ededa863f23eef3808aa6bce + languageName: node + linkType: hard + "fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" @@ -16179,6 +16910,13 @@ __metadata: languageName: node linkType: hard +"fast-uri@npm:^3.0.0": + version: 3.1.2 + resolution: "fast-uri@npm:3.1.2" + checksum: 10c0/5b35641895959f3f7ab7a7b1b5542bded159346f25ec9f256817b206d50b64eda5828e90d605a2e2fc645c90519a7259c2bab2c942ee728c88b88e5be21b090d + languageName: node + linkType: hard + "fast-uri@npm:^3.0.1": version: 3.1.0 resolution: "fast-uri@npm:3.1.0" @@ -16204,6 +16942,13 @@ __metadata: languageName: node linkType: hard +"fastify-plugin@npm:^5.0.0": + version: 5.1.0 + resolution: "fastify-plugin@npm:5.1.0" + checksum: 10c0/61b330b8cb03a3581b796d745137499a782934abcf65dbf9a41d07248520cfd220b3ae8b16afeaf81af712e68e1ac24352895132cfeb2b372c66662c0170f365 + languageName: node + linkType: hard + "fastify@npm:4.14.0": version: 4.14.0 resolution: "fastify@npm:4.14.0" @@ -16227,6 +16972,29 @@ __metadata: languageName: node linkType: hard +"fastify@npm:^5.8.5": + version: 5.8.5 + resolution: "fastify@npm:5.8.5" + dependencies: + "@fastify/ajv-compiler": "npm:^4.0.5" + "@fastify/error": "npm:^4.0.0" + "@fastify/fast-json-stringify-compiler": "npm:^5.0.0" + "@fastify/proxy-addr": "npm:^5.0.0" + abstract-logging: "npm:^2.0.1" + avvio: "npm:^9.0.0" + fast-json-stringify: "npm:^6.0.0" + find-my-way: "npm:^9.0.0" + light-my-request: "npm:^6.0.0" + pino: "npm:^9.14.0 || ^10.1.0" + process-warning: "npm:^5.0.0" + rfdc: "npm:^1.3.1" + secure-json-parse: "npm:^4.0.0" + semver: "npm:^7.6.0" + toad-cache: "npm:^3.7.0" + checksum: 10c0/c12fb6cec8e9083d148edc49c99f75e518e28c1664b121085fc1392dc67cd2e132d21dd79e1ef37e1c77c5991b4854ac8850b8d5997691060ea4c13fb7421a0e + languageName: node + linkType: hard + "fastq@npm:^1.17.1, fastq@npm:^1.6.0": version: 1.19.1 resolution: "fastq@npm:1.19.1" @@ -16372,6 +17140,17 @@ __metadata: languageName: node linkType: hard +"find-my-way@npm:^9.0.0, find-my-way@npm:^9.5.0": + version: 9.6.0 + resolution: "find-my-way@npm:9.6.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-querystring: "npm:^1.0.0" + safe-regex2: "npm:^5.0.0" + checksum: 10c0/d103e51a1e73e202e7533b2efc42e40c3618f8bd24a37cfa140da5e079c2baf5d5baeb01b2b8a7c104d680aa09c4b716851184f8ae103be374e8f46b17f6608d + languageName: node + linkType: hard + "find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" @@ -17095,6 +17874,34 @@ __metadata: languageName: unknown linkType: soft +"granite-release-profiler@workspace:packages/granite-release-profiler": + version: 0.0.0-use.local + resolution: "granite-release-profiler@workspace:packages/granite-release-profiler" + dependencies: + "@fastify/middie": "npm:^9.3.2" + "@oxc-node/core": "npm:^0.1.0" + "@react-native/dev-middleware": "catalog:react-native" + "@rozenite/middleware": "npm:1.10.0" + "@rozenite/tanstack-query-plugin": "npm:1.10.0" + "@tanstack/react-query": "npm:^4.42.0" + "@types/node": "catalog:tools" + "@types/ws": "npm:^8" + ajv: "npm:^8.20.0" + es-toolkit: "npm:^1.46.1" + fastify: "npm:^5.8.5" + react: "catalog:react-native" + react-native: "catalog:react-native" + tsdown: "catalog:tools" + tsx: "npm:^4.21.0" + typescript: "catalog:tools" + url: "npm:^0.11.4" + vitest: "npm:^4.0.12" + ws: "npm:^8.20.0" + bin: + granite-release-profiler: ./dist/cli.js + languageName: unknown + linkType: soft + "grapheme-splitter@npm:^1.0.4": version: 1.0.4 resolution: "grapheme-splitter@npm:1.0.4" @@ -17790,6 +18597,13 @@ __metadata: languageName: node linkType: hard +"ipaddr.js@npm:^2.1.0": + version: 2.4.0 + resolution: "ipaddr.js@npm:2.4.0" + checksum: 10c0/47c2f17677b40054ca50a09e1228cf818c0d02d4474c2e0e29232c6668b3c4d51a3cfc19d1e17897d7baf4d933b3111d6bdf5cfbe55ab184165469a75f2bf177 + languageName: node + linkType: hard + "is-absolute@npm:^1.0.0": version: 1.0.0 resolution: "is-absolute@npm:1.0.0" @@ -19364,6 +20178,15 @@ __metadata: languageName: node linkType: hard +"json-schema-ref-resolver@npm:^3.0.0": + version: 3.0.0 + resolution: "json-schema-ref-resolver@npm:3.0.0" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/0b6f4b66951ac0f6864949c08317cf0b7f7ae94e8da0b94e40df3561dc1a0b77a69b669d60aa1511b06aa18469203886eb2e89fd6bb3dcf0be46c329d69b0115 + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -19612,6 +20435,17 @@ __metadata: languageName: node linkType: hard +"light-my-request@npm:^6.0.0": + version: 6.6.0 + resolution: "light-my-request@npm:6.6.0" + dependencies: + cookie: "npm:^1.0.1" + process-warning: "npm:^4.0.0" + set-cookie-parser: "npm:^2.6.0" + checksum: 10c0/1440853cd3822ab83fbb1be4456099082dec8e9e3a4ea35c9d8d7d17a7ab98c83ad0a4c39a73a8c2b31b9ca70c57506e5b7a929495c149463ca0daca0d90dc6f + languageName: node + linkType: hard + "lighthouse-logger@npm:^1.0.0": version: 1.4.2 resolution: "lighthouse-logger@npm:1.4.2" @@ -22664,6 +23498,15 @@ __metadata: languageName: node linkType: hard +"pino-abstract-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "pino-abstract-transport@npm:3.0.0" + dependencies: + split2: "npm:^4.0.0" + checksum: 10c0/4486e1b9508110aaf963d07741ac98d660b974dd51d8ad42077d215118e27cda20c64da46c07c926898d52540aab7c6b9c37dc0f5355c203bb1d6a72b5bd8d6c + languageName: node + linkType: hard + "pino-std-serializers@npm:^6.0.0": version: 6.2.2 resolution: "pino-std-serializers@npm:6.2.2" @@ -22671,6 +23514,13 @@ __metadata: languageName: node linkType: hard +"pino-std-serializers@npm:^7.0.0": + version: 7.1.0 + resolution: "pino-std-serializers@npm:7.1.0" + checksum: 10c0/d158615aa93ebdeac2d3912ad4227a23ef78cf14229e886214771f581e96eff312257f2d6368c75b2fbf53e5024eda475d81305014f4ed1a6d5eeab9107f6ef0 + languageName: node + linkType: hard + "pino@npm:^8.5.0": version: 8.21.0 resolution: "pino@npm:8.21.0" @@ -22692,6 +23542,27 @@ __metadata: languageName: node linkType: hard +"pino@npm:^9.14.0 || ^10.1.0": + version: 10.3.1 + resolution: "pino@npm:10.3.1" + dependencies: + "@pinojs/redact": "npm:^0.4.0" + atomic-sleep: "npm:^1.0.0" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:^3.0.0" + pino-std-serializers: "npm:^7.0.0" + process-warning: "npm:^5.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^4.0.1" + thread-stream: "npm:^4.0.0" + bin: + pino: bin.js + checksum: 10c0/ae1c57f2baac85dd5d63a3500746d5ea1cfc4bfcbf356eaec94d42a782eeb80caa4d4614de43a036cf48e2aed46d855a7ff21b126f55a63811def52a894ef937 + languageName: node + linkType: hard + "pirates@npm:^3.0.2": version: 3.0.2 resolution: "pirates@npm:3.0.2" @@ -22970,6 +23841,20 @@ __metadata: languageName: node linkType: hard +"process-warning@npm:^4.0.0": + version: 4.0.1 + resolution: "process-warning@npm:4.0.1" + checksum: 10c0/577a268b9fd5c3d9f6dbb4348220099391d830905642845d591e7ee8b1e45043d98b7b9826a3c1379bdd1686cdfe0f6cf349cb812affc5853b662e6a9896579e + languageName: node + linkType: hard + +"process-warning@npm:^5.0.0": + version: 5.0.0 + resolution: "process-warning@npm:5.0.0" + checksum: 10c0/941f48863d368ec161e0b5890ba0c6af94170078f3d6b5e915c19b36fb59edb0dc2f8e834d25e0d375a8bf368a49d490f080508842168832b93489d17843ec29 + languageName: node + linkType: hard + "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" @@ -23143,6 +24028,13 @@ __metadata: languageName: node linkType: hard +"punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + languageName: node + linkType: hard + "punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -23157,6 +24049,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:^6.12.3": + version: 6.15.2 + resolution: "qs@npm:6.15.2" + dependencies: + side-channel: "npm:^1.1.0" + checksum: 10c0/e6fd5f6f0aab06d480fe9ab15cebfc4ce4235303e2f91dc69a8f7f4df1e668a61c11d1cfbabacf4295cbbeb7b670ed23db45307480726259761f98e5695e93a7 + languageName: node + linkType: hard + "qs@npm:^6.14.0, qs@npm:^6.14.1": version: 6.14.1 resolution: "qs@npm:6.14.1" @@ -23685,6 +24586,13 @@ __metadata: languageName: node linkType: hard +"real-require@npm:^1.0.0": + version: 1.0.0 + resolution: "real-require@npm:1.0.0" + checksum: 10c0/74d44b360b8b662d29c646f4688da462c4b10243b11d22ff9635395e81951a9c1ed349393411c4911ca6f3474c3e10e812bf4767052706abb863ba59bde0813b + languageName: node + linkType: hard + "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0" @@ -24019,6 +24927,13 @@ __metadata: languageName: node linkType: hard +"ret@npm:~0.5.0": + version: 0.5.0 + resolution: "ret@npm:0.5.0" + checksum: 10c0/220868b194f87bf1998e32e409086eec6b39e860c052bf267f8ad4d0131706a9773d45fd3f91acfb1a7c928fce002b694ab86fdba90bc8d4b8df68fa8645c5cc + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -24040,7 +24955,7 @@ __metadata: languageName: node linkType: hard -"rfdc@npm:^1.2.0, rfdc@npm:^1.3.0, rfdc@npm:^1.4.1": +"rfdc@npm:^1.2.0, rfdc@npm:^1.3.0, rfdc@npm:^1.3.1, rfdc@npm:^1.4.1": version: 1.4.1 resolution: "rfdc@npm:1.4.1" checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7 @@ -24406,6 +25321,17 @@ __metadata: languageName: node linkType: hard +"safe-regex2@npm:^5.0.0": + version: 5.1.1 + resolution: "safe-regex2@npm:5.1.1" + dependencies: + ret: "npm:~0.5.0" + bin: + safe-regex2: bin/safe-regex2.js + checksum: 10c0/65c59fb33de8e500fa1d7254cc7f9b6b8b932f925bcfc8d92273ec024c259052a2b3c975bbf5a9f9dd49cd3b0fa394fb56f36d6b10e394404056edfd1223fd17 + languageName: node + linkType: hard + "safe-stable-stringify@npm:^2.3.1": version: 2.5.0 resolution: "safe-stable-stringify@npm:2.5.0" @@ -24466,6 +25392,13 @@ __metadata: languageName: node linkType: hard +"secure-json-parse@npm:^4.0.0": + version: 4.1.0 + resolution: "secure-json-parse@npm:4.1.0" + checksum: 10c0/52b3f8125ea974db1333a5b63e6a1df550c36c0d5f9a263911d6732812bd02e938b30be324dcbbb9da3ef9bf5a84849e0dd911f56544003d3c09e8eee12504de + languageName: node + linkType: hard + "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.0, semver@npm:^5.5.0, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -24581,7 +25514,7 @@ __metadata: languageName: node linkType: hard -"set-cookie-parser@npm:^2.4.1": +"set-cookie-parser@npm:^2.4.1, set-cookie-parser@npm:^2.6.0": version: 2.7.2 resolution: "set-cookie-parser@npm:2.7.2" checksum: 10c0/4381a9eb7ee951dfe393fe7aacf76b9a3b4e93a684d2162ab35594fa4053cc82a4d7d7582bf397718012c9adcf839b8cd8f57c6c42901ea9effe33c752da4a45 @@ -24918,6 +25851,15 @@ __metadata: languageName: node linkType: hard +"sonic-boom@npm:^4.0.1": + version: 4.2.1 + resolution: "sonic-boom@npm:4.2.1" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/f374e9c3dfe194d706d8ef8aed4e28bc10638f9952fd19bcbddf2cef05d53334ad9e9dca3e01e24e88dd88fb278c6b8c5b2ae5002494b289c4914aaea3d9eae9 + languageName: node + linkType: hard + "source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" @@ -25625,6 +26567,15 @@ __metadata: languageName: node linkType: hard +"thread-stream@npm:^4.0.0": + version: 4.2.0 + resolution: "thread-stream@npm:4.2.0" + dependencies: + real-require: "npm:^1.0.0" + checksum: 10c0/2d55ace44785a2547b9b15c61c1d2db6d5b3712e21ddb1be23b1f5d19387ac8f153f24767bfae03b3f7c8651eb83758e1fcbb954e1077336b562d2d2cd723137 + languageName: node + linkType: hard + "throat@npm:^5.0.0": version: 5.0.0 resolution: "throat@npm:5.0.0" @@ -25786,6 +26737,13 @@ __metadata: languageName: node linkType: hard +"toad-cache@npm:^3.7.0": + version: 3.7.1 + resolution: "toad-cache@npm:3.7.1" + checksum: 10c0/22efc940723bbe30b8386af82ed0824263567b84d37f29f57651ad28d9aef823b678f07f6d6c2e142448d5f351f89e15e05f37f59e2c7f1d183294b8d32f93fb + languageName: node + linkType: hard + "toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" @@ -26153,6 +27111,21 @@ __metadata: languageName: node linkType: hard +"tsx@npm:^4.21.0": + version: 4.22.3 + resolution: "tsx@npm:4.22.3" + dependencies: + esbuild: "npm:~0.28.0" + fsevents: "npm:~2.3.3" + dependenciesMeta: + fsevents: + optional: true + bin: + tsx: dist/cli.mjs + checksum: 10c0/09a5a7d354ff75e5af6285217d709ec80a46c2ee19e0d9b5c5d00eab81047c3ea6b2a5498a2c5255f3960d6e7acd1a1eee34b9433dc56fb32907ca3b38271f41 + languageName: node + linkType: hard + "tuf-js@npm:^2.2.1": version: 2.2.1 resolution: "tuf-js@npm:2.2.1" @@ -26669,6 +27642,16 @@ __metadata: languageName: node linkType: hard +"url@npm:^0.11.4": + version: 0.11.4 + resolution: "url@npm:0.11.4" + dependencies: + punycode: "npm:^1.4.1" + qs: "npm:^6.12.3" + checksum: 10c0/cc93405ae4a9b97a2aa60ca67f1cb1481c0221cb4725a7341d149be5e2f9cfda26fd432d64dbbec693d16593b68b8a46aad8e5eab21f814932134c9d8620c662 + languageName: node + linkType: hard + "use-latest-callback@npm:^0.2.4": version: 0.2.6 resolution: "use-latest-callback@npm:0.2.6" @@ -26678,7 +27661,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.5.0": +"use-sync-external-store@npm:^1.5.0, use-sync-external-store@npm:^1.6.0": version: 1.6.0 resolution: "use-sync-external-store@npm:1.6.0" peerDependencies: @@ -27587,6 +28570,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.18.3, ws@npm:^8.20.0": + version: 8.21.0 + resolution: "ws@npm:8.21.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/ef4a243476283fc49bc7550966c4af4aa0eef56273837211e700de3b664e08604a760cdddcb5ba43c049140e74ccfec5b0ee0bb439e08c2adf9138902fdde5f9 + languageName: node + linkType: hard + "xml-name-validator@npm:^4.0.0": version: 4.0.0 resolution: "xml-name-validator@npm:4.0.0"