このパッケージは、MIMEタイプを構造化された形式に解析し、次に操作してシリアル化できます。
const MIMEType = require ( "whatwg-mimetype" ) ;
const mimeType = new MIMEType ( `Text/HTML;Charset="utf-8"` ) ;
console . assert ( mimeType . toString ( ) === "text/html;charset=utf-8" ) ;
console . assert ( mimeType . type === "text" ) ;
console . assert ( mimeType . subtype === "html" ) ;
console . assert ( mimeType . essence === "text/html" ) ;
console . assert ( mimeType . parameters . get ( "charset" ) === "utf-8" ) ;
mimeType . parameters . set ( "charset" , "windows-1252" ) ;
console . assert ( mimeType . parameters . get ( "charset" ) === "windows-1252" ) ;
console . assert ( mimeType . toString ( ) === "text/html;charset=windows-1252" ) ;
console . assert ( mimeType . isHTML ( ) === true ) ;
console . assert ( mimeType . isXML ( ) === false ) ;
解析はかなり複雑なプロセスです。詳細については(およびシリアル化についても同様に)仕様を参照してください。
このパッケージのアルゴリズムは、WhatWG Mime Sniffing Standardのアルゴリズムに準拠しており、8E9A7DDをコミットするために整合しています。
MIMEType
APIこのパッケージのメインモジュールのデフォルトエクスポートは、クラスのMIMEType
です。そのコンストラクターは、mimeタイプに解析しようとする文字列を取ります。解析が失敗すると、 Error
がスローされます。
parse()
静的工場法コンストラクターに代わるものとして、 MIMEType.parse(string)
を使用できます。唯一の違いは、 parse()
が失敗した解析でnull
を返すことですが、コンストラクターは投げます。したがって、比類のないMIMEタイプが例外的である場合にコンストラクターを使用し、制約のないソースからの入力を扱うときにparse()
を使用することが最も理にかなっています。
type
:MIMEタイプのタイプ、例: "text"
subtype
:MIMEタイプのサブタイプ、 "html"
essence
:マイムタイプのエッセンス、例: "text/html"
parameters
:このMIMEタイプのパラメーターを含むMIMETypeParameters
のインスタンスtype
とsubtype
変更できます。それらは空ではないと検証され、HTTPトークンコードポイントのみが含まれています。
essence
ゲッターにすぎず、変更することはできません。
parameters
もゲッターですが、以下で説明するように、 MIMETypeParameters
オブジェクトの内容は可変です。
toString()
mimeタイプを文字列にシリアル化しますisHTML()
:このインスタンスがHTML MIMEタイプを表す場合はtrueを返しますisXML()
:このインスタンスがXML MIMEタイプを表す場合はtrueを返しますisJavaScript({ prohibitParameters })
:このインスタンスがJavaScript Mimeタイプを表す場合、trueを返します。 prohibitParameters
、パラメーターを禁止するために真で設定できます。つまり、MIMEタイプのシリアル化がJavaScript Mimeタイプのエッセンスマッチであるかどうかをテストすることができます。注: isHTML()
、 isXML()
、およびisJavaScript()
メソッドは投機的であり、将来の主要バージョンで削除または変更される場合があります。この分野でのブレーンストーミングについては、WhatWG/Mimesniff#48を参照してください。現在、これらは主にJSDOMで有用であるために実装しています。
MIMETypeParameters
API mimeType.parameters
によって返されるMIMETypeParameters
クラスは、JavaScript Map
に同等の表面APIを持っています。
ただし、 MIMETypeParameters
メソッドは常にMIMEタイプに適した引数を解釈するため、EGパラメーター名は低段階であり、無効な文字を設定しようとするとスローされます。
いくつかの例:
const mimeType = new MIMEType ( `x/x;a=b;c=D;E="F"` ) ;
// Logs:
// a b
// c D
// e F
for ( const [ name , value ] of mimeType . parameters ) {
console . log ( name , value ) ;
}
console . assert ( mimeType . parameters . has ( "a" ) ) ;
console . assert ( mimeType . parameters . has ( "A" ) ) ;
console . assert ( mimeType . parameters . get ( "A" ) === "b" ) ;
mimeType . parameters . set ( "Q" , "X" ) ;
console . assert ( mimeType . parameters . get ( "q" ) === "X" ) ;
console . assert ( mimeType . toString ( ) === "x/x;a=b;c=d;e=F;q=X" ) ;
// Throws:
mimeType . parameters . set ( "@" , "x" ) ;
独自のAPIを構築するためのプリミティブが必要な場合は、次のように解析およびシリアル化アルゴリズムに直接アクセスできます。
const parse = require ( "whatwg-mimetype/parser" ) ;
const serialize = require ( "whatwg-mimetype/serialize" ) ;
parse(string)
type
とsubtype
文字列を含むオブジェクトと、 Map
であるparameters
を返します。これは、SpecのMimeタイプレコードにほぼ同等です。解析が失敗した場合、代わりにnull
を返します。
serialize(record)
そのようなオブジェクトで動作し、シリアル化アルゴリズムに従って文字列を返します。