@cogeotiff/core 6.1.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,51 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [7.1.0](https://github.com/blacha/cogeotiff/compare/v7.0.0...v7.1.0) (2022-06-22)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **core:** load the ghost header bytes if requested ([b1f0116](https://github.com/blacha/cogeotiff/commit/b1f01164da1ad7deed7c3754e0106ccfea773338))
12
+
13
+
14
+ ### Features
15
+
16
+ * **core:** add hasTile function to determine if a tile exists in a sparse tiff ([e56a67c](https://github.com/blacha/cogeotiff/commit/e56a67cc078945c5d96ddd3e6aefbf2d773359a4))
17
+
18
+
19
+ ### Performance Improvements
20
+
21
+ * **core:** improve parsing of ghost options ([ffa7928](https://github.com/blacha/cogeotiff/commit/ffa79283a61efd6f9999bd43d222faa24cd5ced7))
22
+ * greatly increase the amount of tiles being read so nodejs startup time affects the timing less ([3e9c0f3](https://github.com/blacha/cogeotiff/commit/3e9c0f305584d95fd79e1fe094477f3589b235c6))
23
+ * **core:** improve lookup speed of ghost options ([7c5f37e](https://github.com/blacha/cogeotiff/commit/7c5f37e114a77a772ca588e62b6d22712d05b2bc))
24
+
25
+
26
+
27
+
28
+
29
+ # [7.0.0](https://github.com/blacha/cogeotiff/compare/v6.1.1...v7.0.0) (2022-03-17)
30
+
31
+
32
+ ### Features
33
+
34
+ * **core:** upgrade chunkd and remove logger for internal fetches ([#832](https://github.com/blacha/cogeotiff/issues/832)) ([71bd740](https://github.com/blacha/cogeotiff/commit/71bd7409706e4a82e6a29b2a3fc0e8b25221e9fc))
35
+
36
+
37
+
38
+
39
+
40
+ ## [6.1.1](https://github.com/blacha/cogeotiff/compare/v6.1.0...v6.1.1) (2022-01-26)
41
+
42
+
43
+ ### Bug Fixes
44
+
45
+ * **core:** tag data count should be a uint32 for tiff not uint16 ([5e0f66c](https://github.com/blacha/cogeotiff/commit/5e0f66c213db265d83d976424b6a443be6afbe73))
46
+
47
+
48
+
49
+
50
+
6
51
  # [6.1.0](https://github.com/blacha/cogeotiff/compare/v6.0.2...v6.1.0) (2021-09-30)
7
52
 
8
53
 
@@ -1,9 +1,12 @@
1
+ import { SourceMemory } from '@chunkd/core';
2
+ import { readFile } from 'fs/promises';
1
3
  import { CogTiff } from '../cog.tiff.js';
2
- import { SourceFile } from '@chunkd/source-file';
3
4
  /** Read a tile from every image inside of a tiff 300 tiles read */
4
5
  async function main() {
5
- for (let i = 0; i < 50; i++) {
6
- const tiff = new CogTiff(new SourceFile(process.argv[process.argv.length - 1]));
6
+ const buf = await readFile(process.argv[process.argv.length - 1]);
7
+ const source = new SourceMemory('buf', buf);
8
+ for (let i = 0; i < 5000; i++) {
9
+ const tiff = new CogTiff(source);
7
10
  await tiff.init();
8
11
  // 6 images
9
12
  for (const img of tiff.images)
@@ -12,4 +15,4 @@ async function main() {
12
15
  }
13
16
  }
14
17
  main();
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLnJlYWQuYmVuY2htYXJrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fYmVuY2htYXJrX18vY29nLnJlYWQuYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsbUVBQW1FO0FBQ25FLEtBQUssVUFBVSxJQUFJO0lBQ2YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVsQixXQUFXO1FBQ1gsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDdEI7QUFDTCxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2dUaWZmIH0gZnJvbSAnLi4vY29nLnRpZmYuanMnO1xuaW1wb3J0IHsgU291cmNlRmlsZSB9IGZyb20gJ0BjaHVua2Qvc291cmNlLWZpbGUnO1xuXG4vKiogUmVhZCBhIHRpbGUgZnJvbSBldmVyeSBpbWFnZSBpbnNpZGUgb2YgYSB0aWZmIDMwMCB0aWxlcyByZWFkICovXG5hc3luYyBmdW5jdGlvbiBtYWluKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7IGkrKykge1xuICAgICAgICBjb25zdCB0aWZmID0gbmV3IENvZ1RpZmYobmV3IFNvdXJjZUZpbGUocHJvY2Vzcy5hcmd2W3Byb2Nlc3MuYXJndi5sZW5ndGggLSAxXSkpO1xuICAgICAgICBhd2FpdCB0aWZmLmluaXQoKTtcblxuICAgICAgICAvLyA2IGltYWdlc1xuICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiB0aWZmLmltYWdlcykgYXdhaXQgaW1nLmdldFRpbGUoMCwgMCk7XG4gICAgICAgIGF3YWl0IHRpZmYuY2xvc2UoKTtcbiAgICB9XG59XG5cbm1haW4oKTtcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLnJlYWQuYmVuY2htYXJrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fYmVuY2htYXJrX18vY29nLnJlYWQuYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsbUVBQW1FO0FBQ25FLEtBQUssVUFBVSxJQUFJO0lBQ2YsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWxCLFdBQVc7UUFDWCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUN0QjtBQUNMLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZU1lbW9yeSB9IGZyb20gJ0BjaHVua2QvY29yZSc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCB7IENvZ1RpZmYgfSBmcm9tICcuLi9jb2cudGlmZi5qcyc7XG5cbi8qKiBSZWFkIGEgdGlsZSBmcm9tIGV2ZXJ5IGltYWdlIGluc2lkZSBvZiBhIHRpZmYgMzAwIHRpbGVzIHJlYWQgKi9cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYnVmID0gYXdhaXQgcmVhZEZpbGUocHJvY2Vzcy5hcmd2W3Byb2Nlc3MuYXJndi5sZW5ndGggLSAxXSk7XG4gICAgY29uc3Qgc291cmNlID0gbmV3IFNvdXJjZU1lbW9yeSgnYnVmJywgYnVmKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDVfMDAwOyBpKyspIHtcbiAgICAgICAgY29uc3QgdGlmZiA9IG5ldyBDb2dUaWZmKHNvdXJjZSk7XG4gICAgICAgIGF3YWl0IHRpZmYuaW5pdCgpO1xuXG4gICAgICAgIC8vIDYgaW1hZ2VzXG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIHRpZmYuaW1hZ2VzKSBhd2FpdCBpbWcuZ2V0VGlsZSgwLCAwKTtcbiAgICAgICAgYXdhaXQgdGlmZi5jbG9zZSgpO1xuICAgIH1cbn1cblxubWFpbigpO1xuIl19
@@ -5,7 +5,7 @@ import 'source-map-support/register.js';
5
5
  import { TestFileChunkSource } from '@chunkd/core/build/__test__/chunk.source.fake.js';
6
6
  import { CogTiff } from '../cog.tiff.js';
7
7
  import { TiffMimeType } from '../const/index.js';
8
- import { SourceMemory } from '@chunkd/core';
8
+ import { ByteSize, SourceMemory } from '@chunkd/core';
9
9
  import { fileURLToPath } from 'url';
10
10
  const __dirname = fileURLToPath(import.meta.url);
11
11
  // 900913 properties.
@@ -60,6 +60,14 @@ o.spec('CogTiled', () => {
60
60
  o(firstImage.stripCount).equals(0);
61
61
  o(firstImage.isTiled()).equals(true);
62
62
  });
63
+ o('should hasTile for every tile', async () => {
64
+ const [firstImage] = cog.images;
65
+ for (let x = 0; x < firstImage.tileCount.x; x++) {
66
+ for (let y = 0; y < firstImage.tileCount.y; y++) {
67
+ o(await firstImage.hasTile(x, y)).equals(true);
68
+ }
69
+ }
70
+ });
63
71
  });
64
72
  o.spec('Cog.Big', () => {
65
73
  o('should support reading from memory', async () => {
@@ -108,6 +116,8 @@ o.spec('Cog.Sparse', () => {
108
116
  o(tileCount).deepEquals({ x: 2, y: 2 });
109
117
  for (let x = 0; x < tileCount.x; x++) {
110
118
  for (let y = 0; y < tileCount.y; y++) {
119
+ const hasTile = await img.hasTile(x, y);
120
+ o(hasTile).equals(false);
111
121
  const tileXy = await img.getTile(x, y);
112
122
  const tileXyz = await cog.getTile(x, y, z);
113
123
  o(tileXy).equals(null)(`Tile x:${x} y:${y} should be empty`);
@@ -115,6 +125,20 @@ o.spec('Cog.Sparse', () => {
115
125
  }
116
126
  }
117
127
  });
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([
134
+ ['GDAL_STRUCTURAL_METADATA_SIZE', '000140 bytes'],
135
+ ['LAYOUT', 'IFDS_BEFORE_DATA'],
136
+ ['BLOCK_ORDER', 'ROW_MAJOR'],
137
+ ['BLOCK_LEADER', 'SIZE_AS_UINT4'],
138
+ ['BLOCK_TRAILER', 'LAST_4_BYTES_REPEATED'],
139
+ ['KNOWN_INCOMPATIBLE_EDITION', 'NO'],
140
+ ]);
141
+ });
118
142
  });
119
143
  o.spec('CogStrip', () => {
120
144
  const cogSourceFile = new TestFileChunkSource(path.join(__dirname, '../../../data/rgba8_strip.tiff'));
@@ -152,4 +176,4 @@ o.spec('CogStrip', () => {
152
176
  o(stripB === null || stripB === void 0 ? void 0 : stripB.bytes.byteLength).equals(152);
153
177
  });
154
178
  });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLmltYWdlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0X18vY29nLmltYWdlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDO0FBQ3RCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBDLE9BQU8sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFcEMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakQscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNwQixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBRWxELFNBQVMsYUFBYSxDQUFDLElBQVk7SUFDL0IsT0FBTyxpQkFBaUIsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ3pDLENBQUM7QUFFRCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7SUFDcEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7SUFDdEcsTUFB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QU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbyBmcm9tICdvc3BlYyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5cbmltcG9ydCAnc291cmNlLW1hcC1zdXBwb3J0L3JlZ2lzdGVyLmpzJztcblxuaW1wb3J0IHsgVGVzdEZpbGVDaHVua1NvdXJjZSB9IGZyb20gJ0BjaHVua2QvY29yZS9idWlsZC9fX3Rlc3RfXy9jaHVuay5zb3VyY2UuZmFrZS5qcyc7XG5pbXBvcnQgeyBDb2dUaWZmIH0gZnJvbSAnLi4vY29nLnRpZmYuanMnO1xuaW1wb3J0IHsgVGlmZk1pbWVUeXBlIH0gZnJvbSAnLi4vY29uc3QvaW5kZXguanMnO1xuaW1wb3J0IHsgU291cmNlTWVtb3J5IH0gZnJvbSAnQGNodW5rZC9jb3JlJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCk7XG4vLyA5MDA5MTMgcHJvcGVydGllcy5cbmNvbnN0IEEgPSA2Mzc4MTM3LjA7XG5jb25zdCBJbml0aWFsUmVzb2x1dGlvbiA9ICgyICogTWF0aC5QSSAqIEEpIC8gMjU2O1xuXG5mdW5jdGlvbiBnZXRSZXNvbHV0aW9uKHpvb206IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIEluaXRpYWxSZXNvbHV0aW9uIC8gMiAqKiB6b29tO1xufVxuXG5vLnNwZWMoJ0NvZ1RpbGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvZ1NvdXJjZUZpbGUgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9yZ2JhOF90aWxlZC50aWZmJykpO1xuICAgIGNvbnN0IGNvZyA9IG5ldyBDb2dUaWZmKGNvZ1NvdXJjZUZpbGUpO1xuXG4gICAgby5iZWZvcmVFYWNoKCgpID0+IGNvZy5pbml0KCkpO1xuXG4gICAgbygnc2hvdWxkIG1hdGNoIHJlc29sdXRpb25zIHRvIHdlYiBtZXJjYXRvciB6b29tIGxldmVscycsICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICAgICAgICBvKGNvZy5nZXRJbWFnZUJ5UmVzb2x1dGlvbihnZXRSZXNvbHV0aW9uKGkpKS5pZCkuZXF1YWxzKDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2VCeVJlc29sdXRpb24oZ2V0UmVzb2x1dGlvbigxNCkpLmlkKS5lcXVhbHMoMyk7XG4gICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oMTUpKS5pZCkuZXF1YWxzKDIpO1xuICAgICAgICBvKGNvZy5nZXRJbWFnZUJ5UmVzb2x1dGlvbihnZXRSZXNvbHV0aW9uKDE2KSkuaWQpLmVxdWFscygxKTtcbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2VCeVJlc29sdXRpb24oZ2V0UmVzb2x1dGlvbigxNykpLmlkKS5lcXVhbHMoMCk7XG4gICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oMTgpKS5pZCkuZXF1YWxzKDApO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOTsgaSA8IDMyOyBpKyspIHtcbiAgICAgICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oaSkpLmlkKS5lcXVhbHMoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgb3JpZ2luIGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0ub3JpZ2luO1xuICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiBjb2cuaW1hZ2VzKSB7XG4gICAgICAgICAgICBvKGltZy5vcmlnaW4pLmRlZXBFcXVhbHMoYmFzZU9yaWdpbik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgYm91bmRpbmcgYm94IGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0uYmJveDtcbiAgICAgICAgZm9yIChjb25zdCBpbWcgb2YgY29nLmltYWdlcykge1xuICAgICAgICAgICAgbyhpbWcuYmJveCkuZGVlcEVxdWFscyhiYXNlT3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGJlIGdlb2xvY2F0ZWQnLCAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIGNvZy5pbWFnZXMpIG8oaW1nLmlzR2VvTG9jYXRlZCkuZXF1YWxzKHRydWUpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHNjYWxlIGltYWdlIHJlc29sdXRpb24gZm9yIGFsbCBpbWFnZXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtyZXNYLCByZXNZLCByZXNaXSA9IGNvZy5pbWFnZXNbMF0ucmVzb2x1dGlvbjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2cuaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbWcgPSBjb2cuaW1hZ2VzW2ldO1xuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSAyICoqIGk7IC8vIFRoaXMgdGlmZiBpcyBzY2FsZWQgYXQgYSBmYWN0b3Igb2YgdHdvIHBlciB6b29tIGxldmVsXG4gICAgICAgICAgICBvKGltZy5yZXNvbHV0aW9uKS5kZWVwRXF1YWxzKFtyZXNYICogc2NhbGUsIHJlc1kgKiBzY2FsZSwgcmVzWl0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgaGF2ZSB0aWxlIGluZm9ybWF0aW9uJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBbZmlyc3RJbWFnZV0gPSBjb2cuaW1hZ2VzO1xuICAgICAgICBvKGZpcnN0SW1hZ2Uuc3RyaXBDb3VudCkuZXF1YWxzKDApO1xuICAgICAgICBvKGZpcnN0SW1hZ2UuaXNUaWxlZCgpKS5lcXVhbHModHJ1ZSk7XG4gICAgfSk7XG59KTtcblxuby5zcGVjKCdDb2cuQmlnJywgKCkgPT4ge1xuICAgIG8oJ3Nob3VsZCBzdXBwb3J0IHJlYWRpbmcgZnJvbSBtZW1vcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZ1bGxTb3VyY2UgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9zcGFyc2UudGlmZicpKTtcbiAgICAgICAgZnVsbFNvdXJjZS5jaHVua1NpemUgPSAyNzkwMjtcbiAgICAgICAgYXdhaXQgZnVsbFNvdXJjZS5sb2FkQnl0ZXMoMCwgMjc5MDIpO1xuICAgICAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihmdWxsU291cmNlKTtcbiAgICAgICAgYXdhaXQgY29nLmluaXQoKTtcblxuICAgICAgICBvKGZ1bGxTb3VyY2UuY2h1bmtTaXplKS5lcXVhbHMoMjc5MDIpO1xuICAgICAgICBvKGZ1bGxTb3VyY2UuY2h1bmtzLnNpemUpLmVxdWFscygxKTtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygwKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGltZyA9IGNvZy5nZXRJbWFnZSg0KTtcbiAgICAgICAgbyhpbWcudGlsZUNvdW50KS5kZWVwRXF1YWxzKHsgeDogMiwgeTogMiB9KTtcbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCByZWFkIHVzaW5nIGEgbWVtb3J5IHNvdXJjZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnl0ZXMgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9zcGFyc2UudGlmZicpKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbmV3IFNvdXJjZU1lbW9yeSgnU3BhcnNlLnRpZmYnLCBieXRlcy5idWZmZXIpO1xuICAgICAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihzb3VyY2UpO1xuICAgICAgICBhd2FpdCBjb2cuaW5pdCgpO1xuXG4gICAgICAgIG8oc291cmNlLmNodW5rU2l6ZSkuZXF1YWxzKDI3OTAyKTtcbiAgICAgICAgbyhzb3VyY2UuY2h1bmtzLnNpemUpLmVxdWFscygxKTtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygwKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGltZyA9IGNvZy5nZXRJbWFnZSg0KTtcbiAgICAgICAgbyhpbWcudGlsZUNvdW50KS5kZWVwRXF1YWxzKHsgeDogMiwgeTogMiB9KTtcbiAgICB9KTtcbn0pO1xuXG5vLnNwZWMoJ0NvZy5TcGFyc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgY29nU291cmNlRmlsZSA9IG5ldyBUZXN0RmlsZUNodW5rU291cmNlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9kYXRhL3NwYXJzZS50aWZmJykpO1xuICAgIGNvbnN0IGNvZyA9IG5ldyBDb2dUaWZmKGNvZ1NvdXJjZUZpbGUpO1xuICAgIG8uYmVmb3JlRWFjaCgoKSA9PiBjb2cuaW5pdCh0cnVlKSk7XG5cbiAgICBvKCdzaG91bGQgcmVhZCBtZXRhZGF0YScsICgpID0+IHtcbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2UoMCkuZXBzZykuZXF1YWxzKDIxOTMpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGJlIGdlb2xvY2F0ZWQnLCAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIGNvZy5pbWFnZXMpIG8oaW1nLmlzR2VvTG9jYXRlZCkuZXF1YWxzKHRydWUpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHN1cHBvcnQgc3BhcnNlIGNvZ3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHogPSA0O1xuICAgICAgICBjb25zdCBpbWcgPSBjb2cuZ2V0SW1hZ2Uoeik7XG5cbiAgICAgICAgY29uc3QgeyB0aWxlQ291bnQgfSA9IGltZztcbiAgICAgICAgbyh0aWxlQ291bnQpLmRlZXBFcXVhbHMoeyB4OiAyLCB5OiAyIH0pO1xuXG4gICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgdGlsZUNvdW50Lng7IHgrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0aWxlQ291bnQueTsgeSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGlsZVh5ID0gYXdhaXQgaW1nLmdldFRpbGUoeCwgeSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGlsZVh5eiA9IGF3YWl0IGNvZy5nZXRUaWxlKHgsIHksIHopO1xuICAgICAgICAgICAgICAgIG8odGlsZVh5KS5lcXVhbHMobnVsbCkoYFRpbGUgeDoke3h9IHk6JHt5fSBzaG91bGQgYmUgZW1wdHlgKTtcbiAgICAgICAgICAgICAgICBvKHRpbGVYeXopLmVxdWFscyhudWxsKShgVGlsZSB4OiR7eH0geToke3l9IHo6ICR7en0gc2hvdWxkIGJlIGVtcHR5YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuXG5vLnNwZWMoJ0NvZ1N0cmlwJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvZ1NvdXJjZUZpbGUgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9yZ2JhOF9zdHJpcC50aWZmJykpO1xuICAgIGNvbnN0IGNvZyA9IG5ldyBDb2dUaWZmKGNvZ1NvdXJjZUZpbGUpO1xuXG4gICAgby5iZWZvcmVFYWNoKCgpID0+IGNvZy5pbml0KCkpO1xuXG4gICAgbygnc2hvdWxkIGdldCBvcmlnaW4gZnJvbSBhbGwgaW1hZ2VzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBiYXNlT3JpZ2luID0gY29nLmltYWdlc1swXS5vcmlnaW47XG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIGNvZy5pbWFnZXMpIHtcbiAgICAgICAgICAgIG8oaW1nLm9yaWdpbikuZGVlcEVxdWFscyhiYXNlT3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGdldCBib3VuZGluZyBib3ggZnJvbSBhbGwgaW1hZ2VzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBiYXNlT3JpZ2luID0gY29nLmltYWdlc1swXS5iYm94O1xuICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiBjb2cuaW1hZ2VzKSB7XG4gICAgICAgICAgICBvKGltZy5iYm94KS5kZWVwRXF1YWxzKGJhc2VPcmlnaW4pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgc2NhbGUgaW1hZ2UgcmVzb2x1dGlvbiBmb3IgYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgW3Jlc1gsIHJlc1ksIHJlc1pdID0gY29nLmltYWdlc1swXS5yZXNvbHV0aW9uO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvZy5pbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGltZyA9IGNvZy5pbWFnZXNbaV07XG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IDIgKiogaTsgLy8gVGhpcyB0aWZmIGlzIHNjYWxlZCBhdCBhIGZhY3RvciBvZiB0d28gcGVyIHpvb20gbGV2ZWxcbiAgICAgICAgICAgIG8oaW1nLnJlc29sdXRpb24pLmRlZXBFcXVhbHMoW3Jlc1ggKiBzY2FsZSwgcmVzWSAqIHNjYWxlLCByZXNaXSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBoYXZlIHN0cmlwIGluZm9ybWF0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBbZmlyc3RJbWFnZV0gPSBjb2cuaW1hZ2VzO1xuICAgICAgICBvKGZpcnN0SW1hZ2UuaXNUaWxlZCgpKS5lcXVhbHMoZmFsc2UpO1xuICAgICAgICBvKGZpcnN0SW1hZ2Uuc3RyaXBDb3VudCkuZXF1YWxzKDIpO1xuXG4gICAgICAgIGNvbnN0IHN0cmlwQSA9IGF3YWl0IGZpcnN0SW1hZ2UuZ2V0U3RyaXAoMCk7XG4gICAgICAgIG8oc3RyaXBBPy5taW1lVHlwZSkuZXF1YWxzKFRpZmZNaW1lVHlwZS5XRUJQKTtcbiAgICAgICAgbyhzdHJpcEE/LmJ5dGVzLmJ5dGVMZW5ndGgpLmVxdWFscygxNTIpO1xuXG4gICAgICAgIGNvbnN0IHN0cmlwQiA9IGF3YWl0IGZpcnN0SW1hZ2UuZ2V0U3RyaXAoMSk7XG4gICAgICAgIG8oc3RyaXBCPy5taW1lVHlwZSkuZXF1YWxzKFRpZmZNaW1lVHlwZS5XRUJQKTtcbiAgICAgICAgbyhzdHJpcEI/LmJ5dGVzLmJ5dGVMZW5ndGgpLmVxdWFscygxNTIpO1xuICAgIH0pO1xufSk7XG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLmltYWdlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0X18vY29nLmltYWdlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDO0FBQ3RCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBDLE9BQU8sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXBDLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELHFCQUFxQjtBQUNyQixNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDcEIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUVsRCxTQUFTLGFBQWEsQ0FBQyxJQUFZO0lBQy9CLE9BQU8saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUN6QyxDQUFDO0FBRUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQyxDQUFD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QUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvIGZyb20gJ29zcGVjJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcblxuaW1wb3J0ICdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXIuanMnO1xuXG5pbXBvcnQgeyBUZXN0RmlsZUNodW5rU291cmNlIH0gZnJvbSAnQGNodW5rZC9jb3JlL2J1aWxkL19fdGVzdF9fL2NodW5rLnNvdXJjZS5mYWtlLmpzJztcbmltcG9ydCB7IENvZ1RpZmYgfSBmcm9tICcuLi9jb2cudGlmZi5qcyc7XG5pbXBvcnQgeyBUaWZmTWltZVR5cGUgfSBmcm9tICcuLi9jb25zdC9pbmRleC5qcyc7XG5pbXBvcnQgeyBCeXRlU2l6ZSwgU291cmNlTWVtb3J5IH0gZnJvbSAnQGNodW5rZC9jb3JlJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCk7XG4vLyA5MDA5MTMgcHJvcGVydGllcy5cbmNvbnN0IEEgPSA2Mzc4MTM3LjA7XG5jb25zdCBJbml0aWFsUmVzb2x1dGlvbiA9ICgyICogTWF0aC5QSSAqIEEpIC8gMjU2O1xuXG5mdW5jdGlvbiBnZXRSZXNvbHV0aW9uKHpvb206IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIEluaXRpYWxSZXNvbHV0aW9uIC8gMiAqKiB6b29tO1xufVxuXG5vLnNwZWMoJ0NvZ1RpbGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvZ1NvdXJjZUZpbGUgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9yZ2JhOF90aWxlZC50aWZmJykpO1xuICAgIGNvbnN0IGNvZyA9IG5ldyBDb2dUaWZmKGNvZ1NvdXJjZUZpbGUpO1xuXG4gICAgby5iZWZvcmVFYWNoKCgpID0+IGNvZy5pbml0KCkpO1xuXG4gICAgbygnc2hvdWxkIG1hdGNoIHJlc29sdXRpb25zIHRvIHdlYiBtZXJjYXRvciB6b29tIGxldmVscycsICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICAgICAgICBvKGNvZy5nZXRJbWFnZUJ5UmVzb2x1dGlvbihnZXRSZXNvbHV0aW9uKGkpKS5pZCkuZXF1YWxzKDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2VCeVJlc29sdXRpb24oZ2V0UmVzb2x1dGlvbigxNCkpLmlkKS5lcXVhbHMoMyk7XG4gICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oMTUpKS5pZCkuZXF1YWxzKDIpO1xuICAgICAgICBvKGNvZy5nZXRJbWFnZUJ5UmVzb2x1dGlvbihnZXRSZXNvbHV0aW9uKDE2KSkuaWQpLmVxdWFscygxKTtcbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2VCeVJlc29sdXRpb24oZ2V0UmVzb2x1dGlvbigxNykpLmlkKS5lcXVhbHMoMCk7XG4gICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oMTgpKS5pZCkuZXF1YWxzKDApO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOTsgaSA8IDMyOyBpKyspIHtcbiAgICAgICAgICAgIG8oY29nLmdldEltYWdlQnlSZXNvbHV0aW9uKGdldFJlc29sdXRpb24oaSkpLmlkKS5lcXVhbHMoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgb3JpZ2luIGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0ub3JpZ2luO1xuICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiBjb2cuaW1hZ2VzKSB7XG4gICAgICAgICAgICBvKGltZy5vcmlnaW4pLmRlZXBFcXVhbHMoYmFzZU9yaWdpbik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgYm91bmRpbmcgYm94IGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0uYmJveDtcbiAgICAgICAgZm9yIChjb25zdCBpbWcgb2YgY29nLmltYWdlcykge1xuICAgICAgICAgICAgbyhpbWcuYmJveCkuZGVlcEVxdWFscyhiYXNlT3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGJlIGdlb2xvY2F0ZWQnLCAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIGNvZy5pbWFnZXMpIG8oaW1nLmlzR2VvTG9jYXRlZCkuZXF1YWxzKHRydWUpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHNjYWxlIGltYWdlIHJlc29sdXRpb24gZm9yIGFsbCBpbWFnZXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtyZXNYLCByZXNZLCByZXNaXSA9IGNvZy5pbWFnZXNbMF0ucmVzb2x1dGlvbjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2cuaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbWcgPSBjb2cuaW1hZ2VzW2ldO1xuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSAyICoqIGk7IC8vIFRoaXMgdGlmZiBpcyBzY2FsZWQgYXQgYSBmYWN0b3Igb2YgdHdvIHBlciB6b29tIGxldmVsXG4gICAgICAgICAgICBvKGltZy5yZXNvbHV0aW9uKS5kZWVwRXF1YWxzKFtyZXNYICogc2NhbGUsIHJlc1kgKiBzY2FsZSwgcmVzWl0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgaGF2ZSB0aWxlIGluZm9ybWF0aW9uJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBbZmlyc3RJbWFnZV0gPSBjb2cuaW1hZ2VzO1xuICAgICAgICBvKGZpcnN0SW1hZ2Uuc3RyaXBDb3VudCkuZXF1YWxzKDApO1xuICAgICAgICBvKGZpcnN0SW1hZ2UuaXNUaWxlZCgpKS5lcXVhbHModHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgaGFzVGlsZSBmb3IgZXZlcnkgdGlsZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcblxuICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IGZpcnN0SW1hZ2UudGlsZUNvdW50Lng7IHgrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBmaXJzdEltYWdlLnRpbGVDb3VudC55OyB5KyspIHtcbiAgICAgICAgICAgICAgICBvKGF3YWl0IGZpcnN0SW1hZ2UuaGFzVGlsZSh4LCB5KSkuZXF1YWxzKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59KTtcblxuby5zcGVjKCdDb2cuQmlnJywgKCkgPT4ge1xuICAgIG8oJ3Nob3VsZCBzdXBwb3J0IHJlYWRpbmcgZnJvbSBtZW1vcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZ1bGxTb3VyY2UgPSBuZXcgVGVzdEZpbGVDaHVua1NvdXJjZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9zcGFyc2UudGlmZicpKTtcbiAgICAgICAgZnVsbFNvdXJjZS5jaHVua1NpemUgPSAyNzkwMjtcbiAgICAgICAgYXdhaXQgZnVsbFNvdXJjZS5sb2FkQnl0ZXMoMCwgMjc5MDIpO1xuICAgICAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihmdWxsU291cmNlKTtcbiAgICAgICAgYXdhaXQgY29nLmluaXQoKTtcblxuICAgICAgICBvKGZ1bGxTb3VyY2UuY2h1bmtTaXplKS5lcXVhbHMoMjc5MDIpO1xuICAgICAgICBvKGZ1bGxTb3VyY2UuY2h1bmtzLnNpemUpLmVxdWFscygxKTtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygwKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGltZyA9IGNvZy5nZXRJbWFnZSg0KTtcbiAgICAgICAgbyhpbWcudGlsZUNvdW50KS5kZWVwRXF1YWxzKHsgeDogMiwgeTogMiB9KTtcbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCByZWFkIHVzaW5nIGEgbWVtb3J5IHNvdXJjZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnl0ZXMgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vZGF0YS9zcGFyc2UudGlmZicpKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbmV3IFNvdXJjZU1lbW9yeSgnU3BhcnNlLnRpZmYnLCBieXRlcy5idWZmZXIpO1xuICAgICAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihzb3VyY2UpO1xuICAgICAgICBhd2FpdCBjb2cuaW5pdCgpO1xuXG4gICAgICAgIG8oc291cmNlLmNodW5rU2l6ZSkuZXF1YWxzKDI3OTAyKTtcbiAgICAgICAgbyhzb3VyY2UuY2h1bmtzLnNpemUpLmVxdWFscygxKTtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygwKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGltZyA9IGNvZy5nZXRJbWFnZSg0KTtcbiAgICAgICAgbyhpbWcudGlsZUNvdW50KS5kZWVwRXF1YWxzKHsgeDogMiwgeTogMiB9KTtcbiAgICB9KTtcbn0pO1xuXG5vLnNwZWMoJ0NvZy5TcGFyc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgY29nU291cmNlRmlsZSA9IG5ldyBUZXN0RmlsZUNodW5rU291cmNlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9kYXRhL3NwYXJzZS50aWZmJykpO1xuICAgIGNvbnN0IGNvZyA9IG5ldyBDb2dUaWZmKGNvZ1NvdXJjZUZpbGUpO1xuICAgIG8uYmVmb3JlRWFjaCgoKSA9PiBjb2cuaW5pdCh0cnVlKSk7XG5cbiAgICBvKCdzaG91bGQgcmVhZCBtZXRhZGF0YScsICgpID0+IHtcbiAgICAgICAgbyhjb2cuZ2V0SW1hZ2UoMCkuZXBzZykuZXF1YWxzKDIxOTMpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGJlIGdlb2xvY2F0ZWQnLCAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaW1nIG9mIGNvZy5pbWFnZXMpIG8oaW1nLmlzR2VvTG9jYXRlZCkuZXF1YWxzKHRydWUpO1xuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHN1cHBvcnQgc3BhcnNlIGNvZ3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHogPSA0O1xuICAgICAgICBjb25zdCBpbWcgPSBjb2cuZ2V0SW1hZ2Uoeik7XG5cbiAgICAgICAgY29uc3QgeyB0aWxlQ291bnQgfSA9IGltZztcbiAgICAgICAgbyh0aWxlQ291bnQpLmRlZXBFcXVhbHMoeyB4OiAyLCB5OiAyIH0pO1xuXG4gICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgdGlsZUNvdW50Lng7IHgrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0aWxlQ291bnQueTsgeSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzVGlsZSA9IGF3YWl0IGltZy5oYXNUaWxlKHgsIHkpO1xuICAgICAgICAgICAgICAgIG8oaGFzVGlsZSkuZXF1YWxzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aWxlWHkgPSBhd2FpdCBpbWcuZ2V0VGlsZSh4LCB5KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aWxlWHl6ID0gYXdhaXQgY29nLmdldFRpbGUoeCwgeSwgeik7XG4gICAgICAgICAgICAgICAgbyh0aWxlWHkpLmVxdWFscyhudWxsKShgVGlsZSB4OiR7eH0geToke3l9IHNob3VsZCBiZSBlbXB0eWApO1xuICAgICAgICAgICAgICAgIG8odGlsZVh5eikuZXF1YWxzKG51bGwpKGBUaWxlIHg6JHt4fSB5OiR7eX0gejogJHt6fSBzaG91bGQgYmUgZW1wdHlgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIGhhdmUgZ2hvc3Qgb3B0aW9ucycsICgpID0+IHtcbiAgICAgICAgbyhjb2cub3B0aW9ucy5vcHRpb25zLnNpemUpLmVxdWFscyg2KTtcbiAgICAgICAgbyhjb2cub3B0aW9ucy50aWxlTGVhZGVyQnl0ZVNpemUpLmVxdWFscyhCeXRlU2l6ZS5VSW50MzIpO1xuICAgICAgICBvKGNvZy5vcHRpb25zLmlzQ29nT3B0aW1pemVkKS5lcXVhbHModHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgZW50cmllcyA9IFsuLi5jb2cub3B0aW9ucy5vcHRpb25zLmVudHJpZXMoKV07XG4gICAgICAgIG8oZW50cmllcykuZGVlcEVxdWFscyhbXG4gICAgICAgICAgICBbJ0dEQUxfU1RSVUNUVVJBTF9NRVRBREFUQV9TSVpFJywgJzAwMDE0MCBieXRlcyddLFxuICAgICAgICAgICAgWydMQVlPVVQnLCAnSUZEU19CRUZPUkVfREFUQSddLFxuICAgICAgICAgICAgWydCTE9DS19PUkRFUicsICdST1dfTUFKT1InXSxcbiAgICAgICAgICAgIFsnQkxPQ0tfTEVBREVSJywgJ1NJWkVfQVNfVUlOVDQnXSxcbiAgICAgICAgICAgIFsnQkxPQ0tfVFJBSUxFUicsICdMQVNUXzRfQllURVNfUkVQRUFURUQnXSxcbiAgICAgICAgICAgIFsnS05PV05fSU5DT01QQVRJQkxFX0VESVRJT04nLCAnTk8nXSxcbiAgICAgICAgXSk7XG4gICAgfSk7XG59KTtcblxuby5zcGVjKCdDb2dTdHJpcCcsICgpID0+IHtcbiAgICBjb25zdCBjb2dTb3VyY2VGaWxlID0gbmV3IFRlc3RGaWxlQ2h1bmtTb3VyY2UocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLy4uL2RhdGEvcmdiYThfc3RyaXAudGlmZicpKTtcbiAgICBjb25zdCBjb2cgPSBuZXcgQ29nVGlmZihjb2dTb3VyY2VGaWxlKTtcblxuICAgIG8uYmVmb3JlRWFjaCgoKSA9PiBjb2cuaW5pdCgpKTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgb3JpZ2luIGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0ub3JpZ2luO1xuICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiBjb2cuaW1hZ2VzKSB7XG4gICAgICAgICAgICBvKGltZy5vcmlnaW4pLmRlZXBFcXVhbHMoYmFzZU9yaWdpbik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIG8oJ3Nob3VsZCBnZXQgYm91bmRpbmcgYm94IGZyb20gYWxsIGltYWdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZU9yaWdpbiA9IGNvZy5pbWFnZXNbMF0uYmJveDtcbiAgICAgICAgZm9yIChjb25zdCBpbWcgb2YgY29nLmltYWdlcykge1xuICAgICAgICAgICAgbyhpbWcuYmJveCkuZGVlcEVxdWFscyhiYXNlT3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgbygnc2hvdWxkIHNjYWxlIGltYWdlIHJlc29sdXRpb24gZm9yIGFsbCBpbWFnZXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtyZXNYLCByZXNZLCByZXNaXSA9IGNvZy5pbWFnZXNbMF0ucmVzb2x1dGlvbjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2cuaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbWcgPSBjb2cuaW1hZ2VzW2ldO1xuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSAyICoqIGk7IC8vIFRoaXMgdGlmZiBpcyBzY2FsZWQgYXQgYSBmYWN0b3Igb2YgdHdvIHBlciB6b29tIGxldmVsXG4gICAgICAgICAgICBvKGltZy5yZXNvbHV0aW9uKS5kZWVwRXF1YWxzKFtyZXNYICogc2NhbGUsIHJlc1kgKiBzY2FsZSwgcmVzWl0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBvKCdzaG91bGQgaGF2ZSBzdHJpcCBpbmZvcm1hdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgW2ZpcnN0SW1hZ2VdID0gY29nLmltYWdlcztcbiAgICAgICAgbyhmaXJzdEltYWdlLmlzVGlsZWQoKSkuZXF1YWxzKGZhbHNlKTtcbiAgICAgICAgbyhmaXJzdEltYWdlLnN0cmlwQ291bnQpLmVxdWFscygyKTtcblxuICAgICAgICBjb25zdCBzdHJpcEEgPSBhd2FpdCBmaXJzdEltYWdlLmdldFN0cmlwKDApO1xuICAgICAgICBvKHN0cmlwQT8ubWltZVR5cGUpLmVxdWFscyhUaWZmTWltZVR5cGUuV0VCUCk7XG4gICAgICAgIG8oc3RyaXBBPy5ieXRlcy5ieXRlTGVuZ3RoKS5lcXVhbHMoMTUyKTtcblxuICAgICAgICBjb25zdCBzdHJpcEIgPSBhd2FpdCBmaXJzdEltYWdlLmdldFN0cmlwKDEpO1xuICAgICAgICBvKHN0cmlwQj8ubWltZVR5cGUpLmVxdWFscyhUaWZmTWltZVR5cGUuV0VCUCk7XG4gICAgICAgIG8oc3RyaXBCPy5ieXRlcy5ieXRlTGVuZ3RoKS5lcXVhbHMoMTUyKTtcbiAgICB9KTtcbn0pO1xuIl19
@@ -1,4 +1,4 @@
1
- import { ChunkSource, LogType } from '@chunkd/core';
1
+ import { ChunkSource } from '@chunkd/core';
2
2
  import { CogTiffImage } from './cog.tiff.image.js';
3
3
  import { TiffVersion } from './const/tiff.version.js';
4
4
  import { CogTifGhostOptions } from './read/tiff.gdal.js';
@@ -21,7 +21,7 @@ export declare class CogTiff {
21
21
  *
22
22
  * @param loadGeoKeys Whether to also initialize the GeoKeyDirectory
23
23
  */
24
- init(loadGeoKeys?: boolean, logger?: LogType): Promise<CogTiff>;
24
+ init(loadGeoKeys?: boolean): Promise<CogTiff>;
25
25
  private doInit;
26
26
  private fetchIfd;
27
27
  getImage(z: number): CogTiffImage;
@@ -1 +1 @@
1
- {"version":3,"file":"cog.tiff.d.ts","sourceRoot":"","sources":["../src/cog.tiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAmC,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK3F,qBAAa,OAAO;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,cAAoB;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAM;IAC5B,OAAO,qBAA4B;IAEnC,OAAO,CAAC,MAAM,CAAkB;IAChC,SAAS,EAAE,aAAa,CAAiB;gBAE7B,MAAM,EAAE,WAAW;IAK/B,sCAAsC;IACtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,6BAA6B;IAC7B,aAAa,UAAS;IAEtB,YAAY,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,WAAW,UAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAM/C,MAAM;YAWN,QAAQ;IAkCtB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY;IAIjC;;;;OAIG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAoBtD;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;YAQ7F,UAAU;YA0BV,OAAO;IAgDrB,gDAAgD;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"cog.tiff.d.ts","sourceRoot":"","sources":["../src/cog.tiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAmC,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK3F,qBAAa,OAAO;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,cAAoB;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAM;IAC5B,OAAO,qBAA4B;IAEnC,OAAO,CAAC,MAAM,CAAkB;IAChC,SAAS,EAAE,aAAa,CAAiB;gBAE7B,MAAM,EAAE,WAAW;IAK/B,sCAAsC;IACtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,6BAA6B;IAC7B,aAAa,UAAS;IAEtB,YAAY,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;YAM7B,MAAM;YAWN,QAAQ;IA4BtB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY;IAIjC;;;;OAIG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAoBtD;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;YAQ7F,UAAU;YAOV,OAAO;IAsBrB,gDAAgD;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -1,4 +1,3 @@
1
- import { LogType } from '@chunkd/core';
2
1
  import { CogTiff } from './cog.tiff.js';
3
2
  import { TiffMimeType } from './const/tiff.mime.js';
4
3
  import { TiffTag, TiffTagGeo } from './const/tiff.tag.id.js';
@@ -41,7 +40,7 @@ export declare class CogTiffImage {
41
40
  *
42
41
  * @param loadGeoTags Whether to load the GeoKeyDirectory and unpack it
43
42
  */
44
- init(loadGeoTags?: boolean, l?: LogType): Promise<void>;
43
+ init(loadGeoTags?: boolean): Promise<void>;
45
44
  /**
46
45
  * Get the value of a TiffTag if it exists null otherwise
47
46
  */
@@ -49,7 +48,7 @@ export declare class CogTiffImage {
49
48
  /**
50
49
  * Load and unpack the GeoKeyDirectory
51
50
  */
52
- loadGeoTiffTags(l: LogType): Promise<void>;
51
+ loadGeoTiffTags(): Promise<void>;
53
52
  /**
54
53
  * Get the associated GeoTiffTags
55
54
  */
@@ -58,7 +57,7 @@ export declare class CogTiffImage {
58
57
  * Load a tag, if it is not currently loaded, fetch the required data for the tag.
59
58
  * @param tag tag to fetch
60
59
  */
61
- fetch<T>(tag: TiffTag, l: LogType): Promise<T | null>;
60
+ fetch<T>(tag: TiffTag): Promise<T | null>;
62
61
  /**
63
62
  * Get the origin point for the image
64
63
  *
@@ -137,7 +136,7 @@ export declare class CogTiffImage {
137
136
  * @param index tile index
138
137
  * @returns file offset of the specified tile
139
138
  */
140
- protected getTileOffset(index: number, l?: LogType): Promise<number>;
139
+ protected getTileOffset(index: number): Promise<number>;
141
140
  getTileBounds(x: number, y: number): BoundingBox;
142
141
  /**
143
142
  * Read a strip into a uint8 array
@@ -160,11 +159,21 @@ export declare class CogTiffImage {
160
159
  * @param x Tile x offset
161
160
  * @param y Tile y offset
162
161
  */
163
- getTile(x: number, y: number, l?: LogType): Promise<{
162
+ getTile(x: number, y: number): Promise<{
164
163
  mimeType: TiffMimeType;
165
164
  bytes: Uint8Array;
166
165
  } | null>;
167
- protected getTileSize(index: number, l?: LogType): Promise<{
166
+ /**
167
+ * Does this tile exist in the tiff and does it actually have a value
168
+ *
169
+ * Sparse tiffs can have a lot of empty tiles, this checks to see if the tile actually has data.
170
+ *
171
+ * @param x Tile x offset
172
+ * @param y Tile y offset
173
+ * @returns if the tile exists and has data
174
+ */
175
+ hasTile(x: number, y: number): Promise<boolean>;
176
+ protected getTileSize(index: number): Promise<{
168
177
  offset: number;
169
178
  imageSize: number;
170
179
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"cog.tiff.image.d.ts","sourceRoot":"","sources":["../src/cog.tiff.image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cog.tiff.image.d.ts","sourceRoot":"","sources":["../src/cog.tiff.image.ts"],"names":[],"mappings":"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"}