@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
@@ -1,79 +0,0 @@
1
- import { TiffTag } from '../../const/tiff.tag.id.js';
2
- import { TiffTagValueType } from '../../const/tiff.tag.value.js';
3
- import { getTiffTagSize, getTiffTagValueReader } from '../tiff.value.reader.js';
4
- export class CogTiffTagBase {
5
- constructor(id, tiff, offset) {
6
- this.tiff = tiff;
7
- this.byteOffset = offset;
8
- this.id = id;
9
- this.name = TiffTag[this.id];
10
- this.dataType = this.tiff.source.getUint16(offset + 2);
11
- this.dataCount = this.tiff.source.getUint(offset + 4, this.tiff.ifdConfig.pointer);
12
- this.dataTypeSize = getTiffTagSize(this.dataType);
13
- this.dataLength = this.dataTypeSize * this.dataCount;
14
- }
15
- /**
16
- * Have the bytes for the tag been loaded, or is a fetch required to read the tag
17
- */
18
- get hasBytes() {
19
- return this.tiff.source.hasBytes(this.valuePointer, this.dataLength);
20
- }
21
- /**
22
- * is the tag ready to be read
23
- */
24
- get isReady() {
25
- return true;
26
- }
27
- /**
28
- * Get a human readable name for a datatype
29
- *
30
- */
31
- get dataTypeName() {
32
- return TiffTagValueType[this.dataType];
33
- }
34
- /** absolute offset of the Tag value */
35
- get valuePointer() {
36
- const valueOffset = this.size - this.tiff.ifdConfig.pointer;
37
- if (this.isValueInline)
38
- return this.byteOffset + valueOffset;
39
- return this.tiff.source.getUint(this.byteOffset + valueOffset, this.tiff.ifdConfig.pointer);
40
- }
41
- /** Size of the IFD (bytes) */
42
- get size() {
43
- return this.tiff.ifdConfig.ifd;
44
- }
45
- /** Is the value of this tag inline, or is it a pointer to the real value */
46
- get isValueInline() {
47
- return this.dataLength <= this.tiff.ifdConfig.pointer;
48
- }
49
- /** Read the value in from the byte array */
50
- readValue() {
51
- const offset = this.valuePointer;
52
- const dataTypeSize = this.dataTypeSize;
53
- const convert = getTiffTagValueReader(this.dataType);
54
- const count = this.dataCount;
55
- const dataLength = count * dataTypeSize;
56
- if (count === 1)
57
- return convert(this.tiff.source, offset);
58
- const output = [];
59
- for (let i = 0; i < dataLength; i += dataTypeSize) {
60
- output.push(convert(this.tiff.source, offset + i));
61
- }
62
- // Convert to a string if ascii
63
- if (this.dataType === TiffTagValueType.ASCII)
64
- return output.join('').trim();
65
- return output;
66
- }
67
- /** Get a human(ish) friendly output for the tags */
68
- toJSON() {
69
- return {
70
- id: this.id,
71
- name: this.name,
72
- offset: this.byteOffset,
73
- isReady: this.isReady,
74
- type: this.dataTypeName,
75
- value: this.value,
76
- };
77
- }
78
- }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWFkL3RhZy90aWZmLnRhZy5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEYsTUFBTSxPQUFnQixjQUFjO0lBdUJoQyxZQUFZLEVBQVUsRUFBRSxJQUFhLEVBQUUsTUFBYztRQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUV6QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQVdEOzs7T0FHRztJQUNILElBQUksWUFBWTtRQUNaLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFPRCx1Q0FBdUM7SUFDdkMsSUFBSSxZQUFZO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUNuQyxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDMUQsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxTQUFTO1FBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzdCLE1BQU0sVUFBVSxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7UUFFeEMsSUFBSSxLQUFLLEtBQUssQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBaUIsQ0FBQztRQUUxRSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLElBQUksWUFBWSxFQUFFO1lBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO1lBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBa0IsQ0FBQztRQUU1RixPQUFPLE1BQXNCLENBQUM7SUFDbEMsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxNQUFNO1FBQ0YsT0FBTztZQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNwQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29nVGlmZiB9IGZyb20gJy4uLy4uL2NvZy50aWZmLmpzJztcbmltcG9ydCB7IFRpZmZUYWcgfSBmcm9tICcuLi8uLi9jb25zdC90aWZmLnRhZy5pZC5qcyc7XG5pbXBvcnQgeyBUaWZmVGFnVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vY29uc3QvdGlmZi50YWcudmFsdWUuanMnO1xuaW1wb3J0IHsgZ2V0VGlmZlRhZ1NpemUsIGdldFRpZmZUYWdWYWx1ZVJlYWRlciB9IGZyb20gJy4uL3RpZmYudmFsdWUucmVhZGVyLmpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvZ1RpZmZUYWdCYXNlPFQgPSB1bmtub3duPiB7XG4gICAgLyoqXG4gICAgICogVmFsdWUgb2YgdGhlIHRpZmYgdGFnLCBtYXkgYmUgbnVsbCBpZiB0aGUgdmFsdWUgaGFzIG5vdCBiZWVuIHJlYWRcbiAgICAgKi9cbiAgICBhYnN0cmFjdCB2YWx1ZTogVCB8IG51bGw7XG5cbiAgICAvKiogUmF3IG9mZnNldCBmb3Igd2hlcmUgaW4gdGhlIHRpZiB0aGlzIHRhZyBzdGFydHMgKi9cbiAgICBwcml2YXRlIGJ5dGVPZmZzZXQ6IG51bWJlcjtcblxuICAgIC8qKiBOYW1lIG9mIHRoZSB0YWcgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogVGlmVGFnSWQgQHNlZSBUaWZmVGFnICovXG4gICAgaWQ6IG51bWJlcjtcblxuICAgIC8qKiBUeXBlIG9mIGRhdGEgaW5zaWRlIHRoZSByZWNvcmQgQHNlZSB0aGlzLmRhdGFUeXBlTmFtZSAqL1xuICAgIGRhdGFUeXBlOiBudW1iZXI7XG5cbiAgICAvKiogTnVtYmVyIG9mIHJlY29yZHMgaW5zaWRlIHRoZSB0YWcgKi9cbiAgICBkYXRhQ291bnQ6IG51bWJlcjtcblxuICAgIHRpZmY6IENvZ1RpZmY7XG5cbiAgICBjb25zdHJ1Y3RvcihpZDogbnVtYmVyLCB0aWZmOiBDb2dUaWZmLCBvZmZzZXQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRpZmYgPSB0aWZmO1xuICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLm5hbWUgPSBUaWZmVGFnW3RoaXMuaWRdO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50MTYob2Zmc2V0ICsgMik7XG4gICAgICAgIHRoaXMuZGF0YUNvdW50ID0gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50KG9mZnNldCArIDQsIHRoaXMudGlmZi5pZmRDb25maWcucG9pbnRlcik7XG4gICAgICAgIHRoaXMuZGF0YVR5cGVTaXplID0gZ2V0VGlmZlRhZ1NpemUodGhpcy5kYXRhVHlwZSk7XG4gICAgICAgIHRoaXMuZGF0YUxlbmd0aCA9IHRoaXMuZGF0YVR5cGVTaXplICogdGhpcy5kYXRhQ291bnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGF2ZSB0aGUgYnl0ZXMgZm9yIHRoZSB0YWcgYmVlbiBsb2FkZWQsIG9yIGlzIGEgZmV0Y2ggcmVxdWlyZWQgdG8gcmVhZCB0aGUgdGFnXG4gICAgICovXG4gICAgZ2V0IGhhc0J5dGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5oYXNCeXRlcyh0aGlzLnZhbHVlUG9pbnRlciwgdGhpcy5kYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpcyB0aGUgdGFnIHJlYWR5IHRvIGJlIHJlYWRcbiAgICAgKi9cbiAgICBnZXQgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBzaXplIG9mIHRoZSBkYXRhIHR5cGVcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhpcyBpcyBvbmx5IHRoZSBzaXplIG9mIG9uZSBpbnN0YW5jZSBvZiB0aGUgZGF0YSBAc2VlIHRoaXMuZGF0YUxlbmd0aCBmb3IgdG90YWwgYnl0ZSBzaXplXG4gICAgICpcbiAgICAgKi9cbiAgICBkYXRhVHlwZVNpemU6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldCBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIGEgZGF0YXR5cGVcbiAgICAgKlxuICAgICAqL1xuICAgIGdldCBkYXRhVHlwZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVR5cGVbdGhpcy5kYXRhVHlwZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IgdGhlIGFsbCBvZiB0aGUgZGF0YVxuICAgICAqL1xuICAgIGRhdGFMZW5ndGg6IG51bWJlcjtcblxuICAgIC8qKiBhYnNvbHV0ZSBvZmZzZXQgb2YgdGhlIFRhZyB2YWx1ZSAqL1xuICAgIGdldCB2YWx1ZVBvaW50ZXIoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWVPZmZzZXQgPSB0aGlzLnNpemUgLSB0aGlzLnRpZmYuaWZkQ29uZmlnLnBvaW50ZXI7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsdWVJbmxpbmUpIHJldHVybiB0aGlzLmJ5dGVPZmZzZXQgKyB2YWx1ZU9mZnNldDtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludCh0aGlzLmJ5dGVPZmZzZXQgKyB2YWx1ZU9mZnNldCwgdGhpcy50aWZmLmlmZENvbmZpZy5wb2ludGVyKTtcbiAgICB9XG5cbiAgICAvKiogU2l6ZSBvZiB0aGUgSUZEIChieXRlcykgKi9cbiAgICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLmlmZENvbmZpZy5pZmQ7XG4gICAgfVxuXG4gICAgLyoqIElzIHRoZSB2YWx1ZSBvZiB0aGlzIHRhZyBpbmxpbmUsIG9yIGlzIGl0IGEgcG9pbnRlciB0byB0aGUgcmVhbCB2YWx1ZSAqL1xuICAgIGdldCBpc1ZhbHVlSW5saW5lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhTGVuZ3RoIDw9IHRoaXMudGlmZi5pZmRDb25maWcucG9pbnRlcjtcbiAgICB9XG5cbiAgICAvKiogUmVhZCB0aGUgdmFsdWUgaW4gZnJvbSB0aGUgYnl0ZSBhcnJheSAqL1xuICAgIHJlYWRWYWx1ZSgpOiBUIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy52YWx1ZVBvaW50ZXI7XG4gICAgICAgIGNvbnN0IGRhdGFUeXBlU2l6ZSA9IHRoaXMuZGF0YVR5cGVTaXplO1xuICAgICAgICBjb25zdCBjb252ZXJ0ID0gZ2V0VGlmZlRhZ1ZhbHVlUmVhZGVyKHRoaXMuZGF0YVR5cGUpO1xuICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMuZGF0YUNvdW50O1xuICAgICAgICBjb25zdCBkYXRhTGVuZ3RoID0gY291bnQgKiBkYXRhVHlwZVNpemU7XG5cbiAgICAgICAgaWYgKGNvdW50ID09PSAxKSByZXR1cm4gY29udmVydCh0aGlzLnRpZmYuc291cmNlLCBvZmZzZXQpIGFzIHVua25vd24gYXMgVDtcblxuICAgICAgICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpICs9IGRhdGFUeXBlU2l6ZSkge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2goY29udmVydCh0aGlzLnRpZmYuc291cmNlLCBvZmZzZXQgKyBpKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc3RyaW5nIGlmIGFzY2lpXG4gICAgICAgIGlmICh0aGlzLmRhdGFUeXBlID09PSBUaWZmVGFnVmFsdWVUeXBlLkFTQ0lJKSByZXR1cm4gb3V0cHV0LmpvaW4oJycpLnRyaW0oKSBhcyB1bmtub3duIGFzIFQ7XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dCBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuXG4gICAgLyoqIEdldCBhIGh1bWFuKGlzaCkgZnJpZW5kbHkgb3V0cHV0IGZvciB0aGUgdGFncyAqL1xuICAgIHRvSlNPTigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgaXNSZWFkeTogdGhpcy5pc1JlYWR5LFxuICAgICAgICAgICAgdHlwZTogdGhpcy5kYXRhVHlwZU5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,7 +0,0 @@
1
- import { CogTiffTagBase } from './tiff.tag.base.js';
2
- export declare class CogTiffTagLazy<T> extends CogTiffTagBase<T> {
3
- value: T | null;
4
- get isReady(): boolean;
5
- fetch(): Promise<T>;
6
- }
7
- //# sourceMappingURL=tiff.tag.lazy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiff.tag.lazy.d.ts","sourceRoot":"","sources":["../../../src/read/tag/tiff.tag.lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACpD,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvB,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;CAO5B"}
@@ -1,18 +0,0 @@
1
- import { CogTiffTagBase } from './tiff.tag.base.js';
2
- export class CogTiffTagLazy extends CogTiffTagBase {
3
- constructor() {
4
- super(...arguments);
5
- this.value = null;
6
- }
7
- get isReady() {
8
- return this.value != null;
9
- }
10
- async fetch() {
11
- if (this.tiff.source.hasBytes(this.valuePointer, this.dataLength) === false) {
12
- await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
13
- }
14
- this.value = this.readValue();
15
- return this.value;
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcubGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWFkL3RhZy90aWZmLnRhZy5sYXp5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxNQUFNLE9BQU8sY0FBa0IsU0FBUSxjQUFpQjtJQUF4RDs7UUFDSSxVQUFLLEdBQWEsSUFBSSxDQUFDO0lBYTNCLENBQUM7SUFYRyxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNQLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUN6RSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN4RTtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2dUaWZmVGFnQmFzZSB9IGZyb20gJy4vdGlmZi50YWcuYmFzZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDb2dUaWZmVGFnTGF6eTxUPiBleHRlbmRzIENvZ1RpZmZUYWdCYXNlPFQ+IHtcbiAgICB2YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gICAgZ2V0IGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9IG51bGw7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2goKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICh0aGlzLnRpZmYuc291cmNlLmhhc0J5dGVzKHRoaXMudmFsdWVQb2ludGVyLCB0aGlzLmRhdGFMZW5ndGgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50aWZmLnNvdXJjZS5sb2FkQnl0ZXModGhpcy52YWx1ZVBvaW50ZXIsIHRoaXMuZGF0YUxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmVhZFZhbHVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,21 +0,0 @@
1
- import { CogTiff } from '../../cog.tiff.js';
2
- import { CogTiffTagBase } from './tiff.tag.base.js';
3
- /**
4
- * TiffTag for offset arrays
5
- *
6
- * Allows individual access to specific records without having to read the entire tag in.
7
- */
8
- export declare class CogTiffTagOffset extends CogTiffTagBase<number[]> {
9
- private loadedValues;
10
- constructor(tagId: number, tiff: CogTiff, offset: number);
11
- get value(): number[] | null;
12
- /** Load the entire index into memory */
13
- load(): Promise<void>;
14
- readValue(): number[];
15
- /**
16
- * Read a specific value from the offset array
17
- * @param index index to read at
18
- */
19
- getValueAt(index: number): Promise<number>;
20
- }
21
- //# sourceMappingURL=tiff.tag.offset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiff.tag.offset.d.ts","sourceRoot":"","sources":["../../../src/read/tag/tiff.tag.offset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;IAC1D,OAAO,CAAC,YAAY,CAAyB;gBAEjC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAIxD,IAAI,KAAK,IAAI,MAAM,EAAE,GAAG,IAAI,CAS3B;IAED,wCAAwC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS,IAAI,MAAM,EAAE;IAWrB;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAYnD"}
@@ -1,54 +0,0 @@
1
- import { getTiffTagValueReader } from '../tiff.value.reader.js';
2
- import { CogTiffTagBase } from './tiff.tag.base.js';
3
- /**
4
- * TiffTag for offset arrays
5
- *
6
- * Allows individual access to specific records without having to read the entire tag in.
7
- */
8
- export class CogTiffTagOffset extends CogTiffTagBase {
9
- constructor(tagId, tiff, offset) {
10
- super(tagId, tiff, offset);
11
- this.loadedValues = null;
12
- }
13
- get value() {
14
- if (this.loadedValues != null)
15
- return this.loadedValues;
16
- if (this.hasBytes) {
17
- this.readValue();
18
- return this.loadedValues;
19
- }
20
- return null;
21
- }
22
- /** Load the entire index into memory */
23
- async load() {
24
- await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
25
- this.readValue();
26
- }
27
- readValue() {
28
- const val = super.readValue();
29
- // if only one value is read in, it will not be returned as a array
30
- if (typeof val === 'number') {
31
- this.loadedValues = [val];
32
- }
33
- else {
34
- this.loadedValues = val;
35
- }
36
- return this.loadedValues;
37
- }
38
- /**
39
- * Read a specific value from the offset array
40
- * @param index index to read at
41
- */
42
- async getValueAt(index) {
43
- if (this.loadedValues)
44
- return this.loadedValues[index];
45
- const dataSize = this.dataTypeSize;
46
- const valueOffset = this.valuePointer + dataSize * index;
47
- const convert = getTiffTagValueReader(this.dataType);
48
- if (!this.tiff.source.hasBytes(valueOffset, dataSize)) {
49
- await this.tiff.source.loadBytes(valueOffset, dataSize);
50
- }
51
- return convert(this.tiff.source, valueOffset);
52
- }
53
- }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcub2Zmc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlYWQvdGFnL3RpZmYudGFnLm9mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUF3QjtJQUcxRCxZQUFZLEtBQWEsRUFBRSxJQUFhLEVBQUUsTUFBYztRQUNwRCxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUh2QixpQkFBWSxHQUFvQixJQUFJLENBQUM7SUFJN0MsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLEtBQUssQ0FBQyxJQUFJO1FBQ04sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLG1FQUFtRTtRQUNuRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ25DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDbkQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFXLENBQUM7SUFDNUQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29nVGlmZiB9IGZyb20gJy4uLy4uL2NvZy50aWZmLmpzJztcbmltcG9ydCB7IGdldFRpZmZUYWdWYWx1ZVJlYWRlciB9IGZyb20gJy4uL3RpZmYudmFsdWUucmVhZGVyLmpzJztcbmltcG9ydCB7IENvZ1RpZmZUYWdCYXNlIH0gZnJvbSAnLi90aWZmLnRhZy5iYXNlLmpzJztcblxuLyoqXG4gKiBUaWZmVGFnIGZvciBvZmZzZXQgYXJyYXlzXG4gKlxuICogQWxsb3dzIGluZGl2aWR1YWwgYWNjZXNzIHRvIHNwZWNpZmljIHJlY29yZHMgd2l0aG91dCBoYXZpbmcgdG8gcmVhZCB0aGUgZW50aXJlIHRhZyBpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ1RpZmZUYWdPZmZzZXQgZXh0ZW5kcyBDb2dUaWZmVGFnQmFzZTxudW1iZXJbXT4ge1xuICAgIHByaXZhdGUgbG9hZGVkVmFsdWVzOiBudW1iZXJbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IodGFnSWQ6IG51bWJlciwgdGlmZjogQ29nVGlmZiwgb2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodGFnSWQsIHRpZmYsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IG51bWJlcltdIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZFZhbHVlcyAhPSBudWxsKSByZXR1cm4gdGhpcy5sb2FkZWRWYWx1ZXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQnl0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMucmVhZFZhbHVlKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkZWRWYWx1ZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiogTG9hZCB0aGUgZW50aXJlIGluZGV4IGludG8gbWVtb3J5ICovXG4gICAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy50aWZmLnNvdXJjZS5sb2FkQnl0ZXModGhpcy52YWx1ZVBvaW50ZXIsIHRoaXMuZGF0YUxlbmd0aCk7XG4gICAgICAgIHRoaXMucmVhZFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmVhZFZhbHVlKCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgdmFsID0gc3VwZXIucmVhZFZhbHVlKCk7XG4gICAgICAgIC8vIGlmIG9ubHkgb25lIHZhbHVlIGlzIHJlYWQgaW4sIGl0IHdpbGwgbm90IGJlIHJldHVybmVkIGFzIGEgYXJyYXlcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZFZhbHVlcyA9IFt2YWxdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkZWRWYWx1ZXMgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgYSBzcGVjaWZpYyB2YWx1ZSBmcm9tIHRoZSBvZmZzZXQgYXJyYXlcbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggdG8gcmVhZCBhdFxuICAgICAqL1xuICAgIGFzeW5jIGdldFZhbHVlQXQoaW5kZXg6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZFZhbHVlcykgcmV0dXJuIHRoaXMubG9hZGVkVmFsdWVzW2luZGV4XTtcblxuICAgICAgICBjb25zdCBkYXRhU2l6ZSA9IHRoaXMuZGF0YVR5cGVTaXplO1xuICAgICAgICBjb25zdCB2YWx1ZU9mZnNldCA9IHRoaXMudmFsdWVQb2ludGVyICsgZGF0YVNpemUgKiBpbmRleDtcbiAgICAgICAgY29uc3QgY29udmVydCA9IGdldFRpZmZUYWdWYWx1ZVJlYWRlcih0aGlzLmRhdGFUeXBlKTtcblxuICAgICAgICBpZiAoIXRoaXMudGlmZi5zb3VyY2UuaGFzQnl0ZXModmFsdWVPZmZzZXQsIGRhdGFTaXplKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50aWZmLnNvdXJjZS5sb2FkQnl0ZXModmFsdWVPZmZzZXQsIGRhdGFTaXplKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udmVydCh0aGlzLnRpZmYuc291cmNlLCB2YWx1ZU9mZnNldCkgYXMgbnVtYmVyO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { CogTiffTagBase } from './tiff.tag.base.js';
2
- export declare class CogTifTagStatic<T> extends CogTiffTagBase<T> {
3
- _isRead: boolean;
4
- _value: T | null;
5
- /** Lazy read the inline tiff tags */
6
- get value(): T;
7
- }
8
- //# sourceMappingURL=tiff.tag.static.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiff.tag.static.d.ts","sourceRoot":"","sources":["../../../src/read/tag/tiff.tag.static.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACrD,OAAO,UAAS;IAChB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAQ;IAExB,qCAAqC;IACrC,IAAI,KAAK,IAAI,CAAC,CAMb;CACJ"}
@@ -1,17 +0,0 @@
1
- import { CogTiffTagBase } from './tiff.tag.base.js';
2
- export class CogTifTagStatic extends CogTiffTagBase {
3
- constructor() {
4
- super(...arguments);
5
- this._isRead = false;
6
- this._value = null;
7
- }
8
- /** Lazy read the inline tiff tags */
9
- get value() {
10
- if (this._isRead === false) {
11
- this._value = this.readValue();
12
- this._isRead = true;
13
- }
14
- return this._value;
15
- }
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcuc3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlYWQvdGFnL3RpZmYudGFnLnN0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsTUFBTSxPQUFPLGVBQW1CLFNBQVEsY0FBaUI7SUFBekQ7O1FBQ0ksWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixXQUFNLEdBQWEsSUFBSSxDQUFDO0lBVTVCLENBQUM7SUFSRyxxQ0FBcUM7SUFDckMsSUFBSSxLQUFLO1FBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUN2QjtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQVcsQ0FBQztJQUM1QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2dUaWZmVGFnQmFzZSB9IGZyb20gJy4vdGlmZi50YWcuYmFzZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDb2dUaWZUYWdTdGF0aWM8VD4gZXh0ZW5kcyBDb2dUaWZmVGFnQmFzZTxUPiB7XG4gICAgX2lzUmVhZCA9IGZhbHNlO1xuICAgIF92YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIExhenkgcmVhZCB0aGUgaW5saW5lIHRpZmYgdGFncyAqL1xuICAgIGdldCB2YWx1ZSgpOiBUIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmVhZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5yZWFkVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuX2lzUmVhZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlIGFzIFQ7XG4gICAgfVxufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiff.gdal.d.ts","sourceRoot":"","sources":["../../src/read/tiff.gdal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,oBAAY,WAAW;IACnB,6BAA6B,kCAAkC;IAC/D,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,0BAA0B,+BAA+B;IACzD,6BAA6B,kCAAkC;CAClE;AAED,oBAAY,oBAAoB;IAC5B,QAAQ,cAAc;CACzB;AAED,oBAAY,qBAAqB;IAC7B,MAAM,kBAAkB;CAC3B;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACzC,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAG5B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAuBhC;;OAEG;IACH,IAAI,kBAAkB,IAAI,QAAQ,GAAG,IAAI,CAOxC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiff.ifd.config.d.ts","sourceRoot":"","sources":["../../src/read/tiff.ifd.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,aAY3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAe9B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY;;;CAGxB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiff.tag.d.ts","sourceRoot":"","sources":["../../src/read/tiff.tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,eAAO,MAAM,UAAU;IACnB;;;;;;;OAOG;iBACU,OAAO,UAAU,MAAM,GAAG,eAAe,OAAO,CAAC;;;2BAuBvC,cAAc;CAGxC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiff.value.reader.d.ts","sourceRoot":"","sources":["../../src/read/tiff.value.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,WAAW,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,wBAAgB,cAAc,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAwBlE;AAED,oBAAY,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,oBAAY,sBAAsB,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAanH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,sBAAsB,CA+BzF"}
@@ -1,33 +0,0 @@
1
- import { CogTiff } from '../cog.tiff.js';
2
- /**
3
- * View of a Cog source used for reading bytes from the cog while keeping
4
- * track of the offset
5
- */
6
- export declare class CogSourceCursor {
7
- private tiff;
8
- /** Starting offset for the view */
9
- byteOffset: number;
10
- /** number of bytes that have been read since starting */
11
- relativeOffset: number;
12
- constructor(tiff: CogTiff, offset?: number);
13
- /** current offset after all the reads */
14
- get currentOffset(): number;
15
- /** Seek to a position */
16
- seekTo(offset: number): CogSourceCursor;
17
- /**
18
- * @param count number of bytes to move
19
- * @returns the offset that we seeked from
20
- */
21
- seek(count: number): number;
22
- bytes(count: number): Uint8Array;
23
- uint(size: number): number;
24
- uint8(): number;
25
- uint16(): number;
26
- uint32(): number;
27
- uint64(): number;
28
- pointer(): number;
29
- offset(): number;
30
- float(): number;
31
- double(): number;
32
- }
33
- //# sourceMappingURL=cog.source.view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cog.source.view.d.ts","sourceRoot":"","sources":["../../src/source/cog.source.view.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,IAAI,CAAU;IACtB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;gBAEX,IAAI,EAAE,OAAO,EAAE,MAAM,SAAI;IAMrC,yCAAyC;IACzC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,yBAAyB;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAMvC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAM3B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAGhC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAG1B,KAAK,IAAI,MAAM;IAGf,MAAM,IAAI,MAAM;IAGhB,MAAM,IAAI,MAAM;IAGhB,MAAM,IAAI,MAAM;IAGhB,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAKhB,KAAK,IAAI,MAAM;IAGf,MAAM,IAAI,MAAM;CAGnB"}
@@ -1,65 +0,0 @@
1
- import { ByteSize } from '@chunkd/core';
2
- import * as ieee754 from 'ieee754';
3
- /**
4
- * View of a Cog source used for reading bytes from the cog while keeping
5
- * track of the offset
6
- */
7
- export class CogSourceCursor {
8
- constructor(tiff, offset = 0) {
9
- this.tiff = tiff;
10
- this.byteOffset = offset;
11
- this.relativeOffset = 0;
12
- }
13
- /** current offset after all the reads */
14
- get currentOffset() {
15
- return this.byteOffset + this.relativeOffset;
16
- }
17
- /** Seek to a position */
18
- seekTo(offset) {
19
- this.byteOffset = offset;
20
- this.relativeOffset = 0;
21
- return this;
22
- }
23
- /**
24
- * @param count number of bytes to move
25
- * @returns the offset that we seeked from
26
- */
27
- seek(count) {
28
- const startOffset = this.currentOffset;
29
- this.relativeOffset += count;
30
- return startOffset;
31
- }
32
- bytes(count) {
33
- return this.tiff.source.bytes(this.seek(count), count);
34
- }
35
- uint(size) {
36
- return this.tiff.source.getUint(this.seek(size), size);
37
- }
38
- uint8() {
39
- return this.tiff.source.getUint8(this.seek(ByteSize.UInt8));
40
- }
41
- uint16() {
42
- return this.tiff.source.getUint16(this.seek(ByteSize.UInt16));
43
- }
44
- uint32() {
45
- return this.tiff.source.getUint32(this.seek(ByteSize.UInt32));
46
- }
47
- uint64() {
48
- return this.tiff.source.getUint64(this.seek(ByteSize.UInt64));
49
- }
50
- pointer() {
51
- const pointerSize = this.tiff.ifdConfig.pointer;
52
- return this.tiff.source.getUint(this.seek(pointerSize), pointerSize);
53
- }
54
- offset() {
55
- const offsetSize = this.tiff.ifdConfig.offset;
56
- return this.tiff.source.getUint(this.seek(offsetSize), offsetSize);
57
- }
58
- float() {
59
- return ieee754.read(this.bytes(ByteSize.Float), 0, this.tiff.source.isLittleEndian, 23, 4);
60
- }
61
- double() {
62
- return ieee754.read(this.bytes(ByteSize.Double), 0, this.tiff.source.isLittleEndian, 52, 8);
63
- }
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLnNvdXJjZS52aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NvdXJjZS9jb2cuc291cmNlLnZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUduQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQU94QixZQUFZLElBQWEsRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ2pELENBQUM7SUFFRCx5QkFBeUI7SUFDekIsTUFBTSxDQUFDLE1BQWM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxLQUFhO1FBQ2QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztRQUM3QixPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxJQUFJLENBQUMsSUFBWTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELEtBQUs7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxNQUFNO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsTUFBTTtRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELE1BQU07UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELE1BQU07UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSztRQUNELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsTUFBTTtRQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCeXRlU2l6ZSB9IGZyb20gJ0BjaHVua2QvY29yZSc7XG5pbXBvcnQgKiBhcyBpZWVlNzU0IGZyb20gJ2llZWU3NTQnO1xuaW1wb3J0IHsgQ29nVGlmZiB9IGZyb20gJy4uL2NvZy50aWZmLmpzJztcblxuLyoqXG4gKiBWaWV3IG9mIGEgQ29nIHNvdXJjZSB1c2VkIGZvciByZWFkaW5nIGJ5dGVzIGZyb20gdGhlIGNvZyB3aGlsZSBrZWVwaW5nXG4gKiB0cmFjayBvZiB0aGUgb2Zmc2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBDb2dTb3VyY2VDdXJzb3Ige1xuICAgIHByaXZhdGUgdGlmZjogQ29nVGlmZjtcbiAgICAvKiogU3RhcnRpbmcgb2Zmc2V0IGZvciB0aGUgdmlldyAqL1xuICAgIGJ5dGVPZmZzZXQ6IG51bWJlcjtcbiAgICAvKiogbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIHJlYWQgc2luY2Ugc3RhcnRpbmcgKi9cbiAgICByZWxhdGl2ZU9mZnNldDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IodGlmZjogQ29nVGlmZiwgb2Zmc2V0ID0gMCkge1xuICAgICAgICB0aGlzLnRpZmYgPSB0aWZmO1xuICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgPSAwO1xuICAgIH1cblxuICAgIC8qKiBjdXJyZW50IG9mZnNldCBhZnRlciBhbGwgdGhlIHJlYWRzICovXG4gICAgZ2V0IGN1cnJlbnRPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZU9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqIFNlZWsgdG8gYSBwb3NpdGlvbiAqL1xuICAgIHNlZWtUbyhvZmZzZXQ6IG51bWJlcik6IENvZ1NvdXJjZUN1cnNvciB7XG4gICAgICAgIHRoaXMuYnl0ZU9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgdGhpcy5yZWxhdGl2ZU9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb3VudCBudW1iZXIgb2YgYnl0ZXMgdG8gbW92ZVxuICAgICAqIEByZXR1cm5zIHRoZSBvZmZzZXQgdGhhdCB3ZSBzZWVrZWQgZnJvbVxuICAgICAqL1xuICAgIHNlZWsoY291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gdGhpcy5jdXJyZW50T2Zmc2V0O1xuICAgICAgICB0aGlzLnJlbGF0aXZlT2Zmc2V0ICs9IGNvdW50O1xuICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgYnl0ZXMoY291bnQ6IG51bWJlcik6IFVpbnQ4QXJyYXkge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5ieXRlcyh0aGlzLnNlZWsoY291bnQpLCBjb3VudCk7XG4gICAgfVxuICAgIHVpbnQoc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludCh0aGlzLnNlZWsoc2l6ZSksIHNpemUpO1xuICAgIH1cbiAgICB1aW50OCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50OCh0aGlzLnNlZWsoQnl0ZVNpemUuVUludDgpKTtcbiAgICB9XG4gICAgdWludDE2KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpZmYuc291cmNlLmdldFVpbnQxNih0aGlzLnNlZWsoQnl0ZVNpemUuVUludDE2KSk7XG4gICAgfVxuICAgIHVpbnQzMigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50MzIodGhpcy5zZWVrKEJ5dGVTaXplLlVJbnQzMikpO1xuICAgIH1cbiAgICB1aW50NjQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludDY0KHRoaXMuc2VlayhCeXRlU2l6ZS5VSW50NjQpKTtcbiAgICB9XG4gICAgcG9pbnRlcigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwb2ludGVyU2l6ZSA9IHRoaXMudGlmZi5pZmRDb25maWcucG9pbnRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludCh0aGlzLnNlZWsocG9pbnRlclNpemUpLCBwb2ludGVyU2l6ZSk7XG4gICAgfVxuICAgIG9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBvZmZzZXRTaXplID0gdGhpcy50aWZmLmlmZENvbmZpZy5vZmZzZXQ7XG4gICAgICAgIHJldHVybiB0aGlzLnRpZmYuc291cmNlLmdldFVpbnQodGhpcy5zZWVrKG9mZnNldFNpemUpLCBvZmZzZXRTaXplKTtcbiAgICB9XG5cbiAgICBmbG9hdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMuYnl0ZXMoQnl0ZVNpemUuRmxvYXQpLCAwLCB0aGlzLnRpZmYuc291cmNlLmlzTGl0dGxlRW5kaWFuLCAyMywgNCk7XG4gICAgfVxuICAgIGRvdWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMuYnl0ZXMoQnl0ZVNpemUuRG91YmxlKSwgMCwgdGhpcy50aWZmLnNvdXJjZS5pc0xpdHRsZUVuZGlhbiwgNTIsIDgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.hex.d.ts","sourceRoot":"","sources":["../../src/util/util.hex.ts"],"names":[],"mappings":"AAAA;;;;;;;;IAQI;AACJ,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAI,EAAE,MAAM,UAAO,GAAG,MAAM,CAM3E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../src/vector.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,EAAE,IAAI;CAAG;AACnD,MAAM,WAAW,MAAO,SAAQ,KAAK;IACjC,CAAC,EAAE,MAAM,CAAC;CACb"}
@@ -1,18 +0,0 @@
1
- declare namespace Ieee754 {
2
- interface Static {
3
- read(buffer: number[] | Uint8Array, offset: number, isLe: boolean, mLen: number, nBytes: number): number;
4
- write(
5
- buffer: number[] | Uint8Array,
6
- value: number,
7
- offset: number,
8
- isLE: boolean,
9
- mLen: number,
10
- nBytes: number,
11
- ): void;
12
- }
13
- }
14
-
15
- declare module 'ieee754' {
16
- const ieee754: Ieee754.Static;
17
- export = ieee754;
18
- }
@@ -1,27 +0,0 @@
1
- import { TestFileChunkSource } from '@chunkd/core/build/__test__/chunk.source.fake.js';
2
- import o from 'ospec';
3
- import * as path from 'path';
4
- import { fileURLToPath } from 'url';
5
- import { CogTiff } from '../../../cog.tiff.js';
6
- import { CogTiffTagLazy } from '../tiff.tag.lazy.js';
7
-
8
- o.spec('TiffTag', () => {
9
- const dirName = fileURLToPath(import.meta.url);
10
- const cogSourceFile = new TestFileChunkSource(path.join(dirName, '../../../../../data/rgba8_tiled.tiff'));
11
-
12
- o.beforeEach(() => {
13
- (cogSourceFile.chunks as Map<unknown, unknown>).clear();
14
- });
15
-
16
- o('should load lazy tags', async () => {
17
- const tiff = new CogTiff(cogSourceFile);
18
-
19
- await cogSourceFile.loadBytes(3680, 8);
20
- const lazy = new CogTiffTagLazy(339, tiff, 3680);
21
- o(lazy.value).equals(null);
22
-
23
- const res = await lazy.fetch();
24
- o(res).deepEquals([18761, 43, 8, 0]);
25
- o(lazy.value).deepEquals(res);
26
- });
27
- });
@@ -1,126 +0,0 @@
1
- import { CogTiff } from '../../cog.tiff.js';
2
- import { TiffTag } from '../../const/tiff.tag.id.js';
3
- import { TiffTagValueType } from '../../const/tiff.tag.value.js';
4
- import { getTiffTagSize, getTiffTagValueReader } from '../tiff.value.reader.js';
5
-
6
- export abstract class CogTiffTagBase<T = unknown> {
7
- /**
8
- * Value of the tiff tag, may be null if the value has not been read
9
- */
10
- abstract value: T | null;
11
-
12
- /** Raw offset for where in the tif this tag starts */
13
- private byteOffset: number;
14
-
15
- /** Name of the tag */
16
- name: string;
17
-
18
- /** TifTagId @see TiffTag */
19
- id: number;
20
-
21
- /** Type of data inside the record @see this.dataTypeName */
22
- dataType: number;
23
-
24
- /** Number of records inside the tag */
25
- dataCount: number;
26
-
27
- tiff: CogTiff;
28
-
29
- constructor(id: number, tiff: CogTiff, offset: number) {
30
- this.tiff = tiff;
31
- this.byteOffset = offset;
32
-
33
- this.id = id;
34
- this.name = TiffTag[this.id];
35
- this.dataType = this.tiff.source.getUint16(offset + 2);
36
- this.dataCount = this.tiff.source.getUint(offset + 4, this.tiff.ifdConfig.pointer);
37
- this.dataTypeSize = getTiffTagSize(this.dataType);
38
- this.dataLength = this.dataTypeSize * this.dataCount;
39
- }
40
-
41
- /**
42
- * Have the bytes for the tag been loaded, or is a fetch required to read the tag
43
- */
44
- get hasBytes(): boolean {
45
- return this.tiff.source.hasBytes(this.valuePointer, this.dataLength);
46
- }
47
-
48
- /**
49
- * is the tag ready to be read
50
- */
51
- get isReady(): boolean {
52
- return true;
53
- }
54
-
55
- /**
56
- * Get the size of the data type
57
- *
58
- * @remarks
59
- * This is only the size of one instance of the data @see this.dataLength for total byte size
60
- *
61
- */
62
- dataTypeSize: number;
63
-
64
- /**
65
- * Get a human readable name for a datatype
66
- *
67
- */
68
- get dataTypeName(): string {
69
- return TiffTagValueType[this.dataType];
70
- }
71
-
72
- /**
73
- * Get the number of bytes used for the all of the data
74
- */
75
- dataLength: number;
76
-
77
- /** absolute offset of the Tag value */
78
- get valuePointer(): number {
79
- const valueOffset = this.size - this.tiff.ifdConfig.pointer;
80
- if (this.isValueInline) return this.byteOffset + valueOffset;
81
- return this.tiff.source.getUint(this.byteOffset + valueOffset, this.tiff.ifdConfig.pointer);
82
- }
83
-
84
- /** Size of the IFD (bytes) */
85
- get size(): number {
86
- return this.tiff.ifdConfig.ifd;
87
- }
88
-
89
- /** Is the value of this tag inline, or is it a pointer to the real value */
90
- get isValueInline(): boolean {
91
- return this.dataLength <= this.tiff.ifdConfig.pointer;
92
- }
93
-
94
- /** Read the value in from the byte array */
95
- readValue(): T {
96
- const offset = this.valuePointer;
97
- const dataTypeSize = this.dataTypeSize;
98
- const convert = getTiffTagValueReader(this.dataType);
99
- const count = this.dataCount;
100
- const dataLength = count * dataTypeSize;
101
-
102
- if (count === 1) return convert(this.tiff.source, offset) as unknown as T;
103
-
104
- const output = [];
105
- for (let i = 0; i < dataLength; i += dataTypeSize) {
106
- output.push(convert(this.tiff.source, offset + i));
107
- }
108
-
109
- // Convert to a string if ascii
110
- if (this.dataType === TiffTagValueType.ASCII) return output.join('').trim() as unknown as T;
111
-
112
- return output as unknown as T;
113
- }
114
-
115
- /** Get a human(ish) friendly output for the tags */
116
- toJSON(): Record<string, unknown> {
117
- return {
118
- id: this.id,
119
- name: this.name,
120
- offset: this.byteOffset,
121
- isReady: this.isReady,
122
- type: this.dataTypeName,
123
- value: this.value,
124
- };
125
- }
126
- }
@@ -1,17 +0,0 @@
1
- import { CogTiffTagBase } from './tiff.tag.base.js';
2
-
3
- export class CogTiffTagLazy<T> extends CogTiffTagBase<T> {
4
- value: T | null = null;
5
-
6
- get isReady(): boolean {
7
- return this.value != null;
8
- }
9
-
10
- async fetch(): Promise<T> {
11
- if (this.tiff.source.hasBytes(this.valuePointer, this.dataLength) === false) {
12
- await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
13
- }
14
- this.value = this.readValue();
15
- return this.value;
16
- }
17
- }
@@ -1,61 +0,0 @@
1
- import { CogTiff } from '../../cog.tiff.js';
2
- import { getTiffTagValueReader } from '../tiff.value.reader.js';
3
- import { CogTiffTagBase } from './tiff.tag.base.js';
4
-
5
- /**
6
- * TiffTag for offset arrays
7
- *
8
- * Allows individual access to specific records without having to read the entire tag in.
9
- */
10
- export class CogTiffTagOffset extends CogTiffTagBase<number[]> {
11
- private loadedValues: number[] | null = null;
12
-
13
- constructor(tagId: number, tiff: CogTiff, offset: number) {
14
- super(tagId, tiff, offset);
15
- }
16
-
17
- get value(): number[] | null {
18
- if (this.loadedValues != null) return this.loadedValues;
19
-
20
- if (this.hasBytes) {
21
- this.readValue();
22
- return this.loadedValues;
23
- }
24
-
25
- return null;
26
- }
27
-
28
- /** Load the entire index into memory */
29
- async load(): Promise<void> {
30
- await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
31
- this.readValue();
32
- }
33
-
34
- readValue(): number[] {
35
- const val = super.readValue();
36
- // if only one value is read in, it will not be returned as a array
37
- if (typeof val === 'number') {
38
- this.loadedValues = [val];
39
- } else {
40
- this.loadedValues = val;
41
- }
42
- return this.loadedValues;
43
- }
44
-
45
- /**
46
- * Read a specific value from the offset array
47
- * @param index index to read at
48
- */
49
- async getValueAt(index: number): Promise<number> {
50
- if (this.loadedValues) return this.loadedValues[index];
51
-
52
- const dataSize = this.dataTypeSize;
53
- const valueOffset = this.valuePointer + dataSize * index;
54
- const convert = getTiffTagValueReader(this.dataType);
55
-
56
- if (!this.tiff.source.hasBytes(valueOffset, dataSize)) {
57
- await this.tiff.source.loadBytes(valueOffset, dataSize);
58
- }
59
- return convert(this.tiff.source, valueOffset) as number;
60
- }
61
- }