@xterm/addon-image 0.9.0-beta.99 → 0.10.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/out/IIPHandler.js DELETED
@@ -1,148 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IIPHandler = void 0;
4
- const ImageRenderer_1 = require("./ImageRenderer");
5
- const ImageStorage_1 = require("./ImageStorage");
6
- const Base64Decoder_wasm_1 = require("xterm-wasm-parts/lib/base64/Base64Decoder.wasm");
7
- const IIPHeaderParser_1 = require("./IIPHeaderParser");
8
- const IIPMetrics_1 = require("./IIPMetrics");
9
- // limit hold memory in base64 decoder
10
- const KEEP_DATA = 4194304;
11
- // default IIP header values
12
- const DEFAULT_HEADER = {
13
- name: 'Unnamed file',
14
- size: 0,
15
- width: 'auto',
16
- height: 'auto',
17
- preserveAspectRatio: 1,
18
- inline: 0
19
- };
20
- class IIPHandler {
21
- constructor(_opts, _renderer, _storage, _coreTerminal) {
22
- this._opts = _opts;
23
- this._renderer = _renderer;
24
- this._storage = _storage;
25
- this._coreTerminal = _coreTerminal;
26
- this._aborted = false;
27
- this._hp = new IIPHeaderParser_1.HeaderParser();
28
- this._header = DEFAULT_HEADER;
29
- this._dec = new Base64Decoder_wasm_1.default(KEEP_DATA);
30
- this._metrics = IIPMetrics_1.UNSUPPORTED_TYPE;
31
- }
32
- reset() { }
33
- start() {
34
- this._aborted = false;
35
- this._header = DEFAULT_HEADER;
36
- this._metrics = IIPMetrics_1.UNSUPPORTED_TYPE;
37
- this._hp.reset();
38
- }
39
- put(data, start, end) {
40
- if (this._aborted)
41
- return;
42
- if (this._hp.state === 4 /* HeaderState.END */) {
43
- if (this._dec.put(data, start, end)) {
44
- this._dec.release();
45
- this._aborted = true;
46
- }
47
- }
48
- else {
49
- const dataPos = this._hp.parse(data, start, end);
50
- if (dataPos === -1) {
51
- this._aborted = true;
52
- return;
53
- }
54
- if (dataPos > 0) {
55
- this._header = Object.assign({}, DEFAULT_HEADER, this._hp.fields);
56
- if (!this._header.inline || !this._header.size || this._header.size > this._opts.iipSizeLimit) {
57
- this._aborted = true;
58
- return;
59
- }
60
- this._dec.init(this._header.size);
61
- if (this._dec.put(data, dataPos, end)) {
62
- this._dec.release();
63
- this._aborted = true;
64
- }
65
- }
66
- }
67
- }
68
- end(success) {
69
- if (this._aborted)
70
- return true;
71
- let w = 0;
72
- let h = 0;
73
- // early exit condition chain
74
- let cond = true;
75
- if (cond = success) {
76
- if (cond = !this._dec.end()) {
77
- this._metrics = (0, IIPMetrics_1.imageType)(this._dec.data8);
78
- if (cond = this._metrics.mime !== 'unsupported') {
79
- w = this._metrics.width;
80
- h = this._metrics.height;
81
- if (cond = w && h && w * h < this._opts.pixelLimit) {
82
- [w, h] = this._resize(w, h).map(Math.floor);
83
- cond = w && h && w * h < this._opts.pixelLimit;
84
- }
85
- }
86
- }
87
- }
88
- if (!cond) {
89
- this._dec.release();
90
- return true;
91
- }
92
- const blob = new Blob([this._dec.data8], { type: this._metrics.mime });
93
- this._dec.release();
94
- if (!window.createImageBitmap) {
95
- const url = URL.createObjectURL(blob);
96
- const img = new Image();
97
- return new Promise(r => {
98
- img.addEventListener('load', () => {
99
- var _a;
100
- URL.revokeObjectURL(url);
101
- const canvas = ImageRenderer_1.ImageRenderer.createCanvas(window.document, w, h);
102
- (_a = canvas.getContext('2d')) === null || _a === void 0 ? void 0 : _a.drawImage(img, 0, 0, w, h);
103
- this._storage.addImage(canvas);
104
- r(true);
105
- });
106
- img.src = url;
107
- // sanity measure to avoid terminal blocking from dangling promise
108
- // happens from corrupt data (onload never gets fired)
109
- setTimeout(() => r(true), 1000);
110
- });
111
- }
112
- return createImageBitmap(blob, { resizeWidth: w, resizeHeight: h })
113
- .then(bm => {
114
- this._storage.addImage(bm);
115
- return true;
116
- });
117
- }
118
- _resize(w, h) {
119
- var _a, _b, _c, _d;
120
- const cw = ((_a = this._renderer.dimensions) === null || _a === void 0 ? void 0 : _a.css.cell.width) || ImageStorage_1.CELL_SIZE_DEFAULT.width;
121
- const ch = ((_b = this._renderer.dimensions) === null || _b === void 0 ? void 0 : _b.css.cell.height) || ImageStorage_1.CELL_SIZE_DEFAULT.height;
122
- const width = ((_c = this._renderer.dimensions) === null || _c === void 0 ? void 0 : _c.css.canvas.width) || cw * this._coreTerminal.cols;
123
- const height = ((_d = this._renderer.dimensions) === null || _d === void 0 ? void 0 : _d.css.canvas.height) || ch * this._coreTerminal.rows;
124
- const rw = this._dim(this._header.width, width, cw);
125
- const rh = this._dim(this._header.height, height, ch);
126
- if (!rw && !rh) {
127
- const wf = width / w; // TODO: should this respect initial cursor offset?
128
- const hf = (height - ch) / h; // TODO: fix offset issues from float cell height
129
- const f = Math.min(wf, hf);
130
- return f < 1 ? [w * f, h * f] : [w, h];
131
- }
132
- return !rw
133
- ? [w * rh / h, rh]
134
- : this._header.preserveAspectRatio || !rw || !rh
135
- ? [rw, h * rw / w] : [rw, rh];
136
- }
137
- _dim(s, total, cdim) {
138
- if (s === 'auto')
139
- return 0;
140
- if (s.endsWith('%'))
141
- return parseInt(s.slice(0, -1)) * total / 100;
142
- if (s.endsWith('px'))
143
- return parseInt(s.slice(0, -2));
144
- return parseInt(s) * cdim;
145
- }
146
- }
147
- exports.IIPHandler = IIPHandler;
148
- //# sourceMappingURL=IIPHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IIPHandler.js","sourceRoot":"","sources":["../src/IIPHandler.ts"],"names":[],"mappings":"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"}
@@ -1,156 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"IIPHeaderParser.js","sourceRoot":"","sources":["../src/IIPHeaderParser.ts"],"names":[],"mappings":"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"}
@@ -1,137 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"IIPHeaderParser.test.js","sourceRoot":"","sources":["../src/IIPHeaderParser.test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,+BAA8B;AAC9B,uDAA6E;AAG7E,MAAM,KAAK,GAA8B;IACvC,CAAC,iCAAiC,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC;IACjE,CAAC,+BAA+B,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC;IAC/D,yBAAyB;IACzB,CAAC,yCAAyC,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC;IAC5E,CAAC,uCAAuC,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC;IAC1E,mBAAmB;IACnB;QACE,4FAA4F;QAC5F;YACE,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;YACb,mBAAmB,EAAE,CAAC;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;SAChB;KACF;IACD;QACE,2FAA2F;QAC3F;YACE,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,IAAI;YACZ,mBAAmB,EAAE,CAAC;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;SAChB;KACF;CACF,CAAC;AAEF,SAAS,MAAM,CAAC,EAAU;IACxB,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACjB,MAAM,EAAE,GAAG,IAAI,8BAAY,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;YAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,EAAE,GAAG,IAAI,8BAAY,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACtC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3B,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;YAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,GAAG,IAAI,8BAAY,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAC/C,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;QAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,EAAE,GAAG,IAAI,8BAAY,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAChD,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;QAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,8BAAY,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC9C,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;QAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,CAAC;QACrD,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;QAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,GAAG,IAAI,8BAAY,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;QAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QACtD,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;QAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,GAAG,IAAI,8BAAY,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,wFAAwF,CAAC,CAAC;QAC3G,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,aAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,0BAAkB,CAAC;QAC9C,aAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/out/IIPMetrics.js DELETED
@@ -1,69 +0,0 @@
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.UNSUPPORTED_TYPE = void 0;
8
- exports.imageType = imageType;
9
- exports.UNSUPPORTED_TYPE = {
10
- mime: 'unsupported',
11
- width: 0,
12
- height: 0
13
- };
14
- function imageType(d) {
15
- if (d.length < 24) {
16
- return exports.UNSUPPORTED_TYPE;
17
- }
18
- const d32 = new Uint32Array(d.buffer, d.byteOffset, 6);
19
- // PNG: 89 50 4E 47 0D 0A 1A 0A (8 first bytes == magic number for PNG)
20
- // + first chunk must be IHDR
21
- if (d32[0] === 0x474E5089 && d32[1] === 0x0A1A0A0D && d32[3] === 0x52444849) {
22
- return {
23
- mime: 'image/png',
24
- width: d[16] << 24 | d[17] << 16 | d[18] << 8 | d[19],
25
- height: d[20] << 24 | d[21] << 16 | d[22] << 8 | d[23]
26
- };
27
- }
28
- // JPEG: FF D8 FF
29
- if (d[0] === 0xFF && d[1] === 0xD8 && d[2] === 0xFF) {
30
- const [width, height] = jpgSize(d);
31
- return { mime: 'image/jpeg', width, height };
32
- }
33
- // GIF: GIF87a or GIF89a
34
- if (d32[0] === 0x38464947 && (d[4] === 0x37 || d[4] === 0x39) && d[5] === 0x61) {
35
- return {
36
- mime: 'image/gif',
37
- width: d[7] << 8 | d[6],
38
- height: d[9] << 8 | d[8]
39
- };
40
- }
41
- return exports.UNSUPPORTED_TYPE;
42
- }
43
- function jpgSize(d) {
44
- const len = d.length;
45
- let i = 4;
46
- let blockLength = d[i] << 8 | d[i + 1];
47
- while (true) {
48
- i += blockLength;
49
- if (i >= len) {
50
- // exhausted without size info
51
- return [0, 0];
52
- }
53
- if (d[i] !== 0xFF) {
54
- return [0, 0];
55
- }
56
- if (d[i + 1] === 0xC0 || d[i + 1] === 0xC2) {
57
- if (i + 8 < len) {
58
- return [
59
- d[i + 7] << 8 | d[i + 8],
60
- d[i + 5] << 8 | d[i + 6]
61
- ];
62
- }
63
- return [0, 0];
64
- }
65
- i += 2;
66
- blockLength = d[i] << 8 | d[i + 1];
67
- }
68
- }
69
- //# sourceMappingURL=IIPMetrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IIPMetrics.js","sourceRoot":"","sources":["../src/IIPMetrics.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
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
- ['w3c_home_noexif.jpg', { mime: 'image/jpeg', width: 72, height: 48 }],
25
- ['spinfox.png', { mime: 'image/png', width: 148, height: 148 }],
26
- ['iphone_hdr_YES.jpg', { mime: 'image/jpeg', width: 3264, height: 2448 }],
27
- ['nikon-e950.jpg', { mime: 'image/jpeg', width: 800, height: 600 }],
28
- ['agfa-makernotes.jpg', { mime: 'image/jpeg', width: 8, height: 8 }],
29
- ['sony-alpha-6000.jpg', { mime: 'image/jpeg', width: 6000, height: 4000 }]
30
- ];
31
- describe('IIPMetrics', () => {
32
- it('bunch of testimages', () => {
33
- for (let i = 0; i < TEST_IMAGES.length; ++i) {
34
- const imageData = fs.readFileSync('./addons/addon-image/fixture/testimages/' + TEST_IMAGES[i][0]);
35
- chai_1.assert.deepStrictEqual((0, IIPMetrics_1.imageType)(imageData), TEST_IMAGES[i][1]);
36
- }
37
- });
38
- });
39
- //# sourceMappingURL=IIPMetrics.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IIPMetrics.test.js","sourceRoot":"","sources":["../src/IIPMetrics.test.ts"],"names":[],"mappings":"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"}