Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
e631c5e
New Query Planner
ardatan Feb 5, 2025
4789aea
Leave batching and AST parsing
ardatan Feb 6, 2025
32aead1
Subscriptions
ardatan Feb 6, 2025
a9e0829
Deps
ardatan Feb 6, 2025
f3ed4d1
More fixes
ardatan Feb 7, 2025
0bfa74d
Lets go
ardatan Feb 7, 2025
35f65cc
Benchmark
ardatan Feb 7, 2025
fa82595
nojit in bench
enisdenjo Jul 28, 2025
2e81ef6
no fork
enisdenjo Jul 28, 2025
a58ffc7
typefix
enisdenjo Jul 30, 2025
6f78dea
quick and dirty impl of hive query planner
enisdenjo Oct 14, 2025
54a378b
explain things
enisdenjo Oct 14, 2025
1d10753
async / no async qp and no cache
enisdenjo Oct 14, 2025
c346577
push bench
enisdenjo Oct 14, 2025
111c0da
op doc node is available in hive qp now too
enisdenjo Oct 17, 2025
0542b83
start inspect
enisdenjo Oct 17, 2025
3eeb24b
only async
enisdenjo Oct 17, 2025
c4e4dfe
introduce fastify deepmerge
enisdenjo Oct 17, 2025
6420a75
add a lot of tests
enisdenjo Oct 17, 2025
a6101f4
WIP debugging
enisdenjo Oct 17, 2025
b434b68
no toolsmerge
enisdenjo Oct 20, 2025
f620653
todo
enisdenjo Oct 20, 2025
ae336f4
merge deep fast but typebroken
enisdenjo Oct 20, 2025
cc01876
unnecessary
enisdenjo Oct 21, 2025
3db2fc7
hive executor in fusion-runtime (we'll figure out where to place it l…
enisdenjo Oct 21, 2025
29cff90
subgraphs get
enisdenjo Oct 21, 2025
562bcc8
remove unused
enisdenjo Oct 21, 2025
6edbab1
fix benchmarks
enisdenjo Oct 21, 2025
5c69764
re-enable schemexts
enisdenjo Oct 21, 2025
befecc2
missing devdep for nestjs tests
enisdenjo Oct 21, 2025
b4588d7
hive router query planner on/off and warn
enisdenjo Oct 21, 2025
d7295df
put in env to use everywher
enisdenjo Oct 21, 2025
3a23067
object containing and skip some tests
enisdenjo Oct 21, 2025
37e1ae9
pass upstream timeout
enisdenjo Oct 21, 2025
87da788
silence in fed compat
enisdenjo Oct 21, 2025
3b4cb02
memoized plan simpler
enisdenjo Oct 21, 2025
a48c8d8
consumer schema
enisdenjo Oct 24, 2025
75c81cd
use consumer schema for validation
enisdenjo Oct 24, 2025
4a924f0
omit innaccessible enums when projecting
enisdenjo Oct 24, 2025
ef58aeb
omit inaccessible types
enisdenjo Oct 24, 2025
d2b78f7
some paths are null
enisdenjo Oct 24, 2025
a446dbe
handle inline fragments when projecting
enisdenjo Oct 24, 2025
2016261
normalize fetch rewrite inspired by router
enisdenjo Oct 24, 2025
a5260ab
honour alias and response key fields when extracting reps
enisdenjo Oct 24, 2025
46daa5a
rework flatten and respect complete path
enisdenjo Oct 24, 2025
953d2ea
enable and run all audit fed audits
enisdenjo Oct 24, 2025
d61d7ff
bump typefixed things
enisdenjo Oct 24, 2025
0bef390
normalize segments
enisdenjo Oct 24, 2025
013d932
match better query plan
enisdenjo Oct 24, 2025
71103aa
no masked errors when audit
enisdenjo Oct 26, 2025
b339ab0
unnecessary any and some checks
enisdenjo Oct 26, 2025
736a362
no inspect better always
enisdenjo Oct 26, 2025
bd12379
refactor and optimize executor and handler, more perf
enisdenjo Oct 26, 2025
3bc01ae
promise helpers
enisdenjo Oct 26, 2025
022bfe8
published router
enisdenjo Oct 26, 2025
2d6ed29
changeset
enisdenjo Oct 26, 2025
977e817
on fusion runtime
enisdenjo Oct 26, 2025
42d289a
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Oct 26, 2025
80872c1
better changeset
enisdenjo Oct 26, 2025
f4a9b2a
mesh fusion runtime
enisdenjo Oct 26, 2025
06077ab
unit test hive router query planner
enisdenjo Oct 26, 2025
336cdf7
execution request with subgraph name
enisdenjo Oct 27, 2025
65a8fc4
fix some tests
enisdenjo Oct 27, 2025
fa51db1
propgagte
enisdenjo Oct 27, 2025
29ec66f
build and remove introspection fields
enisdenjo Oct 27, 2025
cd0986f
more fixes
enisdenjo Oct 27, 2025
85090a0
introspection
enisdenjo Oct 27, 2025
e36d44c
skip unnecessary
enisdenjo Oct 27, 2025
dcbb642
only Query.__typename is also intropseipcting
enisdenjo Oct 27, 2025
27efc78
fix otel too
enisdenjo Oct 27, 2025
da9fdf7
filter internal types and fields
enisdenjo Oct 28, 2025
50b5fca
test experimental qp in same job
enisdenjo Oct 28, 2025
21d4b66
expect hive router qp results in demand control
enisdenjo Oct 28, 2025
c4ffc41
format and stuff
enisdenjo Oct 29, 2025
5293bb1
fix test sfor stitching
enisdenjo Oct 29, 2025
b96ee23
must return nothing
enisdenjo Oct 29, 2025
a411748
Merge branch 'main' into new-query-planner
enisdenjo Oct 31, 2025
1b1665d
router runtime
enisdenjo Oct 31, 2025
f9e8bd2
export things
enisdenjo Nov 3, 2025
ed6c95b
hive router runtime
enisdenjo Nov 3, 2025
d932856
import
enisdenjo Nov 3, 2025
e0ef2c0
make sure it changedd
enisdenjo Nov 3, 2025
02d39ce
Merge branch 'main' into new-query-planner
enisdenjo Nov 3, 2025
82ed067
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 3, 2025
7131f08
no dupe
enisdenjo Nov 3, 2025
f38858d
cache is not needed huh
enisdenjo Nov 3, 2025
82fed58
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 3, 2025
aafaa4d
unused
enisdenjo Nov 3, 2025
99ac3e8
dedupe nest stuff
enisdenjo Nov 3, 2025
e81f121
Merge branch 'main' into new-query-planner
enisdenjo Nov 3, 2025
c037bc9
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 3, 2025
b24d6d9
skip bun for now idk
enisdenjo Nov 3, 2025
4f6fbef
clarify
enisdenjo Nov 3, 2025
9bcdf63
skip progressive
enisdenjo Nov 3, 2025
419610a
no leak tests either cheers
enisdenjo Nov 3, 2025
8f8db7b
Improvements
ardatan Nov 5, 2025
1f00dd3
More
ardatan Nov 5, 2025
063eba7
Fixes
ardatan Nov 5, 2025
6b7f90b
Merge branch 'main' into new-query-planner
ardatan Nov 5, 2025
7470725
Format
ardatan Nov 5, 2025
6216eac
Fix introspection
ardatan Nov 5, 2025
615c0d3
memoize
ardatan Nov 5, 2025
a347bd9
use query planner
enisdenjo Nov 5, 2025
41eeced
prepare
enisdenjo Nov 5, 2025
93a97b6
ok build better
enisdenjo Nov 5, 2025
20b2bc1
better build tm
enisdenjo Nov 5, 2025
d291a83
tests should run now
enisdenjo Nov 5, 2025
9498ad1
Merge branch 'main' into new-query-planner
enisdenjo Nov 5, 2025
6e298e0
bun install
enisdenjo Nov 5, 2025
107e837
memtest hive router runtime with fed ex
enisdenjo Nov 5, 2025
7d76dc4
Avoid Map to prevent leaks
ardatan Nov 5, 2025
63f789d
More
ardatan Nov 5, 2025
9238614
More
ardatan Nov 5, 2025
3b227be
More
ardatan Nov 5, 2025
feff2d9
Yarn lock
ardatan Nov 5, 2025
0ad6c21
Dedupe
ardatan Nov 5, 2025
43447ab
pass unit tests
enisdenjo Nov 5, 2025
012825c
dynamic load stuff
enisdenjo Nov 5, 2025
20923fc
try require
enisdenjo Nov 5, 2025
12c2a5c
bundle without require
enisdenjo Nov 5, 2025
14a440f
no new line for build
enisdenjo Nov 5, 2025
c5245d0
Revert "try require"
enisdenjo Nov 5, 2025
1be4c14
just use hive router runtime dynamic import
enisdenjo Nov 5, 2025
f99bff1
lockfile
enisdenjo Nov 5, 2025
0e91c84
fix bundle
enisdenjo Nov 5, 2025
3d36a56
disable leaktests
enisdenjo Nov 5, 2025
3477681
use correct memtests
enisdenjo Nov 5, 2025
73b9d87
loading module
enisdenjo Nov 5, 2025
e89aa6b
try latest
enisdenjo Nov 6, 2025
4999dd5
test leaks
enisdenjo Nov 6, 2025
8a49742
typecheck jest
enisdenjo Nov 6, 2025
e118fc0
import customgc
enisdenjo Nov 6, 2025
752cbc6
use actual stable
enisdenjo Nov 6, 2025
a233444
Fix delegation
ardatan Nov 6, 2025
8922a48
Ranged
ardatan Nov 6, 2025
fee8265
Fix format
ardatan Nov 6, 2025
f622941
Fix
ardatan Nov 6, 2025
7e76fe8
More
ardatan Nov 6, 2025
209afc1
More
ardatan Nov 6, 2025
fc6ec5b
Fix binary
ardatan Nov 6, 2025
b726d62
Better
ardatan Nov 6, 2025
41bf64f
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 6, 2025
bf50633
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 6, 2025
5a672a2
Merge branch 'main' into new-query-planner
ardatan Nov 6, 2025
fa692cc
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 6, 2025
e1d4e4d
docs(examples): converted from e2es
theguild-bot Nov 6, 2025
47d9b70
Maybe?
ardatan Nov 6, 2025
fc94ffd
Merge branch 'main' into new-query-planner
ardatan Nov 7, 2025
65fa154
Merge branch 'main' into new-query-planner
ardatan Nov 7, 2025
c7e73b5
docs(examples): converted from e2es
theguild-bot Nov 7, 2025
6149f66
Format
ardatan Nov 7, 2025
9b369a9
Merge branch 'main' into new-query-planner
ardatan Nov 7, 2025
c8da4e3
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 7, 2025
b45816d
Merge branch 'main' into new-query-planner
ardatan Nov 7, 2025
699a06b
Continue
ardatan Nov 7, 2025
99051a9
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 7, 2025
293287d
Merge branch 'main' into new-query-planner
ardatan Nov 7, 2025
ce7cd6d
chore(dependencies): updated changesets for modified dependencies
github-actions[bot] Nov 7, 2025
e110e0c
Fix
ardatan Nov 7, 2025
1eda594
try
ardatan Nov 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/sharp-cars-act.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@graphql-mesh/fusion-runtime': minor
---

Use Query Planner from Hive Router
36 changes: 24 additions & 12 deletions .github/workflows/memtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,27 @@ jobs:
strategy:
fail-fast: false
matrix:
test_name:
- auto-type-merging
- federation-example
- federation-mixed
- federation-subscriptions-passthrough
- opentelemetry
- programmatic-batching
- logger
test:
- name: auto-type-merging
hive-router-runtime: false
- name: federation-example
hive-router-runtime: false
- name: federation-example
hive-router-runtime: true
- name: federation-mixed
hive-router-runtime: false
- name: federation-subscriptions-passthrough
hive-router-runtime: false
- name: opentelemetry
hive-router-runtime: false
- name: programmatic-batching
hive-router-runtime: false
- name: logger
hive-router-runtime: false
e2e_runner:
- node
# - bun TODO: get memory snaps and heap sampling for bun. is it even necessary?
name: ${{matrix.e2e_runner}} / ${{matrix.test_name}}
name: ${{matrix.e2e_runner}} / ${{matrix.test.name}} ${{ matrix.test.hive-router-runtime && 'with hive router runtime' || '' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand Down Expand Up @@ -57,15 +66,18 @@ jobs:
continue-on-error: true
with:
key: docker-images-${{ runner.os }}-${{ steps.hash-docker-images.outputs.result }}
- if: matrix.test.hive-router-runtime == 'true'
name: Enable Hive Router Runtime
run: echo "HIVE_ROUTER_RUNTIME=1" >> $GITHUB_ENV
- name: Test
env:
E2E_GATEWAY_RUNNER: ${{matrix.e2e_runner}}
run: yarn test:mem ${{matrix.test_name}}
run: yarn test:mem ${{matrix.test.name}}
- name: Upload heap snapshots
if: failure()
uses: actions/upload-artifact@v5
with:
name: ${{matrix.test_name}}-heap-snapshots
name: ${{matrix.test.name}}-heap-snapshots
path: |
e2e/${{matrix.test_name}}/*.heapsnapshot
e2e/${{matrix.test.name}}/*.heapsnapshot
packages/logger/tests/*.heapsnapshot
26 changes: 23 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@ jobs:
uses: the-guild-org/shared-config/setup@v1
with:
node-version: ${{matrix.node-version}}
- name: Test
- name: Test with Stitching Runtime
run: yarn test
- name: Test with Router Runtime
env:
HIVE_ROUTER_RUNTIME: 1
run: yarn test

unit-bun:
Expand All @@ -46,8 +50,16 @@ jobs:
uses: the-guild-org/shared-config/setup@v1
with:
node-version-file: .node-version
- name: Test
- name: Test with Stitching Runtime
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
with:
timeout_minutes: 10
max_attempts: 3
command: yarn test:bun
- name: Test with Router Runtime
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
env:
HIVE_ROUTER_RUNTIME: 1
with:
timeout_minutes: 10
max_attempts: 3
Expand All @@ -72,8 +84,16 @@ jobs:
uses: the-guild-org/shared-config/setup@v1
with:
node-version: ${{matrix.node-version}}
- name: Run Tests
- name: Test with Stitching Runtime
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
with:
timeout_minutes: 10
max_attempts: 3
command: yarn test:leaks
- name: Test with Router Runtime
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
env:
HIVE_ROUTER_RUNTIME: 1
with:
timeout_minutes: 10
max_attempts: 3
Expand Down
20 changes: 14 additions & 6 deletions e2e/federation-example/federation-example.bench.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,31 @@ import { fetch } from '@whatwg-node/fetch';
import { bench, describe, expect } from 'vitest';

describe('Gateway', async () => {
const { gateway, service } = createTenv(__dirname);
const { gateway, service: _service } = createTenv(__dirname);
const example = createExampleSetup(__dirname, 1000);

const supergraph = await example.supergraph();

const gateways: Record<string, Gateway | Service> = {
'Apollo Gateway': await service('apollo-gateway', {
// TODO: tests are failing for whatever reason
// 'Apollo Gateway': await service('apollo-gateway', {
// env: {
// SUPERGRAPH: supergraph,
// },
// }),
'Hive Gateway w/ Tools': await gateway({
supergraph,
env: {
SUPERGRAPH: supergraph,
FORK: 1,
NODE_ENV: 'production',
},
}),
'Hive Gateway': await gateway({
'Hive Gateway w/ Hive Router Query Planner': await gateway({
supergraph,
args: ['--jit'],
env: {
JIT: 'true',
FORK: 1,
NODE_ENV: 'production',
HIVE_ROUTER_RUNTIME: 1,
},
}),
};
Expand Down
13 changes: 1 addition & 12 deletions e2e/nestjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,5 @@
"name": "@e2e/nestjs",
"version": "0.0.1",
"type": "module",
"private": true,
"dependencies": {
"@graphql-hive/nestjs": "workspace:^",
"@nestjs/common": "^11.1.8",
"@nestjs/core": "^11.1.8",
"@nestjs/graphql": "^13.2.0",
"@nestjs/platform-express": "^11.1.8",
"file-type": "^21.0.0",
"graphql": "^16.12.0",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1"
}
"private": true
}
15 changes: 7 additions & 8 deletions internal/e2e/src/tenv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
createServicePortOpt,
getLocalhost,
isDebug,
ResponseError,
} from '@internal/testing';
import { cancelledSignal } from '@internal/testing/vitest';
import { DisposableSymbols } from '@whatwg-node/disposablestack';
Expand Down Expand Up @@ -595,14 +596,12 @@ export function createTenv(cwd: string): Tenv {
} catch {
// not a GraphQL error, something weird happened
}
const err = new Error(
`${res.status} ${res.statusText}\n${resText}`,
);
err.name = 'ResponseError';
if (resText.includes('Unexpected')) {
process.stderr.write(proc.getStd('both'));
}
throw err;
throw new ResponseError({
status: res.status,
statusText: res.statusText,
resText,
proc,
});
}
const resBody: ExecutionResult = await res.json();
if (
Expand Down
29 changes: 29 additions & 0 deletions internal/env/src/ResponseError.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import type { Proc } from '@internal/proc';

export type ResponseErrorOptions = (
| {
message: string;
}
| {
status: number;
statusText: string;
}
) & {
resText: string;
proc?: Proc;
};

export class ResponseError extends Error {
constructor({ resText, proc, ...options }: ResponseErrorOptions) {
const message =
'message' in options
? options.message
: `Status is not 200, got status ${options.status} ${options.statusText} and body:\n${resText}`;
super(message);
this.name = 'ResponseError';
if (proc != null && resText.includes('Unexpected')) {
process.stderr.write(proc.getStd('both'));
}
Error.captureStackTrace(this, this.constructor);
}
}
11 changes: 11 additions & 0 deletions internal/env/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,14 @@ export function getNodeVer(): {
const [major, minor, patch] = process.versions.node.split('.').map(Number);
return { major: major || NaN, minor: minor || NaN, patch: patch || NaN };
}

/**
* Whether the federation query planner is using Hive Router node-addon for query planning.
* @experimental
*/
export function usingHiveRouterRuntime(): boolean {
// @ts-expect-error - pkgroll needs this for dead code elimination
return process.env.HIVE_ROUTER_RUNTIME === '1';
}

export { ResponseError } from './ResponseError.js';
Original file line number Diff line number Diff line change
Expand Up @@ -4160,6 +4160,119 @@ var HeapSnapshot$1 = /*#__PURE__*/Object.freeze({
serializeUIString: serializeUIString
});

const kFakePromise = Symbol.for('@whatwg-node/promise-helpers/FakePromise');
function isPromise(value) {
return value?.then != null;
}
function isActualPromise(value) {
const maybePromise = value;
return maybePromise && maybePromise.then && maybePromise.catch && maybePromise.finally;
}
function fakePromise(value) {
if (value && isActualPromise(value)) {
return value;
}
if (isPromise(value)) {
return {
then: (resolve, reject) => fakePromise(value.then(resolve, reject)),
catch: reject => fakePromise(value.then(res => res, reject)),
finally: cb => fakePromise(cb ? promiseLikeFinally(value, cb) : value),
[Symbol.toStringTag]: 'Promise',
};
}
// Write a fake promise to avoid the promise constructor
// being called with `new Promise` in the browser.
return {
then(resolve) {
if (resolve) {
try {
return fakePromise(resolve(value));
}
catch (err) {
return fakeRejectPromise(err);
}
}
return this;
},
catch() {
return this;
},
finally(cb) {
if (cb) {
try {
return fakePromise(cb()).then(() => value, () => value);
}
catch (err) {
return fakeRejectPromise(err);
}
}
return this;
},
[Symbol.toStringTag]: 'Promise',
__fakePromiseValue: value,
[kFakePromise]: 'resolved',
};
}
function fakeRejectPromise(error) {
return {
then(_resolve, reject) {
if (reject) {
try {
return fakePromise(reject(error));
}
catch (err) {
return fakeRejectPromise(err);
}
}
return this;
},
catch(reject) {
if (reject) {
try {
return fakePromise(reject(error));
}
catch (err) {
return fakeRejectPromise(err);
}
}
return this;
},
finally(cb) {
if (cb) {
try {
cb();
}
catch (err) {
return fakeRejectPromise(err);
}
}
return this;
},
__fakeRejectError: error,
[Symbol.toStringTag]: 'Promise',
[kFakePromise]: 'rejected',
};
}
function promiseLikeFinally(value, onFinally) {
if ('finally' in value) {
return value.finally(onFinally);
}
return value.then(res => {
const finallyRes = onFinally();
return isPromise(finallyRes) ? finallyRes.then(() => res) : res;
}, err => {
const finallyRes = onFinally();
if (isPromise(finallyRes)) {
return finallyRes.then(() => {
throw err;
});
}
else {
throw err;
}
});
}

class HeapSnapshotWorkerDispatcher {
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down Expand Up @@ -4426,7 +4539,7 @@ class HeapSnapshotLoader {
}
#fetchChunk() {
if (this.#buffer.length > 0) {
return Promise.resolve(this.#buffer.shift());
return fakePromise(this.#buffer.shift());
}
const { promise, resolve } = withResolvers();
this.#dataCallback = resolve;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { parentPort } from 'node:worker_threads';
import { P as HeapSnapshotWorkerDispatcher } from './HeapSnapshotLoader-00ODhOoc.js';
import { P as HeapSnapshotWorkerDispatcher } from './HeapSnapshotLoader-BRkJkvg1.js';

const dispatcher = new HeapSnapshotWorkerDispatcher(
parentPort.postMessage.bind(parentPort)
Expand Down
4 changes: 2 additions & 2 deletions internal/heapsnapshot/dist/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { H as HeapSnapshotLoader, a as HeapSnapshotProgress } from './HeapSnapshotLoader-00ODhOoc.js';
export { z as Aggregate, B as AggregateForDiff, A as AllocationNodeCallers, y as AllocationStackFrame, F as ComparatorConfig, D as Diff, C as DiffForClass, E as Edge, m as HeapSnapshot, b as HeapSnapshotEdge, d as HeapSnapshotEdgeIndexProvider, f as HeapSnapshotEdgeIterator, o as HeapSnapshotEdgesProvider, l as HeapSnapshotFilteredIterator, k as HeapSnapshotIndexRangeIterator, n as HeapSnapshotItemProvider, i as HeapSnapshotNode, c as HeapSnapshotNodeIndexProvider, j as HeapSnapshotNodeIterator, p as HeapSnapshotNodesProvider, u as HeapSnapshotProgressEvent, g as HeapSnapshotRetainerEdge, e as HeapSnapshotRetainerEdgeIndexProvider, h as HeapSnapshotRetainerEdgeIterator, I as ItemsRange, J as JSHeapSnapshot, r as JSHeapSnapshotEdge, q as JSHeapSnapshotNode, t as JSHeapSnapshotRetainerEdge, O as Location, N as Node, K as NodeFilter, M as Samples, L as SearchConfig, S as SecondaryInitManager, x as SerializedAllocationNode, G as StaticData, W as WorkerCommand, v as baseSystemDistance, w as baseUnreachableDistance, s as serializeUIString } from './HeapSnapshotLoader-00ODhOoc.js';
import { H as HeapSnapshotLoader, a as HeapSnapshotProgress } from './HeapSnapshotLoader-BRkJkvg1.js';
export { z as Aggregate, B as AggregateForDiff, A as AllocationNodeCallers, y as AllocationStackFrame, F as ComparatorConfig, D as Diff, C as DiffForClass, E as Edge, m as HeapSnapshot, b as HeapSnapshotEdge, d as HeapSnapshotEdgeIndexProvider, f as HeapSnapshotEdgeIterator, o as HeapSnapshotEdgesProvider, l as HeapSnapshotFilteredIterator, k as HeapSnapshotIndexRangeIterator, n as HeapSnapshotItemProvider, i as HeapSnapshotNode, c as HeapSnapshotNodeIndexProvider, j as HeapSnapshotNodeIterator, p as HeapSnapshotNodesProvider, u as HeapSnapshotProgressEvent, g as HeapSnapshotRetainerEdge, e as HeapSnapshotRetainerEdgeIndexProvider, h as HeapSnapshotRetainerEdgeIterator, I as ItemsRange, J as JSHeapSnapshot, r as JSHeapSnapshotEdge, q as JSHeapSnapshotNode, t as JSHeapSnapshotRetainerEdge, O as Location, N as Node, K as NodeFilter, M as Samples, L as SearchConfig, S as SecondaryInitManager, x as SerializedAllocationNode, G as StaticData, W as WorkerCommand, v as baseSystemDistance, w as baseUnreachableDistance, s as serializeUIString } from './HeapSnapshotLoader-BRkJkvg1.js';
import path from 'node:path';
import { fileURLToPath, URL } from 'node:url';
import { Worker } from 'node:worker_threads';
Expand Down
Loading
Loading