@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
@@ -0,0 +1,32 @@
1
+ export class SourceMemory {
2
+ static toArrayBuffer(buf) {
3
+ if (buf instanceof ArrayBuffer)
4
+ return buf;
5
+ if (buf.byteLength === buf.buffer.byteLength)
6
+ return buf.buffer;
7
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
8
+ }
9
+ constructor(bytes) {
10
+ Object.defineProperty(this, "url", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: void 0
15
+ });
16
+ Object.defineProperty(this, "data", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: void 0
21
+ });
22
+ this.url = new URL('memory://fake-file');
23
+ this.data = SourceMemory.toArrayBuffer(bytes);
24
+ }
25
+ async fetch(offset, length) {
26
+ // console.log('Fetch', offset, length);
27
+ if (offset < 0)
28
+ offset = this.data.byteLength + offset;
29
+ return this.data.slice(offset, length == null ? undefined : offset + length);
30
+ }
31
+ }
32
+ //# sourceMappingURL=source.memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.memory.js","sourceRoot":"","sources":["../../src/__benchmark__/source.memory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAIvB,MAAM,CAAC,aAAa,CAAC,GAAsC;QACzD,IAAI,GAAG,YAAY,WAAW;YAAE,OAAO,GAAG,CAAC;QAC3C,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;QAChE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED,YAAY,KAAwC;QATpD;;;;;WAAS;QACT;;;;;WAAkB;QAShB,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAe;QACzC,wCAAwC;QACxC,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC/E,CAAC;CACF"}
@@ -1,2 +1 @@
1
- import 'source-map-support/register.js';
2
- //# sourceMappingURL=cog.image.test.d.ts.map
1
+ export {};
@@ -1,136 +1,128 @@
1
- import o from 'ospec';
2
- import * as path from 'path';
3
1
  import { promises as fs } from 'fs';
4
- import 'source-map-support/register.js';
5
- import { TestFileChunkSource } from '@chunkd/core/build/__test__/chunk.source.fake.js';
2
+ import assert from 'node:assert';
3
+ import { beforeEach, describe, it } from 'node:test';
4
+ import { TestFileSource } from '../__benchmark__/source.file.js';
5
+ import { SourceMemory } from '../__benchmark__/source.memory.js';
6
+ import { ByteSize } from '../util/bytes.js';
6
7
  import { CogTiff } from '../cog.tiff.js';
7
- import { TiffMimeType } from '../const/index.js';
8
- import { ByteSize, SourceMemory } from '@chunkd/core';
9
- import { fileURLToPath } from 'url';
10
- const __dirname = fileURLToPath(import.meta.url);
8
+ import { TiffMimeType } from '../const/tiff.mime.js';
11
9
  // 900913 properties.
12
10
  const A = 6378137.0;
13
11
  const InitialResolution = (2 * Math.PI * A) / 256;
14
12
  function getResolution(zoom) {
15
13
  return InitialResolution / 2 ** zoom;
16
14
  }
17
- o.spec('CogTiled', () => {
18
- const cogSourceFile = new TestFileChunkSource(path.join(__dirname, '../../../data/rgba8_tiled.tiff'));
15
+ describe('CogTiled', () => {
16
+ const cogSourceFile = new TestFileSource(new URL('../../data/rgba8_tiled.tiff', import.meta.url));
19
17
  const cog = new CogTiff(cogSourceFile);
20
- o.beforeEach(() => cog.init());
21
- o('should match resolutions to web mercator zoom levels', () => {
18
+ beforeEach(() => cog.init());
19
+ it('should match resolutions to web mercator zoom levels', () => {
22
20
  for (let i = 0; i < 14; i++) {
23
- o(cog.getImageByResolution(getResolution(i)).id).equals(4);
21
+ assert.equal(cog.getImageByResolution(getResolution(i)).id, 4);
24
22
  }
25
- o(cog.getImageByResolution(getResolution(14)).id).equals(3);
26
- o(cog.getImageByResolution(getResolution(15)).id).equals(2);
27
- o(cog.getImageByResolution(getResolution(16)).id).equals(1);
28
- o(cog.getImageByResolution(getResolution(17)).id).equals(0);
29
- o(cog.getImageByResolution(getResolution(18)).id).equals(0);
23
+ assert.equal(cog.getImageByResolution(getResolution(14)).id, 3);
24
+ assert.equal(cog.getImageByResolution(getResolution(15)).id, 2);
25
+ assert.equal(cog.getImageByResolution(getResolution(16)).id, 1);
26
+ assert.equal(cog.getImageByResolution(getResolution(17)).id, 0);
27
+ assert.equal(cog.getImageByResolution(getResolution(18)).id, 0);
30
28
  for (let i = 19; i < 32; i++) {
31
- o(cog.getImageByResolution(getResolution(i)).id).equals(0);
29
+ assert.equal(cog.getImageByResolution(getResolution(i)).id, 0);
32
30
  }
33
31
  });
34
- o('should get origin from all images', () => {
32
+ it('should get origin from all images', () => {
35
33
  const baseOrigin = cog.images[0].origin;
36
34
  for (const img of cog.images) {
37
- o(img.origin).deepEquals(baseOrigin);
35
+ assert.deepEqual(img.origin, baseOrigin);
38
36
  }
39
37
  });
40
- o('should get bounding box from all images', () => {
38
+ it('should get bounding box from all images', () => {
41
39
  const baseOrigin = cog.images[0].bbox;
42
40
  for (const img of cog.images) {
43
- o(img.bbox).deepEquals(baseOrigin);
41
+ assert.deepEqual(img.bbox, baseOrigin);
44
42
  }
45
43
  });
46
- o('should be geolocated', () => {
44
+ it('should be geolocated', () => {
47
45
  for (const img of cog.images)
48
- o(img.isGeoLocated).equals(true);
46
+ assert.equal(img.isGeoLocated, true);
49
47
  });
50
- o('should scale image resolution for all images', () => {
48
+ it('should scale image resolution for all images', () => {
51
49
  const [resX, resY, resZ] = cog.images[0].resolution;
52
50
  for (let i = 0; i < cog.images.length; i++) {
53
51
  const img = cog.images[i];
54
52
  const scale = 2 ** i; // This tiff is scaled at a factor of two per zoom level
55
- o(img.resolution).deepEquals([resX * scale, resY * scale, resZ]);
53
+ assert.deepEqual(img.resolution, [resX * scale, resY * scale, resZ]);
56
54
  }
57
55
  });
58
- o('should have tile information', () => {
56
+ it('should have tile information', () => {
59
57
  const [firstImage] = cog.images;
60
- o(firstImage.stripCount).equals(0);
61
- o(firstImage.isTiled()).equals(true);
58
+ assert.equal(firstImage.stripCount, 0);
59
+ assert.equal(firstImage.isTiled(), true);
62
60
  });
63
- o('should hasTile for every tile', async () => {
61
+ it('should hasTile for every tile', async () => {
64
62
  const [firstImage] = cog.images;
65
63
  for (let x = 0; x < firstImage.tileCount.x; x++) {
66
64
  for (let y = 0; y < firstImage.tileCount.y; y++) {
67
- o(await firstImage.hasTile(x, y)).equals(true);
65
+ assert.equal(await firstImage.hasTile(x, y), true);
68
66
  }
69
67
  }
70
68
  });
71
69
  });
72
- o.spec('Cog.Big', () => {
73
- o('should support reading from memory', async () => {
74
- const fullSource = new TestFileChunkSource(path.join(__dirname, '../../../data/sparse.tiff'));
75
- fullSource.chunkSize = 27902;
76
- await fullSource.loadBytes(0, 27902);
70
+ describe('Cog.Big', () => {
71
+ it('should support reading from memory', async () => {
72
+ const fullSource = new TestFileSource(new URL('../../data/sparse.tiff', import.meta.url));
77
73
  const cog = new CogTiff(fullSource);
78
74
  await cog.init();
79
- o(fullSource.chunkSize).equals(27902);
80
- o(fullSource.chunks.size).equals(1);
81
75
  const [firstImage] = cog.images;
82
- o(firstImage.stripCount).equals(0);
83
- o(firstImage.isTiled()).equals(true);
84
- const img = cog.getImage(4);
85
- o(img.tileCount).deepEquals({ x: 2, y: 2 });
86
- });
87
- o('should read using a memory source', async () => {
88
- const bytes = await fs.readFile(path.join(__dirname, '../../../data/sparse.tiff'));
89
- const source = new SourceMemory('Sparse.tiff', bytes.buffer);
76
+ assert.equal(firstImage.stripCount, 0);
77
+ assert.equal(firstImage.isTiled(), true);
78
+ const img = cog.images[4];
79
+ assert.deepEqual(img.tileCount, { x: 2, y: 2 });
80
+ });
81
+ it('should read using a memory source', async () => {
82
+ const bytes = await fs.readFile(new URL('../../data/sparse.tiff', import.meta.url));
83
+ const source = new SourceMemory(bytes.buffer);
90
84
  const cog = new CogTiff(source);
91
85
  await cog.init();
92
- o(source.chunkSize).equals(27902);
93
- o(source.chunks.size).equals(1);
94
86
  const [firstImage] = cog.images;
95
- o(firstImage.stripCount).equals(0);
96
- o(firstImage.isTiled()).equals(true);
97
- const img = cog.getImage(4);
98
- o(img.tileCount).deepEquals({ x: 2, y: 2 });
87
+ assert.equal(firstImage.stripCount, 0);
88
+ assert.equal(firstImage.isTiled(), true);
89
+ const img = cog.images[4];
90
+ assert.deepEqual(img.tileCount, { x: 2, y: 2 });
99
91
  });
100
92
  });
101
- o.spec('Cog.Sparse', () => {
102
- const cogSourceFile = new TestFileChunkSource(path.join(__dirname, '../../../data/sparse.tiff'));
93
+ describe('Cog.Sparse', () => {
94
+ const cogSourceFile = new TestFileSource(new URL('../../data/sparse.tiff', import.meta.url));
103
95
  const cog = new CogTiff(cogSourceFile);
104
- o.beforeEach(() => cog.init(true));
105
- o('should read metadata', () => {
106
- o(cog.getImage(0).epsg).equals(2193);
96
+ it('should read metadata', async () => {
97
+ await cog.init();
98
+ assert.equal(cog.images[0].epsg, 2193);
107
99
  });
108
- o('should be geolocated', () => {
100
+ it('should be geolocated', () => {
109
101
  for (const img of cog.images)
110
- o(img.isGeoLocated).equals(true);
102
+ assert.equal(img.isGeoLocated, true);
111
103
  });
112
- o('should support sparse cogs', async () => {
104
+ it('should support sparse cogs', async () => {
113
105
  const z = 4;
114
- const img = cog.getImage(z);
106
+ const img = cog.images[z];
115
107
  const { tileCount } = img;
116
- o(tileCount).deepEquals({ x: 2, y: 2 });
108
+ assert.deepEqual(tileCount, { x: 2, y: 2 });
117
109
  for (let x = 0; x < tileCount.x; x++) {
118
110
  for (let y = 0; y < tileCount.y; y++) {
119
111
  const hasTile = await img.hasTile(x, y);
120
- o(hasTile).equals(false);
112
+ assert.equal(hasTile, false);
121
113
  const tileXy = await img.getTile(x, y);
122
- const tileXyz = await cog.getTile(x, y, z);
123
- o(tileXy).equals(null)(`Tile x:${x} y:${y} should be empty`);
124
- o(tileXyz).equals(null)(`Tile x:${x} y:${y} z: ${z} should be empty`);
114
+ const tileXyz = await cog.images[z].getTile(x, y);
115
+ assert.equal(tileXy, null, `Tile x:${x} y:${y} should be empty`);
116
+ assert.equal(tileXyz, null, `Tile x:${x} y:${y} z: ${z} should be empty`);
125
117
  }
126
118
  }
127
119
  });
128
- o('should have ghost options', () => {
129
- o(cog.options.options.size).equals(6);
130
- o(cog.options.tileLeaderByteSize).equals(ByteSize.UInt32);
131
- o(cog.options.isCogOptimized).equals(true);
132
- const entries = [...cog.options.options.entries()];
133
- o(entries).deepEquals([
120
+ it('should have ghost options', () => {
121
+ assert.equal(cog.options?.options.size, 6);
122
+ assert.equal(cog.options?.tileLeaderByteSize, ByteSize.UInt32);
123
+ assert.equal(cog.options?.isCogOptimized, true);
124
+ const entries = [...(cog.options?.options.entries() ?? [])];
125
+ assert.deepEqual(entries, [
134
126
  ['GDAL_STRUCTURAL_METADATA_SIZE', '000140 bytes'],
135
127
  ['LAYOUT', 'IFDS_BEFORE_DATA'],
136
128
  ['BLOCK_ORDER', 'ROW_MAJOR'],
@@ -140,40 +132,40 @@ o.spec('Cog.Sparse', () => {
140
132
  ]);
141
133
  });
142
134
  });
143
- o.spec('CogStrip', () => {
144
- const cogSourceFile = new TestFileChunkSource(path.join(__dirname, '../../../data/rgba8_strip.tiff'));
135
+ describe('CogStrip', () => {
136
+ const cogSourceFile = new TestFileSource(new URL('../../data/rgba8_strip.tiff', import.meta.url));
145
137
  const cog = new CogTiff(cogSourceFile);
146
- o.beforeEach(() => cog.init());
147
- o('should get origin from all images', () => {
138
+ beforeEach(() => cog.init());
139
+ it('should get origin from all images', () => {
148
140
  const baseOrigin = cog.images[0].origin;
149
141
  for (const img of cog.images) {
150
- o(img.origin).deepEquals(baseOrigin);
142
+ assert.deepEqual(img.origin, baseOrigin);
151
143
  }
152
144
  });
153
- o('should get bounding box from all images', () => {
145
+ it('should get bounding box from all images', () => {
154
146
  const baseOrigin = cog.images[0].bbox;
155
147
  for (const img of cog.images) {
156
- o(img.bbox).deepEquals(baseOrigin);
148
+ assert.deepEqual(img.bbox, baseOrigin);
157
149
  }
158
150
  });
159
- o('should scale image resolution for all images', () => {
151
+ it('should scale image resolution for all images', () => {
160
152
  const [resX, resY, resZ] = cog.images[0].resolution;
161
153
  for (let i = 0; i < cog.images.length; i++) {
162
154
  const img = cog.images[i];
163
155
  const scale = 2 ** i; // This tiff is scaled at a factor of two per zoom level
164
- o(img.resolution).deepEquals([resX * scale, resY * scale, resZ]);
156
+ assert.deepEqual(img.resolution, [resX * scale, resY * scale, resZ]);
165
157
  }
166
158
  });
167
- o('should have strip information', async () => {
159
+ it('should have strip information', async () => {
168
160
  const [firstImage] = cog.images;
169
- o(firstImage.isTiled()).equals(false);
170
- o(firstImage.stripCount).equals(2);
161
+ assert.equal(firstImage.isTiled(), false);
162
+ assert.equal(firstImage.stripCount, 2);
171
163
  const stripA = await firstImage.getStrip(0);
172
- o(stripA === null || stripA === void 0 ? void 0 : stripA.mimeType).equals(TiffMimeType.WEBP);
173
- o(stripA === null || stripA === void 0 ? void 0 : stripA.bytes.byteLength).equals(152);
164
+ assert.equal(stripA?.mimeType, TiffMimeType.Webp);
165
+ assert.equal(stripA?.bytes.byteLength, 152);
174
166
  const stripB = await firstImage.getStrip(1);
175
- o(stripB === null || stripB === void 0 ? void 0 : stripB.mimeType).equals(TiffMimeType.WEBP);
176
- o(stripB === null || stripB === void 0 ? void 0 : stripB.bytes.byteLength).equals(152);
167
+ assert.equal(stripB?.mimeType, TiffMimeType.Webp);
168
+ assert.equal(stripB?.bytes.byteLength, 152);
177
169
  });
178
170
  });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLmltYWdlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0X18vY29nLmltYWdlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDO0FBQ3RCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBDLE9BQU8sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXBDLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELHFCQUFxQjtBQUNyQixNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDcEIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUVsRCxTQUFTLGFBQWEsQ0FBQyxJQUFZO0lBQy9CLE9BQU8saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUN6QyxDQUFDO0FBRUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQyxDQUFD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QUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvIGZyb20gJ29zcGVjJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcblxuaW1wb3J0ICdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXIuanMnO1xuXG5pbXBvcnQgeyBUZXN0RmlsZUNodW5rU291cmNlIH0gZnJvbSAnQGNodW5rZC9jb3JlL2J1aWxkL19fdGVzdF9fL2NodW5rLnNvdXJjZS5mYWtlLmpzJztcbmltcG9ydCB7IENvZ1RpZmYgfSBmcm9tICcuLi9jb2cudGlmZi5qcyc7XG5pbXBvcnQgeyBUaWZmTWltZVR5cGUgfSBmcm9tICcuLi9jb25zdC9pbmRleC5qcyc7XG5pbXBvcnQgeyBCeXRlU2l6ZSwgU291cmNlTWVtb3J5IH0gZnJvbSAnQGNodW5rZC9jb3JlJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCk7XG4vLyA5MDA5MTMgcHJvcGVydGllcy5cbmNvbnN0IEEgPSA2Mzc4MTM3LjA7XG5jb25zdCBJbml0aWFsUmVzb2x1dGlvbiA9ICgyICogTWF0aC5QSSAqIEEpIC8gMjU2O1xuXG5mdW5jdGlvbiBnZXRSZXNvbHV0aW9uKHpvb206IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIEluaXRpYWxSZXNvbHV0aW9uIC8gMiAqKiB6b29tO1xufVxuXG5vLnNwZWMoJ0NvZ1RpbGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvZ1NvdXJjZUZpbGUgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9yZ2JhOF90aWxlZC50aWZmJykpO1xuICAgIGNvbnN0IGNvZyA9IG5ldyBDb2dUaWZmKGNvZ1NvdXJjZUZpbGUpO1xuXG4gICAgby5iZWZvcmVFYWNoKCgpID0+IGNvZy5pbml0KCkpO1xuXG4gICAgbygnc2hvdWxkIG1hdGNoIHJlc29sdXRpb25zIHRvIHdlYiBtZXJjYXRvciB6b29tIGxldmVscycsICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICAgICAgICBvKGNvZy5nZXRJbWFnZUJ5UmVzb2x1dGlvbihnZXRSZXNvbHV0aW9uKGkpKS5pZCkuZXF1YWxzKDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2VCeVJlc29sdXRpb24oZ2V0UmVzb2x1dGlvbigxNCkpLmlkKS5lcXVhbHMoMyk7XG4gICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oMTUpKS5pZCkuZXF1YWxzKDIpO1xuICAgICAgICBvKGNvZy5nZXRJbWFnZUJ5UmVzb2x1dGlvbihnZXRSZXNvbHV0aW9uKDE2KSkuaWQpLmVxdWFscygxKTtcbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2VCeVJlc29sdXRpb24oZ2V0UmVzb2x1dGlvbigxNykpLmlkKS5lcXVhbHMoMCk7XG4gICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oMTgpKS5pZCkuZXF1YWxzKDApO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOTsgaSA8IDMyOyBpKyspIHtcbiAgICAgICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oaSkpLmlkKS5lcXVhbHMoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgb3JpZ2luIGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0ub3JpZ2luO1xuICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiBjb2cuaW1hZ2VzKSB7XG4gICAgICAgICAgICBvKGltZy5vcmlnaW4pLmRlZXBFcXVhbHMoYmFzZU9yaWdpbik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgYm91bmRpbmcgYm94IGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0uYmJveDtcbiAgICAgICAgZm9yIChjb25zdCBpbWcgb2YgY29nLmltYWdlcykge1xuICAgICAgICAgICAgbyhpbWcuYmJveCkuZGVlcEVxdWFscyhiYXNlT3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGJlIGdlb2xvY2F0ZWQnLCAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIGNvZy5pbWFnZXMpIG8oaW1nLmlzR2VvTG9jYXRlZCkuZXF1YWxzKHRydWUpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHNjYWxlIGltYWdlIHJlc29sdXRpb24gZm9yIGFsbCBpbWFnZXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtyZXNYLCByZXNZLCByZXNaXSA9IGNvZy5pbWFnZXNbMF0ucmVzb2x1dGlvbjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2cuaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbWcgPSBjb2cuaW1hZ2VzW2ldO1xuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSAyICoqIGk7IC8vIFRoaXMgdGlmZiBpcyBzY2FsZWQgYXQgYSBmYWN0b3Igb2YgdHdvIHBlciB6b29tIGxldmVsXG4gICAgICAgICAgICBvKGltZy5yZXNvbHV0aW9uKS5kZWVwRXF1YWxzKFtyZXNYICogc2NhbGUsIHJlc1kgKiBzY2FsZSwgcmVzWl0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgaGF2ZSB0aWxlIGluZm9ybWF0aW9uJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBbZmlyc3RJbWFnZV0gPSBjb2cuaW1hZ2VzO1xuICAgICAgICBvKGZpcnN0SW1hZ2Uuc3RyaXBDb3VudCkuZXF1YWxzKDApO1xuICAgICAgICBvKGZpcnN0SW1hZ2UuaXNUaWxlZCgpKS5lcXVhbHModHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgaGFzVGlsZSBmb3IgZXZlcnkgdGlsZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcblxuICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IGZpcnN0SW1hZ2UudGlsZUNvdW50Lng7IHgrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBmaXJzdEltYWdlLnRpbGVDb3VudC55OyB5KyspIHtcbiAgICAgICAgICAgICAgICBvKGF3YWl0IGZpcnN0SW1hZ2UuaGFzVGlsZSh4LCB5KSkuZXF1YWxzKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59KTtcblxuby5zcGVjKCdDb2cuQmlnJywgKCkgPT4ge1xuICAgIG8oJ3Nob3VsZCBzdXBwb3J0IHJlYWRpbmcgZnJvbSBtZW1vcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZ1bGxTb3VyY2UgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9zcGFyc2UudGlmZicpKTtcbiAgICAgICAgZnVsbFNvdXJjZS5jaHVua1NpemUgPSAyNzkwMjtcbiAgICAgICAgYXdhaXQgZnVsbFNvdXJjZS5sb2FkQnl0ZXMoMCwgMjc5MDIpO1xuICAgICAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihmdWxsU291cmNlKTtcbiAgICAgICAgYXdhaXQgY29nLmluaXQoKTtcblxuICAgICAgICBvKGZ1bGxTb3VyY2UuY2h1bmtTaXplKS5lcXVhbHMoMjc5MDIpO1xuICAgICAgICBvKGZ1bGxTb3VyY2UuY2h1bmtzLnNpemUpLmVxdWFscygxKTtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygwKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGltZyA9IGNvZy5nZXRJbWFnZSg0KTtcbiAgICAgICAgbyhpbWcudGlsZUNvdW50KS5kZWVwRXF1YWxzKHsgeDogMiwgeTogMiB9KTtcbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCByZWFkIHVzaW5nIGEgbWVtb3J5IHNvdXJjZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnl0ZXMgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9zcGFyc2UudGlmZicpKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbmV3IFNvdXJjZU1lbW9yeSgnU3BhcnNlLnRpZmYnLCBieXRlcy5idWZmZXIpO1xuICAgICAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihzb3VyY2UpO1xuICAgICAgICBhd2FpdCBjb2cuaW5pdCgpO1xuXG4gICAgICAgIG8oc291cmNlLmNodW5rU2l6ZSkuZXF1YWxzKDI3OTAyKTtcbiAgICAgICAgbyhzb3VyY2UuY2h1bmtzLnNpemUpLmVxdWFscygxKTtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygwKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGltZyA9IGNvZy5nZXRJbWFnZSg0KTtcbiAgICAgICAgbyhpbWcudGlsZUNvdW50KS5kZWVwRXF1YWxzKHsgeDogMiwgeTogMiB9KTtcbiAgICB9KTtcbn0pO1xuXG5vLnNwZWMoJ0NvZy5TcGFyc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgY29nU291cmNlRmlsZSA9IG5ldyBUZXN0RmlsZUNodW5rU291cmNlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9kYXRhL3NwYXJzZS50aWZmJykpO1xuICAgIGNvbnN0IGNvZyA9IG5ldyBDb2dUaWZmKGNvZ1NvdXJjZUZpbGUpO1xuICAgIG8uYmVmb3JlRWFjaCgoKSA9PiBjb2cuaW5pdCh0cnVlKSk7XG5cbiAgICBvKCdzaG91bGQgcmVhZCBtZXRhZGF0YScsICgpID0+IHtcbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2UoMCkuZXBzZykuZXF1YWxzKDIxOTMpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGJlIGdlb2xvY2F0ZWQnLCAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIGNvZy5pbWFnZXMpIG8oaW1nLmlzR2VvTG9jYXRlZCkuZXF1YWxzKHRydWUpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHN1cHBvcnQgc3BhcnNlIGNvZ3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHogPSA0O1xuICAgICAgICBjb25zdCBpbWcgPSBjb2cuZ2V0SW1hZ2Uoeik7XG5cbiAgICAgICAgY29uc3QgeyB0aWxlQ291bnQgfSA9IGltZztcbiAgICAgICAgbyh0aWxlQ291bnQpLmRlZXBFcXVhbHMoeyB4OiAyLCB5OiAyIH0pO1xuXG4gICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgdGlsZUNvdW50Lng7IHgrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0aWxlQ291bnQueTsgeSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzVGlsZSA9IGF3YWl0IGltZy5oYXNUaWxlKHgsIHkpO1xuICAgICAgICAgICAgICAgIG8oaGFzVGlsZSkuZXF1YWxzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aWxlWHkgPSBhd2FpdCBpbWcuZ2V0VGlsZSh4LCB5KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aWxlWHl6ID0gYXdhaXQgY29nLmdldFRpbGUoeCwgeSwgeik7XG4gICAgICAgICAgICAgICAgbyh0aWxlWHkpLmVxdWFscyhudWxsKShgVGlsZSB4OiR7eH0geToke3l9IHNob3VsZCBiZSBlbXB0eWApO1xuICAgICAgICAgICAgICAgIG8odGlsZVh5eikuZXF1YWxzKG51bGwpKGBUaWxlIHg6JHt4fSB5OiR7eX0gejogJHt6fSBzaG91bGQgYmUgZW1wdHlgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGhhdmUgZ2hvc3Qgb3B0aW9ucycsICgpID0+IHtcbiAgICAgICAgbyhjb2cub3B0aW9ucy5vcHRpb25zLnNpemUpLmVxdWFscyg2KTtcbiAgICAgICAgbyhjb2cub3B0aW9ucy50aWxlTGVhZGVyQnl0ZVNpemUpLmVxdWFscyhCeXRlU2l6ZS5VSW50MzIpO1xuICAgICAgICBvKGNvZy5vcHRpb25zLmlzQ29nT3B0aW1pemVkKS5lcXVhbHModHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgZW50cmllcyA9IFsuLi5jb2cub3B0aW9ucy5vcHRpb25zLmVudHJpZXMoKV07XG4gICAgICAgIG8oZW50cmllcykuZGVlcEVxdWFscyhbXG4gICAgICAgICAgICBbJ0dEQUxfU1RSVUNUVVJBTF9NRVRBREFUQV9TSVpFJywgJzAwMDE0MCBieXRlcyddLFxuICAgICAgICAgICAgWydMQVlPVVQnLCAnSUZEU19CRUZPUkVfREFUQSddLFxuICAgICAgICAgICAgWydCTE9DS19PUkRFUicsICdST1dfTUFKT1InXSxcbiAgICAgICAgICAgIFsnQkxPQ0tfTEVBREVSJywgJ1NJWkVfQVNfVUlOVDQnXSxcbiAgICAgICAgICAgIFsnQkxPQ0tfVFJBSUxFUicsICdMQVNUXzRfQllURVNfUkVQRUFURUQnXSxcbiAgICAgICAgICAgIFsnS05PV05fSU5DT01QQVRJQkxFX0VESVRJT04nLCAnTk8nXSxcbiAgICAgICAgXSk7XG4gICAgfSk7XG59KTtcblxuby5zcGVjKCdDb2dTdHJpcCcsICgpID0+IHtcbiAgICBjb25zdCBjb2dTb3VyY2VGaWxlID0gbmV3IFRlc3RGaWxlQ2h1bmtTb3VyY2UocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLy4uL2RhdGEvcmdiYThfc3RyaXAudGlmZicpKTtcbiAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihjb2dTb3VyY2VGaWxlKTtcblxuICAgIG8uYmVmb3JlRWFjaCgoKSA9PiBjb2cuaW5pdCgpKTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgb3JpZ2luIGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0ub3JpZ2luO1xuICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiBjb2cuaW1hZ2VzKSB7XG4gICAgICAgICAgICBvKGltZy5vcmlnaW4pLmRlZXBFcXVhbHMoYmFzZU9yaWdpbik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgYm91bmRpbmcgYm94IGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0uYmJveDtcbiAgICAgICAgZm9yIChjb25zdCBpbWcgb2YgY29nLmltYWdlcykge1xuICAgICAgICAgICAgbyhpbWcuYmJveCkuZGVlcEVxdWFscyhiYXNlT3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHNjYWxlIGltYWdlIHJlc29sdXRpb24gZm9yIGFsbCBpbWFnZXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtyZXNYLCByZXNZLCByZXNaXSA9IGNvZy5pbWFnZXNbMF0ucmVzb2x1dGlvbjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2cuaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbWcgPSBjb2cuaW1hZ2VzW2ldO1xuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSAyICoqIGk7IC8vIFRoaXMgdGlmZiBpcyBzY2FsZWQgYXQgYSBmYWN0b3Igb2YgdHdvIHBlciB6b29tIGxldmVsXG4gICAgICAgICAgICBvKGltZy5yZXNvbHV0aW9uKS5kZWVwRXF1YWxzKFtyZXNYICogc2NhbGUsIHJlc1kgKiBzY2FsZSwgcmVzWl0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgaGF2ZSBzdHJpcCBpbmZvcm1hdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKGZhbHNlKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygyKTtcblxuICAgICAgICBjb25zdCBzdHJpcEEgPSBhd2FpdCBmaXJzdEltYWdlLmdldFN0cmlwKDApO1xuICAgICAgICBvKHN0cmlwQT8ubWltZVR5cGUpLmVxdWFscyhUaWZmTWltZVR5cGUuV0VCUCk7XG4gICAgICAgIG8oc3RyaXBBPy5ieXRlcy5ieXRlTGVuZ3RoKS5lcXVhbHMoMTUyKTtcblxuICAgICAgICBjb25zdCBzdHJpcEIgPSBhd2FpdCBmaXJzdEltYWdlLmdldFN0cmlwKDEpO1xuICAgICAgICBvKHN0cmlwQj8ubWltZVR5cGUpLmVxdWFscyhUaWZmTWltZVR5cGUuV0VCUCk7XG4gICAgICAgIG8oc3RyaXBCPy5ieXRlcy5ieXRlTGVuZ3RoKS5lcXVhbHMoMTUyKTtcbiAgICB9KTtcbn0pO1xuIl19
171
+ //# sourceMappingURL=cog.image.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cog.image.test.js","sourceRoot":"","sources":["../../src/__test__/cog.image.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1 @@
1
- import 'source-map-support/register.js';
2
- //# sourceMappingURL=cog.read.test.d.ts.map
1
+ export {};
@@ -1,72 +1,54 @@
1
- import o from 'ospec';
2
- import * as path from 'path';
3
- import 'source-map-support/register.js';
1
+ import assert from 'node:assert';
2
+ import { describe, it } from 'node:test';
4
3
  import { CogTiff } from '../cog.tiff.js';
5
- import { TiffVersion } from '../const/tiff.version.js';
6
4
  import { TiffMimeType } from '../const/tiff.mime.js';
7
- import { TestFileChunkSource } from '@chunkd/core/build/__test__/chunk.source.fake.js';
8
- import { fileURLToPath } from 'url';
9
- const __dirname = fileURLToPath(import.meta.url);
10
- o.spec('CogRead', () => {
5
+ import { TestFileSource } from '../__benchmark__/source.file.js';
6
+ import { TiffVersion } from '../const/tiff.version.js';
7
+ function validate(tif) {
8
+ assert.equal(tif.images.length, 5);
9
+ const [firstTif] = tif.images;
10
+ assert.equal(firstTif.isTiled(), true);
11
+ assert.deepEqual(firstTif.tileSize, { width: 256, height: 256 });
12
+ assert.deepEqual(firstTif.size, { width: 64, height: 64 });
13
+ }
14
+ describe('CogRead', () => {
11
15
  // TODO this does not load 100% yet
12
- // o('should read big endian', async () => {
13
- // const source = new TestFileChunkSource(path.join(__dirname, '../../../test/data/be_cog.tif'))
14
- // const tif = new CogTif(source);
15
- // await tif.init();
16
- // o(source.isLittleEndian).equals(false);
17
- // o(source.version).equals(TiffVersion.Tiff);
18
- // o(tif.images.length).equals(5)
19
- // const [firstTif] = tif.images;
20
- // o(firstTif.isTiled()).equals(true);
21
- //
22
- // // o(firstTif.compression).equals('image/jpeg')
23
- // })
24
- function validate(tif) {
25
- o(tif.images.length).equals(5);
26
- const [firstTif] = tif.images;
27
- o(firstTif.isTiled()).equals(true);
28
- o(firstTif.tileSize).deepEquals({ width: 256, height: 256 });
29
- o(firstTif.size).deepEquals({ width: 64, height: 64 });
30
- }
31
- o('should read big tiff', async () => {
32
- const source = new TestFileChunkSource(path.join(__dirname, '../../../data/big_cog.tif'));
16
+ // it('should read big endian', async () => {
17
+ // const source = new TestFileSource(new URL('../../data/big_cog.tiff', import.meta.url));
18
+ // const tiff = new CogTiff(source);
19
+ // await tiff.init();
20
+ // assert.equal(tiff.isLittleEndian, false);
21
+ // assert.equal(tiff.version, TiffVersion.BigTiff);
22
+ // validate(tiff);
23
+ // });
24
+ it('should read big tiff', async () => {
25
+ const source = new TestFileSource(new URL('../../data/big_cog.tiff', import.meta.url));
33
26
  const tiff = new CogTiff(source);
34
27
  await tiff.init();
35
- o(source.isLittleEndian).equals(true);
36
- o(tiff.version).equals(TiffVersion.BigTiff);
28
+ assert.equal(tiff.isLittleEndian, true);
29
+ assert.equal(tiff.version, TiffVersion.BigTiff);
37
30
  validate(tiff);
38
31
  });
39
- o('should read tiff', async () => {
40
- const source = new TestFileChunkSource(path.join(__dirname, '../../../data/cog.tif'));
32
+ it('should read tiff', async () => {
33
+ const source = new TestFileSource(new URL('../../data/cog.tiff', import.meta.url));
41
34
  const tiff = new CogTiff(source);
42
35
  await tiff.init();
43
- o(source.isLittleEndian).equals(true);
44
- o(tiff.version).equals(TiffVersion.Tiff);
36
+ assert.equal(tiff.isLittleEndian, true);
37
+ assert.equal(tiff.version, TiffVersion.Tiff);
45
38
  validate(tiff);
46
39
  const [firstTif] = tiff.images;
47
- o(firstTif.compression).equals(TiffMimeType.JPEG);
40
+ assert.equal(firstTif.compression, TiffMimeType.Jpeg);
48
41
  });
49
- o('should allow multiple init', async () => {
50
- const source = new TestFileChunkSource(path.join(__dirname, '../../../data/cog.tif'));
42
+ it('should allow multiple init', async () => {
43
+ const source = new TestFileSource(new URL('../../data/cog.tiff', import.meta.url));
51
44
  const tiff = new CogTiff(source);
52
- o(tiff.isInitialized).equals(false);
45
+ assert.equal(tiff.isInitialized, false);
53
46
  await tiff.init();
54
- o(tiff.isInitialized).equals(true);
55
- o(tiff.images.length).equals(5);
56
- o(tiff.isInitialized).equals(true);
47
+ assert.equal(tiff.isInitialized, true);
48
+ assert.equal(tiff.images.length, 5);
49
+ assert.equal(tiff.isInitialized, true);
57
50
  await tiff.init();
58
- o(tiff.images.length).equals(5);
59
- });
60
- o('should close a source', async () => {
61
- const source = new TestFileChunkSource(path.join(__dirname, '../../../data/cog.tif'));
62
- const tiff = new CogTiff(source);
63
- // Should not close if there is no close
64
- source.close = undefined;
65
- await tiff.close();
66
- const closeSpy = o.spy(() => Promise.resolve());
67
- source.close = closeSpy;
68
- await tiff.close();
69
- o(closeSpy.callCount).equals(1);
51
+ assert.equal(tiff.images.length, 5);
70
52
  });
71
53
  });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLnJlYWQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RfXy9jb2cucmVhZC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQztBQUN0QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFcEMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ25CLG1DQUFtQztJQUNuQyw0Q0FBNEM7SUFDNUMsb0dBQW9HO0lBQ3BHLHNDQUFzQztJQUV0Qyx3QkFBd0I7SUFFeEIsOENBQThDO0lBQzlDLGtEQUFrRDtJQUNsRCxxQ0FBcUM7SUFDckMscUNBQXFDO0lBQ3JDLDBDQUEwQztJQUMxQyxFQUFFO0lBQ0Ysc0RBQXNEO0lBQ3RELEtBQUs7SUFFTCxTQUFTLFFBQVEsQ0FBQyxHQUFZO1FBQzFCLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUM5QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFD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LENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUVILENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN0RixNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyx3Q0FBd0M7UUFDeEMsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDekIsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUN4QixNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG8gZnJvbSAnb3NwZWMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAnc291cmNlLW1hcC1zdXBwb3J0L3JlZ2lzdGVyLmpzJztcblxuaW1wb3J0IHsgQ29nVGlmZiB9IGZyb20gJy4uL2NvZy50aWZmLmpzJztcbmltcG9ydCB7IFRpZmZWZXJzaW9uIH0gZnJvbSAnLi4vY29uc3QvdGlmZi52ZXJzaW9uLmpzJztcbmltcG9ydCB7IFRpZmZNaW1lVHlwZSB9IGZyb20gJy4uL2NvbnN0L3RpZmYubWltZS5qcyc7XG5pbXBvcnQgeyBUZXN0RmlsZUNodW5rU291cmNlIH0gZnJvbSAnQGNodW5rZC9jb3JlL2J1aWxkL19fdGVzdF9fL2NodW5rLnNvdXJjZS5mYWtlLmpzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCk7XG5cbm8uc3BlYygnQ29nUmVhZCcsICgpID0+IHtcbiAgICAvLyBUT0RPIHRoaXMgZG9lcyBub3QgbG9hZCAxMDAlIHlldFxuICAgIC8vIG8oJ3Nob3VsZCByZWFkIGJpZyBlbmRpYW4nLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBUZXN0RmlsZUNodW5rU291cmNlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi90ZXN0L2RhdGEvYmVfY29nLnRpZicpKVxuICAgIC8vICAgICBjb25zdCB0aWYgPSBuZXcgQ29nVGlmKHNvdXJjZSk7XG5cbiAgICAvLyAgICAgYXdhaXQgdGlmLmluaXQoKTtcblxuICAgIC8vICAgICBvKHNvdXJjZS5pc0xpdHRsZUVuZGlhbikuZXF1YWxzKGZhbHNlKTtcbiAgICAvLyAgICAgbyhzb3VyY2UudmVyc2lvbikuZXF1YWxzKFRpZmZWZXJzaW9uLlRpZmYpO1xuICAgIC8vICAgICBvKHRpZi5pbWFnZXMubGVuZ3RoKS5lcXVhbHMoNSlcbiAgICAvLyAgICAgY29uc3QgW2ZpcnN0VGlmXSA9IHRpZi5pbWFnZXM7XG4gICAgLy8gICAgIG8oZmlyc3RUaWYuaXNUaWxlZCgpKS5lcXVhbHModHJ1ZSk7XG4gICAgLy9cbiAgICAvLyAgICAgLy8gbyhmaXJzdFRpZi5jb21wcmVzc2lvbikuZXF1YWxzKCdpbWFnZS9qcGVnJylcbiAgICAvLyB9KVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUodGlmOiBDb2dUaWZmKTogdm9pZCB7XG4gICAgICAgIG8odGlmLmltYWdlcy5sZW5ndGgpLmVxdWFscyg1KTtcblxuICAgICAgICBjb25zdCBbZmlyc3RUaWZdID0gdGlmLmltYWdlcztcbiAgICAgICAgbyhmaXJzdFRpZi5pc1RpbGVkKCkpLmVxdWFscyh0cnVlKTtcbiAgICAgICAgbyhmaXJzdFRpZi50aWxlU2l6ZSkuZGVlcEVxdWFscyh7IHdpZHRoOiAyNTYsIGhlaWdodDogMjU2IH0pO1xuICAgICAgICBvKGZpcnN0VGlmLnNpemUpLmRlZXBFcXVhbHMoeyB3aWR0aDogNjQsIGhlaWdodDogNjQgfSk7XG4gICAgfVxuXG4gICAgbygnc2hvdWxkIHJlYWQgYmlnIHRpZmYnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBUZXN0RmlsZUNodW5rU291cmNlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9kYXRhL2JpZ19jb2cudGlmJykpO1xuICAgICAgICBjb25zdCB0aWZmID0gbmV3IENvZ1RpZmYoc291cmNlKTtcblxuICAgICAgICBhd2FpdCB0aWZmLmluaXQoKTtcblxuICAgICAgICBvKHNvdXJjZS5pc0xpdHRsZUVuZGlhbikuZXF1YWxzKHRydWUpO1xuICAgICAgICBvKHRpZmYudmVyc2lvbikuZXF1YWxzKFRpZmZWZXJzaW9uLkJpZ1RpZmYpO1xuICAgICAgICB2YWxpZGF0ZSh0aWZmKTtcbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCByZWFkIHRpZmYnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBUZXN0RmlsZUNodW5rU291cmNlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9kYXRhL2NvZy50aWYnKSk7XG4gICAgICAgIGNvbnN0IHRpZmYgPSBuZXcgQ29nVGlmZihzb3VyY2UpO1xuXG4gICAgICAgIGF3YWl0IHRpZmYuaW5pdCgpO1xuXG4gICAgICAgIG8oc291cmNlLmlzTGl0dGxlRW5kaWFuKS5lcXVhbHModHJ1ZSk7XG4gICAgICAgIG8odGlmZi52ZXJzaW9uKS5lcXVhbHMoVGlmZlZlcnNpb24uVGlmZik7XG4gICAgICAgIHZhbGlkYXRlKHRpZmYpO1xuXG4gICAgICAgIGNvbnN0IFtmaXJzdFRpZl0gPSB0aWZmLmltYWdlcztcbiAgICAgICAgbyhmaXJzdFRpZi5jb21wcmVzc2lvbikuZXF1YWxzKFRpZmZNaW1lVHlwZS5KUEVHKTtcbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBhbGxvdyBtdWx0aXBsZSBpbml0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9jb2cudGlmJykpO1xuICAgICAgICBjb25zdCB0aWZmID0gbmV3IENvZ1RpZmYoc291cmNlKTtcblxuICAgICAgICBvKHRpZmYuaXNJbml0aWFsaXplZCkuZXF1YWxzKGZhbHNlKTtcbiAgICAgICAgYXdhaXQgdGlmZi5pbml0KCk7XG4gICAgICAgIG8odGlmZi5pc0luaXRpYWxpemVkKS5lcXVhbHModHJ1ZSk7XG4gICAgICAgIG8odGlmZi5pbWFnZXMubGVuZ3RoKS5lcXVhbHMoNSk7XG5cbiAgICAgICAgbyh0aWZmLmlzSW5pdGlhbGl6ZWQpLmVxdWFscyh0cnVlKTtcbiAgICAgICAgYXdhaXQgdGlmZi5pbml0KCk7XG4gICAgICAgIG8odGlmZi5pbWFnZXMubGVuZ3RoKS5lcXVhbHMoNSk7XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgY2xvc2UgYSBzb3VyY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBUZXN0RmlsZUNodW5rU291cmNlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9kYXRhL2NvZy50aWYnKSk7XG4gICAgICAgIGNvbnN0IHRpZmYgPSBuZXcgQ29nVGlmZihzb3VyY2UpO1xuICAgICAgICAvLyBTaG91bGQgbm90IGNsb3NlIGlmIHRoZXJlIGlzIG5vIGNsb3NlXG4gICAgICAgIHNvdXJjZS5jbG9zZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgYXdhaXQgdGlmZi5jbG9zZSgpO1xuXG4gICAgICAgIGNvbnN0IGNsb3NlU3B5ID0gby5zcHkoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkpO1xuICAgICAgICBzb3VyY2UuY2xvc2UgPSBjbG9zZVNweTtcbiAgICAgICAgYXdhaXQgdGlmZi5jbG9zZSgpO1xuICAgICAgICBvKGNsb3NlU3B5LmNhbGxDb3VudCkuZXF1YWxzKDEpO1xuICAgIH0pO1xufSk7XG4iXX0=
54
+ //# sourceMappingURL=cog.read.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cog.read.test.js","sourceRoot":"","sources":["../../src/__test__/cog.read.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { SourceHttp } from '@chunkd/source-http';
2
+ import { CogTiff } from '../index.js';
3
+ async function main() {
4
+ const source = new SourceHttp('https://example.com/cog.tif');
5
+ const tiff = await CogTiff.create(source);
6
+ /** Load a specific tile from a specific image */
7
+ const tile = await tiff.images[5].getTile(2, 2);
8
+ if (tile != null) {
9
+ tile.bytes; // Raw image buffer or null if tile doesn't exist
10
+ }
11
+ /** Load the 5th image in the Tiff */
12
+ const img = tiff.images[5];
13
+ if (img.isTiled()) {
14
+ /** Load tile x:10 y:10 */
15
+ const tile = await img.getTile(10, 10);
16
+ if (tile != null) {
17
+ tile.mimeType; // image/jpeg
18
+ tile.bytes; // Raw image buffer
19
+ }
20
+ }
21
+ /** Get the origin point of the tiff */
22
+ img.origin;
23
+ /** Bounding box of the tiff */
24
+ img.bbox;
25
+ }
26
+ main();
27
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/__test__/example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1C,iDAAiD;IACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,iDAAiD;KAC9D;IAED,qCAAqC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;QACjB,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa;YAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB;SAChC;KACF;IAED,uCAAuC;IACvC,GAAG,CAAC,MAAM,CAAC;IACX,+BAA+B;IAC/B,GAAG,CAAC,IAAI,CAAC;AACX,CAAC;AAED,IAAI,EAAE,CAAC"}