@gscdump/lakehouse 1.3.2 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalog-cache.d.mts +32 -0
- package/dist/catalog-cache.mjs +31 -0
- package/dist/{_chunks/catalog.d.mts → catalog.d.mts} +8 -66
- package/dist/{_chunks/catalog.mjs → catalog.mjs} +10 -89
- package/dist/dataset.d.mts +162 -0
- package/dist/dataset.mjs +364 -0
- package/dist/index.d.mts +5 -159
- package/dist/index.mjs +4 -360
- package/dist/maintenance.d.mts +2 -93
- package/dist/maintenance.mjs +2 -139
- package/dist/node_modules/.pnpm/chokidar@5.0.0/node_modules/chokidar/handler.d.mts +2 -0
- package/dist/node_modules/.pnpm/chokidar@5.0.0/node_modules/chokidar/index.d.mts +2 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.bitreader.mjs +88 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.blocks.mjs +120 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.context.mjs +1805 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.contextmap.mjs +49 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.dictionary.mjs +984 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.huffman.mjs +266 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.mjs +340 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.prefix.mjs +109 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.streams.mjs +21 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.transform.mjs +190 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/compressors.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/gzip.huffman.mjs +121 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/gzip.mjs +176 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/lz4.mjs +52 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/bloom.mjs +93 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/bytewriter.mjs +91 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/column.mjs +186 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/datapage.mjs +113 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/delta.mjs +111 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/dictionary.mjs +99 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/dremel.mjs +116 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/encoding.mjs +51 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/geospatial.mjs +84 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/indexes.mjs +31 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/metadata.mjs +138 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/node.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/parquet-writer.mjs +139 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/plain.mjs +68 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/schema.mjs +254 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/snappy.mjs +125 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/splitstream.mjs +38 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/thrift.mjs +79 -0
- package/dist/{_chunks/libs/hyparquet-writer.d.mts → node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/types.d.mts} +2 -2
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/unconvert.mjs +247 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/variant.mjs +391 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/wkb.mjs +79 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/write-rows.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/write.mjs +46 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/bytewriter.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/index.d.mts +10 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/node.d.mts +3 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/parquet-writer.d.mts +2 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/schema.d.mts +2 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/write-rows.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/write.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/assemble.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/bloom.mjs +69 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/column.mjs +8 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/constants.mjs +80 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/convert.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/datapage.mjs +6 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/delta.mjs +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/encoding.mjs +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/filter.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/geoparquet.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/indexes.mjs +5 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/metadata.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/node.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/plain.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/plan.mjs +5 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/query.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/read.mjs +6 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/rowgroup.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/schema.mjs +54 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/snappy.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/thrift.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/utils.mjs +19 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/variant.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/wkb.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/xxhash.mjs +68 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/index.d.mts +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/indexes.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/metadata.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/node.d.mts +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/query.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/read.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/snappy.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/utils.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/assemble.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/bloom.mjs +14 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/column.mjs +8 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/constants.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/convert.mjs +11 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/datapage.mjs +6 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/delta.mjs +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/encoding.mjs +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/filter.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/geoparquet.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/indexes.mjs +5 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/metadata.mjs +8 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/node.mjs +4 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/plain.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/plan.mjs +5 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/query.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/read.mjs +6 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/rowgroup.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/schema.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/snappy.mjs +70 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/thrift.mjs +1 -0
- package/dist/{_chunks/libs/hyparquet.d.mts → node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/types.d.mts} +2 -3
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/utils.mjs +98 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/variant.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/wkb.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/xxhash.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/index.d.mts +9 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/indexes.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/metadata.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/node.d.mts +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/query.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/read.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/snappy.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/utils.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/avro/avro.metadata.mjs +53 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/avro/avro.read.mjs +136 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/avro/avro.write.mjs +148 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/catalog/file.mjs +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/catalog/loadTable.mjs +48 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/catalog/rest.mjs +159 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/create.mjs +67 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/delete.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/fetch.mjs +162 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/index.mjs +13 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/json.mjs +147 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/manifest.mjs +71 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/metadata.mjs +151 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/prune.mjs +4 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/puffin/deletion-vector.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/puffin/puffin.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/puffin/roaring.mjs +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/read.mjs +9 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/s3.mjs +91 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/schema.mjs +76 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sigv4.mjs +70 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sql/icebergDataSource.mjs +8 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sql/icebergQuery.mjs +5 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sql/whereFilter.mjs +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/types.d.mts +255 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/utils.mjs +26 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/commit.mjs +392 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/conversions.mjs +59 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/delete-file.mjs +3 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/geospatial.mjs +72 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/manifest-list.mjs +152 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/manifest.mjs +212 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/parquet.mjs +305 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/partition.mjs +178 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/rewrite.mjs +10 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/serde.mjs +148 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/snapshot.mjs +107 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/sort.mjs +47 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stage-deletion-vector.mjs +11 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stage-position-delete.mjs +8 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stage.mjs +237 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stats.mjs +153 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/transform.mjs +220 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/write.mjs +247 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/catalog/file.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/catalog/rest.d.mts +76 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/create.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/fetch.d.mts +36 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/index.d.mts +13 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/manifest.d.mts +30 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/metadata.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/read.d.mts +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/s3.d.mts +36 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/sql/icebergDataSource.d.mts +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/sql/icebergQuery.d.mts +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/write/write.d.mts +79 -0
- package/dist/{_chunks/libs/ioredis.d.mts → node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/Command.d.mts} +1 -1
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/DataHandler.d.mts +4 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/Pipeline.d.mts +4 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/Redis.d.mts +10 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/ScanStream.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/SubscriptionSet.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/cluster/ClusterOptions.d.mts +4 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/cluster/index.d.mts +9 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/cluster/util.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/connectors/AbstractConnector.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/connectors/ConnectorConstructor.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/connectors/SentinelConnector/SentinelIterator.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/connectors/SentinelConnector/index.d.mts +6 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/connectors/SentinelConnector/types.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/connectors/StandaloneConnector.d.mts +3 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/index.d.mts +13 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/redis/RedisOptions.d.mts +4 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/transaction.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/types.d.mts +1 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/utils/Commander.d.mts +3 -0
- package/dist/node_modules/.pnpm/ioredis@5.10.1_supports-color@10.2.2/node_modules/ioredis/built/utils/RedisCommander.d.mts +2 -0
- package/dist/node_modules/.pnpm/lru-cache@11.5.0/node_modules/lru-cache/dist/esm/index.d.mts +1 -0
- package/dist/node_modules/.pnpm/lru-cache@11.5.0/node_modules/lru-cache/dist/esm/perf.d.mts +1 -0
- package/dist/node_modules/.pnpm/readdirp@5.0.0/node_modules/readdirp/index.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/ast.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/backend/dataSource.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/accumulator.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/aggregates.mjs +10 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/execute.mjs +15 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/join.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/scanColumn.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/sort.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/streamingAggregate.mjs +9 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/utils.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/window.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/yield.mjs +17 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/alias.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/binary.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/date.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/evaluate.mjs +15 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/math.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/regexp.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/strings.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/index.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/index.mjs +9 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/expression.mjs +6 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/extractTables.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/functions.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/joins.mjs +7 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/parse.mjs +10 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/primary.mjs +8 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/state.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/tokenize.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/types.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/plan/columns.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/plan/plan.mjs +7 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/plan/types.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/bbox.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/equality.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/operations.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/pointRelations.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/primitives.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/segments.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/spatial.mjs +6 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/wkt.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/types.d.mts +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/aggregates.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/executionErrors.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/functions.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/keywords.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/parseErrors.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/tables.mjs +2 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/dist/index.d.mts +32 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/dist/index2.d.mts +33 -0
- package/dist/{_chunks/libs/unstorage.d.mts → node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/dist/shared/unstorage.DqlWKU2I.d.mts} +9 -13
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/dist/shared/unstorage2.DqlWKU2I.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/azure-app-configuration.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/azure-cosmos.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/azure-key-vault.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/azure-storage-blob.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/azure-storage-table.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/capacitor-preferences.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/cloudflare-kv-binding.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/cloudflare-kv-http.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/cloudflare-r2-binding.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/db0.d.mts +2 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/deno-kv-node.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/deno-kv.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/fs-lite.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/fs.d.mts +2 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/github.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/http.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/indexedb.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/localstorage.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/localstorage2.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/lru-cache.d.mts +2 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/mongodb.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/netlify-blobs.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/overlay.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/planetscale.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/redis.d.mts +2 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/s3.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/session-storage.d.mts +2 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/uploadthing.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/upstash.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/vercel-blob.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/vercel-kv.d.mts +1 -0
- package/dist/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/vercel-runtime-cache.d.mts +1 -0
- package/dist/orphan-sweep.d.mts +94 -0
- package/dist/orphan-sweep.mjs +141 -0
- package/dist/partition-prune.d.mts +35 -0
- package/dist/partition-prune.mjs +57 -0
- package/dist/provisioning/allocator.d.mts +44 -0
- package/dist/provisioning/allocator.mjs +24 -0
- package/dist/provisioning/index.d.mts +2 -44
- package/dist/provisioning/index.mjs +1 -23
- package/dist/schema.d.mts +73 -1
- package/dist/unsafe-raw.d.mts +6 -2
- package/dist/unsafe-raw.mjs +6 -2
- package/dist/vendor/hysnappy-purejs.mjs +10 -0
- package/package.json +1 -1
- package/dist/_chunks/libs/hyparquet-compressors.mjs +0 -2785
- package/dist/_chunks/libs/hyparquet-writer.mjs +0 -2516
- package/dist/_chunks/libs/hyparquet.mjs +0 -474
- package/dist/_chunks/libs/icebird.d.mts +0 -500
- package/dist/_chunks/libs/icebird.mjs +0 -3854
- package/dist/_chunks/schema.d.mts +0 -74
- /package/dist/{_chunks/libs/chokidar.d.mts → node_modules/.pnpm/db0@0.3.4_drizzle-orm@1.0.0-rc.3_@cloudflare_workers-types@5.20260722.1_valibot@1.4.2_typescript@7.0.2__zod@4.4.3_/node_modules/db0/dist/index.d.mts} +0 -0
- /package/dist/{_chunks/libs/db0.d.mts → node_modules/.pnpm/denque@2.1.0/node_modules/denque/index.d.mts} +0 -0
- /package/dist/{_chunks/libs/fzstd.mjs → node_modules/.pnpm/fzstd@0.1.1/node_modules/fzstd/esm/index.mjs} +0 -0
- /package/dist/{_chunks/libs/denque.d.mts → node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/wkb.d.mts} +0 -0
- /package/dist/{_chunks/libs/lru-cache.d.mts → node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/types.d.mts} +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
const MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);
|
|
2
|
+
function parseIcebergJson(text) {
|
|
3
|
+
let i = 0;
|
|
4
|
+
function skipWs() {
|
|
5
|
+
while (i < text.length) {
|
|
6
|
+
const c = text.charCodeAt(i);
|
|
7
|
+
if (c !== 32 && c !== 9 && c !== 10 && c !== 13) break;
|
|
8
|
+
i++;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function parseString() {
|
|
12
|
+
if (text[i] !== "\"") throw new Error(`expected " at ${i}`);
|
|
13
|
+
i++;
|
|
14
|
+
let s = "";
|
|
15
|
+
while (i < text.length) {
|
|
16
|
+
const c = text[i++];
|
|
17
|
+
if (c === "\"") return s;
|
|
18
|
+
if (c !== "\\") {
|
|
19
|
+
s += c;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const e = text[i++];
|
|
23
|
+
if (e === "u") {
|
|
24
|
+
s += String.fromCharCode(parseInt(text.slice(i, i + 4), 16));
|
|
25
|
+
i += 4;
|
|
26
|
+
} else if (e === "n") s += "\n";
|
|
27
|
+
else if (e === "t") s += " ";
|
|
28
|
+
else if (e === "r") s += "\r";
|
|
29
|
+
else if (e === "b") s += "\b";
|
|
30
|
+
else if (e === "f") s += "\f";
|
|
31
|
+
else s += e;
|
|
32
|
+
}
|
|
33
|
+
throw new Error("unterminated string");
|
|
34
|
+
}
|
|
35
|
+
function parseNumber() {
|
|
36
|
+
const start = i;
|
|
37
|
+
if (text[i] === "-") i++;
|
|
38
|
+
while (text[i] >= "0" && text[i] <= "9") i++;
|
|
39
|
+
const intEnd = i;
|
|
40
|
+
let isFloat = false;
|
|
41
|
+
if (text[i] === ".") {
|
|
42
|
+
isFloat = true;
|
|
43
|
+
i++;
|
|
44
|
+
while (text[i] >= "0" && text[i] <= "9") i++;
|
|
45
|
+
}
|
|
46
|
+
if (text[i] === "e" || text[i] === "E") {
|
|
47
|
+
isFloat = true;
|
|
48
|
+
i++;
|
|
49
|
+
if (text[i] === "+" || text[i] === "-") i++;
|
|
50
|
+
while (text[i] >= "0" && text[i] <= "9") i++;
|
|
51
|
+
}
|
|
52
|
+
if (isFloat) return Number(text.slice(start, i));
|
|
53
|
+
const intStr = text.slice(start, intEnd);
|
|
54
|
+
if (intStr.length >= 16) {
|
|
55
|
+
const n = BigInt(intStr);
|
|
56
|
+
if (n > MAX_SAFE || n < -MAX_SAFE) return n;
|
|
57
|
+
}
|
|
58
|
+
return Number(intStr);
|
|
59
|
+
}
|
|
60
|
+
function parseLiteral(lit, val) {
|
|
61
|
+
if (text.slice(i, i + lit.length) !== lit) throw new Error(`bad literal at ${i}`);
|
|
62
|
+
i += lit.length;
|
|
63
|
+
return val;
|
|
64
|
+
}
|
|
65
|
+
function parseValue() {
|
|
66
|
+
skipWs();
|
|
67
|
+
const ch = text[i];
|
|
68
|
+
if (ch === "\"") return parseString();
|
|
69
|
+
if (ch === "{") return parseObject();
|
|
70
|
+
if (ch === "[") return parseArray();
|
|
71
|
+
if (ch === "t") return parseLiteral("true", true);
|
|
72
|
+
if (ch === "f") return parseLiteral("false", false);
|
|
73
|
+
if (ch === "n") return parseLiteral("null", null);
|
|
74
|
+
return parseNumber();
|
|
75
|
+
}
|
|
76
|
+
function parseObject() {
|
|
77
|
+
i++;
|
|
78
|
+
skipWs();
|
|
79
|
+
const obj = {};
|
|
80
|
+
if (text[i] === "}") {
|
|
81
|
+
i++;
|
|
82
|
+
return obj;
|
|
83
|
+
}
|
|
84
|
+
while (true) {
|
|
85
|
+
skipWs();
|
|
86
|
+
const key = parseString();
|
|
87
|
+
skipWs();
|
|
88
|
+
if (text[i] !== ":") throw new Error(`expected : at ${i}`);
|
|
89
|
+
i++;
|
|
90
|
+
obj[key] = parseValue();
|
|
91
|
+
skipWs();
|
|
92
|
+
if (text[i] === ",") {
|
|
93
|
+
i++;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (text[i] === "}") {
|
|
97
|
+
i++;
|
|
98
|
+
return obj;
|
|
99
|
+
}
|
|
100
|
+
throw new Error(`expected , or } at ${i}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function parseArray() {
|
|
104
|
+
i++;
|
|
105
|
+
skipWs();
|
|
106
|
+
const arr = [];
|
|
107
|
+
if (text[i] === "]") {
|
|
108
|
+
i++;
|
|
109
|
+
return arr;
|
|
110
|
+
}
|
|
111
|
+
while (true) {
|
|
112
|
+
arr.push(parseValue());
|
|
113
|
+
skipWs();
|
|
114
|
+
if (text[i] === ",") {
|
|
115
|
+
i++;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (text[i] === "]") {
|
|
119
|
+
i++;
|
|
120
|
+
return arr;
|
|
121
|
+
}
|
|
122
|
+
throw new Error(`expected , or ] at ${i}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const value = parseValue();
|
|
126
|
+
skipWs();
|
|
127
|
+
if (i !== text.length) throw new Error(`unexpected trailing input at ${i}`);
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
function stringifyIcebergJson(value, indent = 2) {
|
|
131
|
+
const pad = " ".repeat(indent);
|
|
132
|
+
function serialize(val, depth) {
|
|
133
|
+
if (typeof val === "bigint") return val.toString();
|
|
134
|
+
if (val === null || typeof val !== "object") return JSON.stringify(val);
|
|
135
|
+
const inner = pad.repeat(depth + 1);
|
|
136
|
+
const outer = pad.repeat(depth);
|
|
137
|
+
if (Array.isArray(val)) {
|
|
138
|
+
if (val.length === 0) return "[]";
|
|
139
|
+
return `[\n${val.map((v) => inner + serialize(v === void 0 ? null : v, depth + 1)).join(",\n")}\n${outer}]`;
|
|
140
|
+
}
|
|
141
|
+
const keys = Object.keys(val).filter((k) => val[k] !== void 0);
|
|
142
|
+
if (keys.length === 0) return "{}";
|
|
143
|
+
return `{\n${keys.map((k) => `${inner}${JSON.stringify(k)}: ${serialize(val[k], depth + 1)}`).join(",\n")}\n${outer}}`;
|
|
144
|
+
}
|
|
145
|
+
return serialize(value, 0);
|
|
146
|
+
}
|
|
147
|
+
export { parseIcebergJson, stringifyIcebergJson };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { fetchAvroRecords, urlResolver } from "./fetch.mjs";
|
|
2
|
+
async function icebergManifests({ metadata, resolver, snapshotId, partitionFilter }) {
|
|
3
|
+
resolver ??= urlResolver();
|
|
4
|
+
const rawTarget = snapshotId ?? metadata["current-snapshot-id"];
|
|
5
|
+
if (rawTarget == null || rawTarget < 0) throw new Error("No current snapshot id found in table metadata");
|
|
6
|
+
const targetId = BigInt(rawTarget);
|
|
7
|
+
const snapshot = metadata.snapshots?.find((s) => BigInt(s["snapshot-id"]) === targetId);
|
|
8
|
+
if (!snapshot) throw new Error(`Snapshot ${rawTarget} not found in metadata`);
|
|
9
|
+
let manifests = [];
|
|
10
|
+
if (snapshot["manifest-list"]) {
|
|
11
|
+
const manifestListUrl = snapshot["manifest-list"];
|
|
12
|
+
manifests = await fetchAvroRecords(manifestListUrl, resolver);
|
|
13
|
+
} else if (snapshot.manifests) manifests = snapshot.manifests;
|
|
14
|
+
else throw new Error("No manifest information found in snapshot");
|
|
15
|
+
if (partitionFilter) manifests = manifests.filter((manifest) => {
|
|
16
|
+
let keep = true;
|
|
17
|
+
try {
|
|
18
|
+
keep = partitionFilter(manifest.partitions, manifest.partition_spec_id ?? 0, manifest) !== false;
|
|
19
|
+
} catch {
|
|
20
|
+
keep = true;
|
|
21
|
+
}
|
|
22
|
+
return keep;
|
|
23
|
+
});
|
|
24
|
+
return await fetchManifests(manifests, resolver);
|
|
25
|
+
}
|
|
26
|
+
const MANIFEST_FETCH_CONCURRENCY = 8;
|
|
27
|
+
async function fetchOneManifest(manifest, resolver) {
|
|
28
|
+
const url = manifest.manifest_path;
|
|
29
|
+
const entries = await fetchAvroRecords(url, resolver, Number(manifest.manifest_length));
|
|
30
|
+
for (const entry of entries) {
|
|
31
|
+
entry.partition_spec_id = manifest.partition_spec_id ?? 0;
|
|
32
|
+
if (entry.sequence_number === void 0) entry.sequence_number = manifest.sequence_number ?? 0n;
|
|
33
|
+
if (entry.status === 1) {
|
|
34
|
+
if (entry.sequence_number === void 0) entry.sequence_number = manifest.sequence_number;
|
|
35
|
+
if (entry.file_sequence_number === void 0) entry.file_sequence_number = manifest.sequence_number;
|
|
36
|
+
} else if (entry.sequence_number === void 0 || entry.file_sequence_number === void 0) throw new Error("iceberg manifest entry missing sequence number");
|
|
37
|
+
}
|
|
38
|
+
assignFirstRowIds(manifest, entries);
|
|
39
|
+
return {
|
|
40
|
+
url,
|
|
41
|
+
entries
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async function fetchManifests(manifests, resolver) {
|
|
45
|
+
const results = new Array(manifests.length);
|
|
46
|
+
let next = 0;
|
|
47
|
+
async function worker() {
|
|
48
|
+
while (next < manifests.length) {
|
|
49
|
+
const i = next++;
|
|
50
|
+
results[i] = await fetchOneManifest(manifests[i], resolver);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const poolSize = Math.min(MANIFEST_FETCH_CONCURRENCY, manifests.length);
|
|
54
|
+
const workers = [];
|
|
55
|
+
for (let w = 0; w < poolSize; w++) workers.push(worker());
|
|
56
|
+
await Promise.all(workers);
|
|
57
|
+
return results;
|
|
58
|
+
}
|
|
59
|
+
function assignFirstRowIds(manifest, entries) {
|
|
60
|
+
if (manifest.content !== 0 || manifest.first_row_id == null) return;
|
|
61
|
+
let nextFirstRowId = BigInt(manifest.first_row_id);
|
|
62
|
+
for (const entry of entries) {
|
|
63
|
+
const dataFile = entry.data_file;
|
|
64
|
+
if (dataFile.content !== 0) continue;
|
|
65
|
+
if (dataFile.first_row_id == null) {
|
|
66
|
+
dataFile.first_row_id = nextFirstRowId;
|
|
67
|
+
nextFirstRowId += BigInt(dataFile.record_count);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export { icebergManifests };
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { resolveText, s3Lister, urlResolver } from "./fetch.mjs";
|
|
2
|
+
import { parseIcebergJson } from "./json.mjs";
|
|
3
|
+
function metadataFileVersionNumber(file) {
|
|
4
|
+
const match = file.match(/^(?:v(\d+)|(\d+)-.+)(?:\.metadata\.json|\.gz\.metadata\.json|\.metadata\.json\.gz)$/);
|
|
5
|
+
if (!match) return void 0;
|
|
6
|
+
return Number(match[1] ?? match[2]);
|
|
7
|
+
}
|
|
8
|
+
function metadataFileVersionName(file) {
|
|
9
|
+
if (metadataFileVersionNumber(file) === void 0) return void 0;
|
|
10
|
+
return file.replace(/(?:\.metadata\.json\.gz|\.gz\.metadata\.json|\.metadata\.json)$/, "");
|
|
11
|
+
}
|
|
12
|
+
function metadataVersions(files) {
|
|
13
|
+
const versions = /* @__PURE__ */ new Map();
|
|
14
|
+
for (const file of files) {
|
|
15
|
+
const version = metadataFileVersionNumber(file);
|
|
16
|
+
const name = metadataFileVersionName(file);
|
|
17
|
+
if (version === void 0 || name === void 0) continue;
|
|
18
|
+
const current = versions.get(version);
|
|
19
|
+
const paddedVersion = String(version).padStart(5, "0");
|
|
20
|
+
if (current === void 0 || metadataFilePreference(file, paddedVersion) < metadataFilePreference(`${current}.metadata.json`, paddedVersion)) versions.set(version, name);
|
|
21
|
+
}
|
|
22
|
+
return [...versions.entries()].sort(([a], [b]) => a - b).map(([, name]) => name);
|
|
23
|
+
}
|
|
24
|
+
function icebergLatestVersion({ tableUrl, resolver, lister }) {
|
|
25
|
+
resolver ??= urlResolver();
|
|
26
|
+
lister ??= s3Lister();
|
|
27
|
+
const url = `${tableUrl}/metadata/version-hint.text`;
|
|
28
|
+
return resolveText(resolver, url).then((text) => {
|
|
29
|
+
const version = parseInt(text);
|
|
30
|
+
if (isNaN(version)) throw new Error(`invalid version: ${text}`);
|
|
31
|
+
return `v${version}`;
|
|
32
|
+
}).catch(() => {
|
|
33
|
+
const metadataDir = `${tableUrl}/metadata`;
|
|
34
|
+
return lister(metadataDir).then((files) => {
|
|
35
|
+
const versions = metadataVersions(files);
|
|
36
|
+
if (versions.length === 0) throw new Error("no metadata files found");
|
|
37
|
+
return versions[versions.length - 1];
|
|
38
|
+
});
|
|
39
|
+
}).catch((err) => {
|
|
40
|
+
throw new Error(`failed to determine latest iceberg version of ${tableUrl}: ${err.message}`);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async function resolveMetadata({ tableUrl, metadataFileName, resolver, lister }) {
|
|
44
|
+
resolver ??= urlResolver();
|
|
45
|
+
lister ??= s3Lister();
|
|
46
|
+
if (!metadataFileName) metadataFileName = `${await icebergLatestVersion({
|
|
47
|
+
tableUrl,
|
|
48
|
+
resolver,
|
|
49
|
+
lister
|
|
50
|
+
})}.metadata.json`;
|
|
51
|
+
const url = `${tableUrl}/metadata/${metadataFileName}`;
|
|
52
|
+
try {
|
|
53
|
+
return {
|
|
54
|
+
metadata: parseIcebergJson(await resolveText(resolver, url)),
|
|
55
|
+
metadataFileName
|
|
56
|
+
};
|
|
57
|
+
} catch (err) {
|
|
58
|
+
try {
|
|
59
|
+
const metadataDir = `${tableUrl}/metadata`;
|
|
60
|
+
const match = findMetadataFile(await lister(metadataDir), metadataFileName);
|
|
61
|
+
if (match) return {
|
|
62
|
+
metadata: parseIcebergJson(await resolveText(resolver, `${metadataDir}/${match}`)),
|
|
63
|
+
metadataFileName: match
|
|
64
|
+
};
|
|
65
|
+
} catch {}
|
|
66
|
+
throw new Error(`failed to get iceberg metadata: ${err.message}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function findMetadataFile(files, metadataFileName) {
|
|
70
|
+
if (files.includes(metadataFileName)) return metadataFileName;
|
|
71
|
+
const version = metadataFileVersionNumber(metadataFileName);
|
|
72
|
+
if (version === void 0) return void 0;
|
|
73
|
+
const versionNum = String(version).padStart(5, "0");
|
|
74
|
+
return files.filter((f) => metadataFileVersionNumber(f) === version).sort((a, b) => metadataFilePreference(a, versionNum) - metadataFilePreference(b, versionNum))[0];
|
|
75
|
+
}
|
|
76
|
+
async function loadLatestFileCatalogMetadata({ tableUrl, resolver, lister, maxProbe = 64 }) {
|
|
77
|
+
resolver ??= urlResolver();
|
|
78
|
+
lister ??= s3Lister();
|
|
79
|
+
let files;
|
|
80
|
+
try {
|
|
81
|
+
files = await lister(`${tableUrl}/metadata`);
|
|
82
|
+
} catch (err) {
|
|
83
|
+
const fallback = await hintProbeFallback(resolver, tableUrl, maxProbe);
|
|
84
|
+
if (fallback) return fallback;
|
|
85
|
+
throw err;
|
|
86
|
+
}
|
|
87
|
+
let highest = -1;
|
|
88
|
+
let highestFile;
|
|
89
|
+
for (const file of files) {
|
|
90
|
+
const v = metadataFileVersionNumber(file);
|
|
91
|
+
if (v === void 0) continue;
|
|
92
|
+
if (v > highest) {
|
|
93
|
+
highest = v;
|
|
94
|
+
highestFile = file;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (highest < 0 || !highestFile) throw new Error(`no metadata files found at ${tableUrl}/metadata`);
|
|
98
|
+
const metadataLocation = `${tableUrl}/metadata/${highestFile}`;
|
|
99
|
+
const text = await resolveText(resolver, metadataLocation);
|
|
100
|
+
return {
|
|
101
|
+
version: highest,
|
|
102
|
+
metadata: parseIcebergJson(text),
|
|
103
|
+
metadataFileName: highestFile,
|
|
104
|
+
metadataLocation
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async function hintProbeFallback(resolver, tableUrl, maxProbe) {
|
|
108
|
+
let hintVersion;
|
|
109
|
+
try {
|
|
110
|
+
const text = await resolveText(resolver, `${tableUrl}/metadata/version-hint.text`);
|
|
111
|
+
const parsed = parseInt(text);
|
|
112
|
+
if (!isNaN(parsed)) hintVersion = parsed;
|
|
113
|
+
} catch {}
|
|
114
|
+
if (hintVersion === void 0 || hintVersion < 0) return void 0;
|
|
115
|
+
let lastFound = await tryReadVersion(resolver, tableUrl, hintVersion);
|
|
116
|
+
if (!lastFound) return void 0;
|
|
117
|
+
let probe = hintVersion + 1;
|
|
118
|
+
const limit = hintVersion + maxProbe;
|
|
119
|
+
while (probe <= limit) {
|
|
120
|
+
const next = await tryReadVersion(resolver, tableUrl, probe);
|
|
121
|
+
if (!next) break;
|
|
122
|
+
lastFound = next;
|
|
123
|
+
probe++;
|
|
124
|
+
}
|
|
125
|
+
if (probe > limit) return void 0;
|
|
126
|
+
return lastFound;
|
|
127
|
+
}
|
|
128
|
+
async function tryReadVersion(resolver, tableUrl, version) {
|
|
129
|
+
const fileName = `v${version}.metadata.json`;
|
|
130
|
+
const metadataLocation = `${tableUrl}/metadata/${fileName}`;
|
|
131
|
+
try {
|
|
132
|
+
return {
|
|
133
|
+
version,
|
|
134
|
+
metadata: parseIcebergJson(await resolveText(resolver, metadataLocation)),
|
|
135
|
+
metadataFileName: fileName,
|
|
136
|
+
metadataLocation
|
|
137
|
+
};
|
|
138
|
+
} catch {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function metadataFilePreference(file, paddedVersion) {
|
|
143
|
+
if (file === `v${Number(paddedVersion)}.metadata.json`) return 0;
|
|
144
|
+
if (file === `v${Number(paddedVersion)}.gz.metadata.json`) return 1;
|
|
145
|
+
if (file === `v${Number(paddedVersion)}.metadata.json.gz`) return 2;
|
|
146
|
+
if (file.startsWith(`${paddedVersion}-`) && file.endsWith(".metadata.json")) return 3;
|
|
147
|
+
if (file.startsWith(`${paddedVersion}-`) && file.endsWith(".gz.metadata.json")) return 4;
|
|
148
|
+
if (file.startsWith(`${paddedVersion}-`) && file.endsWith(".metadata.json.gz")) return 5;
|
|
149
|
+
return 6;
|
|
150
|
+
}
|
|
151
|
+
export { icebergLatestVersion, loadLatestFileCatalogMetadata, resolveMetadata };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "../../../../hyparquet@1.26.2/node_modules/hyparquet/src/utils.mjs";
|
|
2
|
+
import "../../../../hyparquet@1.26.2/node_modules/hyparquet/src/node.mjs";
|
|
3
|
+
import "../../../../hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/index.mjs";
|
|
4
|
+
import "./utils.mjs";
|
|
5
|
+
import "./fetch.mjs";
|
|
6
|
+
import "./metadata.mjs";
|
|
7
|
+
import "./delete.mjs";
|
|
8
|
+
import "./manifest.mjs";
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ByteWriter } from "../../../../hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/bytewriter.mjs";
|
|
2
|
+
import "../../../../hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/node.mjs";
|
|
3
|
+
import { signRequest } from "./sigv4.mjs";
|
|
4
|
+
function s3SignedResolver({ accessKeyId, secretAccessKey, sessionToken, region, endpoint, pathStyle = false }) {
|
|
5
|
+
const ep = endpoint ? new URL(endpoint.replace(/\/$/, "") + "/") : void 0;
|
|
6
|
+
function toHttps(url) {
|
|
7
|
+
if (!url.startsWith("s3://") && !url.startsWith("s3a://")) return url;
|
|
8
|
+
const rest = url.slice(url.indexOf("://") + 3);
|
|
9
|
+
const slash = rest.indexOf("/");
|
|
10
|
+
if (slash === -1) throw new Error(`invalid S3 URL: ${url}`);
|
|
11
|
+
const bucket = rest.slice(0, slash);
|
|
12
|
+
const key = rest.slice(slash + 1);
|
|
13
|
+
if (ep) {
|
|
14
|
+
if (pathStyle) return `${ep.origin}${ep.pathname}${bucket}/${key}`;
|
|
15
|
+
return `${ep.protocol}//${bucket}.${ep.host}/${key}`;
|
|
16
|
+
}
|
|
17
|
+
if (region && region !== "us-east-1" && region !== "auto") return `https://${bucket}.s3.${region}.amazonaws.com/${key}`;
|
|
18
|
+
return `https://${bucket}.s3.amazonaws.com/${key}`;
|
|
19
|
+
}
|
|
20
|
+
function signRequest$1(method, url, body, extra = {}) {
|
|
21
|
+
return signRequest(method, url, body, {
|
|
22
|
+
accessKeyId,
|
|
23
|
+
secretAccessKey,
|
|
24
|
+
sessionToken,
|
|
25
|
+
region,
|
|
26
|
+
service: "s3",
|
|
27
|
+
extraHeaders: extra
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
async reader(path, byteLength) {
|
|
32
|
+
const url = toHttps(path);
|
|
33
|
+
let len = byteLength;
|
|
34
|
+
if (len === void 0) {
|
|
35
|
+
const headers = await signRequest$1("HEAD", url);
|
|
36
|
+
const res = await fetch(url, {
|
|
37
|
+
method: "HEAD",
|
|
38
|
+
headers
|
|
39
|
+
});
|
|
40
|
+
if (!res.ok) throw new Error(`HEAD ${path}: ${res.status} ${res.statusText}`);
|
|
41
|
+
len = Number(res.headers.get("content-length"));
|
|
42
|
+
if (!Number.isFinite(len)) throw new Error(`HEAD ${path}: missing Content-Length`);
|
|
43
|
+
}
|
|
44
|
+
const fileLength = len;
|
|
45
|
+
return {
|
|
46
|
+
byteLength: fileLength,
|
|
47
|
+
async slice(start, end) {
|
|
48
|
+
const range = `bytes=${start}-${(end ?? fileLength) - 1}`;
|
|
49
|
+
const headers = await signRequest$1("GET", url, void 0, { range });
|
|
50
|
+
const res = await fetch(url, {
|
|
51
|
+
method: "GET",
|
|
52
|
+
headers
|
|
53
|
+
});
|
|
54
|
+
if (!res.ok) throw new Error(`GET ${path} ${range}: ${res.status} ${res.statusText}`);
|
|
55
|
+
return await res.arrayBuffer();
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
writer(path, options) {
|
|
60
|
+
const w = new ByteWriter();
|
|
61
|
+
w.finish = async function() {
|
|
62
|
+
const url = toHttps(path);
|
|
63
|
+
const body = w.getBytes().slice();
|
|
64
|
+
const extra = {};
|
|
65
|
+
if (options?.ifNoneMatch) extra["if-none-match"] = options.ifNoneMatch;
|
|
66
|
+
const headers = await signRequest$1("PUT", url, body, extra);
|
|
67
|
+
const res = await fetch(url, {
|
|
68
|
+
method: "PUT",
|
|
69
|
+
headers,
|
|
70
|
+
body
|
|
71
|
+
});
|
|
72
|
+
if (!res.ok) {
|
|
73
|
+
const err = /* @__PURE__ */ new Error(`PUT ${path}: ${res.status} ${res.statusText}`);
|
|
74
|
+
err.status = res.status;
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
return w;
|
|
79
|
+
},
|
|
80
|
+
async deleter(path) {
|
|
81
|
+
const url = toHttps(path);
|
|
82
|
+
const headers = await signRequest$1("DELETE", url);
|
|
83
|
+
const res = await fetch(url, {
|
|
84
|
+
method: "DELETE",
|
|
85
|
+
headers
|
|
86
|
+
});
|
|
87
|
+
if (!res.ok && res.status !== 404) throw new Error(`DELETE ${path}: ${res.status} ${res.statusText}`);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export { s3SignedResolver };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
function validateSchemaForVersion(schema, formatVersion) {
|
|
2
|
+
for (const field of schema.fields) validateFieldForVersion(field, formatVersion, field.name);
|
|
3
|
+
}
|
|
4
|
+
function maxFieldId(fields = []) {
|
|
5
|
+
let max = 0;
|
|
6
|
+
for (const field of fields) {
|
|
7
|
+
if (max < field.id) max = field.id;
|
|
8
|
+
const nested = maxNestedFieldId(field.type);
|
|
9
|
+
if (max < nested) max = nested;
|
|
10
|
+
}
|
|
11
|
+
return max;
|
|
12
|
+
}
|
|
13
|
+
function maxNestedFieldId(type) {
|
|
14
|
+
if (typeof type === "string") return 0;
|
|
15
|
+
if (type.type === "list") {
|
|
16
|
+
const elementId = type["element-id"] ?? 0;
|
|
17
|
+
return Math.max(elementId, maxNestedFieldId(type.element));
|
|
18
|
+
}
|
|
19
|
+
if (type.type === "map") {
|
|
20
|
+
const keyId = type["key-id"] ?? 0;
|
|
21
|
+
const valueId = type["value-id"] ?? 0;
|
|
22
|
+
return Math.max(keyId, valueId, maxNestedFieldId(type.key), maxNestedFieldId(type.value));
|
|
23
|
+
}
|
|
24
|
+
if (type.type === "struct") return maxFieldId(type.fields);
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
const MAX_USER_FIELD_ID = 2147483447;
|
|
28
|
+
function validateFieldForVersion(field, formatVersion, path) {
|
|
29
|
+
if (typeof field.id === "number" && field.id > MAX_USER_FIELD_ID) throw new Error(`field id ${field.id} is in the reserved range (> ${MAX_USER_FIELD_ID}) (field: ${path})`);
|
|
30
|
+
if (formatVersion < 3) {
|
|
31
|
+
checkTypeForV2(field.type, path);
|
|
32
|
+
if (field["initial-default"] !== void 0) throw new Error(`initial-default requires format-version 3 (field: ${path})`);
|
|
33
|
+
if (field["write-default"] !== void 0) throw new Error(`write-default requires format-version 3 (field: ${path})`);
|
|
34
|
+
} else checkV3Default(field, path);
|
|
35
|
+
checkNestedFieldsForVersion(field.type, formatVersion, path);
|
|
36
|
+
}
|
|
37
|
+
function checkTypeForV2(type, path) {
|
|
38
|
+
if (typeof type === "string") {
|
|
39
|
+
if (type === "unknown" || type === "variant" || type === "timestamp_ns" || type === "timestamptz_ns" || type === "geometry" || type.startsWith("geometry(") || type === "geography" || type.startsWith("geography(")) throw new Error(`type ${type} requires format-version 3 (field: ${path})`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (type.type === "struct") for (const f of type.fields) checkTypeForV2(f.type, `${path}.${f.name}`);
|
|
43
|
+
else if (type.type === "list") checkTypeForV2(type.element, `${path}.element`);
|
|
44
|
+
else if (type.type === "map") {
|
|
45
|
+
checkTypeForV2(type.key, `${path}.key`);
|
|
46
|
+
checkTypeForV2(type.value, `${path}.value`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function checkV3Default(field, path) {
|
|
50
|
+
const type = typeName(field.type);
|
|
51
|
+
if (!requiresNullDefault(type)) return;
|
|
52
|
+
for (const key of ["initial-default", "write-default"]) if (field[key] != null) throw new Error(`${key} for field ${path} of type ${type} must default to null`);
|
|
53
|
+
}
|
|
54
|
+
function checkNestedFieldsForVersion(type, formatVersion, path) {
|
|
55
|
+
if (typeof type === "string") return;
|
|
56
|
+
if (type.type === "struct") for (const f of type.fields) validateFieldForVersion(f, formatVersion, `${path}.${f.name}`);
|
|
57
|
+
else if (type.type === "list") {
|
|
58
|
+
checkReservedFieldId(type["element-id"], `${path}.element`);
|
|
59
|
+
checkNestedFieldsForVersion(type.element, formatVersion, `${path}.element`);
|
|
60
|
+
} else if (type.type === "map") {
|
|
61
|
+
checkReservedFieldId(type["key-id"], `${path}.key`);
|
|
62
|
+
checkReservedFieldId(type["value-id"], `${path}.value`);
|
|
63
|
+
checkNestedFieldsForVersion(type.key, formatVersion, `${path}.key`);
|
|
64
|
+
checkNestedFieldsForVersion(type.value, formatVersion, `${path}.value`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function checkReservedFieldId(id, path) {
|
|
68
|
+
if (typeof id === "number" && id > MAX_USER_FIELD_ID) throw new Error(`field id ${id} is in the reserved range (> ${MAX_USER_FIELD_ID}) (field: ${path})`);
|
|
69
|
+
}
|
|
70
|
+
function typeName(type) {
|
|
71
|
+
return typeof type === "string" ? type : type.type;
|
|
72
|
+
}
|
|
73
|
+
function requiresNullDefault(type) {
|
|
74
|
+
return type === "unknown" || type === "variant" || type === "geometry" || type.startsWith("geometry(") || type === "geography" || type.startsWith("geography(");
|
|
75
|
+
}
|
|
76
|
+
export { maxFieldId, typeName, validateSchemaForVersion };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const enc = new TextEncoder();
|
|
2
|
+
async function signRequest(method, url, body, { accessKeyId, secretAccessKey, sessionToken, region, service, extraHeaders = {} }) {
|
|
3
|
+
const u = new URL(url);
|
|
4
|
+
const xAmzDate = (/* @__PURE__ */ new Date()).toISOString().replace(/[-:]|\.\d{3}/g, "");
|
|
5
|
+
const dStamp = xAmzDate.slice(0, 8);
|
|
6
|
+
const payloadHash = body !== void 0 ? await sha256hex(body) : await sha256hex("");
|
|
7
|
+
const lc = {};
|
|
8
|
+
for (const [k, v] of Object.entries(extraHeaders)) lc[k.toLowerCase()] = String(v);
|
|
9
|
+
lc["host"] = u.host;
|
|
10
|
+
lc["x-amz-date"] = xAmzDate;
|
|
11
|
+
lc["x-amz-content-sha256"] = payloadHash;
|
|
12
|
+
if (sessionToken) lc["x-amz-security-token"] = sessionToken;
|
|
13
|
+
const sortedKeys = Object.keys(lc).sort();
|
|
14
|
+
const canonicalHeaders = sortedKeys.map((k) => `${k}:${lc[k].trim().replace(/\s+/g, " ")}\n`).join("");
|
|
15
|
+
const signedHeaders = sortedKeys.join(";");
|
|
16
|
+
const doubleEncodePath = service !== "s3";
|
|
17
|
+
const canonicalRequest = [
|
|
18
|
+
method,
|
|
19
|
+
u.pathname.split("/").map((seg) => doubleEncodePath ? encodeRfc3986(seg) : encodeRfc3986(decodeURIComponent(seg))).join("/"),
|
|
20
|
+
[...u.searchParams.entries()].sort((a, b) => {
|
|
21
|
+
if (a[0] !== b[0]) return a[0] < b[0] ? -1 : 1;
|
|
22
|
+
return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;
|
|
23
|
+
}).map(([k, v]) => `${encodeRfc3986(k)}=${encodeRfc3986(v)}`).join("&"),
|
|
24
|
+
canonicalHeaders,
|
|
25
|
+
signedHeaders,
|
|
26
|
+
payloadHash
|
|
27
|
+
].join("\n");
|
|
28
|
+
const credentialScope = `${dStamp}/${region}/${service}/aws4_request`;
|
|
29
|
+
const stringToSign = [
|
|
30
|
+
"AWS4-HMAC-SHA256",
|
|
31
|
+
xAmzDate,
|
|
32
|
+
credentialScope,
|
|
33
|
+
await sha256hex(canonicalRequest)
|
|
34
|
+
].join("\n");
|
|
35
|
+
const signature = bytesToHex(await hmac(await deriveSigningKey(secretAccessKey, dStamp, region, service), stringToSign));
|
|
36
|
+
const out = {};
|
|
37
|
+
for (const [k, v] of Object.entries(lc)) {
|
|
38
|
+
if (k === "host") continue;
|
|
39
|
+
out[k] = v;
|
|
40
|
+
}
|
|
41
|
+
out["Authorization"] = `AWS4-HMAC-SHA256 Credential=${accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`;
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
async function sha256hex(data) {
|
|
45
|
+
const bytes = typeof data === "string" ? enc.encode(data) : data;
|
|
46
|
+
const hash = await crypto.subtle.digest("SHA-256", bytes);
|
|
47
|
+
return bytesToHex(new Uint8Array(hash));
|
|
48
|
+
}
|
|
49
|
+
async function hmac(key, data) {
|
|
50
|
+
const keyBytes = typeof key === "string" ? enc.encode(key) : key;
|
|
51
|
+
const dataBytes = typeof data === "string" ? enc.encode(data) : data;
|
|
52
|
+
const cryptoKey = await crypto.subtle.importKey("raw", keyBytes, {
|
|
53
|
+
name: "HMAC",
|
|
54
|
+
hash: "SHA-256"
|
|
55
|
+
}, false, ["sign"]);
|
|
56
|
+
const sig = await crypto.subtle.sign("HMAC", cryptoKey, dataBytes);
|
|
57
|
+
return new Uint8Array(sig);
|
|
58
|
+
}
|
|
59
|
+
async function deriveSigningKey(secret, dateStamp, region, service) {
|
|
60
|
+
return await hmac(await hmac(await hmac(await hmac(`AWS4${secret}`, dateStamp), region), service), "aws4_request");
|
|
61
|
+
}
|
|
62
|
+
function encodeRfc3986(str) {
|
|
63
|
+
return encodeURIComponent(str).replace(/[!*'()]/g, (c) => "%" + c.charCodeAt(0).toString(16).toUpperCase());
|
|
64
|
+
}
|
|
65
|
+
function bytesToHex(bytes) {
|
|
66
|
+
let s = "";
|
|
67
|
+
for (const b of bytes) s += b.toString(16).padStart(2, "0");
|
|
68
|
+
return s;
|
|
69
|
+
}
|
|
70
|
+
export { signRequest };
|