From 8bb252a244deea33922911a0ee1fcf8cb7016c84 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Thu, 21 May 2026 16:07:22 +0900 Subject: [PATCH] feat(devframe)!: upgrade nostics to v0.2.0, drop deprecated APIs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump `nostics` catalog from `^0.1.0` to `^0.2.0`. - Migrate all 23 diagnostics call sites from `.throw()` / `.report()` methods to the new callable `DiagnosticHandle` form (`throw diagnostics.DFxxxx(...)` / `diagnostics.DFxxxx(..., { method })`). - Refresh `DevToolsDiagnosticsHost` JSDoc and the `docs/guide/diagnostics.md` guide to describe the callable handle. - Fix publint `FILE_DOES_NOT_EXIST` finding: `pkg.types` now points at `./dist/index.d.mts` (the file tsdown actually emits). - Bump devframe to `v0.4.0` — breaking change for plugin authors who consume `ctx.diagnostics.logger.CODE.report()` / `.throw()`. --- AGENTS.md | 8 +- docs/guide/diagnostics.md | 20 +- packages/devframe/package.json | 4 +- .../devframe/src/adapters/mcp/build-server.ts | 4 +- packages/devframe/src/helpers/vite.ts | 2 +- packages/devframe/src/node/host-agent.ts | 10 +- packages/devframe/src/node/host-functions.ts | 4 +- packages/devframe/src/node/host-views.ts | 2 +- .../devframe/src/node/rpc-shared-state.ts | 2 +- packages/devframe/src/node/rpc-streaming.ts | 8 +- packages/devframe/src/node/storage.ts | 2 +- packages/devframe/src/rpc/collector.ts | 8 +- packages/devframe/src/rpc/dump/collect.ts | 6 +- packages/devframe/src/rpc/handler.ts | 2 +- packages/devframe/src/rpc/serialization.ts | 2 +- packages/devframe/src/rpc/validation.ts | 4 +- packages/devframe/src/types/diagnostics.ts | 18 +- pnpm-lock.yaml | 188 +++++++++--------- pnpm-workspace.yaml | 2 +- 19 files changed, 149 insertions(+), 147 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 8132964..3daeef7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -66,13 +66,13 @@ Prefix: **`DF`**. Codes are sequential 4-digit numbers (e.g. `DF0033`). Check th import { diagnostics } from './diagnostics' // For thrown errors — always prefix with `throw` for TypeScript control flow: - throw diagnostics.DF0033.throw({ name }) + throw diagnostics.DF0033({ id, reason }) // For reported warnings/errors (not thrown). The default console method is `warn`; // override with the 2nd-arg reporter options when needed: - diagnostics.DF0033.report({ name }) // console.warn - diagnostics.DF0033.report({ name }, { method: 'error' }) // console.error - diagnostics.DF0033.report({ name, cause: error }, { method: 'warn' }) // attach cause + diagnostics.DF0033({ id, reason }) // console.warn + diagnostics.DF0033({ id, reason }, { method: 'error' }) // console.error + diagnostics.DF0033({ id, reason, cause: error }, { method: 'warn' }) // attach cause ``` 3. **Create a docs page** at `docs/errors/DF0033.md` (when `docs/` lands): diff --git a/docs/guide/diagnostics.md b/docs/guide/diagnostics.md index 99e1eba..bdbed29 100644 --- a/docs/guide/diagnostics.md +++ b/docs/guide/diagnostics.md @@ -52,7 +52,7 @@ export function MyPlugin(): PluginWithDevTools { ctx.diagnostics.register(myDiagnostics) // Emit through the host's shared reporter: - myDiagnostics.MYP0002.report() + myDiagnostics.MYP0002() }, }, } @@ -76,26 +76,26 @@ Each definition supports a `why` (string or function — the message) and an opt ## Emit a diagnostic -Each registered code becomes a `DiagnosticHandle` on the typed result of `defineDiagnostics()` (and through the shared `ctx.diagnostics.logger` lookup). Handles expose `.report()` and `.throw()`. +Each registered code becomes a `DiagnosticHandle` on the typed result of `defineDiagnostics()` (and through the shared `ctx.diagnostics.logger` lookup). Each handle is a callable — invoke it to report (returns the `Diagnostic`), or prefix with `throw` to raise. ```ts // Throw — control flow stops here -throw myDiagnostics.MYP0001.throw({ name: 'foo' }) +throw myDiagnostics.MYP0001({ name: 'foo' }) // Report without throwing (default console method: `warn`) -myDiagnostics.MYP0002.report() +myDiagnostics.MYP0002() // Override the console method per call -myDiagnostics.MYP0002.report({}, { method: 'error' }) +myDiagnostics.MYP0002({}, { method: 'error' }) // Attach a `cause` — merged into the params object -myDiagnostics.MYP0001.throw({ name: 'foo', cause: error }) +throw myDiagnostics.MYP0001({ name: 'foo', cause: error }) ``` -`.throw()` is typed `never`, so TypeScript treats the line after as unreachable. Prefix the call with `throw` for control-flow narrowing: +The callable returns a `Diagnostic` (which extends `Error`). Prefix with `throw` so TypeScript narrows the lines after as unreachable: ```ts -throw myDiagnostics.MYP0001.throw({ name }) +throw myDiagnostics.MYP0001({ name }) ``` ## Typed handle reference @@ -114,7 +114,7 @@ const myDiagnostics = ctx.diagnostics.defineDiagnostics({ ctx.diagnostics.register(myDiagnostics) // Use the typed handle directly for autocompletion -myDiagnostics.MYP0001.report({ name: 'foo' }) +myDiagnostics.MYP0001({ name: 'foo' }) ``` The host's `defineDiagnostics()` pre-wires its ANSI console reporter, so both the typed handle and the shared lookup produce the same output. @@ -134,7 +134,7 @@ Each page covers the message, cause, example, and fix — see any [DF code page] ## When to use what -- **`ctx.diagnostics`** — coded conditions worth looking up: misconfiguration, deprecations, validation failures, internal invariants. Always docs-backed. Often `.throw()`. +- **`ctx.diagnostics`** — coded conditions worth looking up: misconfiguration, deprecations, validation failures, internal invariants. Always docs-backed. Often thrown. - **`ctx.messages`** — user-facing activity surfaces in the DevTools UI: progress indicators, audit results, "URL copied" toasts. Just a message and a level. Diagnostics target tool authors and CI; messages target the human in front of the DevTools panel. diff --git a/packages/devframe/package.json b/packages/devframe/package.json index 25657d0..e3cf021 100644 --- a/packages/devframe/package.json +++ b/packages/devframe/package.json @@ -1,7 +1,7 @@ { "name": "devframe", "type": "module", - "version": "0.3.0", + "version": "0.4.0", "description": "Framework for building generic DevTools", "author": "Anthony Fu ", "license": "MIT", @@ -54,7 +54,7 @@ "./utils/when": "./dist/utils/when.mjs", "./package.json": "./package.json" }, - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "files": [ "dist", "skills" diff --git a/packages/devframe/src/adapters/mcp/build-server.ts b/packages/devframe/src/adapters/mcp/build-server.ts index 93a2997..365de52 100644 --- a/packages/devframe/src/adapters/mcp/build-server.ts +++ b/packages/devframe/src/adapters/mcp/build-server.ts @@ -102,7 +102,7 @@ export async function createMcpServer( ): Promise { const transport = options.transport ?? 'stdio' if (transport !== 'stdio') - throw diagnostics.DF0017.throw({ transport, reason: 'Only stdio transport is supported in this release.' }) + throw diagnostics.DF0017({ transport, reason: 'Only stdio transport is supported in this release.' }) const host: DevToolsHost = { mountStatic: () => { /* MCP has no static surface */ }, @@ -132,7 +132,7 @@ export async function createMcpServer( } catch (error) { const reason = error instanceof Error ? error.message : String(error) - throw diagnostics.DF0017.throw({ transport, reason, cause: error }) + throw diagnostics.DF0017({ transport, reason, cause: error }) } options.onReady?.({ transport: 'stdio' }) diff --git a/packages/devframe/src/helpers/vite.ts b/packages/devframe/src/helpers/vite.ts index 7fc0e2b..45d1fd2 100644 --- a/packages/devframe/src/helpers/vite.ts +++ b/packages/devframe/src/helpers/vite.ts @@ -106,7 +106,7 @@ export function viteDevBridge(d: DevframeDefinition, options: ViteDevBridgeOptio }) } catch (e) { - diagnostics.DF0033.report({ id: d.id, reason: String(e), cause: e as Error }, { method: 'warn' }) + diagnostics.DF0033({ id: d.id, reason: String(e), cause: e as Error }, { method: 'warn' }) return } diff --git a/packages/devframe/src/node/host-agent.ts b/packages/devframe/src/node/host-agent.ts index d40c42d..da7d074 100644 --- a/packages/devframe/src/node/host-agent.ts +++ b/packages/devframe/src/node/host-agent.ts @@ -74,7 +74,7 @@ export class DevToolsAgentHost implements DevToolsAgentHostType { registerResource(input: AgentResourceInput): AgentHandle { if (this.resources.has(input.id)) - throw diagnostics.DF0016.throw({ id: input.id }) + throw diagnostics.DF0016({ id: input.id }) const resource: AgentResource = { id: input.id, @@ -154,16 +154,16 @@ export class DevToolsAgentHost implements DevToolsAgentHostType { private _validateToolId(id: string): void { if (this.tools.has(id)) - throw diagnostics.DF0015.throw({ id }) + throw diagnostics.DF0015({ id }) // Collision with an RPC function that already carries an `agent` field. const rpcDef = this.context.rpc.definitions.get(id) if (rpcDef?.agent) - throw diagnostics.DF0015.throw({ id }) + throw diagnostics.DF0015({ id }) } private _projectTool(input: AgentToolInput): AgentTool { if (!input.description || typeof input.description !== 'string') - throw diagnostics.DF0014.throw({ name: input.id }) + throw diagnostics.DF0014({ name: input.id }) return { id: input.id, @@ -185,7 +185,7 @@ export class DevToolsAgentHost implements DevToolsAgentHostType { if (!agent) continue if (!agent.description || typeof agent.description !== 'string') - throw diagnostics.DF0014.throw({ name }) + throw diagnostics.DF0014({ name }) const type: RpcFunctionType = def.type ?? 'query' const safety = agent.safety ?? inferSafety(type) diff --git a/packages/devframe/src/node/host-functions.ts b/packages/devframe/src/node/host-functions.ts index 90dbd47..e0a3ee6 100644 --- a/packages/devframe/src/node/host-functions.ts +++ b/packages/devframe/src/node/host-functions.ts @@ -45,7 +45,7 @@ export class RpcFunctionsHost extends RpcFunctionsCollectorBase>> { if (!this.definitions.has(method as string)) { - throw diagnostics.DF0006.throw({ name: String(method) }) + throw diagnostics.DF0006({ name: String(method) }) } const handler = await this.getHandler(method) @@ -80,7 +80,7 @@ export class RpcFunctionsHost extends RpcFunctionsCollectorBase({ diff --git a/packages/devframe/src/node/rpc-streaming.ts b/packages/devframe/src/node/rpc-streaming.ts index 26510ac..023775e 100644 --- a/packages/devframe/src/node/rpc-streaming.ts +++ b/packages/devframe/src/node/rpc-streaming.ts @@ -97,12 +97,12 @@ export function createRpcStreamingServerHost(rpc: RpcFunctionsHost): RpcStreamin handler(channelName: string, id: string, opts?: { afterSeq?: number }) { const state = channels.get(channelName) if (!state) { - diagnostics.DF0030.report({ channel: channelName, id }, { method: 'error' }) + diagnostics.DF0030({ channel: channelName, id }, { method: 'error' }) return } const record = state.streams.get(id) if (!record) { - diagnostics.DF0030.report({ channel: channelName, id }, { method: 'error' }) + diagnostics.DF0030({ channel: channelName, id }, { method: 'error' }) return } const session = rpc.getCurrentRpcSession() @@ -181,7 +181,7 @@ export function createRpcStreamingServerHost(rpc: RpcFunctionsHost): RpcStreamin const state = channels.get(channelName) const record = state?.inbound.get(id) if (!record) { - diagnostics.DF0030.report({ channel: channelName, id }, { method: 'error' }) + diagnostics.DF0030({ channel: channelName, id }, { method: 'error' }) return } // Lock the inbound to the first session that writes; subsequent @@ -218,7 +218,7 @@ export function createRpcStreamingServerHost(rpc: RpcFunctionsHost): RpcStreamin function createChannel(name: string, opts: RpcStreamingChannelOptions = {}): RpcStreamingChannel { if (channels.has(name)) - throw diagnostics.DF0032.throw({ channel: name }) + throw diagnostics.DF0032({ channel: name }) const replayWindow = opts.replayWindow ?? 0 const state: ChannelState = { diff --git a/packages/devframe/src/node/storage.ts b/packages/devframe/src/node/storage.ts index 78ca6af..d321efb 100644 --- a/packages/devframe/src/node/storage.ts +++ b/packages/devframe/src/node/storage.ts @@ -24,7 +24,7 @@ export function createStorage(options: CreateStorageOptions initialValue = mergeInitialValue ? mergeInitialValue(options.initialValue, savedValue) : savedValue } catch (error) { - diagnostics.DF0012.report({ filepath: options.filepath, cause: error }, { method: 'warn' }) + diagnostics.DF0012({ filepath: options.filepath, cause: error }, { method: 'warn' }) initialValue = options.initialValue } } diff --git a/packages/devframe/src/rpc/collector.ts b/packages/devframe/src/rpc/collector.ts index b9c5794..3025ce4 100644 --- a/packages/devframe/src/rpc/collector.ts +++ b/packages/devframe/src/rpc/collector.ts @@ -41,7 +41,7 @@ export class RpcFunctionsCollectorBase< register(fn: RpcFunctionDefinition, force = false): void { if (this.definitions.has(fn.name) && !force) { - throw diagnostics.DF0021.throw({ name: fn.name }) + throw diagnostics.DF0021({ name: fn.name }) } assertAgentJsonSerializable(fn) this.definitions.set(fn.name, fn) @@ -50,7 +50,7 @@ export class RpcFunctionsCollectorBase< update(fn: RpcFunctionDefinition, force = false): void { if (!this.definitions.has(fn.name) && !force) { - throw diagnostics.DF0022.throw({ name: fn.name }) + throw diagnostics.DF0022({ name: fn.name }) } assertAgentJsonSerializable(fn) this.definitions.set(fn.name, fn) @@ -74,7 +74,7 @@ export class RpcFunctionsCollectorBase< getSchema(name: T): { args: RpcArgsSchema | undefined, returns: RpcReturnSchema | undefined } { const definition = this.definitions.get(name as string) if (!definition) - throw diagnostics.DF0023.throw({ name: String(name) }) + throw diagnostics.DF0023({ name: String(name) }) return { args: definition.args, returns: definition.returns, @@ -98,5 +98,5 @@ function assertAgentJsonSerializable( fn: RpcFunctionDefinition, ): void { if (fn.agent && fn.jsonSerializable !== true) - throw diagnostics.DF0019.throw({ name: fn.name }) + throw diagnostics.DF0019({ name: fn.name }) } diff --git a/packages/devframe/src/rpc/dump/collect.ts b/packages/devframe/src/rpc/dump/collect.ts index 47b1af5..087dec2 100644 --- a/packages/devframe/src/rpc/dump/collect.ts +++ b/packages/devframe/src/rpc/dump/collect.ts @@ -75,7 +75,7 @@ export async function dumpFunctions< const handler = setupResult.handler || definition.handler if (!handler) { - throw diagnostics.DF0024.throw({ name: definition.name }) + throw diagnostics.DF0024({ name: definition.name }) } let dump = setupResult.dump ?? definition.dump @@ -211,7 +211,7 @@ export function createClientFromDump>( const client = new Proxy({} as T, { get(_, functionName: string) { if (!(functionName in store.definitions)) { - throw diagnostics.DF0025.throw({ name: functionName }) + throw diagnostics.DF0025({ name: functionName }) } return async (...args: any[]) => { @@ -248,7 +248,7 @@ export function createClientFromDump>( return fallbackRecord.output } - throw diagnostics.DF0026.throw({ name: functionName, args: JSON.stringify(args) }) + throw diagnostics.DF0026({ name: functionName, args: JSON.stringify(args) }) } }, has(_, functionName: string) { diff --git a/packages/devframe/src/rpc/handler.ts b/packages/devframe/src/rpc/handler.ts index 8c63ef9..88fea4c 100644 --- a/packages/devframe/src/rpc/handler.ts +++ b/packages/devframe/src/rpc/handler.ts @@ -42,7 +42,7 @@ export async function getRpcHandler< } const result = await getRpcResolvedSetupResult(definition, context) if (!result.handler) { - throw diagnostics.DF0024.throw({ name: definition.name }) + throw diagnostics.DF0024({ name: definition.name }) } return result.handler } diff --git a/packages/devframe/src/rpc/serialization.ts b/packages/devframe/src/rpc/serialization.ts index 35f85a5..1a70e44 100644 --- a/packages/devframe/src/rpc/serialization.ts +++ b/packages/devframe/src/rpc/serialization.ts @@ -84,7 +84,7 @@ export function strictJsonStringify(value: unknown, fnName: string = ''): string function nonJsonAt(fnName: string, type: string, parent: unknown, key: string): Error { const path = formatPath(parent, key) - return diagnostics.DF0020.throw({ name: fnName || '', type, path }) + return diagnostics.DF0020({ name: fnName || '', type, path }) } function formatPath(parent: unknown, key: string): string { diff --git a/packages/devframe/src/rpc/validation.ts b/packages/devframe/src/rpc/validation.ts index 8ce54bd..222582f 100644 --- a/packages/devframe/src/rpc/validation.ts +++ b/packages/devframe/src/rpc/validation.ts @@ -12,11 +12,11 @@ export function validateDefinitions(definitions: readonly RpcFunctionDefinitionA const type = definition.type || 'query' if ((type === 'action' || type === 'event') && definition.dump) { - throw diagnostics.DF0027.throw({ name: definition.name, type }) + throw diagnostics.DF0027({ name: definition.name, type }) } if (definition.snapshot && type !== 'query') { - throw diagnostics.DF0028.throw({ name: definition.name, type }) + throw diagnostics.DF0028({ name: definition.name, type }) } } } diff --git a/packages/devframe/src/types/diagnostics.ts b/packages/devframe/src/types/diagnostics.ts index dd0a7ee..7ad491b 100644 --- a/packages/devframe/src/types/diagnostics.ts +++ b/packages/devframe/src/types/diagnostics.ts @@ -11,9 +11,10 @@ export type DevToolsDiagnosticsDefinition = ReturnType @@ -45,18 +46,19 @@ export interface DevToolsDefineDiagnosticsOptions=22.12.0} cpu: [arm] os: [android] @@ -1420,8 +1420,8 @@ packages: cpu: [arm64] os: [android] - '@oxc-parser/binding-android-arm64@0.130.0': - resolution: {integrity: sha512-oFWFJrsGv9siFM4HjMqKNB7IuIZD/SMmZdCXl8xyx7lDplGvPKyewpOo272rSWgMXe2Wx7bWI0Yj+gkHv4qbeg==} + '@oxc-parser/binding-android-arm64@0.132.0': + resolution: {integrity: sha512-SThDrSeamB/kG2+NxcJ5/wSLcV6dUqDknrPLqFYQ0ST/55mtBP4M7Q/f3QbubH6aAd11wpzZn/nwbVRSdobOpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -1438,8 +1438,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-arm64@0.130.0': - resolution: {integrity: sha512-sGUzupdTplK9jQg7eJZ878HfEgQjJNBc6dAYVWJ9W5aU+J8rLfRJhTVsKThiu1pNwm6Y1qKCcbC6WhNWSXR3Ig==} + '@oxc-parser/binding-darwin-arm64@0.132.0': + resolution: {integrity: sha512-Lc0f/TYoKBghE5/2Gsv7bLXk+TJZunx2Tf61X8hG4ARXdc8UYI26dCGccFSd1AyFbK3jfaNXtMnupggDbjPXdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -1456,8 +1456,8 @@ packages: cpu: [x64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.130.0': - resolution: {integrity: sha512-PsB4cdCISbC00Uy8eiD8bc2AkGWjZqrSrJnkBFuG2ptrrf6mZ2F5gLFSjOAVMMgZPg8B1D7OydJwLWSfyI2Plg==} + '@oxc-parser/binding-darwin-x64@0.132.0': + resolution: {integrity: sha512-RG2eJIpf7C21z9HSSXFw1bTArdpKe7Y4fwcJTwRq1yCSe1vSavaN9GA1sm9KqzemTLAGVktQ+7qBTGp0vQeUZg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -1474,8 +1474,8 @@ packages: cpu: [x64] os: [freebsd] - '@oxc-parser/binding-freebsd-x64@0.130.0': - resolution: {integrity: sha512-DgABp3l38hS77JbXCV4qk1+n6DPym5u8zzwuweokezm2tX194nDSJDENbDRECxVsiNbprKATLbk+Z5wlHT0OHw==} + '@oxc-parser/binding-freebsd-x64@0.132.0': + resolution: {integrity: sha512-wQIPntPLtJ8NcBpvKPbEv3NqzV6k8eP8tP/jE9Rg8HTg/j7urZGFSsTCPCW5k77Qfw2DM4vRvc9p3I4yq/Shvw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -1492,8 +1492,8 @@ packages: cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-gnueabihf@0.130.0': - resolution: {integrity: sha512-4Kn3CTEmwFrzhTSC/JuUW16qovmaMdX7jeSKbL8w0pLtLww7To1a2XJi9Z5uD8QWUkfUHhqfV+VD6dVzBnWzoA==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.132.0': + resolution: {integrity: sha512-PixKEpeSe3yxQWqNyOCBALRYc72+Tj7ILDofUl3iXo25cVOzLA6jHUhmOINRtWIPh7dbUie3QNeabwaQpZTw6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -1510,8 +1510,8 @@ packages: cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.130.0': - resolution: {integrity: sha512-D35KZM3F4rRu1uAFKyBlg3Gaf/ybCjyaPR1hfgvk5ex8NtcTmRgc0JgSighEyNg96TPrFhemFba68SZuxaha8w==} + '@oxc-parser/binding-linux-arm-musleabihf@0.132.0': + resolution: {integrity: sha512-sCR+DzGHlyHKnbA2z9zWjTUhIo8Sy0enJl4RDsBwPmkxYynPatpwOAWe8W5127SlW0boqUWHGtr1NWn5UwIhXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -1530,8 +1530,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-arm64-gnu@0.130.0': - resolution: {integrity: sha512-Q9o7oVlo955KHwS8l1u0bCzIx+JsZUA3XToLXC+MsMhye/9LeBQbt84nh120cl2XLy+TEzvugYDiHShg5yaX6Q==} + '@oxc-parser/binding-linux-arm64-gnu@0.132.0': + resolution: {integrity: sha512-sQBix5P2cW+IpzTcCwYxnh9yALrKSIkKJThspBvMGcygSMnbzkSvhN7SfuX1hvBk8y1XEChsdkU3ET0V5DmzUw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -1551,8 +1551,8 @@ packages: os: [linux] libc: [musl] - '@oxc-parser/binding-linux-arm64-musl@0.130.0': - resolution: {integrity: sha512-EiJ/gC0ljbcwVpycC8YWw6ggMbtsPX8XMOt0mPx0aqWeMsNR+L9m05Flbvd5T+GlivG+GkSWQL7tM9SRFpM/dw==} + '@oxc-parser/binding-linux-arm64-musl@0.132.0': + resolution: {integrity: sha512-WozHg3Kc//8Sk756HXXgMbEAvqtG+Lzb9JOojwQzIGDtN78Az2dLttkb71akWYUF/8IgYfDSlfKh4Uot8is5Vw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -1572,8 +1572,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-ppc64-gnu@0.130.0': - resolution: {integrity: sha512-b+h/lsLLurp756dMGizNs5uPaJfyEdWrTcV5t8M609jWm1DEHB1StpRXCkyvwtkJx3m+qL5BNQ0dEKan/4yGFA==} + '@oxc-parser/binding-linux-ppc64-gnu@0.132.0': + resolution: {integrity: sha512-CmX/ulNBOEwWTyVRmcpYKAcAizW6+OjtLJgo7fXoL9OqQvjF4VER8tPomv44vwzfSCy1BHbsB0ZlZYzYJNj4cA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -1593,8 +1593,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.130.0': - resolution: {integrity: sha512-O19Cil83XAyjEFfo8WhkMwY58ALqZ7ckjGL+25mjMIuF84urWBeANH0FC8B8BsSSygWU3/1aY3ADdDbp+wlBnw==} + '@oxc-parser/binding-linux-riscv64-gnu@0.132.0': + resolution: {integrity: sha512-j9oQS+hM90SdhviNGWbPgT4+Rlq+ac++q/zjgwPD1mVHgxHzATvoRGtDx0sXGmFOQ9J9YkwAhYGb5MAHL6TAsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -1614,8 +1614,8 @@ packages: os: [linux] libc: [musl] - '@oxc-parser/binding-linux-riscv64-musl@0.130.0': - resolution: {integrity: sha512-BgXRVC0+83n3YzCscLQjj6nbyeBIVeZYPTI4fFMAE4WNm2+4RXhWp03IVizL7esIz36kgmT48aebk1iM+cs8sw==} + '@oxc-parser/binding-linux-riscv64-musl@0.132.0': + resolution: {integrity: sha512-bLz+Xi+Agnfmd7kWPEsSVwCn2k4EyIalZkNBcQ0OGIv9rqn8VgCPLNd03tM9mKX/5TdlvDXalz0q71BIrOPNqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -1635,8 +1635,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-s390x-gnu@0.130.0': - resolution: {integrity: sha512-6tJz0xvnGhsokE7N1WlUSBXibpYmT9xSJFS1Ce41Km/+8gQvdlW8MLhRv8PD0L7ix8vRG0FDDepp3jdOFzdVdw==} + '@oxc-parser/binding-linux-s390x-gnu@0.132.0': + resolution: {integrity: sha512-U6t2qbJU0ypTfyj9QV3W1Y6mITDTL8ai/OR6NUn85vyHthOvobKWgXzU4tu0EskSzlpuVFz1g0jFGulDIUKHxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -1656,8 +1656,8 @@ packages: os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.130.0': - resolution: {integrity: sha512-9aCWj83dp3heTQGmGnZGdIWgxjZrr/7VQ0TGFHH5PKByxJKF2Hcr4qvaSUHhhGEa3MSsDjTL1YDP8RAgdL5/Cg==} + '@oxc-parser/binding-linux-x64-gnu@0.132.0': + resolution: {integrity: sha512-WcEaSNHFk8yz5YFlQQAlhq6jOFmZBB/RKE7uzhyCIf+pF1Lmv9gUH4221mle2Gd9iHyWT3ySNph8yZgb1xYdWg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -1677,8 +1677,8 @@ packages: os: [linux] libc: [musl] - '@oxc-parser/binding-linux-x64-musl@0.130.0': - resolution: {integrity: sha512-afXt87aZBqrUVli8TB/I8H1G50RDWcwirjWtXGXYqJ2ZqWEiErH7V72j3LUSDZaivmtu2OLX0KQ/mbhP81mr7A==} + '@oxc-parser/binding-linux-x64-musl@0.132.0': + resolution: {integrity: sha512-iQrV4iJzQgRwK3BWRmQl1C3C6g3wYpXN2WLdQdyR+efoUnncdShZAVp9OgcojtlD3MDRbuOMGG3SjxF4fL4nlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -1696,8 +1696,8 @@ packages: cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-openharmony-arm64@0.130.0': - resolution: {integrity: sha512-I0NCrZV/YZuCGWgqwNN/GO/iXlLF2z+Wgc7u+Aa9N4P51oYeIa0XT+zVBUne4csO9GqxskXgI4g8JzzWGRpfOw==} + '@oxc-parser/binding-openharmony-arm64@0.132.0': + resolution: {integrity: sha512-FWzmUGrZ6GUby4U7WIwcCtab6tdmlTO3xTRRKyb5kjIJVEiaUAT8animUG/nK8ZCA8gkRkPOTId4rl6uTqUmJQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -1712,8 +1712,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@oxc-parser/binding-wasm32-wasi@0.130.0': - resolution: {integrity: sha512-sJgQkGaBX0WJvPUDfwciex6IcTk5O5NLQ1bhEb6f3nBruh1GshKMRSMt2bxZlYrgBzjyBbJzsnO+InPG0bg+fA==} + '@oxc-parser/binding-wasm32-wasi@0.132.0': + resolution: {integrity: sha512-TlbMppxJI5CjWDes0QaP6G3aneVg1yikBu5QYI+DUShF9WDL66ccgKFNNGmi/Wybtszw6hxwAvv76T4DaPKnHw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] @@ -1729,8 +1729,8 @@ packages: cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-arm64-msvc@0.130.0': - resolution: {integrity: sha512-bjcma99sQrNh6RY4mPO9yTkfxql6TDFoN3HWdK31RCKXwNhcDgJXW/l8PUtzKNiQ+9vpKJfJtQq+LklBuxSOBA==} + '@oxc-parser/binding-win32-arm64-msvc@0.132.0': + resolution: {integrity: sha512-RH/NbFjGKqdUAUi7Oh3LQPxUk2hsWFEEQ38HSnbRQT8QjBZFKqL1fMbmsB3N4jy/KPh9iX94+9dmkEMBBbambw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -1747,8 +1747,8 @@ packages: cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.130.0': - resolution: {integrity: sha512-hRYbv6HhpSTzT4xTiIkadLI7upLQxuOdLPR/9nL1fTjwhgutBTPXrwaAPb/jTFVx6/8C7Jb5HcUKhmNwloTbFA==} + '@oxc-parser/binding-win32-ia32-msvc@0.132.0': + resolution: {integrity: sha512-JUr4jQY9jxoIB/YTLXr6XofSi5xikj6p5/Ns1h0VOBDT0j1jKU+kMsv2xxv51RwnETcXpA1Yw/9oUAfcqfaqEA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] @@ -1765,8 +1765,8 @@ packages: cpu: [x64] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.130.0': - resolution: {integrity: sha512-RBpA9TsRucJq6HNVNCFF1iKg+QeTkLdZf7hi4xaOGCPvMZWvDHjQgSOEZMUpuW4JNciHbxNhLEYmz5CVygjVGQ==} + '@oxc-parser/binding-win32-x64-msvc@0.132.0': + resolution: {integrity: sha512-2dapgHpA5X8DSXF4AU36hJWYf6zP0tKjMXFRAZFBD62pkevW/uhFDXoFH9Y/3Fd2EtDrw5ByNnR1wVE9X9y0SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1777,8 +1777,8 @@ packages: '@oxc-project/types@0.129.0': resolution: {integrity: sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==} - '@oxc-project/types@0.130.0': - resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==} + '@oxc-project/types@0.132.0': + resolution: {integrity: sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==} '@oxc-transform/binding-android-arm-eabi@0.128.0': resolution: {integrity: sha512-qVO4izEs88ZSo7KOK4P+O5nAXXJmkSadInvFjGkhVnm2R2Wr8trU/GLhjAK0S0u8Qv9bkXspNhgpECk+CTQ/ew==} @@ -5018,8 +5018,8 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - nostics@0.1.0: - resolution: {integrity: sha512-gSujQXUjmUOFVum7XazE2EcoHYZB3Et0dZwiQh1plulZdolEZL+Y7TOu9yVsXCxxUqfw5q0+svxJJXvynygKEQ==} + nostics@0.2.0: + resolution: {integrity: sha512-/WQpI46UMbqvy1okYb+V+9wW3J8/m6GJ33wm691n/tyi6YtJiZ6ssJjENAU7y4evfYrrgYN9HllKDzPvffil1w==} npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} @@ -5118,8 +5118,8 @@ packages: resolution: {integrity: sha512-S6eFI+VLkpyA+/Lf8z6qURjDV6Mgo74SLNznNopHTlQW3hedv2MB/z31kBRuBCCTqZN9HHdva0ojljEhPnBKFA==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-parser@0.130.0: - resolution: {integrity: sha512-X0PJ+NmOok8qP3vK9uaW431ngkdM9UPEK7KG466urtIL2+EYTEgbZK2yqe2MWKJKBjRlFweP/pJPx0x9muMEVw==} + oxc-parser@0.132.0: + resolution: {integrity: sha512-+0LAPHaqtfQlvWdpaAa09SmOaZZgP8C552xosEkGJ4+ruEwP1Vgx+sqBgcBCNfR6KDCmagGOZTde8wmAvcI/Hg==} engines: {node: ^20.19.0 || >=22.12.0} oxc-transform@0.128.0: @@ -7697,7 +7697,7 @@ snapshots: '@oxc-parser/binding-android-arm-eabi@0.129.0': optional: true - '@oxc-parser/binding-android-arm-eabi@0.130.0': + '@oxc-parser/binding-android-arm-eabi@0.132.0': optional: true '@oxc-parser/binding-android-arm64@0.128.0': @@ -7706,7 +7706,7 @@ snapshots: '@oxc-parser/binding-android-arm64@0.129.0': optional: true - '@oxc-parser/binding-android-arm64@0.130.0': + '@oxc-parser/binding-android-arm64@0.132.0': optional: true '@oxc-parser/binding-darwin-arm64@0.128.0': @@ -7715,7 +7715,7 @@ snapshots: '@oxc-parser/binding-darwin-arm64@0.129.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.130.0': + '@oxc-parser/binding-darwin-arm64@0.132.0': optional: true '@oxc-parser/binding-darwin-x64@0.128.0': @@ -7724,7 +7724,7 @@ snapshots: '@oxc-parser/binding-darwin-x64@0.129.0': optional: true - '@oxc-parser/binding-darwin-x64@0.130.0': + '@oxc-parser/binding-darwin-x64@0.132.0': optional: true '@oxc-parser/binding-freebsd-x64@0.128.0': @@ -7733,7 +7733,7 @@ snapshots: '@oxc-parser/binding-freebsd-x64@0.129.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.130.0': + '@oxc-parser/binding-freebsd-x64@0.132.0': optional: true '@oxc-parser/binding-linux-arm-gnueabihf@0.128.0': @@ -7742,7 +7742,7 @@ snapshots: '@oxc-parser/binding-linux-arm-gnueabihf@0.129.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.130.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.132.0': optional: true '@oxc-parser/binding-linux-arm-musleabihf@0.128.0': @@ -7751,7 +7751,7 @@ snapshots: '@oxc-parser/binding-linux-arm-musleabihf@0.129.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.130.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.132.0': optional: true '@oxc-parser/binding-linux-arm64-gnu@0.128.0': @@ -7760,7 +7760,7 @@ snapshots: '@oxc-parser/binding-linux-arm64-gnu@0.129.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.130.0': + '@oxc-parser/binding-linux-arm64-gnu@0.132.0': optional: true '@oxc-parser/binding-linux-arm64-musl@0.128.0': @@ -7769,7 +7769,7 @@ snapshots: '@oxc-parser/binding-linux-arm64-musl@0.129.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.130.0': + '@oxc-parser/binding-linux-arm64-musl@0.132.0': optional: true '@oxc-parser/binding-linux-ppc64-gnu@0.128.0': @@ -7778,7 +7778,7 @@ snapshots: '@oxc-parser/binding-linux-ppc64-gnu@0.129.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.130.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.132.0': optional: true '@oxc-parser/binding-linux-riscv64-gnu@0.128.0': @@ -7787,7 +7787,7 @@ snapshots: '@oxc-parser/binding-linux-riscv64-gnu@0.129.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.130.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.132.0': optional: true '@oxc-parser/binding-linux-riscv64-musl@0.128.0': @@ -7796,7 +7796,7 @@ snapshots: '@oxc-parser/binding-linux-riscv64-musl@0.129.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.130.0': + '@oxc-parser/binding-linux-riscv64-musl@0.132.0': optional: true '@oxc-parser/binding-linux-s390x-gnu@0.128.0': @@ -7805,7 +7805,7 @@ snapshots: '@oxc-parser/binding-linux-s390x-gnu@0.129.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.130.0': + '@oxc-parser/binding-linux-s390x-gnu@0.132.0': optional: true '@oxc-parser/binding-linux-x64-gnu@0.128.0': @@ -7814,7 +7814,7 @@ snapshots: '@oxc-parser/binding-linux-x64-gnu@0.129.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.130.0': + '@oxc-parser/binding-linux-x64-gnu@0.132.0': optional: true '@oxc-parser/binding-linux-x64-musl@0.128.0': @@ -7823,7 +7823,7 @@ snapshots: '@oxc-parser/binding-linux-x64-musl@0.129.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.130.0': + '@oxc-parser/binding-linux-x64-musl@0.132.0': optional: true '@oxc-parser/binding-openharmony-arm64@0.128.0': @@ -7832,7 +7832,7 @@ snapshots: '@oxc-parser/binding-openharmony-arm64@0.129.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.130.0': + '@oxc-parser/binding-openharmony-arm64@0.132.0': optional: true '@oxc-parser/binding-wasm32-wasi@0.128.0': @@ -7849,7 +7849,7 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@oxc-parser/binding-wasm32-wasi@0.130.0': + '@oxc-parser/binding-wasm32-wasi@0.132.0': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 @@ -7862,7 +7862,7 @@ snapshots: '@oxc-parser/binding-win32-arm64-msvc@0.129.0': optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.130.0': + '@oxc-parser/binding-win32-arm64-msvc@0.132.0': optional: true '@oxc-parser/binding-win32-ia32-msvc@0.128.0': @@ -7871,7 +7871,7 @@ snapshots: '@oxc-parser/binding-win32-ia32-msvc@0.129.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.130.0': + '@oxc-parser/binding-win32-ia32-msvc@0.132.0': optional: true '@oxc-parser/binding-win32-x64-msvc@0.128.0': @@ -7880,14 +7880,14 @@ snapshots: '@oxc-parser/binding-win32-x64-msvc@0.129.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.130.0': + '@oxc-parser/binding-win32-x64-msvc@0.132.0': optional: true '@oxc-project/types@0.128.0': {} '@oxc-project/types@0.129.0': {} - '@oxc-project/types@0.130.0': {} + '@oxc-project/types@0.132.0': {} '@oxc-transform/binding-android-arm-eabi@0.128.0': optional: true @@ -11334,10 +11334,10 @@ snapshots: normalize-path@3.0.0: {} - nostics@0.1.0: + nostics@0.2.0: dependencies: magic-string: 0.30.21 - oxc-parser: 0.130.0 + oxc-parser: 0.132.0 unplugin: 3.0.0 npm-run-path@5.3.0: @@ -11627,30 +11627,30 @@ snapshots: '@oxc-parser/binding-win32-ia32-msvc': 0.129.0 '@oxc-parser/binding-win32-x64-msvc': 0.129.0 - oxc-parser@0.130.0: + oxc-parser@0.132.0: dependencies: - '@oxc-project/types': 0.130.0 + '@oxc-project/types': 0.132.0 optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.130.0 - '@oxc-parser/binding-android-arm64': 0.130.0 - '@oxc-parser/binding-darwin-arm64': 0.130.0 - '@oxc-parser/binding-darwin-x64': 0.130.0 - '@oxc-parser/binding-freebsd-x64': 0.130.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.130.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.130.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.130.0 - '@oxc-parser/binding-linux-arm64-musl': 0.130.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.130.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.130.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.130.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.130.0 - '@oxc-parser/binding-linux-x64-gnu': 0.130.0 - '@oxc-parser/binding-linux-x64-musl': 0.130.0 - '@oxc-parser/binding-openharmony-arm64': 0.130.0 - '@oxc-parser/binding-wasm32-wasi': 0.130.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.130.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.130.0 - '@oxc-parser/binding-win32-x64-msvc': 0.130.0 + '@oxc-parser/binding-android-arm-eabi': 0.132.0 + '@oxc-parser/binding-android-arm64': 0.132.0 + '@oxc-parser/binding-darwin-arm64': 0.132.0 + '@oxc-parser/binding-darwin-x64': 0.132.0 + '@oxc-parser/binding-freebsd-x64': 0.132.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.132.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.132.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.132.0 + '@oxc-parser/binding-linux-arm64-musl': 0.132.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.132.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.132.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.132.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.132.0 + '@oxc-parser/binding-linux-x64-gnu': 0.132.0 + '@oxc-parser/binding-linux-x64-musl': 0.132.0 + '@oxc-parser/binding-openharmony-arm64': 0.132.0 + '@oxc-parser/binding-wasm32-wasi': 0.132.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.132.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.132.0 + '@oxc-parser/binding-win32-x64-msvc': 0.132.0 oxc-transform@0.128.0: optionalDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 35ee386..85c8623 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -41,7 +41,7 @@ catalogs: immer: ^11.1.8 launch-editor: ^2.13.2 mrmime: ^2.0.1 - nostics: ^0.1.0 + nostics: ^0.2.0 obug: ^2.1.1 ohash: ^2.0.11 open: ^11.0.0