diff --git a/README.md b/README.md index 67aaae1..0b6d54d 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,11 @@ Hyparquet allows you to read and extract data from Parquet files directly in Jav Online parquet file reader demo available at: -https://hyparam.github.io/hyparquet/ +https://hyparam.github.io/hyperparam-cli/apps/hyparquet-demo/ -[![hyparquet demo](demo/assets/demo.png)](https://hyparam.github.io/hyparquet/) +[![hyparquet demo](./demo.png)](https://hyparam.github.io/hyperparam-cli/apps/hyparquet-demo/) + +See the [source code](https://github.com/hyparam/hyperparam-cli/tree/master/apps/hyparquet-demo). ## Features diff --git a/demo/assets/demo.png b/demo.png similarity index 100% rename from demo/assets/demo.png rename to demo.png diff --git a/demo/App.tsx b/demo/App.tsx deleted file mode 100644 index 9a31571..0000000 --- a/demo/App.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import HighTable, { DataFrame, rowCache } from 'hightable' -import React, { useEffect, useState } from 'react' -import { FileMetaData, parquetMetadataAsync, parquetSchema } from '../src/metadata.js' -import { byteLengthFromUrl } from '../src/utils.js' -import Dropdown from './Dropdown.js' -import Dropzone from './Dropzone.js' -import Layout from './Layout.js' -import ParquetLayout from './ParquetLayout.js' -import ParquetMetadata from './ParquetMetadata.js' -import { AsyncBufferFrom, asyncBufferFrom, parquetQueryWorker } from './workers/parquetWorkerClient.js' - -type Lens = 'table' | 'metadata' | 'layout' - -/** - * Hyparquet demo viewer page - * @param {Object} props - * @param {string} [props.url] - * @returns {ReactNode} - */ -export default function App({ url }: { url?: string }) { - const [progress, setProgress] = useState() - const [error, setError] = useState() - const [df, setDf] = useState() - const [name, setName] = useState() - const [lens, setLens] = useState('table') - const [metadata, setMetadata] = useState() - const [byteLength, setByteLength] = useState() - - useEffect(() => { - if (!df && url) { - onUrlDrop(url) - } - }, [ url ]) - - async function onFileDrop(file: File) { - // Clear query string - history.pushState({}, '', location.pathname) - setAsyncBuffer(file.name, { file, byteLength: file.size }) - } - async function onUrlDrop(url: string) { - // Add key=url to query string - const params = new URLSearchParams(location.search) - params.set('key', url) - history.pushState({}, '', `${location.pathname}?${params}`) - try { - const byteLength = await byteLengthFromUrl(url) - setAsyncBuffer(url, { url, byteLength }) - } catch (e) { - setError(e as Error) - } - } - async function setAsyncBuffer(name: string, from: AsyncBufferFrom) { - // TODO: Replace welcome with spinner - const asyncBuffer = await asyncBufferFrom(from) - const metadata = await parquetMetadataAsync(asyncBuffer) - setMetadata(metadata) - setName(name) - setByteLength(from.byteLength) - let df = parquetDataFrame(from, metadata) - df = rowCache(df) - setDf(df) - document.getElementById('welcome')?.remove() - } - - return - setError(e)} - onFileDrop={onFileDrop} - onUrlDrop={onUrlDrop}> - {metadata && df && <> -
{name}
-
- {byteLength !== undefined && {formatFileSize(byteLength)}} - {df.numRows.toLocaleString()} rows - - - - - -
- {lens === 'table' && } - {lens === 'metadata' && } - {lens === 'layout' && } - } -
-
-} - -/** - * Convert a parquet file into a dataframe. - */ -function parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData): DataFrame { - const { children } = parquetSchema(metadata) - return { - header: children.map(child => child.element.name), - numRows: Number(metadata.num_rows), - /** - * @param {number} rowStart - * @param {number} rowEnd - * @param {string} orderBy - * @returns {Promise} - */ - rows(rowStart, rowEnd, orderBy) { - console.log(`reading rows ${rowStart}-${rowEnd}`, orderBy) - return parquetQueryWorker({ from, metadata, rowStart, rowEnd, orderBy }) - }, - sortable: true, - } -} - -/** - * Returns the file size in human readable format. - * - * @param {number} bytes file size in bytes - * @returns {string} formatted file size string - */ -function formatFileSize(bytes: number): string { - const sizes = ['b', 'kb', 'mb', 'gb', 'tb'] - if (bytes === 0) return '0 b' - const i = Math.floor(Math.log2(bytes) / 10) - if (i === 0) return bytes + ' b' - const base = bytes / Math.pow(1024, i) - return (base < 10 ? base.toFixed(1) : Math.round(base)) + ' ' + sizes[i] -} diff --git a/demo/Dropdown.tsx b/demo/Dropdown.tsx deleted file mode 100644 index 6f87449..0000000 --- a/demo/Dropdown.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react' -import { ReactNode, useEffect, useRef, useState } from 'react' -import { cn } from './Layout.js' - -interface DropdownProps { - label?: string - className?: string - children: ReactNode -} - -/** - * Dropdown menu component. - * - * @param {Object} props - * @param {string} props.label - button label - * @param {string} props.className - custom class name for the dropdown container - * @param {ReactNode} props.children - dropdown menu items - * @returns {ReactNode} - * @example - * - * - * - * - */ -export default function Dropdown({ label, className, children }: DropdownProps) { - const [isOpen, setIsOpen] = useState(false) - const dropdownRef = useRef(null) - const menuRef = useRef(null) - - function toggleDropdown() { - setIsOpen(!isOpen) - } - - useEffect(() => { - function handleClickInside(event: MouseEvent) { - const target = event.target as Element - if (menuRef.current && menuRef.current.contains(target) && target?.tagName !== 'INPUT') { - setIsOpen(false) - } - } - function handleClickOutside(event: MouseEvent) { - if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { - setIsOpen(false) - } - } - function handleEscape(event: KeyboardEvent) { - if (event.key === 'Escape') { - setIsOpen(false) - } - } - document.addEventListener('click', handleClickInside) - document.addEventListener('keydown', handleEscape) - document.addEventListener('mousedown', handleClickOutside) - return () => { - document.removeEventListener('click', handleClickInside) - document.removeEventListener('keydown', handleEscape) - document.removeEventListener('mousedown', handleClickOutside) - } - }, []) - - return ( -
- -
- {children} -
-
- ) -} diff --git a/demo/Dropzone.tsx b/demo/Dropzone.tsx deleted file mode 100644 index 28aa2c9..0000000 --- a/demo/Dropzone.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import React from 'react' -import { ReactNode, useEffect, useRef, useState } from 'react' - -interface DropzoneProps { - children: ReactNode - onFileDrop: (file: File) => void - onUrlDrop: (url: string) => void - onError: (error: Error) => void -} - -/** - * A dropzone component for uploading files. - * - * Shows a fullscreen overlay when files are dragged over the dropzone. - * - * You can have an element inside the dropzone that triggers the file input - * dialog when clicked by adding the class 'dropzone-select' to it. - * - * @param {Object} props - * @param {ReactNode} props.children - message to display in dropzone. - * @param {Function} props.onFileDrop - called when a file is dropped. - * @param {Function} props.onUrlDrop - called when a url is dropped. - * @param {Function} props.onError - called when an error occurs. - * @returns {ReactNode} - */ -export default function Dropzone({ children, onFileDrop, onUrlDrop, onError }: DropzoneProps) { - const dropzoneRef = useRef(null) - const fileInputRef = useRef(null) - // number of dragenter events minus dragleave events - const [enters, setEnters] = useState(0) - - /** - * Trigger file input dialog. - * @param {MouseEvent} e - click - */ - function triggerFileSelect(e: React.MouseEvent) { - // If click inside '.dropzone', activate file input dialog - if ((e.target as Element).classList.contains('dropzone')) { - fileInputRef.current?.click() - } - } - - /** - * Handle file selection event. - * Recursively upload files and directories, in parallel. - * @param {ChangeEvent} e - * @returns {void} - */ - function handleFileSelect(e: React.ChangeEvent) { - const { files } = e.target - if (!files || files.length !== 1) return - onFileDrop(files[0]) - } - - useEffect(() => { - const dropzone = dropzoneRef.current - if (!dropzone) return - - // Attach drag-and-drop event listeners - function onDragEnter(e: DragEvent) { - // check if any of the items are files (not strings) - const items = e.dataTransfer?.items - if (!items) return - if (!Array.from(items).some(item => item.kind === 'file')) return - setEnters(enters => enters + 1) - } - function onDragOver(e: DragEvent) { - e.preventDefault() - } - function onDragLeave(e: DragEvent) { - const items = e.dataTransfer?.items - if (!items) return - if (!Array.from(items).some(item => item.kind === 'file')) return - setEnters(enters => enters - 1) - } - function handleFileDrop(e: DragEvent) { - e.preventDefault() - setEnters(0) - - if (!e.dataTransfer) throw new Error('Missing dataTransfer') - const { files, items } = e.dataTransfer - if (files.length > 0) { - const file = files[0] - onFileDrop(file) - } - if (items.length > 0) { - const item = items[0] - if (item.kind === 'string') { - item.getAsString(url => { - if (url.startsWith('http')) { - onUrlDrop(url) - } - }) - } - } - } - - window.addEventListener('dragenter', onDragEnter) - window.addEventListener('dragover', onDragOver) - window.addEventListener('dragleave', onDragLeave) - dropzone.addEventListener('drop', handleFileDrop) - - // Cleanup event listeners when component is unmounted - return () => { - window.removeEventListener('dragenter', onDragEnter) - window.removeEventListener('dragover', onDragOver) - window.removeEventListener('dragleave', onDragLeave) - dropzone.removeEventListener('drop', handleFileDrop) - } - }) - - return ( -
0 ? 'dropzone hover' : 'dropzone'} - onClick={triggerFileSelect} - ref={dropzoneRef}> - {children} -
-
-
Drop files to view. 👀
-
-
- -
- ) -} diff --git a/demo/Layout.tsx b/demo/Layout.tsx deleted file mode 100644 index d211f26..0000000 --- a/demo/Layout.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, { ReactNode, useEffect } from 'react' - -interface LayoutProps { - children: ReactNode - className?: string - progress?: number - error?: Error -} - -/** - * Layout for shared UI. - * Content div style can be overridden by className prop. - * - * @param {Object} props - * @param {ReactNode} props.children - content to display inside the layout - * @param {string | undefined} props.className - additional class names to apply to the content container - * @param {number | undefined} props.progress - progress bar value - * @param {Error} props.error - error message to display - * @returns {ReactNode} - */ -export default function Layout({ children, className, progress, error }: LayoutProps) { - const errorMessage = error?.toString() - if (error) console.error(error) - - useEffect(() => { - document.title = 'hyparquet demo - apache parquet file viewer online' - }, []) - - return <> -
-
- {children} -
-
{errorMessage}
-
- {progress !== undefined && progress < 1 && -
-
-
- } - -} - -/** - * Helper function to join class names. - * Filters out falsy values and joins the rest. - * - * @param {...string | undefined | false} names - class name(s) to join - * @returns {string} - */ -export function cn(...names: (string | undefined | false)[]): string { - return names.filter(n => n).join(' ') -} - -export function Spinner({ className }: { className: string }) { - return
-} diff --git a/demo/ParquetLayout.tsx b/demo/ParquetLayout.tsx deleted file mode 100644 index fae5a4a..0000000 --- a/demo/ParquetLayout.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import React, { ReactNode } from 'react' -import { getColumnRange } from '../src/column.js' -import type { FileMetaData } from '../src/metadata.js' -import { ColumnChunk } from '../src/types.js' - -interface LayoutProps { - byteLength: number - metadata: FileMetaData -} - -/** - * Renders the file layout of a parquet file as nested rowgroups and columns. - * @param {Object} props - * @param {number} props.byteLength - * @param {FileMetaData} props.metadata - * @returns {ReactNode} - */ -export default function ParquetLayout({ byteLength, metadata }: LayoutProps) { - const metadataStart = byteLength - metadata.metadata_length - 4 - const metadataEnd = byteLength - 4 - - return
-
- - - - - -
-
-} - - -function Cell({ name, start, end }: { name: string, start: N, end: N }) { - const bytes = end - start - return
- -
    -
  • start {start.toLocaleString()}
  • -
  • bytes {bytes.toLocaleString()}
  • -
  • end {end.toLocaleString()}
  • -
-
-} - -function Group({ children, name, bytes }: { children: ReactNode, name?: string, bytes?: bigint }) { - return
-
- - {bytes === undefined ? '' : `bytes ${bytes.toLocaleString()}`} -
- {children} -
-} - -function RowGroups({ metadata }: { metadata: FileMetaData }) { - return <> - {metadata.row_groups.map((rowGroup, i) => ( - - {rowGroup.columns.map((column, j) => ( - - ))} - - ))} - -} - -function Column({ key, column }: { key: number, column: ColumnChunk }) { - if (!column.meta_data) return null - const end = getColumnRange(column.meta_data)[1] - const pages = [ - { name: 'Dictionary', offset: column.meta_data.dictionary_page_offset }, - { name: 'Data', offset: column.meta_data.data_page_offset }, - { name: 'Index', offset: column.meta_data.index_page_offset }, - { name: 'End', offset: end }, - ] - .filter(({ offset }) => offset !== undefined) - .sort((a, b) => Number(a.offset) - Number(b.offset)) - - const children = pages.slice(0, -1).map(({ name, offset }, index) => ( - - )) - - - return - {children} - -} - -function ColumnIndexes({ metadata }: { metadata: FileMetaData }) { - const indexPages = [] - for (const rowGroup of metadata.row_groups) { - for (const column of rowGroup.columns) { - const columnName = column.meta_data?.path_in_schema.join('.') - if (column.column_index_offset) { - indexPages.push({ - name: `ColumnIndex ${columnName}`, - start: column.column_index_offset, - end: column.column_index_offset + BigInt(column.column_index_length || 0), - }) - } - if (column.offset_index_offset) { - indexPages.push({ - name: `OffsetIndex ${columnName}`, - start: column.offset_index_offset, - end: column.offset_index_offset + BigInt(column.offset_index_length || 0), - }) - } - } - } - - return - {indexPages.map(({ name, start, end }, index) => ( - - ))} - -} diff --git a/demo/ParquetMetadata.tsx b/demo/ParquetMetadata.tsx deleted file mode 100644 index 7aa8820..0000000 --- a/demo/ParquetMetadata.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import type { FileMetaData } from '../src/metadata.js' -import { toJson } from '../src/utils.js' - -interface MetadataProps { - metadata: FileMetaData -} - -/** - * Renders the metadata of a parquet file as JSON. - * @param {Object} props - * @param {FileMetaData} props.metadata - * @returns {ReactNode} - */ -export default function ParquetMetadata({ metadata }: MetadataProps) { - return - {JSON.stringify(toJson(metadata), null, ' ')} - -} diff --git a/demo/assets/audio.svg b/demo/assets/audio.svg deleted file mode 100644 index c9a4e13..0000000 --- a/demo/assets/audio.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/demo/assets/azure.svg b/demo/assets/azure.svg deleted file mode 100644 index 7ac89d0..0000000 --- a/demo/assets/azure.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/demo/assets/git.svg b/demo/assets/git.svg deleted file mode 100644 index 99de7a4..0000000 --- a/demo/assets/git.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/demo/assets/huggingface.svg b/demo/assets/huggingface.svg deleted file mode 100644 index 9b31c76..0000000 --- a/demo/assets/huggingface.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/demo/assets/hyparquet.mp3 b/demo/assets/hyparquet.mp3 deleted file mode 100644 index 17716e9..0000000 Binary files a/demo/assets/hyparquet.mp3 and /dev/null differ diff --git a/demo/assets/s3.svg b/demo/assets/s3.svg deleted file mode 100644 index 400f3c9..0000000 --- a/demo/assets/s3.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/demo/bundle.min.js b/demo/bundle.min.js deleted file mode 100644 index 3911e66..0000000 --- a/demo/bundle.min.js +++ /dev/null @@ -1,11 +0,0 @@ -!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e="undefined"!=typeof document?document.currentScript:null;function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n,r,l={exports:{}},a={};function o(){if(n)return a;n=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),i=Symbol.for("react.provider"),u=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function y(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},y.prototype=v.prototype;var w=b.prototype=new y;w.constructor=b,h(w,v.prototype),w.isPureReactComponent=!0;var _=Array.isArray,k=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function x(t,n,r){var l,a={},o=null,i=null;if(null!=n)for(l in void 0!==n.ref&&(i=n.ref),void 0!==n.key&&(o=""+n.key),n)k.call(n,l)&&!E.hasOwnProperty(l)&&(a[l]=n[l]);var u=arguments.length-2;if(1===u)a.children=r;else if(1>>1,a=e[r];if(!(0>>1;rl(u,n))sl(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else{if(!(sl(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function l(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var u=[],s=[],c=1,f=null,d=3,p=!1,m=!1,h=!1,g="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,y="undefined"!=typeof setImmediate?setImmediate:null;function b(e){for(var l=n(s);null!==l;){if(null===l.callback)r(s);else{if(!(l.startTime<=e))break;r(s),l.sortIndex=l.expirationTime,t(u,l)}l=n(s)}}function w(e){if(h=!1,b(e),!m)if(null!==n(u))m=!0,R(_);else{var t=n(s);null!==t&&z(w,t.startTime-e)}}function _(t,l){m=!1,h&&(h=!1,v(x),x=-1),p=!0;var a=d;try{for(b(l),f=n(u);null!==f&&(!(f.expirationTime>l)||t&&!L());){var o=f.callback;if("function"==typeof o){f.callback=null,d=f.priorityLevel;var i=o(f.expirationTime<=l);l=e.unstable_now(),"function"==typeof i?f.callback=i:f===n(u)&&r(u),b(l)}else r(u);f=n(u)}if(null!==f)var c=!0;else{var g=n(s);null!==g&&z(w,g.startTime-l),c=!1}return c}finally{f=null,d=a,p=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var k,S=!1,E=null,x=-1,C=5,N=-1;function L(){return!(e.unstable_now()-Ne||125o?(r.sortIndex=a,t(s,r),null===n(u)&&r===n(s)&&(h?(v(x),x=-1):h=!0,z(w,a-o))):(r.sortIndex=i,t(u,r),m||p||(m=!0,R(_))),r},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(e){var t=d;return function(){var n=d;d=t;try{return e.apply(this,arguments)}finally{d=n}}}}(b)),b)),y.exports} -/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */function _(){if(c)return v;c=1;var e=i(),t=w();function n(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
\n )\n}\n","import React, { ReactNode } from 'react'\nimport { getColumnRange } from '../src/column.js'\nimport type { FileMetaData } from '../src/metadata.js'\nimport { ColumnChunk } from '../src/types.js'\n\ninterface LayoutProps {\n byteLength: number\n metadata: FileMetaData\n}\n\n/**\n * Renders the file layout of a parquet file as nested rowgroups and columns.\n * @param {Object} props\n * @param {number} props.byteLength\n * @param {FileMetaData} props.metadata\n * @returns {ReactNode}\n */\nexport default function ParquetLayout({ byteLength, metadata }: LayoutProps) {\n const metadataStart = byteLength - metadata.metadata_length - 4\n const metadataEnd = byteLength - 4\n\n return
\n
\n \n \n \n \n \n
\n
\n}\n\n\nfunction Cell({ name, start, end }: { name: string, start: N, end: N }) {\n const bytes = end - start\n return
\n \n
    \n
  • start {start.toLocaleString()}
  • \n
  • bytes {bytes.toLocaleString()}
  • \n
  • end {end.toLocaleString()}
  • \n
\n
\n}\n\nfunction Group({ children, name, bytes }: { children: ReactNode, name?: string, bytes?: bigint }) {\n return
\n
\n \n {bytes === undefined ? '' : `bytes ${bytes.toLocaleString()}`}\n
\n {children}\n
\n}\n\nfunction RowGroups({ metadata }: { metadata: FileMetaData }) {\n return <>\n {metadata.row_groups.map((rowGroup, i) => (\n \n {rowGroup.columns.map((column, j) => (\n \n ))}\n \n ))}\n \n}\n\nfunction Column({ key, column }: { key: number, column: ColumnChunk }) {\n if (!column.meta_data) return null\n const end = getColumnRange(column.meta_data)[1]\n const pages = [\n { name: 'Dictionary', offset: column.meta_data.dictionary_page_offset },\n { name: 'Data', offset: column.meta_data.data_page_offset },\n { name: 'Index', offset: column.meta_data.index_page_offset },\n { name: 'End', offset: end },\n ]\n .filter(({ offset }) => offset !== undefined)\n .sort((a, b) => Number(a.offset) - Number(b.offset))\n\n const children = pages.slice(0, -1).map(({ name, offset }, index) => (\n \n ))\n\n\n return \n {children}\n \n}\n\nfunction ColumnIndexes({ metadata }: { metadata: FileMetaData }) {\n const indexPages = []\n for (const rowGroup of metadata.row_groups) {\n for (const column of rowGroup.columns) {\n const columnName = column.meta_data?.path_in_schema.join('.')\n if (column.column_index_offset) {\n indexPages.push({\n name: `ColumnIndex ${columnName}`,\n start: column.column_index_offset,\n end: column.column_index_offset + BigInt(column.column_index_length || 0),\n })\n }\n if (column.offset_index_offset) {\n indexPages.push({\n name: `OffsetIndex ${columnName}`,\n start: column.offset_index_offset,\n end: column.offset_index_offset + BigInt(column.offset_index_length || 0),\n })\n }\n }\n }\n\n return \n {indexPages.map(({ name, start, end }, index) => (\n \n ))}\n \n}\n","import { assembleLists } from './assemble.js'\nimport { convertWithDictionary } from './convert.js'\nimport { decompressPage, readDataPage, readDictionaryPage } from './datapage.js'\nimport { readDataPageV2 } from './datapageV2.js'\nimport { parquetHeader } from './header.js'\nimport { getMaxDefinitionLevel } from './schema.js'\nimport { concat } from './utils.js'\n\n/**\n * Parse column data from a buffer.\n *\n * @typedef {import('./types.js').ColumnMetaData} ColumnMetaData\n * @typedef {import('./types.js').DecodedArray} DecodedArray\n * @param {import('./types.js').DataReader} reader\n * @param {number} rowLimit maximum number of rows to read\n * @param {ColumnMetaData} columnMetadata column metadata\n * @param {import('./types.js').SchemaTree[]} schemaPath schema path for the column\n * @param {import('./hyparquet.js').ParquetReadOptions} options read options\n * @returns {any[]} array of values\n */\nexport function readColumn(reader, rowLimit, columnMetadata, schemaPath, { compressors, utf8 }) {\n const { element } = schemaPath[schemaPath.length - 1]\n /** @type {DecodedArray | undefined} */\n let dictionary = undefined\n /** @type {any[]} */\n const rowData = []\n\n while (rowData.length < rowLimit) {\n // parse column header\n const header = parquetHeader(reader)\n // assert(header.compressed_page_size !== undefined)\n\n // read compressed_page_size bytes starting at offset\n const compressedBytes = new Uint8Array(\n reader.view.buffer, reader.view.byteOffset + reader.offset, header.compressed_page_size\n )\n\n // parse page data by type\n /** @type {DecodedArray} */\n let values\n if (header.type === 'DATA_PAGE') {\n const daph = header.data_page_header\n if (!daph) throw new Error('parquet data page header is undefined')\n\n const page = decompressPage(compressedBytes, Number(header.uncompressed_page_size), columnMetadata.codec, compressors)\n const { definitionLevels, repetitionLevels, dataPage } = readDataPage(page, daph, schemaPath, columnMetadata)\n // assert(!daph.statistics?.null_count || daph.statistics.null_count === BigInt(daph.num_values - dataPage.length))\n\n // convert types, dereference dictionary, and assemble lists\n values = convertWithDictionary(dataPage, dictionary, element, daph.encoding, utf8)\n if (repetitionLevels.length || definitionLevels?.length) {\n const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath)\n const repetitionPath = schemaPath.map(({ element }) => element.repetition_type)\n assembleLists(\n rowData, definitionLevels, repetitionLevels, values, repetitionPath, maxDefinitionLevel\n )\n } else {\n // wrap nested flat data by depth\n for (let i = 2; i < schemaPath.length; i++) {\n if (schemaPath[i].element.repetition_type !== 'REQUIRED') {\n values = Array.from(values, e => [e])\n }\n }\n concat(rowData, values)\n }\n } else if (header.type === 'DATA_PAGE_V2') {\n const daph2 = header.data_page_header_v2\n if (!daph2) throw new Error('parquet data page header v2 is undefined')\n\n const { definitionLevels, repetitionLevels, dataPage } = readDataPageV2(\n compressedBytes, header, schemaPath, columnMetadata, compressors\n )\n\n // convert types, dereference dictionary, and assemble lists\n values = convertWithDictionary(dataPage, dictionary, element, daph2.encoding, utf8)\n if (repetitionLevels.length || definitionLevels?.length) {\n const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath)\n const repetitionPath = schemaPath.map(({ element }) => element.repetition_type)\n assembleLists(\n rowData, definitionLevels, repetitionLevels, values, repetitionPath, maxDefinitionLevel\n )\n } else {\n concat(rowData, values)\n }\n } else if (header.type === 'DICTIONARY_PAGE') {\n const diph = header.dictionary_page_header\n if (!diph) throw new Error('parquet dictionary page header is undefined')\n\n const page = decompressPage(\n compressedBytes, Number(header.uncompressed_page_size), columnMetadata.codec, compressors\n )\n dictionary = readDictionaryPage(page, diph, columnMetadata, element.type_length)\n } else {\n throw new Error(`parquet unsupported page type: ${header.type}`)\n }\n reader.offset += header.compressed_page_size\n }\n if (rowData.length < rowLimit) {\n throw new Error(`parquet row data length ${rowData.length} does not match row group limit ${rowLimit}}`)\n }\n if (rowData.length > rowLimit) {\n rowData.length = rowLimit // truncate to row limit\n }\n return rowData\n}\n\n/**\n * Find the start byte offset for a column chunk.\n *\n * @param {ColumnMetaData} columnMetadata\n * @returns {[bigint, bigint]} byte offset range\n */\nexport function getColumnRange({ dictionary_page_offset, data_page_offset, total_compressed_size }) {\n let columnOffset = dictionary_page_offset\n if (!columnOffset || data_page_offset < columnOffset) {\n columnOffset = data_page_offset\n }\n return [columnOffset, columnOffset + total_compressed_size]\n}\n","import React from 'react'\nimport type { FileMetaData } from '../src/metadata.js'\nimport { toJson } from '../src/utils.js'\n\ninterface MetadataProps {\n metadata: FileMetaData\n}\n\n/**\n * Renders the metadata of a parquet file as JSON.\n * @param {Object} props\n * @param {FileMetaData} props.metadata\n * @returns {ReactNode}\n */\nexport default function ParquetMetadata({ metadata }: MetadataProps) {\n return \n {JSON.stringify(toJson(metadata), null, ' ')}\n \n}\n","\n/**\n * Returns a cached layer on top of an AsyncBuffer. For caching slices of a file\n * that are read multiple times, possibly over a network.\n *\n * @typedef {import('./types.js').AsyncBuffer} AsyncBuffer\n * @param {AsyncBuffer} file file-like object to cache\n * @returns {AsyncBuffer} cached file-like object\n */\nexport function cachedAsyncBuffer({ byteLength, slice }) {\n const cache = new Map()\n return {\n byteLength,\n /**\n * @param {number} start\n * @param {number} [end]\n * @returns {import('./types.js').Awaitable}\n */\n slice(start, end) {\n const key = cacheKey(start, end, byteLength)\n const cached = cache.get(key)\n if (cached) return cached\n // cache miss, read from file\n const promise = slice(start, end)\n cache.set(key, promise)\n return promise\n },\n }\n}\n\n\n/**\n * Returns canonical cache key for a byte range 'start,end'.\n * Normalize int-range and suffix-range requests to the same key.\n *\n * @param {number} start start byte of range\n * @param {number} [end] end byte of range, or undefined for suffix range\n * @param {number} [size] size of file, or undefined for suffix range\n * @returns {string}\n */\nfunction cacheKey(start, end, size) {\n if (start < 0) {\n if (end !== undefined) throw new Error(`invalid suffix range [${start}, ${end}]`)\n if (size === undefined) return `${start},`\n return `${size + start},${size}`\n } else if (end !== undefined) {\n if (start > end) throw new Error(`invalid empty range [${start}, ${end}]`)\n return `${start},${end}`\n } else if (size === undefined) {\n return `${start},`\n } else {\n return `${start},${size}`\n }\n}\n","import { cachedAsyncBuffer } from '../../src/asyncBuffer.js'\nimport type { AsyncBuffer, ParquetReadOptions } from '../../src/hyparquet.js'\nimport { asyncBufferFromUrl } from '../../src/utils.js'\n\n// Serializable constructors for AsyncBuffers\ninterface AsyncBufferFromFile {\n file: File\n byteLength: number\n}\ninterface AsyncBufferFromUrl {\n url: string\n byteLength: number\n}\nexport type AsyncBufferFrom = AsyncBufferFromFile | AsyncBufferFromUrl\n\n// Same as ParquetReadOptions, but AsyncBufferFrom instead of AsyncBuffer\ninterface ParquetReadWorkerOptions extends Omit {\n from: AsyncBufferFrom\n orderBy?: string\n}\n\nlet worker: Worker | undefined\nlet nextQueryId = 0\ninterface QueryAgent {\n resolve: (value: any) => void\n reject: (error: any) => void\n onChunk?: (chunk: any) => void\n}\nconst pending = new Map()\n\nfunction getWorker() {\n if (!worker) {\n worker = new Worker(new URL('demo/workers/worker.min.js', import.meta.url))\n worker.onmessage = ({ data }) => {\n const { resolve, reject, onChunk } = pending.get(data.queryId)!\n if (data.error) {\n reject(data.error)\n } else if (data.result) {\n resolve(data.result)\n } else if (data.chunk) {\n onChunk?.(data.chunk)\n } else {\n reject(new Error('Unexpected message from worker'))\n }\n }\n }\n return worker\n}\n\n/**\n * Presents almost the same interface as parquetRead, but runs in a worker.\n * This is useful for reading large parquet files without blocking the main thread.\n * Instead of taking an AsyncBuffer, it takes a AsyncBufferFrom, because it needs\n * to be serialized to the worker.\n */\nexport function parquetQueryWorker(\n { metadata, from, rowStart, rowEnd, orderBy, onChunk }: ParquetReadWorkerOptions\n): Promise[]> {\n return new Promise((resolve, reject) => {\n const queryId = nextQueryId++\n pending.set(queryId, { resolve, reject, onChunk })\n const worker = getWorker()\n\n // If caller provided an onChunk callback, worker will send chunks as they are parsed\n const chunks = onChunk !== undefined\n worker.postMessage({\n queryId, metadata, from, rowStart, rowEnd, orderBy, chunks,\n })\n })\n}\n\n/**\n * Convert AsyncBufferFrom to AsyncBuffer.\n */\nexport async function asyncBufferFrom(from: AsyncBufferFrom): Promise {\n if ('url' in from) {\n // Cached asyncBuffer for urls only\n const key = JSON.stringify(from)\n const cached = cache.get(key)\n if (cached) return cached\n const asyncBuffer = asyncBufferFromUrl(from).then(cachedAsyncBuffer)\n cache.set(key, asyncBuffer)\n return asyncBuffer\n } else {\n return from.file.arrayBuffer()\n }\n}\nconst cache = new Map>()\n","import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App.js'\n\nconst app = document.getElementById('app')\nif (!app) throw new Error('missing app element')\n\nconst params = new URLSearchParams(location.search)\nconst url = params.get('key') || undefined\n\nconst root = ReactDOM.createRoot(app)\nroot.render(React.createElement(App, { url }))\n","import HighTable, { DataFrame, rowCache } from 'hightable'\nimport React, { useEffect, useState } from 'react'\nimport { FileMetaData, parquetMetadataAsync, parquetSchema } from '../src/metadata.js'\nimport { byteLengthFromUrl } from '../src/utils.js'\nimport Dropdown from './Dropdown.js'\nimport Dropzone from './Dropzone.js'\nimport Layout from './Layout.js'\nimport ParquetLayout from './ParquetLayout.js'\nimport ParquetMetadata from './ParquetMetadata.js'\nimport { AsyncBufferFrom, asyncBufferFrom, parquetQueryWorker } from './workers/parquetWorkerClient.js'\n\ntype Lens = 'table' | 'metadata' | 'layout'\n\n/**\n * Hyparquet demo viewer page\n * @param {Object} props\n * @param {string} [props.url]\n * @returns {ReactNode}\n */\nexport default function App({ url }: { url?: string }) {\n const [progress, setProgress] = useState()\n const [error, setError] = useState()\n const [df, setDf] = useState()\n const [name, setName] = useState()\n const [lens, setLens] = useState('table')\n const [metadata, setMetadata] = useState()\n const [byteLength, setByteLength] = useState()\n\n useEffect(() => {\n if (!df && url) {\n onUrlDrop(url)\n }\n }, [ url ])\n\n async function onFileDrop(file: File) {\n // Clear query string\n history.pushState({}, '', location.pathname)\n setAsyncBuffer(file.name, { file, byteLength: file.size })\n }\n async function onUrlDrop(url: string) {\n // Add key=url to query string\n const params = new URLSearchParams(location.search)\n params.set('key', url)\n history.pushState({}, '', `${location.pathname}?${params}`)\n try {\n const byteLength = await byteLengthFromUrl(url)\n setAsyncBuffer(url, { url, byteLength })\n } catch (e) {\n setError(e as Error)\n }\n }\n async function setAsyncBuffer(name: string, from: AsyncBufferFrom) {\n // TODO: Replace welcome with spinner\n const asyncBuffer = await asyncBufferFrom(from)\n const metadata = await parquetMetadataAsync(asyncBuffer)\n setMetadata(metadata)\n setName(name)\n setByteLength(from.byteLength)\n let df = parquetDataFrame(from, metadata)\n df = rowCache(df)\n setDf(df)\n document.getElementById('welcome')?.remove()\n }\n\n return \n setError(e)}\n onFileDrop={onFileDrop}\n onUrlDrop={onUrlDrop}>\n {metadata && df && <>\n
{name}
\n
\n {byteLength !== undefined && {formatFileSize(byteLength)}}\n {df.numRows.toLocaleString()} rows\n \n \n \n \n \n
\n {lens === 'table' && }\n {lens === 'metadata' && }\n {lens === 'layout' && }\n }\n \n
\n}\n\n/**\n * Convert a parquet file into a dataframe.\n */\nfunction parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData): DataFrame {\n const { children } = parquetSchema(metadata)\n return {\n header: children.map(child => child.element.name),\n numRows: Number(metadata.num_rows),\n /**\n * @param {number} rowStart\n * @param {number} rowEnd\n * @param {string} orderBy\n * @returns {Promise}\n */\n rows(rowStart, rowEnd, orderBy) {\n console.log(`reading rows ${rowStart}-${rowEnd}`, orderBy)\n return parquetQueryWorker({ from, metadata, rowStart, rowEnd, orderBy })\n },\n sortable: true,\n }\n}\n\n/**\n * Returns the file size in human readable format.\n *\n * @param {number} bytes file size in bytes\n * @returns {string} formatted file size string\n */\nfunction formatFileSize(bytes: number): string {\n const sizes = ['b', 'kb', 'mb', 'gb', 'tb']\n if (bytes === 0) return '0 b'\n const i = Math.floor(Math.log2(bytes) / 10)\n if (i === 0) return bytes + ' b'\n const base = bytes / Math.pow(1024, i)\n return (base < 10 ? base.toFixed(1) : Math.round(base)) + ' ' + sizes[i]\n}\n"],"names":["l","Symbol","for","n","p","q","r","t","u","v","w","x","y","z","iterator","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","Object","assign","D","E","a","b","e","this","props","context","refs","updater","F","G","prototype","isReactComponent","setState","Error","forceUpdate","H","constructor","isPureReactComponent","I","Array","isArray","J","hasOwnProperty","K","current","L","key","ref","__self","__source","M","d","c","k","h","call","g","arguments","length","children","f","m","defaultProps","$$typeof","type","_owner","O","P","Q","replace","escape","toString","R","N","push","A","next","done","value","String","keys","join","S","T","_status","_result","then","default","U","V","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","X","react_production_min","Children","map","forEach","apply","count","toArray","only","Component","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","act","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","createFactory","bind","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","reactModule","exports","require$$0","schedulerModule","pop","sortIndex","id","performance","now","unstable_now","Date","setTimeout","clearTimeout","setImmediate","callback","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_forceFrameRate","console","error","Math","floor","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","unstable_shouldYield","unstable_wrapCallback","aa","ca","require$$1","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","split","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","displayName","includes","name","Pa","tag","Qa","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","of","has","pf","qf","rf","random","sf","capture","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Promise","Jf","queueMicrotask","resolve","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_stringRef","Mg","Ng","Og","index","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","stores","ei","fi","gi","hi","ii","create","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","readContext","useMutableSource","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","_reactInternals","Fi","shouldComponentUpdate","Gi","contextType","state","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","message","digest","Ki","Li","Mi","WeakMap","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","Gj","Hj","Ij","Jj","Kj","WeakSet","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","src","Vk","lk","ceil","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","reactDom_production_min","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","reactDomModule","client","o","s","i","Fragment","jsx","jsxs","fill","fromEntries","warn","reject","resolved","rejected","j","header","cacheKey","columnWidths","orderBy","setOrderBy","setColumnWidth","setColumnWidths","dataReady","offsetWidth","columnIndex","columnName","max","className","title","onDoubleClick","onMouseDown","minWidth","maxWidth","localStorage","getItem","parse","filter","setItem","startIndex","rows","hasCompleteRow","columnWidth","overscan","padding","onDoubleClickCell","onMouseDownCell","_","numRows","async","clientHeight","entries","values","$","__index__","from","log10","sortable","role","tabIndex","toLocaleString","toISOString","ParquetType","Encoding","undefined","FieldRepetitionType","ConvertedType","CompressionCodec","PageType","schemaTree","schema","rootIndex","path","num_children","childElement","getSchemaPath","tree","part","find","CompactType","readElement","reader","getInt8","zigzag","readVarInt","readZigZag","result","byte","getUint8","BigInt","readVarBigInt","readZigZagBigInt","getFloat64","stringLength","strBytes","Uint8Array","buffer","byteOffset","elemType","listSize","sizeType","getCompactType","readCollectionBegin","boolType","structValues","structLastFid","structFieldType","structFid","readFieldBegin","uuid","padStart","lastFid","delta","fid","parquetMetadata","arrayBuffer","DataView","byteLength","getUint32","metadataLengthOffset","metadataLength","metadata","newLastFid","deserializeTCompactProtocol","decoder","TextDecoder","decode","field_1","field_2","field","type_length","repetition_type","field_3","field_4","field_5","converted_type","field_6","scale","field_7","precision","field_8","field_id","field_9","logical_type","logicalType","field_10","columnSchema","num_rows","row_groups","rowGroup","column","file_path","file_offset","meta_data","encodings","path_in_schema","codec","num_values","total_uncompressed_size","total_compressed_size","key_value_metadata","data_page_offset","index_page_offset","dictionary_page_offset","field_11","statistics","convertStats","field_12","encoding_stats","field_13","encodingStat","page_type","encoding","bloom_filter_offset","field_14","bloom_filter_length","field_15","size_statistics","field_16","unencoded_byte_array_data_bytes","repetition_level_histogram","definition_level_histogram","offset_index_offset","offset_index_length","column_index_offset","column_index_length","crypto_metadata","encrypted_column_metadata","total_byte_size","sorting_columns","sortingColumn","column_idx","descending","nulls_first","ordinal","keyValue","created_by","metadata_length","isAdjustedToUTC","unit","timeUnit","bitWidth","isSigned","stats","convertMetadata","null_count","distinct_count","max_value","min_value","is_max_value_exact","is_min_value_exact","getFloat32","getInt32","Number","getBigInt64","bytes","parseDecimal","pow","int16","sign","exp","frac","NaN","parseFloat16","toJson","obj","newObj","byteLengthFromUrl","requestInit","fetch","method","res","status","headers","parseInt","Layout","progress","errorMessage","React","cn","names","Dropdown","label","isOpen","setIsOpen","dropdownRef","menuRef","handleClickInside","handleClickOutside","handleEscape","Dropzone","onFileDrop","onUrlDrop","dropzoneRef","fileInputRef","enters","setEnters","dropzone","onDragEnter","onDragOver","onDragLeave","handleFileDrop","items","some","item","kind","files","file","getAsString","startsWith","classList","click","onChange","ParquetLayout","metadataStart","metadataEnd","Cell","RowGroups","ColumnIndexes","Group","Column","columnOffset","getColumnRange","pages","sort","indexPages","ParquetMetadata","cachedAsyncBuffer","cached","promise","worker","nextQueryId","getWorker","Worker","URL","require","pathToFileURL","__filename","_documentCurrentScript","baseURI","onChunk","queryId","chunk","asyncBufferFrom","asyncBuffer","init","Headers","endStr","asyncBufferFromUrl","app","getElementById","URLSearchParams","ReactDOM","setProgress","setError","setDf","setName","lens","setLens","setMetadata","setByteLength","params","history","pushState","pathname","setAsyncBuffer","initialFetchSize","footerOffset","footerBuffer","footerView","metadataOffset","metadataBuffer","combinedBuffer","ArrayBuffer","combinedView","parquetMetadataAsync","parquetSchema","rowStart","rowEnd","chunks","parquetQueryWorker","parquetDataFrame","rowCache","remove","sizes","log2","toFixed","round","formatFileSize","HighTable"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7]} \ No newline at end of file diff --git a/demo/demo.css b/demo/demo.css deleted file mode 100644 index 481ff69..0000000 --- a/demo/demo.css +++ /dev/null @@ -1,601 +0,0 @@ -* { - box-sizing: border-box; - font-family: 'Mulish', 'Helvetica Neue', Helvetica, Arial, sans-serif; - margin: 0; - padding: 0; -} -body { - display: flex; - font-family: sans-serif; - height: 100vh; - width: 100vw; -} - -h1 { - font-size: 22pt; -} -h2 { - margin-top: 10px; - font-size: 12pt; -} -p { - margin: 15px 0; -} -code { - font-family: monospace; - padding: 10px; - white-space: pre-wrap; - word-break: break-all; -} -sub { - align-items: center; - display: flex; - gap: 5px; -} -sub img { - cursor: pointer; -} - -.error { - color: #c11; - font-family: monospace; - white-space: pre-wrap; -} - -/* dropzone */ -.dropzone { - display: flex; - flex-direction: column; - height: 100%; -} -.dropzone.hover .overlay { - display: flex; -} -.overlay { - font-size: 125%; - position: fixed; - top: 0; - bottom: 0; - right: 0; - left: 0; - background-color: rgba(240, 240, 240, 0.6); - backdrop-filter: blur(4px); - display: none; - padding: 12px; - z-index: 40; -} -.target { - border: 6px dashed #444; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: 16px; - height: 100%; - width: 100%; -} - -/* sidebar */ -nav { - height: 100vh; - min-width: 48px; - background-image: linear-gradient(to bottom, #667, #585669); - box-shadow: 0 0 4px rgba(10, 10, 10, 0.5); - height: 100vh; -} - -/* brand logo */ -.brand { - color: #fff; - display: flex; - align-items: center; - filter: drop-shadow(0 0 2px #444); - font-family: 'Century Gothic', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 1.1em; - font-weight: bold; - text-orientation: mixed; - opacity: 0.85; - padding: 10px 12px; - user-select: none; - writing-mode: vertical-rl; - text-decoration: none; -} -.brand:hover { - color: #fff; - filter: drop-shadow(0 0 2px #333); - opacity: 0.9; - text-decoration: none; -} -.brand::before { - content: ''; - background: url(logo.svg) no-repeat 0 center; - background-size: 26px; - height: 26px; - width: 26px; - margin-bottom: 10px; -} - -/* content area */ -main, -#content { - display: flex; - flex-direction: column; - flex: 1; - min-width: 0; -} - -#content { - position: relative; -} - -#app { - flex: 1; -} - -/* content area */ -.content-container { - min-width: 0; - height: 100vh; - display: flex; - flex-direction: column; - flex: 1; -} -.content { - display: flex; - flex-direction: column; - flex: 1; - height: 100vh; - padding: 0; - /* no outer scrollbars */ - overflow: hidden; -} - -/* error bar */ -.error-bar { - max-height: 0; - padding: 0; - background-color: #dd111199; - font-family: monospace; - overflow-y: auto; - transition: max-height 0.3s; - white-space: pre-wrap; -} -.show-error { - max-height: 30%; - padding: 10px; -} - -.top-header { - align-items: center; - background: linear-gradient(to right, #353540, #24202b); - color: #dde4ea; - display: flex; - height: 32px; - justify-content: space-between; - min-height: 32px; - padding-left: 8px; -} -.top-header { - color: #f0f8ff; - font-family: 'Courier New', Courier, monospace; - font-size: 18px; - text-overflow: ellipsis; - white-space: nowrap; - text-decoration-thickness: 1px; -} - -.view-header { - align-items: center; - background-color: #ccc; - color: #444; - display: flex; - gap: 16px; - height: 24px; - padding: 0 8px; - /* all one line */ - text-overflow: ellipsis; - white-space: nowrap; -} -.viewer { - display: flex; - flex: 1; - flex-direction: column; - white-space: pre-wrap; - overflow-y: auto; -} - -/* dropdown */ -.dropdown { - display: inline-block; - position: relative; - text-overflow: ellipsis; - user-select: none; - white-space: nowrap; -} - -.dropdown-button, -.dropdown-button:active, -.dropdown-button:focus, -.dropdown-button:hover { - background: transparent; - border: none; - color: inherit; - cursor: pointer; - font-size: inherit; - height: 24px; - max-width: 300px; - overflow: hidden; -} -/* dropdown caret */ -.dropdown-button::before { - content: "\25bc"; - display: inline-block; - font-size: 10px; - margin-right: 4px; - transform: rotate(-90deg); - transition: transform 0.1s; -} -.open .dropdown-button::before { - transform: rotate(0deg); -} -/* dropdown menu options */ -.dropdown-content { - position: absolute; - left: 0; - background-color: #ccc; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - box-shadow: 0px 8px 8px 0px rgba(0, 0, 0, 0.2); - max-height: 0; - max-width: 200px; - min-width: 120px; - transition: max-height 0.1s ease-out; - overflow-y: hidden; - z-index: 20; -} -.dropdown-content > button { - background: none; - border: none; - padding: 8px 16px; - text-align: left; -} -/* dropdown menu options hover */ -.dropdown-content > button:active, -.dropdown-content > button:focus, -.dropdown-content > button:hover { - background-color: rgba(95, 75, 133, 0.4); -} -/* roll out dropdown menu */ -.open .dropdown-content { - display: flex; - flex-direction: column; - max-height: 170px; -} - -/* welcome */ -#welcome { - position: absolute; - bottom: 0; - top: 0; - right: 0; - left: 0; - border: 2px #777; - border-radius: 10px; - color: #444; - margin: 10px; - padding: 10px; - display: flex; - flex-direction: column; - flex: 1; - font-size: 20px; - justify-content: center; - max-width: 640px; - margin: 0 auto; -} -/* quick link buttons */ -.quick-links { - display: flex; - flex-wrap: wrap; - gap: 10px; - list-style: none; -} -.quick-links li { - display: flex; - flex: 1 1 calc(50% - 10px); - min-width: 0; -} -.quick-links a { - background-position: 10px center; - background-size: 18px; - border: 1px solid #444; - border-radius: 4px; - font-size: 8pt; - overflow: hidden; - padding: 12px; - padding-left: 36px; - text-overflow: ellipsis; - white-space: nowrap; - width: 100%; -} -.quick-links a:hover { - background-color: #cec; -} -.huggingface { - background: url('assets/huggingface.svg') no-repeat 8px center; -} -.github { - background: url('assets/git.svg') no-repeat 8px center; -} -.aws { - background: url('assets/s3.svg') no-repeat 8px center; -} -.azure { - background: url('assets/azure.svg') no-repeat 8px center; -} - -/* file upload */ -input[type="file"] { - display: none; -} -.overlay { - font-size: 125%; - justify-content: center; - position: absolute; - top: 0; - bottom: 0; - right: 0; - left: 0; - background-color: rgba(240, 240, 240, 0.6); - backdrop-filter: blur(4px); - display: none; - padding: 12px; - z-index: 40; -} -.over .overlay { - display: flex; -} - -/* table */ -.table-container { - display: flex; - flex-direction: column; - min-height: 0; - flex: 1; - position: relative; -} -.table-scroll { - flex: 1; - overflow: auto; -} -.table-scroll > div { - position: relative; -} -.table-scroll .table { - position: absolute; -} - -table { - border-collapse: separate; - border-spacing: 0; -} -table:focus-visible { - outline: none; -} - -/* header */ -.table thead th { - background-color: #eaeaeb; - border: none; - border-bottom: 2px solid #c9c9c9; - box-sizing: content-box; - color: #444; - height: 20px; - padding-top: 8px; - position: sticky; - top: -1px; /* fix 1px gap above thead */ - user-select: none; - z-index: 10; -} -.table thead th:first-child { - border: none; -} -.table thead th:first-child span { - cursor: default; - width: 0; -} -.table tbody tr:first-child td { - border-top: 1px solid transparent; -} - -/* sortable */ -.table.sortable thead th { - cursor: pointer; -} -.table thead th.orderby ::after { - position: absolute; - right: 8px; - top: 8px; - padding-left: 2px; - background-color: #eaeaeb; - content: "▾"; -} - -/* cells */ -.table th, -.table td { - border-bottom: 1px solid #ddd; - border-right: 1px solid #ddd; - height: 32px; - max-width: 1000px; /* prevent columns expanding */ - padding: 4px 12px; - text-align: left; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -/* pending cell state */ -.table td.pending { - position: relative; -} -.table td.pending::after { - content: ''; - position: absolute; - top: 8px; - left: 8px; - right: 8px; - bottom: 8px; - border-radius: 4px; - background: linear-gradient( - 60deg, - rgba(0, 0, 0, 0.05) 25%, - rgba(0, 0, 0, 0.08) 50%, - rgba(0, 0, 0, 0.05) 75% - ); - background-size: 120px 100%; - animation: textshimmer 3s infinite linear; -} -/* stagger row shimmering */ -.table tr:nth-child(2n) td.pending::after { animation-delay: -1s; } -.table tr:nth-child(2n+1) td.pending::after { animation-delay: -3s; } -.table tr:nth-child(3n) td.pending::after { animation-delay: -2s; } -.table tr:nth-child(5n) td.pending::after { animation-delay: -4s; } -.table tr:nth-child(7n) td.pending::after { animation-delay: -1.5s; } -@keyframes textshimmer { - 0% { - background-position: -120px 0; - } - 100% { - background-position: 120px 0; - } -} - -/* pending table state */ -.table th::before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 4px; - background-color: #706fb1; - z-index: 100; -} -.pending .table th::before { - animation: shimmer 2s infinite linear; -} -@keyframes shimmer { - 0%, 100% { background-color: #6fb176; } - 50% { background-color: #adc6b0; } -} - -/* column resize */ -.table thead span { - position: absolute; - border-right: 1px solid #ddd; - top: 0; - right: 0; - bottom: 0; - width: 8px; - cursor: col-resize; - transition: background-color 0.2s ease; -} -.table thead span:hover { - background-color: #aab; -} - -/* row numbers */ -td:first-child { - background-color: #eaeaeb; - border-right: 1px solid #ddd; - color: #888; - font-size: 10px; - padding: 0 2px; - position: sticky; - left: 0; - text-align: center; - user-select: none; - min-width: 32px; - max-width: none; - width: 32px; -} - -/* table corner */ -.table-corner { - background-color: #e4e4e6; - border-right: 1px solid #ccc; - position: absolute; - height: 34px; - width: 32px; - top: 0; - left: 0; - z-index: 15; - box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.2); -} - -/* mock row numbers */ -.mock-row-label { - content: ""; - position: absolute; - top: 0; - left: 0; - bottom: 0; - background: #eaeaeb; - z-index: -10; -} - -#filename { - font-size: 10pt; - margin-top: 20px; -} -.sidebar { - word-break: break-all; -} -.sidebar a { - color: #445; - text-decoration: none; -} -.sidebar a:hover { - text-decoration: underline; -} - -/* layout */ -.layout { - margin: 10px; - max-width: 480px; -} -.layout, -.layout .group, -.layout .cell { - background-color: rgba(100, 80, 180, 0.05); - border: 1px solid #ccc; - border-radius: 4px; - font-size: 12px; - margin-top: 4px; - padding: 4px; - word-break: break-all; -} -.cell, -.group-header { - display: flex; -} -.group-header > label, -.cell > label { - display: flex; - flex: 1; - font-size: 12px; - font-weight: normal; - justify-content: flex-start; -} -.group-header > span { - font-size: 10px; -} - -.layout div ul { - list-style: none; -} -.layout div li { - font-size: 10px; - padding: 2px 4px; - text-align: right; -} diff --git a/demo/demo.js b/demo/demo.js deleted file mode 100644 index 34efe34..0000000 --- a/demo/demo.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.js' - -const app = document.getElementById('app') -if (!app) throw new Error('missing app element') - -const params = new URLSearchParams(location.search) -const url = params.get('key') || undefined - -const root = ReactDOM.createRoot(app) -root.render(React.createElement(App, { url })) diff --git a/demo/hyparquet-compressors.min.js b/demo/hyparquet-compressors.min.js deleted file mode 100644 index 03ae0f5..0000000 --- a/demo/hyparquet-compressors.min.js +++ /dev/null @@ -1,3 +0,0 @@ -// @ts-ignore -var n=ArrayBuffer,A=Uint8Array,e=Uint16Array,t=Int16Array,r=Int32Array,o=function(n,e,t){if(A.prototype.slice)return A.prototype.slice.call(n,e,t);(null==e||e<0)&&(e=0),(null==t||t>n.length)&&(t=n.length);var r=new A(t-e);return r.set(n.subarray(e,t)),r},i=function(n,e,t,r){if(A.prototype.fill)return A.prototype.fill.call(n,e,t,r);for((null==t||t<0)&&(t=0),(null==r||r>n.length)&&(r=n.length);tn.length)&&(r=n.length);t2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],f=function(n,A,e){var t=new Error(A||w[n]);if(t.code=n,Error.captureStackTrace&&Error.captureStackTrace(t,f),!e)throw t;return t},a=function(n,A,e){for(var t=0,r=0;t>5&1,g=s>>2&1,I=3&s,B=s>>6;8&s&&f(0);var l=6-w,h=3==I?4:I,u=a(n,l,h),Q=B?1<>3);c=C+(C>>3)*(7&n[5])}c>2145386496&&f(1);var b=new A((1==e?d||c:e?0:c)+12);return b[0]=1,b[4]=4,b[8]=8,{b:l+Q,y:0,l:0,d:u,w:e&&1!=e?e:b.subarray(12),e:c,o:new r(b.buffer,0,3),u:d,c:g,m:Math.min(131072,c)}}if(25481893==(i>>4|n[3]<<20))return 8+(((t=n)[o=4]|t[o+1]<<8|t[o+2]<<16|t[o+3]<<24)>>>0);f(0)},I=function(n){for(var A=0;1<i&&f(3);for(var a=1<0;){var v=I(g+1),y=s>>3,F=(1<>(7&s)&F,W=(1<W&&(U-=Y)),d[++B]=--U,-1==U?(g+=U,E[--u]=B):g-=U,!U)do{var S=s>>3;l=(r[S]|r[S+1]<<8)>>(7&s)&3,s+=2,B+=l}while(3==l)}(B>255||g)&&f(0);for(var H=0,x=(a>>1)+(a>>3)+3,G=a-1,P=0;P<=B;++P){var q=d[P];if(q<1)c[P]=-q;else for(h=0;h=u)}}for(H&&f(0),h=0;h>3,{b:w,s:E,n:p,t:C}]},l=B(new A([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1],h=B(new A([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1],u=B(new A([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1],Q=function(n,A){for(var e=n.length,t=new r(e),o=0;os&&B>3;w=(w<>(7&g))&i,A[++B]=e.s[w],g-=a=e.n[w]}g==s&&B+1==r||f(0)},p=function(n,A,e){var t=6,r=A.length+3>>2,o=r<<1,i=r+o;E(n.subarray(t,t+=n[0]|n[1]<<8),A.subarray(0,r),e),E(n.subarray(t,t+=n[2]|n[3]<<8),A.subarray(r,o),e),E(n.subarray(t,t+=n[4]|n[5]<<8),A.subarray(o,i),e),E(n.subarray(t),A.subarray(i),e)},v=function(n,t,r){var s,w=t.b,a=n[w],g=a>>1&3;t.l=1&a;var Q=a>>3|n[w+1]<<5|n[w+2]<<13,v=(w+=3)+Q;if(1==g){if(w>=n.length)return;return t.b=w+1,r?(i(r,n[w],t.y,t.y+=Q),r):i(new A(Q),n[w])}if(!(v>n.length)){if(0==g)return t.b=v,r?(r.set(n.subarray(w,v),t.y),t.y+=Q,r):o(n,w,v);if(2==g){var y=n[w],F=3&y,U=y>>2&3,W=y>>4,Y=0,m=0;F<2?1&U?W|=n[++w]<<4|(2&U&&n[++w]<<12):W=y>>3:(m=U,U<2?(W|=(63&n[++w])<<4,Y=n[w]>>6|n[++w]<<2):2==U?(W|=n[++w]<<4|(3&n[++w])<<12,Y=n[w]>>2|n[++w]<<6):(W|=n[++w]<<4|(63&n[++w])<<12,Y=n[w]>>6|n[++w]<<2|n[++w]<<10)),++w;var S=r?r.subarray(t.y,t.y+t.m):new A(t.m),H=S.length-W;if(0==F)S.set(n.subarray(w,w+=W),H);else if(1==F)i(S,n[w++],H);else{var x=t.h;if(2==F){var G=function(n,t){var r=0,o=-1,s=new A(292),w=n[t],a=s.subarray(0,256),g=s.subarray(256,268),l=new e(s.buffer,268);if(w<128){var h=B(n,t+1,6),u=h[0],Q=h[1],d=u<<3,c=n[t+=w];c||f(0);for(var C=0,b=0,E=Q.b,p=E,v=(++t<<3)-8+I(c);!((v-=E)>3;if(C+=(n[y]|n[y+1]<<8)>>(7&v)&(1<>3]|n[y+1]<<8)>>(7&v)&(1<255&&f(0)}else{for(o=w-127;r>4,a[r+1]=15&F}++t}var U=0;for(r=0;r11&&f(0),U+=S&&1<0;--r){var P=l[r];i(G,r,P,l[r-1]=P+g[r]*(1<127&&(P=P-128<<8|n[w++]);var q=n[w++];3&q&&f(0);for(var Z=[h,u,l],R=2;R>-1;--R){var V=q>>2+(R<<1)&3;if(1==V){var L=new A([0,0,n[w++]]);Z[R]={s:L.subarray(2,3),n:L.subarray(0,1),t:new e(L.buffer,0,1),b:0}}else 2==V?(w=(s=B(n,w,9-(1&R)))[0],Z[R]=s[1]):3==V&&(t.t||f(0),Z[R]=t.t[R])}var N=t.t=Z,K=N[0],J=N[1],D=N[2],z=n[v-1];z||f(0);var M=(v<<3)-8+I(z)-D.b,k=M>>3,T=0,X=(n[k]|n[k+1]<<8)>>(7&M)&(1<>3]|n[k+1]<<8)>>(7&M)&(1<>3]|n[k+1]<<8)>>(7&M)&(1<>3]|n[k+1]<<8|n[k+2]<<16|n[k+3]<<24)>>>(7&M)&rn-1);k=(M-=C[nn])>>3;var sn=b[nn]+((n[k]|n[k+1]<<8|n[k+2]<<16)>>(7&M)&(1<>3;var wn=c[_]+((n[k]|n[k+1]<<8|n[k+2]<<16)>>(7&M)&(1<>3,X=D.t[X]+((n[k]|n[k+1]<<8)>>(7&M)&(1<<$)-1),k=(M-=An)>>3,O=K.t[O]+((n[k]|n[k+1]<<8)>>(7&M)&(1<>3,j=J.t[j]+((n[k]|n[k+1]<<8)>>(7&M)&(1<3)t.o[2]=t.o[1],t.o[1]=t.o[0],t.o[0]=on-=3;else{var fn=on-(0!=wn);fn?(on=3==fn?t.o[0]-1:t.o[fn],fn>1&&(t.o[2]=t.o[1]),t.o[1]=t.o[0],t.o[0]=on):on=t.o[0]}for(R=0;Rsn&&(gn=sn);for(R=0;R0},m.prototype.readMoreInput=function(){if(this.bit_end_pos_>256);else if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{const n=this.buf_ptr_,A=this.input_.read(this.buf_,n,U);if(A<0)throw new Error("Unexpected end of input");if(A=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,this.pos_++,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},m.prototype.readBits=function(n){32-this.bit_pos_>>this.bit_pos_&Y[n];return this.bit_pos_+=n,A};const S=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),H=new Uint16Array([1024,1536,1280,1536,0,256,768,512]),x=8,G=8,P=255,q=18,Z=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]);function R(n,A){this.bits=n,this.value=A}const V=16,L=15;function N(n,A){let e=1<>=1;return(n&e-1)+e}function K(n,A,e,t,r){do{n[A+(t-=e)]=new R(r.bits,r.value)}while(t>0)}function J(n,A,e){let t=1<0;--i[t]){K(n,A+I,r,a,new R(255&t,65535&w[B++])),I=N(I,t)}const l=g-1;let h=-1;for(let t=e+1,r=2;t<=L;++t,r<<=1)for(;i[t]>0;--i[t]){(I&l)!==h&&(A+=a,f=J(i,t,e),a=1<>e),r,a,new R(t-e&255,65535&w[B++])),I=N(I,t)}return g}function z(n,A,e,t){const r=new Uint8Array(n);t.readMoreInput();const o=t.readBits(2);if(1===o){let A=n-1,e=0;const o=new Int32Array(4),i=t.readBits(2)+1;for(;A;)A>>=1,e++;for(let A=0;A0;n++){const r=Z[n];let o=0;t.fillBitWindow(),o+=t.val_>>>t.bit_pos_&15,t.bit_pos_+=s[o].bits;const w=s[o].value;A[r]=w,0!==w&&(e-=32>>w,i++)}if(1!==i&&0!==e)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function(n,A,e,t){let r=0,o=x,i=0,s=0,w=32768;const f=[];for(let n=0;n<32;n++)f.push(new R(0,0));D(f,0,5,n,q);for(;r0;){let n=0;t.readMoreInput(),t.fillBitWindow(),n+=t.val_>>>t.bit_pos_&31,t.bit_pos_+=f[n].bits;const a=255&f[n].value;if(a>a);else{const n=a-14;let f=0;a===V&&(f=o),s!==f&&(i=0,s=f);const g=i;i>0&&(i-=2,i<<=n),i+=t.readBits(n)+3;const I=i-g;if(r+I>A)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(let n=0;n>>e.bit_pos_&P].bits-G;return t>0&&(e.bit_pos_+=G,A+=n[A].value,A+=e.val_>>>e.bit_pos_&(1<this.buffer.length&&(e=this.buffer.length-this.pos);for(let t=0;tthis.buffer.length)throw new Error("brotli output buffer is not large enough");return this.buffer.set(n.subarray(0,A),this.pos),this.pos+=A,A};const An=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),en=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),tn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);function rn(n,A){const e=new Uint16Array(31);for(let t=0;t<31;t++)e[t]=A+=1<>1|(21845&n)<<1;A=(52428&A)>>2|(13107&A)<<2,A=(61680&A)>>4|(3855&A)<<4,fn[n]=((65280&A)>>8|(255&A)<<8)>>1}function an(n,A,e){const t=new Uint16Array(A);for(let A=0;A>e]=i}}return o}const gn=new Uint8Array(288);for(let n=0;n<144;n++)gn[n]=8;for(let n=144;n<256;n++)gn[n]=9;for(let n=256;n<280;n++)gn[n]=7;for(let n=280;n<288;n++)gn[n]=8;const In=new Uint8Array(32);for(let n=0;n<32;n++)In[n]=5;const Bn=an(gn,9),ln=an(In,5);function hn(n){let A=n[0];for(let e=1;eA&&(A=n[e]);return A}function un(n,A,e){const t=A/8|0;return(n[t]|n[t+1]<<8)>>(7&A)&e}function Qn(n,A){const e=A/8|0;return(n[e]|n[e+1]<<8|n[e+2]<<16)>>(7&A)}function dn(n,A,e=0,t=0){if(!(n.length-e))return;const r=function(n,A){if(31!==n[A++]||139!==n[A++]||8!==n[A++])throw new Error("invalid gzip data");const e=n[A++];A+=6,4&e&&(A+=2+(n[A+10]|n[A+11]<<8));for(let t=(e>>3&1)+(e>>4&1);t>0;t-=Number(!n[A++]));return A+(2&e)}(n,e);if(r===n.length-8)return;if(r>n.length-8)throw new Error("unexpected EOF");let o,i,s=8*r,w=0,f=0,a=0;const g=8*n.length;do{if(!o){w=un(n,s,1);const e=un(n,s+1,3);if(s+=3,!e){const e=4+((s+7)/8|0),r=n[e-4]|n[e-3]<<8,o=e+r;if(o>n.length)throw new Error("unexpected EOF");A.set(n.subarray(e,o),t),t+=r,s=8*o;continue}if(1===e)o=Bn,i=ln,f=9,a=5;else{if(2!==e)throw new Error("invalid block type");{const A=un(n,s,31)+257,e=un(n,s+10,15)+4,t=A+un(n,s+5,31)+1;s+=14;const r=new Uint8Array(t),w=new Uint8Array(19);for(let A=0;A>4;if(t<16)r[A++]=t;else{let e=0,o=0;for(16===t?(o=3+un(n,s,3),s+=2,e=r[A-1]):17===t?(o=3+un(n,s,7),s+=3):18===t&&(o=11+un(n,s,127),s+=7);o--;)r[A++]=e}}const l=r.subarray(0,A),h=r.subarray(A);f=hn(l),a=hn(h),o=an(l,f),i=an(h,a)}}if(s>g)throw new Error("unexpected EOF")}const e=(1<>4;if(s+=15&w,s>g)throw new Error("unexpected EOF");if(!w)throw new Error("invalid length/literal");if(f<256)A[t++]=f;else{if(256===f){I=s,o=void 0;break}{let e=f-254;if(f>264){const A=f-257,t=An[A];e=un(n,s,(1<>4;if(!o)throw new Error("invalid distance");s+=15&o;let a=wn[w];if(w>3){const A=en[w];a+=Qn(n,s)&(1<g)throw new Error("unexpected EOF");const I=t+e;if(t'),new Fn("",0,"\n"),new Fn("",3,""),new Fn("",0,"]"),new Fn("",0," for "),new Fn("",14,""),new Fn("",2,""),new Fn("",0," a "),new Fn("",0," that "),new Fn(" ",pn,""),new Fn("",0,". "),new Fn(".",0,""),new Fn(" ",0,", "),new Fn("",15,""),new Fn("",0," with "),new Fn("",0,"'"),new Fn("",0," from "),new Fn("",0," by "),new Fn("",16,""),new Fn("",17,""),new Fn(" the ",0,""),new Fn("",4,""),new Fn("",0,". The "),new Fn("",vn,""),new Fn("",0," on "),new Fn("",0," as "),new Fn("",0," is "),new Fn("",7,""),new Fn("",1,"ing "),new Fn("",0,"\n\t"),new Fn("",0,":"),new Fn(" ",0,". "),new Fn("",0,"ed "),new Fn("",20,""),new Fn("",18,""),new Fn("",6,""),new Fn("",0,"("),new Fn("",pn,", "),new Fn("",8,""),new Fn("",0," at "),new Fn("",0,"ly "),new Fn(" the ",0," of "),new Fn("",5,""),new Fn("",En,""),new Fn(" ",pn,", "),new Fn("",pn,'"'),new Fn(".",0,"("),new Fn("",vn," "),new Fn("",pn,'">'),new Fn("",0,'="'),new Fn(" ",0,"."),new Fn(".com/",0,""),new Fn(" the ",0," of the "),new Fn("",pn,"'"),new Fn("",0,". This "),new Fn("",0,","),new Fn(".",0," "),new Fn("",pn,"("),new Fn("",pn,"."),new Fn("",0," not "),new Fn(" ",0,'="'),new Fn("",0,"er "),new Fn(" ",vn," "),new Fn("",0,"al "),new Fn(" ",vn,""),new Fn("",0,"='"),new Fn("",vn,'"'),new Fn("",pn,". "),new Fn(" ",0,"("),new Fn("",0,"ful "),new Fn(" ",pn,". "),new Fn("",0,"ive "),new Fn("",0,"less "),new Fn("",vn,"'"),new Fn("",0,"est "),new Fn(" ",pn,"."),new Fn("",vn,'">'),new Fn(" ",0,"='"),new Fn("",pn,","),new Fn("",0,"ize "),new Fn("",vn,"."),new Fn(" ",0,""),new Fn(" ",0,","),new Fn("",pn,'="'),new Fn("",vn,'="'),new Fn("",0,"ous "),new Fn("",vn,", "),new Fn("",pn,"='"),new Fn(" ",pn,","),new Fn(" ",vn,'="'),new Fn(" ",vn,", "),new Fn("",vn,","),new Fn("",vn,"("),new Fn("",vn,". "),new Fn(" ",vn,"."),new Fn("",vn,"='"),new Fn(" ",vn,". "),new Fn(" ",pn,'="'),new Fn(" ",vn,"='"),new Fn(" ",pn,"='")],Wn=Un.length;function Yn(n,A){return n[A]<192?(n[A]>=97&&n[A]<=122&&(n[A]^=32),1):n[A]<224?(n[A+1]^=32,2):(n[A+2]^=5,3)}function mn(n,A,e,t,r){const o=bn(),{prefix:i}=Un[r],{suffix:s}=Un[r],w=Un[r].transform;let f=wt&&(f=t);let g=0;for(;g0;){const A=Yn(n,I);I+=A,t-=A}let B=0;for(;B=n&&(a-=n),t[e]=a,r[s+(1&o[w])]=a,++o[w]}function Mn(n,A){this.alphabet_size=n,this.num_htrees=A,this.codes=new Array(A+A*Ln[n+31>>>5]),this.htrees=new Uint32Array(A)}function kn(n,A,e){const t=M(n,A,e),{nbits:r}=T[t];return T[t].offset+e.readBits(r)}function Tn(n,A,e){return n0;)o.readMoreInput(),t[s++]=o.readBits(8),s===i&&(n.write(t,i),s=0);return}if(o.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;o.bit_pos_<32;)t[s]=o.val_>>>o.bit_pos_,o.bit_pos_+=8,s++,A--;let f=o.bit_end_pos_-o.bit_pos_>>3;if(w+f>m.IBUF_MASK){const n=m.IBUF_MASK+1-w;for(let A=0;A=i){n.write(t,i),s-=i;for(let n=0;n=i;){if(f=i-s,o.input_.read(t,s,f)1&&0===r)throw new Error("Invalid size byte");A.meta_block_length|=r<<8*t}}else for(let t=0;t4&&0===r)throw new Error("Invalid size nibble");A.meta_block_length|=r<<4*t}return A.meta_block_length++,A.input_end||A.is_metadata||(A.is_uncompressed=n.readBits(1)),A}function $n(n,A){let e=0;A.readMoreInput();const t=jn(A)+1,r=new Uint8Array(n);if(t<=1)return{num_htrees:t,context_map:r};A.readBits(1)&&(e=A.readBits(4)+1);const o=[];for(let n=0;n=n)throw new Error("[DecodeContextMap] i >= context_map_size");r[t]=0,t++}}else r[t]=i-e,t++}return A.readBits(1)&&function(n,A){const e=new Uint8Array(256);for(let n=0;n<256;n++)e[n]=n;for(let t=0;t>4;if(i){let o=i+240;for(;255===o;)i+=o=n[r++];if(A.set(n.subarray(r,r+i),t),t+=i,r+=i,r>=n.length)return t-e}const s=n[r++]|n[r++]<<8;if(!s||s>t)throw new Error(`lz4 offset out of range ${s}`);let w=4+(15&o),f=w+240;for(;255===f;)w+=f=n[r++];let a=t-s;const g=t+w;for(;t{const{memory:t,uncompress:r}=n.exports,o=68e3,i=o+A.byteLength,s=o+A.byteLength+e;if(t.buffer.byteLength{const e=new Uint8Array(A);return dn(n,e),e},BROTLI:function(n,A){const e=new Uint8Array(A);return function(n,A){let e=0,t=0,r=0,o=0;const i=[16,15,11,4];let s=0,w=0,f=0;const a=[new Mn(0,0),new Mn(0,0),new Mn(0,0)],g=128+m.READ_SIZE,I=new m(n);r=function(n){if(0===n.readBits(1))return 16;let A=n.readBits(3);return A>0?17+A:(A=n.readBits(3),A>0?8+A:17)}(I);const B=(1<A.buffer.length){const t=new Uint8Array(e+n);t.set(A.buffer),A.buffer=t}if(t=v.input_end,v.is_metadata){for(AA(I);n>0;--n)I.readMoreInput(),I.readBits(8);continue}if(0===n)continue;if(v.is_uncompressed){I.bit_pos_=I.bit_pos_+7&-8,Xn(A,n,e,u,h,I),e+=n;continue}for(let n=0;n<3;n++)C[n]=jn(I)+1,C[n]>=2&&(z(C[n]+2,d,n*qn,I),z(xn,c,n*qn,I),r[n]=kn(c,n*qn,I),E[n]=1);I.readMoreInput();const y=I.readBits(2),F=Zn+(I.readBits(4)<0;){let t;I.readMoreInput(),0===r[1]&&(zn(C[1],d,1,g,b,E,I),r[1]=kn(c,qn,I),J=a[1].htrees[g[1]]),r[1]--;const v=M(a[1].codes,J,I);let W=v>>6;W>=2?(W-=2,t=-1):t=0;const m=O[W]+(v>>3&7),x=_[W]+(7&v),P=X[m].offset+I.readBits(X[m].nbits),q=j[x].offset+I.readBits(j[x].nbits);w=u[e-1&h],f=u[e-2&h];for(let n=0;n4?3:q-2))];if(t=M(a[2].codes,a[2].htrees[n],I),t>=F){t-=F;const n=t&U;t>>=y;const A=1+(t>>1);t=F+((2+(1&t)<o){if(!(q>=Jn&&q<=Dn))throw new Error("Invalid backward reference");{let t=Nn[q];const r=D-o-1,i=Kn[q],s=r>>i;if(t+=(r&(1<=Q){A.write(u,l);for(let n=0;n0&&(i[3&s]=D,s++),q>n)throw new Error("Invalid backward reference");for(let t=0;ty(n),LZ4:function(n,A){const e=new Uint8Array(A);try{let A=0,t=0;for(;A - - - - - - - diff --git a/demo/workers/parquetWorker.js b/demo/workers/parquetWorker.js deleted file mode 100644 index 40293de..0000000 --- a/demo/workers/parquetWorker.js +++ /dev/null @@ -1,21 +0,0 @@ -import { compressors } from 'hyparquet-compressors' -import { parquetQuery } from '../../src/query.js' -import { asyncBufferFrom } from './parquetWorkerClient.js' - -self.onmessage = async ({ data }) => { - const { metadata, from, rowStart, rowEnd, orderBy, columns, queryId, chunks } = data - const file = await asyncBufferFrom(from) - /** - * @typedef {import('../../src/hyparquet.js').ColumnData} ColumnData - * @type {((chunk: ColumnData) => void) | undefined} - */ - const onChunk = chunks ? chunk => self.postMessage({ chunk, queryId }) : undefined - try { - const result = await parquetQuery({ - metadata, file, rowStart, rowEnd, orderBy, columns, compressors, onChunk, - }) - self.postMessage({ result, queryId }) - } catch (error) { - self.postMessage({ error, queryId }) - } -} diff --git a/demo/workers/parquetWorkerClient.ts b/demo/workers/parquetWorkerClient.ts deleted file mode 100644 index 8371f8f..0000000 --- a/demo/workers/parquetWorkerClient.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { cachedAsyncBuffer } from '../../src/asyncBuffer.js' -import type { AsyncBuffer, ParquetReadOptions } from '../../src/hyparquet.js' -import { asyncBufferFromUrl } from '../../src/utils.js' - -// Serializable constructors for AsyncBuffers -interface AsyncBufferFromFile { - file: File - byteLength: number -} -interface AsyncBufferFromUrl { - url: string - byteLength: number -} -export type AsyncBufferFrom = AsyncBufferFromFile | AsyncBufferFromUrl - -// Same as ParquetReadOptions, but AsyncBufferFrom instead of AsyncBuffer -interface ParquetReadWorkerOptions extends Omit { - from: AsyncBufferFrom - orderBy?: string -} - -let worker: Worker | undefined -let nextQueryId = 0 -interface QueryAgent { - resolve: (value: any) => void - reject: (error: any) => void - onChunk?: (chunk: any) => void -} -const pending = new Map() - -function getWorker() { - if (!worker) { - worker = new Worker(new URL('demo/workers/worker.min.js', import.meta.url)) - worker.onmessage = ({ data }) => { - const { resolve, reject, onChunk } = pending.get(data.queryId)! - if (data.error) { - reject(data.error) - } else if (data.result) { - resolve(data.result) - } else if (data.chunk) { - onChunk?.(data.chunk) - } else { - reject(new Error('Unexpected message from worker')) - } - } - } - return worker -} - -/** - * Presents almost the same interface as parquetRead, but runs in a worker. - * This is useful for reading large parquet files without blocking the main thread. - * Instead of taking an AsyncBuffer, it takes a AsyncBufferFrom, because it needs - * to be serialized to the worker. - */ -export function parquetQueryWorker( - { metadata, from, rowStart, rowEnd, orderBy, onChunk }: ParquetReadWorkerOptions -): Promise[]> { - return new Promise((resolve, reject) => { - const queryId = nextQueryId++ - pending.set(queryId, { resolve, reject, onChunk }) - const worker = getWorker() - - // If caller provided an onChunk callback, worker will send chunks as they are parsed - const chunks = onChunk !== undefined - worker.postMessage({ - queryId, metadata, from, rowStart, rowEnd, orderBy, chunks, - }) - }) -} - -/** - * Convert AsyncBufferFrom to AsyncBuffer. - */ -export async function asyncBufferFrom(from: AsyncBufferFrom): Promise { - if ('url' in from) { - // Cached asyncBuffer for urls only - const key = JSON.stringify(from) - const cached = cache.get(key) - if (cached) return cached - const asyncBuffer = asyncBufferFromUrl(from).then(cachedAsyncBuffer) - cache.set(key, asyncBuffer) - return asyncBuffer - } else { - return from.file.arrayBuffer() - } -} -const cache = new Map>() diff --git a/demo/workers/worker.min.js b/demo/workers/worker.min.js deleted file mode 100644 index f5a3cb7..0000000 --- a/demo/workers/worker.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){"use strict";var n=ArrayBuffer,e=Uint8Array,t=Uint16Array,r=Int16Array,o=Int32Array,i=function(n,t,r){if(e.prototype.slice)return e.prototype.slice.call(n,t,r);(null==t||t<0)&&(t=0),(null==r||r>n.length)&&(r=n.length);var o=new e(r-t);return o.set(n.subarray(t,r)),o},A=function(n,t,r,o){if(e.prototype.fill)return e.prototype.fill.call(n,t,r,o);for((null==r||r<0)&&(r=0),(null==o||o>n.length)&&(o=n.length);rn.length)&&(o=n.length);r2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],a=function(n,e,t){var r=new Error(e||s[n]);if(r.code=n,Error.captureStackTrace&&Error.captureStackTrace(r,a),!t)throw r;return r},l=function(n,e,t){for(var r=0,o=0;r>5&1,w=f>>2&1,u=3&f,c=f>>6;8&f&&a(0);var d=6-s,g=3==u?4:u,h=l(n,d,g),p=c?1<>3);E=y+(y>>3)*(7&n[5])}E>2145386496&&a(1);var B=new e((1==t?I||E:t?0:E)+12);return B[0]=1,B[4]=4,B[8]=8,{b:d+p,y:0,l:0,d:h,w:t&&1!=t?t:B.subarray(12),e:E,o:new o(B.buffer,0,3),u:I,c:w,m:Math.min(131072,E)}}if(25481893==(A>>4|n[3]<<20))return 8+(((r=n)[i=4]|r[i+1]<<8|r[i+2]<<16|r[i+3]<<24)>>>0);a(0)},u=function(n){for(var e=0;1<A&&a(3);for(var l=1<0;){var v=u(w+1),C=f>>3,Q=(1<>(7&f)&Q,L=(1<L&&(U-=F)),I[++c]=--U,-1==U?(w+=U,b[--h]=c):w-=U,!U)do{var N=f>>3;d=(o[N]|o[N+1]<<8)>>(7&f)&3,f+=2,c+=d}while(3==d)}(c>255||w)&&a(0);for(var S=0,T=(l>>1)+(l>>3)+3,R=l-1,W=0;W<=c;++W){var P=I[W];if(P<1)E[W]=-P;else for(g=0;g=h)}}for(S&&a(0),g=0;g>3,{b:s,s:b,n:m,t:y}]},d=c(new e([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1],g=c(new e([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1],h=c(new e([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1],p=function(n,e){for(var t=n.length,r=new o(t),i=0;if&&c>3;s=(s<>(7&w))&A,e[++c]=t.s[s],w-=l=t.n[s]}w==f&&c+1==o||a(0)},m=function(n,e,t){var r=6,o=e.length+3>>2,i=o<<1,A=o+i;b(n.subarray(r,r+=n[0]|n[1]<<8),e.subarray(0,o),t),b(n.subarray(r,r+=n[2]|n[3]<<8),e.subarray(o,i),t),b(n.subarray(r,r+=n[4]|n[5]<<8),e.subarray(i,A),t),b(n.subarray(r),e.subarray(A),t)},v=function(n,r,o){var f,s=r.b,l=n[s],w=l>>1&3;r.l=1&l;var p=l>>3|n[s+1]<<5|n[s+2]<<13,v=(s+=3)+p;if(1==w){if(s>=n.length)return;return r.b=s+1,o?(A(o,n[s],r.y,r.y+=p),o):A(new e(p),n[s])}if(!(v>n.length)){if(0==w)return r.b=v,o?(o.set(n.subarray(s,v),r.y),r.y+=p,o):i(n,s,v);if(2==w){var C=n[s],Q=3&C,U=C>>2&3,L=C>>4,F=0,Y=0;Q<2?1&U?L|=n[++s]<<4|(2&U&&n[++s]<<12):L=C>>3:(Y=U,U<2?(L|=(63&n[++s])<<4,F=n[s]>>6|n[++s]<<2):2==U?(L|=n[++s]<<4|(3&n[++s])<<12,F=n[s]>>2|n[++s]<<6):(L|=n[++s]<<4|(63&n[++s])<<12,F=n[s]>>6|n[++s]<<2|n[++s]<<10)),++s;var N=o?o.subarray(r.y,r.y+r.m):new e(r.m),S=N.length-L;if(0==Q)N.set(n.subarray(s,s+=L),S);else if(1==Q)A(N,n[s++],S);else{var T=r.h;if(2==Q){var R=function(n,r){var o=0,i=-1,f=new e(292),s=n[r],l=f.subarray(0,256),w=f.subarray(256,268),d=new t(f.buffer,268);if(s<128){var g=c(n,r+1,6),h=g[0],p=g[1],I=h<<3,E=n[r+=s];E||a(0);for(var y=0,B=0,b=p.b,m=b,v=(++r<<3)-8+u(E);!((v-=b)>3;if(y+=(n[C]|n[C+1]<<8)>>(7&v)&(1<>3]|n[C+1]<<8)>>(7&v)&(1<255&&a(0)}else{for(i=s-127;o>4,l[o+1]=15&Q}++r}var U=0;for(o=0;o11&&a(0),U+=N&&1<0;--o){var W=d[o];A(R,o,W,d[o-1]=W+w[o]*(1<127&&(W=W-128<<8|n[s++]);var P=n[s++];3&P&&a(0);for(var D=[g,h,d],q=2;q>-1;--q){var x=P>>2+(q<<1)&3;if(1==x){var H=new e([0,0,n[s++]]);D[q]={s:H.subarray(2,3),n:H.subarray(0,1),t:new t(H.buffer,0,1),b:0}}else 2==x?(s=(f=c(n,s,9-(1&q)))[0],D[q]=f[1]):3==x&&(r.t||a(0),D[q]=r.t[q])}var G=r.t=D,M=G[0],V=G[1],Z=G[2],O=n[v-1];O||a(0);var J=(v<<3)-8+u(O)-Z.b,K=J>>3,k=0,z=(n[K]|n[K+1]<<8)>>(7&J)&(1<>3]|n[K+1]<<8)>>(7&J)&(1<>3]|n[K+1]<<8)>>(7&J)&(1<>3]|n[K+1]<<8|n[K+2]<<16|n[K+3]<<24)>>>(7&J)&on-1);K=(J-=y[nn])>>3;var fn=B[nn]+((n[K]|n[K+1]<<8|n[K+2]<<16)>>(7&J)&(1<>3;var sn=E[_]+((n[K]|n[K+1]<<8|n[K+2]<<16)>>(7&J)&(1<>3,z=Z.t[z]+((n[K]|n[K+1]<<8)>>(7&J)&(1<<$)-1),K=(J-=en)>>3,j=M.t[j]+((n[K]|n[K+1]<<8)>>(7&J)&(1<>3,X=V.t[X]+((n[K]|n[K+1]<<8)>>(7&J)&(1<3)r.o[2]=r.o[1],r.o[1]=r.o[0],r.o[0]=An-=3;else{var an=An-(0!=sn);an?(An=3==an?r.o[0]-1:r.o[an],an>1&&(r.o[2]=r.o[1]),r.o[1]=r.o[0],r.o[0]=An):An=r.o[0]}for(q=0;qfn&&(wn=fn);for(q=0;q0},F.prototype.readMoreInput=function(){if(this.bit_end_pos_>256);else if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{const n=this.buf_ptr_,e=this.input_.read(this.buf_,n,U);if(e<0)throw new Error("Unexpected end of input");if(e=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,this.pos_++,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},F.prototype.readBits=function(n){32-this.bit_pos_>>this.bit_pos_&L[n];return this.bit_pos_+=n,e};const Y=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),N=new Uint16Array([1024,1536,1280,1536,0,256,768,512]),S=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]);function T(n,e){this.bits=n,this.value=e}const R=15;function W(n,e){let t=1<>=1;return(n&t-1)+t}function P(n,e,t,r,o){do{n[e+(r-=t)]=new T(o.bits,o.value)}while(r>0)}function D(n,e,t){let r=1<0;--A[r]){P(n,e+u,o,l,new T(255&r,65535&s[c++])),u=W(u,r)}const d=w-1;let g=-1;for(let r=t+1,o=2;r<=R;++r,o<<=1)for(;A[r]>0;--A[r]){(u&d)!==g&&(e+=l,a=D(A,r,t),l=1<>t),o,l,new T(r-t&255,65535&s[c++])),u=W(u,r)}return w}function x(n,e,t,r){const o=new Uint8Array(n);r.readMoreInput();const i=r.readBits(2);if(1===i){let e=n-1,t=0;const i=new Int32Array(4),A=r.readBits(2)+1;for(;e;)e>>=1,t++;for(let e=0;e0;n++){const o=S[n];let i=0;r.fillBitWindow(),i+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=f[i].bits;const s=f[i].value;e[o]=s,0!==s&&(t-=32>>s,A++)}if(1!==A&&0!==t)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function(n,e,t,r){let o=0,i=8,A=0,f=0,s=32768;const a=[];for(let n=0;n<32;n++)a.push(new T(0,0));q(a,0,5,n,18);for(;o0;){let n=0;r.readMoreInput(),r.fillBitWindow(),n+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=a[n].bits;const l=255&a[n].value;if(l<16)A=0,t[o++]=l,0!==l&&(i=l,s-=32768>>l);else{const n=l-14;let a=0;16===l&&(a=i),f!==a&&(A=0,f=a);const w=A;A>0&&(A-=2,A<<=n),A+=r.readBits(n)+3;const u=A-w;if(o+u>e)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(let n=0;n>>t.bit_pos_&255].bits-8;return r>0&&(t.bit_pos_+=8,e+=n[e].value,e+=t.val_>>>t.bit_pos_&(1<this.buffer.length&&(t=this.buffer.length-this.pos);for(let r=0;rthis.buffer.length)throw new Error("brotli output buffer is not large enough");return this.buffer.set(n.subarray(0,e),this.pos),this.pos+=e,e};const z=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),X=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),j=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);function _(n,e){const t=new Uint16Array(31);for(let r=0;r<31;r++)t[r]=e+=1<>1|(21845&n)<<1;e=(52428&e)>>2|(13107&e)<<2,e=(61680&e)>>4|(3855&e)<<4,tn[n]=((65280&e)>>8|(255&e)<<8)>>1}function rn(n,e,t){const r=new Uint16Array(e);for(let e=0;e>t]=A}}return i}const on=new Uint8Array(288);for(let n=0;n<144;n++)on[n]=8;for(let n=144;n<256;n++)on[n]=9;for(let n=256;n<280;n++)on[n]=7;for(let n=280;n<288;n++)on[n]=8;const An=new Uint8Array(32);for(let n=0;n<32;n++)An[n]=5;const fn=rn(on,9),sn=rn(An,5);function an(n){let e=n[0];for(let t=1;te&&(e=n[t]);return e}function ln(n,e,t){const r=e/8|0;return(n[r]|n[r+1]<<8)>>(7&e)&t}function wn(n,e){const t=e/8|0;return(n[t]|n[t+1]<<8|n[t+2]<<16)>>(7&e)}function un(n,e,t=0,r=0){if(!(n.length-t))return;const o=function(n,e){if(31!==n[e++]||139!==n[e++]||8!==n[e++])throw new Error("invalid gzip data");const t=n[e++];e+=6,4&t&&(e+=2+(n[e+10]|n[e+11]<<8));for(let r=(t>>3&1)+(t>>4&1);r>0;r-=Number(!n[e++]));return e+(2&t)}(n,t);if(o===n.length-8)return;if(o>n.length-8)throw new Error("unexpected EOF");let i,A,f=8*o,s=0,a=0,l=0;const w=8*n.length;do{if(!i){s=ln(n,f,1);const t=ln(n,f+1,3);if(f+=3,!t){const t=4+((f+7)/8|0),o=n[t-4]|n[t-3]<<8,i=t+o;if(i>n.length)throw new Error("unexpected EOF");e.set(n.subarray(t,i),r),r+=o,f=8*i;continue}if(1===t)i=fn,A=sn,a=9,l=5;else{if(2!==t)throw new Error("invalid block type");{const e=ln(n,f,31)+257,t=ln(n,f+10,15)+4,r=e+ln(n,f+5,31)+1;f+=14;const o=new Uint8Array(r),s=new Uint8Array(19);for(let e=0;e>4;if(r<16)o[e++]=r;else{let t=0,i=0;for(16===r?(i=3+ln(n,f,3),f+=2,t=o[e-1]):17===r?(i=3+ln(n,f,7),f+=3):18===r&&(i=11+ln(n,f,127),f+=7);i--;)o[e++]=t}}const d=o.subarray(0,e),g=o.subarray(e);a=an(d),l=an(g),i=rn(d,a),A=rn(g,l)}}if(f>w)throw new Error("unexpected EOF")}const t=(1<>4;if(f+=15&s,f>w)throw new Error("unexpected EOF");if(!s)throw new Error("invalid length/literal");if(a<256)e[r++]=a;else{if(256===a){u=f,i=void 0;break}{let t=a-254;if(a>264){const e=a-257,r=z[e];t=ln(n,f,(1<>4;if(!i)throw new Error("invalid distance");f+=15&i;let l=en[s];if(s>3){const e=X[s];l+=wn(n,f)&(1<w)throw new Error("unexpected EOF");const u=r+t;if(r'),new pn("",0,"\n"),new pn("",3,""),new pn("",0,"]"),new pn("",0," for "),new pn("",14,""),new pn("",2,""),new pn("",0," a "),new pn("",0," that "),new pn(" ",gn,""),new pn("",0,". "),new pn(".",0,""),new pn(" ",0,", "),new pn("",15,""),new pn("",0," with "),new pn("",0,"'"),new pn("",0," from "),new pn("",0," by "),new pn("",16,""),new pn("",17,""),new pn(" the ",0,""),new pn("",4,""),new pn("",0,". The "),new pn("",hn,""),new pn("",0," on "),new pn("",0," as "),new pn("",0," is "),new pn("",7,""),new pn("",1,"ing "),new pn("",0,"\n\t"),new pn("",0,":"),new pn(" ",0,". "),new pn("",0,"ed "),new pn("",20,""),new pn("",18,""),new pn("",6,""),new pn("",0,"("),new pn("",gn,", "),new pn("",8,""),new pn("",0," at "),new pn("",0,"ly "),new pn(" the ",0," of "),new pn("",5,""),new pn("",9,""),new pn(" ",gn,", "),new pn("",gn,'"'),new pn(".",0,"("),new pn("",hn," "),new pn("",gn,'">'),new pn("",0,'="'),new pn(" ",0,"."),new pn(".com/",0,""),new pn(" the ",0," of the "),new pn("",gn,"'"),new pn("",0,". This "),new pn("",0,","),new pn(".",0," "),new pn("",gn,"("),new pn("",gn,"."),new pn("",0," not "),new pn(" ",0,'="'),new pn("",0,"er "),new pn(" ",hn," "),new pn("",0,"al "),new pn(" ",hn,""),new pn("",0,"='"),new pn("",hn,'"'),new pn("",gn,". "),new pn(" ",0,"("),new pn("",0,"ful "),new pn(" ",gn,". "),new pn("",0,"ive "),new pn("",0,"less "),new pn("",hn,"'"),new pn("",0,"est "),new pn(" ",gn,"."),new pn("",hn,'">'),new pn(" ",0,"='"),new pn("",gn,","),new pn("",0,"ize "),new pn("",hn,"."),new pn(" ",0,""),new pn(" ",0,","),new pn("",gn,'="'),new pn("",hn,'="'),new pn("",0,"ous "),new pn("",hn,", "),new pn("",gn,"='"),new pn(" ",gn,","),new pn(" ",hn,'="'),new pn(" ",hn,", "),new pn("",hn,","),new pn("",hn,"("),new pn("",hn,". "),new pn(" ",hn,"."),new pn("",hn,"='"),new pn(" ",hn,". "),new pn(" ",gn,'="'),new pn(" ",hn,"='"),new pn(" ",gn,"='")],En=In.length;function yn(n,e){return n[e]<192?(n[e]>=97&&n[e]<=122&&(n[e]^=32),1):n[e]<224?(n[e+1]^=32,2):(n[e+2]^=5,3)}function Bn(n,e,t,r,o){const i=dn(),{prefix:A}=In[o],{suffix:f}=In[o],s=In[o].transform;let a=s<12?0:s-11;const l=e;a>r&&(a=r);let w=0;for(;w0;){const e=yn(n,u);u+=e,r-=e}let c=0;for(;c=n&&(l-=n),r[t]=l,o[f+(1&i[s])]=l,++i[s]}function Fn(n,e){this.alphabet_size=n,this.num_htrees=e,this.codes=new Array(e+e*Cn[n+31>>>5]),this.htrees=new Uint32Array(e)}function Yn(n,e,t){const r=H(n,e,t),{nbits:o}=M[r];return M[r].offset+t.readBits(o)}function Nn(n,e,t){return n<16?(t+=mn[n],e[t&=3]+vn[n]):n-16+1}function Sn(n,e,t,r,o,i){const A=o+1;let f=t&o,s=i.pos_&F.IBUF_MASK;if(e<8||i.bit_pos_+(e<<3)0;)i.readMoreInput(),r[f++]=i.readBits(8),f===A&&(n.write(r,A),f=0);return}if(i.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;i.bit_pos_<32;)r[f]=i.val_>>>i.bit_pos_,i.bit_pos_+=8,f++,e--;let a=i.bit_end_pos_-i.bit_pos_>>3;if(s+a>F.IBUF_MASK){const n=F.IBUF_MASK+1-s;for(let e=0;e=A){n.write(r,A),f-=A;for(let n=0;n=A;){if(a=A-f,i.input_.read(r,f,a)1&&0===o)throw new Error("Invalid size byte");e.meta_block_length|=o<<8*r}}else for(let r=0;r4&&0===o)throw new Error("Invalid size nibble");e.meta_block_length|=o<<4*r}return e.meta_block_length++,e.input_end||e.is_metadata||(e.is_uncompressed=n.readBits(1)),e}function Pn(n,e){let t=0;e.readMoreInput();const r=Tn(e)+1,o=new Uint8Array(n);if(r<=1)return{num_htrees:r,context_map:o};e.readBits(1)&&(t=e.readBits(4)+1);const i=[];for(let n=0;n=n)throw new Error("[DecodeContextMap] i >= context_map_size");o[r]=0,r++}}else o[r]=A-t,r++}return e.readBits(1)&&function(n,e){const t=new Uint8Array(256);for(let n=0;n<256;n++)t[n]=n;for(let r=0;r>4;if(A){let i=A+240;for(;255===i;)A+=i=n[o++];if(e.set(n.subarray(o,o+A),r),r+=A,o+=A,o>=n.length)return r-t}const f=n[o++]|n[o++]<<8;if(!f||f>r)throw new Error(`lz4 offset out of range ${f}`);let s=4+(15&i),a=s+240;for(;255===a;)s+=a=n[o++];let l=r-f;const w=r+s;for(;r{const{memory:r,uncompress:o}=n.exports,i=68e3,A=i+e.byteLength,f=i+e.byteLength+t;if(r.buffer.byteLength{const t=new Uint8Array(e);return un(n,t),t},BROTLI:function(n,e){const t=new Uint8Array(e);return function(n,e){let t=0,r=0,o=0,i=0;const A=[16,15,11,4];let f=0,s=0,a=0;const l=[new Fn(0,0),new Fn(0,0),new Fn(0,0)],w=128+F.READ_SIZE,u=new F(n);o=function(n){if(0===n.readBits(1))return 16;let e=n.readBits(3);return e>0?17+e:(e=n.readBits(3),e>0?8+e:17)}(u);const c=(1<e.buffer.length){const r=new Uint8Array(t+n);r.set(e.buffer),e.buffer=r}if(r=v.input_end,v.is_metadata){for(qn(u);n>0;--n)u.readMoreInput(),u.readBits(8);continue}if(0===n)continue;if(v.is_uncompressed){u.bit_pos_=u.bit_pos_+7&-8,Sn(e,n,t,h,g,u),t+=n;continue}for(let n=0;n<3;n++)y[n]=Tn(u)+1,y[n]>=2&&(x(y[n]+2,I,n*bn,u),x(26,E,n*bn,u),o[n]=Yn(E,n*bn,u),b[n]=1);u.readMoreInput();const C=u.readBits(2),Q=16+(u.readBits(4)<0;){let r;u.readMoreInput(),0===o[1]&&(Ln(y[1],I,1,w,B,b,u),o[1]=Yn(E,bn,u),z=l[1].htrees[w[1]]),o[1]--;const v=H(l[1].codes,z,u);let L=v>>6;L>=2?(L-=2,r=-1):r=0;const S=O[L]+(v>>3&7),T=J[L]+(7&v),W=V[S].offset+u.readBits(V[S].nbits),P=Z[T].offset+u.readBits(Z[T].nbits);s=h[t-1&g],a=h[t-2&g];for(let n=0;n4?3:P-2))];if(r=H(l[2].codes,l[2].htrees[n],u),r>=Q){r-=Q;const n=r&U;r>>=C;const e=1+(r>>1);r=Q+((2+(1&r)<i){if(!(P>=4&&P<=24))throw new Error("Invalid backward reference");{let r=Qn[P];const o=x-i-1,A=Un[P],f=o>>A;if(r+=(o&(1<=p){e.write(h,d);for(let n=0;n0&&(A[3&f]=x,f++),P>n)throw new Error("Invalid backward reference");for(let r=0;rC(n),LZ4:function(n,e){const t=new Uint8Array(e);try{let e=0,r=0;for(;eJSON.parse(e.decode(n))))}if("BSON"===r)throw new Error("parquet bson not supported");if("INTERVAL"===r)throw new Error("parquet interval not supported");if("UTF8"===r||t&&"BYTE_ARRAY"===e.type){const e=new TextDecoder,t=new Array(n.length);for(let r=0;r>64n)-2440588n),t=Number((0xffffffffffffffffn&n)/1000000n);return new Date(e*Kn+t)}function _n(n){if(!n)return;const e=n[1]<<8|n[0],t=e>>15?-1:1,r=e>>10&31,o=1023&e;return 0===r?t*Math.pow(2,-14)*(o/1024):31===r?o?NaN:t*(1/0):t*Math.pow(2,r-15)*(1+o/1024)}function $n(n,e,t){const r=n[e],o=[];let i=1;if(r.num_children)for(;o.lengthe.element.name===n));if(!o)throw new Error(`parquet schema element not found: ${e}`);r.push(o),t=o}return r}function ee(n){let e=0;for(const{element:t}of n)"REPEATED"===t.repetition_type&&e++;return e}function te(n){let e=0;for(const{element:t}of n.slice(1))"REQUIRED"!==t.repetition_type&&e++;return e}const re=0,oe=1,ie=2,Ae=3,fe=4,se=5,ae=6,le=7,we=8,ue=9,ce=12,de=13;function ge(n){let e=0;const t={};for(;n.offset>>1^-(1&e)}(n);case ae:return Ie(n);case le:{const e=n.view.getFloat64(n.offset,!0);return n.offset+=8,e}case we:{const e=pe(n),t=new Uint8Array(n.view.buffer,n.view.byteOffset+n.offset,e);return n.offset+=e,t}case ue:{const[e,t]=function(n){const e=n.view.getUint8(n.offset++),t=e>>4,r=Ee(e);if(15===t){return[r,pe(n)]}return[r,t]}(n),r=e===oe||e===ie,o=new Array(t);for(let i=0;i>BigInt(1)^-(e&BigInt(1))}function Ee(n){return 15&n}function ye(n,e){const t=n.view.getUint8(n.offset++);if((15&t)===re)return[0,0,e];const r=t>>4;let o;if(!r)throw new Error("non-delta field id not supported");return o=e+r,[Ee(t),o,o]}async function Be(n,e=1<<19){if(!n)throw new Error("parquet file is required");if(!(n.byteLength>=0))throw new Error("parquet file byteLength is required");const t=Math.max(0,n.byteLength-e),r=await n.slice(t,n.byteLength),o=new DataView(r);if(827474256!==o.getUint32(r.byteLength-4,!0))throw new Error("parquet file invalid (footer != PAR1)");const i=o.getUint32(r.byteLength-8,!0);if(i>n.byteLength-8)throw new Error(`parquet metadata length ${i} exceeds available buffer ${n.byteLength-8}`);if(i+8>e){const e=n.byteLength-i-8,o=await n.slice(e,t),A=new ArrayBuffer(i+8),f=new Uint8Array(A);return f.set(new Uint8Array(o)),f.set(new Uint8Array(r),t-e),be(A)}return be(r)}function be(n){if(!n)throw new Error("parquet file is required");const e=new DataView(n);if(e.byteLength<8)throw new Error("parquet file is too short");if(827474256!==e.getUint32(e.byteLength-4,!0))throw new Error("parquet file invalid (footer != PAR1)");const t=e.byteLength-8,r=e.getUint32(t,!0);if(r>e.byteLength-8)throw new Error(`parquet metadata length ${r} exceeds available buffer ${e.byteLength-8}`);const o=ge({view:e,offset:t-r}),i=new TextDecoder;function A(n){return n&&i.decode(n)}const f=o.field_1,s=o.field_2.map((n=>({type:Gn[n.field_1],type_length:n.field_2,repetition_type:Vn[n.field_3],name:A(n.field_4),num_children:n.field_5,converted_type:Zn[n.field_6],scale:n.field_7,precision:n.field_8,field_id:n.field_9,logical_type:me(n.field_10)}))),a=s.filter((n=>n.type)),l=o.field_3,w=o.field_4.map((n=>({columns:n.field_1.map(((n,e)=>({file_path:A(n.field_1),file_offset:n.field_2,meta_data:n.field_3&&{type:Gn[n.field_3.field_1],encodings:n.field_3.field_2?.map((n=>Mn[n])),path_in_schema:n.field_3.field_3.map(A),codec:On[n.field_3.field_4],num_values:n.field_3.field_5,total_uncompressed_size:n.field_3.field_6,total_compressed_size:n.field_3.field_7,key_value_metadata:n.field_3.field_8,data_page_offset:n.field_3.field_9,index_page_offset:n.field_3.field_10,dictionary_page_offset:n.field_3.field_11,statistics:Ce(n.field_3.field_12,a[e]),encoding_stats:n.field_3.field_13?.map((n=>({page_type:Jn[n.field_1],encoding:Mn[n.field_2],count:n.field_3}))),bloom_filter_offset:n.field_3.field_14,bloom_filter_length:n.field_3.field_15,size_statistics:n.field_3.field_16&&{unencoded_byte_array_data_bytes:n.field_3.field_16.field_1,repetition_level_histogram:n.field_3.field_16.field_2,definition_level_histogram:n.field_3.field_16.field_3}},offset_index_offset:n.field_4,offset_index_length:n.field_5,column_index_offset:n.field_6,column_index_length:n.field_7,crypto_metadata:n.field_7,encrypted_column_metadata:n.field_8}))),total_byte_size:n.field_2,num_rows:n.field_3,sorting_columns:n.field_4?.map((n=>({column_idx:n.field_1,descending:n.field_2,nulls_first:n.field_3}))),file_offset:n.field_5,total_compressed_size:n.field_6,ordinal:n.field_7}))),u=o.field_5?.map((n=>({key:A(n.field_1),value:A(n.field_2)})));return{version:f,schema:s,num_rows:l,row_groups:w,key_value_metadata:u,created_by:A(o.field_6),metadata_length:r}}function me(n){return n?.field_1?{type:"STRING"}:n?.field_2?{type:"MAP"}:n?.field_3?{type:"LIST"}:n?.field_4?{type:"ENUM"}:n?.field_5?{type:"DECIMAL",scale:n.field_5.field_1,precision:n.field_5.field_2}:n?.field_6?{type:"DATE"}:n?.field_7?{type:"TIME",isAdjustedToUTC:n.field_7.field_1,unit:ve(n.field_7.field_2)}:n?.field_8?{type:"TIMESTAMP",isAdjustedToUTC:n.field_8.field_1,unit:ve(n.field_8.field_2)}:n?.field_10?{type:"INTEGER",bitWidth:n.field_10.field_1,isSigned:n.field_10.field_2}:n?.field_11?{type:"NULL"}:n?.field_12?{type:"JSON"}:n?.field_13?{type:"BSON"}:n?.field_14?{type:"UUID"}:n?.field_15?{type:"FLOAT16"}:n}function ve(n){if(n.field_1)return"MILLIS";if(n.field_2)return"MICROS";if(n.field_3)return"NANOS";throw new Error("parquet time unit required")}function Ce(n,e){return n&&{max:Qe(n.field_1,e),min:Qe(n.field_2,e),null_count:n.field_3,distinct_count:n.field_4,max_value:Qe(n.field_5,e),min_value:Qe(n.field_6,e),is_max_value_exact:n.field_7,is_min_value_exact:n.field_8}}function Qe(n,e){const{type:t,converted_type:r,logical_type:o}=e;if(void 0===n)return n;if("BOOLEAN"===t)return 1===n[0];if("BYTE_ARRAY"===t)return(new TextDecoder).decode(n);const i=new DataView(n.buffer,n.byteOffset,n.byteLength);return"FLOAT"===t&&4===i.byteLength?i.getFloat32(0,!0):"DOUBLE"===t&&8===i.byteLength?i.getFloat64(0,!0):"INT32"===t&&"DATE"===r?new Date(864e5*i.getInt32(0,!0)):"INT64"===t&&"TIMESTAMP_MICROS"===r?new Date(Number(i.getBigInt64(0,!0)/1000n)):"INT64"===t&&"TIMESTAMP_MILLIS"===r||"INT64"===t&&"TIMESTAMP"===o?.type?new Date(Number(i.getBigInt64(0,!0))):"INT32"===t&&4===i.byteLength?i.getInt32(0,!0):"INT64"===t&&8===i.byteLength?i.getBigInt64(0,!0):"DECIMAL"===r?Xn(n)*Math.pow(10,-(e.scale||0)):"FLOAT16"===o?.type?_n(n):n}function Ue(n,e,t,r,o,i){const A=e?.length||t.length;let f=0;const s=[n];let a=n,l=0,w=0,u=0;if(t[0])for(;l1)return!1;const e=n.children[0];return!(e.children.length>1)&&"REPEATED"===e.element.repetition_type}(e)){let A=e.children[0],f=i;1===A.children.length&&(A=A.children[0],f++),Le(n,A,f);const s=A.path.join("."),a=n.get(s);if(!a)throw new Error("parquet list column missing values");return o&&Fe(a,t),n.set(r,a),void n.delete(s)}if(function(n){if(!n)return!1;if("MAP"!==n.element.converted_type)return!1;if(n.children.length>1)return!1;const e=n.children[0];if(2!==e.children.length)return!1;if("REPEATED"!==e.element.repetition_type)return!1;const t=e.children.find((n=>"key"===n.element.name));if("REPEATED"===t?.element.repetition_type)return!1;const r=e.children.find((n=>"value"===n.element.name));return"REPEATED"!==r?.element.repetition_type}(e)){const A=e.children[0].element.name;Le(n,e.children[0].children[0],i+1),Le(n,e.children[0].children[1],i+1);const f=n.get(`${r}.${A}.key`),s=n.get(`${r}.${A}.value`);if(!f)throw new Error("parquet map column missing keys");if(!s)throw new Error("parquet map column missing values");if(f.length!==s.length)throw new Error("parquet map column key/value length mismatch");const a=Ye(f,s,i);return o&&Fe(a,t),n.delete(`${r}.${A}.key`),n.delete(`${r}.${A}.value`),void n.set(r,a)}if(e.children.length){const i="REQUIRED"===e.element.repetition_type?t:t+1,A={};for(const t of e.children){Le(n,t,i);const e=n.get(t.path.join("."));if(!e)throw new Error("parquet struct missing child data");A[t.element.name]=e}for(const t of e.children)n.delete(t.path.join("."));const f=Ne(A,i);o&&Fe(f,t),n.set(r,f)}}function Fe(n,e){for(let t=0;t>>1;Re(n,i,e,r,o),o+=i}}}function Re(n,e,t,r,o){const i=t+7>>3;let A=0;for(let e=0;e>1<<3;const A=(1<8?(a-=8,s-=8,f>>>=8):s-a>a&A),i--,a+=t);return o}function Pe(n,e,t,r){const o=function(n,e){switch(n){case"INT32":case"FLOAT":return 4;case"INT64":case"DOUBLE":return 8;case"FIXED_LEN_BYTE_ARRAY":if(!e)throw new Error("parquet byteWidth missing type_length");return e;default:throw new Error(`parquet unsupported type: ${n}`)}}(t,r),i=new Uint8Array(e*o);for(let t=0;t1){const r=ee(t);if(r){const t=new Array(e.num_values);return Te(n,Se(r),0,t),t}}return[]}(i,e,t),{definitionLevels:s,numNulls:a}=function(n,e,t){const r=te(t);if(!r)return{definitionLevels:[],numNulls:0};const o=new Array(e.num_values);Te(n,Se(r),0,o);let i=e.num_values;for(const n of o)n===r&&i--;0===i&&(o.length=0);return{definitionLevels:o,numNulls:i}}(i,e,t),l=e.num_values-a;if("PLAIN"===e.encoding){const{type_length:n}=t[t.length-1].element;A=De(i,r,l,n)}else if("PLAIN_DICTIONARY"===e.encoding||"RLE_DICTIONARY"===e.encoding||"RLE"===e.encoding){const n="BOOLEAN"===r?1:o.getUint8(i.offset++);n?(A=new Array(l),Te(i,n,o.byteLength-i.offset,A)):A=new Uint8Array(l)}else{if("BYTE_STREAM_SPLIT"!==e.encoding)throw new Error(`parquet unsupported encoding: ${e.encoding}`);{const{type_length:n}=t[t.length-1].element;A=Pe(i,l,r,n)}}return{definitionLevels:s,repetitionLevels:f,dataPage:A}}function Ve(n,e,t,r){return De({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},t.type,e.num_values,r)}function Ze(n,e,t,r){let o;const i=r?.[t];if("UNCOMPRESSED"===t)o=n;else if(i)o=i(n,e);else{if("SNAPPY"!==t)throw new Error(`parquet unsupported compression codec: ${t}`);o=new Uint8Array(e),function(n,e){const t=n.byteLength,r=e.byteLength;let o=0,i=0;for(;o=t)throw new Error("invalid snappy length header");for(;o=t)throw new Error("missing eof marker");if(3&r){let f=0;switch(3&r){case 1:A=4+(r>>>2&7),f=n[o]+(r>>>5<<8),o++;break;case 2:if(t<=o+1)throw new Error("snappy error end of input");A=1+(r>>>2),f=n[o]+(n[o+1]<<8),o+=2;break;case 3:if(t<=o+3)throw new Error("snappy error end of input");A=1+(r>>>2),f=n[o]+(n[o+1]<<8)+(n[o+2]<<16)+(n[o+3]<<24),o+=4}if(0===f||isNaN(f))throw new Error(`invalid offset ${f} pos ${o} inputLength ${t}`);if(f>i)throw new Error("cannot copy from before start of buffer");Ge(e,i,f,A),i+=A}else{let A=1+(r>>>2);if(A>60){if(o+3>=t)throw new Error("snappy error literal pos + 3 >= inputLength");const e=A-60;A=n[o]+(n[o+1]<<8)+(n[o+2]<<16)+(n[o+3]<<24),A=1+(A&xe[e]),o+=e}if(o+A>t)throw new Error("snappy error literal exceeds input length");He(n,o,e,i,A),o+=A,i+=A}}if(i!==r)throw new Error("premature end of input")}(n,o)}if(o?.length!==e)throw new Error(`parquet decompressed page length ${o?.length} does not match header ${e}`);return o}function Oe(n,e,t){const r=t instanceof Int32Array,o=pe(n),i=pe(n);pe(n);let A=Ie(n),f=0;t[f++]=r?Number(A):A;const s=o/i;for(;f>a&w;for(a+=i;a>=8;)a-=8n,n.offset++,a&&(e|=BigInt(n.view.getUint8(n.offset))<!!n));else if("PLAIN_DICTIONARY"===s.encoding||"RLE_DICTIONARY"===s.encoding){const n=c.getUint8(d.offset++);g=new Array(h),Te(d,n,w-1,g)}else if("DELTA_BINARY_PACKED"===s.encoding){g="INT32"===f?new Int32Array(h):new BigInt64Array(h),Oe(d,h,g)}else if("DELTA_LENGTH_BYTE_ARRAY"===s.encoding)g=new Array(h),function(n,e,t){const r=new Int32Array(e);Oe(n,e,r);for(let o=0;o{if(!n.ok)throw new Error(`fetch head failed ${n.status}`);const e=n.headers.get("Content-Length");if(!e)throw new Error("missing content length");return parseInt(e)}))}(n,t);const r=t||{};return{byteLength:e,async slice(e,t){const o=new Headers(r.headers),i=void 0===t?"":t-1;o.set("Range",`bytes=${e}-${i}`);const A=await fetch(n,{...r,headers:o});if(!A.ok||!A.body)throw new Error(`fetch failed ${A.status}`);return A.arrayBuffer()}}}function Xe(n,e,t,r,{compressors:o,utf8:i}){const{element:A}=r[r.length-1];let f;const s=[];for(;s.lengthn.repetition_type));Ue(s,u,c,l,e,n)}else{for(let n=2;n[n])));ke(s,l)}}else if("DATA_PAGE_V2"===e.type){const n=e.data_page_header_v2;if(!n)throw new Error("parquet data page header v2 is undefined");const{definitionLevels:w,repetitionLevels:u,dataPage:c}=Je(a,e,r,t,o);if(l=kn(c,f,A,n.encoding,i),u.length||w?.length){const n=te(r),e=r.map((({element:n})=>n.repetition_type));Ue(s,w,u,l,e,n)}else ke(s,l)}else{if("DICTIONARY_PAGE"!==e.type)throw new Error(`parquet unsupported page type: ${e.type}`);{const n=e.dictionary_page_header;if(!n)throw new Error("parquet dictionary page header is undefined");f=Ve(Ze(a,Number(e.uncompressed_page_size),t.codec,o),n,t,A.type_length)}}n.offset+=e.compressed_page_size}if(s.lengthe&&(s.length=e),s}function je({dictionary_page_offset:n,data_page_offset:e,total_compressed_size:t}){let r=n;return(!r||ee.num_rows)&&(r=Number(e.num_rows));let f,[s,a]=[o.byteLength,0];if(e.columns.forEach((({meta_data:n})=>{if(!n)throw new Error("parquet column metadata is undefined");if(A&&!A.includes(n.path_in_schema[0]))return;const[e,t]=je(n).map(Number);s=Math.min(s,e),a=Math.max(a,t)})),s>=a&&A?.length)throw new Error(`parquet columns not found: ${A.join(", ")}`);a-s<=1<<25&&(f=await o.slice(s,a));const l=[],{children:w}=ne(i.schema,[])[0],u=new Map(w.map((n=>[n.element.name,$e(n)]))),c=new Map;for(let a=0;a1<<30){console.warn(`parquet skipping huge column "${w.path_in_schema}" ${p.toLocaleString()} bytes`);continue}let I,E=0;f?(I=Promise.resolve(f),E=g-s):I=Promise.resolve(o.slice(g,h)),l.push(I.then((e=>{const o=ne(i.schema,w.path_in_schema);let A=Xe({view:new DataView(e),offset:E},r,w,o,n);const f=w.path_in_schema.join(".");c.set(f,A),A=void 0;const s=u.get(d);if(s?.every((n=>c.has(n)))&&(Le(c,o[1]),A=c.get(d),!A))throw new Error(`parquet column data not assembled: ${d}`);A&&n.onChunk?.({columnName:d,columnData:A,rowStart:t,rowEnd:t+A.length})})))}if(await Promise.all(l),n.onComplete){const e=new Array(r),t=w.map((n=>n.element.name)).filter((n=>!A||A.includes(n))),o=A||t,i=o.map((n=>t.includes(n)?c.get(n):void 0));for(let t=0;t{n[e]=i[r]?.[t]})),e[t]=n}else e[t]=i.map((n=>n?.[t]));return e}return[]}function $e(n,e=[]){if(n.children.length)for(const t of n.children)$e(t,e);else e.push(n.path.join("."));return e}function nt({byteLength:n,slice:e}){const t=new Map;return{byteLength:n,slice(r,o){const i=function(n,e,t){if(n<0){if(void 0!==e)throw new Error(`invalid suffix range [${n}, ${e}]`);return void 0===t?`${n},`:`${t+n},${t}`}if(void 0!==e){if(n>e)throw new Error(`invalid empty range [${n}, ${e}]`);return`${n},${e}`}return void 0===t?`${n},`:`${n},${t}`}(r,o,n),A=t.get(i);if(A)return A;const f=e(r,o);return t.set(i,f),f}}}function et(n){return new Promise(((e,t)=>{(async function(n){if(!n.file)throw new Error("parquet file is required");if(n.metadata||=await Be(n.file),!n.metadata)throw new Error("parquet metadata not found");const{metadata:e,onComplete:t,rowEnd:r}=n,o=n.rowStart||0,i=[];let A=0;for(const f of e.row_groups){const e=Number(f.num_rows);if(A+e>=o&&(void 0===r||Ae)).sort(((n,t)=>function(n,e){return ni+=Number(n.num_rows)));for(const n of t){o[A.findIndex((e=>nA[n]))}return await et(n)}const rt=new Map;self.onmessage=async({data:n})=>{const{metadata:e,from:t,rowStart:r,rowEnd:o,orderBy:i,columns:A,queryId:f,chunks:s}=n,a=await async function(n){if("url"in n){const e=JSON.stringify(n),t=rt.get(e);if(t)return t;const r=ze(n).then(nt);return rt.set(e,r),r}return n.file.arrayBuffer()}(t),l=s?n=>self.postMessage({chunk:n,queryId:f}):void 0;try{const n=await tt({metadata:e,file:a,rowStart:r,rowEnd:o,orderBy:i,columns:A,compressors:Hn,onChunk:l});self.postMessage({result:n,queryId:f})}catch(n){self.postMessage({error:n,queryId:f})}}})); -//# sourceMappingURL=worker.min.js.map diff --git a/demo/workers/worker.min.js.map b/demo/workers/worker.min.js.map deleted file mode 100644 index d0985a8..0000000 --- a/demo/workers/worker.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"worker.min.js","sources":["../../node_modules/fzstd/esm/index.mjs","../../node_modules/hysnappy/hysnappy.js","../../node_modules/hyparquet-compressors/src/brotliBitReader.js","../../node_modules/hyparquet-compressors/src/brotliContext.js","../../node_modules/hyparquet-compressors/src/brotliHuffman.js","../../node_modules/hyparquet-compressors/src/brotliPrefix.js","../../node_modules/hyparquet-compressors/src/brotliStreams.js","../../node_modules/hyparquet-compressors/src/gzip.js","../../node_modules/hyparquet-compressors/src/brotliDictionary.js","../../node_modules/hyparquet-compressors/src/brotliTransform.js","../../node_modules/hyparquet-compressors/src/brotli.js","../../node_modules/hyparquet-compressors/src/lz4.js","../../node_modules/hyparquet-compressors/src/index.js","../../src/constants.js","../../src/convert.js","../../src/schema.js","../../src/thrift.js","../../src/metadata.js","../../src/assemble.js","../../src/encoding.js","../../src/plain.js","../../src/snappy.js","../../src/datapage.js","../../src/delta.js","../../src/datapageV2.js","../../src/header.js","../../src/utils.js","../../src/column.js","../../src/read.js","../../src/asyncBuffer.js","../../src/hyparquet.js","../../src/query.js","parquetWorkerClient.ts","parquetWorker.js"],"sourcesContent":["// Some numerical data is initialized as -1 even when it doesn't need initialization to help the JIT infer types\n// aliases for shorter compressed code (most minifers don't do this)\nvar ab = ArrayBuffer, u8 = Uint8Array, u16 = Uint16Array, i16 = Int16Array, u32 = Uint32Array, i32 = Int32Array;\nvar slc = function (v, s, e) {\n if (u8.prototype.slice)\n return u8.prototype.slice.call(v, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n var n = new u8(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar fill = function (v, n, s, e) {\n if (u8.prototype.fill)\n return u8.prototype.fill.call(v, n, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n for (; s < e; ++s)\n v[s] = n;\n return v;\n};\nvar cpw = function (v, t, s, e) {\n if (u8.prototype.copyWithin)\n return u8.prototype.copyWithin.call(v, t, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n while (s < e) {\n v[t++] = v[s++];\n }\n};\n/**\n * Codes for errors generated within this library\n */\nexport var ZstdErrorCode = {\n InvalidData: 0,\n WindowSizeTooLarge: 1,\n InvalidBlockType: 2,\n FSEAccuracyTooHigh: 3,\n DistanceTooFarBack: 4,\n UnexpectedEOF: 5\n};\n// error codes\nvar ec = [\n 'invalid zstd data',\n 'window size too large (>2046MB)',\n 'invalid block type',\n 'FSE accuracy too high',\n 'match distance too far back',\n 'unexpected EOF'\n];\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\nvar rb = function (d, b, n) {\n var i = 0, o = 0;\n for (; i < n; ++i)\n o |= d[b++] << (i << 3);\n return o;\n};\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read Zstandard frame header\nvar rzfh = function (dat, w) {\n var n3 = dat[0] | (dat[1] << 8) | (dat[2] << 16);\n if (n3 == 0x2FB528 && dat[3] == 253) {\n // Zstandard\n var flg = dat[4];\n // single segment checksum dict flag frame content flag\n var ss = (flg >> 5) & 1, cc = (flg >> 2) & 1, df = flg & 3, fcf = flg >> 6;\n if (flg & 8)\n err(0);\n // byte\n var bt = 6 - ss;\n // dict bytes\n var db = df == 3 ? 4 : df;\n // dictionary id\n var di = rb(dat, bt, db);\n bt += db;\n // frame size bytes\n var fsb = fcf ? (1 << fcf) : ss;\n // frame source size\n var fss = rb(dat, bt, fsb) + ((fcf == 1) && 256);\n // window size\n var ws = fss;\n if (!ss) {\n // window descriptor\n var wb = 1 << (10 + (dat[5] >> 3));\n ws = wb + (wb >> 3) * (dat[5] & 7);\n }\n if (ws > 2145386496)\n err(1);\n var buf = new u8((w == 1 ? (fss || ws) : w ? 0 : ws) + 12);\n buf[0] = 1, buf[4] = 4, buf[8] = 8;\n return {\n b: bt + fsb,\n y: 0,\n l: 0,\n d: di,\n w: (w && w != 1) ? w : buf.subarray(12),\n e: ws,\n o: new i32(buf.buffer, 0, 3),\n u: fss,\n c: cc,\n m: Math.min(131072, ws)\n };\n }\n else if (((n3 >> 4) | (dat[3] << 20)) == 0x184D2A5) {\n // skippable\n return b4(dat, 4) + 8;\n }\n err(0);\n};\n// most significant bit for nonzero\nvar msb = function (val) {\n var bits = 0;\n for (; (1 << bits) <= val; ++bits)\n ;\n return bits - 1;\n};\n// read finite state entropy\nvar rfse = function (dat, bt, mal) {\n // table pos\n var tpos = (bt << 3) + 4;\n // accuracy log\n var al = (dat[bt] & 15) + 5;\n if (al > mal)\n err(3);\n // size\n var sz = 1 << al;\n // probabilities symbols repeat index high threshold\n var probs = sz, sym = -1, re = -1, i = -1, ht = sz;\n // optimization: single allocation is much faster\n var buf = new ab(512 + (sz << 2));\n var freq = new i16(buf, 0, 256);\n // same view as freq\n var dstate = new u16(buf, 0, 256);\n var nstate = new u16(buf, 512, sz);\n var bb1 = 512 + (sz << 1);\n var syms = new u8(buf, bb1, sz);\n var nbits = new u8(buf, bb1 + sz);\n while (sym < 255 && probs > 0) {\n var bits = msb(probs + 1);\n var cbt = tpos >> 3;\n // mask\n var msk = (1 << (bits + 1)) - 1;\n var val = ((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (tpos & 7)) & msk;\n // mask (1 fewer bit)\n var msk1fb = (1 << bits) - 1;\n // max small value\n var msv = msk - probs - 1;\n // small value\n var sval = val & msk1fb;\n if (sval < msv)\n tpos += bits, val = sval;\n else {\n tpos += bits + 1;\n if (val > msk1fb)\n val -= msv;\n }\n freq[++sym] = --val;\n if (val == -1) {\n probs += val;\n syms[--ht] = sym;\n }\n else\n probs -= val;\n if (!val) {\n do {\n // repeat byte\n var rbt = tpos >> 3;\n re = ((dat[rbt] | (dat[rbt + 1] << 8)) >> (tpos & 7)) & 3;\n tpos += 2;\n sym += re;\n } while (re == 3);\n }\n }\n if (sym > 255 || probs)\n err(0);\n var sympos = 0;\n // sym step (coprime with sz - formula from zstd source)\n var sstep = (sz >> 1) + (sz >> 3) + 3;\n // sym mask\n var smask = sz - 1;\n for (var s = 0; s <= sym; ++s) {\n var sf = freq[s];\n if (sf < 1) {\n dstate[s] = -sf;\n continue;\n }\n // This is split into two loops in zstd to avoid branching, but as JS is higher-level that is unnecessary\n for (i = 0; i < sf; ++i) {\n syms[sympos] = s;\n do {\n sympos = (sympos + sstep) & smask;\n } while (sympos >= ht);\n }\n }\n // After spreading symbols, should be zero again\n if (sympos)\n err(0);\n for (i = 0; i < sz; ++i) {\n // next state\n var ns = dstate[syms[i]]++;\n // num bits\n var nb = nbits[i] = al - msb(ns);\n nstate[i] = (ns << nb) - sz;\n }\n return [(tpos + 7) >> 3, {\n b: al,\n s: syms,\n n: nbits,\n t: nstate\n }];\n};\n// read huffman\nvar rhu = function (dat, bt) {\n // index weight count\n var i = 0, wc = -1;\n // buffer header byte\n var buf = new u8(292), hb = dat[bt];\n // huffman weights\n var hw = buf.subarray(0, 256);\n // rank count\n var rc = buf.subarray(256, 268);\n // rank index\n var ri = new u16(buf.buffer, 268);\n // NOTE: at this point bt is 1 less than expected\n if (hb < 128) {\n // end byte, fse decode table\n var _a = rfse(dat, bt + 1, 6), ebt = _a[0], fdt = _a[1];\n bt += hb;\n var epos = ebt << 3;\n // last byte\n var lb = dat[bt];\n if (!lb)\n err(0);\n // state1 state2 state1 bits state2 bits\n var st1 = 0, st2 = 0, btr1 = fdt.b, btr2 = btr1;\n // fse pos\n // pre-increment to account for original deficit of 1\n var fpos = (++bt << 3) - 8 + msb(lb);\n for (;;) {\n fpos -= btr1;\n if (fpos < epos)\n break;\n var cbt = fpos >> 3;\n st1 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr1) - 1);\n hw[++wc] = fdt.s[st1];\n fpos -= btr2;\n if (fpos < epos)\n break;\n cbt = fpos >> 3;\n st2 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr2) - 1);\n hw[++wc] = fdt.s[st2];\n btr1 = fdt.n[st1];\n st1 = fdt.t[st1];\n btr2 = fdt.n[st2];\n st2 = fdt.t[st2];\n }\n if (++wc > 255)\n err(0);\n }\n else {\n wc = hb - 127;\n for (; i < wc; i += 2) {\n var byte = dat[++bt];\n hw[i] = byte >> 4;\n hw[i + 1] = byte & 15;\n }\n ++bt;\n }\n // weight exponential sum\n var wes = 0;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n // bits must be at most 11, same as weight\n if (wt > 11)\n err(0);\n wes += wt && (1 << (wt - 1));\n }\n // max bits\n var mb = msb(wes) + 1;\n // table size\n var ts = 1 << mb;\n // remaining sum\n var rem = ts - wes;\n // must be power of 2\n if (rem & (rem - 1))\n err(0);\n hw[wc++] = msb(rem) + 1;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n ++rc[hw[i] = wt && (mb + 1 - wt)];\n }\n // huf buf\n var hbuf = new u8(ts << 1);\n // symbols num bits\n var syms = hbuf.subarray(0, ts), nb = hbuf.subarray(ts);\n ri[mb] = 0;\n for (i = mb; i > 0; --i) {\n var pv = ri[i];\n fill(nb, i, pv, ri[i - 1] = pv + rc[i] * (1 << (mb - i)));\n }\n if (ri[0] != ts)\n err(0);\n for (i = 0; i < wc; ++i) {\n var bits = hw[i];\n if (bits) {\n var code = ri[bits];\n fill(syms, i, code, ri[bits] = code + (1 << (mb - bits)));\n }\n }\n return [bt, {\n n: nb,\n b: mb,\n s: syms\n }];\n};\n// Tables generated using this:\n// https://gist.github.com/101arrowz/a979452d4355992cbf8f257cbffc9edd\n// default literal length table\nvar dllt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 81, 16, 99, 140, 49, 198, 24, 99, 12, 33, 196, 24, 99, 102, 102, 134, 70, 146, 4\n]), 0, 6)[1];\n// default match length table\nvar dmlt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 33, 20, 196, 24, 99, 140, 33, 132, 16, 66, 8, 33, 132, 16, 66, 8, 33, 68, 68, 68, 68, 68, 68, 68, 68, 36, 9\n]), 0, 6)[1];\n// default offset code table\nvar doct = /*#__PURE__ */ rfse(/*#__PURE__*/ new u8([\n 32, 132, 16, 66, 102, 70, 68, 68, 68, 68, 36, 73, 2\n]), 0, 5)[1];\n// bits to baseline\nvar b2bl = function (b, s) {\n var len = b.length, bl = new i32(len);\n for (var i = 0; i < len; ++i) {\n bl[i] = s;\n s += 1 << b[i];\n }\n return bl;\n};\n// literal length bits\nvar llb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 16843009, 50528770, 134678020, 202050057, 269422093\n])).buffer, 0, 36);\n// literal length baseline\nvar llbl = /*#__PURE__ */ b2bl(llb, 0);\n// match length bits\nvar mlb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 0, 0, 0, 0, 16843009, 50528770, 117769220, 185207048, 252579084, 16\n])).buffer, 0, 53);\n// match length baseline\nvar mlbl = /*#__PURE__ */ b2bl(mlb, 3);\n// decode huffman stream\nvar dhu = function (dat, out, hu) {\n var len = dat.length, ss = out.length, lb = dat[len - 1], msk = (1 << hu.b) - 1, eb = -hu.b;\n if (!lb)\n err(0);\n var st = 0, btr = hu.b, pos = (len << 3) - 8 + msb(lb) - btr, i = -1;\n for (; pos > eb && i < ss;) {\n var cbt = pos >> 3;\n var val = (dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (pos & 7);\n st = ((st << btr) | val) & msk;\n out[++i] = hu.s[st];\n pos -= (btr = hu.n[st]);\n }\n if (pos != eb || i + 1 != ss)\n err(0);\n};\n// decode huffman stream 4x\n// TODO: use workers to parallelize\nvar dhu4 = function (dat, out, hu) {\n var bt = 6;\n var ss = out.length, sz1 = (ss + 3) >> 2, sz2 = sz1 << 1, sz3 = sz1 + sz2;\n dhu(dat.subarray(bt, bt += dat[0] | (dat[1] << 8)), out.subarray(0, sz1), hu);\n dhu(dat.subarray(bt, bt += dat[2] | (dat[3] << 8)), out.subarray(sz1, sz2), hu);\n dhu(dat.subarray(bt, bt += dat[4] | (dat[5] << 8)), out.subarray(sz2, sz3), hu);\n dhu(dat.subarray(bt), out.subarray(sz3), hu);\n};\n// read Zstandard block\nvar rzb = function (dat, st, out) {\n var _a;\n var bt = st.b;\n // byte 0 block type\n var b0 = dat[bt], btype = (b0 >> 1) & 3;\n st.l = b0 & 1;\n var sz = (b0 >> 3) | (dat[bt + 1] << 5) | (dat[bt + 2] << 13);\n // end byte for block\n var ebt = (bt += 3) + sz;\n if (btype == 1) {\n if (bt >= dat.length)\n return;\n st.b = bt + 1;\n if (out) {\n fill(out, dat[bt], st.y, st.y += sz);\n return out;\n }\n return fill(new u8(sz), dat[bt]);\n }\n if (ebt > dat.length)\n return;\n if (btype == 0) {\n st.b = ebt;\n if (out) {\n out.set(dat.subarray(bt, ebt), st.y);\n st.y += sz;\n return out;\n }\n return slc(dat, bt, ebt);\n }\n if (btype == 2) {\n // byte 3 lit btype size format\n var b3 = dat[bt], lbt = b3 & 3, sf = (b3 >> 2) & 3;\n // lit src size lit cmp sz 4 streams\n var lss = b3 >> 4, lcs = 0, s4 = 0;\n if (lbt < 2) {\n if (sf & 1)\n lss |= (dat[++bt] << 4) | ((sf & 2) && (dat[++bt] << 12));\n else\n lss = b3 >> 3;\n }\n else {\n s4 = sf;\n if (sf < 2)\n lss |= ((dat[++bt] & 63) << 4), lcs = (dat[bt] >> 6) | (dat[++bt] << 2);\n else if (sf == 2)\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 3) << 12), lcs = (dat[bt] >> 2) | (dat[++bt] << 6);\n else\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 63) << 12), lcs = (dat[bt] >> 6) | (dat[++bt] << 2) | (dat[++bt] << 10);\n }\n ++bt;\n // add literals to end - can never overlap with backreferences because unused literals always appended\n var buf = out ? out.subarray(st.y, st.y + st.m) : new u8(st.m);\n // starting point for literals\n var spl = buf.length - lss;\n if (lbt == 0)\n buf.set(dat.subarray(bt, bt += lss), spl);\n else if (lbt == 1)\n fill(buf, dat[bt++], spl);\n else {\n // huffman table\n var hu = st.h;\n if (lbt == 2) {\n var hud = rhu(dat, bt);\n // subtract description length\n lcs += bt - (bt = hud[0]);\n st.h = hu = hud[1];\n }\n else if (!hu)\n err(0);\n (s4 ? dhu4 : dhu)(dat.subarray(bt, bt += lcs), buf.subarray(spl), hu);\n }\n // num sequences\n var ns = dat[bt++];\n if (ns) {\n if (ns == 255)\n ns = (dat[bt++] | (dat[bt++] << 8)) + 0x7F00;\n else if (ns > 127)\n ns = ((ns - 128) << 8) | dat[bt++];\n // symbol compression modes\n var scm = dat[bt++];\n if (scm & 3)\n err(0);\n var dts = [dmlt, doct, dllt];\n for (var i = 2; i > -1; --i) {\n var md = (scm >> ((i << 1) + 2)) & 3;\n if (md == 1) {\n // rle buf\n var rbuf = new u8([0, 0, dat[bt++]]);\n dts[i] = {\n s: rbuf.subarray(2, 3),\n n: rbuf.subarray(0, 1),\n t: new u16(rbuf.buffer, 0, 1),\n b: 0\n };\n }\n else if (md == 2) {\n // accuracy log 8 for offsets, 9 for others\n _a = rfse(dat, bt, 9 - (i & 1)), bt = _a[0], dts[i] = _a[1];\n }\n else if (md == 3) {\n if (!st.t)\n err(0);\n dts[i] = st.t[i];\n }\n }\n var _b = st.t = dts, mlt = _b[0], oct = _b[1], llt = _b[2];\n var lb = dat[ebt - 1];\n if (!lb)\n err(0);\n var spos = (ebt << 3) - 8 + msb(lb) - llt.b, cbt = spos >> 3, oubt = 0;\n var lst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << llt.b) - 1);\n cbt = (spos -= oct.b) >> 3;\n var ost = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << oct.b) - 1);\n cbt = (spos -= mlt.b) >> 3;\n var mst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mlt.b) - 1);\n for (++ns; --ns;) {\n var llc = llt.s[lst];\n var lbtr = llt.n[lst];\n var mlc = mlt.s[mst];\n var mbtr = mlt.n[mst];\n var ofc = oct.s[ost];\n var obtr = oct.n[ost];\n cbt = (spos -= ofc) >> 3;\n var ofp = 1 << ofc;\n var off = ofp + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16) | (dat[cbt + 3] << 24)) >>> (spos & 7)) & (ofp - 1));\n cbt = (spos -= mlb[mlc]) >> 3;\n var ml = mlbl[mlc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << mlb[mlc]) - 1));\n cbt = (spos -= llb[llc]) >> 3;\n var ll = llbl[llc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << llb[llc]) - 1));\n cbt = (spos -= lbtr) >> 3;\n lst = llt.t[lst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << lbtr) - 1));\n cbt = (spos -= mbtr) >> 3;\n mst = mlt.t[mst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mbtr) - 1));\n cbt = (spos -= obtr) >> 3;\n ost = oct.t[ost] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << obtr) - 1));\n if (off > 3) {\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off -= 3;\n }\n else {\n var idx = off - (ll != 0);\n if (idx) {\n off = idx == 3 ? st.o[0] - 1 : st.o[idx];\n if (idx > 1)\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off;\n }\n else\n off = st.o[0];\n }\n for (var i = 0; i < ll; ++i) {\n buf[oubt + i] = buf[spl + i];\n }\n oubt += ll, spl += ll;\n var stin = oubt - off;\n if (stin < 0) {\n var len = -stin;\n var bs = st.e + stin;\n if (len > ml)\n len = ml;\n for (var i = 0; i < len; ++i) {\n buf[oubt + i] = st.w[bs + i];\n }\n oubt += len, ml -= len, stin = 0;\n }\n for (var i = 0; i < ml; ++i) {\n buf[oubt + i] = buf[stin + i];\n }\n oubt += ml;\n }\n if (oubt != spl) {\n while (spl < buf.length) {\n buf[oubt++] = buf[spl++];\n }\n }\n else\n oubt = buf.length;\n if (out)\n st.y += oubt;\n else\n buf = slc(buf, 0, oubt);\n }\n else if (out) {\n st.y += lss;\n if (spl) {\n for (var i = 0; i < lss; ++i) {\n buf[i] = buf[spl + i];\n }\n }\n }\n else if (spl)\n buf = slc(buf, spl);\n st.b = ebt;\n return buf;\n }\n err(2);\n};\n// concat\nvar cct = function (bufs, ol) {\n if (bufs.length == 1)\n return bufs[0];\n var buf = new u8(ol);\n for (var i = 0, b = 0; i < bufs.length; ++i) {\n var chk = bufs[i];\n buf.set(chk, b);\n b += chk.length;\n }\n return buf;\n};\n/**\n * Decompresses Zstandard data\n * @param dat The input data\n * @param buf The output buffer. If unspecified, the function will allocate\n * exactly enough memory to fit the decompressed data. If your\n * data has multiple frames and you know the output size, specifying\n * it will yield better performance.\n * @returns The decompressed data\n */\nexport function decompress(dat, buf) {\n var bufs = [], nb = +!buf;\n var bt = 0, ol = 0;\n for (; dat.length;) {\n var st = rzfh(dat, nb || buf);\n if (typeof st == 'object') {\n if (nb) {\n buf = null;\n if (st.w.length == st.u) {\n bufs.push(buf = st.w);\n ol += st.u;\n }\n }\n else {\n bufs.push(buf);\n st.e = 0;\n }\n for (; !st.l;) {\n var blk = rzb(dat, st, buf);\n if (!blk)\n err(5);\n if (buf)\n st.e = st.y;\n else {\n bufs.push(blk);\n ol += blk.length;\n cpw(st.w, 0, blk.length);\n st.w.set(blk, st.w.length - blk.length);\n }\n }\n bt = st.b + (st.c * 4);\n }\n else\n bt = st;\n dat = dat.subarray(bt);\n }\n return cct(bufs, ol);\n}\n/**\n * Decompressor for Zstandard streamed data\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a Zstandard decompressor\n * @param ondata The handler for stream data\n */\n function Decompress(ondata) {\n this.ondata = ondata;\n this.c = [];\n this.l = 0;\n this.z = 0;\n }\n /**\n * Pushes data to be decompressed\n * @param chunk The chunk of data to push\n * @param final Whether or not this is the last chunk in the stream\n */\n Decompress.prototype.push = function (chunk, final) {\n if (typeof this.s == 'number') {\n var sub = Math.min(chunk.length, this.s);\n chunk = chunk.subarray(sub);\n this.s -= sub;\n }\n var sl = chunk.length;\n var ncs = sl + this.l;\n if (!this.s) {\n if (final) {\n if (!ncs) {\n this.ondata(new u8(0), true);\n return;\n }\n // min for frame + one block\n if (ncs < 5)\n err(5);\n }\n else if (ncs < 18) {\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (typeof (this.s = rzfh(chunk)) == 'number')\n return this.push(chunk, final);\n }\n if (typeof this.s != 'number') {\n if (ncs < (this.z || 3)) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (!this.z && ncs < (this.z = (chunk[this.s.b] & 2) ? 4 : 3 + ((chunk[this.s.b] >> 3) | (chunk[this.s.b + 1] << 5) | (chunk[this.s.b + 2] << 13)))) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n else\n this.z = 0;\n for (;;) {\n var blk = rzb(chunk, this.s);\n if (!blk) {\n if (final)\n err(5);\n var adc = chunk.subarray(this.s.b);\n this.s.b = 0;\n this.c.push(adc), this.l += adc.length;\n return;\n }\n else {\n this.ondata(blk, false);\n cpw(this.s.w, 0, blk.length);\n this.s.w.set(blk, this.s.w.length - blk.length);\n }\n if (this.s.l) {\n var rest = chunk.subarray(this.s.b);\n this.s = this.s.c * 4;\n this.push(rest, final);\n return;\n }\n }\n }\n else if (final)\n err(5);\n };\n return Decompress;\n}());\nexport { Decompress };\n","/**\n * Uncompress a snappy compressed buffer.\n *\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nexport function snappyUncompress(input, outputLength) {\n return snappyUncompressor()(input, outputLength)\n}\n\n/**\n * Load wasm and return uncompressor function.\n *\n * @returns {(input: Uint8Array, outputLength: number) => Uint8Array}\n */\nexport function snappyUncompressor() {\n // Instantiate wasm module\n const wasm = instantiateWasm()\n\n return (input, outputLength) => {\n /** @type {any} */\n const { memory, uncompress } = wasm.exports\n\n // Input data is passed into wasm memory at inputStart\n // Output data is expected to be written to wasm memory at outputStart\n // clang uses some wasm memory, so we need to skip past that\n const inputStart = 68000 // 68 kb\n const outputStart = inputStart + input.byteLength\n\n // WebAssembly memory\n const totalSize = inputStart + input.byteLength + outputLength\n if (memory.buffer.byteLength < totalSize) {\n // Calculate the number of pages needed, rounding up\n const pageSize = 64 * 1024 // 64KiB per page\n const currentPages = memory.buffer.byteLength / pageSize\n const requiredPages = Math.ceil(totalSize / pageSize)\n const pagesToGrow = requiredPages - currentPages\n memory.grow(pagesToGrow)\n }\n\n // Copy the compressed data to WASM memory\n const byteArray = new Uint8Array(memory.buffer)\n byteArray.set(input, inputStart)\n\n // Call wasm uncompress function\n const result = uncompress(inputStart, input.byteLength, outputStart)\n\n // Check for errors\n if (result === -1) throw new Error('invalid snappy length header')\n if (result === -2) throw new Error('missing eof marker')\n if (result === -3) throw new Error('premature end of input')\n if (result) throw new Error(`failed to uncompress data ${result}`)\n\n // Get uncompressed data from WASM memory\n return byteArray.slice(outputStart, outputStart + outputLength)\n }\n}\n\n/**\n * Instantiate WASM module from a base64 string.\n *\n * @returns {WebAssembly.Instance}\n */\nfunction instantiateWasm() {\n const binaryString = atob(wasm64)\n const byteArray = new Uint8Array(binaryString.length)\n for (let i = 0; i < binaryString.length; i += 1) {\n byteArray[i] = binaryString.charCodeAt(i)\n }\n // only works for payload less than 4kb:\n const mod = new WebAssembly.Module(byteArray)\n return new WebAssembly.Instance(mod)\n}\n\n// Base64 encoded hysnappy.wasm\nconst wasm64 = 'AGFzbQEAAAABEANgAABgA39/fwF/YAF/AX8DBgUAAQEBAgUDAQACBj8KfwFBoIwEC38AQYAIC38AQaAMC38AQaAMC38AQaCMBAt/AEGACAt/AEGgjAQLfwBBgIAIC38AQQALfwBBAQsHwQEOBm1lbW9yeQIAEV9fd2FzbV9jYWxsX2N0b3JzAAAGbWVtY3B5AAEHbWVtbW92ZQACCnVuY29tcHJlc3MAAwxfX2Rzb19oYW5kbGUDAQpfX2RhdGFfZW5kAwILX19zdGFja19sb3cDAwxfX3N0YWNrX2hpZ2gDBA1fX2dsb2JhbF9iYXNlAwULX19oZWFwX2Jhc2UDBgpfX2hlYXBfZW5kAwcNX19tZW1vcnlfYmFzZQMIDF9fdGFibGVfYmFzZQMJCuASBQIAC8sBAQN/AkAgAkUNAAJAAkAgAkEHcSIDDQAgACEEIAIhBQwBCyAAIQQgAiEFA0AgBCABLQAAOgAAIARBAWohBCABQQFqIQEgBUF/aiEFIANBf2oiAw0ACwsgAkEISQ0AA0AgBCABLQAAOgAAIAQgAS0AAToAASAEIAEtAAI6AAIgBCABLQADOgADIAQgAS0ABDoABCAEIAEtAAU6AAUgBCABLQAGOgAGIAQgAS0ABzoAByAEQQhqIQQgAUEIaiEBIAVBeGoiBQ0ACwsgAAugAwEEfwJAIAAgAUYNAAJAAkAgACABSQ0AIAEgAmoiAyAASw0BCyACRQ0BAkACQCACQQdxIgMNACAAIQQgAiEFDAELIAAhBCACIQUDQCAEIAEtAAA6AAAgBEEBaiEEIAFBAWohASAFQX9qIQUgA0F/aiIDDQALCyACQQhJDQEDQCAEIAEtAAA6AAAgBCABLQABOgABIAQgAS0AAjoAAiAEIAEtAAM6AAMgBCABLQAEOgAEIAQgAS0ABToABSAEIAEtAAY6AAYgBCABLQAHOgAHIARBCGohBCABQQhqIQEgBUF4aiIFDQAMAgsLIAJFDQACQAJAIAJBA3EiBA0AIAAgAmohBiACIQUMAQsgAiEFA0AgBUF/aiIFIABqIgYgBSABaiIDLQAAOgAAIARBf2oiBA0ACwsgAkEESQ0AIAZBfGohASADQXxqIQQDQCABQQNqIARBA2otAAA6AAAgAUECaiAEQQJqLQAAOgAAIAFBAWogBEEBai0AADoAACABIAQtAAA6AAAgAUF8aiEBIARBfGohBCAFQXxqIgUNAAsLIAALswoBCX8jgICAgABBIGsiAySAgICAACADQQlqQgA3AAAgA0IANwIEIAMgA0EYajYCAEF/IQQCQCABRQ0AIAMgAUF/aiIFNgIcIAMgAEEBajYCGCAALAAAIgZB/wBxIQcCQCAGQX9KDQAgBUUNASADIAFBfmoiBTYCHCADIABBAmo2AhggACwAASIGQf8AcUEHdCAHciEHQX8hBCAGQX9KDQAgBUUNASADIAFBfWoiBTYCHCADIABBA2o2AhggACwAAiIGQf8AcUEOdCAHciEHQX8hBCAGQX9KDQAgBUUNASADIAFBfGoiBTYCHCADIABBBGo2AhggACwAAyIGQf8AcUEVdCAHciEHQX8hBCAGQX9KDQAgBUUNASADIAFBe2o2AhwgAyAAQQVqNgIYIAAsAAQiAUEASA0BIAFBHHQgB3IhBwsgAiAHaiEIAkACQCADEISAgIAADQAgAiEADAELIAMoAgQhASACIQADQAJAIAMoAgggAWtBBEoNACADIAE2AgQgAxCEgICAAEUNAiADKAIEIQELIAFBAWohBQJAAkAgAS0AACIGQQNxDQAgCCAAayEJIAMoAggiCiAFayEEIAZBAnYiC0EBaiEHAkAgBkE/Sw0AIARBEEkNACAJQRBIDQAgACABKAIBNgIAIAAgASgCBTYCBCAAIAEoAgk2AgggACABKAINNgIMIAAgB2ohACADKAIIIAUgB2oiAWtBBEoNAyADIAE2AgQgAxCEgICAAEUNBAwCCwJAAkAgBkHwAU8NACAFIQYMAQsgCiAFIAtBRWoiAWoiBmshBCABQQJ0QYCIgIAAaigCACAFKAIAcUEBaiEHCwJAIAcgBE0NAANAIAggAGsgBEkNBSAAIAYgBBCBgICAACEAIAMoAgAiASABKAIAIgkgAygCDCIFaiIGNgIAIAFBBGoiASABKAIAIgogBWsiATYCACADIAE2AgwgACAEaiEAIAFFDQUgAyAJIApqNgIIIAcgBGshByABIQQgByABSw0ACyAIIABrIQkLIAkgB0kNAyAAIAYgBxCBgICAACAHaiEAIAMoAgggBiAHaiIBa0EESg0CIAMgATYCBCADEISAgIAADQEMAwsgACACayAGQQF0QaCIgIAAai8BACIBQQt2IgpBAnRBgIiAgABq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'\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Bit reading helpers\n*/\n\nconst BROTLI_READ_SIZE = 4096\nconst BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32\nconst BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1\n\nconst kBitMask = new Uint32Array([\n 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,\n 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215,\n])\n\n/**\n * Input byte buffer, consist of a ringbuffer and a \"slack\" region where\n * bytes from the start of the ringbuffer are copied.\n *\n * @typedef {import('./brotliStreams.js').BrotliInput} BrotliInput\n * @param {BrotliInput} input\n */\nfunction BrotliBitReader(input) {\n this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE)\n this.input_ = input /* input callback */\n\n this.buf_ptr_ = 0 /* next input will write here */\n this.val_ = 0 /* pre-fetched bits */\n this.pos_ = 0 /* byte position in stream */\n\n this.reset()\n}\n\nBrotliBitReader.READ_SIZE = BROTLI_READ_SIZE\nBrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK\n\nBrotliBitReader.prototype.reset = function() {\n this.buf_ptr_ = 0 /* next input will write here */\n this.val_ = 0 /* pre-fetched bits */\n this.pos_ = 0 /* byte position in stream */\n this.bit_pos_ = 0 /* current bit-reading position in val_ */\n this.bit_end_pos_ = 0 /* bit-reading end position from LSB of val_ */\n this.eos_ = 0 /* input stream is finished */\n\n this.readMoreInput()\n for (let i = 0; i < 4; i++) {\n this.val_ |= this.buf_[this.pos_] << 8 * i\n this.pos_++\n }\n\n return this.bit_end_pos_ > 0\n}\n\n/**\n * Fills up the input ringbuffer by calling the input callback.\n *\n * Does nothing if there are at least 32 bytes present after current position.\n *\n * Returns 0 if either:\n * - the input callback returned an error, or\n * - there is no more input and the position is past the end of the stream.\n *\n * After encountering the end of the input stream, 32 additional zero bytes are\n * copied to the ringbuffer, therefore it is safe to call this function after\n * every 32 bytes of input is read.\n */\nBrotliBitReader.prototype.readMoreInput = function() {\n if (this.bit_end_pos_ > 256) {\n // return\n } else if (this.eos_) {\n if (this.bit_pos_ > this.bit_end_pos_)\n throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_)\n } else {\n const dst = this.buf_ptr_\n const bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE)\n if (bytes_read < 0) {\n throw new Error('Unexpected end of input')\n }\n\n if (bytes_read < BROTLI_READ_SIZE) {\n this.eos_ = 1\n /* Store 32 bytes of zero after the stream end. */\n for (let p = 0; p < 32; p++)\n this.buf_[dst + bytes_read + p] = 0\n }\n\n if (dst === 0) {\n /* Copy the head of the ringbuffer to the slack region. */\n for (let p = 0; p < 32; p++)\n this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p]\n\n this.buf_ptr_ = BROTLI_READ_SIZE\n } else {\n this.buf_ptr_ = 0\n }\n\n this.bit_end_pos_ += bytes_read << 3\n }\n}\n\n/* Guarantees that there are at least 24 bits in the buffer. */\nBrotliBitReader.prototype.fillBitWindow = function() {\n while (this.bit_pos_ >= 8) {\n this.val_ >>>= 8\n this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24\n this.pos_++\n this.bit_pos_ = this.bit_pos_ - 8 >>> 0\n this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0\n }\n}\n\n/**\n * Reads the specified number of bits from Read Buffer.\n *\n * @param {number} n_bits\n * @returns {number}\n */\nBrotliBitReader.prototype.readBits = function(n_bits) {\n if (32 - this.bit_pos_ < n_bits) this.fillBitWindow()\n const val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits]\n this.bit_pos_ += n_bits\n return val\n}\n\nexport default BrotliBitReader\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Lookup table to map the previous two bytes to a context id.\n\n There are four different context modeling modes defined here:\n CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n The context id for the UTF8 context model is calculated as follows. If p1\n and p2 are the previous two bytes, we calcualte the context as\n\n context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n If the previous two bytes are ASCII characters (i.e. < 128), this will be\n equivalent to\n\n context = 4 * context1(p1) + context2(p2),\n\n where context1 is based on the previous byte in the following way:\n\n 0 : non-ASCII control\n 1 : \\t, \\n, \\r\n 2 : space\n 3 : other punctuation\n 4 : \" '\n 5 : %\n 6 : ( < [ {\n 7 : ) > ] }\n 8 : , ; :\n 9 : .\n 10 : =\n 11 : number\n 12 : upper-case vowel\n 13 : upper-case consonant\n 14 : lower-case vowel\n 15 : lower-case consonant\n\n and context2 is based on the second last byte:\n\n 0 : control, space\n 1 : punctuation\n 2 : upper-case letter, number\n 3 : lower-case letter\n\n If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n stream it will be a continuation byte, value between 128 and 191), the\n context is the same as if the second last byte was an ASCII control or space.\n\n If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n be a continuation byte and the context id is 2 or 3 depending on the LSB of\n the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n If the last byte is a UTF8 continuation byte, the second last byte can be:\n - continuation byte: the next byte is probably ASCII or lead byte (assuming\n 4-byte UTF8 characters are rare) and the context id is 0 or 1.\n - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n The possible value combinations of the previous two bytes, the range of\n context ids and the type of the next byte is summarized in the table below:\n\n |--------\\-----------------------------------------------------------------|\n | \\ Last byte |\n | Second \\---------------------------------------------------------------|\n | last byte \\ ASCII | cont. byte | lead byte |\n | \\ (0-127) | (128-191) | (192-) |\n |=============|===================|=====================|==================|\n | ASCII | next: ASCII/lead | not valid | next: cont. |\n | (0-127) | context: 4 - 63 | | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |\n | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: ASCII/lead | not valid |\n | (192-207) | | context: 0 - 1 | |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: cont. | not valid |\n | (208-) | | context: 2 - 3 | |\n |-------------|-------------------|---------------------|------------------|\n\n The context id for the signed context mode is calculated as:\n\n context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n For any context modeling modes, the context ids can be calculated by |-ing\n together two lookups from one table using context model dependent offsets:\n\n context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n where offset1 and offset2 are dependent on the context mode.\n*/\n\n/* Common context lookup table for all context modes. */\nexport const lookup = new Uint8Array([\n /* CONTEXT_UTF8, last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\n 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\n 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\n 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\n 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,\n /* UTF8 continuation byte range. */\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n /* UTF8 lead byte range. */\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n /* CONTEXT_UTF8 second last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\n 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\n 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n /* UTF8 continuation byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n /* UTF8 lead byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n /* CONTEXT_SIGNED, second last byte. */\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n /* CONTEXT_LSB6, last byte. */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n /* CONTEXT_MSB6, last byte. */\n 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,\n 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,\n 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,\n 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\n 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\n 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\n 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\n 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\n 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\n 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\n 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\n 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\n 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n /* CONTEXT_{M,L}SB6, second last byte, */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n])\n\nexport const lookupOffsets = new Uint16Array([\n /* CONTEXT_LSB6 */\n 1024, 1536,\n /* CONTEXT_MSB6 */\n 1280, 1536,\n /* CONTEXT_UTF8 */\n 0, 256,\n /* CONTEXT_SIGNED */\n 768, 512,\n])\n","\nconst kDefaultCodeLength = 8\n\nconst HUFFMAN_TABLE_BITS = 8\nconst HUFFMAN_TABLE_MASK = 0xff\n\nconst CODE_LENGTH_CODES = 18\nconst kCodeLengthCodeOrder = new Uint8Array([\n 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n])\n\n/**\n * @param {number} bits\n * @param {number} value\n */\nexport function HuffmanCode(bits, value) {\n this.bits = bits /* number of bits used for this symbol */\n this.value = value /* symbol value or table offset */\n}\n\nconst kCodeLengthRepeatCode = 16\nconst MAX_LENGTH = 15\n\n/**\n * Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n * bit-wise reversal of the len least significant bits of key.\n * @param {number} key\n * @param {number} len\n * @returns {number}\n */\nfunction getNextKey(key, len) {\n let step = 1 << len - 1\n while (key & step) {\n step >>= 1\n }\n return (key & step - 1) + step\n}\n\n/**\n * Stores code in table[0], table[step], table[2*step], ..., table[end]\n * Assumes that end is an integer multiple of step\n * @param {HuffmanCode[]} table\n * @param {number} i\n * @param {number} step\n * @param {number} end\n * @param {HuffmanCode} code\n */\nfunction replicateValue(table, i, step, end, code) {\n do {\n end -= step\n table[i + end] = new HuffmanCode(code.bits, code.value)\n } while (end > 0)\n}\n\n/**\n * Returns the table width of the next 2nd level table. count is the histogram\n * of bit lengths for the remaining symbols, len is the code length of the next\n * processed symbol\n * @param {Int32Array} count\n * @param {number} len\n * @param {number} root_bits\n * @returns {number}\n */\nfunction nextTableBitSize(count, len, root_bits) {\n let left = 1 << len - root_bits\n while (len < MAX_LENGTH) {\n left -= count[len]\n if (left <= 0) break\n ++len\n left <<= 1\n }\n return len - root_bits\n}\n\n/**\n * @param {HuffmanCode[]} root_table\n * @param {number} table\n * @param {number} root_bits\n * @param {Uint8Array} code_lengths\n * @param {number} code_lengths_size\n * @returns {number}\n */\nexport function buildHuffmanTable(root_table, table, root_bits, code_lengths, code_lengths_size) {\n const start_table = table\n const count = new Int32Array(MAX_LENGTH + 1) /* number of codes of each length */\n const offset = new Int32Array(MAX_LENGTH + 1) /* offsets in sorted table for each length */\n const sorted = new Int32Array(code_lengths_size) /* symbols sorted by code length */\n\n /* build histogram of code lengths */\n for (let i = 0; i < code_lengths_size; i++) {\n count[code_lengths[i]]++\n }\n\n /* generate offsets into sorted symbol table by code length */\n offset[1] = 0\n for (let i = 1; i < MAX_LENGTH; i++) {\n offset[i + 1] = offset[i] + count[i]\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (let i = 0; i < code_lengths_size; i++) {\n if (code_lengths[i] !== 0) {\n sorted[offset[code_lengths[i]]++] = i\n }\n }\n\n let table_bits = root_bits // key length of current table\n let table_size = 1 << table_bits\n let total_size = table_size // sum of root table size and 2nd level table sizes\n\n /* special case code with only one value */\n if (offset[MAX_LENGTH] === 1) {\n for (let key = 0; key < total_size; ++key) {\n root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff)\n }\n\n return total_size\n }\n\n /* fill in root table */\n let key = 0 // reversed prefix code\n let symbol = 0 // symbol index in original or sorted table\n for (let len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n const code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff)\n replicateValue(root_table, table + key, step, table_size, code)\n key = getNextKey(key, len)\n }\n }\n\n /* fill in 2nd level tables and add pointers to root table */\n const mask = total_size - 1\n let low = -1 // low bits for current root entry\n for (let len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n if ((key & mask) !== low) {\n table += table_size\n table_bits = nextTableBitSize(count, len, root_bits)\n table_size = 1 << table_bits\n total_size += table_size\n low = key & mask\n root_table[start_table + low] = new HuffmanCode(table_bits + root_bits & 0xff, table - start_table - low & 0xffff)\n }\n const code = new HuffmanCode(len - root_bits & 0xff, sorted[symbol++] & 0xffff)\n replicateValue(root_table, table + (key >> root_bits), step, table_size, code)\n key = getNextKey(key, len)\n }\n }\n\n return total_size\n}\n\n/**\n * @typedef {import('./brotliBitReader.js').default} BrotliBitReader\n * @param {number} alphabet_size\n * @param {HuffmanCode[]} tables\n * @param {number} table\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nexport function readHuffmanCode(alphabet_size, tables, table, br) {\n const code_lengths = new Uint8Array(alphabet_size)\n\n br.readMoreInput()\n\n /* simple_code_or_skip is used as follows:\n 1 for simple code;\n 0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\n const simple_code_or_skip = br.readBits(2)\n if (simple_code_or_skip === 1) {\n /* Read symbols, codes & code lengths directly. */\n let max_bits_counter = alphabet_size - 1\n let max_bits = 0\n const symbols = new Int32Array(4)\n const num_symbols = br.readBits(2) + 1\n while (max_bits_counter) {\n max_bits_counter >>= 1\n max_bits++\n }\n\n for (let i = 0; i < num_symbols; i++) {\n symbols[i] = br.readBits(max_bits) % alphabet_size\n code_lengths[symbols[i]] = 2\n }\n code_lengths[symbols[0]] = 1\n switch (num_symbols) {\n case 1:\n break\n case 3:\n if (symbols[0] === symbols[1] ||\n symbols[0] === symbols[2] ||\n symbols[1] === symbols[2]) {\n throw new Error('[ReadHuffmanCode] invalid symbols')\n }\n break\n case 2:\n if (symbols[0] === symbols[1]) {\n throw new Error('[ReadHuffmanCode] invalid symbols')\n }\n\n code_lengths[symbols[1]] = 1\n break\n case 4:\n if (symbols[0] === symbols[1] ||\n symbols[0] === symbols[2] ||\n symbols[0] === symbols[3] ||\n symbols[1] === symbols[2] ||\n symbols[1] === symbols[3] ||\n symbols[2] === symbols[3]) {\n throw new Error('[ReadHuffmanCode] invalid symbols')\n }\n\n if (br.readBits(1)) {\n code_lengths[symbols[2]] = 3\n code_lengths[symbols[3]] = 3\n } else {\n code_lengths[symbols[0]] = 2\n }\n break\n }\n } else { /* Decode Huffman-coded code lengths. */\n const code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES)\n let space = 32\n let num_codes = 0\n /* Static Huffman code for the code length code lengths */\n const huff = [\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5),\n ]\n for (let i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; i++) {\n const code_len_idx = kCodeLengthCodeOrder[i]\n let p = 0\n br.fillBitWindow()\n p += br.val_ >>> br.bit_pos_ & 15\n br.bit_pos_ += huff[p].bits\n const v = huff[p].value\n code_length_code_lengths[code_len_idx] = v\n if (v !== 0) {\n space -= 32 >> v\n num_codes++\n }\n }\n\n if (!(num_codes === 1 || space === 0))\n throw new Error('[ReadHuffmanCode] invalid num_codes or space')\n\n readHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br)\n }\n\n const table_size = buildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size)\n if (!table_size) throw new Error('brotli BuildHuffmanTable failed')\n return table_size\n}\n\n/**\n * Decodes the next Huffman code from bit-stream.\n * @param {HuffmanCode[]} table\n * @param {number} index\n * @param {BrotliBitReader} br\n * @returns {number}\n\n */\nexport function readSymbol(table, index, br) {\n br.fillBitWindow()\n index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK\n const nbits = table[index].bits - HUFFMAN_TABLE_BITS\n if (nbits > 0) {\n br.bit_pos_ += HUFFMAN_TABLE_BITS\n index += table[index].value\n index += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1\n }\n br.bit_pos_ += table[index].bits\n return table[index].value\n}\n\n/**\n * @param {Uint8Array} code_length_code_lengths\n * @param {number} num_symbols\n * @param {Uint8Array} code_lengths\n * @param {BrotliBitReader} br\n */\nfunction readHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {\n let symbol = 0\n let prev_code_len = kDefaultCodeLength\n let repeat = 0\n let repeat_code_len = 0\n let space = 32768\n\n const table = []\n for (let i = 0; i < 32; i++)\n table.push(new HuffmanCode(0, 0))\n\n buildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES)\n\n while (symbol < num_symbols && space > 0) {\n let p = 0\n\n br.readMoreInput()\n br.fillBitWindow()\n p += br.val_ >>> br.bit_pos_ & 31\n br.bit_pos_ += table[p].bits\n const code_len = table[p].value & 0xff\n if (code_len < kCodeLengthRepeatCode) {\n repeat = 0\n code_lengths[symbol++] = code_len\n if (code_len !== 0) {\n prev_code_len = code_len\n space -= 32768 >> code_len\n }\n } else {\n const extra_bits = code_len - 14\n let new_len = 0\n if (code_len === kCodeLengthRepeatCode) {\n new_len = prev_code_len\n }\n if (repeat_code_len !== new_len) {\n repeat = 0\n repeat_code_len = new_len\n }\n const old_repeat = repeat\n if (repeat > 0) {\n repeat -= 2\n repeat <<= extra_bits\n }\n repeat += br.readBits(extra_bits) + 3\n const repeat_delta = repeat - old_repeat\n if (symbol + repeat_delta > num_symbols) {\n throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols')\n }\n\n for (let x = 0; x < repeat_delta; x++)\n code_lengths[symbol + x] = repeat_code_len\n\n symbol += repeat_delta\n\n if (repeat_code_len !== 0) {\n space -= repeat_delta << 15 - repeat_code_len\n }\n }\n }\n if (space !== 0) {\n throw new Error('[ReadHuffmanCodeLengths] space = ' + space)\n }\n\n for (; symbol < num_symbols; symbol++)\n code_lengths[symbol] = 0\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Lookup tables to map prefix codes to value ranges. This is used during\n decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n/**\n * Represents the range of values belonging to a prefix code:\n * [offset, offset + 2^nbits)\n * @param {number} offset\n * @param {number} nbits\n */\nfunction PrefixCodeRange(offset, nbits) {\n this.offset = offset\n this.nbits = nbits\n}\n\nexport const kBlockLengthPrefixCode = [\n new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),\n new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),\n new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),\n new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),\n new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),\n new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),\n new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24),\n]\n\nexport const kInsertLengthPrefixCode = [\n new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),\n new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),\n new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),\n new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),\n new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),\n new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),\n]\n\nexport const kCopyLengthPrefixCode = [\n new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),\n new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),\n new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),\n new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),\n new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),\n new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),\n]\n\nexport const kInsertRangeLut = [\n 0, 0, 8, 8, 0, 16, 8, 16, 16,\n]\n\nexport const kCopyRangeLut = [\n 0, 8, 0, 8, 16, 0, 16, 8, 16,\n]\n","/**\n * @param {Uint8Array} buffer\n */\nexport function BrotliInput(buffer) {\n this.buffer = buffer\n this.pos = 0\n}\n\n/**\n * @param {Uint8Array} buf\n * @param {number} i\n * @param {number} count\n * @returns {number}\n */\nBrotliInput.prototype.read = function(buf, i, count) {\n if (this.pos + count > this.buffer.length) {\n count = this.buffer.length - this.pos\n }\n\n for (let p = 0; p < count; p++)\n buf[i + p] = this.buffer[this.pos + p]\n\n this.pos += count\n return count\n}\n\n/**\n * @param {Uint8Array} buf\n */\nexport function BrotliOutput(buf) {\n this.buffer = buf\n this.pos = 0\n}\n\n/**\n * @param {Uint8Array} buf\n * @param {number} count\n * @returns {number}\n */\nBrotliOutput.prototype.write = function(buf, count) {\n if (this.pos + count > this.buffer.length) throw new Error('brotli output buffer is not large enough')\n\n this.buffer.set(buf.subarray(0, count), this.pos)\n this.pos += count\n return count\n}\n","// Adapted from https://github.com/101arrowz/fflate Copyright (c) 2023 Arjun Barrett\n// https://tools.ietf.org/html/rfc1951\n\n// fixed length extra bits\nconst fixedLengthExtraBits = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0])\nconst fixedDistanceExtraBits = new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0])\nconst codeLengthIndexMap = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15])\n\n/**\n * get base, reverse index map from extra bits\n * @param {Uint8Array} eb\n * @param {number} start\n * @returns {{base: Uint16Array, rev: Int32Array}}\n */\nfunction freb(eb, start) {\n const base = new Uint16Array(31)\n for (let i = 0; i < 31; i++) {\n base[i] = start += 1 << eb[i - 1]\n }\n // numbers here are max 18 bits\n const rev = new Int32Array(base[30])\n for (let i = 1; i < 30; i++) {\n for (let j = base[i]; j < base[i + 1]; ++j) {\n rev[j] = j - base[i] << 5 | i\n }\n }\n return { base, rev }\n}\n\nconst { base: fl, rev: revfl } = freb(fixedLengthExtraBits, 2)\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258\nrevfl[258] = 28\nconst { base: fd } = freb(fixedDistanceExtraBits, 0)\n\n// map of value to reverse (assuming 16 bits)\nconst rev = new Uint16Array(32768)\nfor (let i = 0; i < 32768; i++) {\n // reverse table algorithm from SO\n let x = (i & 0xAAAA) >> 1 | (i & 0x5555) << 1\n x = (x & 0xCCCC) >> 2 | (x & 0x3333) << 2\n x = (x & 0xF0F0) >> 4 | (x & 0x0F0F) << 4\n rev[i] = ((x & 0xFF00) >> 8 | (x & 0x00FF) << 8) >> 1\n}\n\n/**\n * create huffman tree from Uint8Array \"map\": index -> code length for code index\n * maxBits must be at most 15\n * @param {Uint8Array} cd\n * @param {number} maxBits\n * @param {0 | 1} r\n * @returns {Uint16Array}\n */\nfunction huffMap(cd, maxBits, r) {\n // u16 \"map\": index -> # of codes with bit length = index\n const l = new Uint16Array(maxBits)\n // length of cd must be 288 (total # of codes)\n for (let i = 0; i < cd.length; i++) {\n if (cd[i]) ++l[cd[i] - 1]\n }\n // u16 \"map\": index -> minimum code for bit length = index\n const le = new Uint16Array(maxBits)\n for (let i = 1; i < maxBits; i++) {\n le[i] = le[i - 1] + l[i - 1] << 1\n }\n let co\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new Uint16Array(1 << maxBits)\n // bits to remove for reverser\n const rvb = 15 - maxBits\n for (let i = 0; i < cd.length; i++) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n const sv = i << 4 | cd[i]\n const freeBits = maxBits - cd[i]\n let startValue = le[cd[i] - 1]++ << freeBits\n for (const endValue = startValue | (1 << freeBits) - 1; startValue <= endValue; startValue++) {\n // every 16 bit value starting with the code yields the same result\n co[rev[startValue] >> rvb] = sv\n }\n }\n }\n } else {\n co = new Uint16Array(cd.length)\n for (let i = 0; i < cd.length; i++) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]\n }\n }\n }\n return co\n}\n\n// construct huffman trees\nconst fixedLengthTree = new Uint8Array(288)\nfor (let i = 0; i < 144; i++) fixedLengthTree[i] = 8\nfor (let i = 144; i < 256; i++) fixedLengthTree[i] = 9\nfor (let i = 256; i < 280; i++) fixedLengthTree[i] = 7\nfor (let i = 280; i < 288; i++) fixedLengthTree[i] = 8\nconst fixedDistanceTree = new Uint8Array(32)\nfor (let i = 0; i < 32; i++) fixedDistanceTree[i] = 5\nconst fixedLengthMap = /*#__PURE__*/ huffMap(fixedLengthTree, 9, 1)\nconst fixedDistanceMap = /*#__PURE__*/ huffMap(fixedDistanceTree, 5, 1)\n\n/**\n * find max of array\n * @param {Uint8Array | number[]} a\n * @returns {number}\n */\nfunction max(a) {\n let m = a[0]\n for (let i = 1; i < a.length; i++) {\n if (a[i] > m) m = a[i]\n }\n return m\n}\n\n/**\n * read d, starting at bit p and mask with m\n * @param {Uint8Array} input\n * @param {number} pos\n * @param {number} mask\n * @returns {number}\n */\nfunction bits(input, pos, mask) {\n const o = pos / 8 | 0\n return (input[o] | input[o + 1] << 8) >> (pos & 7) & mask\n}\n\n/**\n * read d, starting at bit p continuing for at least 16 bits\n * @param {Uint8Array} d\n * @param {number} p\n * @returns {number}\n */\nfunction bits16(d, p) {\n const o = p / 8 | 0\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7)\n}\n\n/**\n * get end of byte\n * @param {number} p\n * @returns {number}\n */\nfunction shft(p) {\n return (p + 7) / 8 | 0\n}\n\n/**\n * return start of gzip payload index\n * @param {Uint8Array} input\n * @param {number} i inputIndex\n * @returns {number}\n */\nfunction gzipStart(input, i) {\n if (input[i++] !== 31 || input[i++] !== 139 || input[i++] !== 8) throw new Error('invalid gzip data')\n const flag = input[i++]\n i += 6\n if (flag & 4) i += (input[i + 10] | input[i + 11] << 8) + 2\n for (let zs = (flag >> 3 & 1) + (flag >> 4 & 1); zs > 0; zs -= Number(!input[i++]));\n return i + (flag & 2)\n}\n\n/**\n * GZip decompression\n * @param {Uint8Array} input\n * @param {Uint8Array} out\n * @param {number} [inputIndex]\n * @param {number} [outputIndex]\n */\nexport function gunzip(input, out, inputIndex = 0, outputIndex = 0) {\n if (!(input.length - inputIndex)) return\n const payloadStart = gzipStart(input, inputIndex)\n if (payloadStart === input.length - 8) return\n if (payloadStart > input.length - 8) throw new Error('unexpected EOF')\n let pos = payloadStart * 8 // position in bits\n let final = 0 // last chunk?\n let lengthBits = 0\n let distBits = 0\n let lmap\n let dmap\n const totalBits = input.length * 8\n do {\n if (!lmap) {\n // final chunk is next?\n final = bits(input, pos, 1)\n const type = bits(input, pos + 1, 3)\n pos += 3\n if (!type) {\n // no compression\n // go to end of byte boundary\n const s = shft(pos) + 4\n const l = input[s - 4] | input[s - 3] << 8\n const t = s + l\n if (t > input.length) throw new Error('unexpected EOF')\n // copy uncompressed data\n out.set(input.subarray(s, t), outputIndex)\n outputIndex += l\n pos = t * 8\n continue\n } else if (type === 1) {\n // fixed huffman\n lmap = fixedLengthMap\n dmap = fixedDistanceMap\n lengthBits = 9\n distBits = 5\n } else if (type === 2) {\n // dynamic huffman\n const hLiteral = bits(input, pos, 31) + 257\n const hcLengths = bits(input, pos + 10, 15) + 4\n const tl = hLiteral + bits(input, pos + 5, 31) + 1\n pos += 14\n // length+distance tree\n const lengthDistanceTree = new Uint8Array(tl)\n const codeLengthTree = new Uint8Array(19)\n for (let i = 0; i < hcLengths; ++i) {\n // use index map to get real code\n codeLengthTree[codeLengthIndexMap[i]] = bits(input, pos + i * 3, 7)\n }\n pos += hcLengths * 3\n const codeLengthBits = max(codeLengthTree)\n const clbMask = (1 << codeLengthBits) - 1\n const codeLengthMap = huffMap(codeLengthTree, codeLengthBits, 1)\n for (let i = 0; i < tl;) {\n const r = codeLengthMap[bits(input, pos, clbMask)]\n // bits read\n pos += r & 15\n const symbol = r >> 4\n // code length to copy\n if (symbol < 16) {\n lengthDistanceTree[i++] = symbol\n } else {\n let copy = 0\n let n = 0 // count\n if (symbol === 16) {\n n = 3 + bits(input, pos, 3)\n pos += 2\n copy = lengthDistanceTree[i - 1]\n } else if (symbol === 17) {\n n = 3 + bits(input, pos, 7)\n pos += 3\n } else if (symbol === 18) {\n n = 11 + bits(input, pos, 127)\n pos += 7\n }\n while (n--) lengthDistanceTree[i++] = copy\n }\n }\n const lengthTree = lengthDistanceTree.subarray(0, hLiteral)\n const distanceTree = lengthDistanceTree.subarray(hLiteral)\n // max length bits\n lengthBits = max(lengthTree)\n // max dist bits\n distBits = max(distanceTree)\n lmap = huffMap(lengthTree, lengthBits, 1)\n dmap = huffMap(distanceTree, distBits, 1)\n } else throw new Error('invalid block type')\n if (pos > totalBits) throw new Error('unexpected EOF')\n }\n const lms = (1 << lengthBits) - 1\n const dms = (1 << distBits) - 1\n let lpos = pos\n for (;; lpos = pos) {\n // bits read, code\n const code = lmap[bits16(input, pos) & lms]\n const sym = code >> 4\n pos += code & 15\n if (pos > totalBits) throw new Error('unexpected EOF')\n if (!code) throw new Error('invalid length/literal')\n if (sym < 256) out[outputIndex++] = sym\n else if (sym === 256) {\n lpos = pos\n lmap = undefined\n break\n } else {\n let add = sym - 254\n // no extra bits needed if less\n if (sym > 264) {\n const index = sym - 257\n const b = fixedLengthExtraBits[index]\n add = bits(input, pos, (1 << b) - 1) + fl[index]\n pos += b\n }\n // dist\n if (!dmap) throw new Error('invalid distance map')\n const d = dmap[bits16(input, pos) & dms]\n const dsym = d >> 4\n if (!d) throw new Error('invalid distance')\n pos += d & 15\n let dt = fd[dsym]\n if (dsym > 3) {\n const b = fixedDistanceExtraBits[dsym]\n dt += bits16(input, pos) & (1 << b) - 1\n pos += b\n }\n if (pos > totalBits) throw new Error('unexpected EOF')\n const end = outputIndex + add\n if (outputIndex < dt) throw new Error('unexpected dictionary case')\n for (; outputIndex < end; outputIndex++) out[outputIndex] = out[outputIndex - dt]\n }\n }\n pos = lpos\n if (lmap) final = 1\n } while (!final)\n\n if (outputIndex < out.length) {\n // multiple gzip blocks\n const nextBlock = Math.ceil(pos / 8) + 8 // 8 byte gzip footer\n gunzip(input, out, nextBlock, outputIndex)\n }\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Collection of static dictionary words.\n*/\n\nimport { gunzip } from './gzip.js'\n\nconst dictionaryGz64 = `\n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\nXH/9kw/e+uTa937x6JlPn7j+86ee/PnpG7e/+yefvfzM7ddetBc/+977t3/83mcf/PknV4/fPvfq7e+/\n+cm7P/z0/F/84uwzn7154uc/PvHp69//9I9/+Ml7P7r9/IXbz57/9Pqf3r7y5GdvX/vs+KlPn/7LT0+9\n8en505+dP/PZ+eufPnP99jtvffripU+vnrz9J+duf/+GtefTZ37wyfU37JVPT7/+6bnXfv79lz678vTt\nv3jV/v25Pc73HsfFP3j59ok3rc0BJ2xs7t08Zz7DAKYbJnK5UgK2jQzJmCC4augYsG4CCZp91RPMCbYW\n8rY2w92psSU9JsJr5eZ15HTJPhdaiJXaqRIg7wbBWKEHHX5adwdhvA2PhJOVkIQAXgHUR5kUgqH6MGbJ\nTde53MIZEy6yqT3ANRAzmtC71THhd+I63zxX1ps3X4Z9ESjZchjwqiFzLkBagm7Pm5oZd/Ona2Dpo0SW\nY7IEIhOZVrcgTg4z9eUeatU7/9w2XQdQNR4xq0vb/pGqKBvnbA8aB2VF1VrreWvMzZdXR+KVEBjpfVg7\nksxeQS+zV7Fw2NR4Ckd5E65GGF/Zc94LlRfsBWghULUSXnoJFac+6hn2H7HmV49EANm8/B5nSxkwvsbN\nMkyBIZCVfSDxXmYmA5BcYsTQZk6SrdK/FWjBJmCS0fODJopqn2RJ7A+85DaKjp9kYWwVBb/Kf1/lu5f5\n1gV+7ImoRK4i5Sf+9vSf+1v4/Bv89zVW7L4W11FV8mv88HNxneNshm76GptxJr5+ultDqWKw2ngJcDTp\nwt++epL1y8/wM+f5+2n+/jN+/QKLo1/li6ejSRejbLnu/njc4kJUDb8Sb1lLXuArF3k7Nen5uJeKlL/B\neurHvan45Ud8imd4R/XYxahQ/gILnD8Vdcpf4/9Oq846r6BOuBL1zk/xuz/gTc/FXX4Q5d7Vkxeyeu0a\nuKeiSDwHzvvZOuqElznHWy95b+MBv8NC7M9HJ5yKe/0gCrefZm+kausvRUed5IfVnu/FTc9Hj6nlN2LQ\n7c+no0r9j+Je34su0gVVEv4Dvqjevsi+0nx4IwZaj6O5eiN69Tg74Q027wxbq68/EQ17HK97XXnNZ81V\njc5TbO25KGN/IZ7iRZ8q3s/n/bnw7ln++2I84Ktxr+Ns/7Woaq9G/jj+1IdP8JG1gk7zxTRbTkfzXmOb\n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\n+y++LtIcOB5PrcLur8W9XuSTnkS9eG//1agFf7V95DRv/Qrsf3z+xayvLscKusrLnon+POMF7ts2q69+\nGCXUL7bP5b16nO15Ij7P5uHKp9nmC+zJk+yli+3Y+Tq6EaXkH8/2jcvx+pl2DqvfMMfeiK9ci8/rM1dj\nnV5j807zk5pvmv8vRZ+cjkG5EnNAbb7iDda4t3M19eETsd6f5NWuRJ+8lu0Px7NnzPYcf6LoUtw3tecC\nq9WnfYb3xdXOZ/Mnzc/jMUsv8y0WsvfxeiGbY6dizrzKm6a1prXwwvT+eZzf0lo7z2f/IK6j+a9N/vnp\nPf9afOa1bM5oYl/M9oGfRZ+8ETv5ad+j8JXz0bAf8InS9S/ECnqv7Qe89Xi8dTZG/EyMAluibmnX+wtT\ne0U7uLHWfJ5f9odN+4P/qbHQ3HuG1+e08V36QnvG+fOmfj7FP6/yM29EI5/zZ/TPXI0Bupg94xPx7wu8\nwmW+/k52Vl7w72Lf0Hn3ahp3qkVDF/tpKiS/TT3pR5Pq86Vb74Ri88cnoC798Sm+foWKyK1Ws5SUT926\nSDXvpAOeFJZfzzSW37QrvAldcOhphzI4Xp3SEH9Myti438cn/V7hAVNVmrrXev0NtMnVpi+46jh+P4fP\n+jXPfXySV1J73qLudVzzdXvvFBSp7TpX/fNQ6H6cn4K+9ROhUU4V6VeSNvlbt37Cp4DW+Jnsvk9Sn5tt\nc4VzKVJfomq3FL+hzX0Kz88+DWXst6hv/rj0xqVdTR3xS9Sf1uuPUsX8rPfb43zKM1KsvnUWz4/r8NUr\n1Et/mq9Dxfws+iB9lxrdrtd9ht94068v3XK1B9d+x5/xvM2Dp29d4hXfSnrdP8v+vUwFbe/zVuvcZkbb\nJ+ehh+7j/oara7fa8U/E62lMoe99DXMvxiKe8dZraI36wa7qiuPWX49TuTzUvWNcMPPe8vnzpv32JK+M\n+X/d/oJO+mW2IObGGSq+n/W2XcXrjCsi8ge3vS0nisj/3gxmJm1wx55SUmN9PPToZb99h3LTEVam+DDY\neIPN2R1MhkivZQIUDyJ7KqK1Wg9Xx5secZzPscE5Jr9Z+hwSs81tZ2JWwHlAB8Fztq2eUu1y1p1U5D20\nNMlAP4KSuvP2TyeERIdKtYd8IsJh9yO/s7oxhuyJyBae+d3L5F9kZhhkjzDs1hBlrT2hkWEgvrgWIHQy\n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`\n\n/** @type {Uint8Array} */\nlet dictionary\n\nexport function getDictionary() {\n if (!dictionary) {\n dictionary = new Uint8Array(122784)\n const gzipString = atob(dictionaryGz64)\n const gzipBytes = new Uint8Array(gzipString.length)\n for (let i = 0; i < gzipString.length; i++) {\n gzipBytes[i] = gzipString.charCodeAt(i)\n }\n gunzip(gzipBytes, dictionary)\n }\n return dictionary\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Transformations on dictionary words.\n*/\n\nimport { getDictionary } from './brotliDictionary.js'\n\nconst kIdentity = 0\nconst kOmitLast1 = 1\nconst kOmitLast2 = 2\nconst kOmitLast3 = 3\nconst kOmitLast4 = 4\nconst kOmitLast5 = 5\nconst kOmitLast6 = 6\nconst kOmitLast7 = 7\nconst kOmitLast8 = 8\nconst kOmitLast9 = 9\nconst kUppercaseFirst = 10\nconst kUppercaseAll = 11\nconst kOmitFirst1 = 12\nconst kOmitFirst2 = 13\nconst kOmitFirst3 = 14\nconst kOmitFirst4 = 15\nconst kOmitFirst5 = 16\nconst kOmitFirst6 = 17\nconst kOmitFirst7 = 18\n// const kOmitFirst8 = 19\nconst kOmitFirst9 = 20\n\n/**\n * @param {string} prefix\n * @param {number} transform\n * @param {string} suffix\n */\nfunction Transform(prefix, transform, suffix) {\n this.prefix = new Uint8Array(prefix.length)\n this.transform = transform\n this.suffix = new Uint8Array(suffix.length)\n\n for (let i = 0; i < prefix.length; i++) this.prefix[i] = prefix.charCodeAt(i)\n for (let i = 0; i < suffix.length; i++) this.suffix[i] = suffix.charCodeAt(i)\n}\n\nexport const kTransforms = [\n new Transform( '', kIdentity, '' ),\n new Transform( '', kIdentity, ' ' ),\n new Transform( ' ', kIdentity, ' ' ),\n new Transform( '', kOmitFirst1, '' ),\n new Transform( '', kUppercaseFirst, ' ' ),\n new Transform( '', kIdentity, ' the ' ),\n new Transform( ' ', kIdentity, '' ),\n new Transform( 's ', kIdentity, ' ' ),\n new Transform( '', kIdentity, ' of ' ),\n new Transform( '', kUppercaseFirst, '' ),\n new Transform( '', kIdentity, ' and ' ),\n new Transform( '', kOmitFirst2, '' ),\n new Transform( '', kOmitLast1, '' ),\n new Transform( ', ', kIdentity, ' ' ),\n new Transform( '', kIdentity, ', ' ),\n new Transform( ' ', kUppercaseFirst, ' ' ),\n new Transform( '', kIdentity, ' in ' ),\n new Transform( '', kIdentity, ' to ' ),\n new Transform( 'e ', kIdentity, ' ' ),\n new Transform( '', kIdentity, '\"' ),\n new Transform( '', kIdentity, '.' ),\n new Transform( '', kIdentity, '\">' ),\n new Transform( '', kIdentity, '\\n' ),\n new Transform( '', kOmitLast3, '' ),\n new Transform( '', kIdentity, ']' ),\n new Transform( '', kIdentity, ' for ' ),\n new Transform( '', kOmitFirst3, '' ),\n new Transform( '', kOmitLast2, '' ),\n new Transform( '', kIdentity, ' a ' ),\n new Transform( '', kIdentity, ' that ' ),\n new Transform( ' ', kUppercaseFirst, '' ),\n new Transform( '', kIdentity, '. ' ),\n new Transform( '.', kIdentity, '' ),\n new Transform( ' ', kIdentity, ', ' ),\n new Transform( '', kOmitFirst4, '' ),\n new Transform( '', kIdentity, ' with ' ),\n new Transform( '', kIdentity, '\\'' ),\n new Transform( '', kIdentity, ' from ' ),\n new Transform( '', kIdentity, ' by ' ),\n new Transform( '', kOmitFirst5, '' ),\n new Transform( '', kOmitFirst6, '' ),\n new Transform( ' the ', kIdentity, '' ),\n new Transform( '', kOmitLast4, '' ),\n new Transform( '', kIdentity, '. The ' ),\n new Transform( '', kUppercaseAll, '' ),\n new Transform( '', kIdentity, ' on ' ),\n new Transform( '', kIdentity, ' as ' ),\n new Transform( '', kIdentity, ' is ' ),\n new Transform( '', kOmitLast7, '' ),\n new Transform( '', kOmitLast1, 'ing ' ),\n new Transform( '', kIdentity, '\\n\\t' ),\n new Transform( '', kIdentity, ':' ),\n new Transform( ' ', kIdentity, '. ' ),\n new Transform( '', kIdentity, 'ed ' ),\n new Transform( '', kOmitFirst9, '' ),\n new Transform( '', kOmitFirst7, '' ),\n new Transform( '', kOmitLast6, '' ),\n new Transform( '', kIdentity, '(' ),\n new Transform( '', kUppercaseFirst, ', ' ),\n new Transform( '', kOmitLast8, '' ),\n new Transform( '', kIdentity, ' at ' ),\n new Transform( '', kIdentity, 'ly ' ),\n new Transform( ' the ', kIdentity, ' of ' ),\n new Transform( '', kOmitLast5, '' ),\n new Transform( '', kOmitLast9, '' ),\n new Transform( ' ', kUppercaseFirst, ', ' ),\n new Transform( '', kUppercaseFirst, '\"' ),\n new Transform( '.', kIdentity, '(' ),\n new Transform( '', kUppercaseAll, ' ' ),\n new Transform( '', kUppercaseFirst, '\">' ),\n new Transform( '', kIdentity, '=\"' ),\n new Transform( ' ', kIdentity, '.' ),\n new Transform( '.com/', kIdentity, '' ),\n new Transform( ' the ', kIdentity, ' of the ' ),\n new Transform( '', kUppercaseFirst, '\\'' ),\n new Transform( '', kIdentity, '. This ' ),\n new Transform( '', kIdentity, ',' ),\n new Transform( '.', kIdentity, ' ' ),\n new Transform( '', kUppercaseFirst, '(' ),\n new Transform( '', kUppercaseFirst, '.' ),\n new Transform( '', kIdentity, ' not ' ),\n new Transform( ' ', kIdentity, '=\"' ),\n new Transform( '', kIdentity, 'er ' ),\n new Transform( ' ', kUppercaseAll, ' ' ),\n new Transform( '', kIdentity, 'al ' ),\n new Transform( ' ', kUppercaseAll, '' ),\n new Transform( '', kIdentity, '=\\'' ),\n new Transform( '', kUppercaseAll, '\"' ),\n new Transform( '', kUppercaseFirst, '. ' ),\n new Transform( ' ', kIdentity, '(' ),\n new Transform( '', kIdentity, 'ful ' ),\n new Transform( ' ', kUppercaseFirst, '. ' ),\n new Transform( '', kIdentity, 'ive ' ),\n new Transform( '', kIdentity, 'less ' ),\n new Transform( '', kUppercaseAll, '\\'' ),\n new Transform( '', kIdentity, 'est ' ),\n new Transform( ' ', kUppercaseFirst, '.' ),\n new Transform( '', kUppercaseAll, '\">' ),\n new Transform( ' ', kIdentity, '=\\'' ),\n new Transform( '', kUppercaseFirst, ',' ),\n new Transform( '', kIdentity, 'ize ' ),\n new Transform( '', kUppercaseAll, '.' ),\n new Transform( '\\xc2\\xa0', kIdentity, '' ),\n new Transform( ' ', kIdentity, ',' ),\n new Transform( '', kUppercaseFirst, '=\"' ),\n new Transform( '', kUppercaseAll, '=\"' ),\n new Transform( '', kIdentity, 'ous ' ),\n new Transform( '', kUppercaseAll, ', ' ),\n new Transform( '', kUppercaseFirst, '=\\'' ),\n new Transform( ' ', kUppercaseFirst, ',' ),\n new Transform( ' ', kUppercaseAll, '=\"' ),\n new Transform( ' ', kUppercaseAll, ', ' ),\n new Transform( '', kUppercaseAll, ',' ),\n new Transform( '', kUppercaseAll, '(' ),\n new Transform( '', kUppercaseAll, '. ' ),\n new Transform( ' ', kUppercaseAll, '.' ),\n new Transform( '', kUppercaseAll, '=\\'' ),\n new Transform( ' ', kUppercaseAll, '. ' ),\n new Transform( ' ', kUppercaseFirst, '=\"' ),\n new Transform( ' ', kUppercaseAll, '=\\'' ),\n new Transform( ' ', kUppercaseFirst, '=\\'' ),\n]\n\nexport const kNumTransforms = kTransforms.length\n\n/**\n * @param {Uint8Array} p\n * @param {number} i\n * @returns {number}\n */\nfunction ToUpperCase(p, i) {\n if (p[i] < 0xc0) {\n if (p[i] >= 97 && p[i] <= 122) {\n p[i] ^= 32\n }\n return 1\n }\n\n /* An overly simplified uppercasing model for utf-8. */\n if (p[i] < 0xe0) {\n p[i + 1] ^= 32\n return 2\n }\n\n /* An arbitrary transform for three byte characters. */\n p[i + 2] ^= 5\n return 3\n}\n\n/**\n * @param {Uint8Array} dst\n * @param {number} idx\n * @param {number} word\n * @param {number} len\n * @param {number} transform\n * @returns {number}\n */\nexport function transformDictionaryWord(dst, idx, word, len, transform) {\n const dictionary = getDictionary()\n const { prefix } = kTransforms[transform]\n const { suffix } = kTransforms[transform]\n const t = kTransforms[transform].transform\n let skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1)\n const start_idx = idx\n\n if (skip > len) skip = len\n\n let prefix_pos = 0\n while (prefix_pos < prefix.length) {\n dst[idx++] = prefix[prefix_pos++]\n }\n\n word += skip\n len -= skip\n\n if (t <= kOmitLast9) len -= t\n\n for (let i = 0; i < len; i++) {\n dst[idx++] = dictionary[word + i]\n }\n\n let uppercase = idx - len\n\n if (t === kUppercaseFirst) {\n ToUpperCase(dst, uppercase)\n } else if (t === kUppercaseAll) {\n while (len > 0) {\n const step = ToUpperCase(dst, uppercase)\n uppercase += step\n len -= step\n }\n }\n\n let suffix_pos = 0\n while (suffix_pos < suffix.length) {\n dst[idx++] = suffix[suffix_pos++]\n }\n\n return idx - start_idx\n}\n","/* Adapted from https://github.com/foliojs/brotli.js\n * Copyright 2015 Devon Govett, MIT License\n * Copyright 2013 Google Inc, Apache License 2.0\n */\n\nimport BrotliBitReader from './brotliBitReader.js'\nimport { lookup, lookupOffsets } from './brotliContext.js'\nimport { HuffmanCode, readHuffmanCode, readSymbol } from './brotliHuffman.js'\nimport { kBlockLengthPrefixCode, kCopyLengthPrefixCode, kCopyRangeLut, kInsertLengthPrefixCode, kInsertRangeLut } from './brotliPrefix.js'\nimport { BrotliInput, BrotliOutput } from './brotliStreams.js'\nimport { kNumTransforms, transformDictionaryWord } from './brotliTransform.js'\n\nconst kNumLiteralCodes = 256\nconst kNumInsertAndCopyCodes = 704\nconst kNumBlockLengthCodes = 26\nconst kLiteralContextBits = 6\nconst kDistanceContextBits = 2\n\n/* Maximum possible Huffman table size for an alphabet size of 704, max code\n * length 15 and root table bits 8. */\nconst HUFFMAN_MAX_TABLE_SIZE = 1080\n\nconst NUM_DISTANCE_SHORT_CODES = 16\nconst kDistanceShortCodeIndexOffset = new Uint8Array([\n 3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,\n])\n\nconst kDistanceShortCodeValueOffset = new Int8Array([\n 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3,\n])\n\nconst kMaxHuffmanTableSize = new Uint16Array([\n 256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\n 854, 886, 920, 952, 984, 1016, 1048, 1080,\n])\n\n// Brotli dictionary\nconst offsetsByLength = new Uint32Array([\n 0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,\n 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,\n 115968, 118528, 119872, 121280, 122016,\n])\n\nconst sizeBitsByLength = new Uint8Array([\n 0, 0, 0, 0, 10, 10, 11, 11, 10, 10,\n 10, 10, 10, 9, 9, 8, 7, 7, 8, 7,\n 7, 6, 6, 5, 5,\n])\n\nconst minDictionaryWordLength = 4\nconst maxDictionaryWordLength = 24\n\n/**\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nexport function BROTLI(input, outputLength) {\n const output = new Uint8Array(outputLength)\n const brotliInput = new BrotliInput(input)\n const brotliOutput = new BrotliOutput(output)\n brotli(brotliInput, brotliOutput)\n return output\n}\n\n/**\n * @param {BrotliInput} input\n * @param {BrotliOutput} output\n */\nfunction brotli(input, output) {\n let pos = 0\n let input_end = 0\n let window_bits = 0\n let max_distance = 0\n /* This ring buffer holds a few past copy distances that will be used by */\n /* some special distance codes. */\n const dist_rb = [ 16, 15, 11, 4 ]\n let dist_rb_idx = 0\n /* The previous 2 bytes used for context */\n let prev_byte1 = 0\n let prev_byte2 = 0\n const hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)]\n\n /* We need the slack region for the following reasons:\n - always doing two 8-byte copies for fast backward copying\n - transforms\n - flushing the input ringbuffer when decoding uncompressed blocks */\n const kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE\n\n const br = new BrotliBitReader(input)\n\n /* Decode window size. */\n window_bits = decodeWindowBits(br)\n const max_backward_distance = (1 << window_bits) - 16\n\n const ringbuffer_size = 1 << window_bits\n const ringbuffer_mask = ringbuffer_size - 1\n const ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + maxDictionaryWordLength)\n const ringbuffer_end = ringbuffer_size\n\n const block_type_trees = []\n const block_len_trees = []\n for (let x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {\n block_type_trees[x] = new HuffmanCode(0, 0)\n block_len_trees[x] = new HuffmanCode(0, 0)\n }\n\n while (!input_end) {\n let meta_block_remaining_len = 0\n const block_length = [ 1 << 28, 1 << 28, 1 << 28 ]\n const block_type = [ 0 ]\n const num_block_types = [ 1, 1, 1 ]\n const block_type_rb = [ 0, 1, 0, 1, 0, 1 ]\n const block_type_rb_index = [ 0 ]\n let context_offset = 0\n\n for (let i = 0; i < 3; i++) {\n hgroup[i].codes = []\n hgroup[i].htrees = new Uint32Array()\n }\n\n br.readMoreInput()\n\n const _out = DecodeMetaBlockLength(br)\n meta_block_remaining_len = _out.meta_block_length\n if (pos + meta_block_remaining_len > output.buffer.length) {\n /* We need to grow the output buffer to fit the additional data. */\n const tmp = new Uint8Array( pos + meta_block_remaining_len )\n tmp.set( output.buffer )\n output.buffer = tmp\n }\n input_end = _out.input_end\n\n if (_out.is_metadata) {\n jumpToByteBoundary(br)\n\n for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {\n br.readMoreInput()\n /* Read one byte and ignore it. */\n br.readBits(8)\n }\n\n continue\n }\n\n if (meta_block_remaining_len === 0) continue\n\n if (_out.is_uncompressed) {\n br.bit_pos_ = br.bit_pos_ + 7 & ~7\n copyUncompressedBlockToOutput(output, meta_block_remaining_len, pos, ringbuffer, ringbuffer_mask, br)\n pos += meta_block_remaining_len\n continue\n }\n\n for (let i = 0; i < 3; i++) {\n num_block_types[i] = decodeVarLenUint8(br) + 1\n if (num_block_types[i] >= 2) {\n readHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br)\n readHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br)\n block_length[i] = readBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br)\n block_type_rb_index[i] = 1\n }\n }\n\n br.readMoreInput()\n\n const distance_postfix_bits = br.readBits(2)\n const num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits)\n const distance_postfix_mask = (1 << distance_postfix_bits) - 1\n const num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits)\n const context_modes = new Uint8Array(num_block_types[0])\n\n for (let i = 0; i < num_block_types[0]; i++) {\n br.readMoreInput()\n context_modes[i] = br.readBits(2) << 1\n }\n\n const _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br)\n const num_literal_htrees = _o1.num_htrees\n const { context_map } = _o1\n\n const _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br)\n const num_dist_htrees = _o2.num_htrees\n const dist_context_map = _o2.context_map\n\n hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees)\n hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1])\n hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees)\n\n for (let i = 0; i < 3; ++i) {\n hgroup[i].decode(br)\n }\n\n let context_map_slice = 0\n let dist_context_map_slice = 0\n let context_mode = context_modes[block_type[0]]\n let context_lookup_offset1 = lookupOffsets[context_mode]\n let context_lookup_offset2 = lookupOffsets[context_mode + 1]\n let htree_command = hgroup[1].htrees[0]\n\n while (meta_block_remaining_len > 0) {\n let distance_code\n\n br.readMoreInput()\n\n if (block_length[1] === 0) {\n decodeBlockType(num_block_types[1],\n block_type_trees, 1, block_type, block_type_rb,\n block_type_rb_index, br)\n block_length[1] = readBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br)\n htree_command = hgroup[1].htrees[block_type[1]]\n }\n block_length[1]--\n const cmd_code = readSymbol(hgroup[1].codes, htree_command, br)\n let range_idx = cmd_code >> 6\n if (range_idx >= 2) {\n range_idx -= 2\n distance_code = -1\n } else {\n distance_code = 0\n }\n const insert_code = kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7)\n const copy_code = kCopyRangeLut[range_idx] + (cmd_code & 7)\n const insert_length = kInsertLengthPrefixCode[insert_code].offset +\n br.readBits(kInsertLengthPrefixCode[insert_code].nbits)\n const copy_length = kCopyLengthPrefixCode[copy_code].offset +\n br.readBits(kCopyLengthPrefixCode[copy_code].nbits)\n prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]\n prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]\n for (let j = 0; j < insert_length; j++) {\n br.readMoreInput()\n\n if (block_length[0] === 0) {\n decodeBlockType(num_block_types[0],\n block_type_trees, 0, block_type, block_type_rb,\n block_type_rb_index, br)\n block_length[0] = readBlockLength(block_len_trees, 0, br)\n context_offset = block_type[0] << kLiteralContextBits\n context_map_slice = context_offset\n context_mode = context_modes[block_type[0]]\n context_lookup_offset1 = lookupOffsets[context_mode]\n context_lookup_offset2 = lookupOffsets[context_mode + 1]\n }\n const context = lookup[context_lookup_offset1 + prev_byte1] |\n lookup[context_lookup_offset2 + prev_byte2]\n const literal_htree_index = context_map[context_map_slice + context]\n block_length[0]--\n prev_byte2 = prev_byte1\n prev_byte1 = readSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br)\n ringbuffer[pos & ringbuffer_mask] = prev_byte1\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size)\n }\n pos++\n }\n meta_block_remaining_len -= insert_length\n if (meta_block_remaining_len <= 0) break\n\n if (distance_code < 0) {\n br.readMoreInput()\n if (block_length[2] === 0) {\n decodeBlockType(num_block_types[2],\n block_type_trees, 2, block_type, block_type_rb,\n block_type_rb_index, br)\n block_length[2] = readBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br)\n dist_context_map_slice = block_type[2] << kDistanceContextBits\n }\n block_length[2]--\n const context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff\n const dist_htree_index = dist_context_map[dist_context_map_slice + context]\n distance_code = readSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br)\n if (distance_code >= num_direct_distance_codes) {\n distance_code -= num_direct_distance_codes\n const postfix = distance_code & distance_postfix_mask\n distance_code >>= distance_postfix_bits\n const nbits = (distance_code >> 1) + 1\n const offset = (2 + (distance_code & 1) << nbits) - 4\n distance_code = num_direct_distance_codes +\n (offset + br.readBits(nbits) <<\n distance_postfix_bits) + postfix\n }\n }\n\n /* Convert the distance code to the actual distance by possibly looking */\n /* up past distnaces from the ringbuffer. */\n const distance = translateShortCodes(distance_code, dist_rb, dist_rb_idx)\n if (distance < 0) throw new Error('[BrotliDecompress] invalid distance')\n\n if (pos < max_backward_distance && max_distance !== max_backward_distance) {\n max_distance = pos\n } else {\n max_distance = max_backward_distance\n }\n\n let copy_dst = pos & ringbuffer_mask\n\n if (distance > max_distance) {\n if (copy_length >= minDictionaryWordLength && copy_length <= maxDictionaryWordLength) {\n let offset = offsetsByLength[copy_length]\n const word_id = distance - max_distance - 1\n const shift = sizeBitsByLength[copy_length]\n const mask = (1 << shift) - 1\n const word_idx = word_id & mask\n const transform_idx = word_id >> shift\n offset += word_idx * copy_length\n if (transform_idx < kNumTransforms) {\n const len = transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx)\n copy_dst += len\n pos += len\n meta_block_remaining_len -= len\n if (copy_dst >= ringbuffer_end) {\n output.write(ringbuffer, ringbuffer_size)\n\n for (let _x = 0; _x < copy_dst - ringbuffer_end; _x++)\n ringbuffer[_x] = ringbuffer[ringbuffer_end + _x]\n }\n } else {\n throw new Error('Invalid backward reference')\n }\n } else {\n throw new Error('Invalid backward reference')\n }\n } else {\n if (distance_code > 0) {\n dist_rb[dist_rb_idx & 3] = distance\n dist_rb_idx++\n }\n\n if (copy_length > meta_block_remaining_len) {\n throw new Error('Invalid backward reference')\n }\n\n for (let j = 0; j < copy_length; j++) {\n ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask]\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size)\n }\n pos++\n meta_block_remaining_len--\n }\n }\n\n /* When we get here, we must have inserted at least one literal and */\n /* made a copy of at least length two, therefore accessing the last 2 */\n /* bytes is valid. */\n prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]\n prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]\n }\n\n /* Protect pos from overflow, wrap it around at every GB of input data */\n pos &= 0x3fffffff\n }\n\n output.write(ringbuffer, pos & ringbuffer_mask)\n}\n\n/**\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nfunction decodeWindowBits(br) {\n if (br.readBits(1) === 0) return 16\n\n let n = br.readBits(3)\n if (n > 0) return 17 + n\n\n n = br.readBits(3)\n if (n > 0) return 8 + n\n\n return 17\n}\n\n/**\n * @param {number} max_block_type\n * @param {HuffmanCode[]} trees\n * @param {number} tree_type\n * @param {number[]} block_types\n * @param {number[]} ringbuffers\n * @param {number[]} indexes\n * @param {BrotliBitReader} br\n */\nfunction decodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {\n const ringbuffer = tree_type * 2\n const index = tree_type\n const type_code = readSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br)\n let block_type\n if (type_code === 0) {\n block_type = ringbuffers[ringbuffer + (indexes[index] & 1)]\n } else if (type_code === 1) {\n block_type = ringbuffers[ringbuffer + (indexes[index] - 1 & 1)] + 1\n } else {\n block_type = type_code - 2\n }\n if (block_type >= max_block_type) {\n block_type -= max_block_type\n }\n block_types[tree_type] = block_type\n ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type\n ++indexes[index]\n}\n\n/**\n * Contains a collection of huffman trees with the same alphabet size.\n *\n * @param {number} alphabet_size\n * @param {number} num_htrees\n */\nfunction HuffmanTreeGroup(alphabet_size, num_htrees) {\n this.alphabet_size = alphabet_size\n this.num_htrees = num_htrees\n this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5])\n this.htrees = new Uint32Array(num_htrees)\n}\n\n/**\n * @param {BrotliBitReader} br\n */\nHuffmanTreeGroup.prototype.decode = function(br) {\n let next = 0\n for (let i = 0; i < this.num_htrees; i++) {\n this.htrees[i] = next\n next += readHuffmanCode(this.alphabet_size, this.codes, next, br)\n }\n}\n\n/**\n * @param {HuffmanCode[]} table\n * @param {number} index\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nfunction readBlockLength(table, index, br) {\n const code = readSymbol(table, index, br)\n const { nbits } = kBlockLengthPrefixCode[code]\n return kBlockLengthPrefixCode[code].offset + br.readBits(nbits)\n}\n\n/**\n * @param {number} code\n * @param {number[]} ringbuffer\n * @param {number} index\n * @returns {number}\n */\nfunction translateShortCodes(code, ringbuffer, index) {\n if (code < NUM_DISTANCE_SHORT_CODES) {\n index += kDistanceShortCodeIndexOffset[code]\n index &= 3\n return ringbuffer[index] + kDistanceShortCodeValueOffset[code]\n } else {\n return code - NUM_DISTANCE_SHORT_CODES + 1\n }\n}\n\n/**\n * @param {*} output\n * @param {number} len\n * @param {number} pos\n * @param {Uint8Array} ringbuffer\n * @param {number} ringbuffer_mask\n * @param {BrotliBitReader} br\n */\nfunction copyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {\n const rb_size = ringbuffer_mask + 1\n let rb_pos = pos & ringbuffer_mask\n let br_pos = br.pos_ & BrotliBitReader.IBUF_MASK\n\n /* For short lengths copy byte-by-byte */\n if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {\n while (len-- > 0) {\n br.readMoreInput()\n ringbuffer[rb_pos++] = br.readBits(8)\n if (rb_pos === rb_size) {\n output.write(ringbuffer, rb_size)\n rb_pos = 0\n }\n }\n return\n }\n\n if (br.bit_end_pos_ < 32) {\n throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32')\n }\n\n /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */\n while (br.bit_pos_ < 32) {\n ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_\n br.bit_pos_ += 8\n rb_pos++\n len--\n }\n\n /* Copy remaining bytes from br.buf_ to ringbuffer. */\n let nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3\n if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {\n const tail = BrotliBitReader.IBUF_MASK + 1 - br_pos\n for (let x = 0; x < tail; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x]\n\n nbytes -= tail\n rb_pos += tail\n len -= tail\n br_pos = 0\n }\n\n for (let x = 0; x < nbytes; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x]\n\n rb_pos += nbytes\n len -= nbytes\n\n /* If we wrote past the logical end of the ringbuffer, copy the tail of the\n ringbuffer to its beginning and flush the ringbuffer to the output. */\n if (rb_pos >= rb_size) {\n output.write(ringbuffer, rb_size)\n rb_pos -= rb_size\n for (let x = 0; x < rb_pos; x++)\n ringbuffer[x] = ringbuffer[rb_size + x]\n }\n\n /* If we have more to copy than the remaining size of the ringbuffer, then we\n first fill the ringbuffer from the input and then flush the ringbuffer to\n the output */\n while (rb_pos + len >= rb_size) {\n nbytes = rb_size - rb_pos\n if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes')\n }\n output.write(ringbuffer, rb_size)\n len -= nbytes\n rb_pos = 0\n }\n\n /* Copy straight from the input onto the ringbuffer. The ringbuffer will be\n flushed to the output at a later time. */\n if (br.input_.read(ringbuffer, rb_pos, len) < len) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes')\n }\n\n /* Restore the state of the bit reader. */\n br.reset()\n}\n\n/**\n * Decodes a number in the range [0..255], by reading 1 - 11 bits.\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nfunction decodeVarLenUint8(br) {\n if (br.readBits(1)) {\n const nbits = br.readBits(3)\n if (nbits === 0) {\n return 1\n } else {\n return br.readBits(nbits) + (1 << nbits)\n }\n }\n return 0\n}\n\nfunction MetaBlockLength() {\n this.meta_block_length = 0\n this.input_end = 0\n this.is_uncompressed = 0\n this.is_metadata = false\n}\n\n/**\n * @param {BrotliBitReader} br\n * @returns {MetaBlockLength}\n */\nfunction DecodeMetaBlockLength(br) {\n const out = new MetaBlockLength\n\n out.input_end = br.readBits(1)\n if (out.input_end && br.readBits(1)) {\n return out\n }\n\n const size_nibbles = br.readBits(2) + 4\n if (size_nibbles === 7) {\n out.is_metadata = true\n\n if (br.readBits(1) !== 0)\n throw new Error('Invalid reserved bit')\n\n const size_bytes = br.readBits(2)\n if (size_bytes === 0)\n return out\n\n for (let i = 0; i < size_bytes; i++) {\n const next_byte = br.readBits(8)\n if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)\n throw new Error('Invalid size byte')\n\n out.meta_block_length |= next_byte << i * 8\n }\n } else {\n for (let i = 0; i < size_nibbles; i++) {\n const next_nibble = br.readBits(4)\n if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)\n throw new Error('Invalid size nibble')\n\n out.meta_block_length |= next_nibble << i * 4\n }\n }\n\n out.meta_block_length++\n\n if (!out.input_end && !out.is_metadata) {\n out.is_uncompressed = br.readBits(1)\n }\n\n return out\n}\n\n/**\n * @param {number} context_map_size\n * @param {BrotliBitReader} br\n * @returns {{ num_htrees: number, context_map: Uint8Array }}\n */\nfunction DecodeContextMap(context_map_size, br) {\n let max_run_length_prefix = 0\n\n br.readMoreInput()\n const num_htrees = decodeVarLenUint8(br) + 1\n\n const context_map = new Uint8Array(context_map_size)\n if (num_htrees <= 1) {\n return { num_htrees, context_map }\n }\n\n const use_rle_for_zeros = br.readBits(1)\n if (use_rle_for_zeros) {\n max_run_length_prefix = br.readBits(4) + 1\n }\n\n const table = []\n for (let i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {\n table[i] = new HuffmanCode(0, 0)\n }\n\n readHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br)\n\n for (let i = 0; i < context_map_size;) {\n br.readMoreInput()\n const code = readSymbol(table, 0, br)\n if (code === 0) {\n context_map[i] = 0\n i++\n } else if (code <= max_run_length_prefix) {\n let reps = 1 + (1 << code) + br.readBits(code)\n while (--reps) {\n if (i >= context_map_size) {\n throw new Error('[DecodeContextMap] i >= context_map_size')\n }\n context_map[i] = 0\n i++\n }\n } else {\n context_map[i] = code - max_run_length_prefix\n i++\n }\n }\n if (br.readBits(1)) {\n inverseMoveToFrontTransform(context_map, context_map_size)\n }\n\n return { num_htrees, context_map }\n}\n\n/**\n * @param {Uint8Array} v\n * @param {number} index\n */\nfunction moveToFront(v, index) {\n const value = v[index]\n for (let i = index; i; i--) v[i] = v[i - 1]\n v[0] = value\n}\n\n/**\n * @param {Uint8Array} v\n * @param {number} v_len\n */\nfunction inverseMoveToFrontTransform(v, v_len) {\n const mtf = new Uint8Array(256)\n for (let i = 0; i < 256; i++) {\n mtf[i] = i\n }\n for (let i = 0; i < v_len; i++) {\n const index = v[i]\n v[i] = mtf[index]\n if (index) moveToFront(mtf, index)\n }\n}\n\n/**\n * Advances the bit reader position to the next byte boundary and verifies\n * that any skipped bits are set to zero.\n * @param {BrotliBitReader} br\n * @returns {boolean}\n */\nfunction jumpToByteBoundary(br) {\n const new_bit_pos = br.bit_pos_ + 7 & ~7\n return !br.readBits(new_bit_pos - br.bit_pos_)\n}\n","/**\n * LZ4 decompression with legacy hadoop support.\n * https://github.com/apache/arrow/blob/apache-arrow-16.1.0/cpp/src/arrow/util/compression_lz4.cc#L475\n *\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nexport function LZ4(input, outputLength) {\n const output = new Uint8Array(outputLength)\n try {\n let i = 0 // input index\n let o = 0 // output index\n while (i < input.length - 8) {\n const expectedOutputLength = input[i++] << 24 | input[i++] << 16 | input[i++] << 8 | input[i++]\n const expectedInputLength = input[i++] << 24 | input[i++] << 16 | input[i++] << 8 | input[i++]\n if (input.length - i < expectedInputLength) throw new Error('lz4 not hadoop')\n if (output.length < expectedOutputLength) throw new Error('lz4 not hadoop')\n\n // decompress and compare with expected\n const chunk = lz4basic(input.subarray(i, i + expectedInputLength), output, o)\n if (chunk !== expectedOutputLength) throw new Error('lz4 not hadoop')\n i += expectedInputLength\n o += expectedOutputLength\n\n if (i === input.length) return output\n }\n if (i < input.length) throw new Error('lz4 not hadoop')\n } catch (error) {\n if (error instanceof Error && error.message !== 'lz4 not hadoop') throw error\n // fallback to basic lz4\n lz4basic(input, output, 0)\n }\n return output\n}\n\n/**\n * Basic LZ4 block decompression.\n *\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nexport function LZ4_RAW(input, outputLength) {\n const output = new Uint8Array(outputLength)\n lz4basic(input, output, 0)\n return output\n}\n\n/**\n * @param {Uint8Array} input\n * @param {Uint8Array} output\n * @param {number} outputIndex\n * @returns {number} bytes written\n */\nfunction lz4basic(input, output, outputIndex) {\n let len = outputIndex // output position\n for (let i = 0; i < input.length;) {\n const token = input[i++]\n\n let literals = token >> 4\n if (literals) {\n // literal length\n let byte = literals + 240\n while (byte === 255) literals += byte = input[i++]\n // copy literals\n output.set(input.subarray(i, i + literals), len)\n len += literals\n i += literals\n if (i >= input.length) return len - outputIndex\n }\n\n const offset = input[i++] | input[i++] << 8\n if (!offset || offset > len) {\n throw new Error(`lz4 offset out of range ${offset}`)\n }\n // match length\n let matchLength = (token & 0xf) + 4 // minmatch 4\n let byte = matchLength + 240\n while (byte === 255) matchLength += byte = input[i++]\n // copy match\n // TODO: fast path when no overlap\n let pos = len - offset\n const end = len + matchLength\n while (len < end) output[len++] = output[pos++]\n }\n return len - outputIndex\n}\n","import { decompress as ZSTD } from 'fzstd'\nimport { snappyUncompressor } from 'hysnappy'\nimport { BROTLI } from './brotli.js'\nimport { gunzip } from './gzip.js'\nimport { LZ4, LZ4_RAW } from './lz4.js'\n\n/**\n * @type {import('hyparquet').Compressors}\n */\nexport const compressors = {\n SNAPPY: snappyUncompressor(),\n GZIP: (input, length) => {\n const out = new Uint8Array(length)\n gunzip(input, out)\n return out\n },\n BROTLI,\n ZSTD: input => ZSTD(input),\n LZ4,\n LZ4_RAW,\n}\n","/** @type {import('./types.js').ParquetType[]} */\nexport const ParquetType = [\n 'BOOLEAN',\n 'INT32',\n 'INT64',\n 'INT96', // deprecated\n 'FLOAT',\n 'DOUBLE',\n 'BYTE_ARRAY',\n 'FIXED_LEN_BYTE_ARRAY',\n]\n\nexport const Encoding = [\n 'PLAIN',\n undefined,\n 'PLAIN_DICTIONARY',\n 'RLE',\n 'BIT_PACKED', // deprecated\n 'DELTA_BINARY_PACKED',\n 'DELTA_LENGTH_BYTE_ARRAY',\n 'DELTA_BYTE_ARRAY',\n 'RLE_DICTIONARY',\n 'BYTE_STREAM_SPLIT',\n]\n\nexport const FieldRepetitionType = [\n 'REQUIRED',\n 'OPTIONAL',\n 'REPEATED',\n]\n\n/** @type {import('./types.js').ConvertedType[]} */\nexport const ConvertedType = [\n 'UTF8',\n 'MAP',\n 'MAP_KEY_VALUE',\n 'LIST',\n 'ENUM',\n 'DECIMAL',\n 'DATE',\n 'TIME_MILLIS',\n 'TIME_MICROS',\n 'TIMESTAMP_MILLIS',\n 'TIMESTAMP_MICROS',\n 'UINT_8',\n 'UINT_16',\n 'UINT_32',\n 'UINT_64',\n 'INT_8',\n 'INT_16',\n 'INT_32',\n 'INT_64',\n 'JSON',\n 'BSON',\n 'INTERVAL',\n]\n\n/** @type {import('./types.js').LogicalTypeType[]} */\nexport const logicalTypeType = [\n 'NULL',\n 'STRING',\n 'MAP',\n 'LIST',\n 'ENUM',\n 'DECIMAL',\n 'DATE',\n 'TIME',\n 'TIMESTAMP',\n 'INTERVAL',\n 'INTEGER',\n 'NULL',\n 'JSON',\n 'BSON',\n 'UUID',\n]\n\nexport const CompressionCodec = [\n 'UNCOMPRESSED',\n 'SNAPPY',\n 'GZIP',\n 'LZO',\n 'BROTLI',\n 'LZ4',\n 'ZSTD',\n 'LZ4_RAW',\n]\n\n/** @type {import('./types.js').PageType[]} */\nexport const PageType = [\n 'DATA_PAGE',\n 'INDEX_PAGE',\n 'DICTIONARY_PAGE',\n 'DATA_PAGE_V2',\n]\n\n/** @type {import('./types.js').BoundaryOrder[]} */\nexport const BoundaryOrder = [\n 'UNORDERED',\n 'ASCENDING',\n 'DESCENDING',\n]\n","const dayMillis = 86400000 // 1 day in milliseconds\n\n/**\n * Convert known types from primitive to rich, and dereference dictionary.\n *\n * @typedef {import('./types.js').DecodedArray} DecodedArray\n * @typedef {import('./types.js').SchemaElement} SchemaElement\n * @param {DecodedArray} data series of primitive types\n * @param {DecodedArray | undefined} dictionary\n * @param {SchemaElement} schemaElement\n * @param {import('./types.js').Encoding} encoding\n * @param {boolean | undefined} utf8 decode bytes as utf8?\n * @returns {DecodedArray} series of rich types\n */\nexport function convertWithDictionary(data, dictionary, schemaElement, encoding, utf8 = true) {\n if (dictionary && encoding.endsWith('_DICTIONARY')) {\n // convert dictionary\n dictionary = convert(dictionary, schemaElement, utf8)\n let output = data\n if (data instanceof Uint8Array && !(dictionary instanceof Uint8Array)) {\n // @ts-expect-error upgrade data to match dictionary type with fancy constructor\n output = new dictionary.constructor(data.length)\n }\n for (let i = 0; i < data.length; i++) {\n output[i] = dictionary[data[i]]\n }\n return output\n } else {\n return convert(data, schemaElement, utf8)\n }\n}\n\n/**\n * Convert known types from primitive to rich.\n *\n * @param {DecodedArray} data series of primitive types\n * @param {SchemaElement} schemaElement\n * @param {boolean | undefined} utf8 decode bytes as utf8?\n * @returns {DecodedArray} series of rich types\n */\nexport function convert(data, schemaElement, utf8 = true) {\n const ctype = schemaElement.converted_type\n if (ctype === 'DECIMAL') {\n const scale = schemaElement.scale || 0\n const factor = Math.pow(10, -scale)\n const arr = new Array(data.length)\n for (let i = 0; i < arr.length; i++) {\n if (data[0] instanceof Uint8Array) {\n arr[i] = parseDecimal(data[i]) * factor\n } else {\n arr[i] = Number(data[i]) * factor\n }\n }\n return arr\n }\n if (ctype === undefined && schemaElement.type === 'INT96') {\n return Array.from(data).map(parseInt96Date)\n }\n if (ctype === 'DATE') {\n const arr = new Array(data.length)\n for (let i = 0; i < arr.length; i++) {\n arr[i] = new Date(data[i] * dayMillis)\n }\n return arr\n }\n if (ctype === 'TIMESTAMP_MILLIS') {\n const arr = new Array(data.length)\n for (let i = 0; i < arr.length; i++) {\n arr[i] = new Date(Number(data[i]))\n }\n return arr\n }\n if (ctype === 'TIMESTAMP_MICROS') {\n const arr = new Array(data.length)\n for (let i = 0; i < arr.length; i++) {\n arr[i] = new Date(Number(data[i] / 1000n))\n }\n return arr\n }\n if (ctype === 'JSON') {\n const decoder = new TextDecoder()\n return data.map(v => JSON.parse(decoder.decode(v)))\n }\n if (ctype === 'BSON') {\n throw new Error('parquet bson not supported')\n }\n if (ctype === 'INTERVAL') {\n throw new Error('parquet interval not supported')\n }\n if (ctype === 'UTF8' || utf8 && schemaElement.type === 'BYTE_ARRAY') {\n const decoder = new TextDecoder()\n const arr = new Array(data.length)\n for (let i = 0; i < arr.length; i++) {\n arr[i] = data[i] && decoder.decode(data[i])\n }\n return arr\n }\n if (ctype === 'UINT_64') {\n const arr = new BigUint64Array(data.length)\n for (let i = 0; i < arr.length; i++) {\n arr[i] = BigInt(data[i])\n }\n return arr\n }\n if (schemaElement.logical_type?.type === 'FLOAT16') {\n return Array.from(data).map(parseFloat16)\n }\n if (schemaElement.logical_type?.type === 'TIMESTAMP') {\n const { unit } = schemaElement.logical_type\n let factor = 1n\n if (unit === 'MICROS') factor = 1000n\n if (unit === 'NANOS') factor = 1000000n\n const arr = new Array(data.length)\n for (let i = 0; i < arr.length; i++) {\n arr[i] = new Date(Number(data[i] / factor))\n }\n return arr\n }\n return data\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {number}\n */\nexport function parseDecimal(bytes) {\n // TODO: handle signed\n let value = 0\n for (const byte of bytes) {\n value = value << 8 | byte\n }\n return value\n}\n\n/**\n * @param {bigint} value\n * @returns {Date}\n */\nfunction parseInt96Date(value) {\n const days = Number((value >> 64n) - 2440588n)\n const nano = Number((value & 0xffffffffffffffffn) / 1000000n)\n const millis = days * dayMillis + nano\n return new Date(millis)\n}\n\n/**\n * @param {Uint8Array | undefined} bytes\n * @returns {number | undefined}\n */\nexport function parseFloat16(bytes) {\n if (!bytes) return undefined\n const int16 = bytes[1] << 8 | bytes[0]\n const sign = int16 >> 15 ? -1 : 1\n const exp = int16 >> 10 & 0x1f\n const frac = int16 & 0x3ff\n if (exp === 0) return sign * Math.pow(2, -14) * (frac / 1024) // subnormals\n if (exp === 0x1f) return frac ? NaN : sign * Infinity\n return sign * Math.pow(2, exp - 15) * (1 + frac / 1024)\n}\n","/**\n * Build a tree from the schema elements.\n *\n * @typedef {import('./types.js').SchemaElement} SchemaElement\n * @typedef {import('./types.js').SchemaTree} SchemaTree\n * @param {SchemaElement[]} schema\n * @param {number} rootIndex index of the root element\n * @param {string[]} path path to the element\n * @returns {SchemaTree} tree of schema elements\n */\nfunction schemaTree(schema, rootIndex, path) {\n const element = schema[rootIndex]\n const children = []\n let count = 1\n\n // Read the specified number of children\n if (element.num_children) {\n while (children.length < element.num_children) {\n const childElement = schema[rootIndex + count]\n const child = schemaTree(schema, rootIndex + count, [...path, childElement.name])\n count += child.count\n children.push(child)\n }\n }\n\n return { count, element, children, path }\n}\n\n/**\n * Get schema elements from the root to the given element name.\n *\n * @param {SchemaElement[]} schema\n * @param {string[]} name path to the element\n * @returns {SchemaTree[]} list of schema elements\n */\nexport function getSchemaPath(schema, name) {\n let tree = schemaTree(schema, 0, [])\n const path = [tree]\n for (const part of name) {\n const child = tree.children.find(child => child.element.name === part)\n if (!child) throw new Error(`parquet schema element not found: ${name}`)\n path.push(child)\n tree = child\n }\n return path\n}\n\n/**\n * Get the max repetition level for a given schema path.\n *\n * @param {SchemaTree[]} schemaPath\n * @returns {number} max repetition level\n */\nexport function getMaxRepetitionLevel(schemaPath) {\n let maxLevel = 0\n for (const { element } of schemaPath) {\n if (element.repetition_type === 'REPEATED') {\n maxLevel++\n }\n }\n return maxLevel\n}\n\n/**\n * Get the max definition level for a given schema path.\n *\n * @param {SchemaTree[]} schemaPath\n * @returns {number} max definition level\n */\nexport function getMaxDefinitionLevel(schemaPath) {\n let maxLevel = 0\n for (const { element } of schemaPath.slice(1)) {\n if (element.repetition_type !== 'REQUIRED') {\n maxLevel++\n }\n }\n return maxLevel\n}\n\n/**\n * Check if a column is list-like.\n *\n * @param {SchemaTree} schema\n * @returns {boolean} true if list-like\n */\nexport function isListLike(schema) {\n if (!schema) return false\n if (schema.element.converted_type !== 'LIST') return false\n if (schema.children.length > 1) return false\n\n const firstChild = schema.children[0]\n if (firstChild.children.length > 1) return false\n if (firstChild.element.repetition_type !== 'REPEATED') return false\n\n return true\n}\n\n/**\n * Check if a column is map-like.\n *\n * @param {SchemaTree} schema\n * @returns {boolean} true if map-like\n */\nexport function isMapLike(schema) {\n if (!schema) return false\n if (schema.element.converted_type !== 'MAP') return false\n if (schema.children.length > 1) return false\n\n const firstChild = schema.children[0]\n if (firstChild.children.length !== 2) return false\n if (firstChild.element.repetition_type !== 'REPEATED') return false\n\n const keyChild = firstChild.children.find(child => child.element.name === 'key')\n if (keyChild?.element.repetition_type === 'REPEATED') return false\n\n const valueChild = firstChild.children.find(child => child.element.name === 'value')\n if (valueChild?.element.repetition_type === 'REPEATED') return false\n\n return true\n}\n","// TCompactProtocol types\nconst CompactType = {\n STOP: 0,\n TRUE: 1,\n FALSE: 2,\n BYTE: 3,\n I16: 4,\n I32: 5,\n I64: 6,\n DOUBLE: 7,\n BINARY: 8,\n LIST: 9,\n SET: 10,\n MAP: 11,\n STRUCT: 12,\n UUID: 13,\n}\n\n/**\n * Parse TCompactProtocol\n *\n * @typedef {import(\"./types.d.ts\").DataReader} DataReader\n * @param {DataReader} reader\n * @returns {Record}\n */\nexport function deserializeTCompactProtocol(reader) {\n let lastFid = 0\n /** @type {Record} */\n const value = {}\n\n while (reader.offset < reader.view.byteLength) {\n // Parse each field based on its type and add to the result object\n const [type, fid, newLastFid] = readFieldBegin(reader, lastFid)\n lastFid = newLastFid\n\n if (type === CompactType.STOP) {\n break\n }\n\n // Handle the field based on its type\n value[`field_${fid}`] = readElement(reader, type)\n }\n\n return value\n}\n\n/**\n * Read a single element based on its type\n *\n * @param {DataReader} reader\n * @param {number} type\n * @returns {any} value\n */\nfunction readElement(reader, type) {\n switch (type) {\n case CompactType.TRUE:\n return true\n case CompactType.FALSE:\n return false\n case CompactType.BYTE:\n // read byte directly\n return reader.view.getInt8(reader.offset++)\n case CompactType.I16:\n case CompactType.I32:\n return readZigZag(reader)\n case CompactType.I64:\n return readZigZagBigInt(reader)\n case CompactType.DOUBLE: {\n const value = reader.view.getFloat64(reader.offset, true)\n reader.offset += 8\n return value\n }\n case CompactType.BINARY: {\n const stringLength = readVarInt(reader)\n const strBytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, stringLength)\n reader.offset += stringLength\n return strBytes\n }\n case CompactType.LIST: {\n const [elemType, listSize] = readCollectionBegin(reader)\n const boolType = elemType === CompactType.TRUE || elemType === CompactType.FALSE\n const values = new Array(listSize)\n for (let i = 0; i < listSize; i++) {\n values[i] = boolType ? readElement(reader, CompactType.BYTE) === 1 : readElement(reader, elemType)\n }\n return values\n }\n case CompactType.STRUCT: {\n /** @type {Record} */\n const structValues = {}\n let structLastFid = 0\n while (true) {\n let structFieldType, structFid\n [structFieldType, structFid, structLastFid] = readFieldBegin(reader, structLastFid)\n if (structFieldType === CompactType.STOP) {\n break\n }\n structValues[`field_${structFid}`] = readElement(reader, structFieldType)\n }\n return structValues\n }\n // TODO: MAP and SET\n case CompactType.UUID: {\n // Read 16 bytes to uuid string\n let uuid = ''\n for (let i = 0; i < 16; i++) {\n uuid += reader.view.getUint8(reader.offset++).toString(16).padStart(2, '0')\n }\n return uuid\n }\n default:\n throw new Error(`thrift unhandled type: ${type}`)\n }\n}\n\n/**\n * Var int, also known as Unsigned LEB128.\n * Var ints take 1 to 5 bytes (int32) or 1 to 10 bytes (int64).\n * Reads groups of 7 low bits until high bit is 0.\n *\n * @param {DataReader} reader\n * @returns {number} value\n */\nexport function readVarInt(reader) {\n let result = 0\n let shift = 0\n while (true) {\n const byte = reader.view.getUint8(reader.offset++)\n result |= (byte & 0x7f) << shift\n if (!(byte & 0x80)) {\n return result\n }\n shift += 7\n }\n}\n\n/**\n * Read a varint as a bigint.\n *\n * @param {DataReader} reader\n * @returns {bigint} value\n */\nfunction readVarBigInt(reader) {\n let result = 0n\n let shift = 0n\n while (true) {\n const byte = reader.view.getUint8(reader.offset++)\n result |= BigInt(byte & 0x7f) << shift\n if (!(byte & 0x80)) {\n return result\n }\n shift += 7n\n }\n}\n\n/**\n * Values of type int32 and int64 are transformed to a zigzag int.\n * A zigzag int folds positive and negative numbers into the positive number space.\n *\n * @param {DataReader} reader\n * @returns {number} value\n */\nfunction readZigZag(reader) {\n const zigzag = readVarInt(reader)\n // convert zigzag to int\n return zigzag >>> 1 ^ -(zigzag & 1)\n}\n\n/**\n * A zigzag int folds positive and negative numbers into the positive number space.\n * This version returns a BigInt.\n *\n * @param {DataReader} reader\n * @returns {bigint} value\n */\nexport function readZigZagBigInt(reader) {\n const zigzag = readVarBigInt(reader)\n // convert zigzag to int\n return zigzag >> BigInt(1) ^ -(zigzag & BigInt(1))\n}\n\n/**\n * Get thrift type from half a byte\n *\n * @param {number} byte\n * @returns {number}\n */\nfunction getCompactType(byte) {\n return byte & 0x0f\n}\n\n/**\n * Read field type and field id\n *\n * @param {DataReader} reader\n * @param {number} lastFid\n * @returns {[number, number, number]} [type, fid, newLastFid]\n */\nfunction readFieldBegin(reader, lastFid) {\n const type = reader.view.getUint8(reader.offset++)\n if ((type & 0x0f) === CompactType.STOP) {\n // STOP also ends a struct\n return [0, 0, lastFid]\n }\n const delta = type >> 4\n let fid // field id\n if (delta) {\n // add delta to last field id\n fid = lastFid + delta\n } else {\n throw new Error('non-delta field id not supported')\n }\n return [getCompactType(type), fid, fid]\n}\n\n/**\n * Read collection type and size\n *\n * @param {DataReader} reader\n * @returns {[number, number]} [type, size]\n */\nfunction readCollectionBegin(reader) {\n const sizeType = reader.view.getUint8(reader.offset++)\n const size = sizeType >> 4\n const type = getCompactType(sizeType)\n if (size === 15) {\n const newSize = readVarInt(reader)\n return [type, newSize]\n }\n return [type, size]\n}\n\n/**\n * Convert int to varint. Outputs 1-5 bytes for int32.\n *\n * @param {number} n\n * @returns {number[]}\n */\nexport function toVarInt(n) {\n let idx = 0\n const varInt = []\n while (true) {\n if ((n & ~0x7f) === 0) {\n varInt[idx++] = n\n break\n } else {\n varInt[idx++] = n & 0x7f | 0x80\n n >>>= 7\n }\n }\n return varInt\n}\n","import { CompressionCodec, ConvertedType, Encoding, FieldRepetitionType, PageType, ParquetType } from './constants.js'\nimport { parseDecimal, parseFloat16 } from './convert.js'\nimport { getSchemaPath } from './schema.js'\nimport { deserializeTCompactProtocol } from './thrift.js'\n\n/**\n * Read parquet metadata from an async buffer.\n *\n * An AsyncBuffer is like an ArrayBuffer, but the slices are loaded\n * asynchronously, possibly over the network.\n *\n * You must provide the byteLength of the buffer, typically from a HEAD request.\n *\n * In theory, you could use suffix-range requests to fetch the end of the file,\n * and save a round trip. But in practice, this doesn't work because chrome\n * deems suffix-range requests as a not-safe-listed header, and will require\n * a pre-flight. So the byteLength is required.\n *\n * To make this efficient, we initially request the last 512kb of the file,\n * which is likely to contain the metadata. If the metadata length exceeds the\n * initial fetch, 512kb, we request the rest of the metadata from the AsyncBuffer.\n *\n * This ensures that we either make one 512kb initial request for the metadata,\n * or a second request for up to the metadata size.\n *\n * @typedef {import(\"./types.d.ts\").AsyncBuffer} AsyncBuffer\n * @typedef {import(\"./types.d.ts\").FileMetaData} FileMetaData\n * @typedef {import(\"./types.d.ts\").SchemaElement} SchemaElement\n * @param {AsyncBuffer} asyncBuffer parquet file contents\n * @param {number} initialFetchSize initial fetch size in bytes\n * @returns {Promise} parquet metadata object\n */\nexport async function parquetMetadataAsync(asyncBuffer, initialFetchSize = 1 << 19 /* 512kb */) {\n if (!asyncBuffer) throw new Error('parquet file is required')\n if (!(asyncBuffer.byteLength >= 0)) throw new Error('parquet file byteLength is required')\n\n // fetch last bytes (footer) of the file\n const footerOffset = Math.max(0, asyncBuffer.byteLength - initialFetchSize)\n const footerBuffer = await asyncBuffer.slice(footerOffset, asyncBuffer.byteLength)\n\n // Check for parquet magic number \"PAR1\"\n const footerView = new DataView(footerBuffer)\n if (footerView.getUint32(footerBuffer.byteLength - 4, true) !== 0x31524150) {\n throw new Error('parquet file invalid (footer != PAR1)')\n }\n\n // Parquet files store metadata at the end of the file\n // Metadata length is 4 bytes before the last PAR1\n const metadataLength = footerView.getUint32(footerBuffer.byteLength - 8, true)\n if (metadataLength > asyncBuffer.byteLength - 8) {\n throw new Error(`parquet metadata length ${metadataLength} exceeds available buffer ${asyncBuffer.byteLength - 8}`)\n }\n\n // check if metadata size fits inside the initial fetch\n if (metadataLength + 8 > initialFetchSize) {\n // fetch the rest of the metadata\n const metadataOffset = asyncBuffer.byteLength - metadataLength - 8\n const metadataBuffer = await asyncBuffer.slice(metadataOffset, footerOffset)\n // combine initial fetch with the new slice\n const combinedBuffer = new ArrayBuffer(metadataLength + 8)\n const combinedView = new Uint8Array(combinedBuffer)\n combinedView.set(new Uint8Array(metadataBuffer))\n combinedView.set(new Uint8Array(footerBuffer), footerOffset - metadataOffset)\n return parquetMetadata(combinedBuffer)\n } else {\n // parse metadata from the footer\n return parquetMetadata(footerBuffer)\n }\n}\n\n/**\n * Read parquet metadata from a buffer synchronously.\n *\n * @param {ArrayBuffer} arrayBuffer parquet file contents\n * @returns {FileMetaData} parquet metadata object\n */\nexport function parquetMetadata(arrayBuffer) {\n if (!arrayBuffer) throw new Error('parquet file is required')\n const view = new DataView(arrayBuffer)\n\n // Validate footer magic number \"PAR1\"\n if (view.byteLength < 8) {\n throw new Error('parquet file is too short')\n }\n if (view.getUint32(view.byteLength - 4, true) !== 0x31524150) {\n throw new Error('parquet file invalid (footer != PAR1)')\n }\n\n // Parquet files store metadata at the end of the file\n // Metadata length is 4 bytes before the last PAR1\n const metadataLengthOffset = view.byteLength - 8\n const metadataLength = view.getUint32(metadataLengthOffset, true)\n if (metadataLength > view.byteLength - 8) {\n // {metadata}, metadata_length, PAR1\n throw new Error(`parquet metadata length ${metadataLength} exceeds available buffer ${view.byteLength - 8}`)\n }\n\n const metadataOffset = metadataLengthOffset - metadataLength\n const reader = { view, offset: metadataOffset }\n const metadata = deserializeTCompactProtocol(reader)\n const decoder = new TextDecoder()\n function decode(/** @type {Uint8Array} */ value) {\n return value && decoder.decode(value)\n }\n\n // Parse metadata from thrift data\n const version = metadata.field_1\n /** @type {SchemaElement[]} */\n const schema = metadata.field_2.map((/** @type {any} */ field) => ({\n type: ParquetType[field.field_1],\n type_length: field.field_2,\n repetition_type: FieldRepetitionType[field.field_3],\n name: decode(field.field_4),\n num_children: field.field_5,\n converted_type: ConvertedType[field.field_6],\n scale: field.field_7,\n precision: field.field_8,\n field_id: field.field_9,\n logical_type: logicalType(field.field_10),\n }))\n // schema element per column index\n const columnSchema = schema.filter(e => e.type)\n const num_rows = metadata.field_3\n const row_groups = metadata.field_4.map((/** @type {any} */ rowGroup) => ({\n columns: rowGroup.field_1.map((/** @type {any} */ column, /** @type {number} */ columnIndex) => ({\n file_path: decode(column.field_1),\n file_offset: column.field_2,\n meta_data: column.field_3 && {\n type: ParquetType[column.field_3.field_1],\n encodings: column.field_3.field_2?.map((/** @type {number} */ e) => Encoding[e]),\n path_in_schema: column.field_3.field_3.map(decode),\n codec: CompressionCodec[column.field_3.field_4],\n num_values: column.field_3.field_5,\n total_uncompressed_size: column.field_3.field_6,\n total_compressed_size: column.field_3.field_7,\n key_value_metadata: column.field_3.field_8,\n data_page_offset: column.field_3.field_9,\n index_page_offset: column.field_3.field_10,\n dictionary_page_offset: column.field_3.field_11,\n statistics: convertStats(column.field_3.field_12, columnSchema[columnIndex]),\n encoding_stats: column.field_3.field_13?.map((/** @type {any} */ encodingStat) => ({\n page_type: PageType[encodingStat.field_1],\n encoding: Encoding[encodingStat.field_2],\n count: encodingStat.field_3,\n })),\n bloom_filter_offset: column.field_3.field_14,\n bloom_filter_length: column.field_3.field_15,\n size_statistics: column.field_3.field_16 && {\n unencoded_byte_array_data_bytes: column.field_3.field_16.field_1,\n repetition_level_histogram: column.field_3.field_16.field_2,\n definition_level_histogram: column.field_3.field_16.field_3,\n },\n },\n offset_index_offset: column.field_4,\n offset_index_length: column.field_5,\n column_index_offset: column.field_6,\n column_index_length: column.field_7,\n crypto_metadata: column.field_7,\n encrypted_column_metadata: column.field_8,\n })),\n total_byte_size: rowGroup.field_2,\n num_rows: rowGroup.field_3,\n sorting_columns: rowGroup.field_4?.map((/** @type {any} */ sortingColumn) => ({\n column_idx: sortingColumn.field_1,\n descending: sortingColumn.field_2,\n nulls_first: sortingColumn.field_3,\n })),\n file_offset: rowGroup.field_5,\n total_compressed_size: rowGroup.field_6,\n ordinal: rowGroup.field_7,\n }))\n const key_value_metadata = metadata.field_5?.map((/** @type {any} */ keyValue) => ({\n key: decode(keyValue.field_1),\n value: decode(keyValue.field_2),\n }))\n const created_by = decode(metadata.field_6)\n\n return {\n version,\n schema,\n num_rows,\n row_groups,\n key_value_metadata,\n created_by,\n metadata_length: metadataLength,\n }\n}\n\n/**\n * Return a tree of schema elements from parquet metadata.\n *\n * @param {FileMetaData} metadata parquet metadata object\n * @returns {import(\"./types.d.ts\").SchemaTree} tree of schema elements\n */\nexport function parquetSchema(metadata) {\n return getSchemaPath(metadata.schema, [])[0]\n}\n\n/**\n * @param {any} logicalType\n * @returns {import(\"./types.d.ts\").LogicalType | undefined}\n */\nfunction logicalType(logicalType) {\n if (logicalType?.field_1) return { type: 'STRING' }\n if (logicalType?.field_2) return { type: 'MAP' }\n if (logicalType?.field_3) return { type: 'LIST' }\n if (logicalType?.field_4) return { type: 'ENUM' }\n if (logicalType?.field_5) return {\n type: 'DECIMAL',\n scale: logicalType.field_5.field_1,\n precision: logicalType.field_5.field_2,\n }\n if (logicalType?.field_6) return { type: 'DATE' }\n if (logicalType?.field_7) return {\n type: 'TIME',\n isAdjustedToUTC: logicalType.field_7.field_1,\n unit: timeUnit(logicalType.field_7.field_2),\n }\n if (logicalType?.field_8) return {\n type: 'TIMESTAMP',\n isAdjustedToUTC: logicalType.field_8.field_1,\n unit: timeUnit(logicalType.field_8.field_2),\n }\n if (logicalType?.field_10) return {\n type: 'INTEGER',\n bitWidth: logicalType.field_10.field_1,\n isSigned: logicalType.field_10.field_2,\n }\n if (logicalType?.field_11) return { type: 'NULL' }\n if (logicalType?.field_12) return { type: 'JSON' }\n if (logicalType?.field_13) return { type: 'BSON' }\n if (logicalType?.field_14) return { type: 'UUID' }\n if (logicalType?.field_15) return { type: 'FLOAT16' }\n return logicalType\n}\n\n/**\n * @param {any} unit\n * @returns {import(\"./types.d.ts\").TimeUnit}\n */\nfunction timeUnit(unit) {\n if (unit.field_1) return 'MILLIS'\n if (unit.field_2) return 'MICROS'\n if (unit.field_3) return 'NANOS'\n throw new Error('parquet time unit required')\n}\n\n/**\n * Convert column statistics based on column type.\n *\n * @param {any} stats\n * @param {SchemaElement} schema\n * @returns {import(\"./types.d.ts\").Statistics}\n */\nfunction convertStats(stats, schema) {\n return stats && {\n max: convertMetadata(stats.field_1, schema),\n min: convertMetadata(stats.field_2, schema),\n null_count: stats.field_3,\n distinct_count: stats.field_4,\n max_value: convertMetadata(stats.field_5, schema),\n min_value: convertMetadata(stats.field_6, schema),\n is_max_value_exact: stats.field_7,\n is_min_value_exact: stats.field_8,\n }\n}\n\n/**\n * @param {Uint8Array | undefined} value\n * @param {SchemaElement} schema\n * @returns {import('./types.d.ts').MinMaxType | undefined}\n */\nexport function convertMetadata(value, schema) {\n const { type, converted_type, logical_type } = schema\n if (value === undefined) return value\n if (type === 'BOOLEAN') return value[0] === 1\n if (type === 'BYTE_ARRAY') return new TextDecoder().decode(value)\n const view = new DataView(value.buffer, value.byteOffset, value.byteLength)\n if (type === 'FLOAT' && view.byteLength === 4) return view.getFloat32(0, true)\n if (type === 'DOUBLE' && view.byteLength === 8) return view.getFloat64(0, true)\n if (type === 'INT32' && converted_type === 'DATE') return new Date(view.getInt32(0, true) * 86400000)\n if (type === 'INT64' && converted_type === 'TIMESTAMP_MICROS') return new Date(Number(view.getBigInt64(0, true) / 1000n))\n if (type === 'INT64' && converted_type === 'TIMESTAMP_MILLIS') return new Date(Number(view.getBigInt64(0, true)))\n if (type === 'INT64' && logical_type?.type === 'TIMESTAMP') return new Date(Number(view.getBigInt64(0, true)))\n if (type === 'INT32' && view.byteLength === 4) return view.getInt32(0, true)\n if (type === 'INT64' && view.byteLength === 8) return view.getBigInt64(0, true)\n if (converted_type === 'DECIMAL') return parseDecimal(value) * Math.pow(10, -(schema.scale || 0))\n if (logical_type?.type === 'FLOAT16') return parseFloat16(value)\n if (type === 'FIXED_LEN_BYTE_ARRAY') return value\n // assert(false)\n return value\n}\n","import { isListLike, isMapLike } from './schema.js'\n\n/**\n * Dremel-assembly of arrays of values into lists\n *\n * Reconstructs a complex nested structure from flat arrays of definition and repetition levels,\n * according to Dremel encoding.\n *\n * @typedef {import('./types.d.ts').DecodedArray} DecodedArray\n * @typedef {import('./types.d.ts').FieldRepetitionType} FieldRepetitionType\n * @param {any[]} output\n * @param {number[] | undefined} definitionLevels\n * @param {number[]} repetitionLevels\n * @param {DecodedArray} values\n * @param {(FieldRepetitionType | undefined)[]} repetitionPath\n * @param {number} maxDefinitionLevel definition level that corresponds to non-null\n * @returns {any[]}\n */\nexport function assembleLists(\n output, definitionLevels, repetitionLevels, values, repetitionPath, maxDefinitionLevel\n) {\n const n = definitionLevels?.length || repetitionLevels.length\n let valueIndex = 0\n\n // Track state of nested structures\n const containerStack = [output]\n let currentContainer = output\n let currentDepth = 0 // schema depth\n let currentDefLevel = 0 // list depth\n let currentRepLevel = 0\n\n if (repetitionLevels[0]) {\n // continue previous row\n while (currentDepth < repetitionPath.length - 2 && currentRepLevel < repetitionLevels[0]) {\n // go into last list\n currentContainer = currentContainer.at(-1)\n containerStack.push(currentContainer)\n currentDepth++\n if (repetitionPath[currentDepth] !== 'REQUIRED') currentDefLevel++\n if (repetitionPath[currentDepth] === 'REPEATED') currentRepLevel++\n }\n }\n\n for (let i = 0; i < n; i++) {\n // assert(currentDefLevel === containerStack.length - 1)\n const def = definitionLevels?.length ? definitionLevels[i] : maxDefinitionLevel\n const rep = repetitionLevels[i]\n\n // Pop up to start of rep level\n while (currentDepth && (rep < currentRepLevel || repetitionPath[currentDepth] !== 'REPEATED')) {\n if (repetitionPath[currentDepth] !== 'REQUIRED') {\n containerStack.pop()\n currentDefLevel--\n }\n if (repetitionPath[currentDepth] === 'REPEATED') currentRepLevel--\n currentDepth--\n }\n // @ts-expect-error won't be empty\n currentContainer = containerStack.at(-1)\n\n // Go deeper to end of definition level\n while (\n (currentDepth < repetitionPath.length - 2 || repetitionPath[currentDepth + 1] === 'REPEATED') &&\n (currentDefLevel < def || repetitionPath[currentDepth + 1] === 'REQUIRED')\n ) {\n currentDepth++\n if (repetitionPath[currentDepth] !== 'REQUIRED') {\n /** @type {any[]} */\n const newList = []\n currentContainer.push(newList)\n currentContainer = newList\n containerStack.push(newList)\n currentDefLevel++\n }\n if (repetitionPath[currentDepth] === 'REPEATED') currentRepLevel++\n }\n\n // Add value or null based on definition level\n if (def === maxDefinitionLevel) {\n // assert(currentDepth === maxDefinitionLevel || currentDepth === repetitionPath.length - 2)\n currentContainer.push(values[valueIndex++])\n } else if (currentDepth === repetitionPath.length - 2) {\n currentContainer.push(null)\n } else {\n currentContainer.push([])\n }\n }\n\n // Handle edge cases for empty inputs or single-level data\n if (!output.length) {\n // return max definition level of nested lists\n for (let i = 0; i < maxDefinitionLevel; i++) {\n /** @type {any[]} */\n const newList = []\n currentContainer.push(newList)\n currentContainer = newList\n }\n }\n\n return output\n}\n\n/**\n * Assemble a nested structure from subcolumn data.\n * https://github.com/apache/parquet-format/blob/apache-parquet-format-2.10.0/LogicalTypes.md#nested-types\n *\n * @typedef {import('./types.d.ts').SchemaTree} SchemaTree\n * @param {Map} subcolumnData\n * @param {SchemaTree} schema top-level schema element\n * @param {number} [depth] depth of nested structure\n */\nexport function assembleNested(subcolumnData, schema, depth = 0) {\n const path = schema.path.join('.')\n const optional = schema.element.repetition_type === 'OPTIONAL'\n const nextDepth = optional ? depth + 1 : depth\n\n if (isListLike(schema)) {\n let sublist = schema.children[0]\n let subDepth = nextDepth\n if (sublist.children.length === 1) {\n sublist = sublist.children[0]\n subDepth++\n }\n assembleNested(subcolumnData, sublist, subDepth)\n\n const subcolumn = sublist.path.join('.')\n const values = subcolumnData.get(subcolumn)\n if (!values) throw new Error('parquet list column missing values')\n if (optional) flattenAtDepth(values, depth)\n subcolumnData.set(path, values)\n subcolumnData.delete(subcolumn)\n return\n }\n\n if (isMapLike(schema)) {\n const mapName = schema.children[0].element.name\n\n // Assemble keys and values\n assembleNested(subcolumnData, schema.children[0].children[0], nextDepth + 1)\n assembleNested(subcolumnData, schema.children[0].children[1], nextDepth + 1)\n\n const keys = subcolumnData.get(`${path}.${mapName}.key`)\n const values = subcolumnData.get(`${path}.${mapName}.value`)\n\n if (!keys) throw new Error('parquet map column missing keys')\n if (!values) throw new Error('parquet map column missing values')\n if (keys.length !== values.length) {\n throw new Error('parquet map column key/value length mismatch')\n }\n\n const out = assembleMaps(keys, values, nextDepth)\n if (optional) flattenAtDepth(out, depth)\n\n subcolumnData.delete(`${path}.${mapName}.key`)\n subcolumnData.delete(`${path}.${mapName}.value`)\n subcolumnData.set(path, out)\n return\n }\n\n // Struct-like column\n if (schema.children.length) {\n // construct a meta struct and then invert\n const invertDepth = schema.element.repetition_type === 'REQUIRED' ? depth : depth + 1\n /** @type {Record} */\n const struct = {}\n for (const child of schema.children) {\n assembleNested(subcolumnData, child, invertDepth)\n const childData = subcolumnData.get(child.path.join('.'))\n if (!childData) throw new Error('parquet struct missing child data')\n struct[child.element.name] = childData\n }\n // remove children\n for (const child of schema.children) {\n subcolumnData.delete(child.path.join('.'))\n }\n // invert struct by depth\n const inverted = invertStruct(struct, invertDepth)\n if (optional) flattenAtDepth(inverted, depth)\n subcolumnData.set(path, inverted)\n }\n}\n\n/**\n * @param {any[]} arr\n * @param {number} depth\n */\nfunction flattenAtDepth(arr, depth) {\n for (let i = 0; i < arr.length; i++) {\n if (depth) {\n flattenAtDepth(arr[i], depth - 1)\n } else {\n arr[i] = arr[i][0]\n }\n }\n}\n\n/**\n * @param {any[]} keys\n * @param {any[]} values\n * @param {number} depth\n * @returns {any[]}\n */\nfunction assembleMaps(keys, values, depth) {\n const out = []\n for (let i = 0; i < keys.length; i++) {\n if (depth) {\n out.push(assembleMaps(keys[i], values[i], depth - 1)) // go deeper\n } else {\n if (keys[i]) {\n /** @type {Record} */\n const obj = {}\n for (let j = 0; j < keys[i].length; j++) {\n const value = values[i][j]\n obj[keys[i][j]] = value === undefined ? null : value\n }\n out.push(obj)\n } else {\n out.push(undefined)\n }\n }\n }\n return out\n}\n\n/**\n * Invert a struct-like object by depth.\n *\n * @param {Record} struct\n * @param {number} depth\n * @returns {any[]}\n */\nfunction invertStruct(struct, depth) {\n const keys = Object.keys(struct)\n const length = struct[keys[0]]?.length\n const out = []\n for (let i = 0; i < length; i++) {\n /** @type {Record} */\n const obj = {}\n for (const key of keys) {\n if (struct[key].length !== length) throw new Error('parquet struct parsing error')\n obj[key] = struct[key][i]\n }\n if (depth) {\n out.push(invertStruct(obj, depth - 1)) // deeper\n } else {\n out.push(obj)\n }\n }\n return out\n}\n","import { readVarInt } from './thrift.js'\n\n/**\n * Minimum bits needed to store value.\n *\n * @param {number} value\n * @returns {number}\n */\nexport function bitWidth(value) {\n return 32 - Math.clz32(value)\n}\n\n/**\n * Read values from a run-length encoded/bit-packed hybrid encoding.\n *\n * If length is zero, then read int32 length at the start.\n *\n * @typedef {import(\"./types.d.ts\").DataReader} DataReader\n * @typedef {import(\"./types.d.ts\").DecodedArray} DecodedArray\n * @param {DataReader} reader\n * @param {number} width - width of each bit-packed group\n * @param {number} length - length of the encoded data\n * @param {DecodedArray} output\n */\nexport function readRleBitPackedHybrid(reader, width, length, output) {\n if (!length) {\n // length = reader.view.getUint32(reader.offset, true)\n reader.offset += 4\n }\n let seen = 0\n while (seen < output.length) {\n const header = readVarInt(reader)\n if (header & 1) {\n // bit-packed\n seen = readBitPacked(reader, header, width, output, seen)\n } else {\n // rle\n const count = header >>> 1\n readRle(reader, count, width, output, seen)\n seen += count\n }\n }\n // assert(reader.offset - startOffset === length)\n}\n\n/**\n * Run-length encoding: read value with bitWidth and repeat it count times.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @param {number} bitWidth\n * @param {DecodedArray} output\n * @param {number} seen\n */\nfunction readRle(reader, count, bitWidth, output, seen) {\n const width = bitWidth + 7 >> 3\n let value = 0\n for (let i = 0; i < width; i++) {\n value |= reader.view.getUint8(reader.offset++) << (i << 3)\n }\n // assert(value < 1 << bitWidth)\n\n // repeat value count times\n for (let i = 0; i < count; i++) {\n output[seen + i] = value\n }\n}\n\n/**\n * Read a bit-packed run of the rle/bitpack hybrid.\n * Supports width > 8 (crossing bytes).\n *\n * @param {DataReader} reader\n * @param {number} header - bit-pack header\n * @param {number} bitWidth\n * @param {DecodedArray} output\n * @param {number} seen\n * @returns {number} total output values so far\n */\nfunction readBitPacked(reader, header, bitWidth, output, seen) {\n let count = header >> 1 << 3 // values to read\n const mask = (1 << bitWidth) - 1\n\n let data = 0\n if (reader.offset < reader.view.byteLength) {\n data = reader.view.getUint8(reader.offset++)\n } else if (mask) {\n // sometimes out-of-bounds reads are masked out\n throw new Error(`parquet bitpack offset ${reader.offset} out of range`)\n }\n let left = 8\n let right = 0\n\n // read values\n while (count) {\n // if we have crossed a byte boundary, shift the data\n if (right > 8) {\n right -= 8\n left -= 8\n data >>>= 8\n } else if (left - right < bitWidth) {\n // if we don't have bitWidth number of bits to read, read next byte\n data |= reader.view.getUint8(reader.offset) << left\n reader.offset++\n left += 8\n } else {\n if (seen < output.length) {\n // emit value\n output[seen++] = data >> right & mask\n }\n count--\n right += bitWidth\n }\n }\n\n return seen\n}\n\n/**\n * @typedef {import(\"./types.d.ts\").ParquetType} ParquetType\n * @param {DataReader} reader\n * @param {number} count\n * @param {ParquetType} type\n * @param {number | undefined} typeLength\n * @returns {DecodedArray}\n */\nexport function byteStreamSplit(reader, count, type, typeLength) {\n const width = byteWidth(type, typeLength)\n const bytes = new Uint8Array(count * width)\n for (let b = 0; b < width; b++) {\n for (let i = 0; i < count; i++) {\n bytes[i * width + b] = reader.view.getUint8(reader.offset++)\n }\n }\n // interpret bytes as typed array\n if (type === 'FLOAT') return new Float32Array(bytes.buffer)\n else if (type === 'DOUBLE') return new Float64Array(bytes.buffer)\n else if (type === 'INT32') return new Int32Array(bytes.buffer)\n else if (type === 'INT64') return new BigInt64Array(bytes.buffer)\n else if (type === 'FIXED_LEN_BYTE_ARRAY') {\n // split into arrays of typeLength\n const split = new Array(count)\n for (let i = 0; i < count; i++) {\n split[i] = bytes.subarray(i * width, (i + 1) * width)\n }\n return split\n }\n throw new Error(`parquet byte_stream_split unsupported type: ${type}`)\n}\n\n/**\n * @param {ParquetType} type\n * @param {number | undefined} typeLength\n * @returns {number}\n */\nfunction byteWidth(type, typeLength) {\n switch (type) {\n case 'INT32':\n case 'FLOAT':\n return 4\n case 'INT64':\n case 'DOUBLE':\n return 8\n case 'FIXED_LEN_BYTE_ARRAY':\n if (!typeLength) throw new Error('parquet byteWidth missing type_length')\n return typeLength\n default:\n throw new Error(`parquet unsupported type: ${type}`)\n }\n}\n","/**\n * Read `count` values of the given type from the reader.view.\n *\n * @typedef {import(\"./types.d.ts\").DataReader} DataReader\n * @typedef {import(\"./types.d.ts\").DecodedArray} DecodedArray\n * @typedef {import(\"./types.d.ts\").ParquetType} ParquetType\n * @param {DataReader} reader - buffer to read data from\n * @param {ParquetType} type - parquet type of the data\n * @param {number} count - number of values to read\n * @param {number | undefined} fixedLength - length of each fixed length byte array\n * @returns {DecodedArray} array of values\n */\nexport function readPlain(reader, type, count, fixedLength) {\n if (count === 0) return []\n if (type === 'BOOLEAN') {\n return readPlainBoolean(reader, count)\n } else if (type === 'INT32') {\n return readPlainInt32(reader, count)\n } else if (type === 'INT64') {\n return readPlainInt64(reader, count)\n } else if (type === 'INT96') {\n return readPlainInt96(reader, count)\n } else if (type === 'FLOAT') {\n return readPlainFloat(reader, count)\n } else if (type === 'DOUBLE') {\n return readPlainDouble(reader, count)\n } else if (type === 'BYTE_ARRAY') {\n return readPlainByteArray(reader, count)\n } else if (type === 'FIXED_LEN_BYTE_ARRAY') {\n if (!fixedLength) throw new Error('parquet missing fixed length')\n return readPlainByteArrayFixed(reader, count, fixedLength)\n } else {\n throw new Error(`parquet unhandled type: ${type}`)\n }\n}\n\n/**\n * Read `count` boolean values.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @returns {boolean[]}\n */\nfunction readPlainBoolean(reader, count) {\n const values = new Array(count)\n for (let i = 0; i < count; i++) {\n const byteOffset = reader.offset + (i / 8 | 0)\n const bitOffset = i % 8\n const byte = reader.view.getUint8(byteOffset)\n values[i] = (byte & 1 << bitOffset) !== 0\n }\n reader.offset += Math.ceil(count / 8)\n return values\n}\n\n/**\n * Read `count` int32 values.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @returns {Int32Array}\n */\nfunction readPlainInt32(reader, count) {\n const values = (reader.view.byteOffset + reader.offset) % 4\n ? new Int32Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 4))\n : new Int32Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count)\n reader.offset += count * 4\n return values\n}\n\n/**\n * Read `count` int64 values.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @returns {BigInt64Array}\n */\nfunction readPlainInt64(reader, count) {\n const values = (reader.view.byteOffset + reader.offset) % 8\n ? new BigInt64Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 8))\n : new BigInt64Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count)\n reader.offset += count * 8\n return values\n}\n\n/**\n * Read `count` int96 values.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @returns {bigint[]}\n */\nfunction readPlainInt96(reader, count) {\n const values = new Array(count)\n for (let i = 0; i < count; i++) {\n const low = reader.view.getBigInt64(reader.offset + i * 12, true)\n const high = reader.view.getInt32(reader.offset + i * 12 + 8, true)\n values[i] = BigInt(high) << 64n | low\n }\n reader.offset += count * 12\n return values\n}\n\n/**\n * Read `count` float values.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @returns {Float32Array}\n */\nfunction readPlainFloat(reader, count) {\n const values = (reader.view.byteOffset + reader.offset) % 4\n ? new Float32Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 4))\n : new Float32Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count)\n reader.offset += count * 4\n return values\n}\n\n/**\n * Read `count` double values.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @returns {Float64Array}\n */\nfunction readPlainDouble(reader, count) {\n const values = (reader.view.byteOffset + reader.offset) % 8\n ? new Float64Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 8))\n : new Float64Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count)\n reader.offset += count * 8\n return values\n}\n\n/**\n * Read `count` byte array values.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @returns {Uint8Array[]}\n */\nfunction readPlainByteArray(reader, count) {\n const values = new Array(count)\n for (let i = 0; i < count; i++) {\n const length = reader.view.getInt32(reader.offset, true)\n reader.offset += 4\n values[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, length)\n reader.offset += length\n }\n return values\n}\n\n/**\n * Read a fixed length byte array.\n *\n * @param {DataReader} reader\n * @param {number} count\n * @param {number} fixedLength\n * @returns {Uint8Array[]}\n */\nfunction readPlainByteArrayFixed(reader, count, fixedLength) {\n // assert(reader.view.byteLength - reader.offset >= count * fixedLength)\n const values = new Array(count)\n for (let i = 0; i < count; i++) {\n values[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, fixedLength)\n reader.offset += fixedLength\n }\n return values\n}\n\n/**\n * Create a new buffer with the offset and size.\n *\n * @param {ArrayBuffer} buffer\n * @param {number} offset\n * @param {number} size\n * @returns {ArrayBuffer}\n */\nfunction align(buffer, offset, size) {\n const aligned = new ArrayBuffer(size)\n new Uint8Array(aligned).set(new Uint8Array(buffer, offset, size))\n return aligned\n}\n","/**\n * The MIT License (MIT)\n * Copyright (c) 2016 Zhipeng Jia\n * https://github.com/zhipeng-jia/snappyjs\n */\n\nconst WORD_MASK = [0, 0xff, 0xffff, 0xffffff, 0xffffffff]\n\n/**\n * Copy bytes from one array to another\n *\n * @param {Uint8Array} fromArray source array\n * @param {number} fromPos source position\n * @param {Uint8Array} toArray destination array\n * @param {number} toPos destination position\n * @param {number} length number of bytes to copy\n * @returns {void}\n */\nfunction copyBytes(fromArray, fromPos, toArray, toPos, length) {\n for (let i = 0; i < length; i++) {\n toArray[toPos + i] = fromArray[fromPos + i]\n }\n}\n\n/**\n * Copy bytes within an array\n *\n * @param {Uint8Array} array source and destination array\n * @param {number} pos source position\n * @param {number} offset offset back from current position to read\n * @param {number} length number of bytes to copy\n * @returns {void}\n */\nfunction selfCopyBytes(array, pos, offset, length) {\n for (let i = 0; i < length; i++) {\n array[pos + i] = array[pos - offset + i]\n }\n}\n\n/**\n * Decompress snappy data.\n * Accepts an output buffer to avoid allocating a new buffer for each call.\n *\n * @param {Uint8Array} input compressed data\n * @param {Uint8Array} output output buffer\n * @returns {void}\n */\nexport function snappyUncompress(input, output) {\n const inputLength = input.byteLength\n const outputLength = output.byteLength\n let pos = 0\n let outPos = 0\n\n // skip preamble (contains uncompressed length as varint)\n while (pos < inputLength) {\n const c = input[pos]\n pos++\n if (c < 128) {\n break\n }\n }\n if (outputLength && pos >= inputLength) {\n throw new Error('invalid snappy length header')\n }\n\n while (pos < inputLength) {\n const c = input[pos]\n let len = 0\n pos++\n\n if (pos >= inputLength) {\n throw new Error('missing eof marker')\n }\n\n // There are two types of elements, literals and copies (back references)\n if ((c & 0x3) === 0) {\n // Literals are uncompressed data stored directly in the byte stream\n let len = (c >>> 2) + 1\n // Longer literal length is encoded in multiple bytes\n if (len > 60) {\n if (pos + 3 >= inputLength) {\n throw new Error('snappy error literal pos + 3 >= inputLength')\n }\n const lengthSize = len - 60 // length bytes - 1\n len = input[pos]\n + (input[pos + 1] << 8)\n + (input[pos + 2] << 16)\n + (input[pos + 3] << 24)\n len = (len & WORD_MASK[lengthSize]) + 1\n pos += lengthSize\n }\n if (pos + len > inputLength) {\n throw new Error('snappy error literal exceeds input length')\n }\n copyBytes(input, pos, output, outPos, len)\n pos += len\n outPos += len\n } else {\n // Copy elements\n let offset = 0 // offset back from current position to read\n switch (c & 0x3) {\n case 1:\n // Copy with 1-byte offset\n len = (c >>> 2 & 0x7) + 4\n offset = input[pos] + (c >>> 5 << 8)\n pos++\n break\n case 2:\n // Copy with 2-byte offset\n if (inputLength <= pos + 1) {\n throw new Error('snappy error end of input')\n }\n len = (c >>> 2) + 1\n offset = input[pos] + (input[pos + 1] << 8)\n pos += 2\n break\n case 3:\n // Copy with 4-byte offset\n if (inputLength <= pos + 3) {\n throw new Error('snappy error end of input')\n }\n len = (c >>> 2) + 1\n offset = input[pos]\n + (input[pos + 1] << 8)\n + (input[pos + 2] << 16)\n + (input[pos + 3] << 24)\n pos += 4\n break\n default:\n break\n }\n if (offset === 0 || isNaN(offset)) {\n throw new Error(`invalid offset ${offset} pos ${pos} inputLength ${inputLength}`)\n }\n if (offset > outPos) {\n throw new Error('cannot copy from before start of buffer')\n }\n selfCopyBytes(output, outPos, offset, len)\n outPos += len\n }\n }\n\n if (outPos !== outputLength) throw new Error('premature end of input')\n}\n","import { bitWidth, byteStreamSplit, readRleBitPackedHybrid } from './encoding.js'\nimport { readPlain } from './plain.js'\nimport { getMaxDefinitionLevel, getMaxRepetitionLevel } from './schema.js'\nimport { snappyUncompress } from './snappy.js'\n\n/**\n * Read a data page from uncompressed reader.\n *\n * @typedef {import(\"./types.d.ts\").DataPage} DataPage\n * @typedef {import(\"./types.d.ts\").ColumnMetaData} ColumnMetaData\n * @typedef {import(\"./types.d.ts\").DataPageHeader} DataPageHeader\n * @typedef {import(\"./types.d.ts\").SchemaTree} SchemaTree\n * @typedef {import(\"./types.d.ts\").DecodedArray} DecodedArray\n * @param {Uint8Array} bytes raw page data (should already be decompressed)\n * @param {DataPageHeader} daph data page header\n * @param {SchemaTree[]} schemaPath\n * @param {ColumnMetaData} columnMetadata\n * @returns {DataPage} definition levels, repetition levels, and array of values\n */\nexport function readDataPage(bytes, daph, schemaPath, { type }) {\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n const reader = { view, offset: 0 }\n /** @type {DecodedArray} */\n let dataPage\n\n // repetition and definition levels\n const repetitionLevels = readRepetitionLevels(reader, daph, schemaPath)\n // assert(!repetitionLevels.length || repetitionLevels.length === daph.num_values)\n const { definitionLevels, numNulls } = readDefinitionLevels(reader, daph, schemaPath)\n // assert(!definitionLevels.length || definitionLevels.length === daph.num_values)\n\n // read values based on encoding\n const nValues = daph.num_values - numNulls\n if (daph.encoding === 'PLAIN') {\n const { type_length } = schemaPath[schemaPath.length - 1].element\n dataPage = readPlain(reader, type, nValues, type_length)\n } else if (\n daph.encoding === 'PLAIN_DICTIONARY' ||\n daph.encoding === 'RLE_DICTIONARY' ||\n daph.encoding === 'RLE'\n ) {\n const bitWidth = type === 'BOOLEAN' ? 1 : view.getUint8(reader.offset++)\n if (bitWidth) {\n dataPage = new Array(nValues)\n readRleBitPackedHybrid(reader, bitWidth, view.byteLength - reader.offset, dataPage)\n } else {\n dataPage = new Uint8Array(nValues) // nValue zeroes\n }\n } else if (daph.encoding === 'BYTE_STREAM_SPLIT') {\n const { type_length } = schemaPath[schemaPath.length - 1].element\n dataPage = byteStreamSplit(reader, nValues, type, type_length)\n } else {\n throw new Error(`parquet unsupported encoding: ${daph.encoding}`)\n }\n\n return { definitionLevels, repetitionLevels, dataPage }\n}\n\n/**\n * @param {Uint8Array} bytes raw page data\n * @param {import(\"./types.d.ts\").DictionaryPageHeader} diph dictionary page header\n * @param {ColumnMetaData} columnMetadata\n * @param {number | undefined} typeLength - type_length from schema\n * @returns {DecodedArray}\n */\nexport function readDictionaryPage(bytes, diph, columnMetadata, typeLength) {\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n const reader = { view, offset: 0 }\n return readPlain(reader, columnMetadata.type, diph.num_values, typeLength)\n}\n\n/**\n * @typedef {import(\"./types.d.ts\").DataReader} DataReader\n * @param {DataReader} reader data view for the page\n * @param {DataPageHeader} daph data page header\n * @param {SchemaTree[]} schemaPath\n * @returns {any[]} repetition levels and number of bytes read\n */\nfunction readRepetitionLevels(reader, daph, schemaPath) {\n if (schemaPath.length > 1) {\n const maxRepetitionLevel = getMaxRepetitionLevel(schemaPath)\n if (maxRepetitionLevel) {\n const values = new Array(daph.num_values)\n readRleBitPackedHybrid(reader, bitWidth(maxRepetitionLevel), 0, values)\n return values\n }\n }\n return []\n}\n\n/**\n * @param {DataReader} reader data view for the page\n * @param {DataPageHeader} daph data page header\n * @param {SchemaTree[]} schemaPath\n * @returns {{ definitionLevels: number[], numNulls: number }} definition levels\n */\nfunction readDefinitionLevels(reader, daph, schemaPath) {\n const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath)\n if (!maxDefinitionLevel) return { definitionLevels: [], numNulls: 0 }\n\n const definitionLevels = new Array(daph.num_values)\n readRleBitPackedHybrid(reader, bitWidth(maxDefinitionLevel), 0, definitionLevels)\n\n // count nulls\n let numNulls = daph.num_values\n for (const def of definitionLevels) {\n if (def === maxDefinitionLevel) numNulls--\n }\n if (numNulls === 0) definitionLevels.length = 0\n\n return { definitionLevels, numNulls }\n}\n\n/**\n * @param {Uint8Array} compressedBytes\n * @param {number} uncompressed_page_size\n * @param {import('./types.js').CompressionCodec} codec\n * @param {import('./types.js').Compressors | undefined} compressors\n * @returns {Uint8Array}\n */\nexport function decompressPage(compressedBytes, uncompressed_page_size, codec, compressors) {\n /** @type {Uint8Array} */\n let page\n const customDecompressor = compressors?.[codec]\n if (codec === 'UNCOMPRESSED') {\n page = compressedBytes\n } else if (customDecompressor) {\n page = customDecompressor(compressedBytes, uncompressed_page_size)\n } else if (codec === 'SNAPPY') {\n page = new Uint8Array(uncompressed_page_size)\n snappyUncompress(compressedBytes, page)\n } else {\n throw new Error(`parquet unsupported compression codec: ${codec}`)\n }\n if (page?.length !== uncompressed_page_size) {\n throw new Error(`parquet decompressed page length ${page?.length} does not match header ${uncompressed_page_size}`)\n }\n return page\n}\n","import { readVarInt, readZigZagBigInt } from './thrift.js'\n\n/**\n * @typedef {import('./types.d.ts').DataReader} DataReader\n * @param {DataReader} reader\n * @param {number} count number of values to read\n * @param {Int32Array | BigInt64Array} output\n */\nexport function deltaBinaryUnpack(reader, count, output) {\n const int32 = output instanceof Int32Array\n const blockSize = readVarInt(reader)\n const miniblockPerBlock = readVarInt(reader)\n readVarInt(reader) // assert(=== count)\n let value = readZigZagBigInt(reader) // first value\n let outputIndex = 0\n output[outputIndex++] = int32 ? Number(value) : value\n\n const valuesPerMiniblock = blockSize / miniblockPerBlock\n\n while (outputIndex < count) {\n // new block\n const minDelta = readZigZagBigInt(reader)\n const bitWidths = new Uint8Array(miniblockPerBlock)\n for (let i = 0; i < miniblockPerBlock; i++) {\n bitWidths[i] = reader.view.getUint8(reader.offset++)\n }\n\n for (let i = 0; i < miniblockPerBlock && outputIndex < count; i++) {\n // new miniblock\n const bitWidth = BigInt(bitWidths[i])\n if (bitWidth) {\n let bitpackPos = 0n\n let miniblockCount = valuesPerMiniblock\n const mask = (1n << bitWidth) - 1n\n while (miniblockCount && outputIndex < count) {\n let bits = BigInt(reader.view.getUint8(reader.offset)) >> bitpackPos & mask // TODO: don't re-read value every time\n bitpackPos += bitWidth\n while (bitpackPos >= 8) {\n bitpackPos -= 8n\n reader.offset++\n if (bitpackPos) {\n bits |= BigInt(reader.view.getUint8(reader.offset)) << bitWidth - bitpackPos & mask\n }\n }\n const delta = minDelta + bits\n value += delta\n output[outputIndex++] = int32 ? Number(value) : value\n miniblockCount--\n }\n if (miniblockCount) {\n // consume leftover miniblock\n reader.offset += Math.ceil((miniblockCount * Number(bitWidth) + Number(bitpackPos)) / 8)\n }\n } else {\n for (let j = 0; j < valuesPerMiniblock && outputIndex < count; j++) {\n value += minDelta\n output[outputIndex++] = int32 ? Number(value) : value\n }\n }\n }\n }\n}\n\n/**\n * @param {DataReader} reader\n * @param {number} count\n * @param {Uint8Array[]} output\n */\nexport function deltaLengthByteArray(reader, count, output) {\n const lengths = new Int32Array(count)\n deltaBinaryUnpack(reader, count, lengths)\n for (let i = 0; i < count; i++) {\n output[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, lengths[i])\n reader.offset += lengths[i]\n }\n}\n\n/**\n * @param {DataReader} reader\n * @param {number} count\n * @param {Uint8Array[]} output\n */\nexport function deltaByteArray(reader, count, output) {\n const prefixData = new Int32Array(count)\n deltaBinaryUnpack(reader, count, prefixData)\n const suffixData = new Int32Array(count)\n deltaBinaryUnpack(reader, count, suffixData)\n\n for (let i = 0; i < count; i++) {\n const suffix = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, suffixData[i])\n if (prefixData[i]) {\n // copy from previous value\n output[i] = new Uint8Array(prefixData[i] + suffixData[i])\n output[i].set(output[i - 1].subarray(0, prefixData[i]))\n output[i].set(suffix, prefixData[i])\n } else {\n output[i] = suffix\n }\n reader.offset += suffixData[i]\n }\n}\n","import { decompressPage } from './datapage.js'\nimport { deltaBinaryUnpack, deltaByteArray, deltaLengthByteArray } from './delta.js'\nimport { bitWidth, byteStreamSplit, readRleBitPackedHybrid } from './encoding.js'\nimport { readPlain } from './plain.js'\nimport { getMaxDefinitionLevel, getMaxRepetitionLevel } from './schema.js'\n\n/**\n * Read a data page from the given Uint8Array.\n *\n * @typedef {import(\"./types.d.ts\").DataPage} DataPage\n * @typedef {import(\"./types.d.ts\").ColumnMetaData} ColumnMetaData\n * @typedef {import(\"./types.d.ts\").Compressors} Compressors\n * @typedef {import(\"./types.d.ts\").DataPageHeaderV2} DataPageHeaderV2\n * @typedef {import(\"./types.d.ts\").SchemaTree} SchemaTree\n * @param {Uint8Array} compressedBytes raw page data\n * @param {import(\"./types.d.ts\").PageHeader} ph page header\n * @param {SchemaTree[]} schemaPath\n * @param {ColumnMetaData} columnMetadata\n * @param {Compressors | undefined} compressors\n * @returns {DataPage} definition levels, repetition levels, and array of values\n */\nexport function readDataPageV2(compressedBytes, ph, schemaPath, columnMetadata, compressors) {\n const view = new DataView(compressedBytes.buffer, compressedBytes.byteOffset, compressedBytes.byteLength)\n const reader = { view, offset: 0 }\n const { codec, type } = columnMetadata\n const daph2 = ph.data_page_header_v2\n if (!daph2) throw new Error('parquet data page header v2 is undefined')\n\n // repetition levels\n const repetitionLevels = readRepetitionLevelsV2(reader, daph2, schemaPath)\n reader.offset = daph2.repetition_levels_byte_length // readVarInt() => len for boolean v2?\n\n // definition levels\n const definitionLevels = readDefinitionLevelsV2(reader, daph2, schemaPath)\n // assert(reader.offset === daph2.repetition_levels_byte_length + daph2.definition_levels_byte_length)\n\n const uncompressedPageSize = ph.uncompressed_page_size - daph2.definition_levels_byte_length - daph2.repetition_levels_byte_length\n\n let page = compressedBytes.subarray(reader.offset)\n if (daph2.is_compressed !== false) {\n page = decompressPage(page, uncompressedPageSize, codec, compressors)\n }\n const pageView = new DataView(page.buffer, page.byteOffset, page.byteLength)\n const pageReader = { view: pageView, offset: 0 }\n\n // read values based on encoding\n /** @type {import('./types.d.ts').DecodedArray} */\n let dataPage\n const nValues = daph2.num_values - daph2.num_nulls\n if (daph2.encoding === 'PLAIN') {\n const { type_length } = schemaPath[schemaPath.length - 1].element\n dataPage = readPlain(pageReader, type, nValues, type_length)\n } else if (daph2.encoding === 'RLE') {\n // assert(columnMetadata.type === 'BOOLEAN')\n dataPage = new Array(nValues)\n readRleBitPackedHybrid(pageReader, 1, 0, dataPage)\n dataPage = dataPage.map(x => !!x)\n } else if (\n daph2.encoding === 'PLAIN_DICTIONARY' ||\n daph2.encoding === 'RLE_DICTIONARY'\n ) {\n const bitWidth = pageView.getUint8(pageReader.offset++)\n dataPage = new Array(nValues)\n readRleBitPackedHybrid(pageReader, bitWidth, uncompressedPageSize - 1, dataPage)\n } else if (daph2.encoding === 'DELTA_BINARY_PACKED') {\n const int32 = type === 'INT32'\n dataPage = int32 ? new Int32Array(nValues) : new BigInt64Array(nValues)\n deltaBinaryUnpack(pageReader, nValues, dataPage)\n } else if (daph2.encoding === 'DELTA_LENGTH_BYTE_ARRAY') {\n dataPage = new Array(nValues)\n deltaLengthByteArray(pageReader, nValues, dataPage)\n } else if (daph2.encoding === 'DELTA_BYTE_ARRAY') {\n dataPage = new Array(nValues)\n deltaByteArray(pageReader, nValues, dataPage)\n } else if (daph2.encoding === 'BYTE_STREAM_SPLIT') {\n const { type_length } = schemaPath[schemaPath.length - 1].element\n dataPage = byteStreamSplit(reader, nValues, type, type_length)\n } else {\n throw new Error(`parquet unsupported encoding: ${daph2.encoding}`)\n }\n\n return { definitionLevels, repetitionLevels, dataPage }\n}\n\n/**\n * @typedef {import(\"./types.d.ts\").DataReader} DataReader\n * @param {DataReader} reader\n * @param {DataPageHeaderV2} daph2 data page header v2\n * @param {SchemaTree[]} schemaPath\n * @returns {any[]} repetition levels\n */\nexport function readRepetitionLevelsV2(reader, daph2, schemaPath) {\n const maxRepetitionLevel = getMaxRepetitionLevel(schemaPath)\n if (!maxRepetitionLevel) return []\n\n const values = new Array(daph2.num_values)\n readRleBitPackedHybrid(\n reader, bitWidth(maxRepetitionLevel), daph2.repetition_levels_byte_length, values\n )\n return values\n}\n\n/**\n * @param {DataReader} reader\n * @param {DataPageHeaderV2} daph2 data page header v2\n * @param {SchemaTree[]} schemaPath\n * @returns {number[] | undefined} definition levels\n */\nfunction readDefinitionLevelsV2(reader, daph2, schemaPath) {\n const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath)\n if (maxDefinitionLevel) {\n // V2 we know the length\n const values = new Array(daph2.num_values)\n readRleBitPackedHybrid(reader, bitWidth(maxDefinitionLevel), daph2.definition_levels_byte_length, values)\n return values\n }\n}\n","import { Encoding, PageType } from './constants.js'\nimport { deserializeTCompactProtocol } from './thrift.js'\n\n/**\n * Read parquet header from a buffer.\n *\n * @typedef {import(\"./types.d.ts\").DataReader} DataReader\n * @typedef {import(\"./types.d.ts\").PageHeader} PageHeader\n * @param {DataReader} reader - parquet file reader\n * @returns {PageHeader} metadata object and bytes read\n */\nexport function parquetHeader(reader) {\n const header = deserializeTCompactProtocol(reader)\n\n // Parse parquet header from thrift data\n const type = PageType[header.field_1]\n const uncompressed_page_size = header.field_2\n const compressed_page_size = header.field_3\n const crc = header.field_4\n const data_page_header = header.field_5 && {\n num_values: header.field_5.field_1,\n encoding: Encoding[header.field_5.field_2],\n definition_level_encoding: Encoding[header.field_5.field_3],\n repetition_level_encoding: Encoding[header.field_5.field_4],\n statistics: header.field_5.field_5 && {\n max: header.field_5.field_5.field_1,\n min: header.field_5.field_5.field_2,\n null_count: header.field_5.field_5.field_3,\n distinct_count: header.field_5.field_5.field_4,\n max_value: header.field_5.field_5.field_5,\n min_value: header.field_5.field_5.field_6,\n },\n }\n const index_page_header = header.field_6\n const dictionary_page_header = header.field_7 && {\n num_values: header.field_7.field_1,\n encoding: Encoding[header.field_7.field_2],\n is_sorted: header.field_7.field_3,\n }\n const data_page_header_v2 = header.field_8 && {\n num_values: header.field_8.field_1,\n num_nulls: header.field_8.field_2,\n num_rows: header.field_8.field_3,\n encoding: Encoding[header.field_8.field_4],\n definition_levels_byte_length: header.field_8.field_5,\n repetition_levels_byte_length: header.field_8.field_6,\n is_compressed: header.field_8.field_7 === undefined ? true : header.field_8.field_7, // default true\n statistics: header.field_8.field_8,\n }\n\n return {\n type,\n uncompressed_page_size,\n compressed_page_size,\n crc,\n data_page_header,\n index_page_header,\n dictionary_page_header,\n data_page_header_v2,\n }\n}\n","/**\n * Replace bigint, date, etc with legal JSON types.\n *\n * @param {any} obj object to convert\n * @returns {unknown} converted object\n */\nexport function toJson(obj) {\n if (obj === undefined) return null\n if (typeof obj === 'bigint') return Number(obj)\n if (Array.isArray(obj)) return obj.map(toJson)\n if (obj instanceof Uint8Array) return Array.from(obj)\n if (obj instanceof Date) return obj.toISOString()\n if (obj instanceof Object) {\n /** @type {Record} */\n const newObj = {}\n for (const key of Object.keys(obj)) {\n if (obj[key] === undefined) continue\n newObj[key] = toJson(obj[key])\n }\n return newObj\n }\n return obj\n}\n\n/**\n * Concatenate two arrays fast.\n *\n * @typedef {import('./types.js').DecodedArray} DecodedArray\n * @param {any[]} aaa first array\n * @param {DecodedArray} bbb second array\n */\nexport function concat(aaa, bbb) {\n const chunk = 10000\n for (let i = 0; i < bbb.length; i += chunk) {\n aaa.push(...bbb.slice(i, i + chunk))\n }\n}\n\n/**\n * Get the byte length of a URL using a HEAD request.\n *\n * @param {string} url\n * @param {RequestInit} [requestInit] fetch options\n * @returns {Promise}\n */\nexport async function byteLengthFromUrl(url, requestInit) {\n return await fetch(url, { ...requestInit, method: 'HEAD' })\n .then(res => {\n if (!res.ok) throw new Error(`fetch head failed ${res.status}`)\n const length = res.headers.get('Content-Length')\n if (!length) throw new Error('missing content length')\n return parseInt(length)\n })\n}\n\n/**\n * Construct an AsyncBuffer for a URL.\n *\n * @typedef {import('./types.js').AsyncBuffer} AsyncBuffer\n * @param {object} options\n * @param {string} options.url\n * @param {number} [options.byteLength]\n * @param {RequestInit} [options.requestInit]\n * @returns {Promise}\n */\nexport async function asyncBufferFromUrl({ url, byteLength, requestInit }) {\n // byte length from HEAD request\n byteLength ||= await byteLengthFromUrl(url, requestInit)\n const init = requestInit || {}\n return {\n byteLength,\n async slice(start, end) {\n // fetch byte range from url\n const headers = new Headers(init.headers)\n const endStr = end === undefined ? '' : end - 1\n headers.set('Range', `bytes=${start}-${endStr}`)\n const res = await fetch(url, { ...init, headers })\n if (!res.ok || !res.body) throw new Error(`fetch failed ${res.status}`)\n return res.arrayBuffer()\n },\n }\n}\n\n/**\n * Construct an AsyncBuffer for a local file using node fs package.\n *\n * @param {string} filename\n * @returns {Promise}\n */\nexport async function asyncBufferFromFile(filename) {\n const fsPackage = 'fs' // webpack no include\n const fs = await import(fsPackage)\n const stat = await fs.promises.stat(filename)\n return {\n byteLength: stat.size,\n async slice(start, end) {\n // read file slice\n const readStream = fs.createReadStream(filename, { start, end })\n return await readStreamToArrayBuffer(readStream)\n },\n }\n}\n\n/**\n * Convert a node ReadStream to ArrayBuffer.\n *\n * @param {import('stream').Readable} input\n * @returns {Promise}\n */\nfunction readStreamToArrayBuffer(input) {\n return new Promise((resolve, reject) => {\n /** @type {Buffer[]} */\n const chunks = []\n input.on('data', chunk => chunks.push(chunk))\n input.on('end', () => {\n const buffer = Buffer.concat(chunks)\n resolve(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength))\n })\n input.on('error', reject)\n })\n}\n","import { assembleLists } from './assemble.js'\nimport { convertWithDictionary } from './convert.js'\nimport { decompressPage, readDataPage, readDictionaryPage } from './datapage.js'\nimport { readDataPageV2 } from './datapageV2.js'\nimport { parquetHeader } from './header.js'\nimport { getMaxDefinitionLevel } from './schema.js'\nimport { concat } from './utils.js'\n\n/**\n * Parse column data from a buffer.\n *\n * @typedef {import('./types.js').ColumnMetaData} ColumnMetaData\n * @typedef {import('./types.js').DecodedArray} DecodedArray\n * @param {import('./types.js').DataReader} reader\n * @param {number} rowLimit maximum number of rows to read\n * @param {ColumnMetaData} columnMetadata column metadata\n * @param {import('./types.js').SchemaTree[]} schemaPath schema path for the column\n * @param {import('./hyparquet.js').ParquetReadOptions} options read options\n * @returns {any[]} array of values\n */\nexport function readColumn(reader, rowLimit, columnMetadata, schemaPath, { compressors, utf8 }) {\n const { element } = schemaPath[schemaPath.length - 1]\n /** @type {DecodedArray | undefined} */\n let dictionary = undefined\n /** @type {any[]} */\n const rowData = []\n\n while (rowData.length < rowLimit) {\n // parse column header\n const header = parquetHeader(reader)\n // assert(header.compressed_page_size !== undefined)\n\n // read compressed_page_size bytes starting at offset\n const compressedBytes = new Uint8Array(\n reader.view.buffer, reader.view.byteOffset + reader.offset, header.compressed_page_size\n )\n\n // parse page data by type\n /** @type {DecodedArray} */\n let values\n if (header.type === 'DATA_PAGE') {\n const daph = header.data_page_header\n if (!daph) throw new Error('parquet data page header is undefined')\n\n const page = decompressPage(compressedBytes, Number(header.uncompressed_page_size), columnMetadata.codec, compressors)\n const { definitionLevels, repetitionLevels, dataPage } = readDataPage(page, daph, schemaPath, columnMetadata)\n // assert(!daph.statistics?.null_count || daph.statistics.null_count === BigInt(daph.num_values - dataPage.length))\n\n // convert types, dereference dictionary, and assemble lists\n values = convertWithDictionary(dataPage, dictionary, element, daph.encoding, utf8)\n if (repetitionLevels.length || definitionLevels?.length) {\n const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath)\n const repetitionPath = schemaPath.map(({ element }) => element.repetition_type)\n assembleLists(\n rowData, definitionLevels, repetitionLevels, values, repetitionPath, maxDefinitionLevel\n )\n } else {\n // wrap nested flat data by depth\n for (let i = 2; i < schemaPath.length; i++) {\n if (schemaPath[i].element.repetition_type !== 'REQUIRED') {\n values = Array.from(values, e => [e])\n }\n }\n concat(rowData, values)\n }\n } else if (header.type === 'DATA_PAGE_V2') {\n const daph2 = header.data_page_header_v2\n if (!daph2) throw new Error('parquet data page header v2 is undefined')\n\n const { definitionLevels, repetitionLevels, dataPage } = readDataPageV2(\n compressedBytes, header, schemaPath, columnMetadata, compressors\n )\n\n // convert types, dereference dictionary, and assemble lists\n values = convertWithDictionary(dataPage, dictionary, element, daph2.encoding, utf8)\n if (repetitionLevels.length || definitionLevels?.length) {\n const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath)\n const repetitionPath = schemaPath.map(({ element }) => element.repetition_type)\n assembleLists(\n rowData, definitionLevels, repetitionLevels, values, repetitionPath, maxDefinitionLevel\n )\n } else {\n concat(rowData, values)\n }\n } else if (header.type === 'DICTIONARY_PAGE') {\n const diph = header.dictionary_page_header\n if (!diph) throw new Error('parquet dictionary page header is undefined')\n\n const page = decompressPage(\n compressedBytes, Number(header.uncompressed_page_size), columnMetadata.codec, compressors\n )\n dictionary = readDictionaryPage(page, diph, columnMetadata, element.type_length)\n } else {\n throw new Error(`parquet unsupported page type: ${header.type}`)\n }\n reader.offset += header.compressed_page_size\n }\n if (rowData.length < rowLimit) {\n throw new Error(`parquet row data length ${rowData.length} does not match row group limit ${rowLimit}}`)\n }\n if (rowData.length > rowLimit) {\n rowData.length = rowLimit // truncate to row limit\n }\n return rowData\n}\n\n/**\n * Find the start byte offset for a column chunk.\n *\n * @param {ColumnMetaData} columnMetadata\n * @returns {[bigint, bigint]} byte offset range\n */\nexport function getColumnRange({ dictionary_page_offset, data_page_offset, total_compressed_size }) {\n let columnOffset = dictionary_page_offset\n if (!columnOffset || data_page_offset < columnOffset) {\n columnOffset = data_page_offset\n }\n return [columnOffset, columnOffset + total_compressed_size]\n}\n","import { assembleNested } from './assemble.js'\nimport { getColumnRange, readColumn } from './column.js'\nimport { parquetMetadataAsync } from './metadata.js'\nimport { getSchemaPath } from './schema.js'\nimport { concat } from './utils.js'\n\n/**\n * Read parquet data rows from a file-like object.\n * Reads the minimal number of row groups and columns to satisfy the request.\n *\n * Returns a void promise when complete, and to throw errors.\n * Data is returned in onComplete, not the return promise, because\n * if onComplete is undefined, we parse the data, and emit chunks, but skip\n * computing the row view directly. This saves on allocation if the caller\n * wants to cache the full chunks, and make their own view of the data from\n * the chunks.\n *\n * @typedef {import('./hyparquet.js').ColumnData} ColumnData\n * @typedef {import('./types.js').Compressors} Compressors\n * @typedef {import('./types.js').AsyncBuffer} AsyncBuffer\n * @typedef {import('./types.js').FileMetaData} FileMetaData\n * @param {object} options read options\n * @param {AsyncBuffer} options.file file-like object containing parquet data\n * @param {FileMetaData} [options.metadata] parquet file metadata\n * @param {string[]} [options.columns] columns to read, all columns if undefined\n * @param {string} [options.rowFormat] format of each row passed to the onComplete function\n * @param {number} [options.rowStart] first requested row index (inclusive)\n * @param {number} [options.rowEnd] last requested row index (exclusive)\n * @param {(chunk: ColumnData) => void} [options.onChunk] called when a column chunk is parsed. chunks may include row data outside the requested range.\n * @param {(rows: any[][]) => void} [options.onComplete] called when all requested rows and columns are parsed\n * @param {Compressors} [options.compressors] custom decompressors\n * @returns {Promise} resolves when all requested rows and columns are parsed\n */\nexport async function parquetRead(options) {\n if (!options.file) throw new Error('parquet file is required')\n\n // load metadata if not provided\n options.metadata ||= await parquetMetadataAsync(options.file)\n if (!options.metadata) throw new Error('parquet metadata not found')\n\n const { metadata, onComplete, rowEnd } = options\n const rowStart = options.rowStart || 0\n /** @type {any[][]} */\n const rowData = []\n\n // find which row groups to read\n let groupStart = 0 // first row index of the current group\n for (const rowGroup of metadata.row_groups) {\n // number of rows in this row group\n const groupRows = Number(rowGroup.num_rows)\n // if row group overlaps with row range, read it\n if (groupStart + groupRows >= rowStart && (rowEnd === undefined || groupStart < rowEnd)) {\n // read row group\n const rowLimit = rowEnd && rowEnd - groupStart\n const groupData = await readRowGroup(options, rowGroup, groupStart, rowLimit)\n if (onComplete) {\n // filter to rows in range\n const start = Math.max(rowStart - groupStart, 0)\n const end = rowEnd === undefined ? undefined : rowEnd - groupStart\n concat(rowData, groupData.slice(start, end))\n }\n }\n groupStart += groupRows\n }\n\n if (onComplete) onComplete(rowData)\n}\n\n/**\n * Read a row group from a file-like object.\n *\n * @typedef {import('./types.js').RowGroup} RowGroup\n * @param {object} options read options\n * @param {AsyncBuffer} options.file file-like object containing parquet data\n * @param {FileMetaData} [options.metadata] parquet file metadata\n * @param {string[]} [options.columns] columns to read, all columns if undefined\n * @param {string} [options.rowFormat] format of each row passed to the onComplete function\n * @param {(chunk: ColumnData) => void} [options.onChunk] called when a column chunk is parsed. chunks may include row data outside the requested range.\n * @param {(rows: any[][]) => void} [options.onComplete] called when all requested rows and columns are parsed\n * @param {Compressors} [options.compressors]\n * @param {RowGroup} rowGroup row group to read\n * @param {number} groupStart row index of the first row in the group\n * @param {number} [rowLimit] max rows to read from this group\n * @returns {Promise} resolves to row data\n */\nexport async function readRowGroup(options, rowGroup, groupStart, rowLimit) {\n const { file, metadata, columns } = options\n if (!metadata) throw new Error('parquet metadata not found')\n if (rowLimit === undefined || rowLimit > rowGroup.num_rows) rowLimit = Number(rowGroup.num_rows)\n\n // loop through metadata to find min/max bytes to read\n let [groupStartByte, groupEndByte] = [file.byteLength, 0]\n rowGroup.columns.forEach(({ meta_data: columnMetadata }) => {\n if (!columnMetadata) throw new Error('parquet column metadata is undefined')\n // skip columns that are not requested\n if (columns && !columns.includes(columnMetadata.path_in_schema[0])) return\n\n const [columnStartByte, columnEndByte] = getColumnRange(columnMetadata).map(Number)\n groupStartByte = Math.min(groupStartByte, columnStartByte)\n groupEndByte = Math.max(groupEndByte, columnEndByte)\n })\n if (groupStartByte >= groupEndByte && columns?.length) {\n // TODO: should throw if any column is missing\n throw new Error(`parquet columns not found: ${columns.join(', ')}`)\n }\n // if row group size is less than 32mb, pre-load in one read\n let groupBuffer\n if (groupEndByte - groupStartByte <= 1 << 25) {\n // pre-load row group byte data in one big read,\n // otherwise read column data individually\n groupBuffer = await file.slice(groupStartByte, groupEndByte)\n }\n\n const promises = []\n // Top-level columns to assemble\n const { children } = getSchemaPath(metadata.schema, [])[0]\n const subcolumnNames = new Map(children.map(child => [child.element.name, getSubcolumns(child)]))\n const subcolumnData = new Map() // columns to assemble as maps\n // read column data\n for (let columnIndex = 0; columnIndex < rowGroup.columns.length; columnIndex++) {\n const columnMetadata = rowGroup.columns[columnIndex].meta_data\n if (!columnMetadata) throw new Error('parquet column metadata is undefined')\n\n // skip columns that are not requested\n const columnName = columnMetadata.path_in_schema[0]\n if (columns && !columns.includes(columnName)) continue\n\n const [columnStartByte, columnEndByte] = getColumnRange(columnMetadata).map(Number)\n const columnBytes = columnEndByte - columnStartByte\n\n // skip columns larger than 1gb\n // TODO: stream process the data, returning only the requested rows\n if (columnBytes > 1 << 30) {\n console.warn(`parquet skipping huge column \"${columnMetadata.path_in_schema}\" ${columnBytes.toLocaleString()} bytes`)\n // TODO: set column to new Error('parquet column too large')\n continue\n }\n\n // use pre-loaded row group byte data if available, else read column data\n /** @type {Promise} */\n let buffer\n let bufferOffset = 0\n if (groupBuffer) {\n buffer = Promise.resolve(groupBuffer)\n bufferOffset = columnStartByte - groupStartByte\n } else {\n // wrap awaitable to ensure it's a promise\n buffer = Promise.resolve(file.slice(columnStartByte, columnEndByte))\n }\n\n // read column data async\n promises.push(buffer.then(arrayBuffer => {\n const schemaPath = getSchemaPath(metadata.schema, columnMetadata.path_in_schema)\n const reader = { view: new DataView(arrayBuffer), offset: bufferOffset }\n /** @type {any[] | undefined} */\n let columnData = readColumn(reader, rowLimit, columnMetadata, schemaPath, options)\n // assert(columnData.length === Number(rowGroup.num_rows)\n\n // TODO: fast path for non-nested columns\n // Save column data for assembly\n const subcolumn = columnMetadata.path_in_schema.join('.')\n subcolumnData.set(subcolumn, columnData)\n columnData = undefined\n\n const subcolumns = subcolumnNames.get(columnName)\n if (subcolumns?.every(name => subcolumnData.has(name))) {\n // We have all data needed to assemble a top level column\n assembleNested(subcolumnData, schemaPath[1])\n columnData = subcolumnData.get(columnName)\n if (!columnData) {\n throw new Error(`parquet column data not assembled: ${columnName}`)\n }\n }\n\n // do not emit column data until structs are fully parsed\n if (!columnData) return\n // notify caller of column data\n options.onChunk?.({\n columnName,\n columnData,\n rowStart: groupStart,\n rowEnd: groupStart + columnData.length,\n })\n }))\n }\n await Promise.all(promises)\n if (options.onComplete) {\n // transpose columns into rows\n const groupData = new Array(rowLimit)\n const includedColumnNames = children\n .map(child => child.element.name)\n .filter(name => !columns || columns.includes(name))\n const columnOrder = columns || includedColumnNames\n const includedColumns = columnOrder\n .map(name => includedColumnNames.includes(name) ? subcolumnData.get(name) : undefined)\n\n for (let row = 0; row < rowLimit; row++) {\n if (options.rowFormat === 'object') {\n // return each row as an object\n /** @type {Record} */\n const rowData = {}\n columnOrder.forEach((name, index) => {\n rowData[name] = includedColumns[index]?.[row]\n })\n groupData[row] = rowData\n } else {\n // return each row as an array\n groupData[row] = includedColumns.map(column => column?.[row])\n }\n }\n return groupData\n }\n return []\n}\n\n\n/**\n * Return a list of sub-columns needed to construct a top-level column.\n *\n * @param {import('./types.js').SchemaTree} schema\n * @param {string[]} output\n * @returns {string[]}\n */\nfunction getSubcolumns(schema, output = []) {\n if (schema.children.length) {\n for (const child of schema.children) {\n getSubcolumns(child, output)\n }\n } else {\n output.push(schema.path.join('.'))\n }\n return output\n}\n","\n/**\n * Returns a cached layer on top of an AsyncBuffer. For caching slices of a file\n * that are read multiple times, possibly over a network.\n *\n * @typedef {import('./types.js').AsyncBuffer} AsyncBuffer\n * @param {AsyncBuffer} file file-like object to cache\n * @returns {AsyncBuffer} cached file-like object\n */\nexport function cachedAsyncBuffer({ byteLength, slice }) {\n const cache = new Map()\n return {\n byteLength,\n /**\n * @param {number} start\n * @param {number} [end]\n * @returns {import('./types.js').Awaitable}\n */\n slice(start, end) {\n const key = cacheKey(start, end, byteLength)\n const cached = cache.get(key)\n if (cached) return cached\n // cache miss, read from file\n const promise = slice(start, end)\n cache.set(key, promise)\n return promise\n },\n }\n}\n\n\n/**\n * Returns canonical cache key for a byte range 'start,end'.\n * Normalize int-range and suffix-range requests to the same key.\n *\n * @param {number} start start byte of range\n * @param {number} [end] end byte of range, or undefined for suffix range\n * @param {number} [size] size of file, or undefined for suffix range\n * @returns {string}\n */\nfunction cacheKey(start, end, size) {\n if (start < 0) {\n if (end !== undefined) throw new Error(`invalid suffix range [${start}, ${end}]`)\n if (size === undefined) return `${start},`\n return `${size + start},${size}`\n } else if (end !== undefined) {\n if (start > end) throw new Error(`invalid empty range [${start}, ${end}]`)\n return `${start},${end}`\n } else if (size === undefined) {\n return `${start},`\n } else {\n return `${start},${size}`\n }\n}\n","export { parquetMetadata, parquetMetadataAsync, parquetSchema } from './metadata.js'\n\nimport { parquetRead } from './read.js'\nexport { parquetRead }\n\nexport { parquetQuery } from './query.js'\n\nexport { snappyUncompress } from './snappy.js'\n\nexport { asyncBufferFromFile, asyncBufferFromUrl, byteLengthFromUrl, toJson } from './utils.js'\n\nexport { cachedAsyncBuffer } from './asyncBuffer.js'\n\n/**\n * @param {import('./hyparquet.js').ParquetReadOptions} options\n * @returns {Promise>>}\n */\nexport function parquetReadObjects(options) {\n return new Promise((onComplete, reject) => {\n parquetRead({\n rowFormat: 'object',\n ...options,\n onComplete,\n }).catch(reject)\n })\n}\n","import { parquetReadObjects } from './hyparquet.js'\nimport { parquetMetadataAsync } from './metadata.js'\n\n/**\n * Wraps parquetRead with orderBy support.\n * This is a parquet-aware query engine that can read a subset of rows,\n * with an optional orderBy clause.\n *\n * @typedef {import('./hyparquet.js').ParquetReadOptions} ParquetReadOptions\n * @param {ParquetReadOptions & { orderBy?: string }} options\n * @returns {Promise[]>}\n */\nexport async function parquetQuery(options) {\n const { file, rowStart, rowEnd, orderBy } = options\n options.metadata ||= await parquetMetadataAsync(file)\n\n // TODO: Faster path for: no orderBy, no rowStart/rowEnd, one row group\n\n if (typeof orderBy === 'string') {\n // Fetch orderBy column first\n const orderColumn = await parquetReadObjects({ ...options, rowStart: undefined, rowEnd: undefined, columns: [orderBy] })\n\n // Compute row groups to fetch\n const sortedIndices = Array.from(orderColumn, (_, index) => index)\n .sort((a, b) => compare(orderColumn[a][orderBy], orderColumn[b][orderBy]))\n .slice(rowStart, rowEnd)\n\n const sparseData = await parquetReadRows({ ...options, rows: sortedIndices })\n const data = sortedIndices.map(index => sparseData[index])\n return data\n } else {\n return await parquetReadObjects(options)\n }\n}\n\n/**\n * Reads a list rows from a parquet file, reading only the row groups that contain the rows.\n * Returns a sparse array of rows.\n * @param {ParquetReadOptions & { rows: number[] }} options\n * @returns {Promise[]>}\n */\nasync function parquetReadRows(options) {\n const { file, rows } = options\n options.metadata ||= await parquetMetadataAsync(file)\n const { row_groups: rowGroups } = options.metadata\n // Compute row groups to fetch\n const groupIncluded = Array(rowGroups.length).fill(false)\n let groupStart = 0\n const groupEnds = rowGroups.map(group => groupStart += Number(group.num_rows))\n for (const index of rows) {\n const groupIndex = groupEnds.findIndex(end => index < end)\n groupIncluded[groupIndex] = true\n }\n\n // Compute row ranges to fetch\n const rowRanges = []\n let rangeStart\n groupStart = 0\n for (let i = 0; i < groupIncluded.length; i++) {\n const groupEnd = groupStart + Number(rowGroups[i].num_rows)\n if (groupIncluded[i]) {\n if (rangeStart === undefined) {\n rangeStart = groupStart\n }\n } else {\n if (rangeStart !== undefined) {\n rowRanges.push([rangeStart, groupEnd])\n rangeStart = undefined\n }\n }\n groupStart = groupEnd\n }\n if (rangeStart !== undefined) {\n rowRanges.push([rangeStart, groupStart])\n }\n\n // Fetch by row group and map to rows\n const sparseData = new Array(Number(options.metadata.num_rows))\n for (const [rangeStart, rangeEnd] of rowRanges) {\n // TODO: fetch in parallel\n const groupData = await parquetReadObjects({ ...options, rowStart: rangeStart, rowEnd: rangeEnd })\n for (let i = rangeStart; i < rangeEnd; i++) {\n sparseData[i] = groupData[i - rangeStart]\n sparseData[i].__index__ = i\n }\n }\n return sparseData\n}\n\n/**\n * @param {any} a\n * @param {any} b\n * @returns {number}\n */\nfunction compare(a, b) {\n if (a < b) return -1\n if (a > b) return 1\n return 1 // TODO: how to handle nulls?\n}\n","import { cachedAsyncBuffer } from '../../src/asyncBuffer.js'\nimport type { AsyncBuffer, ParquetReadOptions } from '../../src/hyparquet.js'\nimport { asyncBufferFromUrl } from '../../src/utils.js'\n\n// Serializable constructors for AsyncBuffers\ninterface AsyncBufferFromFile {\n file: File\n byteLength: number\n}\ninterface AsyncBufferFromUrl {\n url: string\n byteLength: number\n}\nexport type AsyncBufferFrom = AsyncBufferFromFile | AsyncBufferFromUrl\n\n// Same as ParquetReadOptions, but AsyncBufferFrom instead of AsyncBuffer\ninterface ParquetReadWorkerOptions extends Omit {\n from: AsyncBufferFrom\n orderBy?: string\n}\n\nlet worker: Worker | undefined\nlet nextQueryId = 0\ninterface QueryAgent {\n resolve: (value: any) => void\n reject: (error: any) => void\n onChunk?: (chunk: any) => void\n}\nconst pending = new Map()\n\nfunction getWorker() {\n if (!worker) {\n worker = new Worker(new URL('demo/workers/worker.min.js', import.meta.url))\n worker.onmessage = ({ data }) => {\n const { resolve, reject, onChunk } = pending.get(data.queryId)!\n if (data.error) {\n reject(data.error)\n } else if (data.result) {\n resolve(data.result)\n } else if (data.chunk) {\n onChunk?.(data.chunk)\n } else {\n reject(new Error('Unexpected message from worker'))\n }\n }\n }\n return worker\n}\n\n/**\n * Presents almost the same interface as parquetRead, but runs in a worker.\n * This is useful for reading large parquet files without blocking the main thread.\n * Instead of taking an AsyncBuffer, it takes a AsyncBufferFrom, because it needs\n * to be serialized to the worker.\n */\nexport function parquetQueryWorker(\n { metadata, from, rowStart, rowEnd, orderBy, onChunk }: ParquetReadWorkerOptions\n): Promise[]> {\n return new Promise((resolve, reject) => {\n const queryId = nextQueryId++\n pending.set(queryId, { resolve, reject, onChunk })\n const worker = getWorker()\n\n // If caller provided an onChunk callback, worker will send chunks as they are parsed\n const chunks = onChunk !== undefined\n worker.postMessage({\n queryId, metadata, from, rowStart, rowEnd, orderBy, chunks,\n })\n })\n}\n\n/**\n * Convert AsyncBufferFrom to AsyncBuffer.\n */\nexport async function asyncBufferFrom(from: AsyncBufferFrom): Promise {\n if ('url' in from) {\n // Cached asyncBuffer for urls only\n const key = JSON.stringify(from)\n const cached = cache.get(key)\n if (cached) return cached\n const asyncBuffer = asyncBufferFromUrl(from).then(cachedAsyncBuffer)\n cache.set(key, asyncBuffer)\n return asyncBuffer\n } else {\n return from.file.arrayBuffer()\n }\n}\nconst cache = new Map>()\n","import { compressors } from 'hyparquet-compressors'\nimport { parquetQuery } from '../../src/query.js'\nimport { asyncBufferFrom } from './parquetWorkerClient.js'\n\nself.onmessage = async ({ data }) => {\n const { metadata, from, rowStart, rowEnd, orderBy, columns, queryId, chunks } = data\n const file = await asyncBufferFrom(from)\n /**\n * @typedef {import('../../src/hyparquet.js').ColumnData} ColumnData\n * @type {((chunk: ColumnData) => void) | undefined}\n */\n const onChunk = chunks ? chunk => self.postMessage({ chunk, queryId }) : undefined\n try {\n const result = await parquetQuery({\n metadata, file, rowStart, rowEnd, orderBy, columns, compressors, onChunk,\n })\n self.postMessage({ result, queryId })\n } catch (error) {\n self.postMessage({ error, queryId })\n }\n}\n"],"names":["ab","ArrayBuffer","u8","Uint8Array","u16","Uint16Array","i16","Int16Array","i32","Int32Array","slc","v","s","e","prototype","slice","call","length","n","set","subarray","fill","cpw","t","copyWithin","ec","err","ind","msg","nt","Error","code","captureStackTrace","rb","d","b","i","o","rzfh","dat","w","n3","flg","ss","cc","df","fcf","bt","db","di","fsb","fss","ws","wb","buf","y","l","buffer","u","c","m","Math","min","msb","val","bits","rfse","mal","tpos","al","sz","probs","sym","re","ht","freq","dstate","nstate","bb1","syms","nbits","cbt","msk","msk1fb","msv","sval","rbt","sympos","sstep","smask","sf","ns","nb","dllt","dmlt","doct","b2bl","len","bl","llb","llbl","mlb","mlbl","dhu","out","hu","lb","eb","st","btr","pos","dhu4","sz1","sz2","sz3","rzb","_a","b0","btype","ebt","b3","lbt","lss","lcs","s4","spl","h","hud","wc","hb","hw","rc","ri","fdt","epos","st1","st2","btr1","btr2","fpos","byte","wes","wt","mb","ts","rem","hbuf","pv","rhu","scm","dts","md","rbuf","_b","mlt","oct","llt","spos","oubt","lst","ost","mst","llc","lbtr","mlc","mbtr","ofc","obtr","ofp","off","ml","ll","idx","stin","bs","decompress","bufs","ol","push","blk","chk","cct","wasm64","BROTLI_READ_SIZE","kBitMask","Uint32Array","BrotliBitReader","input","this","buf_","input_","buf_ptr_","val_","pos_","reset","READ_SIZE","IBUF_MASK","bit_pos_","bit_end_pos_","eos_","readMoreInput","dst","bytes_read","read","p","fillBitWindow","readBits","n_bits","lookup","lookupOffsets","kCodeLengthCodeOrder","HuffmanCode","value","MAX_LENGTH","getNextKey","key","step","replicateValue","table","end","nextTableBitSize","count","root_bits","left","buildHuffmanTable","root_table","code_lengths","code_lengths_size","start_table","offset","sorted","table_bits","table_size","total_size","symbol","mask","low","readHuffmanCode","alphabet_size","tables","br","simple_code_or_skip","max_bits_counter","max_bits","symbols","num_symbols","code_length_code_lengths","space","num_codes","huff","code_len_idx","prev_code_len","repeat","repeat_code_len","code_len","extra_bits","new_len","old_repeat","repeat_delta","x","readHuffmanCodeLengths","readSymbol","index","PrefixCodeRange","kBlockLengthPrefixCode","kInsertLengthPrefixCode","kCopyLengthPrefixCode","kInsertRangeLut","kCopyRangeLut","BrotliInput","BrotliOutput","write","fixedLengthExtraBits","fixedDistanceExtraBits","codeLengthIndexMap","freb","start","base","rev","j","fl","revfl","fd","huffMap","cd","maxBits","r","le","co","rvb","sv","freeBits","startValue","endValue","fixedLengthTree","fixedDistanceTree","fixedLengthMap","fixedDistanceMap","max","a","bits16","gunzip","inputIndex","outputIndex","payloadStart","flag","zs","Number","gzipStart","lmap","dmap","final","lengthBits","distBits","totalBits","type","hLiteral","hcLengths","tl","lengthDistanceTree","codeLengthTree","codeLengthBits","clbMask","codeLengthMap","copy","lengthTree","distanceTree","lms","dms","lpos","undefined","add","dsym","dt","ceil","dictionary","getDictionary","gzipString","atob","gzipBytes","charCodeAt","kUppercaseFirst","kUppercaseAll","Transform","prefix","transform","suffix","kTransforms","kNumTransforms","ToUpperCase","transformDictionaryWord","word","skip","start_idx","prefix_pos","uppercase","suffix_pos","HUFFMAN_MAX_TABLE_SIZE","kDistanceShortCodeIndexOffset","kDistanceShortCodeValueOffset","Int8Array","kMaxHuffmanTableSize","offsetsByLength","sizeBitsByLength","decodeBlockType","max_block_type","trees","tree_type","block_types","ringbuffers","indexes","ringbuffer","type_code","block_type","HuffmanTreeGroup","num_htrees","codes","Array","htrees","readBlockLength","translateShortCodes","copyUncompressedBlockToOutput","output","ringbuffer_mask","rb_size","rb_pos","br_pos","nbytes","tail","decodeVarLenUint8","MetaBlockLength","meta_block_length","input_end","is_uncompressed","is_metadata","DecodeMetaBlockLength","size_nibbles","size_bytes","next_byte","next_nibble","DecodeContextMap","context_map_size","max_run_length_prefix","context_map","reps","v_len","mtf","moveToFront","inverseMoveToFrontTransform","jumpToByteBoundary","new_bit_pos","lz4basic","token","literals","matchLength","decode","next","compressors","SNAPPY","wasm","binaryString","byteArray","mod","WebAssembly","Module","Instance","instantiateWasm","outputLength","memory","uncompress","exports","inputStart","outputStart","byteLength","totalSize","pageSize","currentPages","pagesToGrow","grow","result","snappyUncompressor","GZIP","BROTLI","window_bits","max_distance","dist_rb","dist_rb_idx","prev_byte1","prev_byte2","hgroup","kRingBufferWriteAheadSlack","decodeWindowBits","max_backward_distance","ringbuffer_size","ringbuffer_end","block_type_trees","block_len_trees","meta_block_remaining_len","block_length","num_block_types","block_type_rb","block_type_rb_index","context_offset","_out","tmp","distance_postfix_bits","num_direct_distance_codes","distance_postfix_mask","num_distance_codes","context_modes","_o1","num_literal_htrees","_o2","num_dist_htrees","dist_context_map","context_map_slice","dist_context_map_slice","context_mode","context_lookup_offset1","context_lookup_offset2","htree_command","distance_code","cmd_code","range_idx","insert_code","copy_code","insert_length","copy_length","literal_htree_index","dist_htree_index","postfix","distance","copy_dst","word_id","shift","transform_idx","_x","brotli","ZSTD","LZ4","expectedOutputLength","expectedInputLength","error","message","LZ4_RAW","ParquetType","Encoding","FieldRepetitionType","ConvertedType","CompressionCodec","PageType","dayMillis","convertWithDictionary","data","schemaElement","encoding","utf8","endsWith","convert","constructor","ctype","converted_type","scale","factor","pow","arr","parseDecimal","from","map","parseInt96Date","Date","decoder","TextDecoder","JSON","parse","BigUint64Array","BigInt","logical_type","parseFloat16","unit","bytes","days","nano","int16","sign","exp","frac","NaN","Infinity","schemaTree","schema","rootIndex","path","element","children","num_children","childElement","child","name","getSchemaPath","tree","part","find","getMaxRepetitionLevel","schemaPath","maxLevel","repetition_type","getMaxDefinitionLevel","CompactType","deserializeTCompactProtocol","reader","lastFid","view","fid","newLastFid","readFieldBegin","readElement","getInt8","zigzag","readVarInt","readZigZag","readZigZagBigInt","getFloat64","stringLength","strBytes","byteOffset","elemType","listSize","sizeType","getUint8","size","getCompactType","readCollectionBegin","boolType","values","structValues","structLastFid","structFieldType","structFid","uuid","toString","padStart","readVarBigInt","delta","async","parquetMetadataAsync","asyncBuffer","initialFetchSize","footerOffset","footerBuffer","footerView","DataView","getUint32","metadataLength","metadataOffset","metadataBuffer","combinedBuffer","combinedView","parquetMetadata","arrayBuffer","metadataLengthOffset","metadata","version","field_1","field_2","field","type_length","field_3","field_4","field_5","field_6","field_7","precision","field_8","field_id","field_9","logicalType","field_10","columnSchema","filter","num_rows","row_groups","rowGroup","columns","column","columnIndex","file_path","file_offset","meta_data","encodings","path_in_schema","codec","num_values","total_uncompressed_size","total_compressed_size","key_value_metadata","data_page_offset","index_page_offset","dictionary_page_offset","field_11","statistics","convertStats","field_12","encoding_stats","field_13","encodingStat","page_type","bloom_filter_offset","field_14","bloom_filter_length","field_15","size_statistics","field_16","unencoded_byte_array_data_bytes","repetition_level_histogram","definition_level_histogram","offset_index_offset","offset_index_length","column_index_offset","column_index_length","crypto_metadata","encrypted_column_metadata","total_byte_size","sorting_columns","sortingColumn","column_idx","descending","nulls_first","ordinal","keyValue","created_by","metadata_length","isAdjustedToUTC","timeUnit","bitWidth","isSigned","stats","convertMetadata","null_count","distinct_count","max_value","min_value","is_max_value_exact","is_min_value_exact","getFloat32","getInt32","getBigInt64","assembleLists","definitionLevels","repetitionLevels","repetitionPath","maxDefinitionLevel","valueIndex","containerStack","currentContainer","currentDepth","currentDefLevel","currentRepLevel","at","def","rep","pop","newList","assembleNested","subcolumnData","depth","join","optional","nextDepth","firstChild","isListLike","sublist","subDepth","subcolumn","get","flattenAtDepth","delete","keyChild","valueChild","isMapLike","mapName","keys","assembleMaps","invertDepth","struct","childData","inverted","invertStruct","obj","Object","clz32","readRleBitPackedHybrid","width","seen","header","readBitPacked","readRle","right","byteStreamSplit","typeLength","byteWidth","Float32Array","Float64Array","BigInt64Array","split","readPlain","fixedLength","bitOffset","readPlainBoolean","align","readPlainInt32","readPlainInt64","high","readPlainInt96","readPlainFloat","readPlainDouble","readPlainByteArray","readPlainByteArrayFixed","aligned","WORD_MASK","copyBytes","fromArray","fromPos","toArray","toPos","selfCopyBytes","array","readDataPage","daph","dataPage","maxRepetitionLevel","readRepetitionLevels","numNulls","readDefinitionLevels","nValues","readDictionaryPage","diph","columnMetadata","decompressPage","compressedBytes","uncompressed_page_size","page","customDecompressor","inputLength","outPos","isNaN","lengthSize","snappyUncompress","deltaBinaryUnpack","int32","blockSize","miniblockPerBlock","valuesPerMiniblock","minDelta","bitWidths","bitpackPos","miniblockCount","readDataPageV2","ph","daph2","data_page_header_v2","repetition_levels_byte_length","readRepetitionLevelsV2","definition_levels_byte_length","readDefinitionLevelsV2","uncompressedPageSize","is_compressed","pageView","pageReader","num_nulls","lengths","deltaLengthByteArray","prefixData","suffixData","deltaByteArray","parquetHeader","compressed_page_size","crc","data_page_header","definition_level_encoding","repetition_level_encoding","index_page_header","dictionary_page_header","is_sorted","concat","aaa","bbb","asyncBufferFromUrl","url","requestInit","fetch","method","then","res","ok","status","headers","parseInt","byteLengthFromUrl","init","Headers","endStr","body","readColumn","rowLimit","rowData","getColumnRange","columnOffset","readRowGroup","options","groupStart","file","groupBuffer","groupStartByte","groupEndByte","forEach","includes","columnStartByte","columnEndByte","promises","subcolumnNames","Map","getSubcolumns","columnName","columnBytes","console","warn","toLocaleString","bufferOffset","Promise","resolve","columnData","subcolumns","every","has","onChunk","rowStart","rowEnd","all","onComplete","groupData","includedColumnNames","columnOrder","includedColumns","row","rowFormat","cachedAsyncBuffer","cache","cacheKey","cached","promise","parquetReadObjects","reject","groupRows","parquetRead","catch","parquetQuery","orderBy","orderColumn","sortedIndices","_","sort","compare","sparseData","rows","rowGroups","groupIncluded","groupEnds","group","findIndex","rowRanges","rangeStart","groupEnd","rangeEnd","__index__","parquetReadRows","self","onmessage","queryId","chunks","stringify","asyncBufferFrom","chunk","postMessage"],"mappings":"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AAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAG7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]} \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js index 6693fa5..4f4a3b0 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -10,8 +10,6 @@ export default [ typescript, }, - ignores: ['demo/**/*.min.js'], - languageOptions: { globals: { ...globals.browser, diff --git a/favicon.png b/favicon.png deleted file mode 100644 index cd162fd..0000000 Binary files a/favicon.png and /dev/null differ diff --git a/index.html b/index.html deleted file mode 100644 index 230675a..0000000 --- a/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - hyparquet parquet file parser demo - - - - - - - - - - -
-
-
-

hyparquet

- - /haɪ pɑːrˈkeɪ/ - play hyparquet pronunciation - - -

in-browser parquet file reader

-

- npm hyparquet - star hyparquet -

-

- Online demo of hyparquet: a parser for apache parquet files. - Uses hightable for high performance windowed table viewing. -

-

- Drag and drop a parquet file (or url) to see your parquet data. 👀 -

-

- Example files: -

-

-
-
- - - - - diff --git a/package.json b/package.json index 119e2b7..da9c8a9 100644 --- a/package.json +++ b/package.json @@ -21,29 +21,15 @@ "types": "src/hyparquet.d.ts", "scripts": { "coverage": "vitest run --coverage --coverage.include=src", - "demo": "http-server -o", - "demo:build": "rollup -c", "lint": "eslint .", "test": "vitest run" }, "devDependencies": { - "@rollup/plugin-commonjs": "28.0.1", - "@rollup/plugin-node-resolve": "15.3.0", - "@rollup/plugin-replace": "6.0.1", - "@rollup/plugin-terser": "0.4.4", - "@rollup/plugin-typescript": "12.1.1", "@types/node": "22.8.6", - "@types/react": "18.3.12", - "@types/react-dom": "18.3.1", "@vitest/coverage-v8": "2.1.4", "eslint": "9.14.0", "eslint-plugin-jsdoc": "50.4.3", - "hightable": "0.6.3", - "http-server": "14.1.1", "hyparquet-compressors": "0.1.4", - "react": "18.3.1", - "react-dom": "18.3.1", - "rollup": "4.24.3", "typescript": "5.6.3", "typescript-eslint": "8.12.2", "vitest": "2.1.4" diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 64f025c..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,42 +0,0 @@ -import commonjs from '@rollup/plugin-commonjs' -import resolve from '@rollup/plugin-node-resolve' -import replace from '@rollup/plugin-replace' -import terser from '@rollup/plugin-terser' -import typescript from '@rollup/plugin-typescript' - -export default [ - // demo bundle - { - input: 'demo/demo.js', - output: { - file: 'demo/bundle.min.js', - format: 'umd', - sourcemap: true, - }, - plugins: [ - commonjs(), - replace({ - 'process.env.NODE_ENV': JSON.stringify('production'), // or 'development' based on your build environment - preventAssignment: true, - }), - resolve({ browser: true }), - terser(), - typescript(), - ], - }, - // web worker - { - input: 'demo/workers/parquetWorker.js', - output: { - file: 'demo/workers/worker.min.js', - format: 'umd', - sourcemap: true, - }, - plugins: [ - commonjs(), - resolve({ browser: true }), - terser(), - typescript(), - ], - }, -] diff --git a/tsconfig.json b/tsconfig.json index 6100d76..9e65abd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,5 +9,5 @@ "resolveJsonModule": true, "strict": true }, - "include": ["src", "test", "demo"] + "include": ["src", "test"] }