@cogeotiff/core 7.2.0 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/CHANGELOG.md +3 -500
  2. package/README.md +28 -10
  3. package/build/__benchmark__/cog.read.benchmark.d.ts +0 -1
  4. package/build/__benchmark__/cog.read.benchmark.js +6 -4
  5. package/build/__benchmark__/cog.read.benchmark.js.map +1 -0
  6. package/build/__benchmark__/source.file.d.ts +9 -0
  7. package/build/__benchmark__/source.file.js +29 -0
  8. package/build/__benchmark__/source.file.js.map +1 -0
  9. package/build/__benchmark__/source.memory.d.ts +9 -0
  10. package/build/__benchmark__/source.memory.js +32 -0
  11. package/build/__benchmark__/source.memory.js.map +1 -0
  12. package/build/__test__/cog.image.test.d.ts +1 -2
  13. package/build/__test__/cog.image.test.js +82 -90
  14. package/build/__test__/cog.image.test.js.map +1 -0
  15. package/build/__test__/cog.read.test.d.ts +1 -2
  16. package/build/__test__/cog.read.test.js +37 -55
  17. package/build/__test__/cog.read.test.js.map +1 -0
  18. package/build/__test__/example.d.ts +1 -0
  19. package/build/__test__/example.js +27 -0
  20. package/build/__test__/example.js.map +1 -0
  21. package/build/cog.tiff.d.ts +22 -28
  22. package/build/cog.tiff.image.d.ts +16 -28
  23. package/build/cog.tiff.image.js +147 -101
  24. package/build/cog.tiff.image.js.map +1 -0
  25. package/build/cog.tiff.js +141 -97
  26. package/build/cog.tiff.js.map +1 -0
  27. package/build/const/index.d.ts +1 -2
  28. package/build/const/index.js +2 -2
  29. package/build/const/index.js.map +1 -0
  30. package/build/const/tiff.endian.d.ts +0 -1
  31. package/build/const/tiff.endian.js +1 -1
  32. package/build/const/tiff.endian.js.map +1 -0
  33. package/build/const/tiff.mime.d.ts +10 -11
  34. package/build/const/tiff.mime.js +22 -22
  35. package/build/const/tiff.mime.js.map +1 -0
  36. package/build/const/tiff.tag.id.d.ts +5 -5
  37. package/build/const/tiff.tag.id.js +155 -154
  38. package/build/const/tiff.tag.id.js.map +1 -0
  39. package/build/const/tiff.tag.value.d.ts +15 -16
  40. package/build/const/tiff.tag.value.js +16 -16
  41. package/build/const/tiff.tag.value.js.map +1 -0
  42. package/build/const/tiff.version.d.ts +0 -1
  43. package/build/const/tiff.version.js +1 -1
  44. package/build/const/tiff.version.js.map +1 -0
  45. package/build/index.d.ts +11 -6
  46. package/build/index.js +9 -5
  47. package/build/index.js.map +1 -0
  48. package/build/read/data.view.offset.d.ts +15 -0
  49. package/build/read/data.view.offset.js +19 -0
  50. package/build/read/data.view.offset.js.map +1 -0
  51. package/build/read/tiff.gdal.d.ts +9 -12
  52. package/build/read/tiff.gdal.js +22 -17
  53. package/build/read/tiff.gdal.js.map +1 -0
  54. package/build/read/tiff.ifd.config.d.ts +6 -4
  55. package/build/read/tiff.ifd.config.js +2 -2
  56. package/build/read/tiff.ifd.config.js.map +1 -0
  57. package/build/read/tiff.tag.d.ts +37 -20
  58. package/build/read/tiff.tag.factory.d.ts +16 -0
  59. package/build/read/tiff.tag.factory.js +130 -0
  60. package/build/read/tiff.tag.factory.js.map +1 -0
  61. package/build/read/tiff.tag.js +2 -37
  62. package/build/read/tiff.tag.js.map +1 -0
  63. package/build/read/tiff.value.reader.d.ts +2 -6
  64. package/build/read/tiff.value.reader.js +16 -54
  65. package/build/read/tiff.value.reader.js.map +1 -0
  66. package/build/source.d.ts +5 -0
  67. package/build/source.js +2 -0
  68. package/build/source.js.map +1 -0
  69. package/build/util/bytes.d.ts +17 -0
  70. package/build/util/bytes.js +42 -0
  71. package/build/util/bytes.js.map +1 -0
  72. package/build/util/util.hex.d.ts +2 -3
  73. package/build/util/util.hex.js +4 -5
  74. package/build/util/util.hex.js.map +1 -0
  75. package/build/vector.d.ts +0 -1
  76. package/build/vector.js +1 -1
  77. package/build/vector.js.map +1 -0
  78. package/package.json +25 -30
  79. package/src/__benchmark__/cog.read.benchmark.ts +12 -10
  80. package/src/__benchmark__/source.file.ts +23 -0
  81. package/src/__benchmark__/source.memory.ts +23 -0
  82. package/src/__test__/cog.image.test.ts +188 -197
  83. package/src/__test__/cog.read.test.ts +50 -72
  84. package/src/__test__/example.ts +31 -0
  85. package/src/cog.tiff.image.ts +456 -448
  86. package/src/cog.tiff.ts +143 -146
  87. package/src/const/index.ts +1 -1
  88. package/src/const/tiff.endian.ts +2 -2
  89. package/src/const/tiff.mime.ts +21 -21
  90. package/src/const/tiff.tag.id.ts +159 -158
  91. package/src/const/tiff.tag.value.ts +16 -16
  92. package/src/const/tiff.version.ts +11 -11
  93. package/src/index.ts +11 -5
  94. package/src/read/data.view.offset.ts +23 -0
  95. package/src/read/tiff.gdal.ts +61 -63
  96. package/src/read/tiff.ifd.config.ts +35 -31
  97. package/src/read/tiff.tag.factory.ts +163 -0
  98. package/src/read/tiff.tag.ts +38 -39
  99. package/src/read/tiff.value.reader.ts +25 -73
  100. package/src/source.ts +5 -0
  101. package/src/util/bytes.ts +44 -0
  102. package/src/util/util.hex.ts +5 -7
  103. package/src/vector.ts +5 -5
  104. package/tsconfig.json +8 -10
  105. package/build/__benchmark__/cog.read.benchmark.d.ts.map +0 -1
  106. package/build/__test__/cog.image.test.d.ts.map +0 -1
  107. package/build/__test__/cog.read.test.d.ts.map +0 -1
  108. package/build/cog.tiff.d.ts.map +0 -1
  109. package/build/cog.tiff.image.d.ts.map +0 -1
  110. package/build/const/index.d.ts.map +0 -1
  111. package/build/const/tiff.endian.d.ts.map +0 -1
  112. package/build/const/tiff.mime.d.ts.map +0 -1
  113. package/build/const/tiff.tag.id.d.ts.map +0 -1
  114. package/build/const/tiff.tag.value.d.ts.map +0 -1
  115. package/build/const/tiff.version.d.ts.map +0 -1
  116. package/build/index.d.ts.map +0 -1
  117. package/build/read/tag/__test__/tag.test.d.ts +0 -2
  118. package/build/read/tag/__test__/tag.test.d.ts.map +0 -1
  119. package/build/read/tag/__test__/tag.test.js +0 -23
  120. package/build/read/tag/tiff.tag.base.d.ts +0 -55
  121. package/build/read/tag/tiff.tag.base.d.ts.map +0 -1
  122. package/build/read/tag/tiff.tag.base.js +0 -79
  123. package/build/read/tag/tiff.tag.lazy.d.ts +0 -7
  124. package/build/read/tag/tiff.tag.lazy.d.ts.map +0 -1
  125. package/build/read/tag/tiff.tag.lazy.js +0 -18
  126. package/build/read/tag/tiff.tag.offset.d.ts +0 -21
  127. package/build/read/tag/tiff.tag.offset.d.ts.map +0 -1
  128. package/build/read/tag/tiff.tag.offset.js +0 -54
  129. package/build/read/tag/tiff.tag.static.d.ts +0 -8
  130. package/build/read/tag/tiff.tag.static.d.ts.map +0 -1
  131. package/build/read/tag/tiff.tag.static.js +0 -17
  132. package/build/read/tiff.gdal.d.ts.map +0 -1
  133. package/build/read/tiff.ifd.config.d.ts.map +0 -1
  134. package/build/read/tiff.tag.d.ts.map +0 -1
  135. package/build/read/tiff.value.reader.d.ts.map +0 -1
  136. package/build/source/cog.source.view.d.ts +0 -33
  137. package/build/source/cog.source.view.d.ts.map +0 -1
  138. package/build/source/cog.source.view.js +0 -65
  139. package/build/util/util.hex.d.ts.map +0 -1
  140. package/build/vector.d.ts.map +0 -1
  141. package/src/@types/ieee754.d.ts +0 -18
  142. package/src/read/tag/__test__/tag.test.ts +0 -27
  143. package/src/read/tag/tiff.tag.base.ts +0 -126
  144. package/src/read/tag/tiff.tag.lazy.ts +0 -17
  145. package/src/read/tag/tiff.tag.offset.ts +0 -61
  146. package/src/read/tag/tiff.tag.static.ts +0 -15
  147. package/src/source/cog.source.view.ts +0 -77
@@ -1,13 +1,13 @@
1
- import { ByteSize } from '@chunkd/core';
1
+ import { ByteSize } from '../util/bytes.js';
2
2
  export var GhostOption;
3
3
  (function (GhostOption) {
4
- GhostOption["GDAL_STRUCTURAL_METADATA_SIZE"] = "GDAL_STRUCTURAL_METADATA_SIZE";
5
- GhostOption["LAYOUT"] = "LAYOUT";
6
- GhostOption["BLOCK_ORDER"] = "BLOCK_ORDER";
7
- GhostOption["BLOCK_LEADER"] = "BLOCK_LEADER";
8
- GhostOption["BLOCK_TRAILER"] = "BLOCK_TRAILER";
9
- GhostOption["KNOWN_INCOMPATIBLE_EDITION"] = "KNOWN_INCOMPATIBLE_EDITION";
10
- GhostOption["MASK_INTERLEAVED_WITH_IMAGERY"] = "MASK_INTERLEAVED_WITH_IMAGERY";
4
+ GhostOption["GdalStructuralMetadataSize"] = "GDAL_STRUCTURAL_METADATA_SIZE";
5
+ GhostOption["Layout"] = "LAYOUT";
6
+ GhostOption["BlockOrder"] = "BLOCK_ORDER";
7
+ GhostOption["BlockLeader"] = "BLOCK_LEADER";
8
+ GhostOption["BlockTrailer"] = "BLOCK_TRAILER";
9
+ GhostOption["KnownIncompatibleEdition"] = "KNOWN_INCOMPATIBLE_EDITION";
10
+ GhostOption["MaskInterleavedWithImagery"] = "MASK_INTERLEAVED_WITH_IMAGERY";
11
11
  })(GhostOption || (GhostOption = {}));
12
12
  export var GhostOptionTileOrder;
13
13
  (function (GhostOptionTileOrder) {
@@ -23,7 +23,12 @@ export var GhostOptionTileLeader;
23
23
  */
24
24
  export class CogTifGhostOptions {
25
25
  constructor() {
26
- this.options = new Map();
26
+ Object.defineProperty(this, "options", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true,
30
+ value: new Map()
31
+ });
27
32
  }
28
33
  /**
29
34
  * Has GDAL optimized this tif
@@ -31,24 +36,24 @@ export class CogTifGhostOptions {
31
36
  get isCogOptimized() {
32
37
  if (this.isBroken)
33
38
  return false;
34
- return this.options.get(GhostOption.LAYOUT) === 'IFDS_BEFORE_DATA';
39
+ return this.options.get(GhostOption.Layout) === 'IFDS_BEFORE_DATA';
35
40
  }
36
41
  /**
37
42
  * Has GDAL determined this tif is now broken
38
43
  */
39
44
  get isBroken() {
40
- return this.options.get(GhostOption.KNOWN_INCOMPATIBLE_EDITION) === 'YES';
45
+ return this.options.get(GhostOption.KnownIncompatibleEdition) === 'YES';
41
46
  }
42
47
  /**
43
48
  * Load the ghost options from a source
44
49
  * @param bytes the ghost header bytes
45
50
  */
46
- process(bytes) {
51
+ process(bytes, offset, ghostSize) {
47
52
  let key = '';
48
53
  let value = '';
49
54
  let setValue = false;
50
- for (let i = 0; i < bytes.length; i++) {
51
- const charCode = bytes[i];
55
+ for (let i = 0; i < ghostSize; i++) {
56
+ const charCode = bytes.getUint8(offset + i);
52
57
  if (charCode === 0)
53
58
  break;
54
59
  const char = String.fromCharCode(charCode);
@@ -73,7 +78,7 @@ export class CogTifGhostOptions {
73
78
  * If the tile leader is set, how many bytes are allocated to the tile size
74
79
  */
75
80
  get tileLeaderByteSize() {
76
- switch (this.options.get(GhostOption.BLOCK_LEADER)) {
81
+ switch (this.options.get(GhostOption.BlockLeader)) {
77
82
  case GhostOptionTileLeader.uint32:
78
83
  return ByteSize.UInt32;
79
84
  default:
@@ -81,7 +86,7 @@ export class CogTifGhostOptions {
81
86
  }
82
87
  }
83
88
  get isMaskInterleaved() {
84
- return this.options.get(GhostOption.MASK_INTERLEAVED_WITH_IMAGERY) === 'YES';
89
+ return this.options.get(GhostOption.MaskInterleavedWithImagery) === 'YES';
85
90
  }
86
91
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi5nZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlYWQvdGlmZi5nZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHeEMsTUFBTSxDQUFOLElBQVksV0FRWDtBQVJELFdBQVksV0FBVztJQUNuQiw4RUFBK0QsQ0FBQTtJQUMvRCxnQ0FBaUIsQ0FBQTtJQUNqQiwwQ0FBMkIsQ0FBQTtJQUMzQiw0Q0FBNkIsQ0FBQTtJQUM3Qiw4Q0FBK0IsQ0FBQTtJQUMvQix3RUFBeUQsQ0FBQTtJQUN6RCw4RUFBK0QsQ0FBQTtBQUNuRSxDQUFDLEVBUlcsV0FBVyxLQUFYLFdBQVcsUUFRdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxvQkFFWDtBQUZELFdBQVksb0JBQW9CO0lBQzVCLDhDQUFzQixDQUFBO0FBQzFCLENBQUMsRUFGVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRS9CO0FBRUQsTUFBTSxDQUFOLElBQVkscUJBRVg7QUFGRCxXQUFZLHFCQUFxQjtJQUM3QixpREFBd0IsQ0FBQTtBQUM1QixDQUFDLEVBRlcscUJBQXFCLEtBQXJCLHFCQUFxQixRQUVoQztBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFBL0I7UUFDSSxZQUFPLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUE0RDdDLENBQUM7SUF6REc7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssa0JBQWtCLENBQUM7SUFDdkUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsMEJBQTBCLENBQUMsS0FBSyxLQUFLLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxLQUFpQjtRQUNyQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksUUFBUSxLQUFLLENBQUM7Z0JBQUUsTUFBTTtZQUUxQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzNDLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3BCO2lCQUFNLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFDckIsUUFBUSxHQUFHLElBQUksQ0FBQzthQUNuQjtpQkFBTTtnQkFDSCxJQUFJLFFBQVE7b0JBQUUsS0FBSyxJQUFJLElBQUksQ0FBQzs7b0JBQ3ZCLEdBQUcsSUFBSSxJQUFJLENBQUM7YUFDcEI7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hELEtBQUsscUJBQXFCLENBQUMsTUFBTTtnQkFDN0IsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzNCO2dCQUNJLE9BQU8sSUFBSSxDQUFDO1NBQ25CO0lBQ0wsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLDZCQUE2QixDQUFDLEtBQUssS0FBSyxDQUFDO0lBQ2pGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ5dGVTaXplIH0gZnJvbSAnQGNodW5rZC9jb3JlJztcbmltcG9ydCB7IENvZ1RpZmYgfSBmcm9tICcuLi9jb2cudGlmZi5qcyc7XG5cbmV4cG9ydCBlbnVtIEdob3N0T3B0aW9uIHtcbiAgICBHREFMX1NUUlVDVFVSQUxfTUVUQURBVEFfU0laRSA9ICdHREFMX1NUUlVDVFVSQUxfTUVUQURBVEFfU0laRScsXG4gICAgTEFZT1VUID0gJ0xBWU9VVCcsXG4gICAgQkxPQ0tfT1JERVIgPSAnQkxPQ0tfT1JERVInLFxuICAgIEJMT0NLX0xFQURFUiA9ICdCTE9DS19MRUFERVInLFxuICAgIEJMT0NLX1RSQUlMRVIgPSAnQkxPQ0tfVFJBSUxFUicsXG4gICAgS05PV05fSU5DT01QQVRJQkxFX0VESVRJT04gPSAnS05PV05fSU5DT01QQVRJQkxFX0VESVRJT04nLFxuICAgIE1BU0tfSU5URVJMRUFWRURfV0lUSF9JTUFHRVJZID0gJ01BU0tfSU5URVJMRUFWRURfV0lUSF9JTUFHRVJZJyxcbn1cblxuZXhwb3J0IGVudW0gR2hvc3RPcHRpb25UaWxlT3JkZXIge1xuICAgIFJvd01ham9yID0gJ1JPV19NQUpPUicsXG59XG5cbmV4cG9ydCBlbnVtIEdob3N0T3B0aW9uVGlsZUxlYWRlciB7XG4gICAgdWludDMyID0gJ1NJWkVfQVNfVUlOVDQnLFxufVxuXG4vKipcbiAqIEdEQUwgaGFzIG1hZGUgYSBnaG9zdCBzZXQgb2Ygb3B0aW9ucyBmb3IgVGlmIGZpbGVzXG4gKiB0aGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG9wdGltaXphdGlvbnMgdGhhdCBjYW4gYmUgdXNlZFxuICovXG5leHBvcnQgY2xhc3MgQ29nVGlmR2hvc3RPcHRpb25zIHtcbiAgICBvcHRpb25zOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuICAgIHNvdXJjZTogQ29nVGlmZjtcblxuICAgIC8qKlxuICAgICAqIEhhcyBHREFMIG9wdGltaXplZCB0aGlzIHRpZlxuICAgICAqL1xuICAgIGdldCBpc0NvZ09wdGltaXplZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuaXNCcm9rZW4pIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoR2hvc3RPcHRpb24uTEFZT1VUKSA9PT0gJ0lGRFNfQkVGT1JFX0RBVEEnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhcyBHREFMIGRldGVybWluZWQgdGhpcyB0aWYgaXMgbm93IGJyb2tlblxuICAgICAqL1xuICAgIGdldCBpc0Jyb2tlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoR2hvc3RPcHRpb24uS05PV05fSU5DT01QQVRJQkxFX0VESVRJT04pID09PSAnWUVTJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHRoZSBnaG9zdCBvcHRpb25zIGZyb20gYSBzb3VyY2VcbiAgICAgKiBAcGFyYW0gYnl0ZXMgdGhlIGdob3N0IGhlYWRlciBieXRlc1xuICAgICAqL1xuICAgIHByb2Nlc3MoYnl0ZXM6IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgICAgICAgbGV0IGtleSA9ICcnO1xuICAgICAgICBsZXQgdmFsdWUgPSAnJztcbiAgICAgICAgbGV0IHNldFZhbHVlID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXJDb2RlID0gYnl0ZXNbaV07XG4gICAgICAgICAgICBpZiAoY2hhckNvZGUgPT09IDApIGJyZWFrO1xuXG4gICAgICAgICAgICBjb25zdCBjaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7XG4gICAgICAgICAgICBpZiAoY2hhciA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2V0KGtleS50cmltKCksIHZhbHVlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAga2V5ID0gJyc7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFyID09PSAnPScpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzZXRWYWx1ZSkgdmFsdWUgKz0gY2hhcjtcbiAgICAgICAgICAgICAgICBlbHNlIGtleSArPSBjaGFyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHRpbGUgbGVhZGVyIGlzIHNldCwgaG93IG1hbnkgYnl0ZXMgYXJlIGFsbG9jYXRlZCB0byB0aGUgdGlsZSBzaXplXG4gICAgICovXG4gICAgZ2V0IHRpbGVMZWFkZXJCeXRlU2l6ZSgpOiBCeXRlU2l6ZSB8IG51bGwge1xuICAgICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5nZXQoR2hvc3RPcHRpb24uQkxPQ0tfTEVBREVSKSkge1xuICAgICAgICAgICAgY2FzZSBHaG9zdE9wdGlvblRpbGVMZWFkZXIudWludDMyOlxuICAgICAgICAgICAgICAgIHJldHVybiBCeXRlU2l6ZS5VSW50MzI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlzTWFza0ludGVybGVhdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldChHaG9zdE9wdGlvbi5NQVNLX0lOVEVSTEVBVkVEX1dJVEhfSU1BR0VSWSkgPT09ICdZRVMnO1xuICAgIH1cbn1cbiJdfQ==
92
+ //# sourceMappingURL=tiff.gdal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.gdal.js","sourceRoot":"","sources":["../../src/read/tiff.gdal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAN,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,2EAA4D,CAAA;IAC5D,gCAAiB,CAAA;IACjB,yCAA0B,CAAA;IAC1B,2CAA4B,CAAA;IAC5B,6CAA8B,CAAA;IAC9B,sEAAuD,CAAA;IACvD,2EAA4D,CAAA;AAC9D,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB;AAED,MAAM,CAAN,IAAY,oBAEX;AAFD,WAAY,oBAAoB;IAC9B,8CAAsB,CAAA;AACxB,CAAC,EAFW,oBAAoB,KAApB,oBAAoB,QAE/B;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;AAC1B,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACE;;;;mBAA+B,IAAI,GAAG,EAAE;WAAC;IA2D3C,CAAC;IAzDC;;OAEG;IACH,IAAI,cAAc;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,KAAK,KAAK,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAe,EAAE,MAAc,EAAE,SAAiB;QACxD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,CAAC;gBAAE,MAAM;YAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,GAAG,GAAG,EAAE,CAAC;gBACT,KAAK,GAAG,EAAE,CAAC;gBACX,QAAQ,GAAG,KAAK,CAAC;aAClB;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACvB,QAAQ,GAAG,IAAI,CAAC;aACjB;iBAAM;gBACL,IAAI,QAAQ;oBAAE,KAAK,IAAI,IAAI,CAAC;;oBACvB,GAAG,IAAI,IAAI,CAAC;aAClB;SACF;IACH,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;YACjD,KAAK,qBAAqB,CAAC,MAAM;gBAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,0BAA0B,CAAC,KAAK,KAAK,CAAC;IAC5E,CAAC;CACF"}
@@ -1,15 +1,17 @@
1
- import { ByteSize } from '@chunkd/core';
2
1
  import { TiffVersion } from '../const/tiff.version.js';
3
2
  export declare const TagTiffConfig: TiffIfdConfig;
4
3
  export declare const TagTiffBigConfig: TiffIfdConfig;
5
4
  export interface TiffIfdConfig {
5
+ /** Tiff type */
6
6
  version: TiffVersion;
7
- pointer: ByteSize;
8
- offset: ByteSize;
7
+ /** Number of bytes a pointer uses */
8
+ pointer: number;
9
+ /** Number of bytes a offset uses */
10
+ offset: number;
11
+ /** Number of bytes the IFD tag contains */
9
12
  ifd: number;
10
13
  }
11
14
  export declare const TiffIfdEntry: {
12
15
  43: TiffIfdConfig;
13
16
  42: TiffIfdConfig;
14
17
  };
15
- //# sourceMappingURL=tiff.ifd.config.d.ts.map
@@ -1,4 +1,4 @@
1
- import { ByteSize } from '@chunkd/core';
1
+ import { ByteSize } from '../util/bytes.js';
2
2
  import { TiffVersion } from '../const/tiff.version.js';
3
3
  export const TagTiffConfig = {
4
4
  version: TiffVersion.Tiff,
@@ -32,4 +32,4 @@ export const TiffIfdEntry = {
32
32
  [TiffVersion.BigTiff]: TagTiffBigConfig,
33
33
  [TiffVersion.Tiff]: TagTiffConfig,
34
34
  };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi5pZmQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlYWQvdGlmZi5pZmQuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBa0I7SUFDeEMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxJQUFJO0lBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsTUFBTTtJQUN4QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07SUFDdkI7Ozs7OztPQU1HO0lBQ0gsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU07Q0FDL0QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFrQjtJQUMzQyxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87SUFDNUIsNEJBQTRCO0lBQzVCLE9BQU8sRUFBRSxRQUFRLENBQUMsTUFBTTtJQUN4QixzQkFBc0I7SUFDdEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO0lBRXZCOzs7Ozs7T0FNRztJQUNILEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNO0NBQy9ELENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDeEIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCO0lBQ3ZDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWE7Q0FDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ5dGVTaXplIH0gZnJvbSAnQGNodW5rZC9jb3JlJztcbmltcG9ydCB7IFRpZmZWZXJzaW9uIH0gZnJvbSAnLi4vY29uc3QvdGlmZi52ZXJzaW9uLmpzJztcblxuZXhwb3J0IGNvbnN0IFRhZ1RpZmZDb25maWc6IFRpZmZJZmRDb25maWcgPSB7XG4gICAgdmVyc2lvbjogVGlmZlZlcnNpb24uVGlmZixcbiAgICBwb2ludGVyOiBCeXRlU2l6ZS5VSW50MzIsXG4gICAgb2Zmc2V0OiBCeXRlU2l6ZS5VSW50MTYsXG4gICAgLyoqXG4gICAgICogRWFjaCB0YWcgZW50cnkgaXMgc3BlY2lmaWVkIGFzXG4gICAgICogVUludDE2OlRhZ0NvZGVcbiAgICAgKiBVSW50MTY6VGFnVHlwZVxuICAgICAqIFVJbnQzMjpUYWdDb3VudFxuICAgICAqIFVJbnQzMjpQb2ludGVyIFRvIFZhbHVlIG9yIHZhbHVlXG4gICAgICovXG4gICAgaWZkOiBCeXRlU2l6ZS5VSW50MTYgKyBCeXRlU2l6ZS5VSW50MTYgKyAyICogQnl0ZVNpemUuVUludDMyLFxufTtcblxuZXhwb3J0IGNvbnN0IFRhZ1RpZmZCaWdDb25maWc6IFRpZmZJZmRDb25maWcgPSB7XG4gICAgdmVyc2lvbjogVGlmZlZlcnNpb24uQmlnVGlmZixcbiAgICAvKiogU2l6ZSBvZiBtb3N0IHBvaW50ZXJzICovXG4gICAgcG9pbnRlcjogQnl0ZVNpemUuVUludDY0LFxuICAgIC8qKiBTaXplIG9mIG9mZnNldHMgKi9cbiAgICBvZmZzZXQ6IEJ5dGVTaXplLlVJbnQ2NCxcblxuICAgIC8qKlxuICAgICAqIEVhY2ggdGFnIGVudHJ5IGlzIHNwZWNpZmllZCBhc1xuICAgICAqIFVJbnQxNjpUYWdDb2RlXG4gICAgICogVUludDE2OlRhZ1R5cGVcbiAgICAgKiBVSW50NjQ6VGFnQ291bnRcbiAgICAgKiBVSW50NjQ6UG9pbnRlciBUbyBWYWx1ZSBvciB2YWx1ZVxuICAgICAqL1xuICAgIGlmZDogQnl0ZVNpemUuVUludDE2ICsgQnl0ZVNpemUuVUludDE2ICsgMiAqIEJ5dGVTaXplLlVJbnQ2NCxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlmZklmZENvbmZpZyB7XG4gICAgdmVyc2lvbjogVGlmZlZlcnNpb247XG4gICAgcG9pbnRlcjogQnl0ZVNpemU7XG4gICAgb2Zmc2V0OiBCeXRlU2l6ZTtcbiAgICBpZmQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRpZmZJZmRFbnRyeSA9IHtcbiAgICBbVGlmZlZlcnNpb24uQmlnVGlmZl06IFRhZ1RpZmZCaWdDb25maWcsXG4gICAgW1RpZmZWZXJzaW9uLlRpZmZdOiBUYWdUaWZmQ29uZmlnLFxufTtcbiJdfQ==
35
+ //# sourceMappingURL=tiff.ifd.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.ifd.config.js","sourceRoot":"","sources":["../../src/read/tiff.ifd.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,WAAW,CAAC,IAAI;IACzB,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB;;;;;;OAMG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,4BAA4B;IAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,sBAAsB;IACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;IAEvB;;;;;;OAMG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;CAC7D,CAAC;AAaF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB;IACvC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa;CAClC,CAAC"}
@@ -1,20 +1,37 @@
1
- import { CogTiff } from '../cog.tiff.js';
2
- import { CogTiffTagBase } from './tag/tiff.tag.base.js';
3
- import { CogTiffTagLazy } from './tag/tiff.tag.lazy.js';
4
- import { CogTiffTagOffset } from './tag/tiff.tag.offset.js';
5
- import { CogTifTagStatic } from './tag/tiff.tag.static.js';
6
- export declare const CogTiffTag: {
7
- /**
8
- * Determine if all the data for the tiff tag is loaded in and use that to create the specific CogTiffTag
9
- *
10
- * @see CogTiffTagBase
11
- *
12
- * @param source
13
- * @param offset
14
- */
15
- create(tiff: CogTiff, offset: number): CogTiffTagBase<unknown>;
16
- isStatic<T>(tiffTag: CogTiffTagBase<T>): tiffTag is CogTifTagStatic<T>;
17
- isLazy<T_1>(tiffTag: CogTiffTagBase<T_1>): tiffTag is CogTiffTagLazy<T_1>;
18
- isOffsetArray(tiffTag: CogTiffTagBase): tiffTag is CogTiffTagOffset;
19
- };
20
- //# sourceMappingURL=tiff.tag.d.ts.map
1
+ import { TagId } from '../const/tiff.tag.id.js';
2
+ import { TiffTagValueType } from '../const/tiff.tag.value.js';
3
+ import { DataViewOffset } from './data.view.offset.js';
4
+ export type Tag<T = unknown> = TagLazy<T> | TagInline<T> | TagOffset;
5
+ export interface TagBase {
6
+ /** Id of the Tag */
7
+ id: TagId;
8
+ /** Offset in bytes to where this tag was read from */
9
+ tagOffset: number;
10
+ /** Number of values */
11
+ count: number;
12
+ /** Tiff Tag Datatype @see {TiffTagValueType} */
13
+ dataType: TiffTagValueType;
14
+ }
15
+ export interface TagLazy<T> extends TagBase {
16
+ type: 'lazy';
17
+ /** Value if loaded undefined otherwise */
18
+ value?: T;
19
+ /** Where in the file the value is read from */
20
+ dataOffset: number;
21
+ }
22
+ /** Tiff tag that's value is inside the IFD and is already read */
23
+ export interface TagInline<T> extends TagBase {
24
+ type: 'inline';
25
+ value: T;
26
+ }
27
+ export interface TagOffset extends TagBase {
28
+ type: 'offset';
29
+ /** Values of the offest's this is a sparse array unless @see {isLoaded} is true */
30
+ value: number[];
31
+ /** has all the values been read */
32
+ isLoaded?: boolean;
33
+ /** Raw buffer of the values for lazy decoding, Reading 1000s of uint64s can take quite a while */
34
+ view?: DataViewOffset;
35
+ /** Where in the file the value is read from */
36
+ dataOffset: number;
37
+ }
@@ -0,0 +1,16 @@
1
+ import { CogTiff } from '../cog.tiff.js';
2
+ import { DataViewOffset } from './data.view.offset.js';
3
+ import { Tag, TagLazy, TagOffset } from './tiff.tag.js';
4
+ /**
5
+ * Determine if all the data for the tiff tag is loaded in and use that to create the specific CogTiffTag
6
+ *
7
+ * @see {Tag}
8
+ *
9
+ * @param tiff
10
+ * @param view Bytes to read from
11
+ * @param offset Offset in the dataview to read a tag
12
+ */
13
+ export declare function createTag(tiff: CogTiff, view: DataViewOffset, offset: number): Tag<unknown>;
14
+ export declare function fetchLazy<T>(tag: TagLazy<T>, tiff: CogTiff): Promise<T>;
15
+ export declare function setBytes(tag: TagOffset, view: DataViewOffset): void;
16
+ export declare function getValueAt(tiff: CogTiff, tag: TagOffset, index: number): Promise<number>;
@@ -0,0 +1,130 @@
1
+ import { TagId } from '../const/tiff.tag.id.js';
2
+ import { TiffTagValueType } from '../const/tiff.tag.value.js';
3
+ import { getUint, getUint64 } from '../util/bytes.js';
4
+ import { hasBytes } from './data.view.offset.js';
5
+ import { getTiffTagSize } from './tiff.value.reader.js';
6
+ function readTagValue(fieldType, bytes, offset, isLittleEndian) {
7
+ switch (fieldType) {
8
+ case TiffTagValueType.Ascii:
9
+ return String.fromCharCode(bytes.getUint8(offset));
10
+ case TiffTagValueType.Undefined:
11
+ case TiffTagValueType.Uint8:
12
+ return bytes.getUint8(offset);
13
+ case TiffTagValueType.Int8:
14
+ return bytes.getInt8(offset);
15
+ case TiffTagValueType.Uint16:
16
+ return bytes.getUint16(offset, isLittleEndian);
17
+ case TiffTagValueType.Int16:
18
+ return bytes.getInt16(offset, isLittleEndian);
19
+ case TiffTagValueType.Uint32:
20
+ return bytes.getUint32(offset, isLittleEndian);
21
+ case TiffTagValueType.Int32:
22
+ return bytes.getInt32(offset, isLittleEndian);
23
+ case TiffTagValueType.Rational:
24
+ return [bytes.getUint32(offset, isLittleEndian), bytes.getUint32(offset + 4, isLittleEndian)];
25
+ case TiffTagValueType.SignedRational:
26
+ return [bytes.getInt32(offset, isLittleEndian), bytes.getInt32(offset + 4, isLittleEndian)];
27
+ case TiffTagValueType.Float64:
28
+ return bytes.getFloat64(offset, isLittleEndian);
29
+ case TiffTagValueType.Uint64:
30
+ return getUint64(bytes, offset, isLittleEndian);
31
+ default:
32
+ throw new Error(`Unknown read type "${fieldType}" "${TiffTagValueType[fieldType]}"`);
33
+ }
34
+ }
35
+ function readValue(tiff, bytes, offset, type, count) {
36
+ const typeSize = getTiffTagSize(type);
37
+ const dataLength = count * typeSize;
38
+ if (count === 1)
39
+ return readTagValue(type, bytes, offset, tiff.isLittleEndian);
40
+ switch (type) {
41
+ case TiffTagValueType.Ascii:
42
+ return String.fromCharCode.apply(null, new Uint8Array(bytes.buffer.slice(bytes.byteOffset + offset, bytes.byteOffset + offset + dataLength - 1)));
43
+ }
44
+ const output = [];
45
+ for (let i = 0; i < dataLength; i += typeSize) {
46
+ output.push(readTagValue(type, bytes, offset + i, tiff.isLittleEndian));
47
+ }
48
+ return output;
49
+ }
50
+ /**
51
+ * Determine if all the data for the tiff tag is loaded in and use that to create the specific CogTiffTag
52
+ *
53
+ * @see {Tag}
54
+ *
55
+ * @param tiff
56
+ * @param view Bytes to read from
57
+ * @param offset Offset in the dataview to read a tag
58
+ */
59
+ export function createTag(tiff, view, offset) {
60
+ const tagId = view.getUint16(offset + 0, tiff.isLittleEndian);
61
+ const dataType = view.getUint16(offset + 2, tiff.isLittleEndian);
62
+ const dataCount = getUint(view, offset + 4, tiff.ifdConfig.pointer, tiff.isLittleEndian);
63
+ const dataTypeSize = getTiffTagSize(dataType);
64
+ const dataLength = dataTypeSize * dataCount;
65
+ // Tag value is inline read the value
66
+ if (dataLength <= tiff.ifdConfig.pointer) {
67
+ const value = readValue(tiff, view, offset + 4 + tiff.ifdConfig.pointer, dataType, dataCount);
68
+ return { type: 'inline', id: tagId, count: dataCount, value, dataType, tagOffset: offset };
69
+ }
70
+ const dataOffset = getUint(view, offset + 4 + tiff.ifdConfig.pointer, tiff.ifdConfig.pointer, tiff.isLittleEndian);
71
+ switch (tagId) {
72
+ case TagId.TileOffsets:
73
+ case TagId.TileByteCounts:
74
+ case TagId.StripByteCounts:
75
+ case TagId.StripOffsets:
76
+ const tag = {
77
+ type: 'offset',
78
+ id: tagId,
79
+ count: dataCount,
80
+ dataType,
81
+ dataOffset,
82
+ value: [],
83
+ tagOffset: offset,
84
+ };
85
+ // Some offsets are quite long and don't need to read them often, so only read the tags we are interested in when we need to
86
+ if (tagId === TagId.TileOffsets && hasBytes(view, dataOffset, dataLength))
87
+ setBytes(tag, view);
88
+ return tag;
89
+ }
90
+ // If we already have the bytes in the view read them in
91
+ if (hasBytes(view, dataOffset, dataLength)) {
92
+ const value = readValue(tiff, view, dataOffset - view.sourceOffset, dataType, dataCount);
93
+ return { type: 'inline', id: tagId, count: dataCount, value, dataType, tagOffset: offset };
94
+ }
95
+ return { type: 'lazy', id: tagId, count: dataCount, dataOffset, dataType, tagOffset: offset };
96
+ }
97
+ export async function fetchLazy(tag, tiff) {
98
+ if (tag.value != null)
99
+ return tag.value;
100
+ const dataTypeSize = getTiffTagSize(tag.dataType);
101
+ const dataLength = dataTypeSize * tag.count;
102
+ const bytes = await tiff.source.fetch(tag.dataOffset, dataLength);
103
+ const view = new DataView(bytes);
104
+ tag.value = readValue(tiff, view, 0, tag.dataType, tag.count);
105
+ return tag.value;
106
+ }
107
+ export function setBytes(tag, view) {
108
+ const dataTypeSize = getTiffTagSize(tag.dataType);
109
+ const startBytes = view.byteOffset + tag.dataOffset - view.sourceOffset;
110
+ tag.view = new DataView(view.buffer.slice(startBytes, startBytes + dataTypeSize * tag.count));
111
+ tag.view.sourceOffset = tag.dataOffset;
112
+ }
113
+ export async function getValueAt(tiff, tag, index) {
114
+ if (index > tag.count || index < 0)
115
+ throw new Error('TagOffset: out of bounds :' + index);
116
+ if (tag.value[index] != null)
117
+ return tag.value[index];
118
+ const dataTypeSize = getTiffTagSize(tag.dataType);
119
+ if (tag.view == null) {
120
+ const bytes = await tiff.source.fetch(tag.dataOffset + index * dataTypeSize, dataTypeSize);
121
+ const view = new DataView(bytes);
122
+ const value = readValue(tiff, view, 0, tag.dataType, 1);
123
+ tag.value[index] = value;
124
+ return value;
125
+ }
126
+ const value = readValue(tiff, tag.view, index * dataTypeSize, tag.dataType, 1);
127
+ tag.value[index] = value;
128
+ return value;
129
+ }
130
+ //# sourceMappingURL=tiff.tag.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.tag.factory.js","sourceRoot":"","sources":["../../src/read/tiff.tag.factory.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,2 @@
1
- import { TiffTag } from '../const/tiff.tag.id.js';
2
- import { CogTiffTagLazy } from './tag/tiff.tag.lazy.js';
3
- import { CogTiffTagOffset } from './tag/tiff.tag.offset.js';
4
- import { CogTifTagStatic } from './tag/tiff.tag.static.js';
5
- export const CogTiffTag = {
6
- /**
7
- * Determine if all the data for the tiff tag is loaded in and use that to create the specific CogTiffTag
8
- *
9
- * @see CogTiffTagBase
10
- *
11
- * @param source
12
- * @param offset
13
- */
14
- create(tiff, offset) {
15
- const tagId = tiff.source.getUint16(offset);
16
- if (tagId === TiffTag.TileOffsets ||
17
- tagId === TiffTag.TileByteCounts ||
18
- tagId === TiffTag.StripByteCounts ||
19
- tagId === TiffTag.StripOffsets) {
20
- return new CogTiffTagOffset(tagId, tiff, offset);
21
- }
22
- const staticTag = new CogTifTagStatic(tagId, tiff, offset);
23
- if (staticTag.hasBytes)
24
- return staticTag;
25
- return new CogTiffTagLazy(tagId, tiff, offset);
26
- },
27
- isStatic(tiffTag) {
28
- return tiffTag instanceof CogTifTagStatic;
29
- },
30
- isLazy(tiffTag) {
31
- return tiffTag instanceof CogTiffTagLazy;
32
- },
33
- isOffsetArray(tiffTag) {
34
- return tiffTag instanceof CogTiffTagOffset;
35
- },
36
- };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVhZC90aWZmLnRhZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEI7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxJQUFhLEVBQUUsTUFBYztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUNJLEtBQUssS0FBSyxPQUFPLENBQUMsV0FBVztZQUM3QixLQUFLLEtBQUssT0FBTyxDQUFDLGNBQWM7WUFDaEMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxlQUFlO1lBQ2pDLEtBQUssS0FBSyxPQUFPLENBQUMsWUFBWSxFQUNoQztZQUNFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLFNBQVMsQ0FBQyxRQUFRO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFekMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxRQUFRLENBQUksT0FBMEI7UUFDbEMsT0FBTyxPQUFPLFlBQVksZUFBZSxDQUFDO0lBQzlDLENBQUM7SUFDRCxNQUFNLENBQUksT0FBMEI7UUFDaEMsT0FBTyxPQUFPLFlBQVksY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBdUI7UUFDakMsT0FBTyxPQUFPLFlBQVksZ0JBQWdCLENBQUM7SUFDL0MsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2dUaWZmIH0gZnJvbSAnLi4vY29nLnRpZmYuanMnO1xuaW1wb3J0IHsgVGlmZlRhZyB9IGZyb20gJy4uL2NvbnN0L3RpZmYudGFnLmlkLmpzJztcbmltcG9ydCB7IENvZ1RpZmZUYWdCYXNlIH0gZnJvbSAnLi90YWcvdGlmZi50YWcuYmFzZS5qcyc7XG5pbXBvcnQgeyBDb2dUaWZmVGFnTGF6eSB9IGZyb20gJy4vdGFnL3RpZmYudGFnLmxhenkuanMnO1xuaW1wb3J0IHsgQ29nVGlmZlRhZ09mZnNldCB9IGZyb20gJy4vdGFnL3RpZmYudGFnLm9mZnNldC5qcyc7XG5pbXBvcnQgeyBDb2dUaWZUYWdTdGF0aWMgfSBmcm9tICcuL3RhZy90aWZmLnRhZy5zdGF0aWMuanMnO1xuXG5leHBvcnQgY29uc3QgQ29nVGlmZlRhZyA9IHtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgYWxsIHRoZSBkYXRhIGZvciB0aGUgdGlmZiB0YWcgaXMgbG9hZGVkIGluIGFuZCB1c2UgdGhhdCB0byBjcmVhdGUgdGhlIHNwZWNpZmljIENvZ1RpZmZUYWdcbiAgICAgKlxuICAgICAqIEBzZWUgQ29nVGlmZlRhZ0Jhc2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzb3VyY2VcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICovXG4gICAgY3JlYXRlKHRpZmY6IENvZ1RpZmYsIG9mZnNldDogbnVtYmVyKTogQ29nVGlmZlRhZ0Jhc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB0YWdJZCA9IHRpZmYuc291cmNlLmdldFVpbnQxNihvZmZzZXQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0YWdJZCA9PT0gVGlmZlRhZy5UaWxlT2Zmc2V0cyB8fFxuICAgICAgICAgICAgdGFnSWQgPT09IFRpZmZUYWcuVGlsZUJ5dGVDb3VudHMgfHxcbiAgICAgICAgICAgIHRhZ0lkID09PSBUaWZmVGFnLlN0cmlwQnl0ZUNvdW50cyB8fFxuICAgICAgICAgICAgdGFnSWQgPT09IFRpZmZUYWcuU3RyaXBPZmZzZXRzXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2dUaWZmVGFnT2Zmc2V0KHRhZ0lkLCB0aWZmLCBvZmZzZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGljVGFnID0gbmV3IENvZ1RpZlRhZ1N0YXRpYyh0YWdJZCwgdGlmZiwgb2Zmc2V0KTtcbiAgICAgICAgaWYgKHN0YXRpY1RhZy5oYXNCeXRlcykgcmV0dXJuIHN0YXRpY1RhZztcblxuICAgICAgICByZXR1cm4gbmV3IENvZ1RpZmZUYWdMYXp5KHRhZ0lkLCB0aWZmLCBvZmZzZXQpO1xuICAgIH0sXG5cbiAgICBpc1N0YXRpYzxUPih0aWZmVGFnOiBDb2dUaWZmVGFnQmFzZTxUPik6IHRpZmZUYWcgaXMgQ29nVGlmVGFnU3RhdGljPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRpZmZUYWcgaW5zdGFuY2VvZiBDb2dUaWZUYWdTdGF0aWM7XG4gICAgfSxcbiAgICBpc0xhenk8VD4odGlmZlRhZzogQ29nVGlmZlRhZ0Jhc2U8VD4pOiB0aWZmVGFnIGlzIENvZ1RpZmZUYWdMYXp5PFQ+IHtcbiAgICAgICAgcmV0dXJuIHRpZmZUYWcgaW5zdGFuY2VvZiBDb2dUaWZmVGFnTGF6eTtcbiAgICB9LFxuICAgIGlzT2Zmc2V0QXJyYXkodGlmZlRhZzogQ29nVGlmZlRhZ0Jhc2UpOiB0aWZmVGFnIGlzIENvZ1RpZmZUYWdPZmZzZXQge1xuICAgICAgICByZXR1cm4gdGlmZlRhZyBpbnN0YW5jZW9mIENvZ1RpZmZUYWdPZmZzZXQ7XG4gICAgfSxcbn07XG4iXX0=
1
+ export {};
2
+ //# sourceMappingURL=tiff.tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.tag.js","sourceRoot":"","sources":["../../src/read/tiff.tag.ts"],"names":[],"mappings":""}
@@ -1,7 +1,3 @@
1
- import { ChunkSource } from '@chunkd/core';
1
+ import { ByteSize } from '../util/bytes.js';
2
2
  import { TiffTagValueType } from '../const/tiff.tag.value.js';
3
- export declare function getTiffTagSize(fieldType: TiffTagValueType): number;
4
- export declare type TiffTagValueRational = [number, number];
5
- export declare type TiffTagValueReaderFunc = (view: ChunkSource, offset: number) => number | TiffTagValueRational | string;
6
- export declare function getTiffTagValueReader(fieldType: TiffTagValueType): TiffTagValueReaderFunc;
7
- //# sourceMappingURL=tiff.value.reader.d.ts.map
3
+ export declare function getTiffTagSize(fieldType: TiffTagValueType): ByteSize;
@@ -1,65 +1,27 @@
1
- import { ByteSize } from '@chunkd/core';
2
1
  import { TiffTagValueType } from '../const/tiff.tag.value.js';
3
- import * as ieee754 from 'ieee754';
4
2
  export function getTiffTagSize(fieldType) {
5
3
  switch (fieldType) {
6
- case TiffTagValueType.BYTE:
7
- case TiffTagValueType.ASCII:
8
- case TiffTagValueType.SBYTE:
9
- case TiffTagValueType.UNDEFINED:
4
+ case TiffTagValueType.Uint8:
5
+ case TiffTagValueType.Ascii:
6
+ case TiffTagValueType.Int8:
7
+ case TiffTagValueType.Undefined:
10
8
  return 1;
11
- case TiffTagValueType.SHORT:
12
- case TiffTagValueType.SSHORT:
9
+ case TiffTagValueType.Uint16:
10
+ case TiffTagValueType.Int16:
13
11
  return 2;
14
- case TiffTagValueType.LONG:
15
- case TiffTagValueType.SLONG:
16
- case TiffTagValueType.FLOAT:
12
+ case TiffTagValueType.Uint32:
13
+ case TiffTagValueType.Int32:
14
+ case TiffTagValueType.Float32:
17
15
  return 4;
18
- case TiffTagValueType.RATIONAL:
19
- case TiffTagValueType.SRATIONAL:
20
- case TiffTagValueType.DOUBLE:
21
- case TiffTagValueType.LONG8:
22
- case TiffTagValueType.SLONG8:
23
- case TiffTagValueType.IFD8:
16
+ case TiffTagValueType.Rational:
17
+ case TiffTagValueType.SignedRational:
18
+ case TiffTagValueType.Float64:
19
+ case TiffTagValueType.Uint64:
20
+ case TiffTagValueType.Int64:
21
+ case TiffTagValueType.Ifd8:
24
22
  return 8;
25
23
  default:
26
24
  throw new Error(`Invalid fieldType ${fieldType}`);
27
25
  }
28
26
  }
29
- const TiffTagValueReader = {
30
- char: (s, offset) => String.fromCharCode(s.getUint8(offset)),
31
- uint8: (s, offset) => s.getUint8(offset),
32
- uint16: (s, offset) => s.getUint16(offset),
33
- uint32: (s, offset) => s.getUint32(offset),
34
- uint64: (s, offset) => s.getUint64(offset),
35
- double: (s, offset) => {
36
- return ieee754.read(s.bytes(offset, ByteSize.Double), 0, s.isLittleEndian, 52, 8);
37
- },
38
- rational: (s, offset) => [s.getUint32(offset), s.getUint32(offset + 4)],
39
- };
40
- export function getTiffTagValueReader(fieldType) {
41
- switch (fieldType) {
42
- case TiffTagValueType.ASCII:
43
- return TiffTagValueReader.char;
44
- case TiffTagValueType.BYTE:
45
- case TiffTagValueType.UNDEFINED:
46
- case TiffTagValueType.SBYTE:
47
- return TiffTagValueReader.uint8;
48
- case TiffTagValueType.SHORT:
49
- case TiffTagValueType.SSHORT:
50
- return TiffTagValueReader.uint16;
51
- case TiffTagValueType.LONG:
52
- case TiffTagValueType.SLONG:
53
- return TiffTagValueReader.uint32;
54
- case TiffTagValueType.RATIONAL:
55
- case TiffTagValueType.SRATIONAL:
56
- return TiffTagValueReader.rational;
57
- case TiffTagValueType.DOUBLE:
58
- return TiffTagValueReader.double;
59
- case TiffTagValueType.LONG8:
60
- return TiffTagValueReader.uint64;
61
- default:
62
- throw new Error(`Unknown read type "${fieldType}" "${TiffTagValueType[fieldType]}"`);
63
- }
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi52YWx1ZS5yZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVhZC90aWZmLnZhbHVlLnJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFlLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBRW5DLE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBMkI7SUFDdEQsUUFBUSxTQUFTLEVBQUU7UUFDZixLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMzQixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLFNBQVM7WUFDM0IsT0FBTyxDQUFDLENBQUM7UUFDYixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLE1BQU07WUFDeEIsT0FBTyxDQUFDLENBQUM7UUFDYixLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMzQixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxDQUFDLENBQUM7UUFDYixLQUFLLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztRQUMvQixLQUFLLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztRQUNoQyxLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUM3QixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUM3QixLQUFLLGdCQUFnQixDQUFDLElBQUk7WUFDdEIsT0FBTyxDQUFDLENBQUM7UUFDYjtZQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDekQ7QUFDTCxDQUFDO0FBS0QsTUFBTSxrQkFBa0IsR0FBOEM7SUFDbEUsSUFBSSxFQUFFLENBQUMsQ0FBYyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLEtBQUssRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzdELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUN2QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBQ0QsUUFBUSxFQUFFLENBQUMsQ0FBYyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQy9GLENBQUM7QUFDRixNQUFNLFVBQVUscUJBQXFCLENBQUMsU0FBMkI7SUFDN0QsUUFBUSxTQUFTLEVBQUU7UUFDZixLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFFbkMsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDM0IsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7UUFDaEMsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO1lBQ3ZCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDO1FBRXBDLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQzVCLEtBQUssZ0JBQWdCLENBQUMsTUFBTTtZQUN4QixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUVyQyxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMzQixLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFFckMsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDL0IsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTO1lBQzNCLE9BQU8sa0JBQWtCLENBQUMsUUFBUSxDQUFDO1FBRXZDLEtBQUssZ0JBQWdCLENBQUMsTUFBTTtZQUN4QixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUVyQyxLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFFckM7WUFDSSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixTQUFTLE1BQU0sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVGO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ5dGVTaXplLCBDaHVua1NvdXJjZSB9IGZyb20gJ0BjaHVua2QvY29yZSc7XG5pbXBvcnQgeyBUaWZmVGFnVmFsdWVUeXBlIH0gZnJvbSAnLi4vY29uc3QvdGlmZi50YWcudmFsdWUuanMnO1xuaW1wb3J0ICogYXMgaWVlZTc1NCBmcm9tICdpZWVlNzU0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpZmZUYWdTaXplKGZpZWxkVHlwZTogVGlmZlRhZ1ZhbHVlVHlwZSk6IG51bWJlciB7XG4gICAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLkJZVEU6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5BU0NJSTpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNCWVRFOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuVU5ERUZJTkVEOlxuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5TSE9SVDpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNTSE9SVDpcbiAgICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuTE9ORzpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNMT05HOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuRkxPQVQ6XG4gICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlJBVElPTkFMOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuU1JBVElPTkFMOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuRE9VQkxFOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuTE9ORzg6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5TTE9ORzg6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5JRkQ4OlxuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZmllbGRUeXBlICR7ZmllbGRUeXBlfWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgVGlmZlRhZ1ZhbHVlUmF0aW9uYWwgPSBbbnVtYmVyLCBudW1iZXJdO1xuZXhwb3J0IHR5cGUgVGlmZlRhZ1ZhbHVlUmVhZGVyRnVuYyA9ICh2aWV3OiBDaHVua1NvdXJjZSwgb2Zmc2V0OiBudW1iZXIpID0+IG51bWJlciB8IFRpZmZUYWdWYWx1ZVJhdGlvbmFsIHwgc3RyaW5nO1xuXG5jb25zdCBUaWZmVGFnVmFsdWVSZWFkZXI6IHsgW2tleTogc3RyaW5nXTogVGlmZlRhZ1ZhbHVlUmVhZGVyRnVuYyB9ID0ge1xuICAgIGNoYXI6IChzOiBDaHVua1NvdXJjZSwgb2Zmc2V0OiBudW1iZXIpID0+IFN0cmluZy5mcm9tQ2hhckNvZGUocy5nZXRVaW50OChvZmZzZXQpKSxcbiAgICB1aW50ODogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4gcy5nZXRVaW50OChvZmZzZXQpLFxuICAgIHVpbnQxNjogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4gcy5nZXRVaW50MTYob2Zmc2V0KSxcbiAgICB1aW50MzI6IChzOiBDaHVua1NvdXJjZSwgb2Zmc2V0OiBudW1iZXIpID0+IHMuZ2V0VWludDMyKG9mZnNldCksXG4gICAgdWludDY0OiAoczogQ2h1bmtTb3VyY2UsIG9mZnNldDogbnVtYmVyKSA9PiBzLmdldFVpbnQ2NChvZmZzZXQpLFxuICAgIGRvdWJsZTogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gaWVlZTc1NC5yZWFkKHMuYnl0ZXMob2Zmc2V0LCBCeXRlU2l6ZS5Eb3VibGUpLCAwLCBzLmlzTGl0dGxlRW5kaWFuLCA1MiwgOCk7XG4gICAgfSxcbiAgICByYXRpb25hbDogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4gW3MuZ2V0VWludDMyKG9mZnNldCksIHMuZ2V0VWludDMyKG9mZnNldCArIDQpXSxcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlmZlRhZ1ZhbHVlUmVhZGVyKGZpZWxkVHlwZTogVGlmZlRhZ1ZhbHVlVHlwZSk6IFRpZmZUYWdWYWx1ZVJlYWRlckZ1bmMge1xuICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5BU0NJSTpcbiAgICAgICAgICAgIHJldHVybiBUaWZmVGFnVmFsdWVSZWFkZXIuY2hhcjtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuQllURTpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlVOREVGSU5FRDpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNCWVRFOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci51aW50ODtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuU0hPUlQ6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5TU0hPUlQ6XG4gICAgICAgICAgICByZXR1cm4gVGlmZlRhZ1ZhbHVlUmVhZGVyLnVpbnQxNjtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuTE9ORzpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNMT05HOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci51aW50MzI7XG5cbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlJBVElPTkFMOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuU1JBVElPTkFMOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci5yYXRpb25hbDtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuRE9VQkxFOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci5kb3VibGU7XG5cbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLkxPTkc4OlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci51aW50NjQ7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biByZWFkIHR5cGUgXCIke2ZpZWxkVHlwZX1cIiBcIiR7VGlmZlRhZ1ZhbHVlVHlwZVtmaWVsZFR5cGVdfVwiYCk7XG4gICAgfVxufVxuIl19
27
+ //# sourceMappingURL=tiff.value.reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.value.reader.js","sourceRoot":"","sources":["../../src/read/tiff.value.reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,UAAU,cAAc,CAAC,SAA2B;IACxD,QAAQ,SAAS,EAAE;QACjB,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,IAAI,CAAC;QAC3B,KAAK,gBAAgB,CAAC,SAAS;YAC7B,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,QAAQ,CAAC;QAC/B,KAAK,gBAAgB,CAAC,cAAc,CAAC;QACrC,KAAK,gBAAgB,CAAC,OAAO,CAAC;QAC9B,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,CAAC,CAAC;QACX;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;KACrD;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface Source {
2
+ url: URL;
3
+ /** Fetch bytes from a source */
4
+ fetch(offset: number, length?: number): Promise<ArrayBuffer>;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export declare enum ByteSize {
2
+ Double = 8,
3
+ Float32 = 4,
4
+ UInt64 = 8,
5
+ UInt32 = 4,
6
+ UInt16 = 2,
7
+ UInt8 = 1
8
+ }
9
+ /**
10
+ * Read a uint64 at the offset
11
+ *
12
+ * This is not precise for large numbers
13
+ * @see {DataView.getBigUint64}
14
+ * @param offset offset to read
15
+ */
16
+ export declare function getUint64(view: DataView, offset: number, isLittleEndian: boolean): number;
17
+ export declare function getUint(view: DataView, offset: number, bs: ByteSize, isLittleEndian: boolean): number;
@@ -0,0 +1,42 @@
1
+ export var ByteSize;
2
+ (function (ByteSize) {
3
+ ByteSize[ByteSize["Double"] = 8] = "Double";
4
+ ByteSize[ByteSize["Float32"] = 4] = "Float32";
5
+ ByteSize[ByteSize["UInt64"] = 8] = "UInt64";
6
+ ByteSize[ByteSize["UInt32"] = 4] = "UInt32";
7
+ ByteSize[ByteSize["UInt16"] = 2] = "UInt16";
8
+ ByteSize[ByteSize["UInt8"] = 1] = "UInt8";
9
+ })(ByteSize || (ByteSize = {}));
10
+ /** Shifting `<< 32` does not work in javascript */
11
+ const POW_32 = 2 ** 32;
12
+ /**
13
+ * Read a uint64 at the offset
14
+ *
15
+ * This is not precise for large numbers
16
+ * @see {DataView.getBigUint64}
17
+ * @param offset offset to read
18
+ */
19
+ export function getUint64(view, offset, isLittleEndian) {
20
+ // split 64-bit number into two 32-bit (4-byte) parts
21
+ const left = view.getUint32(offset, isLittleEndian);
22
+ const right = view.getUint32(offset + 4, isLittleEndian);
23
+ // combine the two 32-bit values
24
+ const combined = isLittleEndian ? left + POW_32 * right : POW_32 * left + right;
25
+ if (!Number.isSafeInteger(combined)) {
26
+ throw new Error(combined + ' exceeds MAX_SAFE_INTEGER. Precision may is lost');
27
+ }
28
+ return combined;
29
+ }
30
+ export function getUint(view, offset, bs, isLittleEndian) {
31
+ switch (bs) {
32
+ case ByteSize.UInt8:
33
+ return view.getUint8(offset);
34
+ case ByteSize.UInt16:
35
+ return view.getUint16(offset, isLittleEndian);
36
+ case ByteSize.UInt32:
37
+ return view.getUint32(offset, isLittleEndian);
38
+ case ByteSize.UInt64:
39
+ return getUint64(view, offset, isLittleEndian);
40
+ }
41
+ }
42
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +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,5 +1,5 @@
1
1
  /**
2
- * Convert a number to a formated hex string
2
+ * Convert a number to a formatted hex string
3
3
  *
4
4
  * @param num number to convert
5
5
  * @param padding number of 0's to pad the digit with
@@ -7,5 +7,4 @@
7
7
  *
8
8
  * @returns hex string eg 0x0015
9
9
  **/
10
- export declare function toHexString(num: number, padding?: number, prefix?: boolean): string;
11
- //# sourceMappingURL=util.hex.d.ts.map
10
+ export declare function toHex(num: number, padding?: number, prefix?: boolean): string;