@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.
@@ -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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"}