Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 13 additions & 1 deletion fizarrita/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@fideus-labs/fizarrita",
"version": "1.2.0",
"version": "1.3.0",
"description": "Worker-pool-accelerated get/set for zarrita.js — offloads codec encode/decode to Web Workers.",
"type": "module",
"main": "./dist/index.js",
Expand All @@ -13,6 +13,18 @@
"./codec-worker": {
"types": "./dist/codec-worker.d.ts",
"import": "./dist/codec-worker.js"
},
"./internals/codec-pipeline": {
"types": "./dist/internals/codec-pipeline.d.ts",
"import": "./dist/internals/codec-pipeline.js"
},
"./internals/setter": {
"types": "./dist/internals/setter.d.ts",
"import": "./dist/internals/setter.js"
},
"./internals/util": {
"types": "./dist/internals/util.d.ts",
"import": "./dist/internals/util.js"
}
},
"files": [
Expand Down
12 changes: 6 additions & 6 deletions fizarrita/src/get-worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import { workerDecode, workerDecodeInto, getMetaId } from './worker-rpc.js'
* Default URL for the codec worker. Uses `import.meta.url` to resolve
* relative to this module.
*/
const DEFAULT_WORKER_URL = new URL('./codec-worker.js', import.meta.url)
export const DEFAULT_WORKER_URL = new URL('./codec-worker.js', import.meta.url)

/** Shared TextDecoder instance. */
const decoder = new TextDecoder()
Expand All @@ -54,14 +54,14 @@ const NULL_CACHE: ChunkCache = {
const storeIdMap = new WeakMap<object, number>()
let storeIdCounter = 0

function getStoreId(store: Readable): string {
export function getStoreId(store: Readable): string {
if (!storeIdMap.has(store)) {
storeIdMap.set(store, storeIdCounter++)
}
return `store_${storeIdMap.get(store)}`
}

function createCacheKey<D extends DataType, Store extends Readable>(
export function createCacheKey<D extends DataType, Store extends Readable>(
arr: ZarrArray<D, Store>,
encodeChunkKey: (chunk_coords: number[]) => string,
chunk_coords: number[],
Expand All @@ -75,13 +75,13 @@ function createCacheKey<D extends DataType, Store extends Readable>(
// Unified metadata reader — reads zarr.json once, returns everything needed
// ---------------------------------------------------------------------------

interface ArrayMetadata {
export interface ArrayMetadata {
codecMeta: CodecChunkMeta
encodeChunkKey: (chunk_coords: number[]) => string
fillValue: Scalar<DataType> | null
}

async function readArrayMetadata<D extends DataType, Store extends Readable>(
export async function readArrayMetadata<D extends DataType, Store extends Readable>(
arr: ZarrArray<D, Store>,
): Promise<ArrayMetadata> {
const store = arr.store
Expand Down Expand Up @@ -526,7 +526,7 @@ async function validateCandidateChunkShape<D extends DataType, Store extends Rea
* Returns the corrected chunk shape, or the metadata chunk shape if no
* correction is needed or possible.
*/
async function probeActualChunkShape<D extends DataType, Store extends Readable>(
export async function probeActualChunkShape<D extends DataType, Store extends Readable>(
arr: ZarrArray<D, Store>,
encodeChunkKey: (chunk_coords: number[]) => string,
codecMeta: CodecChunkMeta,
Expand Down
37 changes: 36 additions & 1 deletion fizarrita/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,46 @@
* WorkerPool with bounded concurrency.
*/

export { getWorker, readZstdFrameContentSize, readBloscFrameContentSize, inferChunkShape } from './get-worker.js'
export {
getWorker,
readZstdFrameContentSize,
readBloscFrameContentSize,
inferChunkShape,
DEFAULT_WORKER_URL,
readArrayMetadata,
probeActualChunkShape,
createCacheKey,
getStoreId,
} from './get-worker.js'
export type { ArrayMetadata } from './get-worker.js'
export { setWorker } from './set-worker.js'
export type {
GetWorkerOptions,
SetWorkerOptions,
CodecChunkMeta,
ChunkCache,
Projection,
Indices,
} from './types.js'

// Internals — exported for building custom workers that extend the codec worker
export { create_codec_pipeline } from './internals/codec-pipeline.js'
export {
get_ctr,
get_strides,
create_chunk_key_encoder,
createBuffer,
assertSharedArrayBufferAvailable,
} from './internals/util.js'
export type { ChunkKeyEncoding } from './internals/util.js'
export { setter, compat_chunk, set_from_chunk_binary } from './internals/setter.js'
export {
BasicIndexer,
normalize_selection,
slice,
slice_indices,
} from './internals/indexer.js'
export type { ChunkProjection, IndexerProjection } from './internals/indexer.js'

// Worker RPC helpers — for composing custom workers
export { workerDecode, workerDecodeInto, workerEncode, getMetaId } from './worker-rpc.js'
Loading