@cogeotiff/core 7.2.1 → 8.0.2

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 +5 -502
  2. package/README.md +23 -11
  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 +11 -23
  23. package/build/cog.tiff.image.js +108 -62
  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 +3 -3
  37. package/build/const/tiff.tag.id.js +4 -3
  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 +40 -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 -447
  86. package/src/cog.tiff.ts +142 -145
  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 +157 -156
  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 +40 -38
  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 -8
  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
package/build/index.d.ts CHANGED
@@ -1,6 +1,11 @@
1
- export * from './cog.tiff.js';
2
- export * from './cog.tiff.image.js';
3
- export * from './const/index.js';
4
- export * from './read/tiff.value.reader.js';
5
- export { Vector, BoundingBox, Size, Point } from './vector.js';
6
- //# sourceMappingURL=index.d.ts.map
1
+ export { CogTiff } from './cog.tiff.js';
2
+ export { TiffEndian } from './const/tiff.endian.js';
3
+ export { TiffCompression, TiffMimeType } from './const/tiff.mime.js';
4
+ export { TiffTagGeo, TiffTag } from './const/tiff.tag.id.js';
5
+ export { TiffTagValueType } from './const/tiff.tag.value.js';
6
+ export { TiffVersion } from './const/tiff.version.js';
7
+ export { TagInline, TagLazy, TagOffset, Tag } from './read/tiff.tag.js';
8
+ export { getTiffTagSize } from './read/tiff.value.reader.js';
9
+ export { Source } from './source.js';
10
+ export { toHex } from './util/util.hex.js';
11
+ export { BoundingBox, Point, Size, Vector } from './vector.js';
package/build/index.js CHANGED
@@ -1,5 +1,9 @@
1
- export * from './cog.tiff.js';
2
- export * from './cog.tiff.image.js';
3
- export * from './const/index.js';
4
- export * from './read/tiff.value.reader.js';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvZy50aWZmLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29nLnRpZmYuaW1hZ2UuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdC9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWQvdGlmZi52YWx1ZS5yZWFkZXIuanMnO1xuZXhwb3J0IHsgVmVjdG9yLCBCb3VuZGluZ0JveCwgU2l6ZSwgUG9pbnQgfSBmcm9tICcuL3ZlY3Rvci5qcyc7XG4iXX0=
1
+ export { CogTiff } from './cog.tiff.js';
2
+ export { TiffEndian } from './const/tiff.endian.js';
3
+ export { TiffCompression, TiffMimeType } from './const/tiff.mime.js';
4
+ export { TiffTagGeo, TiffTag } from './const/tiff.tag.id.js';
5
+ export { TiffTagValueType } from './const/tiff.tag.value.js';
6
+ export { TiffVersion } from './const/tiff.version.js';
7
+ export { getTiffTagSize } from './read/tiff.value.reader.js';
8
+ export { toHex } from './util/util.hex.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Extension to DataView that includes the offset to where in a file the view is from */
2
+ export type DataViewOffset = DataView & {
3
+ /** Offset in the source to where this data was read from */
4
+ sourceOffset: number;
5
+ };
6
+ /** Convert the dataview to a dataview with a offset */
7
+ export declare function toDataViewOffset(d: DataView, offset: number): asserts d is DataViewOffset;
8
+ /**
9
+ * Does a DataviewOffset include the absolute bytes of the source file
10
+ *
11
+ * @param view DataViewOffset to check
12
+ * @param targetOffset the absolute offset in the file
13
+ * @param count number of bytes to include
14
+ */
15
+ export declare function hasBytes(view: DataViewOffset, targetOffset: number, count: number): boolean;
@@ -0,0 +1,19 @@
1
+ /** Convert the dataview to a dataview with a offset */
2
+ export function toDataViewOffset(d, offset) {
3
+ d.sourceOffset = offset;
4
+ }
5
+ /**
6
+ * Does a DataviewOffset include the absolute bytes of the source file
7
+ *
8
+ * @param view DataViewOffset to check
9
+ * @param targetOffset the absolute offset in the file
10
+ * @param count number of bytes to include
11
+ */
12
+ export function hasBytes(view, targetOffset, count) {
13
+ if (targetOffset < view.sourceOffset)
14
+ return false;
15
+ if (view.sourceOffset + view.byteLength < targetOffset + count)
16
+ return false;
17
+ return true;
18
+ }
19
+ //# sourceMappingURL=data.view.offset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.view.offset.js","sourceRoot":"","sources":["../../src/read/data.view.offset.ts"],"names":[],"mappings":"AAMA,uDAAuD;AACvD,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,MAAc;IACzD,CAAoB,CAAC,YAAY,GAAG,MAAM,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAoB,EAAE,YAAoB,EAAE,KAAa;IAChF,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY,GAAG,KAAK;QAAE,OAAO,KAAK,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,13 +1,12 @@
1
- import { ByteSize } from '@chunkd/core';
2
- import { CogTiff } from '../cog.tiff.js';
1
+ import { ByteSize } from '../util/bytes.js';
3
2
  export declare enum GhostOption {
4
- GDAL_STRUCTURAL_METADATA_SIZE = "GDAL_STRUCTURAL_METADATA_SIZE",
5
- LAYOUT = "LAYOUT",
6
- BLOCK_ORDER = "BLOCK_ORDER",
7
- BLOCK_LEADER = "BLOCK_LEADER",
8
- BLOCK_TRAILER = "BLOCK_TRAILER",
9
- KNOWN_INCOMPATIBLE_EDITION = "KNOWN_INCOMPATIBLE_EDITION",
10
- MASK_INTERLEAVED_WITH_IMAGERY = "MASK_INTERLEAVED_WITH_IMAGERY"
3
+ GdalStructuralMetadataSize = "GDAL_STRUCTURAL_METADATA_SIZE",
4
+ Layout = "LAYOUT",
5
+ BlockOrder = "BLOCK_ORDER",
6
+ BlockLeader = "BLOCK_LEADER",
7
+ BlockTrailer = "BLOCK_TRAILER",
8
+ KnownIncompatibleEdition = "KNOWN_INCOMPATIBLE_EDITION",
9
+ MaskInterleavedWithImagery = "MASK_INTERLEAVED_WITH_IMAGERY"
11
10
  }
12
11
  export declare enum GhostOptionTileOrder {
13
12
  RowMajor = "ROW_MAJOR"
@@ -21,7 +20,6 @@ export declare enum GhostOptionTileLeader {
21
20
  */
22
21
  export declare class CogTifGhostOptions {
23
22
  options: Map<string, string>;
24
- source: CogTiff;
25
23
  /**
26
24
  * Has GDAL optimized this tif
27
25
  */
@@ -34,11 +32,10 @@ export declare class CogTifGhostOptions {
34
32
  * Load the ghost options from a source
35
33
  * @param bytes the ghost header bytes
36
34
  */
37
- process(bytes: Uint8Array): void;
35
+ process(bytes: DataView, offset: number, ghostSize: number): void;
38
36
  /**
39
37
  * If the tile leader is set, how many bytes are allocated to the tile size
40
38
  */
41
39
  get tileLeaderByteSize(): ByteSize | null;
42
40
  get isMaskInterleaved(): boolean;
43
41
  }
44
- //# sourceMappingURL=tiff.gdal.d.ts.map
@@ -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,40 @@
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 { TiffTag } from '../const/tiff.tag.id.js';
2
+ import { TiffTagValueType } from '../const/tiff.tag.value.js';
3
+ import { DataViewOffset } from './data.view.offset.js';
4
+ /** Tiff tag interfaces */
5
+ export type Tag<T = unknown> = TagLazy<T> | TagInline<T> | TagOffset;
6
+ export interface TagBase {
7
+ /** Id of the Tag */
8
+ id: TiffTag;
9
+ /** Offset in bytes to where this tag was read from */
10
+ tagOffset: number;
11
+ /** Number of values */
12
+ count: number;
13
+ /** Tiff Tag Datatype @see {TiffTagValueType} */
14
+ dataType: TiffTagValueType;
15
+ }
16
+ /** Tiff tag value is not inline and will be loaded later when requested */
17
+ export interface TagLazy<T> extends TagBase {
18
+ type: 'lazy';
19
+ /** Value if loaded undefined otherwise */
20
+ value?: T;
21
+ /** Where in the file the value is read from */
22
+ dataOffset: number;
23
+ }
24
+ /** Tiff tag that's value is inside the IFD and is already read */
25
+ export interface TagInline<T> extends TagBase {
26
+ type: 'inline';
27
+ value: T;
28
+ }
29
+ /** Tiff tag that is a list of offsets this can be partially read */
30
+ export interface TagOffset extends TagBase {
31
+ type: 'offset';
32
+ /** Values of the offest's this is a sparse array unless @see {isLoaded} is true */
33
+ value: number[];
34
+ /** has all the values been read */
35
+ isLoaded?: boolean;
36
+ /** Raw buffer of the values for lazy decoding, Reading 1000s of uint64s can take quite a while */
37
+ view?: DataViewOffset;
38
+ /** Where in the file the value is read from */
39
+ dataOffset: number;
40
+ }
@@ -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 { TiffTag } 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 TiffTag.TileOffsets:
73
+ case TiffTag.TileByteCounts:
74
+ case TiffTag.StripByteCounts:
75
+ case TiffTag.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 === TiffTag.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;