geotiff 3.0.2 → 3.0.4-beta.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 (279) hide show
  1. package/dist-browser/geotiff.js +3 -3
  2. package/dist-browser/geotiff.js.map +1 -1
  3. package/dist-module/compression/basedecoder.d.ts +30 -4
  4. package/dist-module/compression/basedecoder.d.ts.map +1 -1
  5. package/dist-module/compression/basedecoder.js +22 -1
  6. package/dist-module/compression/basedecoder.js.map +1 -0
  7. package/dist-module/compression/deflate.d.ts +2 -1
  8. package/dist-module/compression/deflate.d.ts.map +1 -1
  9. package/dist-module/compression/deflate.js +2 -0
  10. package/dist-module/compression/deflate.js.map +1 -0
  11. package/dist-module/compression/index.d.ts +14 -22
  12. package/dist-module/compression/index.d.ts.map +1 -1
  13. package/dist-module/compression/index.js +36 -25
  14. package/dist-module/compression/index.js.map +1 -0
  15. package/dist-module/compression/jpeg.d.ts +55 -15
  16. package/dist-module/compression/jpeg.d.ts.map +1 -1
  17. package/dist-module/compression/jpeg.js +187 -16
  18. package/dist-module/compression/jpeg.js.map +1 -0
  19. package/dist-module/compression/lerc.d.ts +11 -1
  20. package/dist-module/compression/lerc.d.ts.map +1 -1
  21. package/dist-module/compression/lerc.js +16 -4
  22. package/dist-module/compression/lerc.js.map +1 -0
  23. package/dist-module/compression/lzw.d.ts +2 -1
  24. package/dist-module/compression/lzw.d.ts.map +1 -1
  25. package/dist-module/compression/lzw.js +29 -1
  26. package/dist-module/compression/lzw.js.map +1 -0
  27. package/dist-module/compression/packbits.d.ts +2 -1
  28. package/dist-module/compression/packbits.d.ts.map +1 -1
  29. package/dist-module/compression/packbits.js +2 -0
  30. package/dist-module/compression/packbits.js.map +1 -0
  31. package/dist-module/compression/raw.d.ts +2 -1
  32. package/dist-module/compression/raw.d.ts.map +1 -1
  33. package/dist-module/compression/raw.js +2 -0
  34. package/dist-module/compression/raw.js.map +1 -0
  35. package/dist-module/compression/webimage.d.ts +2 -1
  36. package/dist-module/compression/webimage.d.ts.map +1 -1
  37. package/dist-module/compression/webimage.js +5 -0
  38. package/dist-module/compression/webimage.js.map +1 -0
  39. package/dist-module/compression/zstd.d.ts +4 -2
  40. package/dist-module/compression/zstd.d.ts.map +1 -1
  41. package/dist-module/compression/zstd.js +3 -1
  42. package/dist-module/compression/zstd.js.map +1 -0
  43. package/dist-module/dataslice.d.ts +78 -22
  44. package/dist-module/dataslice.d.ts.map +1 -1
  45. package/dist-module/dataslice.js +57 -1
  46. package/dist-module/dataslice.js.map +1 -0
  47. package/dist-module/dataview64.d.ts +71 -14
  48. package/dist-module/dataview64.d.ts.map +1 -1
  49. package/dist-module/dataview64.js +58 -1
  50. package/dist-module/dataview64.js.map +1 -0
  51. package/dist-module/geotiff.d.ts +61 -12
  52. package/dist-module/geotiff.d.ts.map +1 -1
  53. package/dist-module/geotiff.js +73 -14
  54. package/dist-module/geotiff.js.map +1 -0
  55. package/dist-module/geotiffimage.d.ts +41 -15
  56. package/dist-module/geotiffimage.d.ts.map +1 -1
  57. package/dist-module/geotiffimage.js +132 -52
  58. package/dist-module/geotiffimage.js.map +1 -0
  59. package/dist-module/geotiffwriter.d.ts +28 -1
  60. package/dist-module/geotiffwriter.d.ts.map +1 -1
  61. package/dist-module/geotiffwriter.js +206 -84
  62. package/dist-module/geotiffwriter.js.map +1 -0
  63. package/dist-module/globals.d.ts +912 -92
  64. package/dist-module/globals.d.ts.map +1 -1
  65. package/dist-module/globals.js +201 -227
  66. package/dist-module/globals.js.map +1 -0
  67. package/dist-module/imagefiledirectory.d.ts +72 -19
  68. package/dist-module/imagefiledirectory.d.ts.map +1 -1
  69. package/dist-module/imagefiledirectory.js +51 -26
  70. package/dist-module/imagefiledirectory.js.map +1 -0
  71. package/dist-module/logging.d.ts +36 -10
  72. package/dist-module/logging.d.ts.map +1 -1
  73. package/dist-module/logging.js +16 -2
  74. package/dist-module/logging.js.map +1 -0
  75. package/dist-module/pool.d.ts +15 -8
  76. package/dist-module/pool.d.ts.map +1 -1
  77. package/dist-module/pool.js +11 -3
  78. package/dist-module/pool.js.map +1 -0
  79. package/dist-module/predictor.d.ts +10 -1
  80. package/dist-module/predictor.d.ts.map +1 -1
  81. package/dist-module/predictor.js +19 -0
  82. package/dist-module/predictor.js.map +1 -0
  83. package/dist-module/resample.d.ts.map +1 -1
  84. package/dist-module/resample.js +12 -0
  85. package/dist-module/resample.js.map +1 -0
  86. package/dist-module/rgb.js +1 -0
  87. package/dist-module/rgb.js.map +1 -0
  88. package/dist-module/source/arraybuffer.d.ts +7 -4
  89. package/dist-module/source/arraybuffer.d.ts.map +1 -1
  90. package/dist-module/source/arraybuffer.js +15 -1
  91. package/dist-module/source/arraybuffer.js.map +1 -0
  92. package/dist-module/source/basesource.d.ts +11 -6
  93. package/dist-module/source/basesource.d.ts.map +1 -1
  94. package/dist-module/source/basesource.js +7 -4
  95. package/dist-module/source/basesource.js.map +1 -0
  96. package/dist-module/source/blockedsource.d.ts +2 -2
  97. package/dist-module/source/blockedsource.d.ts.map +1 -1
  98. package/dist-module/source/blockedsource.js +8 -5
  99. package/dist-module/source/blockedsource.js.map +1 -0
  100. package/dist-module/source/client/base.d.ts +8 -7
  101. package/dist-module/source/client/base.d.ts.map +1 -1
  102. package/dist-module/source/client/base.js +7 -5
  103. package/dist-module/source/client/base.js.map +1 -0
  104. package/dist-module/source/client/fetch.d.ts +6 -2
  105. package/dist-module/source/client/fetch.d.ts.map +1 -1
  106. package/dist-module/source/client/fetch.js +7 -2
  107. package/dist-module/source/client/fetch.js.map +1 -0
  108. package/dist-module/source/client/http.d.ts +27 -5
  109. package/dist-module/source/client/http.d.ts.map +1 -1
  110. package/dist-module/source/client/http.js +16 -2
  111. package/dist-module/source/client/http.js.map +1 -0
  112. package/dist-module/source/client/xhr.d.ts +22 -3
  113. package/dist-module/source/client/xhr.d.ts.map +1 -1
  114. package/dist-module/source/client/xhr.js +12 -2
  115. package/dist-module/source/client/xhr.js.map +1 -0
  116. package/dist-module/source/file.d.ts +8 -5
  117. package/dist-module/source/file.d.ts.map +1 -1
  118. package/dist-module/source/file.js +40 -8
  119. package/dist-module/source/file.js.map +1 -0
  120. package/dist-module/source/filereader.d.ts +12 -4
  121. package/dist-module/source/filereader.d.ts.map +1 -1
  122. package/dist-module/source/filereader.js +15 -2
  123. package/dist-module/source/filereader.js.map +1 -0
  124. package/dist-module/source/httputils.d.ts +16 -9
  125. package/dist-module/source/httputils.d.ts.map +1 -1
  126. package/dist-module/source/httputils.js +19 -12
  127. package/dist-module/source/httputils.js.map +1 -0
  128. package/dist-module/source/remote.d.ts.map +1 -1
  129. package/dist-module/source/remote.js +19 -7
  130. package/dist-module/source/remote.js.map +1 -0
  131. package/dist-module/utils.d.ts +36 -41
  132. package/dist-module/utils.d.ts.map +1 -1
  133. package/dist-module/utils.js +17 -12
  134. package/dist-module/utils.js.map +1 -0
  135. package/dist-module/worker/create.js +1 -1
  136. package/dist-module/worker/create.js.map +1 -0
  137. package/dist-module/worker/decoder.d.ts +2 -0
  138. package/dist-module/worker/decoder.d.ts.map +1 -0
  139. package/dist-module/worker/decoder.js +21 -0
  140. package/dist-module/worker/decoder.js.map +1 -0
  141. package/dist-node/compression/basedecoder.d.ts +30 -4
  142. package/dist-node/compression/basedecoder.d.ts.map +1 -1
  143. package/dist-node/compression/basedecoder.js +22 -1
  144. package/dist-node/compression/basedecoder.js.map +1 -1
  145. package/dist-node/compression/deflate.d.ts +2 -1
  146. package/dist-node/compression/deflate.d.ts.map +1 -1
  147. package/dist-node/compression/deflate.js +2 -0
  148. package/dist-node/compression/deflate.js.map +1 -1
  149. package/dist-node/compression/index.d.ts +14 -22
  150. package/dist-node/compression/index.d.ts.map +1 -1
  151. package/dist-node/compression/index.js +36 -25
  152. package/dist-node/compression/index.js.map +1 -1
  153. package/dist-node/compression/jpeg.d.ts +55 -16
  154. package/dist-node/compression/jpeg.d.ts.map +1 -1
  155. package/dist-node/compression/jpeg.js +187 -16
  156. package/dist-node/compression/jpeg.js.map +1 -1
  157. package/dist-node/compression/lerc.d.ts +11 -1
  158. package/dist-node/compression/lerc.d.ts.map +1 -1
  159. package/dist-node/compression/lerc.js +16 -4
  160. package/dist-node/compression/lerc.js.map +1 -1
  161. package/dist-node/compression/lzw.d.ts +2 -1
  162. package/dist-node/compression/lzw.d.ts.map +1 -1
  163. package/dist-node/compression/lzw.js +29 -1
  164. package/dist-node/compression/lzw.js.map +1 -1
  165. package/dist-node/compression/packbits.d.ts +2 -1
  166. package/dist-node/compression/packbits.d.ts.map +1 -1
  167. package/dist-node/compression/packbits.js +2 -0
  168. package/dist-node/compression/packbits.js.map +1 -1
  169. package/dist-node/compression/raw.d.ts +2 -1
  170. package/dist-node/compression/raw.d.ts.map +1 -1
  171. package/dist-node/compression/raw.js +2 -0
  172. package/dist-node/compression/raw.js.map +1 -1
  173. package/dist-node/compression/webimage.d.ts +2 -2
  174. package/dist-node/compression/webimage.d.ts.map +1 -1
  175. package/dist-node/compression/webimage.js +5 -0
  176. package/dist-node/compression/webimage.js.map +1 -1
  177. package/dist-node/compression/zstd.d.ts +2 -1
  178. package/dist-node/compression/zstd.d.ts.map +1 -1
  179. package/dist-node/compression/zstd.js +3 -1
  180. package/dist-node/compression/zstd.js.map +1 -1
  181. package/dist-node/dataslice.d.ts +78 -22
  182. package/dist-node/dataslice.d.ts.map +1 -1
  183. package/dist-node/dataslice.js +57 -1
  184. package/dist-node/dataslice.js.map +1 -1
  185. package/dist-node/dataview64.d.ts +71 -14
  186. package/dist-node/dataview64.d.ts.map +1 -1
  187. package/dist-node/dataview64.js +58 -1
  188. package/dist-node/dataview64.js.map +1 -1
  189. package/dist-node/geotiff.d.ts +61 -12
  190. package/dist-node/geotiff.d.ts.map +1 -1
  191. package/dist-node/geotiff.js +75 -15
  192. package/dist-node/geotiff.js.map +1 -1
  193. package/dist-node/geotiffimage.d.ts +41 -15
  194. package/dist-node/geotiffimage.d.ts.map +1 -1
  195. package/dist-node/geotiffimage.js +132 -52
  196. package/dist-node/geotiffimage.js.map +1 -1
  197. package/dist-node/geotiffwriter.d.ts +28 -1
  198. package/dist-node/geotiffwriter.d.ts.map +1 -1
  199. package/dist-node/geotiffwriter.js +206 -84
  200. package/dist-node/geotiffwriter.js.map +1 -1
  201. package/dist-node/globals.d.ts +910 -90
  202. package/dist-node/globals.d.ts.map +1 -1
  203. package/dist-node/globals.js +202 -228
  204. package/dist-node/globals.js.map +1 -1
  205. package/dist-node/imagefiledirectory.d.ts +72 -19
  206. package/dist-node/imagefiledirectory.d.ts.map +1 -1
  207. package/dist-node/imagefiledirectory.js +51 -26
  208. package/dist-node/imagefiledirectory.js.map +1 -1
  209. package/dist-node/logging.d.ts +36 -10
  210. package/dist-node/logging.d.ts.map +1 -1
  211. package/dist-node/logging.js +16 -2
  212. package/dist-node/logging.js.map +1 -1
  213. package/dist-node/pool.d.ts +15 -8
  214. package/dist-node/pool.d.ts.map +1 -1
  215. package/dist-node/pool.js +11 -3
  216. package/dist-node/pool.js.map +1 -1
  217. package/dist-node/predictor.d.ts +10 -1
  218. package/dist-node/predictor.d.ts.map +1 -1
  219. package/dist-node/predictor.js +19 -0
  220. package/dist-node/predictor.js.map +1 -1
  221. package/dist-node/resample.d.ts.map +1 -1
  222. package/dist-node/resample.js +12 -0
  223. package/dist-node/resample.js.map +1 -1
  224. package/dist-node/rgb.js +1 -0
  225. package/dist-node/rgb.js.map +1 -1
  226. package/dist-node/source/arraybuffer.d.ts +7 -4
  227. package/dist-node/source/arraybuffer.d.ts.map +1 -1
  228. package/dist-node/source/arraybuffer.js +15 -1
  229. package/dist-node/source/arraybuffer.js.map +1 -1
  230. package/dist-node/source/basesource.d.ts +11 -6
  231. package/dist-node/source/basesource.d.ts.map +1 -1
  232. package/dist-node/source/basesource.js +7 -4
  233. package/dist-node/source/basesource.js.map +1 -1
  234. package/dist-node/source/blockedsource.d.ts +2 -2
  235. package/dist-node/source/blockedsource.d.ts.map +1 -1
  236. package/dist-node/source/blockedsource.js +8 -5
  237. package/dist-node/source/blockedsource.js.map +1 -1
  238. package/dist-node/source/client/base.d.ts +8 -7
  239. package/dist-node/source/client/base.d.ts.map +1 -1
  240. package/dist-node/source/client/base.js +7 -5
  241. package/dist-node/source/client/base.js.map +1 -1
  242. package/dist-node/source/client/fetch.d.ts +5 -2
  243. package/dist-node/source/client/fetch.d.ts.map +1 -1
  244. package/dist-node/source/client/fetch.js +7 -2
  245. package/dist-node/source/client/fetch.js.map +1 -1
  246. package/dist-node/source/client/http.d.ts +22 -4
  247. package/dist-node/source/client/http.d.ts.map +1 -1
  248. package/dist-node/source/client/http.js +16 -2
  249. package/dist-node/source/client/http.js.map +1 -1
  250. package/dist-node/source/client/xhr.d.ts +23 -3
  251. package/dist-node/source/client/xhr.d.ts.map +1 -1
  252. package/dist-node/source/client/xhr.js +12 -2
  253. package/dist-node/source/client/xhr.js.map +1 -1
  254. package/dist-node/source/file.d.ts +8 -5
  255. package/dist-node/source/file.d.ts.map +1 -1
  256. package/dist-node/source/file.js +40 -8
  257. package/dist-node/source/file.js.map +1 -1
  258. package/dist-node/source/filereader.d.ts +12 -4
  259. package/dist-node/source/filereader.d.ts.map +1 -1
  260. package/dist-node/source/filereader.js +15 -2
  261. package/dist-node/source/filereader.js.map +1 -1
  262. package/dist-node/source/httputils.d.ts +16 -9
  263. package/dist-node/source/httputils.d.ts.map +1 -1
  264. package/dist-node/source/httputils.js +19 -12
  265. package/dist-node/source/httputils.js.map +1 -1
  266. package/dist-node/source/remote.d.ts.map +1 -1
  267. package/dist-node/source/remote.js +19 -7
  268. package/dist-node/source/remote.js.map +1 -1
  269. package/dist-node/utils.d.ts +9 -8
  270. package/dist-node/utils.d.ts.map +1 -1
  271. package/dist-node/utils.js +17 -12
  272. package/dist-node/utils.js.map +1 -1
  273. package/dist-node/worker/create.js +1 -1
  274. package/dist-node/worker/create.js.map +1 -1
  275. package/dist-node/worker/decoder.d.ts +2 -0
  276. package/dist-node/worker/decoder.d.ts.map +1 -0
  277. package/dist-node/worker/decoder.js +24 -0
  278. package/dist-node/worker/decoder.js.map +1 -0
  279. package/package.json +5 -3
@@ -52,6 +52,33 @@ const dctSqrt2 = 5793; // sqrt(2)
52
52
  const dctSqrt1d2 = 2896; // sqrt(2) / 2
53
53
  /** @typedef {(number|HuffmanNode)[]} HuffmanNode */
54
54
  /** @typedef {{children: HuffmanNode, index: number}} Code */
55
+ /**
56
+ * @typedef {Object} JpegComponent
57
+ * @property {number} h
58
+ * @property {number} v
59
+ * @property {number} [quantizationIdx]
60
+ * @property {Int32Array} [quantizationTable]
61
+ * @property {number} blocksPerLine
62
+ * @property {number} blocksPerColumn
63
+ * @property {Int32Array[][]} blocks
64
+ * @property {HuffmanNode} [huffmanTableDC]
65
+ * @property {HuffmanNode} [huffmanTableAC]
66
+ * @property {number} [pred]
67
+ */
68
+ /**
69
+ * @typedef {Object} JpegFrame
70
+ * @property {boolean} extended
71
+ * @property {boolean} progressive
72
+ * @property {number} precision
73
+ * @property {number} scanLines
74
+ * @property {number} samplesPerLine
75
+ * @property {Object.<string, JpegComponent>} components
76
+ * @property {number[]} componentsOrder
77
+ * @property {number} maxH
78
+ * @property {number} maxV
79
+ * @property {number} mcusPerLine
80
+ * @property {number} mcusPerColumn
81
+ */
55
82
  /**
56
83
  * @param {Uint8Array<ArrayBuffer>} codeLengths
57
84
  * @param {Uint8Array<ArrayBuffer>} values
@@ -101,8 +128,25 @@ function buildHuffmanTable(codeLengths, values) {
101
128
  }
102
129
  return code[0].children;
103
130
  }
131
+ /**
132
+ * @param {Uint8Array} data
133
+ * @param {number} initialOffset
134
+ * @param {JpegFrame} frame
135
+ * @param {JpegComponent[]} components
136
+ * @param {number} resetInterval
137
+ * @param {number} spectralStart
138
+ * @param {number} spectralEnd
139
+ * @param {number} successivePrev
140
+ * @param {number} successive
141
+ */
104
142
  function decodeScan(data, initialOffset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) {
105
143
  const { mcusPerLine, progressive } = frame;
144
+ if (components.length > 1 && (mcusPerLine === undefined || frame.mcusPerColumn === undefined)) {
145
+ throw new Error('Missing MCU dimensions');
146
+ }
147
+ if (components.length === 1 && (components[0].blocksPerLine === undefined || components[0].blocksPerColumn === undefined)) {
148
+ throw new Error('Missing block dimensions');
149
+ }
106
150
  const startOffset = initialOffset;
107
151
  let offset = initialOffset;
108
152
  let bitsData = 0;
@@ -123,20 +167,26 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
123
167
  bitsCount = 7;
124
168
  return bitsData >>> 7;
125
169
  }
170
+ /** @param {HuffmanNode|undefined} tree */
126
171
  function decodeHuffman(tree) {
172
+ if (!tree) {
173
+ throw new Error('Huffman table not found');
174
+ }
127
175
  let node = tree;
128
176
  let bit;
129
177
  while ((bit = readBit()) !== null) { // eslint-disable-line no-cond-assign
130
- node = node[bit];
131
- if (typeof node === 'number') {
132
- return node;
178
+ const next = node[bit];
179
+ if (typeof next === 'number') {
180
+ return next;
133
181
  }
134
- if (typeof node !== 'object') {
182
+ if (typeof next !== 'object') {
135
183
  throw new Error('invalid huffman sequence');
136
184
  }
185
+ node = next;
137
186
  }
138
187
  return null;
139
188
  }
189
+ /** @param {number} initialLength */
140
190
  function receive(initialLength) {
141
191
  let length = initialLength;
142
192
  let n = 0;
@@ -150,6 +200,7 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
150
200
  }
151
201
  return n;
152
202
  }
203
+ /** @param {number} length */
153
204
  function receiveAndExtend(length) {
154
205
  const n = receive(length);
155
206
  if (n === undefined) {
@@ -160,9 +211,22 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
160
211
  }
161
212
  return n + (-1 << length) + 1;
162
213
  }
214
+ /**
215
+ * @param {JpegComponent} component
216
+ * @param {Int32Array} zz
217
+ */
163
218
  function decodeBaseline(component, zz) {
164
219
  const t = decodeHuffman(component.huffmanTableDC);
220
+ if (t === null) {
221
+ throw new Error('Huffman error');
222
+ }
165
223
  const diff = t === 0 ? 0 : receiveAndExtend(t);
224
+ if (diff === undefined) {
225
+ throw new Error('Unexpected end of stream');
226
+ }
227
+ if (component.pred === undefined) {
228
+ component.pred = 0;
229
+ }
166
230
  component.pred += diff;
167
231
  zz[0] = component.pred;
168
232
  let k = 1;
@@ -182,25 +246,51 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
182
246
  else {
183
247
  k += r;
184
248
  const z = dctZigZag[k];
185
- zz[z] = receiveAndExtend(s);
249
+ const val = receiveAndExtend(s);
250
+ if (val === undefined) {
251
+ throw new Error('Unexpected end of stream');
252
+ }
253
+ zz[z] = val;
186
254
  k++;
187
255
  }
188
256
  }
189
257
  }
258
+ /**
259
+ * @param {JpegComponent} component
260
+ * @param {Int32Array} zz
261
+ */
190
262
  function decodeDCFirst(component, zz) {
191
263
  const t = decodeHuffman(component.huffmanTableDC);
264
+ if (t === null) {
265
+ throw new Error('Huffman error');
266
+ }
192
267
  const value = receiveAndExtend(t);
193
268
  if (value === undefined) {
194
269
  throw new Error('Unexpected end of data in DC coefficient decoding');
195
270
  }
196
271
  const diff = t === 0 ? 0 : (value << successive);
272
+ if (component.pred === undefined) {
273
+ component.pred = 0;
274
+ }
197
275
  component.pred += diff;
198
276
  zz[0] = component.pred;
199
277
  }
200
- function decodeDCSuccessive(component, zz) {
201
- zz[0] |= readBit() << successive;
278
+ /**
279
+ * @param {JpegComponent} _
280
+ * @param {Int32Array} zz
281
+ */
282
+ function decodeDCSuccessive(_, zz) {
283
+ const bit = readBit();
284
+ if (bit === null) {
285
+ throw new Error('Unexpected end of data in DC coefficient decoding');
286
+ }
287
+ zz[0] |= bit << successive;
202
288
  }
203
289
  let eobrun = 0;
290
+ /**
291
+ * @param {JpegComponent} component
292
+ * @param {Int32Array} zz
293
+ */
204
294
  function decodeACFirst(component, zz) {
205
295
  if (eobrun > 0) {
206
296
  eobrun--;
@@ -239,7 +329,12 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
239
329
  }
240
330
  }
241
331
  let successiveACState = 0;
332
+ /** @type {number} */
242
333
  let successiveACNextValue;
334
+ /**
335
+ * @param {JpegComponent} component
336
+ * @param {Int32Array} zz
337
+ */
243
338
  function decodeACSuccessive(component, zz) {
244
339
  let k = spectralStart;
245
340
  const e = spectralEnd;
@@ -273,7 +368,11 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
273
368
  if (s !== 1) {
274
369
  throw new Error('invalid ACn encoding');
275
370
  }
276
- successiveACNextValue = receiveAndExtend(s);
371
+ const nextVal = receiveAndExtend(s);
372
+ if (nextVal === undefined) {
373
+ throw new Error('Unexpected end of data in AC coefficient decoding');
374
+ }
375
+ successiveACNextValue = nextVal;
277
376
  successiveACState = r ? 2 : 3;
278
377
  }
279
378
  continue; // eslint-disable-line no-continue
@@ -281,7 +380,11 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
281
380
  case 1: // skipping r zero items
282
381
  case 2:
283
382
  if (zz[z]) {
284
- zz[z] += (readBit() << successive) * direction;
383
+ const bit = readBit();
384
+ if (bit === null) {
385
+ throw new Error('Unexpected end of data in AC coefficient decoding');
386
+ }
387
+ zz[z] += (bit << successive) * direction;
285
388
  }
286
389
  else {
287
390
  r--;
@@ -292,7 +395,11 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
292
395
  break;
293
396
  case 3: // set value for a zero item
294
397
  if (zz[z]) {
295
- zz[z] += (readBit() << successive) * direction;
398
+ const bit = readBit();
399
+ if (bit === null) {
400
+ throw new Error('Unexpected end of data in AC coefficient decoding');
401
+ }
402
+ zz[z] += (bit << successive) * direction;
296
403
  }
297
404
  else {
298
405
  zz[z] = successiveACNextValue << successive;
@@ -301,7 +408,11 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
301
408
  break;
302
409
  case 4: // eob
303
410
  if (zz[z]) {
304
- zz[z] += (readBit() << successive) * direction;
411
+ const bit = readBit();
412
+ if (bit === null) {
413
+ throw new Error('Unexpected end of data in AC coefficient decoding');
414
+ }
415
+ zz[z] += (bit << successive) * direction;
305
416
  }
306
417
  break;
307
418
  default:
@@ -316,16 +427,34 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
316
427
  }
317
428
  }
318
429
  }
430
+ /**
431
+ * @param {JpegComponent} component
432
+ * @param {function} decodeFunction
433
+ * @param {number} mcu
434
+ * @param {number} row
435
+ * @param {number} col
436
+ */
319
437
  function decodeMcu(component, decodeFunction, mcu, row, col) {
320
438
  const mcuRow = (mcu / mcusPerLine) | 0;
321
439
  const mcuCol = mcu % mcusPerLine;
322
440
  const blockRow = (mcuRow * component.v) + row;
323
441
  const blockCol = (mcuCol * component.h) + col;
442
+ if (!component.blocks) {
443
+ throw new Error('Missing blocks');
444
+ }
324
445
  decodeFunction(component, component.blocks[blockRow][blockCol]);
325
446
  }
447
+ /**
448
+ * @param {JpegComponent} component
449
+ * @param {function} decodeFunction
450
+ * @param {number} mcu
451
+ */
326
452
  function decodeBlock(component, decodeFunction, mcu) {
327
453
  const blockRow = (mcu / component.blocksPerLine) | 0;
328
454
  const blockCol = mcu % component.blocksPerLine;
455
+ if (!component.blocks) {
456
+ throw new Error('Missing blocks');
457
+ }
329
458
  decodeFunction(component, component.blocks[blockRow][blockCol]);
330
459
  }
331
460
  const componentsLength = components.length;
@@ -402,9 +531,15 @@ function decodeScan(data, initialOffset, frame, components, resetInterval, spect
402
531
  }
403
532
  return offset - startOffset;
404
533
  }
405
- function buildComponentData(frame, component) {
534
+ /**
535
+ * @param {JpegComponent} component
536
+ */
537
+ function buildComponentData(component) {
406
538
  const lines = [];
407
539
  const { blocksPerLine, blocksPerColumn } = component;
540
+ if (!blocksPerLine || !blocksPerColumn || !component.blocks) {
541
+ throw new Error('Missing component data');
542
+ }
408
543
  const samplesPerLine = blocksPerLine << 3;
409
544
  const R = new Int32Array(64);
410
545
  const r = new Uint8Array(64);
@@ -413,8 +548,16 @@ function buildComponentData(frame, component) {
413
548
  // "Practical Fast 1-D DCT Algorithms with 11 Multiplications",
414
549
  // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,
415
550
  // 988-991.
551
+ /**
552
+ * @param {Int32Array} zz
553
+ * @param {Uint8Array} dataOut
554
+ * @param {Int32Array} dataIn
555
+ */
416
556
  function quantizeAndInverse(zz, dataOut, dataIn) {
417
557
  const qt = component.quantizationTable;
558
+ if (!qt) {
559
+ throw new Error('No quantization table found');
560
+ }
418
561
  let v0;
419
562
  let v1;
420
563
  let v2;
@@ -593,14 +736,21 @@ class JpegStreamReader {
593
736
  constructor() {
594
737
  this.jfif = null;
595
738
  this.adobe = null;
739
+ /** @type {number} */
740
+ this.resetInterval = 0;
741
+ /** @type {Int32Array[]} */
596
742
  this.quantizationTables = [];
743
+ /** @type {HuffmanNode[]} */
597
744
  this.huffmanTablesAC = [];
745
+ /** @type {HuffmanNode[]} */
598
746
  this.huffmanTablesDC = [];
747
+ /** @type {JpegFrame[]} */
599
748
  this.frames = [];
600
749
  }
601
750
  resetFrames() {
602
751
  this.frames = [];
603
752
  }
753
+ /** @param {Uint8Array} data */
604
754
  parse(data) {
605
755
  let offset = 0;
606
756
  // const { length } = data;
@@ -615,6 +765,7 @@ class JpegStreamReader {
615
765
  offset += array.length;
616
766
  return array;
617
767
  }
768
+ /** @param {JpegFrame} frame */
618
769
  function prepareComponents(frame) {
619
770
  let maxH = 0;
620
771
  let maxV = 0;
@@ -741,15 +892,21 @@ class JpegStreamReader {
741
892
  case 0xFFC1: // SOF1 (Start of Frame, Extended DCT)
742
893
  case 0xFFC2: { // SOF2 (Start of Frame, Progressive DCT)
743
894
  readUint16(); // skip data length
895
+ /** @type {JpegFrame} */
744
896
  const frame = {
745
897
  extended: (fileMarker === 0xFFC1),
746
898
  progressive: (fileMarker === 0xFFC2),
747
899
  precision: data[offset++],
748
900
  scanLines: readUint16(),
749
901
  samplesPerLine: readUint16(),
902
+ /** @type {Object.<string, JpegComponent>} */
750
903
  components: {},
751
- /** @type {any[]} */
904
+ /** @type {number[]} */
752
905
  componentsOrder: [],
906
+ maxH: 0,
907
+ maxV: 0,
908
+ mcusPerLine: 0,
909
+ mcusPerColumn: 0,
753
910
  };
754
911
  const componentsCount = data[offset++];
755
912
  let componentId;
@@ -765,6 +922,9 @@ class JpegStreamReader {
765
922
  h,
766
923
  v,
767
924
  quantizationIdx: qId,
925
+ blocksPerLine: 0,
926
+ blocksPerColumn: 0,
927
+ blocks: [],
768
928
  };
769
929
  offset += 3;
770
930
  }
@@ -849,11 +1009,17 @@ class JpegStreamReader {
849
1009
  for (let i = 0; i < this.frames.length; i++) {
850
1010
  const cp = this.frames[i].components;
851
1011
  for (const j of Object.keys(cp)) {
852
- cp[j].quantizationTable = this.quantizationTables[cp[j].quantizationIdx];
853
- delete cp[j].quantizationIdx;
1012
+ const qIdx = cp[j].quantizationIdx;
1013
+ if (typeof qIdx === 'number') {
1014
+ cp[j].quantizationTable = this.quantizationTables[qIdx];
1015
+ delete cp[j].quantizationIdx;
1016
+ }
854
1017
  }
855
1018
  }
856
1019
  const frame = frames[0];
1020
+ if (!frame.maxH || !frame.maxV) {
1021
+ throw new Error('Invalid frame dimensions');
1022
+ }
857
1023
  const { components, componentsOrder } = frame;
858
1024
  const outComponents = [];
859
1025
  const width = frame.samplesPerLine;
@@ -861,7 +1027,7 @@ class JpegStreamReader {
861
1027
  for (let i = 0; i < componentsOrder.length; i++) {
862
1028
  const component = components[componentsOrder[i]];
863
1029
  outComponents.push({
864
- lines: buildComponentData(frame, component),
1030
+ lines: buildComponentData(component),
865
1031
  scaleX: component.h / frame.maxH,
866
1032
  scaleY: component.v / frame.maxV,
867
1033
  });
@@ -881,6 +1047,9 @@ class JpegStreamReader {
881
1047
  }
882
1048
  }
883
1049
  class JpegDecoder extends basedecoder_js_1.default {
1050
+ /**
1051
+ * @param {import('./basedecoder.js').BaseDecoderParameters & { JPEGTables?: Uint8Array }} parameters
1052
+ */
884
1053
  constructor(parameters) {
885
1054
  super(parameters);
886
1055
  this.reader = new JpegStreamReader();
@@ -888,6 +1057,7 @@ class JpegDecoder extends basedecoder_js_1.default {
888
1057
  this.reader.parse(parameters.JPEGTables);
889
1058
  }
890
1059
  }
1060
+ /** @param {ArrayBuffer} buffer */
891
1061
  decodeBlock(buffer) {
892
1062
  this.reader.resetFrames();
893
1063
  this.reader.parse(new Uint8Array(buffer));
@@ -895,4 +1065,5 @@ class JpegDecoder extends basedecoder_js_1.default {
895
1065
  }
896
1066
  }
897
1067
  exports.default = JpegDecoder;
1068
+ //# sourceMappingURL=jpeg.js.map
898
1069
  //# sourceMappingURL=jpeg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jpeg.js","sourceRoot":"","sources":["../../dist-module/compression/jpeg.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jpeg.js","sourceRoot":"","sources":["../../dist-module/compression/jpeg.js"],"names":[],"mappings":"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"}
@@ -1,7 +1,17 @@
1
+ /**
2
+ * @typedef {import('./basedecoder.js').BaseDecoderParameters & { LercParameters?: any }} LercDecoderParameters
3
+ */
1
4
  export const zstd: ZSTDDecoder;
2
5
  export default class LercDecoder extends BaseDecoder {
3
- decodeBlock(buffer: any): any;
6
+ /**
7
+ * @param {ArrayBufferLike} buffer
8
+ * @returns {ArrayBufferLike}
9
+ */
10
+ decodeBlock(buffer: ArrayBufferLike): ArrayBufferLike;
4
11
  }
12
+ export type LercDecoderParameters = import("./basedecoder.js").BaseDecoderParameters & {
13
+ LercParameters?: any;
14
+ };
5
15
  import { ZSTDDecoder } from 'zstddec';
6
16
  import BaseDecoder from './basedecoder.js';
7
17
  //# sourceMappingURL=lerc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lerc.d.ts","sourceRoot":"","sources":["../../dist-module/compression/lerc.js"],"names":[],"mappings":"AAKA,+BAAsC;AACtC;IACI,8BAiBC;CACJ;4BAvB2B,SAAS;wBACb,kBAAkB"}
1
+ {"version":3,"file":"lerc.d.ts","sourceRoot":"","sources":["../../dist-module/compression/lerc.js"],"names":[],"mappings":"AAMA;;GAEG;AACH,+BAAsC;AACtC;IACI;;;OAGG;IACH,oBAHW,eAAe,GACb,eAAe,CAsB3B;CACJ;oCA7BY,OAAO,kBAAkB,EAAE,qBAAqB,GAAG;IAAE,cAAc,CAAC,EAAE,GAAG,CAAA;CAAE;4BAJ5D,SAAS;wBACb,kBAAkB"}
@@ -5,30 +5,42 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.zstd = void 0;
7
7
  const pako_1 = require("pako");
8
+ // @ts-expect-error
8
9
  const lerc_1 = __importDefault(require("lerc"));
9
10
  const zstddec_1 = require("zstddec");
10
11
  const basedecoder_js_1 = __importDefault(require("./basedecoder.js"));
11
12
  const globals_js_1 = require("../globals.js");
13
+ /**
14
+ * @typedef {import('./basedecoder.js').BaseDecoderParameters & { LercParameters?: any }} LercDecoderParameters
15
+ */
12
16
  exports.zstd = new zstddec_1.ZSTDDecoder();
13
17
  class LercDecoder extends basedecoder_js_1.default {
18
+ /**
19
+ * @param {ArrayBufferLike} buffer
20
+ * @returns {ArrayBufferLike}
21
+ */
14
22
  decodeBlock(buffer) {
15
- const addCompression = this.parameters.LercParameters[globals_js_1.LercParameters.AddCompression];
23
+ const params = /** @type {LercDecoderParameters} */ (this.parameters);
24
+ const addCompression = params.LercParameters?.[globals_js_1.LercParameters.AddCompression];
25
+ /** @type {ArrayBufferLike} */
26
+ let decoded = buffer;
16
27
  switch (addCompression) {
17
28
  case globals_js_1.LercAddCompression.None:
18
29
  break;
19
30
  case globals_js_1.LercAddCompression.Deflate:
20
- buffer = (0, pako_1.inflate)(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring
31
+ decoded = (0, pako_1.inflate)(new Uint8Array(decoded)).buffer;
21
32
  break;
22
33
  case globals_js_1.LercAddCompression.Zstandard:
23
- buffer = exports.zstd.decode(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring
34
+ decoded = exports.zstd.decode(new Uint8Array(decoded)).buffer;
24
35
  break;
25
36
  default:
26
37
  throw new Error(`Unsupported LERC additional compression method identifier: ${addCompression}`);
27
38
  }
28
- const lercResult = lerc_1.default.decode(buffer, { returnPixelInterleavedDims: this.parameters.planarConfiguration === 1 });
39
+ const lercResult = lerc_1.default.decode(decoded, { returnPixelInterleavedDims: this.parameters.planarConfiguration === 1 });
29
40
  const lercData = lercResult.pixels[0];
30
41
  return lercData.buffer;
31
42
  }
32
43
  }
33
44
  exports.default = LercDecoder;
45
+ //# sourceMappingURL=lerc.js.map
34
46
  //# sourceMappingURL=lerc.js.map