Compare commits

..

No commits in common. "main" and "@graphql-hive/cli@0.59.2" have entirely different histories.

20 changed files with 135 additions and 535 deletions

View file

@ -1,5 +0,0 @@
---
'hive': patch
---
add eviction policy to redis

View file

@ -80,56 +80,3 @@ We use changesets for versioning.
- These changesets should have the right amount of informational content for someone to understand
what this change introduces for their self-hosted Hive instance, without going into too much
internal technical detail.
---
## Pull Request Reviewing
### What to Look For
Code that looks wrong in isolation may be correct given surrounding logic—and vice versa. Read the
full file to understand existing patterns, control flow, and error handling.
**Bugs** - Your primary focus.
- Logic errors, off-by-one mistakes, incorrect conditionals
- If-else guards: missing guards, incorrect branching, unreachable code paths
- Edge cases: null/empty/undefined inputs, error conditions, race conditions
- Security issues: injection, auth bypass, data exposure
- Broken error handling that swallows failures, throws unexpectedly or returns error types that are
not caught.
**Structure** - Does the code fit the codebase?
- Does it follow existing patterns and conventions?
- Are there established abstractions it should use but doesn't?
- Excessive nesting that could be flattened with early returns or extraction
**Performance** - Only flag if obviously problematic.
- O(n²) on unbounded data, N+1 queries, blocking I/O on hot paths
**Behavior Changes** - If a behavioral change is introduced, raise it (especially if it's possibly
unintentional).
---
### Before You Flag Something
**Be certain.** If you're going to call something a bug, you need to be confident it actually is
one.
- Only review the changes - do not review pre-existing code that wasn't modified
- Don't flag something as a bug if you're unsure - investigate first
- Don't invent hypothetical problems - if an edge case matters, explain the realistic scenario where
it breaks
- If you need more context to be sure, use the tools below to get it
**Don't be a zealot about style.** When checking code against conventions:
- Verify the code is _actually_ in violation. Don't complain about else statements if early returns
are already being used correctly.
- Some "violations" are acceptable when they're the simplest option.
- Excessive nesting is a legitimate concern regardless of other style choices.
- Don't flag style preferences as issues unless they clearly violate established project
conventions.

View file

@ -1,20 +1,5 @@
# hive
## 11.1.1
### Patch Changes
- [#8044](https://github.com/graphql-hive/console/pull/8044)
[`ce4d445`](https://github.com/graphql-hive/console/commit/ce4d445f3c2a2d214b7c47e35c9a38f4de7c3f0e)
Thanks [@n1ru4l](https://github.com/n1ru4l)! - Address vulnerability
[GHSA-q6x5-8v7m-xcrf](https://github.com/advisories/GHSA-q6x5-8v7m-xcrf),
[GHSA-jvwf-75h9-cwgg](https://github.com/advisories/GHSA-jvwf-75h9-cwgg),
[GHSA-75px-5xx7-5xc7](https://github.com/advisories/GHSA-75px-5xx7-5xc7),
[GHSA-66ff-xgx4-vchm](https://github.com/advisories/GHSA-66ff-xgx4-vchm),
[GHSA-685m-2w69-288q](https://github.com/advisories/GHSA-685m-2w69-288q),
[GHSA-2pr8-phx7-x9h3](https://github.com/advisories/GHSA-2pr8-phx7-x9h3) and
[GHSA-fx83-v9x8-x52w](https://github.com/advisories/GHSA-fx83-v9x8-x52w).
## 11.1.0
### Minor Changes

View file

@ -1,6 +1,6 @@
{
"name": "hive",
"version": "11.1.1",
"version": "11.1.0",
"private": true,
"scripts": {
"generate": "tsx generate.ts",

View file

@ -120,12 +120,6 @@ export class Redis {
args: [
'/opt/bitnami/scripts/redis/run.sh',
`--maxmemory ${memoryInMegabytes}mb`,
// Once Redis reaches maxmemory (90% of the container limit, see above),
// evict the least-recently-used keys instead of failing writes with OOM
// errors (the default `noeviction` behaviour). Everything Hive stores in
// this Redis is a cache / lock / rate-limit entry with a TTL, so evicting
// cold keys is safe and LRU keeps hot keys (locks, fresh counters) around.
'--maxmemory-policy allkeys-lru',
// This disables snapshotting to save cpu and reduce latency spikes
'--save ""',
],

View file

@ -12,10 +12,10 @@
},
"license": "MIT",
"private": true,
"packageManager": "pnpm@10.33.2+sha512.a90faf6feeab71ad6c6e57f94e0fe1a12f5dcc22cd754db40ae9593eb6a3e0b6b12e3540218bb37ae083404b1f2ce6db2a4121e979829b4aff94b99f49da1cf8",
"packageManager": "pnpm@10.18.3+sha512.bbd16e6d7286fd7e01f6b3c0b3c932cda2965c06a908328f74663f10a9aea51f1129eea615134bf992831b009eabe167ecb7008b597f40ff9bc75946aadfb08d",
"engines": {
"node": ">=24.14.1",
"pnpm": ">=10.33.2"
"pnpm": ">=10.16.0"
},
"scripts": {
"build": "pnpm turbo build --filter='@hive/app' --concurrency=1 --color && pnpm turbo build --concurrency=4 --color --filter '!@hive/app'",
@ -165,8 +165,7 @@
"yauzl@2.x.x": "^3.2.1",
"glob@10.x.x": "^10.5.0",
"path-to-regexp@0.x.x": "^0.1.13",
"fast-uri@2.x.x": "3.x.x",
"protobufjs@8.x.x": "^8.0.2"
"fast-uri@2.x.x": "3.x.x"
},
"patchedDependencies": {
"mjml-core@4.14.0": "patches/mjml-core@4.14.0.patch",

View file

@ -1,14 +1,5 @@
# @graphql-hive/laboratory
## 0.1.8
### Patch Changes
- [#8024](https://github.com/graphql-hive/console/pull/8024)
[`0e3ce40`](https://github.com/graphql-hive/console/commit/0e3ce400706c625925161f8d59cc5691380cef07)
Thanks [@mskorokhodov](https://github.com/mskorokhodov)! - Hive laboratory introspection query to
include active tab headers
## 0.1.7
### Patch Changes

View file

@ -1,6 +1,6 @@
{
"name": "@graphql-hive/laboratory",
"version": "0.1.8",
"version": "0.1.7",
"type": "module",
"license": "MIT",
"main": "./dist/hive-laboratory.cjs.js",

View file

@ -19,7 +19,6 @@ import {
ListTreeIcon,
RotateCcwIcon,
SearchIcon,
SettingsIcon,
TextAlignStartIcon,
} from 'lucide-react';
import { toast } from 'sonner';
@ -760,17 +759,7 @@ export const Builder = (props: {
operationName?: string | null;
isReadOnly?: boolean;
}) => {
const {
schema,
activeOperation,
endpoint,
setEndpoint,
defaultEndpoint,
tabs,
addTab,
setActiveTab,
shouldPollSchema,
} = useLaboratory();
const { schema, activeOperation, endpoint, setEndpoint, defaultEndpoint } = useLaboratory();
const [endpointValue, setEndpointValue] = useState<string>(endpoint ?? '');
const [searchValue, setSearchValue] = useState<string>('');
@ -856,45 +845,23 @@ export const Builder = (props: {
return (
<div className="bg-card flex size-full flex-col overflow-hidden">
<div className="flex items-center gap-3 px-3 pt-3">
<div className="flex items-center px-3 pt-3">
<span className="text-base font-medium">Builder</span>
<div className="ml-auto flex items-center gap-3">
{shouldPollSchema && (
<Button
onClick={() => {
const tab =
tabs.find(t => t.type === 'settings') ??
addTab({
type: 'settings',
data: {},
});
setActiveTab(tab);
}}
variant="ghost"
size="sm"
className="p-1! h-6 rounded-sm !px-1.5"
>
<SettingsIcon className="size-4" />
Introspection settings
</Button>
)}
<div className="flex items-center">
<Tooltip>
<TooltipTrigger asChild>
<Button
onClick={() => setOpenPaths([])}
variant="ghost"
size="icon-sm"
className="p-1! size-6 rounded-sm"
disabled={openPaths.length === 0}
>
<CopyMinusIcon className="text-muted-foreground size-4" />
</Button>
</TooltipTrigger>
<TooltipContent>Collapse all</TooltipContent>
</Tooltip>
</div>
<div className="ml-auto flex items-center">
<Tooltip>
<TooltipTrigger asChild>
<Button
onClick={() => setOpenPaths([])}
variant="ghost"
size="icon-sm"
className="p-1! size-6 rounded-sm"
disabled={openPaths.length === 0}
>
<CopyMinusIcon className="text-muted-foreground size-4" />
</Button>
</TooltipTrigger>
<TooltipContent>Collapse all</TooltipContent>
</Tooltip>
</div>
</div>
<div className="px-3 pt-3">

View file

@ -12,7 +12,6 @@ import { OperationDefinitionNode, parse } from 'graphql';
import * as monaco from 'monaco-editor';
import { MonacoGraphQLAPI } from 'monaco-graphql/esm/api.js';
import { initializeMode } from 'monaco-graphql/initializeMode';
import { cn } from '@/lib/utils';
import MonacoEditor, { loader } from '@monaco-editor/react';
import { useLaboratory } from './context';
@ -85,7 +84,7 @@ const darkTheme: monaco.editor.IStandaloneThemeData = {
],
colors: {
'editor.foreground': '#f6f8fa',
'editor.background': '#0f121400',
'editor.background': '#0f1214',
'editor.selectionBackground': '#2A2F34',
'editor.inactiveSelectionBackground': '#2A2F34',
'editor.lineHighlightBackground': '#2A2F34',
@ -355,10 +354,10 @@ const EditorInner = forwardRef<EditorHandle, EditorProps>((props, ref) => {
}
return (
<div className={cn('size-full overflow-hidden', props.className)}>
<div className="size-full overflow-hidden">
<MonacoEditor
{...props}
className="size-full"
{...props}
theme={theme === 'dark' ? 'hive-laboratory-dark' : 'hive-laboratory-light'}
onMount={handleMount}
loading={null}

View file

@ -514,10 +514,15 @@ export const Laboratory = (
const pluginsApi = usePlugins(props);
const testsApi = useTests(props);
const tabsApi = useTabs(props);
const endpointApi = useEndpoint({
...props,
settingsApi,
});
const collectionsApi = useCollections({
...props,
tabsApi,
});
const operationsApi = useOperations({
...props,
collectionsApi,
@ -528,14 +533,6 @@ export const Laboratory = (
pluginsApi,
checkPermissions,
});
const endpointApi = useEndpoint({
...props,
settingsApi,
operationsApi,
envApi,
pluginsApi,
preflightApi,
});
const historyApi = useHistory(props);

View file

@ -1,11 +1,9 @@
import { useEffect } from 'react';
import { z } from 'zod';
import { Editor } from '@/components/laboratory/editor';
import { Input } from '@/components/ui/input';
import { Switch } from '@/components/ui/switch';
import { useForm } from '@tanstack/react-form';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../ui/card';
import { Field, FieldDescription, FieldGroup, FieldLabel } from '../ui/field';
import { Field, FieldGroup, FieldLabel } from '../ui/field';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select';
import { useLaboratory } from './context';
@ -22,8 +20,6 @@ const settingsFormSchema = z.object({
introspection: z.object({
method: z.enum(['GET', 'POST']).optional(),
schemaDescription: z.boolean().optional(),
headers: z.string().optional(),
includeActiveOperationHeaders: z.boolean().optional(),
}),
});
@ -35,17 +31,19 @@ export const Settings = () => {
validators: {
onSubmit: settingsFormSchema,
},
onSubmit: ({ value }) => {
setSettings(value as typeof settings);
},
});
useEffect(() => {
form.store.subscribe(state => {
setSettings(state.currentVal.values);
});
}, [setSettings]);
return (
<div className="bg-card size-full overflow-y-auto p-3">
<form id="settings-form" className="mx-auto flex max-w-2xl flex-col gap-4">
<form
id="settings-form"
onSubmit={form.handleSubmit}
onChange={form.handleSubmit}
className="mx-auto flex max-w-2xl flex-col gap-4"
>
<Card>
<CardHeader>
<CardTitle>Fetch</CardTitle>
@ -222,43 +220,6 @@ export const Settings = () => {
);
}}
</form.Field>
<form.Field name="introspection.headers">
{field => {
return (
<Field>
<FieldLabel htmlFor={field.name}>Headers</FieldLabel>
<Editor
value={field.state.value ?? '{}'}
onChange={field.handleChange}
defaultLanguage="json"
theme="hive-laboratory"
className="bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 h-64 rounded rounded-md border focus-within:ring-[3px]"
/>
</Field>
);
}}
</form.Field>
<form.Field name="introspection.includeActiveOperationHeaders">
{field => {
return (
<Field className="flex-row items-start">
<Switch
className="mt-0.5 !w-8"
checked={field.state.value ?? false}
onCheckedChange={field.handleChange}
/>
<div>
<FieldLabel htmlFor={field.name}>
Include active operation headers
</FieldLabel>
<FieldDescription>
Active operation (tab) headers will be included in the introspection query
</FieldDescription>
</div>
</Field>
);
}}
</form.Field>
</FieldGroup>
</CardContent>
</Card>

View file

@ -93,10 +93,6 @@
--destructive-foreground: var(--hive-laboratory-destructive-foreground, var(--color-neutral-1));
--ring: var(--hive-laboratory-ring, var(--color-ring));
& .monaco-editor {
--vscode-focusBorder: transparent !important;
}
}
.hive-laboratory.dark {

View file

@ -1,17 +1,12 @@
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useCallback, useEffect, useMemo, useState } from 'react';
import {
buildClientSchema,
GraphQLSchema,
introspectionFromSchema,
type IntrospectionQuery,
} from 'graphql';
import { debounce } from 'lodash';
import { toast } from 'sonner';
import { LaboratoryEnv, LaboratoryEnvActions, LaboratoryEnvState } from '@/lib/env';
import { LaboratoryOperationsActions, LaboratoryOperationsState } from '@/lib/operations';
import { handleTemplate } from '@/lib/operations.utils';
import { LaboratoryPluginsActions, LaboratoryPluginsState } from '@/lib/plugins';
import { LaboratoryPreflightActions, LaboratoryPreflightState } from '@/lib/preflight';
// import z from 'zod';
import { asyncInterval } from '@/lib/utils';
import { SubscriptionProtocol, UrlLoader } from '@graphql-tools/url-loader';
import type { LaboratorySettingsActions, LaboratorySettingsState } from './settings';
@ -21,7 +16,6 @@ export interface LaboratoryEndpointState {
schema: GraphQLSchema | null;
introspection: IntrospectionQuery | null;
defaultEndpoint: string | null;
shouldPollSchema: boolean;
}
export interface LaboratoryEndpointActions {
@ -30,17 +24,11 @@ export interface LaboratoryEndpointActions {
restoreDefaultEndpoint: () => void;
}
export const EXPECTED_ERROR_REASON = 'Expected error reason';
export const useEndpoint = (props: {
defaultEndpoint?: string | null;
onEndpointChange?: (endpoint: string | null) => void;
defaultSchemaIntrospection?: IntrospectionQuery | null;
settingsApi?: LaboratorySettingsState & LaboratorySettingsActions;
operationsApi?: LaboratoryOperationsState & LaboratoryOperationsActions;
envApi?: LaboratoryEnvState & LaboratoryEnvActions;
pluginsApi?: LaboratoryPluginsState & LaboratoryPluginsActions;
preflightApi?: LaboratoryPreflightState & LaboratoryPreflightActions;
}): LaboratoryEndpointState & LaboratoryEndpointActions => {
const [endpoint, _setEndpoint] = useState<string | null>(props.defaultEndpoint ?? null);
const [introspection, setIntrospection] = useState<IntrospectionQuery | null>(null);
@ -59,173 +47,75 @@ export const useEndpoint = (props: {
const loader = useMemo(() => new UrlLoader(), []);
const activeOperationHeadersRef = useRef<string | null | undefined>(
props.operationsApi?.activeOperation?.headers,
);
const envVariablesRef = useRef<LaboratoryEnv['variables'] | undefined>(
props.envApi?.env?.variables,
);
const pluginsStateRef = useRef<Record<string, any> | undefined>(props.pluginsApi?.pluginsState);
const fetchSchema = useCallback(
async (signal?: AbortSignal) => {
if (endpoint === props.defaultEndpoint && props.defaultSchemaIntrospection) {
setIntrospection(props.defaultSchemaIntrospection);
return;
}
activeOperationHeadersRef.current = props.operationsApi?.activeOperation?.headers;
envVariablesRef.current = props.envApi?.env?.variables;
pluginsStateRef.current = props.pluginsApi?.pluginsState;
if (!endpoint) {
setIntrospection(null);
return;
}
const fetchSchema = useMemo(
() =>
debounce(
async (
signal?: AbortSignal,
options?: {
env?: LaboratoryEnv;
pluginsState?: Record<string, any>;
},
) => {
if (endpoint === props.defaultEndpoint && props.defaultSchemaIntrospection) {
setIntrospection(props.defaultSchemaIntrospection);
return;
}
try {
const result = await loader.load(endpoint, {
subscriptionsEndpoint: endpoint,
subscriptionsProtocol:
(props.settingsApi?.settings.subscriptions.protocol as SubscriptionProtocol) ??
SubscriptionProtocol.GRAPHQL_SSE,
credentials: props.settingsApi?.settings.fetch.credentials,
specifiedByUrl: true,
directiveIsRepeatable: true,
inputValueDeprecation: true,
retry: props.settingsApi?.settings.fetch.retry,
timeout: props.settingsApi?.settings.fetch.timeout,
useGETForQueries: props.settingsApi?.settings.fetch.useGETForQueries,
exposeHTTPDetailsInExtensions: true,
descriptions: props.settingsApi?.settings.introspection.schemaDescription ?? false,
method: props.settingsApi?.settings.introspection.method ?? 'POST',
fetch: (input: string | URL | Request, init?: RequestInit) =>
fetch(input, {
...init,
signal,
}),
});
if (!endpoint) {
setIntrospection(null);
return;
}
if (result.length === 0) {
throw new Error('Failed to fetch schema');
}
try {
let env = options?.env?.variables ?? envVariablesRef.current ?? {};
let plugins = options?.pluginsState ?? pluginsStateRef.current ?? {};
if (!result[0].schema) {
throw new Error('Failed to fetch schema');
}
let sourceHeaders: Record<string, string> = {};
setIntrospection(introspectionFromSchema(result[0].schema));
} catch (error: unknown) {
if (
error &&
typeof error === 'object' &&
'message' in error &&
typeof error.message === 'string'
) {
toast.error(error.message);
} else {
toast.error('Failed to fetch schema');
}
if (props.settingsApi?.settings.introspection.headers) {
try {
sourceHeaders = JSON.parse(props.settingsApi?.settings.introspection.headers);
} catch {}
}
setIntrospection(null);
if (
props.settingsApi?.settings.introspection.includeActiveOperationHeaders &&
activeOperationHeadersRef.current
) {
try {
sourceHeaders = {
...sourceHeaders,
...JSON.parse(activeOperationHeadersRef.current),
};
} catch {}
}
let stringifiedHeaders = JSON.stringify(sourceHeaders);
if (stringifiedHeaders.includes('{{')) {
try {
const preflightResult = await props.preflightApi?.runPreflight?.(
props.pluginsApi?.plugins ?? [],
props.pluginsApi?.pluginsState ?? {},
);
props?.envApi?.setEnv(preflightResult?.env ?? { variables: {} });
props?.pluginsApi?.setPluginsState(preflightResult?.pluginsState ?? {});
env = preflightResult?.env?.variables ?? {};
plugins = preflightResult?.pluginsState ?? {};
if (preflightResult?.headers) {
stringifiedHeaders = JSON.stringify({
...sourceHeaders,
...preflightResult?.headers,
});
}
} catch (error: unknown) {
toast.error('Failed to run preflight');
}
}
let parsedHeaders: Record<string, string> = {};
try {
parsedHeaders = JSON.parse(
handleTemplate(stringifiedHeaders, {
...env,
plugins,
}),
);
} catch (error: unknown) {
toast.error('Failed to parse headers');
parsedHeaders = {};
}
const result = await loader.load(endpoint, {
subscriptionsEndpoint: endpoint,
subscriptionsProtocol:
(props.settingsApi?.settings.subscriptions.protocol as SubscriptionProtocol) ??
SubscriptionProtocol.GRAPHQL_SSE,
headers: parsedHeaders,
credentials: props.settingsApi?.settings.fetch.credentials,
specifiedByUrl: true,
directiveIsRepeatable: true,
inputValueDeprecation: true,
retry: props.settingsApi?.settings.fetch.retry,
timeout: props.settingsApi?.settings.fetch.timeout,
useGETForQueries: props.settingsApi?.settings.fetch.useGETForQueries,
exposeHTTPDetailsInExtensions: true,
descriptions: props.settingsApi?.settings.introspection.schemaDescription ?? false,
method: props.settingsApi?.settings.introspection.method ?? 'POST',
fetch: (input: string | URL | Request, init?: RequestInit) =>
fetch(input, {
...init,
signal,
}),
});
if (result.length === 0) {
throw new Error('Failed to fetch schema');
}
if (!result[0].schema) {
throw new Error('Failed to fetch schema');
}
setIntrospection(introspectionFromSchema(result[0].schema));
} catch (error: unknown) {
if (
error &&
typeof error === 'object' &&
'message' in error &&
typeof error.message === 'string'
) {
if (error.message === EXPECTED_ERROR_REASON) {
return;
}
toast.error(error.message);
} else {
toast.error('Failed to fetch schema');
}
setIntrospection(null);
throw error;
}
},
500,
),
throw error;
}
},
[
endpoint,
props.settingsApi?.settings.fetch.timeout,
props.settingsApi?.settings.introspection.method,
props.settingsApi?.settings.introspection.schemaDescription,
props.settingsApi?.settings.introspection.headers,
props.settingsApi?.settings.introspection.includeActiveOperationHeaders,
],
);
useEffect(() => {
return () => {
fetchSchema.cancel();
};
}, [fetchSchema]);
const shouldPollSchema = useMemo(() => {
return endpoint !== props.defaultEndpoint || !props.defaultSchemaIntrospection;
}, [endpoint, props.defaultEndpoint, props.defaultSchemaIntrospection]);
@ -242,7 +132,7 @@ export const useEndpoint = (props: {
try {
await fetchSchema(intervalController.signal);
} catch {
intervalController.abort(new Error('Aborted because of schema polling error'));
intervalController.abort('Polling schema failed');
}
},
5000,
@ -250,7 +140,7 @@ export const useEndpoint = (props: {
);
return () => {
intervalController.abort(new Error(EXPECTED_ERROR_REASON));
intervalController.abort('Polling schema aborted');
};
}, [shouldPollSchema, fetchSchema]);
@ -262,38 +152,10 @@ export const useEndpoint = (props: {
useEffect(() => {
if (endpoint && !shouldPollSchema) {
const abortController = new AbortController();
void fetchSchema(abortController.signal);
return () => {
abortController.abort(new Error(EXPECTED_ERROR_REASON));
};
void fetchSchema();
}
}, [endpoint, fetchSchema, shouldPollSchema]);
useEffect(() => {
if (!endpoint || !shouldPollSchema) {
return;
}
const abortController = new AbortController();
void fetchSchema(abortController.signal, {
env: props.envApi?.env ?? undefined,
pluginsState: props.pluginsApi?.pluginsState,
});
return () => {
abortController.abort(new Error(EXPECTED_ERROR_REASON));
};
}, [
endpoint,
shouldPollSchema,
fetchSchema,
props.settingsApi?.settings.introspection.headers,
props.settingsApi?.settings.introspection.includeActiveOperationHeaders,
]);
return {
endpoint,
setEndpoint,
@ -302,6 +164,5 @@ export const useEndpoint = (props: {
fetchSchema,
restoreDefaultEndpoint,
defaultEndpoint: props.defaultEndpoint ?? null,
shouldPollSchema,
};
};

View file

@ -13,8 +13,6 @@ export type LaboratorySettings = {
introspection: {
method?: 'GET' | 'POST';
schemaDescription?: boolean;
headers?: string;
includeActiveOperationHeaders?: boolean;
};
};
@ -31,8 +29,6 @@ export const defaultLaboratorySettings: LaboratorySettings = {
introspection: {
method: 'POST',
schemaDescription: false,
headers: '',
includeActiveOperationHeaders: false,
},
};
@ -54,10 +50,6 @@ export const normalizeLaboratorySettings = (
schemaDescription:
settings?.introspection?.schemaDescription ??
defaultLaboratorySettings.introspection.schemaDescription,
headers: settings?.introspection?.headers ?? defaultLaboratorySettings.introspection.headers,
includeActiveOperationHeaders:
settings?.introspection?.includeActiveOperationHeaders ??
defaultLaboratorySettings.introspection.includeActiveOperationHeaders,
},
});

View file

@ -1,18 +1,5 @@
# @graphql-yoga/render-graphiql
## 0.1.8
### Patch Changes
- [#8024](https://github.com/graphql-hive/console/pull/8024)
[`0e3ce40`](https://github.com/graphql-hive/console/commit/0e3ce400706c625925161f8d59cc5691380cef07)
Thanks [@mskorokhodov](https://github.com/mskorokhodov)! - Hive laboratory introspection query to
include active tab headers
- Updated dependencies
[[`0e3ce40`](https://github.com/graphql-hive/console/commit/0e3ce400706c625925161f8d59cc5691380cef07)]:
- @graphql-hive/laboratory@0.1.8
## 0.1.7
### Patch Changes

View file

@ -1,6 +1,6 @@
{
"name": "@graphql-hive/render-laboratory",
"version": "0.1.8",
"version": "0.1.7",
"type": "module",
"description": "",
"repository": {

View file

@ -749,7 +749,7 @@ const BreakingChanges = (props: {
</CardDescription>
<CardDescription>
<DocsLink
href="/schema-registry/management/targets#dangerous-changes"
href="/management/targets#dangerous-changes"
className="text-neutral-10 hover:text-neutral-11"
>
Learn more

View file

@ -41,7 +41,6 @@ overrides:
glob@10.x.x: ^10.5.0
path-to-regexp@0.x.x: ^0.1.13
fast-uri@2.x.x: 3.x.x
protobufjs@8.x.x: ^8.0.2
patchedDependencies:
'@apollo/federation@0.38.1':
@ -5366,79 +5365,67 @@ packages:
resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@img/sharp-libvips-linux-arm@1.0.5':
resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
cpu: [arm]
os: [linux]
libc: [glibc]
'@img/sharp-libvips-linux-s390x@1.0.4':
resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@img/sharp-libvips-linux-x64@1.0.4':
resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
cpu: [x64]
os: [linux]
libc: [musl]
'@img/sharp-linux-arm64@0.33.5':
resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@img/sharp-linux-arm@0.33.5':
resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
libc: [glibc]
'@img/sharp-linux-s390x@0.33.5':
resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@img/sharp-linux-x64@0.33.5':
resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@img/sharp-linuxmusl-arm64@0.33.5':
resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@img/sharp-linuxmusl-x64@0.33.5':
resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@img/sharp-wasm32@0.33.5':
resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
@ -6778,42 +6765,36 @@ packages:
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
libc: [glibc]
'@parcel/watcher-linux-arm-musl@2.5.1':
resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
libc: [musl]
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
'@parcel/watcher-win32-arm64@2.5.1':
resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
@ -6898,9 +6879,6 @@ packages:
'@protobufjs/codegen@2.0.4':
resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
'@protobufjs/codegen@2.0.5':
resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==}
'@protobufjs/eventemitter@1.1.0':
resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
@ -6913,17 +6891,14 @@ packages:
'@protobufjs/inquire@1.1.0':
resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
'@protobufjs/inquire@1.1.1':
resolution: {integrity: sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==}
'@protobufjs/path@1.1.2':
resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
'@protobufjs/pool@1.1.0':
resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
'@protobufjs/utf8@1.1.1':
resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==}
'@protobufjs/utf8@1.1.0':
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
'@pulumi/aws@7.12.0':
resolution: {integrity: sha512-uVrfb8PsWyGl3W3hUrnp/RipU5OQQr/5EcxZaT1qmbaHsiCo2yzv3v4/0uxq3uFnhFo4B1EjiFe2lENfTZP3mQ==}
@ -8399,28 +8374,24 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-arm64-musl@1.0.0-beta.41':
resolution: {integrity: sha512-MioXcCIX/wB1pBnBoJx8q4OGucUAfC1+/X1ilKFsjDK05VwbLZGRgOVD5OJJpUQPK86DhQciNBrfOKDiatxNmg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rolldown/binding-linux-x64-gnu@1.0.0-beta.41':
resolution: {integrity: sha512-m66M61fizvRCwt5pOEiZQMiwBL9/y0bwU/+Kc4Ce/Pef6YfoEkR28y+DzN9rMdjo8Z28NXjsDPq9nH4mXnAP0g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-x64-musl@1.0.0-beta.41':
resolution: {integrity: sha512-yRxlSfBvWnnfrdtJfvi9lg8xfG5mPuyoSHm0X01oiE8ArmLRvoJGHUTJydCYz+wbK2esbq5J4B4Tq9WAsOlP1Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@rolldown/binding-openharmony-arm64@1.0.0-beta.41':
resolution: {integrity: sha512-PHVxYhBpi8UViS3/hcvQQb9RFqCtvFmFU1PvUoTRiUdBtgHA6fONNHU4x796lgzNlVSD3DO/MZNk1s5/ozSMQg==}
@ -8534,79 +8505,66 @@ packages:
resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
cpu: [arm]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.59.0':
resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
cpu: [arm]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.59.0':
resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.59.0':
resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.59.0':
resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
cpu: [loong64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.59.0':
resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
cpu: [loong64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-ppc64-gnu@4.59.0':
resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.59.0':
resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
cpu: [ppc64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.59.0':
resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.59.0':
resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.59.0':
resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.59.0':
resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.59.0':
resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
cpu: [x64]
os: [linux]
libc: [musl]
'@rollup/rollup-openbsd-x64@4.59.0':
resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
@ -9430,28 +9388,24 @@ packages:
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@swc/core-linux-arm64-musl@1.13.5':
resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@swc/core-linux-x64-gnu@1.13.5':
resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@swc/core-linux-x64-musl@1.13.5':
resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [musl]
'@swc/core-win32-arm64-msvc@1.13.5':
resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==}
@ -9542,28 +9496,24 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
@ -10444,49 +10394,41 @@ packages:
resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-arm64-musl@1.11.1':
resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-x64-gnu@1.11.1':
resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-x64-musl@1.11.1':
resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
cpu: [x64]
os: [linux]
libc: [musl]
'@unrs/resolver-binding-wasm32-wasi@1.11.1':
resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
@ -14683,56 +14625,48 @@ packages:
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
lightningcss-linux-arm64-gnu@1.31.1:
resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
lightningcss-linux-arm64-musl@1.31.1:
resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
lightningcss-linux-x64-gnu@1.31.1:
resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
lightningcss-linux-x64-musl@1.31.1:
resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
lightningcss-win32-arm64-msvc@1.30.2:
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
@ -16594,12 +16528,12 @@ packages:
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
protobufjs@7.5.8:
resolution: {integrity: sha512-dvpCIeLPbXZS/Ete7yLaO7RenOdken2NHKykBXbsaGxZT0UTltcarBciw+A78SRQs9iMAAVpsYA+l8b1hTePIA==}
protobufjs@7.5.5:
resolution: {integrity: sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==}
engines: {node: '>=12.0.0'}
protobufjs@8.2.0:
resolution: {integrity: sha512-oI+GC9iPxrQEr6wragljFKH46/r3rNsm6eg7F2fp6kBUMnf6/mesDRdBuF4gK+OyaKJ8N4C1B9s9cCeYdqFikg==}
protobufjs@8.0.1:
resolution: {integrity: sha512-NWWCCscLjs+cOKF/s/XVNFRW7Yih0fdH+9brffR5NZCy8k42yRdl5KlWKMVXuI1vfCoy4o1z80XR/W/QUb3V3w==}
engines: {node: '>=12.0.0'}
proxy-addr@2.0.7:
@ -19282,7 +19216,7 @@ snapshots:
'@protobufjs/inquire': 1.1.0
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.1
'@protobufjs/utf8': 1.1.0
'@types/long': 4.0.2
'@types/node': 10.17.60
long: 4.0.0
@ -19298,7 +19232,7 @@ snapshots:
'@protobufjs/inquire': 1.1.0
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.1
'@protobufjs/utf8': 1.1.0
'@types/long': 4.0.2
long: 4.0.0
@ -25000,14 +24934,14 @@ snapshots:
dependencies:
lodash.camelcase: 4.3.0
long: 5.2.3
protobufjs: 7.5.8
protobufjs: 7.5.5
yargs: 17.7.2
'@grpc/proto-loader@0.8.1':
dependencies:
lodash.camelcase: 4.3.0
long: 5.2.3
protobufjs: 7.5.8
protobufjs: 7.5.5
yargs: 17.7.2
'@hapi/address@5.1.1':
@ -26876,7 +26810,7 @@ snapshots:
'@opentelemetry/sdk-logs': 0.217.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-metrics': 2.7.1(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.7.1(@opentelemetry/api@1.9.1)
protobufjs: 8.2.0
protobufjs: 8.0.1
'@opentelemetry/propagator-b3@1.30.0(@opentelemetry/api@1.9.0)':
dependencies:
@ -27190,26 +27124,22 @@ snapshots:
'@protobufjs/codegen@2.0.4': {}
'@protobufjs/codegen@2.0.5': {}
'@protobufjs/eventemitter@1.1.0': {}
'@protobufjs/fetch@1.1.0':
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/inquire': 1.1.1
'@protobufjs/inquire': 1.1.0
'@protobufjs/float@1.0.2': {}
'@protobufjs/inquire@1.1.0': {}
'@protobufjs/inquire@1.1.1': {}
'@protobufjs/path@1.1.2': {}
'@protobufjs/pool@1.1.0': {}
'@protobufjs/utf8@1.1.1': {}
'@protobufjs/utf8@1.1.0': {}
'@pulumi/aws@7.12.0(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@24.12.2)(typescript@5.7.3))(typescript@5.7.3)':
dependencies:
@ -30507,7 +30437,7 @@ snapshots:
'@typescript-eslint/parser': 7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3)
eslint: 8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)
eslint-config-prettier: 9.1.2(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
eslint-plugin-jsonc: 2.19.1(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
@ -33165,7 +33095,7 @@ snapshots:
'@grpc/grpc-js': 1.12.5
'@grpc/proto-loader': 0.7.13
docker-modem: 5.0.6
protobufjs: 7.5.8
protobufjs: 7.5.5
tar-fs: 2.1.4
uuid: 10.0.0
transitivePeerDependencies:
@ -33555,7 +33485,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)):
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3(supports-color@8.1.1)
@ -33594,14 +33524,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)):
eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)):
dependencies:
debug: 3.2.7(supports-color@8.1.1)
optionalDependencies:
'@typescript-eslint/parser': 7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3)
eslint: 8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
transitivePeerDependencies:
- supports-color
@ -33644,7 +33574,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))(typescript@5.7.3))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0)))(eslint@8.57.1(patch_hash=08d9d41d21638cb74d0f9f34877a8839601a4e5a8263066ff23e7032addbcba0))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@ -38677,23 +38607,33 @@ snapshots:
proto-list@1.2.4: {}
protobufjs@7.5.8:
protobufjs@7.5.5:
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/base64': 1.1.2
'@protobufjs/codegen': 2.0.5
'@protobufjs/codegen': 2.0.4
'@protobufjs/eventemitter': 1.1.0
'@protobufjs/fetch': 1.1.0
'@protobufjs/float': 1.0.2
'@protobufjs/inquire': 1.1.1
'@protobufjs/inquire': 1.1.0
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.1
'@protobufjs/utf8': 1.1.0
'@types/node': 24.12.2
long: 5.2.3
protobufjs@8.2.0:
protobufjs@8.0.1:
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/base64': 1.1.2
'@protobufjs/codegen': 2.0.4
'@protobufjs/eventemitter': 1.1.0
'@protobufjs/fetch': 1.1.0
'@protobufjs/float': 1.0.2
'@protobufjs/inquire': 1.1.0
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
'@types/node': 24.12.2
long: 5.2.3

View file

@ -11,14 +11,3 @@ packages:
- scripts
- rules
- load-tests/otel-traces
minimumReleaseAge: 1440
minimumReleaseAgeExclude:
- 'envelop'
- '@envelop/*'
- 'graphql-yoga'
- '@graphql-yoga/*'
- 'graphql-hive/*'
- '@graphql-inspector/*'
- '@graphql-tools/*'
- '@theguild/federation-composition'