@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.
- package/CHANGELOG.md +5 -502
- package/README.md +23 -11
- package/build/__benchmark__/cog.read.benchmark.d.ts +0 -1
- package/build/__benchmark__/cog.read.benchmark.js +6 -4
- package/build/__benchmark__/cog.read.benchmark.js.map +1 -0
- package/build/__benchmark__/source.file.d.ts +9 -0
- package/build/__benchmark__/source.file.js +29 -0
- package/build/__benchmark__/source.file.js.map +1 -0
- package/build/__benchmark__/source.memory.d.ts +9 -0
- package/build/__benchmark__/source.memory.js +32 -0
- package/build/__benchmark__/source.memory.js.map +1 -0
- package/build/__test__/cog.image.test.d.ts +1 -2
- package/build/__test__/cog.image.test.js +82 -90
- package/build/__test__/cog.image.test.js.map +1 -0
- package/build/__test__/cog.read.test.d.ts +1 -2
- package/build/__test__/cog.read.test.js +37 -55
- package/build/__test__/cog.read.test.js.map +1 -0
- package/build/__test__/example.d.ts +1 -0
- package/build/__test__/example.js +27 -0
- package/build/__test__/example.js.map +1 -0
- package/build/cog.tiff.d.ts +22 -28
- package/build/cog.tiff.image.d.ts +11 -23
- package/build/cog.tiff.image.js +108 -62
- package/build/cog.tiff.image.js.map +1 -0
- package/build/cog.tiff.js +141 -97
- package/build/cog.tiff.js.map +1 -0
- package/build/const/index.d.ts +1 -2
- package/build/const/index.js +2 -2
- package/build/const/index.js.map +1 -0
- package/build/const/tiff.endian.d.ts +0 -1
- package/build/const/tiff.endian.js +1 -1
- package/build/const/tiff.endian.js.map +1 -0
- package/build/const/tiff.mime.d.ts +10 -11
- package/build/const/tiff.mime.js +22 -22
- package/build/const/tiff.mime.js.map +1 -0
- package/build/const/tiff.tag.id.d.ts +3 -3
- package/build/const/tiff.tag.id.js +4 -3
- package/build/const/tiff.tag.id.js.map +1 -0
- package/build/const/tiff.tag.value.d.ts +15 -16
- package/build/const/tiff.tag.value.js +16 -16
- package/build/const/tiff.tag.value.js.map +1 -0
- package/build/const/tiff.version.d.ts +0 -1
- package/build/const/tiff.version.js +1 -1
- package/build/const/tiff.version.js.map +1 -0
- package/build/index.d.ts +11 -6
- package/build/index.js +9 -5
- package/build/index.js.map +1 -0
- package/build/read/data.view.offset.d.ts +15 -0
- package/build/read/data.view.offset.js +19 -0
- package/build/read/data.view.offset.js.map +1 -0
- package/build/read/tiff.gdal.d.ts +9 -12
- package/build/read/tiff.gdal.js +22 -17
- package/build/read/tiff.gdal.js.map +1 -0
- package/build/read/tiff.ifd.config.d.ts +6 -4
- package/build/read/tiff.ifd.config.js +2 -2
- package/build/read/tiff.ifd.config.js.map +1 -0
- package/build/read/tiff.tag.d.ts +40 -20
- package/build/read/tiff.tag.factory.d.ts +16 -0
- package/build/read/tiff.tag.factory.js +130 -0
- package/build/read/tiff.tag.factory.js.map +1 -0
- package/build/read/tiff.tag.js +2 -37
- package/build/read/tiff.tag.js.map +1 -0
- package/build/read/tiff.value.reader.d.ts +2 -6
- package/build/read/tiff.value.reader.js +16 -54
- package/build/read/tiff.value.reader.js.map +1 -0
- package/build/source.d.ts +5 -0
- package/build/source.js +2 -0
- package/build/source.js.map +1 -0
- package/build/util/bytes.d.ts +17 -0
- package/build/util/bytes.js +42 -0
- package/build/util/bytes.js.map +1 -0
- package/build/util/util.hex.d.ts +2 -3
- package/build/util/util.hex.js +4 -5
- package/build/util/util.hex.js.map +1 -0
- package/build/vector.d.ts +0 -1
- package/build/vector.js +1 -1
- package/build/vector.js.map +1 -0
- package/package.json +25 -30
- package/src/__benchmark__/cog.read.benchmark.ts +12 -10
- package/src/__benchmark__/source.file.ts +23 -0
- package/src/__benchmark__/source.memory.ts +23 -0
- package/src/__test__/cog.image.test.ts +188 -197
- package/src/__test__/cog.read.test.ts +50 -72
- package/src/__test__/example.ts +31 -0
- package/src/cog.tiff.image.ts +456 -447
- package/src/cog.tiff.ts +142 -145
- package/src/const/index.ts +1 -1
- package/src/const/tiff.endian.ts +2 -2
- package/src/const/tiff.mime.ts +21 -21
- package/src/const/tiff.tag.id.ts +157 -156
- package/src/const/tiff.tag.value.ts +16 -16
- package/src/const/tiff.version.ts +11 -11
- package/src/index.ts +11 -5
- package/src/read/data.view.offset.ts +23 -0
- package/src/read/tiff.gdal.ts +61 -63
- package/src/read/tiff.ifd.config.ts +35 -31
- package/src/read/tiff.tag.factory.ts +163 -0
- package/src/read/tiff.tag.ts +40 -38
- package/src/read/tiff.value.reader.ts +25 -73
- package/src/source.ts +5 -0
- package/src/util/bytes.ts +44 -0
- package/src/util/util.hex.ts +5 -7
- package/src/vector.ts +5 -5
- package/tsconfig.json +8 -8
- package/build/__benchmark__/cog.read.benchmark.d.ts.map +0 -1
- package/build/__test__/cog.image.test.d.ts.map +0 -1
- package/build/__test__/cog.read.test.d.ts.map +0 -1
- package/build/cog.tiff.d.ts.map +0 -1
- package/build/cog.tiff.image.d.ts.map +0 -1
- package/build/const/index.d.ts.map +0 -1
- package/build/const/tiff.endian.d.ts.map +0 -1
- package/build/const/tiff.mime.d.ts.map +0 -1
- package/build/const/tiff.tag.id.d.ts.map +0 -1
- package/build/const/tiff.tag.value.d.ts.map +0 -1
- package/build/const/tiff.version.d.ts.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/read/tag/__test__/tag.test.d.ts +0 -2
- package/build/read/tag/__test__/tag.test.d.ts.map +0 -1
- package/build/read/tag/__test__/tag.test.js +0 -23
- package/build/read/tag/tiff.tag.base.d.ts +0 -55
- package/build/read/tag/tiff.tag.base.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.base.js +0 -79
- package/build/read/tag/tiff.tag.lazy.d.ts +0 -7
- package/build/read/tag/tiff.tag.lazy.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.lazy.js +0 -18
- package/build/read/tag/tiff.tag.offset.d.ts +0 -21
- package/build/read/tag/tiff.tag.offset.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.offset.js +0 -54
- package/build/read/tag/tiff.tag.static.d.ts +0 -8
- package/build/read/tag/tiff.tag.static.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.static.js +0 -17
- package/build/read/tiff.gdal.d.ts.map +0 -1
- package/build/read/tiff.ifd.config.d.ts.map +0 -1
- package/build/read/tiff.tag.d.ts.map +0 -1
- package/build/read/tiff.value.reader.d.ts.map +0 -1
- package/build/source/cog.source.view.d.ts +0 -33
- package/build/source/cog.source.view.d.ts.map +0 -1
- package/build/source/cog.source.view.js +0 -65
- package/build/util/util.hex.d.ts.map +0 -1
- package/build/vector.d.ts.map +0 -1
- package/src/@types/ieee754.d.ts +0 -18
- package/src/read/tag/__test__/tag.test.ts +0 -27
- package/src/read/tag/tiff.tag.base.ts +0 -126
- package/src/read/tag/tiff.tag.lazy.ts +0 -17
- package/src/read/tag/tiff.tag.offset.ts +0 -61
- package/src/read/tag/tiff.tag.static.ts +0 -15
- package/src/source/cog.source.view.ts +0 -77
|
@@ -1,65 +1,27 @@
|
|
|
1
|
-
import { ByteSize } from '@chunkd/core';
|
|
2
1
|
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
3
|
-
import * as ieee754 from 'ieee754';
|
|
4
2
|
export function getTiffTagSize(fieldType) {
|
|
5
3
|
switch (fieldType) {
|
|
6
|
-
case TiffTagValueType.
|
|
7
|
-
case TiffTagValueType.
|
|
8
|
-
case TiffTagValueType.
|
|
9
|
-
case TiffTagValueType.
|
|
4
|
+
case TiffTagValueType.Uint8:
|
|
5
|
+
case TiffTagValueType.Ascii:
|
|
6
|
+
case TiffTagValueType.Int8:
|
|
7
|
+
case TiffTagValueType.Undefined:
|
|
10
8
|
return 1;
|
|
11
|
-
case TiffTagValueType.
|
|
12
|
-
case TiffTagValueType.
|
|
9
|
+
case TiffTagValueType.Uint16:
|
|
10
|
+
case TiffTagValueType.Int16:
|
|
13
11
|
return 2;
|
|
14
|
-
case TiffTagValueType.
|
|
15
|
-
case TiffTagValueType.
|
|
16
|
-
case TiffTagValueType.
|
|
12
|
+
case TiffTagValueType.Uint32:
|
|
13
|
+
case TiffTagValueType.Int32:
|
|
14
|
+
case TiffTagValueType.Float32:
|
|
17
15
|
return 4;
|
|
18
|
-
case TiffTagValueType.
|
|
19
|
-
case TiffTagValueType.
|
|
20
|
-
case TiffTagValueType.
|
|
21
|
-
case TiffTagValueType.
|
|
22
|
-
case TiffTagValueType.
|
|
23
|
-
case TiffTagValueType.
|
|
16
|
+
case TiffTagValueType.Rational:
|
|
17
|
+
case TiffTagValueType.SignedRational:
|
|
18
|
+
case TiffTagValueType.Float64:
|
|
19
|
+
case TiffTagValueType.Uint64:
|
|
20
|
+
case TiffTagValueType.Int64:
|
|
21
|
+
case TiffTagValueType.Ifd8:
|
|
24
22
|
return 8;
|
|
25
23
|
default:
|
|
26
24
|
throw new Error(`Invalid fieldType ${fieldType}`);
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
|
-
|
|
30
|
-
char: (s, offset) => String.fromCharCode(s.getUint8(offset)),
|
|
31
|
-
uint8: (s, offset) => s.getUint8(offset),
|
|
32
|
-
uint16: (s, offset) => s.getUint16(offset),
|
|
33
|
-
uint32: (s, offset) => s.getUint32(offset),
|
|
34
|
-
uint64: (s, offset) => s.getUint64(offset),
|
|
35
|
-
double: (s, offset) => {
|
|
36
|
-
return ieee754.read(s.bytes(offset, ByteSize.Double), 0, s.isLittleEndian, 52, 8);
|
|
37
|
-
},
|
|
38
|
-
rational: (s, offset) => [s.getUint32(offset), s.getUint32(offset + 4)],
|
|
39
|
-
};
|
|
40
|
-
export function getTiffTagValueReader(fieldType) {
|
|
41
|
-
switch (fieldType) {
|
|
42
|
-
case TiffTagValueType.ASCII:
|
|
43
|
-
return TiffTagValueReader.char;
|
|
44
|
-
case TiffTagValueType.BYTE:
|
|
45
|
-
case TiffTagValueType.UNDEFINED:
|
|
46
|
-
case TiffTagValueType.SBYTE:
|
|
47
|
-
return TiffTagValueReader.uint8;
|
|
48
|
-
case TiffTagValueType.SHORT:
|
|
49
|
-
case TiffTagValueType.SSHORT:
|
|
50
|
-
return TiffTagValueReader.uint16;
|
|
51
|
-
case TiffTagValueType.LONG:
|
|
52
|
-
case TiffTagValueType.SLONG:
|
|
53
|
-
return TiffTagValueReader.uint32;
|
|
54
|
-
case TiffTagValueType.RATIONAL:
|
|
55
|
-
case TiffTagValueType.SRATIONAL:
|
|
56
|
-
return TiffTagValueReader.rational;
|
|
57
|
-
case TiffTagValueType.DOUBLE:
|
|
58
|
-
return TiffTagValueReader.double;
|
|
59
|
-
case TiffTagValueType.LONG8:
|
|
60
|
-
return TiffTagValueReader.uint64;
|
|
61
|
-
default:
|
|
62
|
-
throw new Error(`Unknown read type "${fieldType}" "${TiffTagValueType[fieldType]}"`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi52YWx1ZS5yZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVhZC90aWZmLnZhbHVlLnJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFlLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBRW5DLE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBMkI7SUFDdEQsUUFBUSxTQUFTLEVBQUU7UUFDZixLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMzQixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLFNBQVM7WUFDM0IsT0FBTyxDQUFDLENBQUM7UUFDYixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLE1BQU07WUFDeEIsT0FBTyxDQUFDLENBQUM7UUFDYixLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMzQixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxDQUFDLENBQUM7UUFDYixLQUFLLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztRQUMvQixLQUFLLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztRQUNoQyxLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUM3QixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUM3QixLQUFLLGdCQUFnQixDQUFDLElBQUk7WUFDdEIsT0FBTyxDQUFDLENBQUM7UUFDYjtZQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDekQ7QUFDTCxDQUFDO0FBS0QsTUFBTSxrQkFBa0IsR0FBOEM7SUFDbEUsSUFBSSxFQUFFLENBQUMsQ0FBYyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLEtBQUssRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzdELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUN2QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBQ0QsUUFBUSxFQUFFLENBQUMsQ0FBYyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQy9GLENBQUM7QUFDRixNQUFNLFVBQVUscUJBQXFCLENBQUMsU0FBMkI7SUFDN0QsUUFBUSxTQUFTLEVBQUU7UUFDZixLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFFbkMsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDM0IsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7UUFDaEMsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO1lBQ3ZCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDO1FBRXBDLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQzVCLEtBQUssZ0JBQWdCLENBQUMsTUFBTTtZQUN4QixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUVyQyxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMzQixLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFFckMsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDL0IsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTO1lBQzNCLE9BQU8sa0JBQWtCLENBQUMsUUFBUSxDQUFDO1FBRXZDLEtBQUssZ0JBQWdCLENBQUMsTUFBTTtZQUN4QixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUVyQyxLQUFLLGdCQUFnQixDQUFDLEtBQUs7WUFDdkIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFFckM7WUFDSSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixTQUFTLE1BQU0sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVGO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ5dGVTaXplLCBDaHVua1NvdXJjZSB9IGZyb20gJ0BjaHVua2QvY29yZSc7XG5pbXBvcnQgeyBUaWZmVGFnVmFsdWVUeXBlIH0gZnJvbSAnLi4vY29uc3QvdGlmZi50YWcudmFsdWUuanMnO1xuaW1wb3J0ICogYXMgaWVlZTc1NCBmcm9tICdpZWVlNzU0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpZmZUYWdTaXplKGZpZWxkVHlwZTogVGlmZlRhZ1ZhbHVlVHlwZSk6IG51bWJlciB7XG4gICAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLkJZVEU6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5BU0NJSTpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNCWVRFOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuVU5ERUZJTkVEOlxuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5TSE9SVDpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNTSE9SVDpcbiAgICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuTE9ORzpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNMT05HOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuRkxPQVQ6XG4gICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlJBVElPTkFMOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuU1JBVElPTkFMOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuRE9VQkxFOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuTE9ORzg6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5TTE9ORzg6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5JRkQ4OlxuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZmllbGRUeXBlICR7ZmllbGRUeXBlfWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgVGlmZlRhZ1ZhbHVlUmF0aW9uYWwgPSBbbnVtYmVyLCBudW1iZXJdO1xuZXhwb3J0IHR5cGUgVGlmZlRhZ1ZhbHVlUmVhZGVyRnVuYyA9ICh2aWV3OiBDaHVua1NvdXJjZSwgb2Zmc2V0OiBudW1iZXIpID0+IG51bWJlciB8IFRpZmZUYWdWYWx1ZVJhdGlvbmFsIHwgc3RyaW5nO1xuXG5jb25zdCBUaWZmVGFnVmFsdWVSZWFkZXI6IHsgW2tleTogc3RyaW5nXTogVGlmZlRhZ1ZhbHVlUmVhZGVyRnVuYyB9ID0ge1xuICAgIGNoYXI6IChzOiBDaHVua1NvdXJjZSwgb2Zmc2V0OiBudW1iZXIpID0+IFN0cmluZy5mcm9tQ2hhckNvZGUocy5nZXRVaW50OChvZmZzZXQpKSxcbiAgICB1aW50ODogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4gcy5nZXRVaW50OChvZmZzZXQpLFxuICAgIHVpbnQxNjogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4gcy5nZXRVaW50MTYob2Zmc2V0KSxcbiAgICB1aW50MzI6IChzOiBDaHVua1NvdXJjZSwgb2Zmc2V0OiBudW1iZXIpID0+IHMuZ2V0VWludDMyKG9mZnNldCksXG4gICAgdWludDY0OiAoczogQ2h1bmtTb3VyY2UsIG9mZnNldDogbnVtYmVyKSA9PiBzLmdldFVpbnQ2NChvZmZzZXQpLFxuICAgIGRvdWJsZTogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gaWVlZTc1NC5yZWFkKHMuYnl0ZXMob2Zmc2V0LCBCeXRlU2l6ZS5Eb3VibGUpLCAwLCBzLmlzTGl0dGxlRW5kaWFuLCA1MiwgOCk7XG4gICAgfSxcbiAgICByYXRpb25hbDogKHM6IENodW5rU291cmNlLCBvZmZzZXQ6IG51bWJlcikgPT4gW3MuZ2V0VWludDMyKG9mZnNldCksIHMuZ2V0VWludDMyKG9mZnNldCArIDQpXSxcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlmZlRhZ1ZhbHVlUmVhZGVyKGZpZWxkVHlwZTogVGlmZlRhZ1ZhbHVlVHlwZSk6IFRpZmZUYWdWYWx1ZVJlYWRlckZ1bmMge1xuICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5BU0NJSTpcbiAgICAgICAgICAgIHJldHVybiBUaWZmVGFnVmFsdWVSZWFkZXIuY2hhcjtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuQllURTpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlVOREVGSU5FRDpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNCWVRFOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci51aW50ODtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuU0hPUlQ6XG4gICAgICAgIGNhc2UgVGlmZlRhZ1ZhbHVlVHlwZS5TU0hPUlQ6XG4gICAgICAgICAgICByZXR1cm4gVGlmZlRhZ1ZhbHVlUmVhZGVyLnVpbnQxNjtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuTE9ORzpcbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlNMT05HOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci51aW50MzI7XG5cbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLlJBVElPTkFMOlxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuU1JBVElPTkFMOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci5yYXRpb25hbDtcblxuICAgICAgICBjYXNlIFRpZmZUYWdWYWx1ZVR5cGUuRE9VQkxFOlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci5kb3VibGU7XG5cbiAgICAgICAgY2FzZSBUaWZmVGFnVmFsdWVUeXBlLkxPTkc4OlxuICAgICAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVJlYWRlci51aW50NjQ7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biByZWFkIHR5cGUgXCIke2ZpZWxkVHlwZX1cIiBcIiR7VGlmZlRhZ1ZhbHVlVHlwZVtmaWVsZFR5cGVdfVwiYCk7XG4gICAgfVxufVxuIl19
|
|
27
|
+
//# sourceMappingURL=tiff.value.reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiff.value.reader.js","sourceRoot":"","sources":["../../src/read/tiff.value.reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,UAAU,cAAc,CAAC,SAA2B;IACxD,QAAQ,SAAS,EAAE;QACjB,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,IAAI,CAAC;QAC3B,KAAK,gBAAgB,CAAC,SAAS;YAC7B,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,QAAQ,CAAC;QAC/B,KAAK,gBAAgB,CAAC,cAAc,CAAC;QACrC,KAAK,gBAAgB,CAAC,OAAO,CAAC;QAC9B,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,CAAC,CAAC;QACX;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;KACrD;AACH,CAAC"}
|
package/build/source.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum ByteSize {
|
|
2
|
+
Double = 8,
|
|
3
|
+
Float32 = 4,
|
|
4
|
+
UInt64 = 8,
|
|
5
|
+
UInt32 = 4,
|
|
6
|
+
UInt16 = 2,
|
|
7
|
+
UInt8 = 1
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Read a uint64 at the offset
|
|
11
|
+
*
|
|
12
|
+
* This is not precise for large numbers
|
|
13
|
+
* @see {DataView.getBigUint64}
|
|
14
|
+
* @param offset offset to read
|
|
15
|
+
*/
|
|
16
|
+
export declare function getUint64(view: DataView, offset: number, isLittleEndian: boolean): number;
|
|
17
|
+
export declare function getUint(view: DataView, offset: number, bs: ByteSize, isLittleEndian: boolean): number;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export var ByteSize;
|
|
2
|
+
(function (ByteSize) {
|
|
3
|
+
ByteSize[ByteSize["Double"] = 8] = "Double";
|
|
4
|
+
ByteSize[ByteSize["Float32"] = 4] = "Float32";
|
|
5
|
+
ByteSize[ByteSize["UInt64"] = 8] = "UInt64";
|
|
6
|
+
ByteSize[ByteSize["UInt32"] = 4] = "UInt32";
|
|
7
|
+
ByteSize[ByteSize["UInt16"] = 2] = "UInt16";
|
|
8
|
+
ByteSize[ByteSize["UInt8"] = 1] = "UInt8";
|
|
9
|
+
})(ByteSize || (ByteSize = {}));
|
|
10
|
+
/** Shifting `<< 32` does not work in javascript */
|
|
11
|
+
const POW_32 = 2 ** 32;
|
|
12
|
+
/**
|
|
13
|
+
* Read a uint64 at the offset
|
|
14
|
+
*
|
|
15
|
+
* This is not precise for large numbers
|
|
16
|
+
* @see {DataView.getBigUint64}
|
|
17
|
+
* @param offset offset to read
|
|
18
|
+
*/
|
|
19
|
+
export function getUint64(view, offset, isLittleEndian) {
|
|
20
|
+
// split 64-bit number into two 32-bit (4-byte) parts
|
|
21
|
+
const left = view.getUint32(offset, isLittleEndian);
|
|
22
|
+
const right = view.getUint32(offset + 4, isLittleEndian);
|
|
23
|
+
// combine the two 32-bit values
|
|
24
|
+
const combined = isLittleEndian ? left + POW_32 * right : POW_32 * left + right;
|
|
25
|
+
if (!Number.isSafeInteger(combined)) {
|
|
26
|
+
throw new Error(combined + ' exceeds MAX_SAFE_INTEGER. Precision may is lost');
|
|
27
|
+
}
|
|
28
|
+
return combined;
|
|
29
|
+
}
|
|
30
|
+
export function getUint(view, offset, bs, isLittleEndian) {
|
|
31
|
+
switch (bs) {
|
|
32
|
+
case ByteSize.UInt8:
|
|
33
|
+
return view.getUint8(offset);
|
|
34
|
+
case ByteSize.UInt16:
|
|
35
|
+
return view.getUint16(offset, isLittleEndian);
|
|
36
|
+
case ByteSize.UInt32:
|
|
37
|
+
return view.getUint32(offset, isLittleEndian);
|
|
38
|
+
case ByteSize.UInt64:
|
|
39
|
+
return getUint64(view, offset, isLittleEndian);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=bytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/util/bytes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,2CAAU,CAAA;IACV,6CAAW,CAAA;IACX,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,yCAAS,CAAA;AACX,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB;AACD,mDAAmD;AACnD,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACvB;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,MAAc,EAAE,cAAuB;IAC/E,qDAAqD;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IAEzD,gCAAgC;IAChC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAEhF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,kDAAkD,CAAC,CAAC;KAChF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,MAAc,EAAE,EAAY,EAAE,cAAuB;IAC3F,QAAQ,EAAE,EAAE;QACV,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;KAClD;AACH,CAAC"}
|
package/build/util/util.hex.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Convert a number to a
|
|
2
|
+
* Convert a number to a formatted hex string
|
|
3
3
|
*
|
|
4
4
|
* @param num number to convert
|
|
5
5
|
* @param padding number of 0's to pad the digit with
|
|
@@ -7,5 +7,4 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @returns hex string eg 0x0015
|
|
9
9
|
**/
|
|
10
|
-
export declare function
|
|
11
|
-
//# sourceMappingURL=util.hex.d.ts.map
|
|
10
|
+
export declare function toHex(num: number, padding?: number, prefix?: boolean): string;
|
package/build/util/util.hex.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Convert a number to a
|
|
2
|
+
* Convert a number to a formatted hex string
|
|
3
3
|
*
|
|
4
4
|
* @param num number to convert
|
|
5
5
|
* @param padding number of 0's to pad the digit with
|
|
@@ -7,11 +7,10 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @returns hex string eg 0x0015
|
|
9
9
|
**/
|
|
10
|
-
export function
|
|
10
|
+
export function toHex(num, padding = 4, prefix = true) {
|
|
11
11
|
const hex = num.toString(16).padStart(padding, '0');
|
|
12
|
-
if (prefix)
|
|
12
|
+
if (prefix)
|
|
13
13
|
return '0x' + hex;
|
|
14
|
-
}
|
|
15
14
|
return hex;
|
|
16
15
|
}
|
|
17
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=util.hex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.hex.js","sourceRoot":"","sources":["../../src/util/util.hex.ts"],"names":[],"mappings":"AAAA;;;;;;;;IAQI;AACJ,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAC3D,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,MAAM;QAAE,OAAO,IAAI,GAAG,GAAG,CAAC;IAC9B,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/build/vector.d.ts
CHANGED
package/build/vector.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=vector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../src/vector.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,32 +1,27 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
},
|
|
28
|
-
"publishConfig": {
|
|
29
|
-
"access": "public"
|
|
30
|
-
},
|
|
31
|
-
"gitHead": "5a152b87c01d71617caab3a584d8396b646ef9a3"
|
|
2
|
+
"name": "@cogeotiff/core",
|
|
3
|
+
"version": "8.0.2",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "https://github.com/blacha/cogeotiff.git",
|
|
7
|
+
"directory": "packages/core"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
12
|
+
},
|
|
13
|
+
"main": "./build/index.js",
|
|
14
|
+
"types": "./build/index.d.ts",
|
|
15
|
+
"author": "Blayne Chard",
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"scripts": {
|
|
18
|
+
"test": "node --test"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/node": "^20.0.0"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"gitHead": "5a80734a67c05c2e3b99e7f3124a51049c19cf85"
|
|
32
27
|
}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import { SourceMemory } from '@chunkd/core';
|
|
2
1
|
import { readFile } from 'fs/promises';
|
|
3
2
|
import { CogTiff } from '../cog.tiff.js';
|
|
3
|
+
import { SourceMemory } from './source.memory.js';
|
|
4
4
|
|
|
5
|
+
// console.log = console.trace;
|
|
5
6
|
/** Read a tile from every image inside of a tiff 300 tiles read */
|
|
6
7
|
async function main(): Promise<void> {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const buf = await readFile(process.argv[process.argv.length - 1]);
|
|
9
|
+
const source = new SourceMemory(buf);
|
|
10
|
+
for (let i = 0; i < 5_000; i++) {
|
|
11
|
+
performance.mark('cog:init');
|
|
12
|
+
const tiff = new CogTiff(source);
|
|
13
|
+
await tiff.init();
|
|
14
|
+
performance.mark('cog:init:done');
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
16
|
+
// 6 images
|
|
17
|
+
for (const img of tiff.images) await img.getTile(0, 0);
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
main();
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { readFile, stat } from 'fs/promises';
|
|
2
|
+
import { Source } from '../source.js';
|
|
3
|
+
|
|
4
|
+
export class TestFileSource implements Source {
|
|
5
|
+
url: URL;
|
|
6
|
+
data: Promise<Buffer>;
|
|
7
|
+
|
|
8
|
+
constructor(fileName: URL) {
|
|
9
|
+
this.url = fileName;
|
|
10
|
+
this.data = readFile(this.url);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async fetch(offset: number, length: number): Promise<ArrayBuffer> {
|
|
14
|
+
const fileData = await this.data;
|
|
15
|
+
return fileData.buffer.slice(fileData.byteOffset + offset, fileData.byteOffset + offset + length);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
get size(): Promise<number> {
|
|
19
|
+
return Promise.resolve()
|
|
20
|
+
.then(() => stat(this.url))
|
|
21
|
+
.then((f) => f.size);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Source } from '../source.js';
|
|
2
|
+
|
|
3
|
+
export class SourceMemory implements Source {
|
|
4
|
+
url: URL;
|
|
5
|
+
data: ArrayBuffer;
|
|
6
|
+
|
|
7
|
+
static toArrayBuffer(buf: Buffer | Uint8Array | ArrayBuffer): ArrayBuffer {
|
|
8
|
+
if (buf instanceof ArrayBuffer) return buf;
|
|
9
|
+
if (buf.byteLength === buf.buffer.byteLength) return buf.buffer;
|
|
10
|
+
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
constructor(bytes: Buffer | Uint8Array | ArrayBuffer) {
|
|
14
|
+
this.url = new URL('memory://fake-file');
|
|
15
|
+
this.data = SourceMemory.toArrayBuffer(bytes);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async fetch(offset: number, length?: number): Promise<ArrayBuffer> {
|
|
19
|
+
// console.log('Fetch', offset, length);
|
|
20
|
+
if (offset < 0) offset = this.data.byteLength + offset;
|
|
21
|
+
return this.data.slice(offset, length == null ? undefined : offset + length);
|
|
22
|
+
}
|
|
23
|
+
}
|