@gscdump/lakehouse 7.6.0 → 7.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -0
- package/dist/_virtual/node_modules/.pnpm/hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5/node_modules/hyparquet-compressors/src/gzip.mjs +196 -0
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/column.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/datapage.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/index.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/indexes.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/metadata.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/node.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/avro/avro.budget.mjs +115 -0
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/avro/avro.metadata.mjs +97 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/avro/avro.read.mjs +67 -26
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/fetch.mjs +39 -40
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/manifest.mjs +49 -27
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/read.mjs +2 -2
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/fetch.d.mts +2 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/index.d.mts +1 -1
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/manifest.d.mts +18 -2
- package/dist/catalog.d.mts +13 -5
- package/dist/catalog.mjs +28 -13
- package/dist/dataset-runtime.mjs +2 -2
- package/dist/dataset.d.mts +4 -0
- package/dist/dataset.mjs +4 -1
- package/dist/index.d.mts +3 -1
- package/dist/manifest-merge.mjs +6 -6
- package/dist/manifest-read-limits.d.mts +2 -0
- package/dist/manifest-read-limits.mjs +26 -0
- package/dist/orphan-sweep.mjs +3 -3
- package/dist/resolver-byte-cache.mjs +85 -0
- package/dist/unsafe-raw.d.mts +6 -6
- package/dist/unsafe-raw.mjs +5 -5
- package/package.json +1 -1
- package/dist/_virtual/node_modules/.pnpm/hyparquet-compressors@1.1.2/node_modules/hyparquet-compressors/src/gzip.mjs +0 -173
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f/node_modules/icebird/src/avro/avro.metadata.mjs +0 -65
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f/node_modules/icebird/types/fetch.d.mts +0 -36
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.bitreader.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.blocks.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.context.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.contextmap.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.dictionary.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.huffman.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.prefix.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.streams.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/brotli.transform.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/compressors.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/gzip.huffman.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/index.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{hyparquet-compressors@1.1.2 → hyparquet-compressors@1.1.2_patch_hash=3f8f44805c034b2563763dcd5d37050ea6b1d5d45b46ea37adc4a721e748a1c5}/node_modules/hyparquet-compressors/src/lz4.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/avro/avro.write.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/catalog/file.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/catalog/loadTable.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/catalog/rest.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/create.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/delete.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/index.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/json.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/metadata.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/prune.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/puffin/deletion-vector.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/puffin/puffin.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/puffin/roaring.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/s3.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/schema.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/sigv4.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/sql/icebergDataSource.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/sql/icebergQuery.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/sql/whereFilter.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/types.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/utils.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/commit.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/conversions.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/delete-file.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/geospatial.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/manifest-list.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/manifest.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/parquet.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/partition.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/rewrite.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/serde.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/snapshot.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/sort.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/stage-deletion-vector.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/stage-position-delete.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/stage.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/stats.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/transform.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/src/write/write.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/catalog/file.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/catalog/rest.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/create.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/metadata.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/read.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/s3.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/sql/icebergDataSource.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/sql/icebergQuery.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.30_patch_hash=a400e343a199b1ca18601f96348011745ac6518fc07ffa71d5adfdd2ccc7d14f → icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471}/node_modules/icebird/types/write/write.d.mts +0 -0
package/dist/dataset-runtime.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
1
|
+
import { restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/catalog/rest.mjs";
|
|
2
2
|
import { connectIcebergCatalog, createIcebergAppendFileResolver, ensureIcebergNamespace, icebergAppendBatchesRetrying, icebergAppendRetrying, resolveIcebergAppendFiles, resolveIcebergDataFiles } from "./catalog.mjs";
|
|
3
|
-
import { icebergCreateTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
3
|
+
import { icebergCreateTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/write/write.mjs";
|
|
4
4
|
async function verifyDatasetTable(conn, table, schema, partitionSpec) {
|
|
5
5
|
const { metadata } = await restCatalogLoadTable(conn.catalog, {
|
|
6
6
|
namespace: conn.namespace,
|
package/dist/dataset.d.mts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { ManifestReadLimits } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/manifest.mjs";
|
|
1
2
|
import { CatalogCache } from "./catalog-cache.mjs";
|
|
3
|
+
import "./manifest-read-limits.mjs";
|
|
2
4
|
import { IcebergColumnType, IcebergPartitionField, IcebergTableSpec } from "./schema.mjs";
|
|
3
5
|
import { ManifestPartitionFilter, PartitionValueMatch } from "./partition-prune.mjs";
|
|
4
6
|
import { CommitRetryOptions, ConnectIcebergOptions, IcebergCatalogConfig, IcebergConnection, IcebergListedDataFile, IcebergPartitionSpec, IcebergSchema, IcebergSortOrder, IcebergTableOpResult, QueryProfiler } from "./catalog.mjs";
|
|
@@ -97,6 +99,8 @@ export interface ResolveDataFilesOptions {
|
|
|
97
99
|
cache?: CatalogCache;
|
|
98
100
|
clock?: () => number;
|
|
99
101
|
profiler?: QueryProfiler;
|
|
102
|
+
/** Uncached Avro read limits; catalog metadata/snapshot caching is unchanged. */
|
|
103
|
+
readLimits?: ManifestReadLimits;
|
|
100
104
|
}
|
|
101
105
|
export interface IcebergDataset {
|
|
102
106
|
readonly def: IcebergDatasetDef;
|
package/dist/dataset.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { coerceBigIntToNumber } from "./bigint.mjs";
|
|
2
|
+
import { captureManifestReadLimits } from "./manifest-read-limits.mjs";
|
|
2
3
|
import { buildManifestPartitionFilter } from "./partition-prune.mjs";
|
|
3
4
|
import { ICEBERG_TYPE_MAP } from "./schema.mjs";
|
|
4
5
|
const INT32_MIN = -2147483648;
|
|
@@ -299,6 +300,7 @@ function defineIcebergDataset(def) {
|
|
|
299
300
|
});
|
|
300
301
|
}
|
|
301
302
|
async function resolveDataFiles(conn, identity, range, dims, opts = {}) {
|
|
303
|
+
const readLimits = captureManifestReadLimits(opts.readLimits);
|
|
302
304
|
const { resolveDatasetDataFiles } = await import("./dataset-runtime.mjs");
|
|
303
305
|
return resolveDatasetDataFiles(conn, {
|
|
304
306
|
namespace: def.namespace,
|
|
@@ -308,7 +310,8 @@ function defineIcebergDataset(def) {
|
|
|
308
310
|
range,
|
|
309
311
|
cache: opts.cache,
|
|
310
312
|
clock: opts.clock,
|
|
311
|
-
profiler: opts.profiler
|
|
313
|
+
profiler: opts.profiler,
|
|
314
|
+
readLimits
|
|
312
315
|
});
|
|
313
316
|
}
|
|
314
317
|
return {
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { bigintJsonReplacer, coerceBigIntToNumber, encodeJsonBigintSafe, stringifyBigintSafe } from "./bigint.mjs";
|
|
2
|
+
import { ManifestReadLimits } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/manifest.mjs";
|
|
2
3
|
import { CatalogCache, CatalogCacheGetOutcome, cacheGet, cachePut } from "./catalog-cache.mjs";
|
|
4
|
+
import "./manifest-read-limits.mjs";
|
|
3
5
|
import { DEFAULT_PARTITION_KEY_ENCODING, ICEBERG_TYPE_MAP, IcebergColumn, IcebergColumnType, IcebergPartitionField, IcebergPartitionTransform, IcebergPrimitiveType, IcebergS3Config, IcebergTableSpec, PartitionKeyEncoding } from "./schema.mjs";
|
|
4
6
|
import { IcebergFieldSummary, ManifestPartitionFilter, PartitionValueMatch, buildManifestPartitionFilter } from "./partition-prune.mjs";
|
|
5
7
|
import { CommitRetryOptions, ConnectIcebergOptions, IcebergCatalogConfig, IcebergConnection, IcebergDataFileDateBounds, IcebergListedDataFile, IcebergPartitionSpec, IcebergPartitionSpecField, IcebergSchema, IcebergSchemaField, IcebergSortOrder, IcebergSortOrderField, IcebergTableOpResult, QueryProfiler, ResolveIcebergDataFilesOptions, catalogCacheScope, connectIcebergCatalog, createIcebergNamespace, dropIcebergTables, ensureIcebergNamespace, invalidateSnapshotRef, listIcebergTables, resolveIcebergDataFiles } from "./catalog.mjs";
|
|
6
8
|
import { AppendBatchSource, AppendBatchesOptions, AppendBatchesResult, AppendCommitOptions, AppendResult, AppendSink, AppendSinkCloseResult, AppendSinkOptions, DatasetDim, DatasetIdentity, IcebergDataset, IcebergDatasetColumnDef, IcebergDatasetDef, IcebergDatasetLedger, ResolveDataFilesOptions, defineIcebergDataset, deriveTableSpec } from "./dataset.mjs";
|
|
7
9
|
import { toIcebergDayCount } from "./date.mjs";
|
|
8
|
-
export { type AppendBatchSource, type AppendBatchesOptions, type AppendBatchesResult, type AppendCommitOptions, type AppendResult, type AppendSink, type AppendSinkCloseResult, type AppendSinkOptions, type CatalogCache, type CatalogCacheGetOutcome, type CommitRetryOptions, type ConnectIcebergOptions, DEFAULT_PARTITION_KEY_ENCODING, type DatasetDim, type DatasetIdentity, ICEBERG_TYPE_MAP, type IcebergCatalogConfig, type IcebergColumn, type IcebergColumnType, type IcebergConnection, type IcebergDataFileDateBounds, type IcebergDataset, type IcebergDatasetColumnDef, type IcebergDatasetDef, type IcebergDatasetLedger, type IcebergFieldSummary, type IcebergListedDataFile, type IcebergPartitionField, type IcebergPartitionSpec, type IcebergPartitionSpecField, type IcebergPartitionTransform, type IcebergPrimitiveType, type IcebergS3Config, type IcebergSchema, type IcebergSchemaField, type IcebergSortOrder, type IcebergSortOrderField, type IcebergTableOpResult, type IcebergTableSpec, type ManifestPartitionFilter, type PartitionKeyEncoding, type PartitionValueMatch, type QueryProfiler, type ResolveDataFilesOptions, type ResolveIcebergDataFilesOptions, bigintJsonReplacer, buildManifestPartitionFilter, cacheGet, cachePut, catalogCacheScope, coerceBigIntToNumber, connectIcebergCatalog, createIcebergNamespace, defineIcebergDataset, deriveTableSpec, dropIcebergTables, encodeJsonBigintSafe, ensureIcebergNamespace, invalidateSnapshotRef, listIcebergTables, resolveIcebergDataFiles, stringifyBigintSafe, toIcebergDayCount };
|
|
10
|
+
export { type AppendBatchSource, type AppendBatchesOptions, type AppendBatchesResult, type AppendCommitOptions, type AppendResult, type AppendSink, type AppendSinkCloseResult, type AppendSinkOptions, type CatalogCache, type CatalogCacheGetOutcome, type CommitRetryOptions, type ConnectIcebergOptions, DEFAULT_PARTITION_KEY_ENCODING, type DatasetDim, type DatasetIdentity, ICEBERG_TYPE_MAP, type IcebergCatalogConfig, type IcebergColumn, type IcebergColumnType, type IcebergConnection, type IcebergDataFileDateBounds, type IcebergDataset, type IcebergDatasetColumnDef, type IcebergDatasetDef, type IcebergDatasetLedger, type IcebergFieldSummary, type IcebergListedDataFile, type IcebergPartitionField, type IcebergPartitionSpec, type IcebergPartitionSpecField, type IcebergPartitionTransform, type IcebergPrimitiveType, type IcebergS3Config, type IcebergSchema, type IcebergSchemaField, type IcebergSortOrder, type IcebergSortOrderField, type IcebergTableOpResult, type IcebergTableSpec, type ManifestPartitionFilter, type ManifestReadLimits, type PartitionKeyEncoding, type PartitionValueMatch, type QueryProfiler, type ResolveDataFilesOptions, type ResolveIcebergDataFilesOptions, bigintJsonReplacer, buildManifestPartitionFilter, cacheGet, cachePut, catalogCacheScope, coerceBigIntToNumber, connectIcebergCatalog, createIcebergNamespace, defineIcebergDataset, deriveTableSpec, dropIcebergTables, encodeJsonBigintSafe, ensureIcebergNamespace, invalidateSnapshotRef, listIcebergTables, resolveIcebergDataFiles, stringifyBigintSafe, toIcebergDayCount };
|
package/dist/manifest-merge.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { restCatalogLoadTable, restCatalogUpdateTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
1
|
+
import { restCatalogLoadTable, restCatalogUpdateTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/catalog/rest.mjs";
|
|
2
2
|
import { ByteWriter } from "./_virtual/node_modules/.pnpm/hyparquet-writer@0.16.10_patch_hash=d26d002aede61ad95dd633d6557b56897cdcbc45dfc3a5d93fa0e9075ad5425f/node_modules/hyparquet-writer/src/bytewriter.mjs";
|
|
3
3
|
import "./_virtual/node_modules/.pnpm/hyparquet-writer@0.16.10_patch_hash=d26d002aede61ad95dd633d6557b56897cdcbc45dfc3a5d93fa0e9075ad5425f/node_modules/hyparquet-writer/src/node.mjs";
|
|
4
|
-
import { uuid4 } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
5
|
-
import { icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
4
|
+
import { uuid4 } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/utils.mjs";
|
|
5
|
+
import { icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/manifest.mjs";
|
|
6
6
|
import { invalidateSnapshotRef } from "./catalog.mjs";
|
|
7
|
-
import { writeExistingDataManifest } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
8
|
-
import { buildPartitionSummaries, buildSnapshotUpdate, loadPriorManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
9
|
-
import { newSnapshotId } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
7
|
+
import { writeExistingDataManifest } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/write/manifest.mjs";
|
|
8
|
+
import { buildPartitionSummaries, buildSnapshotUpdate, loadPriorManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/write/snapshot.mjs";
|
|
9
|
+
import { newSnapshotId } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/write/stage.mjs";
|
|
10
10
|
const MAX_MANIFEST_BYTES = 4194304;
|
|
11
11
|
const MAX_INPUT_BYTES = 8388608;
|
|
12
12
|
const MAX_ENTRIES = 1e4;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const fields = [
|
|
2
|
+
"maxObjectBytes",
|
|
3
|
+
"maxTotalObjectBytes",
|
|
4
|
+
"maxManifests",
|
|
5
|
+
"maxEntries",
|
|
6
|
+
"maxInflatedBlockBytes",
|
|
7
|
+
"maxTotalInflatedBytes",
|
|
8
|
+
"maxValueBytes",
|
|
9
|
+
"maxDecodedValues",
|
|
10
|
+
"maxHeaderBytes",
|
|
11
|
+
"maxSchemaDepth"
|
|
12
|
+
];
|
|
13
|
+
function captureManifestReadLimits(options) {
|
|
14
|
+
if (options === void 0) return void 0;
|
|
15
|
+
if (!options || typeof options !== "object" || Array.isArray(options)) throw new TypeError("Invalid manifest read limits");
|
|
16
|
+
for (const key of Object.keys(options)) if (!fields.includes(key)) throw new TypeError(`Unknown manifest read limit: ${key}`);
|
|
17
|
+
const limits = {};
|
|
18
|
+
for (const key of fields) {
|
|
19
|
+
const value = options[key];
|
|
20
|
+
if (!Number.isSafeInteger(value) || value <= 0) throw new RangeError(`Invalid manifest read limit: ${key}`);
|
|
21
|
+
limits[key] = value;
|
|
22
|
+
}
|
|
23
|
+
if (limits.maxSchemaDepth > 128) throw new RangeError("Manifest schema depth must not exceed 128");
|
|
24
|
+
return Object.freeze(limits);
|
|
25
|
+
}
|
|
26
|
+
export { captureManifestReadLimits };
|
package/dist/orphan-sweep.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { restCatalogListTables, restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
2
|
-
import { icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
3
|
-
import "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
1
|
+
import { restCatalogListTables, restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/catalog/rest.mjs";
|
|
2
|
+
import { icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/manifest.mjs";
|
|
3
|
+
import "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/index.mjs";
|
|
4
4
|
const DEFAULT_GRACE_HOURS = 48;
|
|
5
5
|
const DEFAULT_MAX_DELETES = 500;
|
|
6
6
|
const DEFAULT_IO_CONCURRENCY = 4;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { cachedAsyncBuffer } from "./_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/utils.mjs";
|
|
2
|
+
import "./_virtual/node_modules/.pnpm/hyparquet@1.31.1/node_modules/hyparquet/src/node.mjs";
|
|
3
|
+
const CONNECTION_CACHE_MAX_BYTES = 16777216;
|
|
4
|
+
function byteCappedCachingResolver(base, maxBytes = CONNECTION_CACHE_MAX_BYTES) {
|
|
5
|
+
const entries = /* @__PURE__ */ new Map();
|
|
6
|
+
let totalBytes = 0;
|
|
7
|
+
function touch(path, entry) {
|
|
8
|
+
entries.delete(path);
|
|
9
|
+
entries.set(path, entry);
|
|
10
|
+
}
|
|
11
|
+
function evict(path, account) {
|
|
12
|
+
if (entries.get(path)?.account !== account) return;
|
|
13
|
+
entries.delete(path);
|
|
14
|
+
totalBytes -= account.bytes;
|
|
15
|
+
}
|
|
16
|
+
function retain(path, account, bytes) {
|
|
17
|
+
const entry = entries.get(path);
|
|
18
|
+
if (entry?.account !== account) return;
|
|
19
|
+
account.bytes += bytes;
|
|
20
|
+
totalBytes += bytes;
|
|
21
|
+
touch(path, entry);
|
|
22
|
+
if (account.bytes > maxBytes) {
|
|
23
|
+
evict(path, account);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
for (const [oldest, old] of entries) {
|
|
27
|
+
if (totalBytes <= maxBytes) break;
|
|
28
|
+
if (old.account.bytes > 0) evict(oldest, old.account);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function counted(path, account, file) {
|
|
32
|
+
return {
|
|
33
|
+
byteLength: file.byteLength,
|
|
34
|
+
slice(start, end) {
|
|
35
|
+
return Promise.resolve(file.slice(start, end)).then((bytes) => {
|
|
36
|
+
retain(path, account, bytes.byteLength);
|
|
37
|
+
return bytes;
|
|
38
|
+
}, (error) => {
|
|
39
|
+
evict(path, account);
|
|
40
|
+
throw error;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function invalidate(path) {
|
|
46
|
+
const entry = entries.get(path);
|
|
47
|
+
if (entry) evict(path, entry.account);
|
|
48
|
+
}
|
|
49
|
+
const out = { reader(path, byteLength) {
|
|
50
|
+
const hit = entries.get(path);
|
|
51
|
+
if (hit) {
|
|
52
|
+
touch(path, hit);
|
|
53
|
+
return hit.buffer;
|
|
54
|
+
}
|
|
55
|
+
const account = { bytes: 0 };
|
|
56
|
+
const buffer = (async () => cachedAsyncBuffer(counted(path, account, await base.reader(path, byteLength))))();
|
|
57
|
+
entries.set(path, {
|
|
58
|
+
buffer,
|
|
59
|
+
account
|
|
60
|
+
});
|
|
61
|
+
buffer.catch(() => evict(path, account));
|
|
62
|
+
return buffer;
|
|
63
|
+
} };
|
|
64
|
+
if (base.writer) {
|
|
65
|
+
const baseWriter = base.writer;
|
|
66
|
+
out.writer = (path, options) => {
|
|
67
|
+
const writer = baseWriter(path, options);
|
|
68
|
+
const finish = writer.finish.bind(writer);
|
|
69
|
+
writer.finish = async function() {
|
|
70
|
+
await finish();
|
|
71
|
+
invalidate(path);
|
|
72
|
+
};
|
|
73
|
+
return writer;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (base.deleter) {
|
|
77
|
+
const baseDeleter = base.deleter;
|
|
78
|
+
out.deleter = async (path) => {
|
|
79
|
+
await baseDeleter(path);
|
|
80
|
+
invalidate(path);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
export { CONNECTION_CACHE_MAX_BYTES, byteCappedCachingResolver };
|
package/dist/unsafe-raw.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
2
|
-
import { icebergAppend, icebergCreateTable, icebergDropTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
3
|
-
import { restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
1
|
+
import { ManifestReadLimits, icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/manifest.mjs";
|
|
2
|
+
import { icebergAppend, icebergCreateTable, icebergDropTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/write/write.mjs";
|
|
3
|
+
import { restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/catalog/rest.mjs";
|
|
4
4
|
import { icebergAppendRetrying } from "./catalog.mjs";
|
|
5
|
-
import { s3SignedResolver } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
6
|
-
import "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
7
|
-
export { icebergAppend, icebergAppendRetrying, icebergCreateTable, icebergDropTable, icebergManifests, restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable, s3SignedResolver };
|
|
5
|
+
import { s3SignedResolver } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/s3.mjs";
|
|
6
|
+
import "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/types/index.mjs";
|
|
7
|
+
export { type ManifestReadLimits, icebergAppend, icebergAppendRetrying, icebergCreateTable, icebergDropTable, icebergManifests, restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable, s3SignedResolver };
|
package/dist/unsafe-raw.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
2
|
-
import { icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
3
|
-
import { s3SignedResolver } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
1
|
+
import { restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/catalog/rest.mjs";
|
|
2
|
+
import { icebergManifests } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/manifest.mjs";
|
|
3
|
+
import { s3SignedResolver } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/s3.mjs";
|
|
4
4
|
import { icebergAppendRetrying } from "./catalog.mjs";
|
|
5
|
-
import { icebergAppend, icebergCreateTable, icebergDropTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
6
|
-
import "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=
|
|
5
|
+
import { icebergAppend, icebergCreateTable, icebergDropTable } from "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/write/write.mjs";
|
|
6
|
+
import "./_virtual/node_modules/.pnpm/icebird@0.8.30_patch_hash=1359a91da68522a736babe444880ae391f19455fbe47c346f76cec92c5c2e471/node_modules/icebird/src/index.mjs";
|
|
7
7
|
export { icebergAppend, icebergAppendRetrying, icebergCreateTable, icebergDropTable, icebergManifests, restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable, s3SignedResolver };
|
package/package.json
CHANGED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { fixedDistance, fixedDistanceExtraBits, fixedDistanceMap, fixedLength, fixedLengthExtraBits, fixedLengthMap, huffMap } from "./gzip.huffman.mjs";
|
|
2
|
-
const codeLengthIndexMap = new Uint8Array([
|
|
3
|
-
16,
|
|
4
|
-
17,
|
|
5
|
-
18,
|
|
6
|
-
0,
|
|
7
|
-
8,
|
|
8
|
-
7,
|
|
9
|
-
9,
|
|
10
|
-
6,
|
|
11
|
-
10,
|
|
12
|
-
5,
|
|
13
|
-
11,
|
|
14
|
-
4,
|
|
15
|
-
12,
|
|
16
|
-
3,
|
|
17
|
-
13,
|
|
18
|
-
2,
|
|
19
|
-
14,
|
|
20
|
-
1,
|
|
21
|
-
15
|
|
22
|
-
]);
|
|
23
|
-
function bits(input, pos, mask) {
|
|
24
|
-
const o = pos / 8 | 0;
|
|
25
|
-
return (input[o] | input[o + 1] << 8) >> (pos & 7) & mask;
|
|
26
|
-
}
|
|
27
|
-
function bits16(d, p) {
|
|
28
|
-
const o = p / 8 | 0;
|
|
29
|
-
return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);
|
|
30
|
-
}
|
|
31
|
-
function shft(p) {
|
|
32
|
-
return (p + 7) / 8 | 0;
|
|
33
|
-
}
|
|
34
|
-
function gzipStart(input, i) {
|
|
35
|
-
if (input[i++] !== 31 || input[i++] !== 139 || input[i++] !== 8) return 0;
|
|
36
|
-
const flag = input[i++];
|
|
37
|
-
i += 6;
|
|
38
|
-
if (flag & 4) i += (input[i + 10] | input[i + 11] << 8) + 2;
|
|
39
|
-
for (let zs = (flag >> 3 & 1) + (flag >> 4 & 1); zs > 0; zs -= Number(!input[i++]));
|
|
40
|
-
return i + (flag & 2);
|
|
41
|
-
}
|
|
42
|
-
function gunzip(input, output, inputIndex = 0, outputIndex = 0) {
|
|
43
|
-
let out = output ?? /* @__PURE__ */ new Uint8Array(1024);
|
|
44
|
-
if (!(input.length - inputIndex)) return out;
|
|
45
|
-
const payloadStart = gzipStart(input, inputIndex);
|
|
46
|
-
if (payloadStart === input.length - 8) return out;
|
|
47
|
-
if (payloadStart > input.length - 8) throw new Error("unexpected EOF");
|
|
48
|
-
let pos = payloadStart * 8;
|
|
49
|
-
let final = 0;
|
|
50
|
-
let lengthBits = 0;
|
|
51
|
-
let distBits = 0;
|
|
52
|
-
let lengthMap;
|
|
53
|
-
let distMap;
|
|
54
|
-
const totalBits = input.length * 8;
|
|
55
|
-
function ensureSize(length) {
|
|
56
|
-
if (!output && length > out.length) {
|
|
57
|
-
const old = out;
|
|
58
|
-
out = new Uint8Array(Math.max(old.length * 2, length));
|
|
59
|
-
out.set(old);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
do {
|
|
63
|
-
if (!lengthMap) {
|
|
64
|
-
final = bits(input, pos, 1);
|
|
65
|
-
const type = bits(input, pos + 1, 3);
|
|
66
|
-
pos += 3;
|
|
67
|
-
if (!type) {
|
|
68
|
-
const s = shft(pos) + 4;
|
|
69
|
-
const l = input[s - 4] | input[s - 3] << 8;
|
|
70
|
-
const t = s + l;
|
|
71
|
-
if (t > input.length) throw new Error("unexpected EOF");
|
|
72
|
-
ensureSize(outputIndex + l);
|
|
73
|
-
out.set(input.subarray(s, t), outputIndex);
|
|
74
|
-
outputIndex += l;
|
|
75
|
-
pos = t * 8;
|
|
76
|
-
continue;
|
|
77
|
-
} else if (type === 1) {
|
|
78
|
-
lengthMap = fixedLengthMap;
|
|
79
|
-
distMap = fixedDistanceMap;
|
|
80
|
-
lengthBits = 9;
|
|
81
|
-
distBits = 5;
|
|
82
|
-
} else if (type === 2) {
|
|
83
|
-
const hLiteral = bits(input, pos, 31) + 257;
|
|
84
|
-
const hcLengths = bits(input, pos + 10, 15) + 4;
|
|
85
|
-
const tl = hLiteral + bits(input, pos + 5, 31) + 1;
|
|
86
|
-
pos += 14;
|
|
87
|
-
const lengthDistanceTree = new Uint8Array(tl);
|
|
88
|
-
const codeLengthTree = /* @__PURE__ */ new Uint8Array(19);
|
|
89
|
-
for (let i = 0; i < hcLengths; ++i) codeLengthTree[codeLengthIndexMap[i]] = bits(input, pos + i * 3, 7);
|
|
90
|
-
pos += hcLengths * 3;
|
|
91
|
-
const codeLengthBits = Math.max(...codeLengthTree);
|
|
92
|
-
const clbMask = (1 << codeLengthBits) - 1;
|
|
93
|
-
const codeLengthMap = huffMap(codeLengthTree, codeLengthBits, 1);
|
|
94
|
-
for (let i = 0; i < tl;) {
|
|
95
|
-
const r = codeLengthMap[bits(input, pos, clbMask)];
|
|
96
|
-
pos += r & 15;
|
|
97
|
-
const symbol = r >> 4;
|
|
98
|
-
if (symbol < 16) lengthDistanceTree[i++] = symbol;
|
|
99
|
-
else {
|
|
100
|
-
let copy = 0;
|
|
101
|
-
let n = 0;
|
|
102
|
-
if (symbol === 16) {
|
|
103
|
-
n = 3 + bits(input, pos, 3);
|
|
104
|
-
pos += 2;
|
|
105
|
-
copy = lengthDistanceTree[i - 1];
|
|
106
|
-
} else if (symbol === 17) {
|
|
107
|
-
n = 3 + bits(input, pos, 7);
|
|
108
|
-
pos += 3;
|
|
109
|
-
} else if (symbol === 18) {
|
|
110
|
-
n = 11 + bits(input, pos, 127);
|
|
111
|
-
pos += 7;
|
|
112
|
-
}
|
|
113
|
-
while (n--) lengthDistanceTree[i++] = copy;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
const lengthTree = lengthDistanceTree.subarray(0, hLiteral);
|
|
117
|
-
const distanceTree = lengthDistanceTree.subarray(hLiteral);
|
|
118
|
-
lengthBits = Math.max(...lengthTree);
|
|
119
|
-
distBits = Math.max(...distanceTree);
|
|
120
|
-
lengthMap = huffMap(lengthTree, lengthBits, 1);
|
|
121
|
-
distMap = huffMap(distanceTree, distBits, 1);
|
|
122
|
-
} else throw new Error("invalid block type");
|
|
123
|
-
if (pos > totalBits) throw new Error("unexpected EOF");
|
|
124
|
-
}
|
|
125
|
-
ensureSize(outputIndex + 131072);
|
|
126
|
-
const lms = (1 << lengthBits) - 1;
|
|
127
|
-
const dms = (1 << distBits) - 1;
|
|
128
|
-
for (;;) {
|
|
129
|
-
const code = lengthMap[bits16(input, pos) & lms];
|
|
130
|
-
const sym = code >> 4;
|
|
131
|
-
pos += code & 15;
|
|
132
|
-
if (pos > totalBits) throw new Error("unexpected EOF");
|
|
133
|
-
if (!code) throw new Error("invalid length/literal");
|
|
134
|
-
if (sym < 256) out[outputIndex++] = sym;
|
|
135
|
-
else if (sym === 256) {
|
|
136
|
-
lengthMap = void 0;
|
|
137
|
-
break;
|
|
138
|
-
} else {
|
|
139
|
-
let add = sym - 254;
|
|
140
|
-
if (sym > 264) {
|
|
141
|
-
const index = sym - 257;
|
|
142
|
-
const b = fixedLengthExtraBits[index];
|
|
143
|
-
add = bits(input, pos, (1 << b) - 1) + fixedLength[index];
|
|
144
|
-
pos += b;
|
|
145
|
-
}
|
|
146
|
-
if (!distMap) throw new Error("invalid distance map");
|
|
147
|
-
const d = distMap[bits16(input, pos) & dms];
|
|
148
|
-
const dsym = d >> 4;
|
|
149
|
-
if (!d) throw new Error("invalid distance");
|
|
150
|
-
pos += d & 15;
|
|
151
|
-
let dt = fixedDistance[dsym];
|
|
152
|
-
if (dsym > 3) {
|
|
153
|
-
const b = fixedDistanceExtraBits[dsym];
|
|
154
|
-
dt += bits16(input, pos) & (1 << b) - 1;
|
|
155
|
-
pos += b;
|
|
156
|
-
}
|
|
157
|
-
if (pos > totalBits) throw new Error("unexpected EOF");
|
|
158
|
-
const end = outputIndex + add;
|
|
159
|
-
if (outputIndex < dt) throw new Error("unexpected dictionary case");
|
|
160
|
-
ensureSize(end);
|
|
161
|
-
for (; outputIndex < end; outputIndex++) out[outputIndex] = out[outputIndex - dt];
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
if (lengthMap) final = 1;
|
|
165
|
-
} while (!final);
|
|
166
|
-
if (outputIndex < out.length) {
|
|
167
|
-
const nextBlock = Math.ceil(pos / 8) + 8;
|
|
168
|
-
gunzip(input, out, nextBlock, outputIndex);
|
|
169
|
-
}
|
|
170
|
-
if (!output) return out.subarray(0, outputIndex);
|
|
171
|
-
return out;
|
|
172
|
-
}
|
|
173
|
-
export { gunzip };
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
const smallLongs = Array.from({ length: 128 }, (_, i) => BigInt(i >>> 1 ^ -(i & 1)));
|
|
2
|
-
function readZigZag(reader) {
|
|
3
|
-
let result = 0;
|
|
4
|
-
let shift = 0;
|
|
5
|
-
while (true) {
|
|
6
|
-
const byte = reader.view.getUint8(reader.offset++);
|
|
7
|
-
result |= (byte & 127) << shift;
|
|
8
|
-
if (!(byte & 128)) return result >>> 1 ^ -(result & 1);
|
|
9
|
-
shift += 7;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function readZigZagBigInt(reader) {
|
|
13
|
-
const first = reader.view.getUint8(reader.offset++);
|
|
14
|
-
if (first < 128) return smallLongs[first];
|
|
15
|
-
let prefix = first & 127;
|
|
16
|
-
for (let shift = 7; shift < 28; shift += 7) {
|
|
17
|
-
const byte = reader.view.getUint8(reader.offset++);
|
|
18
|
-
prefix |= (byte & 127) << shift;
|
|
19
|
-
if (!(byte & 128)) return BigInt(prefix >>> 1 ^ -(prefix & 1));
|
|
20
|
-
}
|
|
21
|
-
let high = 0;
|
|
22
|
-
let factor = 1;
|
|
23
|
-
while (true) {
|
|
24
|
-
const byte = reader.view.getUint8(reader.offset++);
|
|
25
|
-
high += (byte & 127) * factor;
|
|
26
|
-
if (!(byte & 128)) {
|
|
27
|
-
const result = BigInt(high) << 27n | BigInt(prefix >>> 1);
|
|
28
|
-
return prefix & 1 ? ~result : result;
|
|
29
|
-
}
|
|
30
|
-
factor *= 128;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function readAvroString(reader) {
|
|
34
|
-
const length = readZigZag(reader);
|
|
35
|
-
const bytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, length);
|
|
36
|
-
reader.offset += length;
|
|
37
|
-
return new TextDecoder().decode(bytes);
|
|
38
|
-
}
|
|
39
|
-
function avroMetadata(reader) {
|
|
40
|
-
if (reader.view.getUint32(reader.offset) !== 1331849729) throw new Error("avro invalid magic bytes");
|
|
41
|
-
reader.offset += 4;
|
|
42
|
-
const metadata = {};
|
|
43
|
-
let mapCount = readZigZag(reader);
|
|
44
|
-
while (mapCount !== 0) {
|
|
45
|
-
if (mapCount < 0) {
|
|
46
|
-
mapCount = -mapCount;
|
|
47
|
-
readZigZag(reader);
|
|
48
|
-
}
|
|
49
|
-
for (let i = 0; i < mapCount; i++) {
|
|
50
|
-
const key = readAvroString(reader);
|
|
51
|
-
metadata[key] = readAvroString(reader);
|
|
52
|
-
}
|
|
53
|
-
mapCount = readZigZag(reader);
|
|
54
|
-
}
|
|
55
|
-
metadata["avro.schema"] = JSON.parse(metadata["avro.schema"]);
|
|
56
|
-
if (metadata["schema"]) metadata["schema"] = JSON.parse(metadata["schema"]);
|
|
57
|
-
if (metadata["iceberg.schema"]) metadata["iceberg.schema"] = JSON.parse(metadata["iceberg.schema"]);
|
|
58
|
-
const syncMarker = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, 16);
|
|
59
|
-
reader.offset += 16;
|
|
60
|
-
return {
|
|
61
|
-
metadata,
|
|
62
|
-
syncMarker
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
export { avroMetadata, readZigZag, readZigZagBigInt };
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import "../../../../hyparquet@1.31.1/node_modules/hyparquet/types/node.mjs";
|
|
2
|
-
import { Resolver } from "../src/types.mjs";
|
|
3
|
-
/**
|
|
4
|
-
* Wrap a `Resolver` so reads of the same path share one HTTP fetch and
|
|
5
|
-
* subsequent range reads share one in-memory buffer. Writes and deletes
|
|
6
|
-
* through the same resolver invalidate the cache entry for their path on
|
|
7
|
-
* success, so a commit pipeline (`icebergAppend` → reload metadata) sees the
|
|
8
|
-
* new bytes without manual invalidation.
|
|
9
|
-
*
|
|
10
|
-
* - `reader(path)` is memoized by path. The returned buffer is passed through
|
|
11
|
-
* `cachedAsyncBuffer` so range reads within a single file are also deduped.
|
|
12
|
-
* `byteLength` is a fetch hint and not part of the cache key — the bytes
|
|
13
|
-
* are the same either way.
|
|
14
|
-
* - `writer(path).finish()` invalidates the cache entry only when the
|
|
15
|
-
* underlying finish resolves; a rejected finish (e.g. an `If-None-Match: *`
|
|
16
|
-
* collision returning 412/409) leaves the cached bytes intact, since the
|
|
17
|
-
* server-side object hasn't changed.
|
|
18
|
-
* - `deleter(path)` invalidates the cache entry on success.
|
|
19
|
-
* - `writer` and `deleter` are omitted when the base resolver omits them, so
|
|
20
|
-
* wrapping a read-only resolver still yields a read-only resolver.
|
|
21
|
-
*
|
|
22
|
-
* Iceberg writes are almost entirely create-new-path (data parquets, manifest
|
|
23
|
-
* avros, snapshot avros, vN.metadata.json all live at fresh paths per
|
|
24
|
-
* commit). Only `version-hint.text` and equivalent catalog-pointer files are
|
|
25
|
-
* truly mutated in place, so path-level invalidation is sufficient to keep
|
|
26
|
-
* single-process write-then-read pipelines consistent.
|
|
27
|
-
*
|
|
28
|
-
* Cross-process freshness is out of scope: a reader in process B does not
|
|
29
|
-
* see writes committed by process A through a different cache. Use a
|
|
30
|
-
* short-lived resolver, an external coordination layer, or wrap with TTL /
|
|
31
|
-
* conditional-GET revalidation if you need that.
|
|
32
|
-
*
|
|
33
|
-
* @param {Resolver} base
|
|
34
|
-
* @returns {Resolver}
|
|
35
|
-
*/
|
|
36
|
-
export declare function cachingResolver(base: Resolver): Resolver;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|