@cogeotiff/core 8.1.0 → 9.0.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 (67) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +45 -7
  3. package/build/__benchmark__/cog.read.benchmark.js +5 -5
  4. package/build/__benchmark__/cog.read.benchmark.js.map +1 -1
  5. package/build/__benchmark__/source.file.js +9 -2
  6. package/build/__benchmark__/source.file.js.map +1 -1
  7. package/build/__test__/cog.image.test.js +14 -9
  8. package/build/__test__/cog.image.test.js.map +1 -1
  9. package/build/__test__/cog.read.test.js +50 -8
  10. package/build/__test__/cog.read.test.js.map +1 -1
  11. package/build/__test__/example.js +2 -2
  12. package/build/__test__/example.js.map +1 -1
  13. package/build/const/index.d.ts +1 -1
  14. package/build/const/index.js +1 -1
  15. package/build/const/index.js.map +1 -1
  16. package/build/const/tiff.mime.d.ts +11 -5
  17. package/build/const/tiff.mime.js +27 -14
  18. package/build/const/tiff.mime.js.map +1 -1
  19. package/build/const/tiff.tag.id.d.ts +603 -41
  20. package/build/const/tiff.tag.id.js +479 -50
  21. package/build/const/tiff.tag.id.js.map +1 -1
  22. package/build/const/tiff.tag.value.js +1 -1
  23. package/build/const/tiff.tag.value.js.map +1 -1
  24. package/build/index.d.ts +6 -4
  25. package/build/index.js +6 -3
  26. package/build/index.js.map +1 -1
  27. package/build/read/tiff.gdal.d.ts +1 -1
  28. package/build/read/tiff.gdal.js +1 -1
  29. package/build/read/tiff.gdal.js.map +1 -1
  30. package/build/read/tiff.ifd.config.js +1 -1
  31. package/build/read/tiff.ifd.config.js.map +1 -1
  32. package/build/read/tiff.tag.d.ts +3 -0
  33. package/build/read/tiff.tag.factory.d.ts +5 -5
  34. package/build/read/tiff.tag.factory.js +22 -13
  35. package/build/read/tiff.tag.factory.js.map +1 -1
  36. package/build/read/tiff.value.reader.d.ts +1 -1
  37. package/build/read/tiff.value.reader.js.map +1 -1
  38. package/build/{cog.tiff.d.ts → tiff.d.ts} +12 -10
  39. package/build/{cog.tiff.image.d.ts → tiff.image.d.ts} +69 -27
  40. package/build/{cog.tiff.image.js → tiff.image.js} +131 -82
  41. package/build/tiff.image.js.map +1 -0
  42. package/build/{cog.tiff.js → tiff.js} +17 -10
  43. package/build/tiff.js.map +1 -0
  44. package/build/util/bytes.d.ts +4 -2
  45. package/build/util/bytes.js +5 -2
  46. package/build/util/bytes.js.map +1 -1
  47. package/package.json +2 -2
  48. package/src/__benchmark__/cog.read.benchmark.ts +6 -5
  49. package/src/__benchmark__/source.file.ts +10 -2
  50. package/src/__test__/cog.image.test.ts +17 -9
  51. package/src/__test__/cog.read.test.ts +65 -9
  52. package/src/__test__/example.ts +3 -2
  53. package/src/const/index.ts +1 -1
  54. package/src/const/tiff.mime.ts +28 -14
  55. package/src/const/tiff.tag.id.ts +758 -131
  56. package/src/const/tiff.tag.value.ts +16 -16
  57. package/src/index.ts +20 -4
  58. package/src/read/tiff.gdal.ts +1 -1
  59. package/src/read/tiff.ifd.config.ts +1 -1
  60. package/src/read/tiff.tag.factory.ts +33 -17
  61. package/src/read/tiff.tag.ts +3 -0
  62. package/src/read/tiff.value.reader.ts +1 -1
  63. package/src/{cog.tiff.image.ts → tiff.image.ts} +140 -91
  64. package/src/{cog.tiff.ts → tiff.ts} +18 -16
  65. package/src/util/bytes.ts +5 -1
  66. package/build/cog.tiff.image.js.map +0 -1
  67. package/build/cog.tiff.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { getUint } from './util/bytes.js';
2
- import { TiffCompression, TiffMimeType } from './const/tiff.mime.js';
3
- import { TiffTag, TiffTagGeo } from './const/tiff.tag.id.js';
1
+ import { getCompressionMimeType, TiffCompressionMimeType, TiffMimeType } from './const/tiff.mime.js';
2
+ import { Compression, SubFileType, TiffTag, TiffTagGeo } from './const/tiff.tag.id.js';
4
3
  import { fetchAllOffsets, fetchLazy, getValueAt } from './read/tiff.tag.factory.js';
4
+ import { getUint } from './util/bytes.js';
5
5
  /** Invalid EPSG code */
6
6
  export const InvalidProjectionCode = 32767;
7
7
  /** Tags that are commonly accessed for geotiffs */
@@ -19,15 +19,8 @@ export const ImportantTags = new Set([
19
19
  TiffTag.GeoDoubleParams,
20
20
  TiffTag.TileOffsets,
21
21
  ]);
22
- export class CogTiffImage {
22
+ export class TiffImage {
23
23
  constructor(tiff, id, tags) {
24
- /** All IFD tags that have been read for the image */
25
- Object.defineProperty(this, "tags", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: void 0
30
- });
31
24
  /**
32
25
  * Id of the tif image, generally the image index inside the tif
33
26
  * where 0 is the root image, and every sub image is +1
@@ -61,6 +54,13 @@ export class CogTiffImage {
61
54
  writable: true,
62
55
  value: new Map()
63
56
  });
57
+ /** All IFD tags that have been read for the image */
58
+ Object.defineProperty(this, "tags", {
59
+ enumerable: true,
60
+ configurable: true,
61
+ writable: true,
62
+ value: void 0
63
+ });
64
64
  this.tiff = tiff;
65
65
  this.id = id;
66
66
  this.tags = tags;
@@ -91,9 +91,12 @@ export class CogTiffImage {
91
91
  await this.loadGeoTiffTags();
92
92
  }
93
93
  /**
94
- * Get the value of a TiffTag if it has been loaded, null otherwise
94
+ * Get the value of a TiffTag if it has been loaded, null otherwise.
95
+ *
96
+ * If the value is not loaded use {@link TiffImage.fetch} to load the value
97
+ * Or use {@link TiffImage.has} to check if the tag exists
98
+ *
95
99
  *
96
- * if the value is not loaded @see {CogTiffImage.fetch}
97
100
  * @returns value if loaded, null otherwise
98
101
  */
99
102
  value(tag) {
@@ -102,8 +105,77 @@ export class CogTiffImage {
102
105
  return null;
103
106
  if (sourceTag.type === 'offset' && sourceTag.isLoaded === false)
104
107
  return null;
108
+ // TODO would be good to type check this
105
109
  return sourceTag.value;
106
110
  }
111
+ /**
112
+ * Does the tag exist
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * img.has(TiffTag.ImageWidth) // true
117
+ * ```
118
+ *
119
+ * @param tag Tag to check
120
+ * @returns true if the tag exists, false otherwise
121
+ */
122
+ has(tag) {
123
+ return this.tags.has(tag);
124
+ }
125
+ /**
126
+ * Load a tag.
127
+ *
128
+ * If it is not currently loaded, fetch the required data for the tag.
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * await img.fetch(TiffTag.ImageWidth) // 512 (px)
133
+ * ```
134
+ *
135
+ * @param tag tag to fetch
136
+ */
137
+ async fetch(tag) {
138
+ const sourceTag = this.tags.get(tag);
139
+ if (sourceTag == null)
140
+ return null;
141
+ if (sourceTag.type === 'inline')
142
+ return sourceTag.value;
143
+ if (sourceTag.type === 'lazy')
144
+ return fetchLazy(sourceTag, this.tiff);
145
+ if (sourceTag.isLoaded)
146
+ return sourceTag.value;
147
+ if (sourceTag.type === 'offset')
148
+ return fetchAllOffsets(this.tiff, sourceTag);
149
+ throw new Error('Cannot fetch:' + tag);
150
+ }
151
+ /**
152
+ * Get the associated TiffTagGeo
153
+ *
154
+ * @example
155
+ * ```typescript
156
+ * image.valueGeo(TiffTagGeo.GTRasterTypeGeoKey)
157
+ * ```
158
+ * @throws if {@link loadGeoTiffTags} has not been called
159
+ */
160
+ valueGeo(tag) {
161
+ if (this.isGeoTagsLoaded === false)
162
+ throw new Error('loadGeoTiffTags() has not been called');
163
+ return this.tagsGeo.get(tag);
164
+ }
165
+ /**
166
+ * Load and parse the GDAL_NODATA Tifftag
167
+ *
168
+ * @throws if the tag is not loaded
169
+ * @returns null if the tag does not exist
170
+ */
171
+ get noData() {
172
+ const tag = this.tags.get(TiffTag.GdalNoData);
173
+ if (tag == null)
174
+ return null;
175
+ if (tag.value)
176
+ return Number(tag.value);
177
+ throw new Error('GdalNoData tag is not loaded');
178
+ }
107
179
  /**
108
180
  * Load and unpack the GeoKeyDirectory
109
181
  *
@@ -147,44 +219,17 @@ export class CogTiffImage {
147
219
  if (typeof tag.value === 'string') {
148
220
  this.tagsGeo.set(key, tag.value.slice(offset, offset + count - 1).trim());
149
221
  }
222
+ else if (Array.isArray(tag.value)) {
223
+ if (count === 1)
224
+ this.tagsGeo.set(key, tag.value[offset]);
225
+ else
226
+ this.tagsGeo.set(key, tag.value.slice(offset, offset + count));
227
+ }
150
228
  else {
151
229
  throw new Error('Failed to extract GeoTiffTags');
152
230
  }
153
231
  }
154
232
  }
155
- /**
156
- * Get the associated TiffTagGeo
157
- *
158
- * @example
159
- * ```typescript
160
- * image.valueGeo(TiffTagGeo.GTRasterTypeGeoKey)
161
- * ```
162
- * @throws if {@link loadGeoTiffTags} has not been called
163
- */
164
- valueGeo(tag) {
165
- if (this.isGeoTagsLoaded === false)
166
- throw new Error('loadGeoTiffTags() has not been called');
167
- return this.tagsGeo.get(tag);
168
- }
169
- /**
170
- * Load a tag, if it is not currently loaded, fetch the required data for the tag.
171
- *
172
- * @param tag tag to fetch
173
- */
174
- async fetch(tag) {
175
- const sourceTag = this.tags.get(tag);
176
- if (sourceTag == null)
177
- return null;
178
- if (sourceTag.type === 'inline')
179
- return sourceTag.value;
180
- if (sourceTag.type === 'lazy')
181
- return fetchLazy(sourceTag, this.tiff);
182
- if (sourceTag.isLoaded)
183
- return sourceTag.value;
184
- if (sourceTag.type === 'offset')
185
- return fetchAllOffsets(this.tiff, sourceTag);
186
- throw new Error('Cannot fetch:' + tag);
187
- }
188
233
  /**
189
234
  * Get the origin point for the image
190
235
  *
@@ -200,7 +245,7 @@ export class CogTiffImage {
200
245
  return [modelTransformation[3], modelTransformation[7], modelTransformation[11]];
201
246
  }
202
247
  // If this is a sub image, use the origin from the top level image
203
- if (this.value(TiffTag.NewSubFileType) === 1 && this.id !== 0) {
248
+ if (this.value(TiffTag.SubFileType) === SubFileType.ReducedImage && this.id !== 0) {
204
249
  return this.tiff.images[0].origin;
205
250
  }
206
251
  throw new Error('Image does not have a geo transformation.');
@@ -211,7 +256,7 @@ export class CogTiffImage {
211
256
  if (isImageLocated)
212
257
  return true;
213
258
  // If this is a sub image, use the isGeoLocated from the top level image
214
- if (this.value(TiffTag.NewSubFileType) === 1 && this.id !== 0)
259
+ if (this.isSubImage && this.id !== 0)
215
260
  return this.tiff.images[0].isGeoLocated;
216
261
  return false;
217
262
  }
@@ -230,7 +275,7 @@ export class CogTiffImage {
230
275
  return [modelTransformation[0], modelTransformation[5], modelTransformation[10]];
231
276
  }
232
277
  // If this is a sub image, use the resolution from the top level image
233
- if (this.value(TiffTag.NewSubFileType) === 1 && this.id !== 0) {
278
+ if (this.isSubImage && this.id !== 0) {
234
279
  const firstImg = this.tiff.images[0];
235
280
  const [resX, resY, resZ] = firstImg.resolution;
236
281
  const firstImgSize = firstImg.size;
@@ -240,6 +285,14 @@ export class CogTiffImage {
240
285
  }
241
286
  throw new Error('Image does not have a geo transformation.');
242
287
  }
288
+ /**
289
+ * Is this image a reduced size image
290
+ * @see {@link TiffTag.SubFileType}
291
+ * @returns true if SubFileType is Reduces image, false otherwise
292
+ */
293
+ get isSubImage() {
294
+ return this.value(TiffTag.SubFileType) === SubFileType.ReducedImage;
295
+ }
243
296
  /**
244
297
  * Bounding box of the image
245
298
  *
@@ -261,23 +314,25 @@ export class CogTiffImage {
261
314
  /**
262
315
  * Get the compression used by the tile
263
316
  *
264
- * @see {@link TiffCompression}
317
+ * @see {@link TiffCompressionMimeType}
265
318
  *
266
319
  * @returns Compression type eg webp
267
320
  */
268
321
  get compression() {
269
322
  const compression = this.value(TiffTag.Compression);
270
- if (compression == null || typeof compression !== 'number')
323
+ if (compression == null)
271
324
  return null;
272
- return TiffCompression[compression];
325
+ return TiffCompressionMimeType[compression];
273
326
  }
274
327
  /**
275
328
  * Attempt to read the EPSG Code from TiffGeoTags
276
329
  *
330
+ * looks at both TiffTagGeo.ProjectionGeoKey and TiffTagGeo.ProjectedCRSGeoKey
331
+ *
277
332
  * @returns EPSG Code if it exists
278
333
  */
279
334
  get epsg() {
280
- const projection = this.valueGeo(TiffTagGeo.ProjectedCSTypeGeoKey);
335
+ const projection = this.valueGeo(TiffTagGeo.ProjectionGeoKey) ?? this.valueGeo(TiffTagGeo.ProjectedCRSGeoKey);
281
336
  if (projection === InvalidProjectionCode)
282
337
  return null;
283
338
  return projection;
@@ -288,10 +343,11 @@ export class CogTiffImage {
288
343
  * @returns Size in pixels
289
344
  */
290
345
  get size() {
291
- return {
292
- width: this.value(TiffTag.ImageWidth),
293
- height: this.value(TiffTag.ImageHeight),
294
- };
346
+ const width = this.value(TiffTag.ImageWidth);
347
+ const height = this.value(TiffTag.ImageWidth);
348
+ if (width == null || height == null)
349
+ throw new Error('Tiff has no height or width');
350
+ return { width, height };
295
351
  }
296
352
  /**
297
353
  * Determine if this image is tiled
@@ -303,10 +359,11 @@ export class CogTiffImage {
303
359
  * Get size of individual tiles
304
360
  */
305
361
  get tileSize() {
306
- return {
307
- width: this.value(TiffTag.TileWidth),
308
- height: this.value(TiffTag.TileHeight),
309
- };
362
+ const width = this.value(TiffTag.TileWidth);
363
+ const height = this.value(TiffTag.TileHeight);
364
+ if (width == null || height == null)
365
+ throw new Error('Tiff is not tiled');
366
+ return { width, height };
310
367
  }
311
368
  /**
312
369
  * Number of tiles used to create this image
@@ -339,10 +396,7 @@ export class CogTiffImage {
339
396
  * @returns number of strips present
340
397
  */
341
398
  get stripCount() {
342
- const tileOffset = this.tags.get(TiffTag.StripByteCounts);
343
- if (tileOffset == null)
344
- return 0;
345
- return tileOffset.count;
399
+ return this.tags.get(TiffTag.StripByteCounts)?.count ?? 0;
346
400
  }
347
401
  // Clamp the bounds of the output image to the size of the image, as sometimes the edge tiles are not full tiles
348
402
  getTileBounds(x, y) {
@@ -377,7 +431,7 @@ export class CogTiffImage {
377
431
  getJpegHeader(bytes) {
378
432
  // Both the JPEGTable and the Bytes with have the start of image and end of image markers
379
433
  // StartOfImage 0xffd8 EndOfImage 0xffd9
380
- const tables = this.value(TiffTag.JPEGTables);
434
+ const tables = this.value(TiffTag.JpegTables);
381
435
  if (tables == null)
382
436
  throw new Error('Unable to find Jpeg header');
383
437
  // Remove EndOfImage marker
@@ -389,18 +443,19 @@ export class CogTiffImage {
389
443
  }
390
444
  /** Read image bytes at the given offset */
391
445
  async getBytes(offset, byteCount) {
392
- const mimeType = this.compression;
393
- if (mimeType == null)
394
- throw new Error('Unsupported compression: ' + this.value(TiffTag.Compression));
395
446
  if (byteCount === 0)
396
447
  return null;
397
448
  const bytes = await this.tiff.source.fetch(offset, byteCount);
398
449
  if (bytes.byteLength < byteCount) {
399
450
  throw new Error(`Failed to fetch bytes from offset:${offset} wanted:${byteCount} got:${bytes.byteLength}`);
400
451
  }
401
- if (this.compression === TiffMimeType.Jpeg)
402
- return { mimeType, bytes: this.getJpegHeader(bytes) };
403
- return { mimeType, bytes };
452
+ let compression = this.value(TiffTag.Compression);
453
+ if (compression == null)
454
+ compression = Compression.None; // No compression found default ??
455
+ const mimeType = getCompressionMimeType(compression) ?? TiffMimeType.None;
456
+ if (compression === Compression.Jpeg)
457
+ return { mimeType, bytes: this.getJpegHeader(bytes), compression };
458
+ return { mimeType, bytes, compression };
404
459
  }
405
460
  /**
406
461
  * Load a tile into a ArrayBuffer
@@ -411,13 +466,10 @@ export class CogTiffImage {
411
466
  * @param y Tile y offset
412
467
  */
413
468
  async getTile(x, y) {
414
- const mimeType = this.compression;
415
469
  const size = this.size;
416
470
  const tiles = this.tileSize;
417
471
  if (tiles == null)
418
472
  throw new Error('Tiff is not tiled');
419
- if (mimeType == null)
420
- throw new Error('Unsupported compression: ' + this.value(TiffTag.Compression));
421
473
  // TODO support GhostOptionTileOrder
422
474
  const nyTiles = Math.ceil(size.height / tiles.height);
423
475
  const nxTiles = Math.ceil(size.width / tiles.width);
@@ -467,7 +519,7 @@ export class CogTiffImage {
467
519
  const leaderBytes = this.tiff.options?.tileLeaderByteSize;
468
520
  if (leaderBytes) {
469
521
  const offset = await getOffset(this.tiff, this.tileOffset, index);
470
- // Sparse COG no data found
522
+ // Sparse tiff no data found
471
523
  if (offset === 0)
472
524
  return { offset: 0, imageSize: 0 };
473
525
  // This fetch will generally load in the bytes needed for the image too
@@ -488,11 +540,8 @@ export class CogTiffImage {
488
540
  function getOffset(tiff, x, index) {
489
541
  if (index > x.count || index < 0)
490
542
  throw new Error('TagIndex: out of bounds ' + x.id + ' @ ' + index);
491
- if (x.type === 'inline') {
492
- if (x.count > 1)
493
- return x.value[index];
494
- return x.value;
495
- }
543
+ if (x.type === 'inline')
544
+ return x.value[index];
496
545
  return getValueAt(tiff, x, index);
497
546
  }
498
- //# sourceMappingURL=cog.tiff.image.js.map
547
+ //# sourceMappingURL=tiff.image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.image.js","sourceRoot":"","sources":["../src/tiff.image.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,20 @@
1
- import { CogTiffImage } from './cog.tiff.image.js';
2
1
  import { TiffEndian } from './const/tiff.endian.js';
3
2
  import { TiffVersion } from './const/tiff.version.js';
4
3
  import { hasBytes } from './read/data.view.offset.js';
5
- import { CogTifGhostOptions } from './read/tiff.gdal.js';
4
+ import { TiffGhostOptions } from './read/tiff.gdal.js';
6
5
  import { TagTiffBigConfig, TagTiffConfig } from './read/tiff.ifd.config.js';
7
6
  import { createTag } from './read/tiff.tag.factory.js';
7
+ import { TiffImage } from './tiff.image.js';
8
8
  import { getUint } from './util/bytes.js';
9
9
  import { toHex } from './util/util.hex.js';
10
- export class CogTiff {
10
+ export class Tiff {
11
11
  constructor(source) {
12
12
  /** Read 16KB blocks at a time */
13
13
  Object.defineProperty(this, "defaultReadSize", {
14
14
  enumerable: true,
15
15
  configurable: true,
16
16
  writable: true,
17
- value: 16 * 1024
17
+ value: Tiff.DefaultReadSize
18
18
  });
19
19
  /** Where this cog is fetching its data from */
20
20
  Object.defineProperty(this, "source", {
@@ -73,12 +73,12 @@ export class CogTiff {
73
73
  });
74
74
  this.source = source;
75
75
  }
76
- /** Create a COG and initialize it by reading the COG headers */
76
+ /** Create a tiff and initialize it by reading the tiff headers */
77
77
  static create(source) {
78
- return new CogTiff(source).init();
78
+ return new Tiff(source).init();
79
79
  }
80
80
  /**
81
- * Initialize the COG loading in the header and all image headers
81
+ * Initialize the tiff loading in the header and all image headers
82
82
  */
83
83
  init() {
84
84
  if (this._initPromise)
@@ -146,7 +146,7 @@ export class CogTiff {
146
146
  const ghostSize = nextOffsetIfd - offset;
147
147
  // GDAL now stores metadata between the IFD inside a ghost storage area
148
148
  if (ghostSize > 0 && ghostSize < 16 * 1024) {
149
- this.options = new CogTifGhostOptions();
149
+ this.options = new TiffGhostOptions();
150
150
  this.options.process(bytes, offset, ghostSize);
151
151
  }
152
152
  while (nextOffsetIfd !== 0) {
@@ -185,10 +185,17 @@ export class CogTiff {
185
185
  const tag = createTag(this, view, startOffset + i * ifdSize);
186
186
  tags.set(tag.id, tag);
187
187
  }
188
- this.images.push(new CogTiffImage(this, this.images.length, tags));
188
+ this.images.push(new TiffImage(this, this.images.length, tags));
189
189
  return getUint(view, startOffset + tagCount * ifdSize, this.ifdConfig.pointer, this.isLittleEndian);
190
190
  }
191
191
  }
192
+ /** Read 16KB blocks at a time */
193
+ Object.defineProperty(Tiff, "DefaultReadSize", {
194
+ enumerable: true,
195
+ configurable: true,
196
+ writable: true,
197
+ value: 16 * 1024
198
+ });
192
199
  function getMaxLength(source, offset, length) {
193
200
  // max length is unknown, roll the dice and hope the chunk exists
194
201
  if (source.metadata?.size == null)
@@ -199,4 +206,4 @@ function getMaxLength(source, offset, length) {
199
206
  return size - offset;
200
207
  return length;
201
208
  }
202
- //# sourceMappingURL=cog.tiff.js.map
209
+ //# sourceMappingURL=tiff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.js","sourceRoot":"","sources":["../src/tiff.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- export declare enum ByteSize {
1
+ export declare enum ByteSizeFloat {
2
2
  Double = 8,
3
- Float32 = 4,
3
+ Float32 = 4
4
+ }
5
+ export declare enum ByteSize {
4
6
  UInt64 = 8,
5
7
  UInt32 = 4,
6
8
  UInt16 = 2,
@@ -1,7 +1,10 @@
1
+ export var ByteSizeFloat;
2
+ (function (ByteSizeFloat) {
3
+ ByteSizeFloat[ByteSizeFloat["Double"] = 8] = "Double";
4
+ ByteSizeFloat[ByteSizeFloat["Float32"] = 4] = "Float32";
5
+ })(ByteSizeFloat || (ByteSizeFloat = {}));
1
6
  export var ByteSize;
2
7
  (function (ByteSize) {
3
- ByteSize[ByteSize["Double"] = 8] = "Double";
4
- ByteSize[ByteSize["Float32"] = 4] = "Float32";
5
8
  ByteSize[ByteSize["UInt64"] = 8] = "UInt64";
6
9
  ByteSize[ByteSize["UInt32"] = 4] = "UInt32";
7
10
  ByteSize[ByteSize["UInt16"] = 2] = "UInt16";
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/util/bytes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,2CAAU,CAAA;IACV,6CAAW,CAAA;IACX,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,yCAAS,CAAA;AACX,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB;AACD,mDAAmD;AACnD,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACvB;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,MAAc,EAAE,cAAuB;IAC/E,qDAAqD;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IAEzD,gCAAgC;IAChC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAEhF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,kDAAkD,CAAC,CAAC;KAChF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,MAAc,EAAE,EAAY,EAAE,cAAuB;IAC3F,QAAQ,EAAE,EAAE;QACV,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;KAClD;AACH,CAAC"}
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/util/bytes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,qDAAU,CAAA;IACV,uDAAW,CAAA;AACb,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,mDAAmD;AACnD,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACvB;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,MAAc,EAAE,cAAuB;IAC/E,qDAAqD;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IAEzD,gCAAgC;IAChC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAEhF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,kDAAkD,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,MAAc,EAAE,EAAY,EAAE,cAAuB;IAC3F,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cogeotiff/core",
3
- "version": "8.1.0",
3
+ "version": "9.0.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/blacha/cogeotiff.git",
@@ -23,5 +23,5 @@
23
23
  "publishConfig": {
24
24
  "access": "public"
25
25
  },
26
- "gitHead": "c19acc74a71f376ce52fea5270a247b723219baf"
26
+ "gitHead": "7e83b76e5089791667a81df7c77e6d361ad1ccb8"
27
27
  }
@@ -1,7 +1,8 @@
1
1
  import { readFile } from 'fs/promises';
2
- import { CogTiff } from '../cog.tiff.js';
3
- import { SourceMemory } from './source.memory.js';
2
+
4
3
  import { TiffTag } from '../index.js';
4
+ import { Tiff } from '../tiff.js';
5
+ import { SourceMemory } from './source.memory.js';
5
6
 
6
7
  // console.log = console.trace;
7
8
  /** Read a tile from every image inside of a tiff 300 tiles read */
@@ -9,10 +10,10 @@ async function main(): Promise<void> {
9
10
  const buf = await readFile(process.argv[process.argv.length - 1]);
10
11
  const source = new SourceMemory(buf);
11
12
  for (let i = 0; i < 5_000; i++) {
12
- performance.mark('cog:init');
13
- const tiff = new CogTiff(source);
13
+ performance.mark('tiff:init');
14
+ const tiff = new Tiff(source);
14
15
  await tiff.init();
15
- performance.mark('cog:init:done');
16
+ performance.mark('tiff:init:done');
16
17
 
17
18
  // 6 images
18
19
  for (const img of tiff.images) await img.getTile(0, 0);
@@ -1,13 +1,21 @@
1
- import { readFile, stat } from 'fs/promises';
1
+ import { readFile, stat } from 'node:fs/promises';
2
+ import { promisify } from 'node:util';
3
+ import { gunzip } from 'node:zlib';
4
+
2
5
  import { Source } from '../source.js';
3
6
 
7
+ const gunzipP = promisify(gunzip);
8
+
4
9
  export class TestFileSource implements Source {
5
10
  url: URL;
6
11
  data: Promise<Buffer>;
7
12
 
8
13
  constructor(fileName: URL) {
9
14
  this.url = fileName;
10
- this.data = readFile(this.url);
15
+ this.data = readFile(this.url).then((buf) => {
16
+ if (this.url.pathname.endsWith('gz')) return gunzipP(buf);
17
+ return buf;
18
+ });
11
19
  }
12
20
 
13
21
  async fetch(offset: number, length: number): Promise<ArrayBuffer> {