@xterm/addon-image 0.7.0-beta.1
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/LICENSE +19 -0
- package/README.md +231 -0
- package/lib/addon-image.js +3 -0
- package/lib/addon-image.js.LICENSE.txt +24 -0
- package/lib/addon-image.js.map +1 -0
- package/out/IIPHandler.js +148 -0
- package/out/IIPHandler.js.map +1 -0
- package/out/IIPHeaderParser.js +156 -0
- package/out/IIPHeaderParser.js.map +1 -0
- package/out/IIPHeaderParser.test.js +137 -0
- package/out/IIPHeaderParser.test.js.map +1 -0
- package/out/IIPMetrics.js +71 -0
- package/out/IIPMetrics.js.map +1 -0
- package/out/IIPMetrics.test.js +38 -0
- package/out/IIPMetrics.test.js.map +1 -0
- package/out/ImageAddon.js +261 -0
- package/out/ImageAddon.js.map +1 -0
- package/out/ImageRenderer.js +330 -0
- package/out/ImageRenderer.js.map +1 -0
- package/out/ImageStorage.js +552 -0
- package/out/ImageStorage.js.map +1 -0
- package/out/SixelHandler.js +140 -0
- package/out/SixelHandler.js.map +1 -0
- package/package.json +31 -0
- package/src/IIPHandler.ts +161 -0
- package/src/IIPHeaderParser.test.ts +138 -0
- package/src/IIPHeaderParser.ts +186 -0
- package/src/IIPMetrics.test.ts +43 -0
- package/src/IIPMetrics.ts +81 -0
- package/src/ImageAddon.ts +317 -0
- package/src/ImageRenderer.ts +379 -0
- package/src/ImageStorage.ts +592 -0
- package/src/SixelHandler.ts +151 -0
- package/src/Types.d.ts +108 -0
- package/typings/addon-image.d.ts +120 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.HeaderParser = void 0;
|
|
8
|
+
// field value decoders
|
|
9
|
+
// ASCII bytes to string
|
|
10
|
+
function toStr(data) {
|
|
11
|
+
let s = '';
|
|
12
|
+
for (let i = 0; i < data.length; ++i) {
|
|
13
|
+
s += String.fromCharCode(data[i]);
|
|
14
|
+
}
|
|
15
|
+
return s;
|
|
16
|
+
}
|
|
17
|
+
// digits to integer
|
|
18
|
+
function toInt(data) {
|
|
19
|
+
let v = 0;
|
|
20
|
+
for (let i = 0; i < data.length; ++i) {
|
|
21
|
+
if (data[i] < 48 || data[i] > 57) {
|
|
22
|
+
throw new Error('illegal char');
|
|
23
|
+
}
|
|
24
|
+
v = v * 10 + data[i] - 48;
|
|
25
|
+
}
|
|
26
|
+
return v;
|
|
27
|
+
}
|
|
28
|
+
// check for correct size entry
|
|
29
|
+
function toSize(data) {
|
|
30
|
+
const v = toStr(data);
|
|
31
|
+
if (!v.match(/^((auto)|(\d+?((px)|(%)){0,1}))$/)) {
|
|
32
|
+
throw new Error('illegal size');
|
|
33
|
+
}
|
|
34
|
+
return v;
|
|
35
|
+
}
|
|
36
|
+
// name is base64 encoded utf-8
|
|
37
|
+
function toName(data) {
|
|
38
|
+
if (typeof Buffer !== 'undefined') {
|
|
39
|
+
return Buffer.from(toStr(data), 'base64').toString();
|
|
40
|
+
}
|
|
41
|
+
const bs = atob(toStr(data));
|
|
42
|
+
const b = new Uint8Array(bs.length);
|
|
43
|
+
for (let i = 0; i < b.length; ++i) {
|
|
44
|
+
b[i] = bs.charCodeAt(i);
|
|
45
|
+
}
|
|
46
|
+
return new TextDecoder().decode(b);
|
|
47
|
+
}
|
|
48
|
+
const DECODERS = {
|
|
49
|
+
inline: toInt,
|
|
50
|
+
size: toInt,
|
|
51
|
+
name: toName,
|
|
52
|
+
width: toSize,
|
|
53
|
+
height: toSize,
|
|
54
|
+
preserveAspectRatio: toInt
|
|
55
|
+
};
|
|
56
|
+
const FILE_MARKER = [70, 105, 108, 101];
|
|
57
|
+
const MAX_FIELDCHARS = 1024;
|
|
58
|
+
class HeaderParser {
|
|
59
|
+
constructor() {
|
|
60
|
+
this.state = 0 /* HeaderState.START */;
|
|
61
|
+
this._buffer = new Uint32Array(MAX_FIELDCHARS);
|
|
62
|
+
this._position = 0;
|
|
63
|
+
this._key = '';
|
|
64
|
+
this.fields = {};
|
|
65
|
+
}
|
|
66
|
+
reset() {
|
|
67
|
+
this._buffer.fill(0);
|
|
68
|
+
this.state = 0 /* HeaderState.START */;
|
|
69
|
+
this._position = 0;
|
|
70
|
+
this.fields = {};
|
|
71
|
+
this._key = '';
|
|
72
|
+
}
|
|
73
|
+
parse(data, start, end) {
|
|
74
|
+
let state = this.state;
|
|
75
|
+
let pos = this._position;
|
|
76
|
+
const buffer = this._buffer;
|
|
77
|
+
if (state === 1 /* HeaderState.ABORT */ || state === 4 /* HeaderState.END */)
|
|
78
|
+
return -1;
|
|
79
|
+
if (state === 0 /* HeaderState.START */ && pos > 6)
|
|
80
|
+
return -1;
|
|
81
|
+
for (let i = start; i < end; ++i) {
|
|
82
|
+
const c = data[i];
|
|
83
|
+
switch (c) {
|
|
84
|
+
case 59: // ;
|
|
85
|
+
if (!this._storeValue(pos))
|
|
86
|
+
return this._a();
|
|
87
|
+
state = 2 /* HeaderState.KEY */;
|
|
88
|
+
pos = 0;
|
|
89
|
+
break;
|
|
90
|
+
case 61: // =
|
|
91
|
+
if (state === 0 /* HeaderState.START */) {
|
|
92
|
+
for (let k = 0; k < FILE_MARKER.length; ++k) {
|
|
93
|
+
if (buffer[k] !== FILE_MARKER[k])
|
|
94
|
+
return this._a();
|
|
95
|
+
}
|
|
96
|
+
state = 2 /* HeaderState.KEY */;
|
|
97
|
+
pos = 0;
|
|
98
|
+
}
|
|
99
|
+
else if (state === 2 /* HeaderState.KEY */) {
|
|
100
|
+
if (!this._storeKey(pos))
|
|
101
|
+
return this._a();
|
|
102
|
+
state = 3 /* HeaderState.VALUE */;
|
|
103
|
+
pos = 0;
|
|
104
|
+
}
|
|
105
|
+
else if (state === 3 /* HeaderState.VALUE */) {
|
|
106
|
+
if (pos >= MAX_FIELDCHARS)
|
|
107
|
+
return this._a();
|
|
108
|
+
buffer[pos++] = c;
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
case 58: // :
|
|
112
|
+
if (state === 3 /* HeaderState.VALUE */) {
|
|
113
|
+
if (!this._storeValue(pos))
|
|
114
|
+
return this._a();
|
|
115
|
+
}
|
|
116
|
+
this.state = 4 /* HeaderState.END */;
|
|
117
|
+
return i + 1;
|
|
118
|
+
default:
|
|
119
|
+
if (pos >= MAX_FIELDCHARS)
|
|
120
|
+
return this._a();
|
|
121
|
+
buffer[pos++] = c;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
this.state = state;
|
|
125
|
+
this._position = pos;
|
|
126
|
+
return -2;
|
|
127
|
+
}
|
|
128
|
+
_a() {
|
|
129
|
+
this.state = 1 /* HeaderState.ABORT */;
|
|
130
|
+
return -1;
|
|
131
|
+
}
|
|
132
|
+
_storeKey(pos) {
|
|
133
|
+
const k = toStr(this._buffer.subarray(0, pos));
|
|
134
|
+
if (k) {
|
|
135
|
+
this._key = k;
|
|
136
|
+
this.fields[k] = null;
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
_storeValue(pos) {
|
|
142
|
+
if (this._key) {
|
|
143
|
+
try {
|
|
144
|
+
const v = this._buffer.slice(0, pos);
|
|
145
|
+
this.fields[this._key] = DECODERS[this._key] ? DECODERS[this._key](v) : v;
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.HeaderParser = HeaderParser;
|
|
156
|
+
//# sourceMappingURL=IIPHeaderParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IIPHeaderParser.js","sourceRoot":"","sources":["../src/IIPHeaderParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const chai_1 = require("chai");
|
|
8
|
+
const IIPHeaderParser_1 = require("./IIPHeaderParser");
|
|
9
|
+
const CASES = [
|
|
10
|
+
['File=size=123456;name=dGVzdA==:', { name: 'test', size: 123456 }],
|
|
11
|
+
['File=size=123456;name=dGVzdA:', { name: 'test', size: 123456 }],
|
|
12
|
+
// utf-8 encoding in name
|
|
13
|
+
['File=size=123456;name=w7xtbMOkdXTDnw==:', { name: 'ümläutß', size: 123456 }],
|
|
14
|
+
['File=size=123456;name=w7xtbMOkdXTDnw:', { name: 'ümläutß', size: 123456 }],
|
|
15
|
+
// full header spec
|
|
16
|
+
[
|
|
17
|
+
'File=inline=1;width=10px;height=20%;preserveAspectRatio=1;size=123456;name=w7xtbMOkdXTDnw:',
|
|
18
|
+
{
|
|
19
|
+
inline: 1,
|
|
20
|
+
width: '10px',
|
|
21
|
+
height: '20%',
|
|
22
|
+
preserveAspectRatio: 1,
|
|
23
|
+
size: 123456,
|
|
24
|
+
name: 'ümläutß'
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
'File=inline=1;width=auto;height=20;preserveAspectRatio=1;size=123456;name=w7xtbMOkdXTDnw:',
|
|
29
|
+
{
|
|
30
|
+
inline: 1,
|
|
31
|
+
width: 'auto',
|
|
32
|
+
height: '20',
|
|
33
|
+
preserveAspectRatio: 1,
|
|
34
|
+
size: 123456,
|
|
35
|
+
name: 'ümläutß'
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
];
|
|
39
|
+
function fromBs(bs) {
|
|
40
|
+
const r = new Uint32Array(bs.length);
|
|
41
|
+
for (let i = 0; i < r.length; ++i)
|
|
42
|
+
r[i] = bs.charCodeAt(i);
|
|
43
|
+
return r;
|
|
44
|
+
}
|
|
45
|
+
describe('IIPHeaderParser', () => {
|
|
46
|
+
it('at once', () => {
|
|
47
|
+
const hp = new IIPHeaderParser_1.HeaderParser();
|
|
48
|
+
for (const example of CASES) {
|
|
49
|
+
hp.reset();
|
|
50
|
+
const inp = fromBs(example[0]);
|
|
51
|
+
const res = hp.parse(inp, 0, inp.length);
|
|
52
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
53
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
54
|
+
chai_1.assert.deepEqual(hp.fields, example[1]);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
it('bytewise', () => {
|
|
58
|
+
const hp = new IIPHeaderParser_1.HeaderParser();
|
|
59
|
+
for (const example of CASES) {
|
|
60
|
+
hp.reset();
|
|
61
|
+
const inp = fromBs(example[0]);
|
|
62
|
+
let pos = 0;
|
|
63
|
+
let res = -2;
|
|
64
|
+
while (res === -2 && pos < inp.length) {
|
|
65
|
+
res = hp.parse(new Uint32Array([inp[pos++]]), 0, 1);
|
|
66
|
+
}
|
|
67
|
+
chai_1.assert.strictEqual(res, 1);
|
|
68
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
69
|
+
chai_1.assert.deepEqual(hp.fields, example[1]);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
it('no File= starter', () => {
|
|
73
|
+
const hp = new IIPHeaderParser_1.HeaderParser();
|
|
74
|
+
let inp = fromBs('size=123456;name=dGVzdA==:');
|
|
75
|
+
let res = hp.parse(inp, 0, inp.length);
|
|
76
|
+
chai_1.assert.strictEqual(res, -1);
|
|
77
|
+
hp.reset();
|
|
78
|
+
inp = fromBs(CASES[0][0]);
|
|
79
|
+
res = hp.parse(inp, 0, inp.length);
|
|
80
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
81
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
82
|
+
chai_1.assert.deepEqual(hp.fields, CASES[0][1]);
|
|
83
|
+
});
|
|
84
|
+
it('empty key - error', () => {
|
|
85
|
+
const hp = new IIPHeaderParser_1.HeaderParser();
|
|
86
|
+
let inp = fromBs('File=size=123456;=dGVzdA==:');
|
|
87
|
+
let res = hp.parse(inp, 0, inp.length);
|
|
88
|
+
chai_1.assert.strictEqual(res, -1);
|
|
89
|
+
hp.reset();
|
|
90
|
+
inp = fromBs(CASES[0][0]);
|
|
91
|
+
res = hp.parse(inp, 0, inp.length);
|
|
92
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
93
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
94
|
+
chai_1.assert.deepEqual(hp.fields, CASES[0][1]);
|
|
95
|
+
});
|
|
96
|
+
it('empty size value - set to 0', () => {
|
|
97
|
+
const hp = new IIPHeaderParser_1.HeaderParser();
|
|
98
|
+
let inp = fromBs('File=size=;name=dGVzdA==:');
|
|
99
|
+
let res = hp.parse(inp, 0, inp.length);
|
|
100
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
101
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
102
|
+
chai_1.assert.deepEqual(hp.fields, { name: 'test', size: 0 });
|
|
103
|
+
hp.reset();
|
|
104
|
+
inp = fromBs(CASES[0][0]);
|
|
105
|
+
res = hp.parse(inp, 0, inp.length);
|
|
106
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
107
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
108
|
+
chai_1.assert.deepEqual(hp.fields, CASES[0][1]);
|
|
109
|
+
});
|
|
110
|
+
it('empty name value - set to empty string', () => {
|
|
111
|
+
const hp = new IIPHeaderParser_1.HeaderParser();
|
|
112
|
+
let inp = fromBs('File=size=123456;name=:');
|
|
113
|
+
let res = hp.parse(inp, 0, inp.length);
|
|
114
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
115
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
116
|
+
chai_1.assert.deepEqual(hp.fields, { name: '', size: 123456 });
|
|
117
|
+
hp.reset();
|
|
118
|
+
inp = fromBs(CASES[0][0]);
|
|
119
|
+
res = hp.parse(inp, 0, inp.length);
|
|
120
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
121
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
122
|
+
chai_1.assert.deepEqual(hp.fields, CASES[0][1]);
|
|
123
|
+
});
|
|
124
|
+
it('empty size value - error', () => {
|
|
125
|
+
const hp = new IIPHeaderParser_1.HeaderParser();
|
|
126
|
+
let inp = fromBs('File=inline=1;width=;height=20%;preserveAspectRatio=1;size=123456;name=w7xtbMOkdXTDnw:');
|
|
127
|
+
let res = hp.parse(inp, 0, inp.length);
|
|
128
|
+
chai_1.assert.strictEqual(res, -1);
|
|
129
|
+
hp.reset();
|
|
130
|
+
inp = fromBs(CASES[0][0]);
|
|
131
|
+
res = hp.parse(inp, 0, inp.length);
|
|
132
|
+
chai_1.assert.strictEqual(res, inp.length);
|
|
133
|
+
chai_1.assert.strictEqual(hp.state, 4 /* HeaderState.END */);
|
|
134
|
+
chai_1.assert.deepEqual(hp.fields, CASES[0][1]);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=IIPHeaderParser.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IIPHeaderParser.test.js","sourceRoot":"","sources":["../src/IIPHeaderParser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.imageType = exports.UNSUPPORTED_TYPE = void 0;
|
|
8
|
+
exports.UNSUPPORTED_TYPE = {
|
|
9
|
+
mime: 'unsupported',
|
|
10
|
+
width: 0,
|
|
11
|
+
height: 0
|
|
12
|
+
};
|
|
13
|
+
function imageType(d) {
|
|
14
|
+
if (d.length < 24) {
|
|
15
|
+
return exports.UNSUPPORTED_TYPE;
|
|
16
|
+
}
|
|
17
|
+
const d32 = new Uint32Array(d.buffer, d.byteOffset, 6);
|
|
18
|
+
// PNG: 89 50 4E 47 0D 0A 1A 0A (8 first bytes == magic number for PNG)
|
|
19
|
+
// + first chunk must be IHDR
|
|
20
|
+
if (d32[0] === 0x474E5089 && d32[1] === 0x0A1A0A0D && d32[3] === 0x52444849) {
|
|
21
|
+
return {
|
|
22
|
+
mime: 'image/png',
|
|
23
|
+
width: d[16] << 24 | d[17] << 16 | d[18] << 8 | d[19],
|
|
24
|
+
height: d[20] << 24 | d[21] << 16 | d[22] << 8 | d[23]
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// JPEG: FF D8 FF E0 xx xx JFIF or FF D8 FF E1 xx xx Exif 00 00
|
|
28
|
+
if ((d32[0] === 0xE0FFD8FF || d32[0] === 0xE1FFD8FF)
|
|
29
|
+
&& ((d[6] === 0x4a && d[7] === 0x46 && d[8] === 0x49 && d[9] === 0x46)
|
|
30
|
+
|| (d[6] === 0x45 && d[7] === 0x78 && d[8] === 0x69 && d[9] === 0x66))) {
|
|
31
|
+
const [width, height] = jpgSize(d);
|
|
32
|
+
return { mime: 'image/jpeg', width, height };
|
|
33
|
+
}
|
|
34
|
+
// GIF: GIF87a or GIF89a
|
|
35
|
+
if (d32[0] === 0x38464947 && (d[4] === 0x37 || d[4] === 0x39) && d[5] === 0x61) {
|
|
36
|
+
return {
|
|
37
|
+
mime: 'image/gif',
|
|
38
|
+
width: d[7] << 8 | d[6],
|
|
39
|
+
height: d[9] << 8 | d[8]
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return exports.UNSUPPORTED_TYPE;
|
|
43
|
+
}
|
|
44
|
+
exports.imageType = imageType;
|
|
45
|
+
function jpgSize(d) {
|
|
46
|
+
const len = d.length;
|
|
47
|
+
let i = 4;
|
|
48
|
+
let blockLength = d[i] << 8 | d[i + 1];
|
|
49
|
+
while (true) {
|
|
50
|
+
i += blockLength;
|
|
51
|
+
if (i >= len) {
|
|
52
|
+
// exhausted without size info
|
|
53
|
+
return [0, 0];
|
|
54
|
+
}
|
|
55
|
+
if (d[i] !== 0xFF) {
|
|
56
|
+
return [0, 0];
|
|
57
|
+
}
|
|
58
|
+
if (d[i + 1] === 0xC0 || d[i + 1] === 0xC2) {
|
|
59
|
+
if (i + 8 < len) {
|
|
60
|
+
return [
|
|
61
|
+
d[i + 7] << 8 | d[i + 8],
|
|
62
|
+
d[i + 5] << 8 | d[i + 6]
|
|
63
|
+
];
|
|
64
|
+
}
|
|
65
|
+
return [0, 0];
|
|
66
|
+
}
|
|
67
|
+
i += 2;
|
|
68
|
+
blockLength = d[i] << 8 | d[i + 1];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=IIPMetrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IIPMetrics.js","sourceRoot":"","sources":["../src/IIPMetrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const chai_1 = require("chai");
|
|
8
|
+
const IIPMetrics_1 = require("./IIPMetrics");
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const TEST_IMAGES = [
|
|
11
|
+
['w3c_home_256.gif', { mime: 'image/gif', width: 72, height: 48 }],
|
|
12
|
+
['w3c_home_256.jpg', { mime: 'image/jpeg', width: 72, height: 48 }],
|
|
13
|
+
['w3c_home_256.png', { mime: 'image/png', width: 72, height: 48 }],
|
|
14
|
+
['w3c_home_2.gif', { mime: 'image/gif', width: 72, height: 48 }],
|
|
15
|
+
['w3c_home_2.jpg', { mime: 'image/jpeg', width: 72, height: 48 }],
|
|
16
|
+
['w3c_home_2.png', { mime: 'image/png', width: 72, height: 48 }],
|
|
17
|
+
['w3c_home_animation.gif', { mime: 'image/gif', width: 72, height: 48 }],
|
|
18
|
+
['w3c_home.gif', { mime: 'image/gif', width: 72, height: 48 }],
|
|
19
|
+
['w3c_home_gray.gif', { mime: 'image/gif', width: 72, height: 48 }],
|
|
20
|
+
['w3c_home_gray.jpg', { mime: 'image/jpeg', width: 72, height: 48 }],
|
|
21
|
+
['w3c_home_gray.png', { mime: 'image/png', width: 72, height: 48 }],
|
|
22
|
+
['w3c_home.jpg', { mime: 'image/jpeg', width: 72, height: 48 }],
|
|
23
|
+
['w3c_home.png', { mime: 'image/png', width: 72, height: 48 }],
|
|
24
|
+
['spinfox.png', { mime: 'image/png', width: 148, height: 148 }],
|
|
25
|
+
['iphone_hdr_YES.jpg', { mime: 'image/jpeg', width: 3264, height: 2448 }],
|
|
26
|
+
['nikon-e950.jpg', { mime: 'image/jpeg', width: 800, height: 600 }],
|
|
27
|
+
['agfa-makernotes.jpg', { mime: 'image/jpeg', width: 8, height: 8 }],
|
|
28
|
+
['sony-alpha-6000.jpg', { mime: 'image/jpeg', width: 6000, height: 4000 }]
|
|
29
|
+
];
|
|
30
|
+
describe('IIPMetrics', () => {
|
|
31
|
+
it('bunch of testimages', () => {
|
|
32
|
+
for (let i = 0; i < TEST_IMAGES.length; ++i) {
|
|
33
|
+
const imageData = fs.readFileSync('./addons/addon-image/fixture/testimages/' + TEST_IMAGES[i][0]);
|
|
34
|
+
chai_1.assert.deepStrictEqual((0, IIPMetrics_1.imageType)(imageData), TEST_IMAGES[i][1]);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=IIPMetrics.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IIPMetrics.test.js","sourceRoot":"","sources":["../src/IIPMetrics.test.ts"],"names":[],"mappings":"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"}
|