diff --git a/internal/heapsnapshot/src/HeapSnapshotLoader.ts b/internal/heapsnapshot/src/HeapSnapshotLoader.ts index e3517af49..248c0c34a 100644 --- a/internal/heapsnapshot/src/HeapSnapshotLoader.ts +++ b/internal/heapsnapshot/src/HeapSnapshotLoader.ts @@ -29,6 +29,7 @@ */ import { MessagePort } from 'node:worker_threads'; +import { fakePromise } from '@whatwg-node/promise-helpers'; import { HeapSnapshotProgress, JSHeapSnapshot, @@ -166,7 +167,7 @@ export class HeapSnapshotLoader { // sequentially. This means it's fine to stash away a single #dataCallback // instead of an array of them. if (this.#buffer.length > 0) { - return Promise.resolve(this.#buffer.shift() as string); + return fakePromise(this.#buffer.shift() as string); } const { promise, resolve } = diff --git a/internal/proc/src/index.ts b/internal/proc/src/index.ts index 5cbc47e74..f91550a75 100644 --- a/internal/proc/src/index.ts +++ b/internal/proc/src/index.ts @@ -2,7 +2,7 @@ import childProcess from 'child_process'; import fs from 'fs/promises'; import path from 'path'; import { setTimeout } from 'timers/promises'; -import { createDeferred } from '@graphql-tools/utils'; +import { createDeferred, fakePromise } from '@graphql-tools/utils'; import { hostnames, isDebug, trimError } from '@internal/testing'; import { DisposableSymbols } from '@whatwg-node/disposablestack'; import { fetch } from '@whatwg-node/fetch'; @@ -127,7 +127,7 @@ export function spawn( [DisposableSymbols.asyncDispose]: async () => { if (exited) { // there's nothing to dispose since the process already exitted (error or not) - return Promise.resolve(); + return fakePromise(); } if (child.pid) { await terminate(child.pid); diff --git a/package.json b/package.json index f78613c6d..82528accf 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "@yarnpkg/cli": "4.10.3", "@yarnpkg/core": "4.4.4", "@yarnpkg/plugin-pack": "4.0.3", - "bun": "1.2.23", + "bun": "1.3.0", "cross-env": "10.1.0", "eslint": "9.38.0", "eslint-plugin-import": "2.32.0", diff --git a/packages/executors/http/tests/handleEventStreamResponse.test.ts b/packages/executors/http/tests/handleEventStreamResponse.test.ts index 9b51b7f1a..440cd8bfd 100644 --- a/packages/executors/http/tests/handleEventStreamResponse.test.ts +++ b/packages/executors/http/tests/handleEventStreamResponse.test.ts @@ -140,7 +140,7 @@ describe('handleEventStreamResponse', () => { ); const iterator = asyncIterable[Symbol.asyncIterator](); - Promise.resolve().then(() => { + queueMicrotask(() => { ctrl.abort(); // we abort readableStream.cancel(); // then cancel // so that the error reported is the abort error @@ -188,7 +188,7 @@ describe('handleEventStreamResponse', () => { const iterator = asyncIterable[Symbol.asyncIterator](); const originalError = new Error('Oops!'); - Promise.resolve().then(() => { + queueMicrotask(() => { readableStream.cancel(originalError); // this will throw in reader.read() }); diff --git a/packages/fusion-runtime/tests/polling.test.ts b/packages/fusion-runtime/tests/polling.test.ts index cb7f7ab43..fcbbc3078 100644 --- a/packages/fusion-runtime/tests/polling.test.ts +++ b/packages/fusion-runtime/tests/polling.test.ts @@ -330,7 +330,7 @@ describe('Polling', () => { ); } makeQuery(10_000); - await advanceTimersByTimeAsync(10_000); + await advanceTimersByTimeAsync(10_500); makeQuery(0); expect(callTimes).toHaveLength(2); // It can be 0 or 1 or any one-digit number diff --git a/packages/gateway/package.json b/packages/gateway/package.json index b063a8df2..6fa64dda9 100644 --- a/packages/gateway/package.json +++ b/packages/gateway/package.json @@ -141,11 +141,11 @@ "@rollup/plugin-sucrase": "^5.0.2", "@tsconfig/node18": "^18.2.4", "@types/adm-zip": "^0.5.5", - "@types/bun": "1.2.23", + "@types/bun": "1.3.0", "@types/ws": "^8.5.12", "@whatwg-node/fetch": "^0.10.11", "adm-zip": "^0.5.15", - "bun": "^1.2.23", + "bun": "^1.3.0", "graphql": "^16.9.0", "parse-duration": "^2.0.0", "pkgroll": "2.20.1", diff --git a/packages/gateway/src/servers/bun.ts b/packages/gateway/src/servers/bun.ts index 628838a67..dc647d9f1 100644 --- a/packages/gateway/src/servers/bun.ts +++ b/packages/gateway/src/servers/bun.ts @@ -1,5 +1,8 @@ -import { getGraphQLWSOptions } from '@graphql-hive/gateway-runtime'; -import type { Server, TLSServeOptions, WebSocketServeOptions } from 'bun'; +import { + DisposableSymbols, + getGraphQLWSOptions, +} from '@graphql-hive/gateway-runtime'; +import type { Server, WebSocketOptions } from 'bun'; import type { Extra } from 'graphql-ws/use/bun'; import { defaultOptions, GatewayRuntime } from '..'; import type { ServerForRuntimeOptions } from './types'; @@ -8,7 +11,7 @@ export async function startBunServer>( gwRuntime: GatewayRuntime, opts: ServerForRuntimeOptions, ): Promise { - const serverOptions: TLSServeOptions & Partial = { + const serverOptions: Bun.Serve.Options<{}> & Partial = { fetch: gwRuntime, port: opts.port || defaultOptions.port, hostname: opts.host || defaultOptions.host, @@ -16,28 +19,30 @@ export async function startBunServer>( idleTimeout: opts.requestTimeout, }; if (opts.sslCredentials) { + const tlsOptions: Bun.TLSOptions = {}; if (opts.sslCredentials.ca_file_name) { - serverOptions.ca = Bun.file(opts.sslCredentials.ca_file_name); + tlsOptions.ca = Bun.file(opts.sslCredentials.ca_file_name); } if (opts.sslCredentials.cert_file_name) { - serverOptions.cert = Bun.file(opts.sslCredentials.cert_file_name); + tlsOptions.cert = Bun.file(opts.sslCredentials.cert_file_name); } if (opts.sslCredentials.dh_params_file_name) { - serverOptions.dhParamsFile = opts.sslCredentials.dh_params_file_name; + tlsOptions.dhParamsFile = opts.sslCredentials.dh_params_file_name; } if (opts.sslCredentials.key_file_name) { - serverOptions.key = Bun.file(opts.sslCredentials.key_file_name); + tlsOptions.key = Bun.file(opts.sslCredentials.key_file_name); } if (opts.sslCredentials.passphrase) { - serverOptions.passphrase = opts.sslCredentials.passphrase; + tlsOptions.passphrase = opts.sslCredentials.passphrase; } if (opts.sslCredentials.ssl_ciphers) { // TODO: Check if there is a correct way to set ciphers } if (opts.sslCredentials.ssl_prefer_low_memory_usage) { - serverOptions.lowMemoryMode = + tlsOptions.lowMemoryMode = opts.sslCredentials.ssl_prefer_low_memory_usage; } + serverOptions.tls = tlsOptions; } if (!opts.disableWebsockets) { const { makeHandler } = await import('graphql-ws/use/bun'); @@ -47,7 +52,7 @@ export async function startBunServer>( ...(ctx.extra.socket.data || {}), })), ); - serverOptions.fetch = function (request: Request, server: Server) { + serverOptions.fetch = function (request: Request, server: Server<{}>) { // header to check if websocket if ( request.headers.has('Sec-WebSocket-Key') && @@ -65,5 +70,5 @@ export async function startBunServer>( } const server = Bun.serve(serverOptions); opts.log.info(`Listening on ${server.url}`); - gwRuntime.disposableStack.use(server); + gwRuntime.disposableStack.defer(() => server[DisposableSymbols.dispose]()); } diff --git a/packages/plugins/opentelemetry/tests/useOpenTelemetry.spec.ts b/packages/plugins/opentelemetry/tests/useOpenTelemetry.spec.ts index 0e259b9b5..81397e598 100644 --- a/packages/plugins/opentelemetry/tests/useOpenTelemetry.spec.ts +++ b/packages/plugins/opentelemetry/tests/useOpenTelemetry.spec.ts @@ -865,7 +865,6 @@ describe('useOpenTelemetry', () => { const operationSpan = spanExporter.spans.find(({ name }) => name.startsWith('graphql.operation'), ); - expect(httpSpan.attributes['gateway.cache.response_cache']).toBe( attrs.http, ); @@ -1198,7 +1197,7 @@ describe('useOpenTelemetry', () => { it('should have all attributes required by Hive Tracing', async () => { await using gateway = await buildTestGateway({ - fetch: () => () => Promise.resolve(new Response(null, { status: 500 })), + fetch: () => () => new Response(null, { status: 500 }), }); await gateway.query({ shouldReturnErrors: true, diff --git a/packages/plugins/opentelemetry/tests/utils.ts b/packages/plugins/opentelemetry/tests/utils.ts index 8825a71fa..d4c8dd3a3 100644 --- a/packages/plugins/opentelemetry/tests/utils.ts +++ b/packages/plugins/opentelemetry/tests/utils.ts @@ -27,6 +27,7 @@ import { type TracerConfig, } from '@opentelemetry/sdk-trace-base'; import { AsyncDisposableStack } from '@whatwg-node/disposablestack'; +import { fakePromise } from '@whatwg-node/promise-helpers'; import { createSchema, createYoga, type GraphQLParams } from 'graphql-yoga'; import { expect } from 'vitest'; import { hive } from '../src/api'; @@ -182,11 +183,11 @@ export class MockSpanExporter implements SpanExporter { } shutdown() { this.reset(); - return Promise.resolve(); + return fakePromise(); } forceFlush() { this.reset(); - return Promise.resolve(); + return fakePromise(); } reset() { this.spans = []; @@ -352,12 +353,12 @@ export class MockLogRecordExporter implements LogRecordExporter { shutdown(): Promise { this.reset(); - return Promise.resolve(); + return fakePromise(); } forceFlush(): Promise { this.reset(); - return Promise.resolve(); + return fakePromise(); } reset() { diff --git a/packages/pubsub/src/mem.ts b/packages/pubsub/src/mem.ts index 59581e1e1..9f2116120 100644 --- a/packages/pubsub/src/mem.ts +++ b/packages/pubsub/src/mem.ts @@ -1,6 +1,6 @@ import { Repeater } from '@repeaterjs/repeater'; import { DisposableSymbols } from '@whatwg-node/disposablestack'; -import { type MaybePromise } from '@whatwg-node/promise-helpers'; +import { fakePromise, type MaybePromise } from '@whatwg-node/promise-helpers'; import { PubSub, PubSubListener, TopicDataMap } from './pubsub'; /** In-memory {@link PubSub} implementation. */ @@ -53,13 +53,14 @@ export class MemPubSub } if (!listener) { - return new Repeater(async (push, stop) => { + return new Repeater((push, stop) => { listeners.set(push, stop); - await stop; - listeners.delete(push); - if (listeners.size === 0) { - this.#subscribers.delete(topic); - } + return stop.then(() => { + listeners.delete(push); + if (listeners.size === 0) { + this.#subscribers.delete(topic); + } + }); }); } @@ -88,6 +89,6 @@ export class MemPubSub } [DisposableSymbols.asyncDispose]() { - return Promise.resolve(this.dispose()); + return fakePromise(this.dispose()); } } diff --git a/packages/pubsub/tests/pubsub.test.ts b/packages/pubsub/tests/pubsub.test.ts index 469e3cc6c..ca539ac50 100644 --- a/packages/pubsub/tests/pubsub.test.ts +++ b/packages/pubsub/tests/pubsub.test.ts @@ -2,7 +2,10 @@ import { setTimeout } from 'timers/promises'; import { Container, createTenv } from '@internal/e2e'; import { connect as natsConnect } from '@nats-io/transport-node'; import { crypto } from '@whatwg-node/fetch'; -import { createDeferredPromise } from '@whatwg-node/promise-helpers'; +import { + createDeferredPromise, + fakePromise, +} from '@whatwg-node/promise-helpers'; import Redis from 'ioredis'; import LeakDetector from 'jest-leak-detector'; import { beforeAll, describe, expect, it, vi } from 'vitest'; @@ -59,7 +62,7 @@ for (const PubSub of PubSubCtors) { function flush(ms: number = 100) { if (PubSub === MemPubSub) { // MemPubSub is synchronous, no need to wait - return Promise.resolve(); + return fakePromise(); } return setTimeout(ms); } diff --git a/packages/runtime/tests/gateway-runtime.spec.ts b/packages/runtime/tests/gateway-runtime.spec.ts index 6c5ac462f..73f5c9c3d 100644 --- a/packages/runtime/tests/gateway-runtime.spec.ts +++ b/packages/runtime/tests/gateway-runtime.spec.ts @@ -3,9 +3,10 @@ import restTransport from '@graphql-mesh/transport-rest'; import { KeyValueCache, Logger } from '@graphql-mesh/types'; import { createDeferred, + fakePromise, printSchemaWithDirectives, } from '@graphql-tools/utils'; -import { isDebug } from '@internal/testing'; +import { fakeRejectPromise, isDebug } from '@internal/testing'; import { loadOpenAPISubgraph } from '@omnigraph/openapi'; import { DisposableSymbols } from '@whatwg-node/disposablestack'; import { createRouter, Response, Type } from 'fets'; @@ -310,16 +311,16 @@ describe('Gateway Runtime', () => { function createCache(cachedSupergraph?: string) { return { get: vi.fn((_key) => { - return Promise.resolve(cachedSupergraph); + return fakePromise(cachedSupergraph); }), set: vi.fn((_key, _value, _options) => { - return Promise.resolve(); + return fakePromise(); }), delete() { - return Promise.reject('noop'); + return fakeRejectPromise('noop'); }, getKeysByPrefix() { - return Promise.reject('noop'); + return fakeRejectPromise('noop'); }, } satisfies KeyValueCache; } diff --git a/packages/runtime/tests/graphos.test.ts b/packages/runtime/tests/graphos.test.ts index f4eaab545..10b035a4e 100644 --- a/packages/runtime/tests/graphos.test.ts +++ b/packages/runtime/tests/graphos.test.ts @@ -6,6 +6,7 @@ import { import { LegacyLogger, Logger } from '@graphql-hive/logger'; import { TransportContext } from '@graphql-mesh/transport-common'; import { Response } from '@whatwg-node/fetch'; +import { fakePromise } from '@whatwg-node/promise-helpers'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { createGraphOSFetcher } from '../src/fetchers/graphos'; @@ -21,7 +22,7 @@ describe('GraphOS', () => { it('should fetch the supergraph SDL', async () => { const { unifiedGraphFetcher } = createTestFetcher({ fetch: mockSDL }); - const result = Promise.resolve().then(() => unifiedGraphFetcher()); + const result = unifiedGraphFetcher(); await advanceTimersByTimeAsync(1_000); expect(await result).toBe(supergraphSdl); }); @@ -38,7 +39,7 @@ describe('GraphOS', () => { }, }); - const result = Promise.resolve().then(() => unifiedGraphFetcher()); + const result = unifiedGraphFetcher(); for (let i = 0; i < 3; i++) { await advanceTimersByTimeAsync(1_000); } @@ -52,7 +53,7 @@ describe('GraphOS', () => { { maxRetries: 3 }, ); - const result = Promise.resolve() + const result = fakePromise() .then(() => unifiedGraphFetcher()) .catch((err) => err); for (let i = 0; i < 3; i++) { @@ -68,7 +69,7 @@ describe('GraphOS', () => { { maxRetries: 3 }, ); - const result = Promise.resolve() + const result = fakePromise() .then(() => unifiedGraphFetcher()) .catch(() => {}); await advanceTimersByTimeAsync(25); @@ -85,12 +86,12 @@ describe('GraphOS', () => { it('should respect min-delay between polls', async () => { const { unifiedGraphFetcher } = createTestFetcher({ fetch: mockSDL }); - Promise.resolve().then(() => unifiedGraphFetcher()); + unifiedGraphFetcher(); await advanceTimersByTimeAsync(20); expect(mockSDL).toHaveBeenCalledTimes(1); await advanceTimersByTimeAsync(20); expect(mockSDL).toHaveBeenCalledTimes(1); - Promise.resolve().then(() => unifiedGraphFetcher()); + unifiedGraphFetcher(); await advanceTimersByTimeAsync(20); expect(mockSDL).toHaveBeenCalledTimes(1); await advanceTimersByTimeAsync(50); @@ -108,19 +109,19 @@ describe('GraphOS', () => { return mockSDL(); }, }); - const result1 = Promise.resolve().then(() => unifiedGraphFetcher()); + const result1 = unifiedGraphFetcher(); await advanceTimersByTimeAsync(1_000); - const result2 = Promise.resolve().then(() => unifiedGraphFetcher()); + const result2 = unifiedGraphFetcher(); await advanceTimersByTimeAsync(1_000); expect(await result1).toBe(await result2); }, 30_000); it('should not wait if min delay is superior to polling interval', async () => { const { unifiedGraphFetcher } = createTestFetcher({ fetch: mockSDL }); - const result = Promise.resolve().then(() => unifiedGraphFetcher()); + const result = unifiedGraphFetcher(); await advanceTimersByTimeAsync(1_000); await result; - const result2 = Promise.resolve().then(() => unifiedGraphFetcher()); + const result2 = unifiedGraphFetcher(); await advanceTimersByTimeAsync(1_000); expect(await result).toBe(await result2); }); @@ -147,9 +148,9 @@ describe('GraphOS', () => { }, }); - const result = Promise.resolve().then(() => unifiedGraphFetcher()); + const result = unifiedGraphFetcher(); await advanceTimersByTimeAsync(1_000); - const result2 = Promise.resolve().then(() => unifiedGraphFetcher()); + const result2 = unifiedGraphFetcher(); await advanceTimersByTimeAsync(1_000); expect(await result).toBe(await result2); }); diff --git a/packages/stitch/tests/errors.test.ts b/packages/stitch/tests/errors.test.ts index 405695f0d..cdd6b7830 100644 --- a/packages/stitch/tests/errors.test.ts +++ b/packages/stitch/tests/errors.test.ts @@ -6,6 +6,7 @@ import { ExecutionResult, Executor, } from '@graphql-tools/utils'; +import { fakeRejectPromise } from '@whatwg-node/promise-helpers'; import { buildSchema, graphql, GraphQLError } from 'graphql'; import { describe, expect, it, test } from 'vitest'; @@ -314,8 +315,8 @@ describe('executor errors are propagated', () => { }, }); - const rejectingExecutor = () => - Promise.reject(new Error('Service is down')); + const rejectingExecutor: Executor = () => + fakeRejectPromise(new Error('Service is down')); const schema = stitchSchemas({ subschemas: [ diff --git a/yarn.lock b/yarn.lock index 0056e571b..39f6eddf0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4215,11 +4215,11 @@ __metadata: "@rollup/plugin-sucrase": "npm:^5.0.2" "@tsconfig/node18": "npm:^18.2.4" "@types/adm-zip": "npm:^0.5.5" - "@types/bun": "npm:1.2.23" + "@types/bun": "npm:1.3.0" "@types/ws": "npm:^8.5.12" "@whatwg-node/fetch": "npm:^0.10.11" adm-zip: "npm:^0.5.15" - bun: "npm:^1.2.23" + bun: "npm:^1.3.0" commander: "npm:^14.0.1" dotenv: "npm:^17.2.3" graphql: "npm:^16.9.0" @@ -7831,79 +7831,79 @@ __metadata: languageName: node linkType: hard -"@oven/bun-darwin-aarch64@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-darwin-aarch64@npm:1.2.23" +"@oven/bun-darwin-aarch64@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-darwin-aarch64@npm:1.3.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@oven/bun-darwin-x64-baseline@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-darwin-x64-baseline@npm:1.2.23" +"@oven/bun-darwin-x64-baseline@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-darwin-x64-baseline@npm:1.3.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@oven/bun-darwin-x64@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-darwin-x64@npm:1.2.23" +"@oven/bun-darwin-x64@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-darwin-x64@npm:1.3.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@oven/bun-linux-aarch64-musl@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-linux-aarch64-musl@npm:1.2.23" +"@oven/bun-linux-aarch64-musl@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-linux-aarch64-musl@npm:1.3.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@oven/bun-linux-aarch64@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-linux-aarch64@npm:1.2.23" +"@oven/bun-linux-aarch64@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-linux-aarch64@npm:1.3.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@oven/bun-linux-x64-baseline@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-linux-x64-baseline@npm:1.2.23" +"@oven/bun-linux-x64-baseline@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-linux-x64-baseline@npm:1.3.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@oven/bun-linux-x64-musl-baseline@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-linux-x64-musl-baseline@npm:1.2.23" +"@oven/bun-linux-x64-musl-baseline@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-linux-x64-musl-baseline@npm:1.3.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@oven/bun-linux-x64-musl@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-linux-x64-musl@npm:1.2.23" +"@oven/bun-linux-x64-musl@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-linux-x64-musl@npm:1.3.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@oven/bun-linux-x64@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-linux-x64@npm:1.2.23" +"@oven/bun-linux-x64@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-linux-x64@npm:1.3.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@oven/bun-windows-x64-baseline@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-windows-x64-baseline@npm:1.2.23" +"@oven/bun-windows-x64-baseline@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-windows-x64-baseline@npm:1.3.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@oven/bun-windows-x64@npm:1.2.23": - version: 1.2.23 - resolution: "@oven/bun-windows-x64@npm:1.2.23" +"@oven/bun-windows-x64@npm:1.3.0": + version: 1.3.0 + resolution: "@oven/bun-windows-x64@npm:1.3.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -9384,12 +9384,12 @@ __metadata: languageName: node linkType: hard -"@types/bun@npm:1.2.23": - version: 1.2.23 - resolution: "@types/bun@npm:1.2.23" +"@types/bun@npm:1.3.0": + version: 1.3.0 + resolution: "@types/bun@npm:1.3.0" dependencies: - bun-types: "npm:1.2.23" - checksum: 10c0/2131350bf822f3147cb526106b0354fd87e49fb65d3e888042270f7b04ed7aa46c04070e9a68fd7a4cb831b0b0028d82146ef18ab4a6b82a5be6acc504acc253 + bun-types: "npm:1.3.0" + checksum: 10c0/acc15dd70877230ca9bde8856127371a2f99ff2f5cd9b51b260ba31ddbb3f0cfc24afe373cef1cdeabebb27f9b28703381b41fd6db6d6ff4bda20d28d4b96d0f languageName: node linkType: hard @@ -12000,32 +12000,32 @@ __metadata: languageName: node linkType: hard -"bun-types@npm:1.2.23": - version: 1.2.23 - resolution: "bun-types@npm:1.2.23" +"bun-types@npm:1.3.0": + version: 1.3.0 + resolution: "bun-types@npm:1.3.0" dependencies: "@types/node": "npm:*" peerDependencies: "@types/react": ^19 - checksum: 10c0/31eb03566d24b897cde45455753eb1ec3936c7dad226a8938900cae558af1f27c30cc647309fc6be9e0d4f355ec8a9026576398ef2b5c602c0b1c50a348bfc79 + checksum: 10c0/959146708a21169fd59d6846cc810b0d8888c8fad7cb25cf1cf3f1bc0af020973a0c3a592cc42b3bce24ff3e87083afd93df2ddfca80e439ddbb998c51cb4599 languageName: node linkType: hard -"bun@npm:1.2.23, bun@npm:^1.2.23": - version: 1.2.23 - resolution: "bun@npm:1.2.23" - dependencies: - "@oven/bun-darwin-aarch64": "npm:1.2.23" - "@oven/bun-darwin-x64": "npm:1.2.23" - "@oven/bun-darwin-x64-baseline": "npm:1.2.23" - "@oven/bun-linux-aarch64": "npm:1.2.23" - "@oven/bun-linux-aarch64-musl": "npm:1.2.23" - "@oven/bun-linux-x64": "npm:1.2.23" - "@oven/bun-linux-x64-baseline": "npm:1.2.23" - "@oven/bun-linux-x64-musl": "npm:1.2.23" - "@oven/bun-linux-x64-musl-baseline": "npm:1.2.23" - "@oven/bun-windows-x64": "npm:1.2.23" - "@oven/bun-windows-x64-baseline": "npm:1.2.23" +"bun@npm:1.3.0, bun@npm:^1.3.0": + version: 1.3.0 + resolution: "bun@npm:1.3.0" + dependencies: + "@oven/bun-darwin-aarch64": "npm:1.3.0" + "@oven/bun-darwin-x64": "npm:1.3.0" + "@oven/bun-darwin-x64-baseline": "npm:1.3.0" + "@oven/bun-linux-aarch64": "npm:1.3.0" + "@oven/bun-linux-aarch64-musl": "npm:1.3.0" + "@oven/bun-linux-x64": "npm:1.3.0" + "@oven/bun-linux-x64-baseline": "npm:1.3.0" + "@oven/bun-linux-x64-musl": "npm:1.3.0" + "@oven/bun-linux-x64-musl-baseline": "npm:1.3.0" + "@oven/bun-windows-x64": "npm:1.3.0" + "@oven/bun-windows-x64-baseline": "npm:1.3.0" dependenciesMeta: "@oven/bun-darwin-aarch64": optional: true @@ -12052,7 +12052,7 @@ __metadata: bin: bun: bin/bun.exe bunx: bin/bunx.exe - checksum: 10c0/94715a50196df2f4b67dc921607f45a24822c5d37166b9157ed0f53e6bae07b7db4f55955b02bebf25758dd16ba502e3afced51f8fb11672e73f55045c617a9a + checksum: 10c0/55b690d9b4ef91111381c818363794a21e83c7fbcef7404f20b608f81bd69a2802fca02dd7359c013bb8b526a9cd7e4d3ac425154ee342abb0165b4875dd419d conditions: (os=darwin | os=linux | os=win32) & (cpu=arm64 | cpu=x64) languageName: node linkType: hard @@ -14805,7 +14805,7 @@ __metadata: "@yarnpkg/cli": "npm:4.10.3" "@yarnpkg/core": "npm:4.4.4" "@yarnpkg/plugin-pack": "npm:4.0.3" - bun: "npm:1.2.23" + bun: "npm:1.3.0" cross-env: "npm:10.1.0" eslint: "npm:9.38.0" eslint-plugin-import: "npm:2.32.0"