From d2ebb6fcb13a95f0ff7ac6e23c93af8d0bed8da9 Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Fri, 18 Dec 2020 23:59:37 +1300 Subject: [PATCH 1/3] Add support for CHM Signed-off-by: Richie Bendall --- core.d.ts | 6 ++++-- core.js | 7 +++++++ fixture/fixture.chm | Bin 0 -> 10176 bytes package.json | 3 ++- readme.md | 1 + supported.js | 6 ++++-- 6 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 fixture/fixture.chm diff --git a/core.d.ts b/core.d.ts index faebd69a..ed30448e 100644 --- a/core.d.ts +++ b/core.d.ts @@ -134,7 +134,8 @@ declare namespace core { | 'avif' | 'eps' | 'lzh' - | 'pgp'; + | 'pgp' + | 'chm'; type MimeType = | 'image/jpeg' @@ -260,7 +261,8 @@ declare namespace core { | 'application/vnd.sketchup.skp' | 'image/avif' | 'application/x-lzh-compressed' - | 'application/pgp-encrypted'; + | 'application/pgp-encrypted' + | 'application/vnd.ms-htmlhelp'; interface FileTypeResult { /** diff --git a/core.js b/core.js index 42db0137..f2fa20e4 100644 --- a/core.js +++ b/core.js @@ -1302,6 +1302,13 @@ async function _fromTokenizer(tokenizer) { }; } + if (checkString('ITSF')) { + return { + ext: 'chm', + mime: 'application/vnd.ms-htmlhelp' + }; + } + // Check for MPEG header at different starting offsets for (let start = 0; start < 2 && start < (buffer.length - 16); start++) { // Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE) diff --git a/fixture/fixture.chm b/fixture/fixture.chm new file mode 100644 index 0000000000000000000000000000000000000000..da3a7c0d834df802297d6952ddb1d310901f082e GIT binary patch literal 10176 zcmeI2doxp9 zm^==rB;AUN9!M_|MaLuW3L(w;P3Yd$J!_rrUH9I{FI|$(D!Yn4VBRe_cF(jxyWV;X@pww?R+1dfJ7b7)sct0+kK&3OGtqfAr$=VL@ zNFpPo1**zOO;=Yd4u|DKr*i2bGzU8K07u-@g zPObbG=eH9;N@??EER{mO;m~}M z7#5RDV{$<@H_mzE4`s7i3~?>6Uv0ym=0goJ@k~D!@RmmYX)>8jWpeyj>;UA~?k(4Q z{ToLPp>Y@^GjkJ^zB$&|P~XrH3t84iXnhpQ3WYH@++mJEV-6$nOb(aI^r4C0f%vna z|Bp)$X&f4tO!a2aKoJ%N6@&#Q026=-zyx3dFaekVOaLYT6MzZ81pYGuYb5}J2P}Xx zP=_W6a=-;Jfe&DT01yb+fCf0wLj%6h<#K=kNC5MPu|oh2a8S$$m;rNO0#HC7(pX>& z3?a)9da#f$Pi3~pg^+S^cf*J$7V``G`TteK(-c`C1^i>$ykx*~U~6l&W*3dkp|hB4 zObpN_24-lK5fs-1;yKIrl0OZs=!<*LLxrT0+2FUBC-9poPXNW=^4~zHC)m4 zRv$GFWbf91UsDElJktNEc+VO21ph{Z{&D(bc&_^$ysnP^tHDJrW#J<8CW~K)8ZDXb zf+jD=;1OF z%{@o=C$^wpDqq^xgAPpJgC5+vi5tfKG!jy1E9pj&xtzKu_HwEhcHqU?$brQ znc^2dvBjx0nUd6fiw1X0ziKPWfAu1zw1-z|B{}mhaf6fm0^xlpT=go(9>=4AB^!u>n^lQ2^HFvQdC$9_KKuC z98PO^@W62!#srSPgr;j*KTbZVtQWO3$Ggzkj(l9%I(BEtE*&l1TG?!DzMEe1Qf2Qb z=NxjOvR&-)IQz5c2RTz|8CqHB68go?AZ{%B`IJF-!$HDVm#6LjN|)J4tvAf?w^lLKi_wz zMK*2o^}c=9_?4ZanPnZfy0=h|-!@=GFZYj^m%jU?QEfAdRI~?|b+bIH;-?q!YL-=M zcGujB7@sbfHWH(UA|rk7nx{o`qoM=?GJSPnwEXGQzLfY+Q#KW{{s$8npKa7}RmWlu zCh!$&`I|j3qcUk`imGm-@|VU>c_H;KkFI>q&ushH)a5hL`Z=0XFFI+Tky*-DO-^1CQ0fJU=ChVagW9;M{T001yMbM{$oeXB^`{gy)A-4NvGGoH^k>cL>=V_|=^h?$qj4j=IX5(vE=pQno*{I2BRJn_V||s=oP*k1rk3#p zml2ft+Z8ALPNyNf=dXl|gYA5k_ub>?@3{D0D%Mgm8?je2BbBvZcggLjcGXy~?Z;oR zxO-%3Z@{ZVMwQRrWl_$^hu@D@GnG|0Td(O^<d9_sRsKxTs118&@ zNVZPAbR2K&>9R4)R8y6P2BnU2Xh$-r3o0hK2K_91u5PK1P19r5-w^4IU^e_)Y(KV?Qs7+RKH w9ULxSw?z~@G0`#fvM*xnzw_0<2!Pc2|G-H@SL#4(e&XD?V6H~QoSsv^14?5I3jhEB literal 0 HcmV?d00001 diff --git a/package.json b/package.json index ba6c8ba8..25879cdb 100644 --- a/package.json +++ b/package.json @@ -177,7 +177,8 @@ "avif", "eps", "lzh", - "pgp" + "pgp", + "chm" ], "devDependencies": { "@types/node": "^13.1.4", diff --git a/readme.md b/readme.md index 2606231e..87b04b05 100644 --- a/readme.md +++ b/readme.md @@ -401,6 +401,7 @@ Returns a set of supported MIME types. - [`eps`](https://en.wikipedia.org/wiki/Encapsulated_PostScript) - Encapsulated PostScript - [`lzh`](https://en.wikipedia.org/wiki/LHA_(file_format)) - LZH archive - [`pgp`](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) - Pretty Good Privacy +- [`chm`](https://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help) - Microsoft Compiled HTML Help *Pull requests are welcome for additional commonly used file types.* diff --git a/supported.js b/supported.js index e4f99f18..83392a42 100644 --- a/supported.js +++ b/supported.js @@ -132,7 +132,8 @@ module.exports = { 'avif', 'eps', 'lzh', - 'pgp' + 'pgp', + 'chm' ], mimeTypes: [ 'image/jpeg', @@ -258,6 +259,7 @@ module.exports = { 'application/vnd.sketchup.skp', 'image/avif', 'application/x-lzh-compressed', - 'application/pgp-encrypted' + 'application/pgp-encrypted', + 'application/vnd.ms-htmlhelp' ] }; From d534a78ecece45a0862e06b1c9c1c21d06af0512 Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Sun, 20 Dec 2020 15:00:44 +1300 Subject: [PATCH 2/3] Update core.js --- core.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core.js b/core.js index ec6acd21..316af919 100644 --- a/core.js +++ b/core.js @@ -879,6 +879,13 @@ async function _fromTokenizer(tokenizer) { }; } } + + if (checkString('ITSF')) { + return { + ext: 'chm', + mime: 'application/vnd.ms-htmlhelp' + }; + } // -- 6-byte signatures -- @@ -1326,13 +1333,6 @@ async function _fromTokenizer(tokenizer) { }; } - if (checkString('ITSF')) { - return { - ext: 'chm', - mime: 'application/vnd.ms-htmlhelp' - }; - } - // Check for MPEG header at different starting offsets for (let start = 0; start < 2 && start < (buffer.length - 16); start++) { // Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE) From 33a1b53abf29691942db39a488f899fda80b0c69 Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Mon, 21 Dec 2020 14:44:14 +1300 Subject: [PATCH 3/3] Update core.js --- core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core.js b/core.js index 316af919..07051ea2 100644 --- a/core.js +++ b/core.js @@ -879,7 +879,7 @@ async function _fromTokenizer(tokenizer) { }; } } - + if (checkString('ITSF')) { return { ext: 'chm',