@developmentseed/geotiff 0.3.0-beta.3 → 0.3.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.
Files changed (80) hide show
  1. package/README.md +64 -0
  2. package/dist/array.d.ts +12 -27
  3. package/dist/array.d.ts.map +1 -1
  4. package/dist/array.js.map +1 -1
  5. package/dist/codecs/lerc.d.ts +2 -2
  6. package/dist/codecs/lerc.d.ts.map +1 -1
  7. package/dist/codecs/lerc.js +23 -2
  8. package/dist/codecs/lerc.js.map +1 -1
  9. package/dist/codecs/lzw.d.ts.map +1 -1
  10. package/dist/codecs/lzw.js +2 -1
  11. package/dist/codecs/lzw.js.map +1 -1
  12. package/dist/codecs/predictor.d.ts +1 -2
  13. package/dist/codecs/predictor.d.ts.map +1 -1
  14. package/dist/codecs/predictor.js +1 -2
  15. package/dist/codecs/predictor.js.map +1 -1
  16. package/dist/codecs/utils.d.ts +2 -0
  17. package/dist/codecs/utils.d.ts.map +1 -0
  18. package/dist/codecs/utils.js +11 -0
  19. package/dist/codecs/utils.js.map +1 -0
  20. package/dist/codecs/zstd.d.ts +2 -0
  21. package/dist/codecs/zstd.d.ts.map +1 -0
  22. package/dist/codecs/zstd.js +7 -0
  23. package/dist/codecs/zstd.js.map +1 -0
  24. package/dist/decode.d.ts +32 -6
  25. package/dist/decode.d.ts.map +1 -1
  26. package/dist/decode.js +35 -15
  27. package/dist/decode.js.map +1 -1
  28. package/dist/fetch.d.ts +6 -2
  29. package/dist/fetch.d.ts.map +1 -1
  30. package/dist/fetch.js +178 -34
  31. package/dist/fetch.js.map +1 -1
  32. package/dist/gdal-metadata.d.ts +17 -0
  33. package/dist/gdal-metadata.d.ts.map +1 -0
  34. package/dist/gdal-metadata.js +59 -0
  35. package/dist/gdal-metadata.js.map +1 -0
  36. package/dist/geotiff.d.ts +91 -11
  37. package/dist/geotiff.d.ts.map +1 -1
  38. package/dist/geotiff.js +140 -43
  39. package/dist/geotiff.js.map +1 -1
  40. package/dist/ifd.d.ts +8 -8
  41. package/dist/ifd.d.ts.map +1 -1
  42. package/dist/ifd.js +21 -13
  43. package/dist/ifd.js.map +1 -1
  44. package/dist/index.d.ts +6 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +2 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/overview.d.ts +33 -3
  49. package/dist/overview.d.ts.map +1 -1
  50. package/dist/overview.js +35 -2
  51. package/dist/overview.js.map +1 -1
  52. package/dist/pool/pool.d.ts +71 -0
  53. package/dist/pool/pool.d.ts.map +1 -0
  54. package/dist/pool/pool.js +100 -0
  55. package/dist/pool/pool.js.map +1 -0
  56. package/dist/pool/worker.d.ts +23 -0
  57. package/dist/pool/worker.d.ts.map +1 -0
  58. package/dist/pool/worker.js +37 -0
  59. package/dist/pool/worker.js.map +1 -0
  60. package/dist/pool/wrapper.d.ts +37 -0
  61. package/dist/pool/wrapper.d.ts.map +1 -0
  62. package/dist/pool/wrapper.js +46 -0
  63. package/dist/pool/wrapper.js.map +1 -0
  64. package/dist/tile-matrix-set.d.ts.map +1 -1
  65. package/dist/tile-matrix-set.js +12 -12
  66. package/dist/tile-matrix-set.js.map +1 -1
  67. package/dist/transform.d.ts +7 -0
  68. package/dist/transform.d.ts.map +1 -1
  69. package/dist/transform.js +40 -1
  70. package/dist/transform.js.map +1 -1
  71. package/package.json +18 -12
  72. package/dist/api.d.ts +0 -34
  73. package/dist/api.d.ts.map +0 -1
  74. package/dist/api.js +0 -84
  75. package/dist/api.js.map +0 -1
  76. package/dist/decode/api.d.ts +0 -28
  77. package/dist/decode/api.d.ts.map +0 -1
  78. package/dist/decode/api.js +0 -80
  79. package/dist/decode/api.js.map +0 -1
  80. package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -4,8 +4,44 @@ Fast, high-level GeoTIFF reader written in TypeScript for the browser, wrapping
4
4
 
5
5
  [cogeotiff-lib]: https://github.com/blacha/cogeotiff
6
6
 
7
+ - Easy access to COG tiles and reduced-resolution overviews.
8
+ - Automatic nodata mask handling.
9
+ - Image decoding off the main thread.
10
+ - Supported compressions:
11
+ - Deflate, LERC, LERC+Deflate, LERC+ZSTD, LZW, JPEG (browser-only), WebP (browser-only), ZSTD
12
+ - Support for user-defined decompression algorithms.
13
+
7
14
  ## Features
8
15
 
16
+ ### Full TypeScript
17
+
18
+ The entire project — both public APIs and internal code — is strongly and exhaustively typed in TypeScript.
19
+
20
+ Image data fetches return a strongly typed object. With type narrowing we can infer whether data is pixel-interleaved, in a band-interleaved,
21
+
22
+ ```ts
23
+ import { GeoTIFF } from "@developmentseed/geotiff";
24
+
25
+ const geotiff = await GeoTIFF.fromUrl(url);
26
+ const tile = await geotiff.fetchTile(10, 10);
27
+ const { array } = tile;
28
+ if ( array.layout === "pixel-interleaved" ) {
29
+ // array is narrowed to type RasterArrayPixelInterleaved
30
+
31
+ // TypedArray interleaved pixel data in a single array
32
+ const data = array.data; // RasterTypedArray
33
+ } else if ( array.layout === "band-separate" ) {
34
+ // array is narrowed to type RasterArrayBandSeparate
35
+
36
+ // TypedArray data per raster band
37
+ const bands = array.bands; // RasterTypedArray[]
38
+ }
39
+ ```
40
+
41
+ ### No unnecessary data copies
42
+
43
+ Image fetching APIs always return data in their original layout, ensuring data copies only happen with the user's explicit consent.
44
+
9
45
  ### Easy access to COG tiles
10
46
 
11
47
  Use `GeoTIFF.fetchTile` to load `Tile` instances.
@@ -51,6 +87,15 @@ const overview = geotiff.overviews[0];
51
87
  const tile = await overview.fetchTile(0, 0);
52
88
  ```
53
89
 
90
+ ### Affine transformation handling
91
+
92
+ Integrates with [`@developmentseed/affine`] for easy handling of image transforms, associating pixel positions to spatial coordinates.
93
+
94
+ All loaded {@link RasterArray} instances contain an [`Affine`], tracking the relative image transform of that specific image window.
95
+
96
+ [`Affine`]: https://developmentseed.org/deck.gl-raster/api/affine/type-aliases/Affine/
97
+ [`@developmentseed/affine`]: https://developmentseed.org/deck.gl-raster/api/affine/
98
+
54
99
  ### Automatic Nodata Mask handling
55
100
 
56
101
  With a library like `geotiff.js` or the underlying `@cogeotiff/core`, you have to do extra work to keep track of which of the internal images represent _data_ versus _masks_. We automatically handle nodata values and mask arrays.
@@ -67,6 +112,12 @@ For user-defined CRSes, we automatically parse the CRS into a PROJJSON object, w
67
112
 
68
113
  If you have an image where the CRS fails to parse, please create an issue.
69
114
 
115
+ ### Configurable Web Worker pool for image decoding
116
+
117
+ The `DecoderPool` allows for decoding image data off the main thread.
118
+
119
+ By default workers are created up to `navigator.hardwareConcurrency`, but you can customize how large the web worker pool is by passing options to the `DecoderPool` constructor.
120
+
70
121
  ### Dynamically load compressions as needed
71
122
 
72
123
  Instead of bundling support for all compressions out of the box, dynamically load the decompressors as required.
@@ -75,6 +126,19 @@ Until you try to load an image compressed with, say, [LERC], you don't pay for t
75
126
 
76
127
  [LERC]: https://github.com/Esri/lerc
77
128
 
129
+ You can also override the built-in decoders with your own by using `registry`. For example, to use a custom zstd decoder:
130
+
131
+ ```ts
132
+ import { Compression } from "@cogeotiff/core";
133
+ import { registry } from "@developmentseed/geotiff";
134
+
135
+ registry.set(Compression.Zstd, () =>
136
+ import("your-zstd-module").then((m) => m.decode),
137
+ );
138
+ ```
139
+
140
+ A decoder is a function that takes an `ArrayBuffer` and a `DecoderMetadata` object and returns a `Promise<ArrayBuffer>`. See [decode.ts](./src/decode.ts) for the full type definitions.
141
+
78
142
  ### Full user control over caching and chunking
79
143
 
80
144
  There are a lot of great utilities in [`chunkd`](https://github.com/blacha/chunkd) that work out of the box here.
package/dist/array.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import type { Affine } from "@developmentseed/affine";
2
2
  import type { ProjJson } from "./crs.js";
3
+ import type { DecodedBandSeparate, DecodedPixelInterleaved, DecodedPixels } from "./decode.js";
3
4
  /** Typed arrays supported for raster sample storage. */
4
5
  export type RasterTypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
5
6
  /** Common metadata shared by all raster layouts. */
6
- type RasterArrayBase = {
7
+ export type RasterArrayBase = {
7
8
  /** Number of bands (samples per pixel). */
8
9
  count: number;
9
10
  /** Height in pixels. */
@@ -12,7 +13,7 @@ type RasterArrayBase = {
12
13
  width: number;
13
14
  /**
14
15
  * Optional validity mask. Length = height * width.
15
- * 1 = valid pixel, 0 = nodata. null when no mask IFD is present.
16
+ * Non-zero = valid pixel, 0 = nodata (transparent). null when no mask IFD is present.
16
17
  */
17
18
  mask: Uint8Array | null;
18
19
  /**
@@ -22,32 +23,17 @@ type RasterArrayBase = {
22
23
  * y = d * col + e * row + f
23
24
  */
24
25
  transform: Affine;
26
+ /** Coordinate reference system information. */
25
27
  crs: number | ProjJson;
28
+ /** Nodata value from `GDAL_NODATA` TIFF tag. */
26
29
  nodata: number | null;
27
30
  };
28
31
  /** Raster stored in one typed array per band (band-major / planar). */
29
- export type BandRasterArray = RasterArrayBase & {
30
- layout: "band-separate";
31
- /**
32
- * One typed array per band, each length = width * height.
33
- *
34
- * This is the preferred representation when uploading one texture per band.
35
- */
36
- bands: RasterTypedArray[];
37
- };
32
+ export type RasterArrayBandSeparate = RasterArrayBase & DecodedBandSeparate;
38
33
  /** Raster stored in one pixel-interleaved typed array. */
39
- export type PixelRasterArray = RasterArrayBase & {
40
- layout: "pixel-interleaved";
41
- /**
42
- * Pixel-interleaved raster data:
43
- * [p00_band0, p00_band1, ..., p01_band0, ...]
44
- *
45
- * Length = width * height * count.
46
- */
47
- data: RasterTypedArray;
48
- };
34
+ export type RasterArrayPixelInterleaved = RasterArrayBase & DecodedPixelInterleaved;
49
35
  /** Decoded raster data from a GeoTIFF region. */
50
- export type RasterArray = BandRasterArray | PixelRasterArray;
36
+ export type RasterArray = RasterArrayBase & DecodedPixels;
51
37
  /** Options for packing band data to a 4-channel pixel-interleaved array. */
52
38
  export type PackBandsToRGBAOptions = {
53
39
  /**
@@ -59,17 +45,16 @@ export type PackBandsToRGBAOptions = {
59
45
  fillValue?: number;
60
46
  };
61
47
  /** Convert any raster layout to a band-separate representation. */
62
- export declare function toBandSeparate(array: RasterArray): BandRasterArray;
48
+ export declare function toBandSeparate(array: RasterArray): RasterArrayBandSeparate;
63
49
  /** Convert any raster layout to a pixel-interleaved representation. */
64
- export declare function toPixelInterleaved(array: RasterArray, order?: readonly number[]): PixelRasterArray;
50
+ export declare function toPixelInterleaved(array: RasterArray, order?: readonly number[]): RasterArrayPixelInterleaved;
65
51
  /** Reorder bands while keeping a band-separate representation. */
66
- export declare function reorderBands(array: RasterArray, order: readonly number[]): BandRasterArray;
52
+ export declare function reorderBands(array: RasterArray, order: readonly number[]): RasterArrayBandSeparate;
67
53
  /**
68
54
  * Pack selected source bands into an RGBA pixel-interleaved typed array.
69
55
  *
70
56
  * This is useful as a fallback path when a single 4-channel texture upload
71
57
  * is preferred over one texture per band.
72
58
  */
73
- export declare function packBandsToRGBA(array: RasterArray, options?: PackBandsToRGBAOptions): PixelRasterArray;
74
- export {};
59
+ export declare function packBandsToRGBA(array: RasterArray, options?: PackBandsToRGBAOptions): RasterArrayPixelInterleaved;
75
60
  //# sourceMappingURL=array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,YAAY,GACZ,YAAY,CAAC;AAEjB,oDAAoD;AACpD,KAAK,eAAe,GAAG;IACrB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAExB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,MAAM,EAAE,eAAe,CAAC;IACxB;;;;OAIG;IACH,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,MAAM,EAAE,mBAAmB,CAAC;IAC5B;;;;;OAKG;IACH,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAAC;AAEF,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE7D,4EAA4E;AAC5E,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACrE,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CA4BlE;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,gBAAgB,CAqClB;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,eAAe,CASjB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,sBAA2B,GACnC,gBAAgB,CA2BlB"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACd,MAAM,aAAa,CAAC;AAErB,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,YAAY,GACZ,YAAY,CAAC;AAEjB,oDAAoD;AACpD,MAAM,MAAM,eAAe,GAAG;IAC5B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAExB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEvB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAE5E,0DAA0D;AAC1D,MAAM,MAAM,2BAA2B,GAAG,eAAe,GACvD,uBAAuB,CAAC;AAE1B,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,aAAa,CAAC;AAE1D,4EAA4E;AAC5E,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACrE,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CA4B1E;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,2BAA2B,CAqC7B;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,uBAAuB,CASzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,sBAA2B,GACnC,2BAA2B,CA2B7B"}
package/dist/array.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAyEA,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/C,MAAM,KAAK,GAAuB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,WAEH,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,eAAe;QACvB,KAAK;KACN,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAChC,KAAkB,EAClB,KAAyB;IAEzB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,KAAK,IAAI,YAAY,CAAC;IACxC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAE/C,IAAI,KAAK,CAAC,MAAM,KAAK,mBAAmB,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,CACX,KAAK,CAAC,MAAM,KAAK,mBAAmB;QAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW;QACxB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,CAGZ,CAAC;IAEtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAE,CAAE,CAAC,CAAC,CAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAC1B,KAAkB,EAClB,KAAwB;IAExB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAkB,EAClB,UAAkC,EAAE;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IAEzC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,WAEN,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACf,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC,CAAC,CAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,GAAG;QACN,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,CAAC;QACR,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAwB,EAAE,KAAa;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,cAAc,SAAS,wBAAwB,KAAK,UAAU,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAkB;IAC7C,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/C,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAEvC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,CAAC,IAAI,CAAC,MAAM,mCAAmC,kBAAkB,GAAG,CACzF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,CAAC,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,KAAK,EAAE,CAChF,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,QAAQ,KAAK,WAAW,IAAI,CAAC,MAAM,mCAAmC,WAAW,GAAG,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,kBAAkB,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;IACrD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,CAAC,IAAI,CAAC,MAAM,2CAA2C,kBAAkB,GAAG,CACjG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAwB;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { DecodedPixels } from "../decode.js";
2
- export declare function decode(bytes: ArrayBuffer): Promise<DecodedPixels>;
1
+ import type { DecodedPixels, DecoderMetadata } from "../decode.js";
2
+ export declare function decode(bytes: ArrayBuffer, metadata: DecoderMetadata): Promise<DecodedPixels>;
3
3
  //# sourceMappingURL=lerc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lerc.d.ts","sourceRoot":"","sources":["../../src/codecs/lerc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgBlD,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAIvE"}
1
+ {"version":3,"file":"lerc.d.ts","sourceRoot":"","sources":["../../src/codecs/lerc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAwBnE,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAsBxB"}
@@ -1,3 +1,12 @@
1
+ import { Compression } from "@cogeotiff/core";
2
+ import { DECODER_REGISTRY } from "../decode.js";
3
+ /** Inner compression type encoded in LercParameters[1]. */
4
+ var LercCompression;
5
+ (function (LercCompression) {
6
+ LercCompression[LercCompression["None"] = 0] = "None";
7
+ LercCompression[LercCompression["Deflate"] = 1] = "Deflate";
8
+ LercCompression[LercCompression["Zstd"] = 2] = "Zstd";
9
+ })(LercCompression || (LercCompression = {}));
1
10
  let wasmInitialized = false;
2
11
  async function getLerc() {
3
12
  // This import is cached by the module loader
@@ -8,9 +17,21 @@ async function getLerc() {
8
17
  }
9
18
  return lerc;
10
19
  }
11
- export async function decode(bytes) {
20
+ export async function decode(bytes, metadata) {
21
+ const lercCompressionType = metadata.lercParameters?.[1] ??
22
+ LercCompression.None;
23
+ let lercInput = bytes;
24
+ if (lercCompressionType === LercCompression.Deflate ||
25
+ lercCompressionType === LercCompression.Zstd) {
26
+ const innerCompression = lercCompressionType === LercCompression.Deflate
27
+ ? Compression.Deflate
28
+ : Compression.Zstd;
29
+ const decoderEntry = DECODER_REGISTRY.get(innerCompression);
30
+ const decoder = await decoderEntry();
31
+ lercInput = (await decoder(bytes, metadata));
32
+ }
12
33
  const lerc = await getLerc();
13
- const result = lerc.decode(bytes);
34
+ const result = lerc.decode(lercInput);
14
35
  return { layout: "band-separate", bands: result.pixels };
15
36
  }
16
37
  //# sourceMappingURL=lerc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lerc.js","sourceRoot":"","sources":["../../src/codecs/lerc.ts"],"names":[],"mappings":"AAEA,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,KAAK,UAAU,OAAO;IACpB,6CAA6C;IAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAkB;IAC7C,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"lerc.js","sourceRoot":"","sources":["../../src/codecs/lerc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,2DAA2D;AAC3D,IAAK,eAIJ;AAJD,WAAK,eAAe;IAClB,qDAAQ,CAAA;IACR,2DAAW,CAAA;IACX,qDAAQ,CAAA;AACV,CAAC,EAJI,eAAe,KAAf,eAAe,QAInB;AAED,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,KAAK,UAAU,OAAO;IACpB,6CAA6C;IAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAkB,EAClB,QAAyB;IAEzB,MAAM,mBAAmB,GACtB,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAiC;QAC7D,eAAe,CAAC,IAAI,CAAC;IAEvB,IAAI,SAAS,GAAgB,KAAK,CAAC;IACnC,IACE,mBAAmB,KAAK,eAAe,CAAC,OAAO;QAC/C,mBAAmB,KAAK,eAAe,CAAC,IAAI,EAC5C,CAAC;QACD,MAAM,gBAAgB,GACpB,mBAAmB,KAAK,eAAe,CAAC,OAAO;YAC7C,CAAC,CAAC,WAAW,CAAC,OAAO;YACrB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;QACvB,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAgB,CAAC;IAC9D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lzw.d.ts","sourceRoot":"","sources":["../../src/codecs/lzw.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC,CAStB"}
1
+ {"version":3,"file":"lzw.d.ts","sourceRoot":"","sources":["../../src/codecs/lzw.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC,CAMtB"}
@@ -1,8 +1,9 @@
1
1
  import { decompress } from "@developmentseed/lzw-tiff-decoder";
2
+ import { copyIfViewNotFullBuffer } from "./utils.js";
2
3
  export async function decode(bytes, metadata) {
3
4
  const { width, height, samplesPerPixel, bitsPerSample } = metadata;
4
5
  const maxUncompressedSize = width * height * samplesPerPixel * (bitsPerSample / 8);
5
6
  const result = decompress(new Uint8Array(bytes), maxUncompressedSize);
6
- return result.buffer.slice(result.byteOffset, result.byteOffset + result.byteLength);
7
+ return copyIfViewNotFullBuffer(result);
7
8
  }
8
9
  //# sourceMappingURL=lzw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lzw.js","sourceRoot":"","sources":["../../src/codecs/lzw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG/D,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAkB,EAClB,QAAyB;IAEzB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;IACnE,MAAM,mBAAmB,GACvB,KAAK,GAAG,MAAM,GAAG,eAAe,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CACxB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CACvB,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"lzw.js","sourceRoot":"","sources":["../../src/codecs/lzw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAkB,EAClB,QAAyB;IAEzB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;IACnE,MAAM,mBAAmB,GACvB,KAAK,GAAG,MAAM,GAAG,eAAe,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACtE,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC"}
@@ -1,5 +1,4 @@
1
- import { PlanarConfiguration } from "@cogeotiff/core";
2
- import { Predictor } from "../ifd.js";
1
+ import { PlanarConfiguration, Predictor } from "@cogeotiff/core";
3
2
  /**
4
3
  * Apply TIFF predictor decoding to a raw decoded tile buffer in-place.
5
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"predictor.d.ts","sourceRoot":"","sources":["../../src/codecs/predictor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAoDtC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,mBAAmB,EAAE,mBAAmB,GACvC,WAAW,CA6Cb"}
1
+ {"version":3,"file":"predictor.d.ts","sourceRoot":"","sources":["../../src/codecs/predictor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAoDjE;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,mBAAmB,EAAE,mBAAmB,GACvC,WAAW,CA6Cb"}
@@ -1,5 +1,4 @@
1
- import { PlanarConfiguration } from "@cogeotiff/core";
2
- import { Predictor } from "../ifd.js";
1
+ import { PlanarConfiguration, Predictor } from "@cogeotiff/core";
3
2
  /**
4
3
  * Undo TIFF horizontal differencing (predictor 2) or floating-point
5
4
  * prediction (predictor 3) in-place on a decoded tile buffer.
@@ -1 +1 @@
1
- {"version":3,"file":"predictor.js","sourceRoot":"","sources":["../../src/codecs/predictor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"predictor.js","sourceRoot":"","sources":["../../src/codecs/predictor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjE;;;;;GAKG;AAEH,sEAAsE;AACtE,SAAS,YAAY,CACnB,GAA2C,EAC3C,MAAc;IAEd,MAAM,CAAC,GAAG,GAAkB,CAAC;IAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC;QACX,CAAC;QACD,MAAM,IAAI,MAAM,CAAC;IACnB,CAAC,QAAQ,MAAM,GAAG,CAAC,EAAE;AACvB,CAAC;AAED,iEAAiE;AACjE,SAAS,sBAAsB,CAC7B,GAAe,EACf,MAAc,EACd,cAAsB;IAEtB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,MAAM,EAAE,GAAG,KAAK,GAAG,cAAc,CAAC;IAElC,OAAO,KAAK,GAAG,MAAM,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAE,IAAI,GAAG,CAAC,KAAK,CAAE,CAAC;YACpC,KAAK,EAAE,CAAC;QACV,CAAC;QACD,KAAK,IAAI,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAE,CAAC;QACzE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAkB,EAClB,SAAoB,EACpB,KAAa,EACb,MAAc,EACd,aAAqB,EACrB,eAAuB,EACvB,mBAAwC;IAExC,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,GAAG,CAAC,CAAC;IACzC,MAAM,MAAM,GACV,mBAAmB,KAAK,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAE7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC;QACvD,IAAI,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM;QACR,CAAC;QAED,IAAI,SAAS,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,GAA2C,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;YAC9B,QAAQ,aAAa,EAAE,CAAC;gBACtB,KAAK,CAAC;oBACJ,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;oBAChD,MAAM;gBACR,KAAK,EAAE;oBACL,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;oBACjD,MAAM;gBACR,KAAK,EAAE;oBACL,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;oBACjD,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CACb,iCAAiC,aAAa,mBAAmB,CAClE,CAAC;YACN,CAAC;YACD,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,KAAK,EACL,UAAU,EACV,MAAM,GAAG,KAAK,GAAG,cAAc,CAChC,CAAC;YACF,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function copyIfViewNotFullBuffer(view: Uint8Array): ArrayBuffer;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/codecs/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAUrE"}
@@ -0,0 +1,11 @@
1
+ export function copyIfViewNotFullBuffer(view) {
2
+ // If the view is already aligned, we can return its underlying buffer directly
3
+ if (view.byteOffset === 0 && view.byteLength === view.buffer.byteLength) {
4
+ return view.buffer;
5
+ }
6
+ // Otherwise, we need to copy the relevant portion of the buffer into a new ArrayBuffer
7
+ const copy = new Uint8Array(view.byteLength);
8
+ copy.set(view);
9
+ return copy.buffer;
10
+ }
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/codecs/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB,CAAC,IAAgB;IACtD,+EAA+E;IAC/E,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,MAAqB,CAAC;IACpC,CAAC;IAED,uFAAuF;IACvF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACf,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function decode(bytes: ArrayBuffer): Promise<ArrayBuffer>;
2
+ //# sourceMappingURL=zstd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zstd.d.ts","sourceRoot":"","sources":["../../src/codecs/zstd.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAGrE"}
@@ -0,0 +1,7 @@
1
+ import { decompress } from "fzstd";
2
+ import { copyIfViewNotFullBuffer } from "./utils";
3
+ export async function decode(bytes) {
4
+ const result = decompress(new Uint8Array(bytes));
5
+ return copyIfViewNotFullBuffer(result);
6
+ }
7
+ //# sourceMappingURL=zstd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zstd.js","sourceRoot":"","sources":["../../src/codecs/zstd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAkB;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC"}
package/dist/decode.d.ts CHANGED
@@ -1,15 +1,29 @@
1
- import type { PlanarConfiguration } from "@cogeotiff/core";
1
+ import type { PlanarConfiguration, Predictor } from "@cogeotiff/core";
2
2
  import { Compression, SampleFormat } from "@cogeotiff/core";
3
3
  import type { RasterTypedArray } from "./array.js";
4
- import type { Predictor } from "./ifd.js";
5
- /** The result of a decoding process */
6
- export type DecodedPixels = {
4
+ /** Raster stored in one pixel-interleaved typed array. */
5
+ export type DecodedPixelInterleaved = {
7
6
  layout: "pixel-interleaved";
7
+ /**
8
+ * Pixel-interleaved raster data:
9
+ * [p00_band0, p00_band1, ..., p01_band0, ...]
10
+ *
11
+ * Length = width * height * count.
12
+ */
8
13
  data: RasterTypedArray;
9
- } | {
14
+ };
15
+ /** Raster stored in one typed array per band (band-major / planar). */
16
+ export type DecodedBandSeparate = {
10
17
  layout: "band-separate";
18
+ /**
19
+ * One typed array per band, each length = width * height.
20
+ *
21
+ * This is the preferred representation when uploading one texture per band.
22
+ */
11
23
  bands: RasterTypedArray[];
12
24
  };
25
+ /** The result of a decoding process */
26
+ export type DecodedPixels = DecodedPixelInterleaved | DecodedBandSeparate;
13
27
  /** Metadata from the TIFF IFD, passed to decoders that need it. */
14
28
  export type DecoderMetadata = {
15
29
  sampleFormat: SampleFormat;
@@ -19,6 +33,7 @@ export type DecoderMetadata = {
19
33
  height: number;
20
34
  predictor: Predictor;
21
35
  planarConfiguration: PlanarConfiguration;
36
+ lercParameters?: number[] | null;
22
37
  };
23
38
  /**
24
39
  * A decoder returns either:
@@ -26,9 +41,20 @@ export type DecoderMetadata = {
26
41
  * - A DecodedPixels with typed pixel data (image codecs like LERC, JPEG)
27
42
  */
28
43
  export type Decoder = (bytes: ArrayBuffer, metadata: DecoderMetadata) => Promise<ArrayBuffer | DecodedPixels>;
29
- export declare const registry: Map<Compression, () => Promise<Decoder>>;
44
+ /**
45
+ * The global registry of decoders for each compression type.
46
+ *
47
+ * This maps a {@link Compression} value to a function that returns a promise of
48
+ * a {@link Decoder}.
49
+ */
50
+ export declare const DECODER_REGISTRY: Map<Compression, () => Promise<Decoder>>;
30
51
  /**
31
52
  * Decode a tile's bytes according to its compression and image metadata.
32
53
  */
33
54
  export declare function decode(bytes: ArrayBuffer, compression: Compression, metadata: DecoderMetadata): Promise<DecodedPixels>;
55
+ /**
56
+ * Unpack a 1-bit packed mask buffer (MSB-first) into a Uint8Array of 0/255.
57
+ * Each input byte holds 8 pixels; bit 7 is the first pixel in that byte.
58
+ */
59
+ export declare function unpackBitPacked(buffer: ArrayBuffer, pixelCount: number): Uint8Array;
34
60
  //# sourceMappingURL=decode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,uCAAuC;AACvC,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAE3D,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,KACtB,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;AAM1C,eAAO,MAAM,QAAQ,yBAA8B,OAAO,CAAC,OAAO,CAAC,CAAG,CAAC;AA4BvE;;GAEG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAkCxB"}
1
+ {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,0DAA0D;AAC1D,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B;;;;;OAKG;IACH,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB;;;;OAIG;IACH,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AAE1E,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,KACtB,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;AAM1C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,yBAA8B,OAAO,CAAC,OAAO,CAAC,CAAG,CAAC;AA8B/E;;GAEG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAkCxB;AAED;;;GAGG;AAGH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,GACjB,UAAU,CAOZ"}
package/dist/decode.js CHANGED
@@ -4,29 +4,33 @@ import { applyPredictor } from "./codecs/predictor.js";
4
4
  async function decodeUncompressed(bytes) {
5
5
  return bytes;
6
6
  }
7
- export const registry = new Map();
8
- registry.set(Compression.None, () => Promise.resolve(decodeUncompressed));
9
- registry.set(Compression.Deflate, () => import("./codecs/deflate.js").then((m) => m.decode));
10
- registry.set(Compression.DeflateOther, () => import("./codecs/deflate.js").then((m) => m.decode));
11
- registry.set(Compression.Lzw, () => import("./codecs/lzw.js").then((m) => m.decode));
12
- // registry.set(Compression.Zstd, () =>
13
- // import("../codecs/zstd.js").then((m) => m.decode),
14
- // );
15
- // registry.set(Compression.Lzma, () =>
7
+ /**
8
+ * The global registry of decoders for each compression type.
9
+ *
10
+ * This maps a {@link Compression} value to a function that returns a promise of
11
+ * a {@link Decoder}.
12
+ */
13
+ export const DECODER_REGISTRY = new Map();
14
+ DECODER_REGISTRY.set(Compression.None, () => Promise.resolve(decodeUncompressed));
15
+ DECODER_REGISTRY.set(Compression.Deflate, () => import("./codecs/deflate.js").then((m) => m.decode));
16
+ DECODER_REGISTRY.set(Compression.DeflateOther, () => import("./codecs/deflate.js").then((m) => m.decode));
17
+ DECODER_REGISTRY.set(Compression.Lzw, () => import("./codecs/lzw.js").then((m) => m.decode));
18
+ DECODER_REGISTRY.set(Compression.Zstd, () => import("./codecs/zstd.js").then((m) => m.decode));
19
+ // DECODER_REGISTRY.set(Compression.Lzma, () =>
16
20
  // import("../codecs/lzma.js").then((m) => m.decode),
17
21
  // );
18
- // registry.set(Compression.Jp2000, () =>
22
+ // DECODER_REGISTRY.set(Compression.Jp2000, () =>
19
23
  // import("../codecs/jp2000.js").then((m) => m.decode),
20
24
  // );
21
- registry.set(Compression.Jpeg, () => Promise.resolve(decodeViaCanvas));
22
- registry.set(Compression.Jpeg6, () => Promise.resolve(decodeViaCanvas));
23
- registry.set(Compression.Webp, () => Promise.resolve(decodeViaCanvas));
24
- registry.set(Compression.Lerc, () => import("./codecs/lerc.js").then((m) => m.decode));
25
+ DECODER_REGISTRY.set(Compression.Jpeg, () => Promise.resolve(decodeViaCanvas));
26
+ DECODER_REGISTRY.set(Compression.Jpeg6, () => Promise.resolve(decodeViaCanvas));
27
+ DECODER_REGISTRY.set(Compression.Webp, () => Promise.resolve(decodeViaCanvas));
28
+ DECODER_REGISTRY.set(Compression.Lerc, () => import("./codecs/lerc.js").then((m) => m.decode));
25
29
  /**
26
30
  * Decode a tile's bytes according to its compression and image metadata.
27
31
  */
28
32
  export async function decode(bytes, compression, metadata) {
29
- const loader = registry.get(compression);
33
+ const loader = DECODER_REGISTRY.get(compression);
30
34
  if (!loader) {
31
35
  throw new Error(`Unsupported compression: ${compression}`);
32
36
  }
@@ -42,6 +46,20 @@ export async function decode(bytes, compression, metadata) {
42
46
  }
43
47
  return result;
44
48
  }
49
+ /**
50
+ * Unpack a 1-bit packed mask buffer (MSB-first) into a Uint8Array of 0/255.
51
+ * Each input byte holds 8 pixels; bit 7 is the first pixel in that byte.
52
+ */
53
+ // TODO: check for FillOrder tag and reverse bit order if needed
54
+ // https://web.archive.org/web/20240329145342/https://www.awaresystems.be/imaging/tiff/tifftags/fillorder.html
55
+ export function unpackBitPacked(buffer, pixelCount) {
56
+ const packed = new Uint8Array(buffer);
57
+ const out = new Uint8Array(pixelCount);
58
+ for (let i = 0; i < pixelCount; i++) {
59
+ out[i] = (packed[i >> 3] >> (7 - (i & 7))) & 1 ? 255 : 0;
60
+ }
61
+ return out;
62
+ }
45
63
  /**
46
64
  * Convert a raw ArrayBuffer of pixel data into a typed array based on the
47
65
  * sample format and bits per sample. This is used for codecs that return raw
@@ -52,6 +70,8 @@ function toTypedArray(buffer, metadata) {
52
70
  switch (sampleFormat) {
53
71
  case SampleFormat.Uint:
54
72
  switch (bitsPerSample) {
73
+ case 1:
74
+ return unpackBitPacked(buffer, metadata.width * metadata.height * metadata.samplesPerPixel);
55
75
  case 8:
56
76
  return new Uint8Array(buffer);
57
77
  case 16:
@@ -1 +1 @@
1
- {"version":3,"file":"decode.js","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"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"}
package/dist/fetch.d.ts CHANGED
@@ -1,11 +1,14 @@
1
- import type { TiffImage } from "@cogeotiff/core";
1
+ import type { Source, TiffImage } from "@cogeotiff/core";
2
2
  import type { ProjJson } from "./crs.js";
3
3
  import type { CachedTags } from "./ifd.js";
4
+ import type { DecoderPool } from "./pool/pool.js";
4
5
  import type { Tile } from "./tile";
5
6
  import type { HasTransform } from "./transform";
6
7
  /** Protocol for objects that hold a TIFF reference and can request tiles. */
7
8
  interface HasTiffReference extends HasTransform {
8
9
  readonly cachedTags: CachedTags;
10
+ /** The data source used for fetching tile data. */
11
+ readonly dataSource: Pick<Source, "fetch">;
9
12
  /** The data Image File Directory (IFD) */
10
13
  readonly image: TiffImage;
11
14
  /** The mask Image File Directory (IFD), if any. */
@@ -19,8 +22,9 @@ interface HasTiffReference extends HasTransform {
19
22
  /** The nodata value for the image, if any. */
20
23
  readonly nodata: number | null;
21
24
  }
22
- export declare function fetchTile(self: HasTiffReference, x: number, y: number, options?: {
25
+ export declare function fetchTile(self: HasTiffReference, x: number, y: number, { boundless, pool, signal, }?: {
23
26
  boundless?: boolean;
27
+ pool?: DecoderPool;
24
28
  signal?: AbortSignal;
25
29
  }): Promise<Tile>;
26
30
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,6EAA6E;AAC7E,UAAU,gBAAiB,SAAQ,YAAY;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAErC,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEhC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,gBAAgB,EACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC1D,OAAO,CAAC,IAAI,CAAC,CA0Df"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,MAAM,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,6EAA6E;AAC7E,UAAU,gBAAiB,SAAQ,YAAY;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAErC,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEhC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,gBAAgB,EACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EACE,SAAgB,EAChB,IAAI,EACJ,MAAM,GACP,GAAE;IACD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CA6Df"}