@slexisvn/query-engine 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/binder/binder.d.ts +130 -0
- package/dist/binder/expression-binder.d.ts +168 -0
- package/dist/binder/scope.d.ts +40 -0
- package/dist/browser.d.ts +8 -0
- package/dist/catalog/catalog.d.ts +53 -0
- package/dist/catalog/function-registry.d.ts +26 -0
- package/dist/catalog/statistics-cache.d.ts +39 -0
- package/dist/catalog/statistics.d.ts +72 -0
- package/dist/catalog/tpch-schema.d.ts +15 -0
- package/dist/cli/cli-common.d.ts +11 -0
- package/dist/cli/coordinator.d.ts +1 -0
- package/dist/cli/format.d.ts +8 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/loaders/csv-loader.d.ts +17 -0
- package/dist/cli/loaders/data-loader.d.ts +7 -0
- package/dist/cli/loaders/json-loader.d.ts +13 -0
- package/dist/cli/loaders/loader-factory.d.ts +4 -0
- package/dist/cli/repl.d.ts +6 -0
- package/dist/cli/worker.d.ts +1 -0
- package/dist/config.d.ts +42 -0
- package/dist/core.wasm +0 -0
- package/dist/dataframe/column-expr.d.ts +67 -0
- package/dist/dataframe/dataframe.d.ts +96 -0
- package/dist/dataframe/expr-types.d.ts +6 -0
- package/dist/dataframe/in-memory-relation.d.ts +31 -0
- package/dist/dataframe/index.d.ts +4 -0
- package/dist/dataframe/schema.d.ts +35 -0
- package/dist/dataframe/sql-expr-binder.d.ts +17 -0
- package/dist/dataframe/type-inference.d.ts +8 -0
- package/dist/distributed/cluster/cluster-manager.d.ts +54 -0
- package/dist/distributed/cluster/heartbeat-monitor.d.ts +27 -0
- package/dist/distributed/cluster/node-descriptor.d.ts +41 -0
- package/dist/distributed/distributed-types.d.ts +336 -0
- package/dist/distributed/execution/coordinator.d.ts +53 -0
- package/dist/distributed/execution/exchange-operator.d.ts +44 -0
- package/dist/distributed/execution/fragment-executor.d.ts +48 -0
- package/dist/distributed/execution/merge-exchange.d.ts +55 -0
- package/dist/distributed/optimizer/distributed-sort.d.ts +6 -0
- package/dist/distributed/optimizer/distribution-aware-join.d.ts +28 -0
- package/dist/distributed/optimizer/partial-aggregate.d.ts +9 -0
- package/dist/distributed/partition/partition-map.d.ts +27 -0
- package/dist/distributed/partition/partition-pruner.d.ts +33 -0
- package/dist/distributed/partition/partition-strategy.d.ts +43 -0
- package/dist/distributed/planner/distributed-planner.d.ts +71 -0
- package/dist/distributed/planner/exchange-placement.d.ts +19 -0
- package/dist/distributed/planner/expr-utils.d.ts +2 -0
- package/dist/distributed/planner/fragment.d.ts +47 -0
- package/dist/distributed/transport/chunk-codec.d.ts +18 -0
- package/dist/distributed/transport/http-transport.d.ts +49 -0
- package/dist/distributed/transport/transport.d.ts +13 -0
- package/dist/engine/query-engine.d.ts +142 -0
- package/dist/engine-entry.d.ts +12 -0
- package/dist/execution/builders/aggregate-builder.d.ts +46 -0
- package/dist/execution/builders/builder-utils.d.ts +5 -0
- package/dist/execution/builders/cte-builders.d.ts +20 -0
- package/dist/execution/builders/exchange-builders.d.ts +33 -0
- package/dist/execution/builders/join-builder.d.ts +67 -0
- package/dist/execution/builders/pipeline-builders.d.ts +30 -0
- package/dist/execution/builders/source-builders.d.ts +23 -0
- package/dist/execution/column-resolve.d.ts +7 -0
- package/dist/execution/execution-types.d.ts +33 -0
- package/dist/execution/expression-eval.d.ts +13 -0
- package/dist/execution/fragment-spec.d.ts +125 -0
- package/dist/execution/join-utils.d.ts +14 -0
- package/dist/execution/operator-registry.d.ts +9 -0
- package/dist/execution/operators/agg-wasm.d.ts +16 -0
- package/dist/execution/operators/dedup-core.d.ts +10 -0
- package/dist/execution/operators/dependent-join.d.ts +14 -0
- package/dist/execution/operators/distinct.d.ts +12 -0
- package/dist/execution/operators/filter.d.ts +87 -0
- package/dist/execution/operators/hash-aggregate.d.ts +121 -0
- package/dist/execution/operators/hash-join.d.ts +74 -0
- package/dist/execution/operators/index-scan.d.ts +34 -0
- package/dist/execution/operators/join-core.d.ts +47 -0
- package/dist/execution/operators/merge-join.d.ts +38 -0
- package/dist/execution/operators/nested-loop-join.d.ts +28 -0
- package/dist/execution/operators/projection.d.ts +20 -0
- package/dist/execution/operators/scan.d.ts +17 -0
- package/dist/execution/operators/sort.d.ts +48 -0
- package/dist/execution/operators/stream-aggregate.d.ts +30 -0
- package/dist/execution/operators/union.d.ts +13 -0
- package/dist/execution/operators/vector-aggregate.d.ts +73 -0
- package/dist/execution/operators/window.d.ts +22 -0
- package/dist/execution/physical-plan.d.ts +14 -0
- package/dist/execution/pipeline.d.ts +28 -0
- package/dist/execution/query-executor.d.ts +70 -0
- package/dist/execution/query-result.d.ts +15 -0
- package/dist/execution/result-sink.d.ts +26 -0
- package/dist/execution/scheduler.d.ts +8 -0
- package/dist/execution/vector-ops.d.ts +32 -0
- package/dist/execution/wasm-expr-eval.d.ts +7 -0
- package/dist/index.browser.js +17999 -0
- package/dist/index.cli.js +1002 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.node.js +21432 -0
- package/dist/optimizer/dphyp/cardinality.d.ts +69 -0
- package/dist/optimizer/dphyp/cost-model.d.ts +47 -0
- package/dist/optimizer/dphyp/dphyp.d.ts +32 -0
- package/dist/optimizer/dphyp/hypergraph.d.ts +38 -0
- package/dist/optimizer/optimizer.d.ts +12 -0
- package/dist/optimizer/pass.d.ts +5 -0
- package/dist/optimizer/passes/aggregate-pushdown.d.ts +6 -0
- package/dist/optimizer/passes/cte-optimization.d.ts +6 -0
- package/dist/optimizer/passes/empty-propagation.d.ts +6 -0
- package/dist/optimizer/passes/expr-walk.d.ts +20 -0
- package/dist/optimizer/passes/expression-simplifier.d.ts +8 -0
- package/dist/optimizer/passes/filter-ordering.d.ts +13 -0
- package/dist/optimizer/passes/having-pushdown.d.ts +6 -0
- package/dist/optimizer/passes/index-selection.d.ts +24 -0
- package/dist/optimizer/passes/join-elimination.d.ts +6 -0
- package/dist/optimizer/passes/join-reorder.d.ts +12 -0
- package/dist/optimizer/passes/join-residual-split.d.ts +6 -0
- package/dist/optimizer/passes/limit-pushdown.d.ts +6 -0
- package/dist/optimizer/passes/node-merge.d.ts +6 -0
- package/dist/optimizer/passes/outer-to-inner.d.ts +6 -0
- package/dist/optimizer/passes/physical-design.d.ts +12 -0
- package/dist/optimizer/passes/plan-refs.d.ts +22 -0
- package/dist/optimizer/passes/predicate-dedup.d.ts +6 -0
- package/dist/optimizer/passes/predicate-inference.d.ts +6 -0
- package/dist/optimizer/passes/predicate-pushdown.d.ts +9 -0
- package/dist/optimizer/passes/projection-pushdown.d.ts +6 -0
- package/dist/optimizer/passes/sort-elimination.d.ts +6 -0
- package/dist/optimizer/passes/subquery-unnesting.d.ts +6 -0
- package/dist/optimizer/passes/topn-fusion.d.ts +6 -0
- package/dist/parallel/chunk-transport.d.ts +24 -0
- package/dist/parallel/fragment-pool.d.ts +49 -0
- package/dist/parallel/fragment-worker.d.ts +1 -0
- package/dist/parallel/morsel-scheduler.d.ts +11 -0
- package/dist/parallel/parallel-dispatch.d.ts +69 -0
- package/dist/parallel/partial-spill.d.ts +3 -0
- package/dist/parallel/worker-messages.d.ts +243 -0
- package/dist/parallel/worker-pool.d.ts +62 -0
- package/dist/parallel/worker-thread.d.ts +1 -0
- package/dist/parser/ast.d.ts +298 -0
- package/dist/parser/lexer.d.ts +135 -0
- package/dist/parser/parser.d.ts +64 -0
- package/dist/planner/logical-plan.d.ts +250 -0
- package/dist/planner/logical-planner.d.ts +23 -0
- package/dist/planner/plan-formatter.d.ts +4 -0
- package/dist/planner/plan-visitor.d.ts +58 -0
- package/dist/runtime/platform.d.ts +4 -0
- package/dist/storage/backend/memory-storage-backend.d.ts +14 -0
- package/dist/storage/backend/node-storage-backend.d.ts +11 -0
- package/dist/storage/btree.d.ts +34 -0
- package/dist/storage/buffer-pool.d.ts +17 -0
- package/dist/storage/chunk.d.ts +26 -0
- package/dist/storage/column.d.ts +38 -0
- package/dist/storage/data-type.d.ts +54 -0
- package/dist/storage/dictionary-column.d.ts +33 -0
- package/dist/storage/page-store/file-page-store.d.ts +13 -0
- package/dist/storage/page-store/memory-page-store.d.ts +9 -0
- package/dist/storage/sab-arena.d.ts +26 -0
- package/dist/storage/serializer.d.ts +6 -0
- package/dist/storage/spill-manager/fs-storage.d.ts +11 -0
- package/dist/storage/spill-manager/memory-storage.d.ts +10 -0
- package/dist/storage/spill-manager/spill-manager.d.ts +17 -0
- package/dist/storage/storage-constants.d.ts +3 -0
- package/dist/storage/table.d.ts +31 -0
- package/dist/storage/temp-space/memory-temp-space.d.ts +11 -0
- package/dist/storage/temp-space/temp-directory-manager.d.ts +14 -0
- package/dist/utils/bitmap.d.ts +11 -0
- package/dist/utils/hash.d.ts +1 -0
- package/dist/utils/lru-cache.d.ts +24 -0
- package/dist/utils/priority-queue.d.ts +18 -0
- package/dist/wasm/dispatch.d.ts +13 -0
- package/dist/wasm/fetch-byte-source.d.ts +2 -0
- package/dist/wasm/kernels/core-instance.d.ts +6 -0
- package/dist/wasm/kernels/kernel-factory.d.ts +8 -0
- package/dist/wasm/kernels/wasm-aggregate.d.ts +6 -0
- package/dist/wasm/kernels/wasm-arithmetic.d.ts +13 -0
- package/dist/wasm/kernels/wasm-filter-f64.d.ts +8 -0
- package/dist/wasm/kernels/wasm-filter.d.ts +5 -0
- package/dist/wasm/loader.d.ts +17 -0
- package/dist/wasm/node-byte-source.d.ts +1 -0
- package/dist/wasm/region-allocator.d.ts +23 -0
- package/dist/wasm/register-kernels.d.ts +1 -0
- package/dist/wasm/wasm-loader-base.d.ts +33 -0
- package/dist/wasm/wasm-types.d.ts +103 -0
- package/package.json +60 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DataType, type AnyTypedArray, type ColumnValue } from './data-type.js';
|
|
2
|
+
import { type Allocator } from './sab-arena.js';
|
|
3
|
+
export interface ColumnParts {
|
|
4
|
+
dataType: DataType;
|
|
5
|
+
data?: AnyTypedArray;
|
|
6
|
+
offsets?: Uint32Array;
|
|
7
|
+
stringBytes?: Uint8Array;
|
|
8
|
+
stringBytesUsed?: number;
|
|
9
|
+
nullBitmap: Uint32Array;
|
|
10
|
+
length: number;
|
|
11
|
+
hasNulls: boolean;
|
|
12
|
+
allocator?: Allocator;
|
|
13
|
+
}
|
|
14
|
+
export declare class Column {
|
|
15
|
+
dataType: DataType;
|
|
16
|
+
capacity: number;
|
|
17
|
+
length: number;
|
|
18
|
+
allocator: Allocator;
|
|
19
|
+
data?: AnyTypedArray;
|
|
20
|
+
offsets?: Uint32Array;
|
|
21
|
+
stringBytes?: Uint8Array;
|
|
22
|
+
stringBytesUsed?: number;
|
|
23
|
+
nullBitmap: Uint32Array;
|
|
24
|
+
hasNulls: boolean;
|
|
25
|
+
constructor(dataType: DataType, capacity?: number, allocator?: Allocator);
|
|
26
|
+
static fromParts({ dataType, data, offsets, stringBytes, stringBytesUsed, nullBitmap, length, hasNulls, allocator }: ColumnParts): Column;
|
|
27
|
+
get(index: number): ColumnValue;
|
|
28
|
+
set(index: number, value: ColumnValue): void;
|
|
29
|
+
append(value: ColumnValue): void;
|
|
30
|
+
appendBatch(values: ColumnValue[]): void;
|
|
31
|
+
isNull(index: number): boolean;
|
|
32
|
+
slice(start: number, end: number): Column;
|
|
33
|
+
_setNull(index: number): void;
|
|
34
|
+
_getString(index: number): string;
|
|
35
|
+
_setString(index: number, value: string): void;
|
|
36
|
+
_grow(): void;
|
|
37
|
+
_growStringBuffer(): void;
|
|
38
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export declare enum DataType {
|
|
2
|
+
BOOLEAN = "BOOLEAN",
|
|
3
|
+
INT32 = "INT32",
|
|
4
|
+
INT64 = "INT64",
|
|
5
|
+
FLOAT64 = "FLOAT64",
|
|
6
|
+
DECIMAL = "DECIMAL",
|
|
7
|
+
VARCHAR = "VARCHAR",
|
|
8
|
+
DATE = "DATE",
|
|
9
|
+
TIMESTAMP = "TIMESTAMP"
|
|
10
|
+
}
|
|
11
|
+
export type ColumnValue = string | number | bigint | boolean | null;
|
|
12
|
+
export type AnyTypedArray = Uint8Array | Uint16Array | Uint32Array | Int32Array | Float64Array | BigInt64Array;
|
|
13
|
+
export interface TypedArrayCtor<T extends AnyTypedArray> {
|
|
14
|
+
readonly BYTES_PER_ELEMENT: number;
|
|
15
|
+
new (length: number): T;
|
|
16
|
+
new (buffer: ArrayBufferLike, byteOffset: number, length: number): T;
|
|
17
|
+
}
|
|
18
|
+
export interface ColumnSchema {
|
|
19
|
+
name: string;
|
|
20
|
+
dataType: DataType;
|
|
21
|
+
}
|
|
22
|
+
export declare const FIXED_WIDTH_TYPES: Set<DataType>;
|
|
23
|
+
export declare function typedArrayCtorFor(dataType: DataType): TypedArrayCtor<AnyTypedArray>;
|
|
24
|
+
export declare function typedArrayFor(dataType: DataType, length: number): AnyTypedArray;
|
|
25
|
+
export declare function byteWidthFor(dataType: DataType): number;
|
|
26
|
+
export declare function isFixedWidth(dataType: DataType): boolean;
|
|
27
|
+
export declare function isNumeric(dataType: DataType): boolean;
|
|
28
|
+
export declare function isTemporal(dataType: DataType): boolean;
|
|
29
|
+
export declare function isComparable(a: DataType, b: DataType): boolean;
|
|
30
|
+
export declare function getDecimalScale(): bigint;
|
|
31
|
+
export declare function getDecimalScaleNumber(): number;
|
|
32
|
+
export declare function setDecimalScale(digits: number): void;
|
|
33
|
+
export declare const DECIMAL_SCALE = 100n;
|
|
34
|
+
export declare const DECIMAL_SCALE_NUMBER = 100;
|
|
35
|
+
export declare function dateToEpochDays(year: number, month: number, day: number): number;
|
|
36
|
+
export interface DateParts {
|
|
37
|
+
year: number;
|
|
38
|
+
month: number;
|
|
39
|
+
day: number;
|
|
40
|
+
}
|
|
41
|
+
export interface TimestampParts {
|
|
42
|
+
year: number;
|
|
43
|
+
month: number;
|
|
44
|
+
day: number;
|
|
45
|
+
hour: number;
|
|
46
|
+
minute: number;
|
|
47
|
+
second: number;
|
|
48
|
+
ms: number;
|
|
49
|
+
}
|
|
50
|
+
export declare function epochDaysToDate(days: number): DateParts;
|
|
51
|
+
export declare function timestampToEpochMs(year: number, month: number, day: number, hour: number, minute: number, second: number, ms?: number): number;
|
|
52
|
+
export declare function epochMsToTimestamp(epochMs: number): TimestampParts;
|
|
53
|
+
export declare function epochDaysToEpochMs(days: number): number;
|
|
54
|
+
export declare function epochMsToEpochDays(ms: number): number;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DataType, type ColumnValue } from './data-type.js';
|
|
2
|
+
import { type Allocator } from './sab-arena.js';
|
|
3
|
+
export interface DictionaryColumnParts {
|
|
4
|
+
indices: Uint16Array;
|
|
5
|
+
reverseDict: string[];
|
|
6
|
+
nullBitmap: Uint32Array;
|
|
7
|
+
length: number;
|
|
8
|
+
hasNulls: boolean;
|
|
9
|
+
allocator?: Allocator;
|
|
10
|
+
}
|
|
11
|
+
export declare class DictionaryColumn {
|
|
12
|
+
dataType: DataType;
|
|
13
|
+
capacity: number;
|
|
14
|
+
length: number;
|
|
15
|
+
allocator: Allocator;
|
|
16
|
+
_dictionary: Map<string, number> | null;
|
|
17
|
+
reverseDict: string[];
|
|
18
|
+
indices: Uint16Array;
|
|
19
|
+
nullBitmap: Uint32Array;
|
|
20
|
+
hasNulls: boolean;
|
|
21
|
+
constructor(capacity?: number, allocator?: Allocator);
|
|
22
|
+
static fromParts({ indices, reverseDict, nullBitmap, length, hasNulls, allocator }: DictionaryColumnParts): DictionaryColumn;
|
|
23
|
+
get dictionary(): Map<string, number>;
|
|
24
|
+
set dictionary(map: Map<string, number>);
|
|
25
|
+
get(index: number): ColumnValue;
|
|
26
|
+
set(index: number, value: ColumnValue): void;
|
|
27
|
+
append(value: ColumnValue): void;
|
|
28
|
+
appendBatch(values: ColumnValue[]): void;
|
|
29
|
+
isNull(index: number): boolean;
|
|
30
|
+
slice(start: number, end: number): DictionaryColumn;
|
|
31
|
+
_setNull(index: number): void;
|
|
32
|
+
_grow(): void;
|
|
33
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DataChunk } from '../chunk.js';
|
|
2
|
+
import type { PageStore } from '../buffer-pool.js';
|
|
3
|
+
import type { Allocator } from '../sab-arena.js';
|
|
4
|
+
export type AllocatorFactory = (byteHint: number) => Allocator;
|
|
5
|
+
export declare class FilePageStore implements PageStore {
|
|
6
|
+
basePath: string;
|
|
7
|
+
allocatorFactory: AllocatorFactory | null;
|
|
8
|
+
constructor(basePath: string, allocatorFactory?: AllocatorFactory | null);
|
|
9
|
+
getPagePath(pageId: string): string;
|
|
10
|
+
write(pageId: string, chunk: DataChunk): Promise<void>;
|
|
11
|
+
read(pageId: string): Promise<DataChunk>;
|
|
12
|
+
clear(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DataChunk } from '../chunk.js';
|
|
2
|
+
import type { PageStore } from '../buffer-pool.js';
|
|
3
|
+
export declare class MemoryPageStore implements PageStore {
|
|
4
|
+
pages: Map<string, DataChunk>;
|
|
5
|
+
constructor();
|
|
6
|
+
write(pageId: string, chunk: DataChunk): Promise<void>;
|
|
7
|
+
read(pageId: string): Promise<DataChunk | null>;
|
|
8
|
+
clear(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AnyTypedArray, TypedArrayCtor } from './data-type.js';
|
|
2
|
+
export interface Allocator {
|
|
3
|
+
readonly shared: boolean;
|
|
4
|
+
acquire<T extends AnyTypedArray>(Ctor: TypedArrayCtor<T>, length: number): T;
|
|
5
|
+
}
|
|
6
|
+
interface ArenaSegment {
|
|
7
|
+
sab: SharedArrayBuffer;
|
|
8
|
+
offset: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class HeapAllocator implements Allocator {
|
|
11
|
+
get shared(): boolean;
|
|
12
|
+
acquire<T extends AnyTypedArray>(Ctor: TypedArrayCtor<T>, length: number): T;
|
|
13
|
+
}
|
|
14
|
+
export declare const heapAllocator: HeapAllocator;
|
|
15
|
+
export declare class SabArena implements Allocator {
|
|
16
|
+
nextSegmentBytes: number;
|
|
17
|
+
segments: ArenaSegment[];
|
|
18
|
+
constructor(initialBytes?: number);
|
|
19
|
+
get shared(): boolean;
|
|
20
|
+
acquire<T extends AnyTypedArray>(Ctor: TypedArrayCtor<T>, length: number): T;
|
|
21
|
+
_segmentFor(byteLength: number, alignment: number): ArenaSegment;
|
|
22
|
+
totalBytes(): number;
|
|
23
|
+
}
|
|
24
|
+
export declare function columnAllocator(byteHint?: number): Allocator;
|
|
25
|
+
export declare function isSharedView(view?: ArrayBufferView): boolean;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SpillStorage } from './spill-manager.js';
|
|
2
|
+
export declare class FsStorage implements SpillStorage {
|
|
3
|
+
basePath: string;
|
|
4
|
+
constructor(basePath: string);
|
|
5
|
+
filePath(partitionId: string): string;
|
|
6
|
+
append(partitionId: string, buffer: Buffer): Promise<void>;
|
|
7
|
+
read(partitionId: string): Promise<Buffer | null>;
|
|
8
|
+
exists(partitionId: string): boolean;
|
|
9
|
+
remove(partitionId: string): Promise<void>;
|
|
10
|
+
removeAll(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SpillStorage } from './spill-manager.js';
|
|
2
|
+
export declare class MemoryStorage implements SpillStorage {
|
|
3
|
+
store: Map<string, Buffer[]>;
|
|
4
|
+
constructor();
|
|
5
|
+
append(partitionId: string, buffer: Buffer): Promise<void>;
|
|
6
|
+
read(partitionId: string): Promise<Buffer | null>;
|
|
7
|
+
exists(partitionId: string): boolean;
|
|
8
|
+
remove(partitionId: string): Promise<void>;
|
|
9
|
+
removeAll(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DataChunk } from '../chunk.js';
|
|
2
|
+
export interface SpillStorage {
|
|
3
|
+
append(partitionId: string, buffer: Buffer): Promise<void>;
|
|
4
|
+
read(partitionId: string): Promise<Buffer | null>;
|
|
5
|
+
exists(partitionId: string): boolean;
|
|
6
|
+
remove(partitionId: string): Promise<void>;
|
|
7
|
+
removeAll(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare class SpillManager {
|
|
10
|
+
storage: SpillStorage;
|
|
11
|
+
constructor(storage: SpillStorage);
|
|
12
|
+
appendChunk(partitionId: string, chunk: DataChunk | null): Promise<void>;
|
|
13
|
+
readChunks(partitionId: string): AsyncGenerator<DataChunk>;
|
|
14
|
+
clearPartition(partitionId: string): Promise<void>;
|
|
15
|
+
clearAll(): Promise<void>;
|
|
16
|
+
hasSpilled(partitionId: string): boolean;
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DataChunk } from './chunk.js';
|
|
2
|
+
import { BufferPoolManager, type PageStore } from './buffer-pool.js';
|
|
3
|
+
import type { ColumnSchema, ColumnValue } from './data-type.js';
|
|
4
|
+
import type { BTreeIndex } from './btree.js';
|
|
5
|
+
interface TableIndex {
|
|
6
|
+
columnIndex: number;
|
|
7
|
+
btree: BTreeIndex;
|
|
8
|
+
}
|
|
9
|
+
export declare class Table {
|
|
10
|
+
name: string;
|
|
11
|
+
schema: ColumnSchema[];
|
|
12
|
+
pageIds: string[];
|
|
13
|
+
_rowCount: number;
|
|
14
|
+
bufferPool: BufferPoolManager;
|
|
15
|
+
activeChunk: DataChunk | null;
|
|
16
|
+
indexes: TableIndex[];
|
|
17
|
+
constructor(name: string, schema: ColumnSchema[], pageStore: PageStore);
|
|
18
|
+
getSchema(): ColumnSchema[];
|
|
19
|
+
getColumnIndex(columnName: string): number;
|
|
20
|
+
getColumn(columnName: string): ColumnSchema | undefined;
|
|
21
|
+
rowCount(): number;
|
|
22
|
+
registerIndex(columnIndex: number, btree: BTreeIndex): void;
|
|
23
|
+
addChunk(chunk: DataChunk): Promise<void>;
|
|
24
|
+
insertRows(rows: ColumnValue[][]): Promise<void>;
|
|
25
|
+
flush(): Promise<void>;
|
|
26
|
+
scan(): AsyncGenerator<DataChunk>;
|
|
27
|
+
scanAll(): Promise<DataChunk[]>;
|
|
28
|
+
getStatistics(): null;
|
|
29
|
+
_createChunk(): DataChunk;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TempSpaceOptions {
|
|
2
|
+
baseDir?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare class MemoryTempSpace {
|
|
5
|
+
rootDir: string;
|
|
6
|
+
counters: Map<string, number>;
|
|
7
|
+
constructor(options?: TempSpaceOptions);
|
|
8
|
+
allocate(category: string, label: string): string;
|
|
9
|
+
getRoot(): string;
|
|
10
|
+
cleanup(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface TempDirectoryOptions {
|
|
2
|
+
baseDir?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare class TempDirectoryManager {
|
|
5
|
+
baseDir: string;
|
|
6
|
+
rootName: string;
|
|
7
|
+
rootDir: string;
|
|
8
|
+
counters: Map<string, number>;
|
|
9
|
+
initialized: boolean;
|
|
10
|
+
constructor(options?: TempDirectoryOptions);
|
|
11
|
+
allocate(category: string, label: string): string;
|
|
12
|
+
getRootDir(): string;
|
|
13
|
+
cleanup(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function bitmapWordCount(length: number): number;
|
|
2
|
+
export declare function createBitmap(length: number): Uint32Array;
|
|
3
|
+
export declare function setBit(bitmap: Uint32Array, index: number): void;
|
|
4
|
+
export declare function clearBit(bitmap: Uint32Array, index: number): void;
|
|
5
|
+
export declare function testBit(bitmap: Uint32Array, index: number): boolean;
|
|
6
|
+
export declare function setBitRange(bitmap: Uint32Array, start: number, end: number): void;
|
|
7
|
+
export declare function andBitmaps(a: Uint32Array, b: Uint32Array, length: number): Uint32Array;
|
|
8
|
+
export declare function orBitmaps(a: Uint32Array, b: Uint32Array, length: number): Uint32Array;
|
|
9
|
+
export declare function notBitmap(bitmap: Uint32Array, length: number): Uint32Array;
|
|
10
|
+
export declare function popcount(bitmap: Uint32Array, length: number): number;
|
|
11
|
+
export declare function countSetBits(bitmap: Uint32Array, length: number): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function hashValue(value: string | number | bigint | boolean | null): number;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
interface LRUNode<K, V> {
|
|
2
|
+
key: K;
|
|
3
|
+
value: V;
|
|
4
|
+
prev: LRUNode<K, V> | null;
|
|
5
|
+
next: LRUNode<K, V> | null;
|
|
6
|
+
}
|
|
7
|
+
export declare class LRUCache<K, V> {
|
|
8
|
+
_maxSize: number;
|
|
9
|
+
_map: Map<K, LRUNode<K, V>>;
|
|
10
|
+
_head: LRUNode<K, V> | null;
|
|
11
|
+
_tail: LRUNode<K, V> | null;
|
|
12
|
+
constructor(maxSize: number);
|
|
13
|
+
_detach(node: LRUNode<K, V>): void;
|
|
14
|
+
_prepend(node: LRUNode<K, V>): void;
|
|
15
|
+
_moveToHead(node: LRUNode<K, V>): void;
|
|
16
|
+
_evictTail(): K | null;
|
|
17
|
+
get(key: K): V | undefined;
|
|
18
|
+
set(key: K, value: V): K | null;
|
|
19
|
+
has(key: K): boolean;
|
|
20
|
+
delete(key: K): boolean;
|
|
21
|
+
clear(): void;
|
|
22
|
+
get size(): number;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type Comparator<T> = (a: T, b: T) => number;
|
|
2
|
+
export declare class PriorityQueue<T> {
|
|
3
|
+
private _heap;
|
|
4
|
+
private _comparator;
|
|
5
|
+
constructor(comparator?: Comparator<T>);
|
|
6
|
+
get size(): number;
|
|
7
|
+
isEmpty(): boolean;
|
|
8
|
+
peek(): T | undefined;
|
|
9
|
+
push(value: T): void;
|
|
10
|
+
pop(): T | null;
|
|
11
|
+
_parent(i: number): number;
|
|
12
|
+
_left(i: number): number;
|
|
13
|
+
_right(i: number): number;
|
|
14
|
+
_siftUp(): void;
|
|
15
|
+
_siftDown(): void;
|
|
16
|
+
_compare(i: number, j: number): boolean;
|
|
17
|
+
_swap(i: number, j: number): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WasmDispatchRegistry, WasmKernel, RegisterableKernel } from './wasm-types.js';
|
|
2
|
+
export declare class WasmDispatch implements WasmDispatchRegistry {
|
|
3
|
+
readonly kernels: Map<string, WasmKernel>;
|
|
4
|
+
wasmInstance: WebAssembly.Instance | null;
|
|
5
|
+
memory: WebAssembly.Memory | null;
|
|
6
|
+
constructor();
|
|
7
|
+
register(operation: string, dataType: string, kernel: RegisterableKernel): void;
|
|
8
|
+
lookup(operation: string, dataType: string): WasmKernel | null;
|
|
9
|
+
has(operation: string, dataType: string): boolean;
|
|
10
|
+
setInstance(instance: WebAssembly.Instance, memory: WebAssembly.Memory): void;
|
|
11
|
+
listKernels(): string[];
|
|
12
|
+
}
|
|
13
|
+
export declare const globalDispatch: WasmDispatch;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WasmExports } from '../wasm-types.js';
|
|
2
|
+
export declare function makeFilterKernel<T extends Int32Array | Float64Array>(exportName: keyof WasmExports, byteWidth: number): (data: T, value: number) => Promise<Uint32Array>;
|
|
3
|
+
export declare function makeBetweenKernel<T extends Int32Array | Float64Array>(exportName: keyof WasmExports, byteWidth: number): (data: T, low: number, high: number) => Promise<Uint32Array>;
|
|
4
|
+
export declare function makeScalarAggKernel<T extends Int32Array | Float64Array>(exportName: keyof WasmExports, byteWidth: number): (data: T) => Promise<number>;
|
|
5
|
+
export declare function makeVecOpF64(exportName: keyof WasmExports): (a: Float64Array, b: Float64Array) => Promise<Float64Array>;
|
|
6
|
+
export declare function makeScalarOpF64(exportName: keyof WasmExports): (data: Float64Array, scalar: number) => Promise<Float64Array>;
|
|
7
|
+
export declare function makeScalarOpRevF64(exportName: keyof WasmExports): (scalar: number, data: Float64Array) => Promise<Float64Array>;
|
|
8
|
+
export declare function makeUnaryOpF64(exportName: keyof WasmExports): (data: Float64Array) => Promise<Float64Array>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const wasmSumI32: (data: Int32Array<ArrayBufferLike>) => Promise<number>;
|
|
2
|
+
export declare const wasmSumF64: (data: Float64Array<ArrayBufferLike>) => Promise<number>;
|
|
3
|
+
export declare const wasmMinI32: (data: Int32Array<ArrayBufferLike>) => Promise<number>;
|
|
4
|
+
export declare const wasmMaxI32: (data: Int32Array<ArrayBufferLike>) => Promise<number>;
|
|
5
|
+
export declare const wasmMinF64: (data: Float64Array<ArrayBufferLike>) => Promise<number>;
|
|
6
|
+
export declare const wasmMaxF64: (data: Float64Array<ArrayBufferLike>) => Promise<number>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const wasmVecAddF64: (a: Float64Array, b: Float64Array) => Promise<Float64Array>;
|
|
2
|
+
export declare const wasmVecSubF64: (a: Float64Array, b: Float64Array) => Promise<Float64Array>;
|
|
3
|
+
export declare const wasmVecMulF64: (a: Float64Array, b: Float64Array) => Promise<Float64Array>;
|
|
4
|
+
export declare const wasmVecDivF64: (a: Float64Array, b: Float64Array) => Promise<Float64Array>;
|
|
5
|
+
export declare const wasmScalarAddF64: (data: Float64Array, scalar: number) => Promise<Float64Array>;
|
|
6
|
+
export declare const wasmScalarSubF64: (data: Float64Array, scalar: number) => Promise<Float64Array>;
|
|
7
|
+
export declare const wasmScalarMulF64: (data: Float64Array, scalar: number) => Promise<Float64Array>;
|
|
8
|
+
export declare const wasmScalarDivF64: (data: Float64Array, scalar: number) => Promise<Float64Array>;
|
|
9
|
+
export declare const wasmScalarSubRevF64: (scalar: number, data: Float64Array) => Promise<Float64Array>;
|
|
10
|
+
export declare const wasmScalarDivRevF64: (scalar: number, data: Float64Array) => Promise<Float64Array>;
|
|
11
|
+
export declare const wasmNegF64: (data: Float64Array) => Promise<Float64Array>;
|
|
12
|
+
export declare function wasmWidenI32ToF64(data: Int32Array): Promise<Float64Array>;
|
|
13
|
+
export declare function wasmCountBits(bitmap: Uint8Array, bitCount: number): Promise<number>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const wasmFilterEqF64: (data: Float64Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
2
|
+
export declare const wasmFilterLtF64: (data: Float64Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
3
|
+
export declare const wasmFilterGtF64: (data: Float64Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
4
|
+
export declare const wasmFilterLeF64: (data: Float64Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
5
|
+
export declare const wasmFilterGeF64: (data: Float64Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
6
|
+
export declare const wasmFilterBetweenF64: (data: Float64Array<ArrayBufferLike>, low: number, high: number) => Promise<Uint32Array>;
|
|
7
|
+
export declare const wasmFilterLeI32: (data: Int32Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
8
|
+
export declare const wasmFilterGeI32: (data: Int32Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const wasmFilterEqI32: (data: Int32Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
2
|
+
export declare const wasmFilterLtI32: (data: Int32Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
3
|
+
export declare const wasmFilterGtI32: (data: Int32Array<ArrayBufferLike>, value: number) => Promise<Uint32Array>;
|
|
4
|
+
export declare const wasmFilterBetweenI32: (data: Int32Array<ArrayBufferLike>, low: number, high: number) => Promise<Uint32Array>;
|
|
5
|
+
export declare const wasmSumF64: (data: Float64Array<ArrayBufferLike>) => Promise<number>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { WasmLoaderBase } from './wasm-loader-base.js';
|
|
2
|
+
import type { ByteSource } from './wasm-types.js';
|
|
3
|
+
export interface WasmLoaderInitOptions {
|
|
4
|
+
shared?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class WasmLoader extends WasmLoaderBase {
|
|
7
|
+
byteSource: ByteSource;
|
|
8
|
+
memory: WebAssembly.Memory | null;
|
|
9
|
+
shared: boolean;
|
|
10
|
+
bumpOffset: number;
|
|
11
|
+
constructor(byteSource: ByteSource);
|
|
12
|
+
init(_options?: WasmLoaderInitOptions): Promise<void>;
|
|
13
|
+
fetchModuleBytes(name: string): Promise<Uint8Array>;
|
|
14
|
+
}
|
|
15
|
+
export declare function configureWasmSource(byteSource: ByteSource): void;
|
|
16
|
+
export declare function getGlobalLoader(options?: WasmLoaderInitOptions): Promise<WasmLoader>;
|
|
17
|
+
export declare function resetGlobalLoader(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function nodeByteSource(name: string): Promise<Uint8Array>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { RegionDescriptor, RegionBounds, RegionUsage } from './wasm-types.js';
|
|
2
|
+
export declare class RegionAllocator {
|
|
3
|
+
memory: WebAssembly.Memory;
|
|
4
|
+
regionSize: number;
|
|
5
|
+
regions: RegionDescriptor[];
|
|
6
|
+
totalAllocated: number;
|
|
7
|
+
stagingOffset: number;
|
|
8
|
+
dataOffset: number;
|
|
9
|
+
dataBaseOffset: number;
|
|
10
|
+
constructor(memory: WebAssembly.Memory, regionSize: number);
|
|
11
|
+
addRegion(): number;
|
|
12
|
+
alloc(regionId: number, bytes: number): number;
|
|
13
|
+
reset(regionId: number): void;
|
|
14
|
+
getRegionBounds(regionId: number): RegionBounds;
|
|
15
|
+
getRegionUsage(regionId: number): RegionUsage;
|
|
16
|
+
regionCount(): number;
|
|
17
|
+
_growRegion(regionId: number, needed: number): void;
|
|
18
|
+
allocData(bytes: number): number;
|
|
19
|
+
resetData(): void;
|
|
20
|
+
allocStaging(bytes: number): number;
|
|
21
|
+
resetStaging(): void;
|
|
22
|
+
_ensureMemory(requiredBytes: number): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function registerAllKernels(): void;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { RegionAllocatorLike, TypedArrayCtor } from './wasm-types.js';
|
|
2
|
+
export declare const WASM_PAGE_SIZE = 65536;
|
|
3
|
+
export declare const INITIAL_PAGES = 256;
|
|
4
|
+
export declare const MAX_PAGES = 16384;
|
|
5
|
+
export declare abstract class WasmLoaderBase {
|
|
6
|
+
memory: WebAssembly.Memory | null;
|
|
7
|
+
instances: Map<string, WebAssembly.Instance>;
|
|
8
|
+
modules: Map<string, WebAssembly.Module>;
|
|
9
|
+
moduleBytes: Map<string, Uint8Array>;
|
|
10
|
+
bumpOffset: number;
|
|
11
|
+
regionAllocator: RegionAllocatorLike | null;
|
|
12
|
+
shared: boolean;
|
|
13
|
+
constructor();
|
|
14
|
+
abstract init(): Promise<void>;
|
|
15
|
+
initRegions(regionSize: number): RegionAllocatorLike;
|
|
16
|
+
fetchModuleBytes(_name: string): Promise<Uint8Array>;
|
|
17
|
+
loadModule(name: string): Promise<WebAssembly.Instance>;
|
|
18
|
+
getModule(name: string): WebAssembly.Module | null;
|
|
19
|
+
getModuleBytes(name: string): Uint8Array | null;
|
|
20
|
+
alloc(bytes: number): number;
|
|
21
|
+
reset(): void;
|
|
22
|
+
getBuffer(): ArrayBufferLike;
|
|
23
|
+
isShared(): boolean;
|
|
24
|
+
isWasmBacked(data: Int32Array | Float64Array): boolean;
|
|
25
|
+
allocTypedArray<T extends Int32Array | Float64Array | Uint32Array | Uint8Array>(TypedArrayCtor: TypedArrayCtor<T>, length: number): T | null;
|
|
26
|
+
resolveDataPtr(data: Int32Array | Float64Array, byteWidth: number): number;
|
|
27
|
+
writeI32Array(data: Int32Array, ptr: number): void;
|
|
28
|
+
writeF64Array(data: Float64Array, ptr: number): void;
|
|
29
|
+
readI32Array(ptr: number, length: number): Int32Array;
|
|
30
|
+
readF64Array(ptr: number, length: number): Float64Array;
|
|
31
|
+
readF64(ptr: number): number;
|
|
32
|
+
readU32Array(ptr: number, length: number): Uint32Array;
|
|
33
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export type WasmKernelFn = (...args: number[]) => number;
|
|
2
|
+
export interface WasmExports extends WebAssembly.Exports {
|
|
3
|
+
readonly memory: WebAssembly.Memory;
|
|
4
|
+
readonly filterEqI32: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
5
|
+
readonly filterLtI32: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
6
|
+
readonly filterGtI32: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
7
|
+
readonly filterLeI32: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
8
|
+
readonly filterGeI32: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
9
|
+
readonly filterBetweenI32: (dataPtr: number, selVecPtr: number, count: number, low: number, high: number) => number;
|
|
10
|
+
readonly filterEqF64: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
11
|
+
readonly filterLtF64: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
12
|
+
readonly filterGtF64: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
13
|
+
readonly filterLeF64: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
14
|
+
readonly filterGeF64: (dataPtr: number, selVecPtr: number, count: number, value: number) => number;
|
|
15
|
+
readonly filterBetweenF64: (dataPtr: number, selVecPtr: number, count: number, low: number, high: number) => number;
|
|
16
|
+
readonly sumI32: (dataPtr: number, count: number) => number;
|
|
17
|
+
readonly sumF64: (dataPtr: number, count: number) => number;
|
|
18
|
+
readonly minI32: (dataPtr: number, count: number) => number;
|
|
19
|
+
readonly maxI32: (dataPtr: number, count: number) => number;
|
|
20
|
+
readonly minF64: (dataPtr: number, count: number) => number;
|
|
21
|
+
readonly maxF64: (dataPtr: number, count: number) => number;
|
|
22
|
+
readonly vecAddF64: (aPtr: number, bPtr: number, outPtr: number, count: number) => void;
|
|
23
|
+
readonly vecSubF64: (aPtr: number, bPtr: number, outPtr: number, count: number) => void;
|
|
24
|
+
readonly vecMulF64: (aPtr: number, bPtr: number, outPtr: number, count: number) => void;
|
|
25
|
+
readonly vecDivF64: (aPtr: number, bPtr: number, outPtr: number, count: number) => void;
|
|
26
|
+
readonly scalarAddF64: (dataPtr: number, scalar: number, outPtr: number, count: number) => void;
|
|
27
|
+
readonly scalarSubF64: (dataPtr: number, scalar: number, outPtr: number, count: number) => void;
|
|
28
|
+
readonly scalarMulF64: (dataPtr: number, scalar: number, outPtr: number, count: number) => void;
|
|
29
|
+
readonly scalarDivF64: (dataPtr: number, scalar: number, outPtr: number, count: number) => void;
|
|
30
|
+
readonly scalarSubRevF64: (scalar: number, dataPtr: number, outPtr: number, count: number) => void;
|
|
31
|
+
readonly scalarDivRevF64: (scalar: number, dataPtr: number, outPtr: number, count: number) => void;
|
|
32
|
+
readonly widenI32ToF64: (dataPtr: number, outPtr: number, count: number) => void;
|
|
33
|
+
readonly negF64: (dataPtr: number, outPtr: number, count: number) => void;
|
|
34
|
+
readonly countBitmapBits: (bitmapPtr: number, bitCount: number) => number;
|
|
35
|
+
}
|
|
36
|
+
export type WasmModuleName = 'core';
|
|
37
|
+
export interface RegionDescriptor {
|
|
38
|
+
id: number;
|
|
39
|
+
start: number;
|
|
40
|
+
capacity: number;
|
|
41
|
+
offset: number;
|
|
42
|
+
}
|
|
43
|
+
export interface RegionBounds {
|
|
44
|
+
start: number;
|
|
45
|
+
end: number;
|
|
46
|
+
}
|
|
47
|
+
export interface RegionUsage {
|
|
48
|
+
used: number;
|
|
49
|
+
capacity: number;
|
|
50
|
+
free: number;
|
|
51
|
+
}
|
|
52
|
+
export interface RegionAllocatorLike {
|
|
53
|
+
readonly memory: WebAssembly.Memory;
|
|
54
|
+
readonly regionSize: number;
|
|
55
|
+
addRegion(): number;
|
|
56
|
+
alloc(regionId: number, bytes: number): number;
|
|
57
|
+
reset(regionId: number): void;
|
|
58
|
+
getRegionBounds(regionId: number): RegionBounds;
|
|
59
|
+
getRegionUsage(regionId: number): RegionUsage;
|
|
60
|
+
regionCount(): number;
|
|
61
|
+
allocData(bytes: number): number;
|
|
62
|
+
resetData(): void;
|
|
63
|
+
allocStaging(bytes: number): number;
|
|
64
|
+
resetStaging(): void;
|
|
65
|
+
}
|
|
66
|
+
export type TypedArrayCtor<T extends Int32Array | Float64Array | Uint32Array | Uint8Array> = {
|
|
67
|
+
new (buffer: ArrayBufferLike, byteOffset: number, length: number): T;
|
|
68
|
+
readonly BYTES_PER_ELEMENT: number;
|
|
69
|
+
};
|
|
70
|
+
export interface WasmLoaderLike {
|
|
71
|
+
memory: WebAssembly.Memory | null;
|
|
72
|
+
loadModule(name: string): Promise<WebAssembly.Instance>;
|
|
73
|
+
getModule(name: string): WebAssembly.Module | null;
|
|
74
|
+
getModuleBytes(name: string): Uint8Array | null;
|
|
75
|
+
alloc(bytes: number): number;
|
|
76
|
+
reset(): void;
|
|
77
|
+
getBuffer(): ArrayBufferLike;
|
|
78
|
+
isShared(): boolean;
|
|
79
|
+
isWasmBacked(data: Int32Array | Float64Array): boolean;
|
|
80
|
+
resolveDataPtr(data: Int32Array | Float64Array, byteWidth: number): number;
|
|
81
|
+
writeI32Array(data: Int32Array, ptr: number): void;
|
|
82
|
+
writeF64Array(data: Float64Array, ptr: number): void;
|
|
83
|
+
readI32Array(ptr: number, length: number): Int32Array;
|
|
84
|
+
readF64Array(ptr: number, length: number): Float64Array;
|
|
85
|
+
readF64(ptr: number): number;
|
|
86
|
+
readU32Array(ptr: number, length: number): Uint32Array;
|
|
87
|
+
}
|
|
88
|
+
export type ByteSource = (name: string) => Promise<Uint8Array> | Uint8Array;
|
|
89
|
+
export type WasmVecData = Float64Array | Int32Array;
|
|
90
|
+
export type WasmKernelArg = Float64Array | Int32Array | Uint8Array | number;
|
|
91
|
+
export type WasmKernelResult = Float64Array | Int32Array | Uint32Array | number;
|
|
92
|
+
export type WasmKernel = (a: WasmVecData | number, b?: WasmVecData | number) => WasmVecData | Promise<WasmVecData>;
|
|
93
|
+
export type RegisterableKernel = {
|
|
94
|
+
register(a: WasmKernelArg, b?: WasmKernelArg, c?: WasmKernelArg): Promise<WasmKernelResult> | WasmKernelResult;
|
|
95
|
+
}['register'];
|
|
96
|
+
export interface WasmDispatchRegistry {
|
|
97
|
+
readonly kernels: Map<string, WasmKernel>;
|
|
98
|
+
register(operation: string, dataType: string, kernel: RegisterableKernel): void;
|
|
99
|
+
lookup(operation: string, dataType: string): WasmKernel | null;
|
|
100
|
+
has(operation: string, dataType: string): boolean;
|
|
101
|
+
setInstance(instance: WebAssembly.Instance, memory: WebAssembly.Memory): void;
|
|
102
|
+
listKernels(): string[];
|
|
103
|
+
}
|