diff --git a/deno.json b/deno.json index 4d8d06bd..136ea415 100644 --- a/deno.json +++ b/deno.json @@ -41,9 +41,9 @@ "@opentelemetry/core": "npm:@opentelemetry/core@^2.5.0", "@opentelemetry/sdk-trace-base": "npm:@opentelemetry/sdk-trace-base@^2.5.0", "@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.39.0", - "@optique/config": "jsr:@optique/config@^0.10.4", - "@optique/core": "jsr:@optique/core@^0.10.4", - "@optique/run": "jsr:@optique/run@^0.10.4", + "@optique/config": "jsr:@optique/config@^0.10.6", + "@optique/core": "jsr:@optique/core@^0.10.6", + "@optique/run": "jsr:@optique/run@^0.10.6", "@std/assert": "jsr:@std/assert@^1.0.13", "@std/async": "jsr:@std/async@^1.0.13", "@std/encoding": "jsr:@std/encoding@^1.0.10", diff --git a/deno.lock b/deno.lock index 87a4f070..1b19467d 100644 --- a/deno.lock +++ b/deno.lock @@ -16,14 +16,14 @@ "jsr:@fresh/plugin-vite@^1.0.7": "1.0.8", "jsr:@hongminhee/localtunnel@0.3": "0.3.0", "jsr:@hono/hono@^4.7.1": "4.11.9", - "jsr:@hono/hono@^4.8.3": "4.11.10", + "jsr:@hono/hono@^4.8.3": "4.12.0", "jsr:@logtape/file@2": "2.0.2", "jsr:@logtape/logtape@2": "2.0.2", "jsr:@logtape/logtape@^1.0.4": "1.3.7", "jsr:@logtape/logtape@^2.0.2": "2.0.2", - "jsr:@optique/config@~0.10.4": "0.10.4", - "jsr:@optique/core@~0.10.4": "0.10.4", - "jsr:@optique/run@~0.10.4": "0.10.4", + "jsr:@optique/config@~0.10.6": "0.10.6", + "jsr:@optique/core@~0.10.6": "0.10.6", + "jsr:@optique/run@~0.10.6": "0.10.6", "jsr:@std/assert@0.224": "0.224.0", "jsr:@std/assert@0.226": "0.226.0", "jsr:@std/assert@^1.0.13": "1.0.18", @@ -261,6 +261,9 @@ "@hono/hono@4.11.10": { "integrity": "a5a6dac87ab5a8bcf3f92aeaca22417128d584c2732860c20bbf6fdb3cafbcc5" }, + "@hono/hono@4.12.0": { + "integrity": "a09c74c4a15539f159ea386b5804fd88d984805aa74e4d847a136ba42487412b" + }, "@logtape/file@2.0.2": { "integrity": "a912459fe0d27213e05c95e6fadf716000f27eafa27e67c2737820ba24097fdc", "dependencies": [ @@ -280,8 +283,8 @@ "@logtape/logtape@2.0.2": { "integrity": "546fcd514e66f2b841c6f261fa3a3d905b52d876dc1bba8ffe1a087d9275c4c9" }, - "@optique/config@0.10.4": { - "integrity": "108c1c77c98bb22fbd4675d9410531adcd212a19ec510bb4461173252ba490f3", + "@optique/config@0.10.6": { + "integrity": "ac216f6fc6ebe124fc17baa7a0a7cde13a6565942e6a2ec0c34d947299c7577d", "dependencies": [ "jsr:@optique/core", "npm:@standard-schema/spec" @@ -290,11 +293,11 @@ "@optique/core@0.10.0-dev.333+076fceae": { "integrity": "1ebe1782740f08d568ae0c5258786933a8502d1e137feb49b2d8ab06d204b11a" }, - "@optique/core@0.10.4": { - "integrity": "fa750a168ad5743128e4dcc50c8f63ce3c0ad6e753f99ddf1b34f8a9cece6602" + "@optique/core@0.10.6": { + "integrity": "a3ba44f15f9512856f4716362ef3731b711285ed2327c372ce6cc575be9d3072" }, - "@optique/run@0.10.4": { - "integrity": "39a4bf4258b82291594fb86be20e42b1768b403610d8977d1521b46a2526578f", + "@optique/run@0.10.6": { + "integrity": "6c045917057b9657baae320c2e80bcc46f05572a8698d80e233da1e34915db1a", "dependencies": [ "jsr:@optique/core" ] @@ -5877,9 +5880,9 @@ "jsr:@hono/hono@^4.8.3", "jsr:@logtape/file@2", "jsr:@logtape/logtape@2", - "jsr:@optique/config@~0.10.4", - "jsr:@optique/core@~0.10.4", - "jsr:@optique/run@~0.10.4", + "jsr:@optique/config@~0.10.6", + "jsr:@optique/core@~0.10.6", + "jsr:@optique/run@~0.10.6", "jsr:@std/assert@^1.0.13", "jsr:@std/async@^1.0.13", "jsr:@std/encoding@^1.0.10", diff --git a/packages/cli/src/lookup.test.ts b/packages/cli/src/lookup.test.ts index 13fd3268..9b86a5b1 100644 --- a/packages/cli/src/lookup.test.ts +++ b/packages/cli/src/lookup.test.ts @@ -186,15 +186,72 @@ test("clearTimeoutSignal - cleans up timer properly", async () => { assert.ok(!signal.aborted); }); -test("authorizedFetchOption - parses successfully without -a flag", async () => { +test("authorizedFetchOption - parses successfully without -a flag", () => { + setActiveConfig(configContext.id, {}); + const result = parse(authorizedFetchOption, []); + clearActiveConfig(configContext.id); + assert.ok(result.success); + if (result.success) { + assert.strictEqual(result.value.authorizedFetch, false); + assert.strictEqual(result.value.firstKnock, undefined); + assert.strictEqual(result.value.tunnelService, undefined); + } +}); + +test("authorizedFetchOption - parses with -a without tunnelService config", async () => { const result = await runWithConfig(authorizedFetchOption, configContext, { load: () => ({}), + args: ["-a"], + }); + assert.strictEqual(result.authorizedFetch, true); + assert.strictEqual(result.firstKnock, "draft-cavage-http-signatures-12"); + assert.strictEqual(result.tunnelService, undefined); +}); + +test("authorizedFetchOption - uses config to enable authorized fetch", async () => { + const result = await runWithConfig(authorizedFetchOption, configContext, { + load: () => ({ lookup: { authorizedFetch: true } }), args: [], }); - assert.strictEqual(result.authorizedFetch, false); - // When authorizedFetch is false, firstKnock and tunnelService still get defaults + assert.strictEqual(result.authorizedFetch, true); assert.strictEqual(result.firstKnock, "draft-cavage-http-signatures-12"); - assert.strictEqual(result.tunnelService, "localhost.run"); + assert.strictEqual(result.tunnelService, undefined); +}); + +test("authorizedFetchOption - reads firstKnock from config", async () => { + const result = await runWithConfig(authorizedFetchOption, configContext, { + load: () => ({ + lookup: { + authorizedFetch: true, + firstKnock: "rfc9421", + }, + tunnelService: "serveo.net", + }), + args: [], + }); + assert.strictEqual(result.authorizedFetch, true); + assert.strictEqual(result.firstKnock, "rfc9421"); + assert.strictEqual(result.tunnelService, undefined); +}); + +test("authorizedFetchOption - invalid when --first-knock is used without -a", () => { + setActiveConfig(configContext.id, {}); + const result = parse(authorizedFetchOption, [ + "--first-knock", + "rfc9421", + ]); + clearActiveConfig(configContext.id); + assert.ok(!result.success); +}); + +test("authorizedFetchOption - invalid when --tunnel-service is used without -a", () => { + setActiveConfig(configContext.id, {}); + const result = parse(authorizedFetchOption, [ + "--tunnel-service", + "serveo.net", + ]); + clearActiveConfig(configContext.id); + assert.ok(!result.success); }); test("authorizedFetchOption - parses successfully with -a flag", () => { @@ -208,7 +265,7 @@ test("authorizedFetchOption - parses successfully with -a flag", () => { result.value.firstKnock, "draft-cavage-http-signatures-12", ); - assert.strictEqual(result.value.tunnelService, "localhost.run"); + assert.strictEqual(result.value.tunnelService, undefined); } }); @@ -224,7 +281,7 @@ test("authorizedFetchOption - parses with -a and --first-knock", () => { if (result.success) { assert.strictEqual(result.value.authorizedFetch, true); assert.strictEqual(result.value.firstKnock, "rfc9421"); - assert.strictEqual(result.value.tunnelService, "localhost.run"); + assert.strictEqual(result.value.tunnelService, undefined); } }); diff --git a/packages/cli/src/lookup.ts b/packages/cli/src/lookup.ts index 1854e6ef..bfc784df 100644 --- a/packages/cli/src/lookup.ts +++ b/packages/cli/src/lookup.ts @@ -34,6 +34,7 @@ import { optionNames, or, string, + withDefault, } from "@optique/core"; import { path, print, printError } from "@optique/run"; import { createWriteStream, type WriteStream } from "node:fs"; @@ -44,8 +45,8 @@ import { getContextLoader, getDocumentLoader } from "./docloader.ts"; import { renderImages } from "./imagerenderer.ts"; import { configureLogging } from "./log.ts"; import { + createTunnelServiceOption, type GlobalOptions, - tunnelServiceOption, userAgentOption, } from "./options.ts"; import { spawnTemporaryServer, type TemporaryServer } from "./tempserver.ts"; @@ -53,39 +54,45 @@ import { colorEnabled, colors, formatObject } from "./utils.ts"; const logger = getLogger(["fedify", "cli", "lookup"]); -export const authorizedFetchOption = object("Authorized fetch options", { - authorizedFetch: bindConfig( - map( - flag("-a", "--authorized-fetch", { - description: message`Sign the request with an one-time key.`, - }), - () => true as const, +export const authorizedFetchOption = withDefault( + object("Authorized fetch options", { + authorizedFetch: bindConfig( + map( + flag("-a", "--authorized-fetch", { + description: message`Sign the request with an one-time key.`, + }), + () => true as const, + ), + { + context: configContext, + key: (config) => config.lookup?.authorizedFetch ? true : undefined, + }, ), - { - context: configContext, - key: (config) => config.lookup?.authorizedFetch ?? false, - default: false, - }, - ), - firstKnock: bindConfig( - option( - "--first-knock", - choice(["draft-cavage-http-signatures-12", "rfc9421"]), + firstKnock: bindConfig( + option( + "--first-knock", + choice(["draft-cavage-http-signatures-12", "rfc9421"]), + { + description: message`The first-knock spec for ${ + optionNames(["-a", "--authorized-fetch"]) + }. It is used for the double-knocking technique.`, + }, + ), { - description: message`The first-knock spec for ${ - optionNames(["-a", "--authorized-fetch"]) - }. It is used for the double-knocking technique.`, + context: configContext, + key: (config) => + config.lookup?.firstKnock ?? "draft-cavage-http-signatures-12", + default: "draft-cavage-http-signatures-12" as const, }, ), - { - context: configContext, - key: (config) => - config.lookup?.firstKnock ?? "draft-cavage-http-signatures-12", - default: "draft-cavage-http-signatures-12" as const, - }, - ), - tunnelService: tunnelServiceOption, -}); + tunnelService: createTunnelServiceOption(), + }), + { + authorizedFetch: false as const, + firstKnock: undefined, + tunnelService: undefined, + } as const, +); const traverseOption = object("Traverse options", { traverse: bindConfig( diff --git a/packages/cli/src/options.ts b/packages/cli/src/options.ts index 42ba0e59..50bb3597 100644 --- a/packages/cli/src/options.ts +++ b/packages/cli/src/options.ts @@ -10,9 +10,9 @@ import { message, object, option, + type OptionName, or, string, - valueSet, withDefault, } from "@optique/core"; import { type Config, configContext } from "./config.ts"; @@ -32,25 +32,32 @@ export const TUNNEL_SERVICES = [ export type TunnelService = typeof TUNNEL_SERVICES[number]; /** - * Option for selecting a tunneling service. - * Uses the global `tunnelService` config setting. + * Creates a tunnel service option with customizable option names. */ -export const tunnelServiceOption = bindConfig( - option( - "--tunnel-service", - choice(TUNNEL_SERVICES, { metavar: "SERVICE" }), - { - description: message`The tunneling service to use: ${ - valueSet(TUNNEL_SERVICES) - }.`, - }, - ), - { - context: configContext, - key: (config) => config.tunnelService ?? "localhost.run", - default: "localhost.run" as const, - }, -); +export function createTunnelServiceOption( + optionNames: OptionName[] = ["--tunnel-service"], +) { + // Note that we don't provide a default value here, since the tunneling + // implementation will randomly select a service if none is specified. + return withDefault( + bindConfig( + option( + ...optionNames, + choice(TUNNEL_SERVICES, { metavar: "SERVICE" }), + { + description: message`The tunneling service to use. +By default, any of the supported tunneling services will be used +(randomly selected for each tunnel).`, + }, + ), + { + context: configContext, + key: (config) => config.tunnelService, + }, + ), + undefined, + ); +} /** * Config sections that support the noTunnel option. @@ -83,7 +90,7 @@ export function createTunnelOption(section: S) { default: true, }, ), - tunnelService: tunnelServiceOption, + tunnelService: createTunnelServiceOption(), }); } diff --git a/packages/cli/src/tunnel.ts b/packages/cli/src/tunnel.ts index 264be248..a3e8e1ea 100644 --- a/packages/cli/src/tunnel.ts +++ b/packages/cli/src/tunnel.ts @@ -8,16 +8,12 @@ import { merge, message, object, - option, - optional, - valueSet, } from "@optique/core"; -import { choice } from "@optique/core/valueparser"; import { print, printError } from "@optique/run"; import process from "node:process"; import ora from "ora"; import { configureLogging } from "./log.ts"; -import { type GlobalOptions, TUNNEL_SERVICES } from "./options.ts"; +import { createTunnelServiceOption, type GlobalOptions } from "./options.ts"; export const tunnelCommand = command( "tunnel", @@ -30,21 +26,10 @@ export const tunnelCommand = command( port: argument(integer({ metavar: "PORT", min: 0, max: 65535 }), { description: message`The local port number to expose.`, }), - service: optional( - option( - "-s", - "--service", - "--tunnel-service", - choice(TUNNEL_SERVICES, { - metavar: "SERVICE", - }), - { - description: message`The tunneling service to use: ${ - valueSet(TUNNEL_SERVICES) - }.`, - }, - ), - ), + service: createTunnelServiceOption([ + "-s", + "--service", + ]), }), ), { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3ed9383e..aad4f399 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,14 +49,14 @@ catalogs: specifier: ^1.39.0 version: 1.39.0 '@optique/config': - specifier: ^0.10.4 - version: 0.10.4 + specifier: ^0.10.6 + version: 0.10.6 '@optique/core': - specifier: ^0.10.4 - version: 0.10.4 + specifier: ^0.10.6 + version: 0.10.6 '@optique/run': - specifier: ^0.10.4 - version: 0.10.4 + specifier: ^0.10.6 + version: 0.10.6 '@std/assert': specifier: jsr:^1.0.13 version: 1.0.13 @@ -797,13 +797,13 @@ importers: version: 2.0.0 '@optique/config': specifier: 'catalog:' - version: 0.10.4(@standard-schema/spec@1.0.0) + version: 0.10.6(@standard-schema/spec@1.0.0) '@optique/core': specifier: 'catalog:' - version: 0.10.4 + version: 0.10.6 '@optique/run': specifier: 'catalog:' - version: 0.10.4 + version: 0.10.6 '@poppanator/http-constants': specifier: ^1.1.1 version: 1.1.1 @@ -879,10 +879,10 @@ importers: version: link:../init '@optique/core': specifier: 'catalog:' - version: 0.10.4 + version: 0.10.6 '@optique/run': specifier: 'catalog:' - version: 0.10.4 + version: 0.10.6 es-toolkit: specifier: 'catalog:' version: 1.43.0 @@ -1158,10 +1158,10 @@ importers: version: 2.0.0 '@optique/core': specifier: 'catalog:' - version: 0.10.4 + version: 0.10.6 '@optique/run': specifier: 'catalog:' - version: 0.10.4 + version: 0.10.6 chalk: specifier: 'catalog:' version: 5.6.2 @@ -3668,18 +3668,18 @@ packages: peerDependencies: '@opentelemetry/api': ^1.1.0 - '@optique/config@0.10.4': - resolution: {integrity: sha512-bcMxvSPXhdGJWOmhO/97HCDGCGOUk55YoG/EZeUqNLigkOn4thYIb12KUkZ7sJSOh5/prES19iPX02g8T5RIwQ==} + '@optique/config@0.10.6': + resolution: {integrity: sha512-qfeTO9HL6hmQ40h+DXufoALX8GNBPdbM6Cb0Khm9NqjJY0/jORZz5NIKbg1SFtqdAmWsSH2CAflr7E3Rtw06Kg==} engines: {bun: '>=1.2.0', deno: '>=2.3.0', node: '>=20.0.0'} peerDependencies: '@standard-schema/spec': ^1.1.0 - '@optique/core@0.10.4': - resolution: {integrity: sha512-wvnm7xJ5cwuQ4fx5OZOhyljscFFJYY4VGwAqa7XUlRpoYroZaX/yPMMSWUJg1WdKcSwTyf0hJOWza8EEUZN6qw==} + '@optique/core@0.10.6': + resolution: {integrity: sha512-H/E0oqLm1FVFoAp4a4LH1w0P7hG1LSXRC2kpYqxmHy1rv8pypTjs0il8joK+/GFXRIFCyoEw3Cj0YClw7mZ7RQ==} engines: {bun: '>=1.2.0', deno: '>=2.3.0', node: '>=20.0.0'} - '@optique/run@0.10.4': - resolution: {integrity: sha512-IXsQ0NRq8VA18g6TC0/uBxgUnB92gCaaTXFq7qjhd68UjqnTe/uHMHpjEVdOcQ9otu1wSCnZlISGE8gEgdJvwg==} + '@optique/run@0.10.6': + resolution: {integrity: sha512-MWnB2iOUtahzGXkWZDqvJJR5mt0WtE0ut9A3zUpwB25MjKK2e7MgiLjfTSmCYpWYUxE2Pw2YEvbqUbd64M6Gnw==} engines: {bun: '>=1.2.0', deno: '>=2.3.0', node: '>=20.0.0'} '@oxc-project/runtime@0.75.0': @@ -11216,16 +11216,16 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@optique/config@0.10.4(@standard-schema/spec@1.0.0)': + '@optique/config@0.10.6(@standard-schema/spec@1.0.0)': dependencies: - '@optique/core': 0.10.4 + '@optique/core': 0.10.6 '@standard-schema/spec': 1.0.0 - '@optique/core@0.10.4': {} + '@optique/core@0.10.6': {} - '@optique/run@0.10.4': + '@optique/run@0.10.6': dependencies: - '@optique/core': 0.10.4 + '@optique/core': 0.10.6 '@oxc-project/runtime@0.75.0': {} @@ -13890,8 +13890,8 @@ snapshots: '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3) eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.32.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-react: 7.37.5(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.32.0(jiti@2.5.1)) @@ -13910,8 +13910,8 @@ snapshots: '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.32.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-react: 7.37.5(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.32.0(jiti@2.5.1)) @@ -13934,22 +13934,22 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 - eslint: 8.57.1 + eslint: 9.32.0(jiti@2.5.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.32.0(jiti@2.5.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 @@ -13960,7 +13960,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.1 + eslint: 8.57.1 + get-tsconfig: 4.10.1 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -13975,25 +13990,25 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.32.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3) eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.32.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color @@ -14026,7 +14041,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14037,7 +14052,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14055,7 +14070,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14066,7 +14081,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.3))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a3142566..f6ed203a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -51,9 +51,9 @@ catalog: "@opentelemetry/sdk-node": ^0.211.0 "@opentelemetry/sdk-trace-base": ^2.5.0 "@opentelemetry/semantic-conventions": ^1.39.0 - "@optique/config": ^0.10.4 - "@optique/core": ^0.10.4 - "@optique/run": ^0.10.4 + "@optique/config": ^0.10.6 + "@optique/core": ^0.10.6 + "@optique/run": ^0.10.6 "@std/assert": "jsr:^1.0.13" "@std/async": "jsr:^1.0.13" "@std/path": "jsr:^1.0.6"