12 リファレンス: カスタム監査ルールのリスナー・タイプ

このリファレンスを使用して、カスタム監査ルールに登録できるリスナー・タイプについて学習します。使用可能なリスナー・タイプは、Oracle JETアプリケーションのファイル・タイプに固有です。

リスナー・タイプ 説明

HTMLおよびJSONルールのリスナー・タイプ

Oracle JAF監査エンジンは、HTMLおよびJSONファイルに固有のリスナー・タイプの長いリストをサポートしています。

CSSルールのリスナー・タイプ

Oracle JAF監査エンジンは、CSSソース・ファイルに固有のリスナー・タイプをサポートしています。

JavaScript/TypeScriptルールのリスナー・タイプ

Oracle JAF監査エンジンは、JavaScriptソース・ファイルに固有のリスナー・タイプをサポートしています。

Markdownルールのリスナー・タイプ

Oracle JAF監査エンジンは、Markdownソース・ファイルに固有のリスナー・タイプをサポートしています。

TSXルールのリスナー・タイプ

Oracle JAF監査エンジンは、TSXソース・ファイルのレンダリング可能なJSXコンテンツに固有のリスナー・タイプをサポートしています。

HTMLおよびJSONルールのリスナー・タイプ

Oracle JAF監査エンジンは、HTMLおよびJSONファイルに固有のリスナー・タイプの長いリストをサポートしています。

次の表では、HTMLおよびJSONファイルの内容を解析し、解析されたファイルの抽象構文ツリー(AST)を生成する際にJAFで検出される可能性のある様々なデータ・ノードのリスナー・イベント・タイプについて説明します。アプリケーションのHTMLおよびJSONファイルに対して監査ルールを実装するには、必要なノードにイベント・リスナーを登録します。この表では、登録済リスナーで指定する適切な引数と、特定のノードのイベントでリスナーがアクセスできるコンテキスト・プロパティも示します。

リスナー・タイプ リスナー引数 説明(使用可能なコンテキスト・プロパティを含む)

webcomp

(Object context, string elementName)

Webコンポーネントとして認識されるDOM要素に対してコールされます。

webcompイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
  • context.type—文字列tag
  • context.tag—要素名を示す文字列
  • context.ojTag—ブール: 要素がOracle JET Webコンポーネントである場合はtrue
  • context.tagNode—抽象構文ツリー(AST)の現在のノードを示すオブジェクト。
  • context.node—ASTの現在のノードを示すオブジェクト。
  • context.position—メンバーrowおよびcolがタグの位置を表すオブジェクト。メンバーstartIndexおよびendIndexは、ファイルへの移動を表します。
  • context.rawData—リソース(ファイルまたはURL)からのデータを示す文字列。これは、zipファイル・データには使用されません。
  • context.data—監査対象のデータを示す文字列。通常、これはrawDataと同じですが、zip内のHTMLファイルの場合は異なる場合があります。HTMLデータはrawData内にありますが、HTMLに埋込みJavaScriptまたはCSSが含まれていて、そのデータが監査対象である場合、dataにはJavaScriptまたはCSSデータが含まれます。
  • context.suppData—Nullのオブジェクト。ただし、Oracle Component Exchangeのzipファイルが関与する監査の場合は例外です。zipにcomponent.jsonファイルが含まれている場合、suppDatacomponent.jsonに関する補足情報を含むオブジェクトです。このプロパティは、zip内で処理される他のすべてのファイルに存在し、component.jsonのコンテキストでファイルを評価できるようにします。このオブジェクトには、次のプロパティが含まれています:
    • suppData.obj—解析されたJSONを含むオブジェクト。解析が失敗した場合はNullです。
    • suppData.msg—解析が失敗した場合はエラー・メッセージが表示され、それ以外の場合はNullです。
  • context.elemStack—現在の要素への親要素名の配列。最後のエントリ(索引が最上位のエントリ)が、現在の要素名です。たとえば、["html", "body", "div", oj-button"]です。

jetcomp

(Object context, string elementName)

JET Webコンポーネントに対してコールされます。

jetcompイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
  • context.type—文字列jetcomp
  • context.ojTag—ブール: 要素がOracle JET Webコンポーネントである場合はtrue
  • context.ojNs—ブール: true

他のすべてのcontextコンテンツについては、前のwebcompエントリを参照してください。

extcomp

(Object context, string elementName)

外部(JET以外)のWebコンポーネントに対してコールされます。

extcompイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
  • context.type—文字列extcomp
  • context.ojTag—ブール: false
  • context.ojNs—ブール: 要素名がOJネームスペースで定義されている場合はtrue

他のすべてのcontextコンテンツについては、前のwebcompエントリを参照してください。

elem

(Object context, string elementName)

DOM要素に対してコールされます。

elemイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
  • context.type—文字列elem
  • context.ojTag—ブール: 要素がOracle JET Webコンポーネントである場合はtrue
  • context.ojNS—ブール: 要素名がOJネームスペースで定義されている場合はtrue

globtag

(Object context, string elementName)

グローバル/共通DOM要素(標準HTML5要素名を含む)に対してコールされます。

globtagイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
  • context.type—文字列tag
  • context.ojTag—ブール: false
  • context.ojNS—ブール: false

notglob

(Object context, string elementName)

共通HTML名でもSVGタグ名でもない要素に対してコールされます。

notglobイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
  • context.type—文字列notglob
  • context.ojTag—ブール: 要素がJETコンポーネントである場合はtrue
  • context.ojNS—ブール: タグで登録済ネームスペースを使用している場合はtrue、それ以外はfalse

tag

(Object context, string elementName)

oj-で始まらない要素名に対してコールされます。

tagイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列tag
  • context.ojTag—ブール: false
  • context.ojNS—ブール: false

bindingtag

(Object context, string elementName)

oj-bind-ifoj-bind-for-eachなどのJETバインディング・タグに対してコールされます。

bindingtagイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列bindingtag
  • context.ojTag—ブール: false
  • context.ojNS—ブール: 要素名がOJネームスペースで定義されている場合はtrue

ojtag

(Object context, string elementName)

oj-で始まる要素名に対してコールされます。

ojtagイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列ojtag
  • context.ojTag—ブール: false
  • context.ojNS—ブール: 要素名がOJネームスペースで定義されている場合はtrue

<component>

(Object context, string elementName)

名前が山カッコで囲まれて宣言されている(例: <oj-messages>)非グローバルHTML要素に対してコール出されます。正規表現(たとえば、"oj-combobox"で始まるすべての要素の一致を見つける場合は<^oj-combobox>)を使用できます。また、コンポーネント名の両側に空白を使用できます。

<component>イベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列<component>
  • context.ojTag—ブール: false
  • context.ojNS—ブール: 要素名がOJネームスペースで定義されている場合はtrue

<component attrname=>

(Object context, string attribName, string attribValue, string rawAttribValue)

指定された属性がコンポーネント要素(例: <oj-messages display-options.category=>)で見つかった場合、その属性に対してコールされます。

コンポーネント名の両側および終了の山カッコの前に空白を使用できます。コンポーネント宣言は正規表現にできません。

<component attrname=>イベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列<component|attrname>

ノート:

classおよびstyle属性の詳細は、<attrname=>エントリの注意を参照してください。

<attrname=>

(Object context, string attribName, string attribValue, string rawAttribValue)

コンポーネント要素(例: <display-options.category=>)で見つかった指定の属性に対してコールされます。

これは、前述のコンポーネント/属性の組合せでコンポーネントが省略された特殊なケースです。属性宣言の両側に空白を使用できます。

<attrname=>イベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列<attrname=>

ノート:

この構文は、style属性やclass属性には使用しないでください。これらの特殊なケースは、それぞれ独自の登録済タイプのスタイルおよびクラスによって処理されます。この表の後続のエントリを参照してください。

script

(Object context, string elementName)

<script>要素に対してコールされます。登録済タイプtagのルールもコールされます。

link

(Object context, string elementName)

<link>要素に対してコールされます。登録済タイプtagのルールもコールされます。

attr

(Object context, string attribName, string attribValue, string rawAttribValue)

要素の各属性に対してコールされます(Oracle JETのeventtypeおよびclass属性を除く)。

rawAttrValue属性値には、引用符を区切る文字列を含む完全なテキストが含まれます。

attrイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列attr

attrexpr

(Object context, string attribName, string attribValue, string rawAttribValue)

属性値が[[. . .]]または{{. . .}}式を表す場合に、要素の各属性に対してコールされます。

attrexpr-$props

(Object context, string attribName, string attribValue, string rawAttribValue)

値が[[. . .]]または{{. . .}}式を表し、$propertiesへの参照が少なくとも1つ含まれている各属性に対してコールされます。

class

(Object context, string elemName, string classValue)

要素の各class属性に対してコールされます。

classイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列class

style

(Object context, string attribName, string[] attribValue, string rawAttribValue)

要素の各style属性に対してコールされます。

attrValueは、style属性から抽出されたスタイルの配列です。rawAttrValueは属性文字列です。

styleイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列style

type

(Object context, string elemName, string typeValue)

要素の各type属性に対してコールされます。

typeイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列type

event

(Object context, string eventName, Object eventValue)

Oracle JETの各イベント属性(on-oj-で始まる)に対してコールされます。

eventValue属性は、次のプロパティを持つオブジェクトです:

  • val—イベント属性値を示す文字列。
  • rawval—(指定された)引用符を含む完全なイベント属性値を示す文字列。
eventイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列event

comment

(Object context, string comment)

<!-- -->形式のHTMLコメントに対してコールされます。

たとえば、コメント<!-- This is a comment -->の場合、comment引数には文字列This is a commentが含まれます。

doctype

(Object context, string comment, string value)

<!DOCTYPE ...>形式のディレクティブに対してコールされます。

たとえば、コメント<!DOCTYPE html>の場合、doctype引数には、文字列!DOCTYPE htmlを含む完全なデータが格納され、value引数には、文の残りの部分である文字列htmlが格納されます。

procstmt

(Object context, string procinstr, string value)

<? x..........x?>型の処理命令に対してコールされます。

たとえば、procinstr引数は文字列?robots index="yes" follow="no"?になり、value引数には、文の残りの部分である文字列(この場合は index="yes" follow="no")が格納されます。

directive

(Object context, string directive, string value)

DOCTYPE命令ではない<!xxxx>形式の処理命令に対してコールされます。

たとえば、ディレクティブ<!ABCD xxxx>の場合、directive引数には、文字列!ABCD xxxxを含む完全なデータが格納され、value引数には、文の残りの部分である文字列xxxxが格納されます。

json

(Object context)

json型のファイルに対してコールされます。

jsonイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列json
  • context.suppData—次のメンバーを含むオブジェクト。
    • suppData.obj—解析されたJSONオブジェクト。解析が失敗した場合はNullです。
    • suppData.ast—JSONファイルの抽象構文ツリー(AST)。解析が失敗した場合はNullです。
    • suppData.msg—解析が失敗した場合はエラー・メッセージが表示され、それ以外の場合はNullです。

compjson

(Object context)

json型のファイルに対してコールされます。

compjsonイベント・リスナーは、次のプロパティにアクセスできます。
  • context.type—文字列json
  • context.suppData—次のメンバーを含むオブジェクト。
    • suppData.obj—解析されたJSONオブジェクト。解析が失敗した場合はNullです。
    • suppData.ast—JSONファイルの抽象構文ツリー(AST)。解析が失敗した場合はNullです。
    • suppData.msg—解析が失敗した場合はエラー・メッセージが表示され、それ以外の場合はNullです。

file

(Object context)

ファイルの読取り後、標準ルール(フック・ルールではなくノード・ルール)がファイルで起動される前にコールされます。

fileイベント・リスナーは、次のプロパティにアクセスできます。
  • context.phase—文字列file
  • context.rawData—ファイルの内容を示す文字列。
  • context.data—監査対象のデータを示す文字列。通常、これはrawDataと同じですが、zip内のHTMLファイルの場合は異なる場合があります。HTMLデータはrawData内にありますが、HTMLに埋込みJavaScriptまたはCSSが含まれていて、そのデータが監査対象である場合、dataにはJavaScriptまたはCSSデータが含まれます。
  • context.suppData—補足ファイル・データを含む文字列。
  • context.zipContent—コンポーネントzip内のファイル名の配列、またはzipの展開中にエラーが発生した場合はエラー文字列。ファイル・タイプが.zipの場合のみです。

endfile

(Object context)

すべての標準ルール(フック・ルールではなくノード・ルール)がファイルで起動された後にコールされます。

endfileイベント・リスナーは、次のプロパティにアクセスできます。
  • context.phase—文字列file
  • context.rawData—ファイルの内容を示す文字列。
  • context.data—監査対象のデータを示す文字列。通常、これはrawDataと同じですが、zip内のHTMLファイルの場合は異なる場合があります。HTMLデータはrawData内にありますが、HTMLに埋込みJavaScriptまたはCSSが含まれていて、そのデータが監査対象である場合、dataにはJavaScriptまたはCSSデータが含まれます。
  • context.suppData—補足ファイル・データを含む文字列。
  • context.zipContent—コンポーネントzip内のファイル名の配列、またはzipの展開中にエラーが発生した場合はエラー文字列。ファイル・タイプが.zipの場合のみです。

CSSルールのリスナー・タイプ

Oracle JAF監査エンジンは、CSSソース・ファイルに固有のリスナー・タイプをサポートしています。

次の表では、CSSファイルの内容を解析し、解析されたファイルの抽象構文ツリー(AST)を生成する際にJAFで検出される可能性のある様々なデータ・ノードのリスナー・イベント・タイプについて説明します。アプリケーションのCSSファイルに対して監査ルールを実装するには、必要なCSSノードにイベント・リスナーを登録します。この表では、登録済リスナーで指定する適切な引数も示します。

リスナー・タイプ リスナー引数 説明

css-sheet

(Object context, node sheet)

スタイルシートに対してコールされます。sheetは、シートのすべてのルール・ノードを表すASTのノードです。完全なASTは、context.astにあります。

css-rule (Object context, Object rule)

CSSルール宣言に対してコールされます。ruleはASTのノードです。

ルール・ノードには、SelectorListSelectorBlockの各プロパティおよびサブプロパティが含まれています。完全なASTは、context.astにあります。

css-atrule (Object context, Object rule, string identifier)

任意のCSS @rule文に対してコールされます。たとえば、@keyframesです。

ruleはASTのノードです。

identifierはルール識別子です。たとえば、 @keyframesの場合、identifierはkeyframesになります。

ルール・ノードには、SelectorListSelectorBlockの各プロパティおよびサブプロパティが含まれています。完全なASTは、context.astにあります。

css-@xxxx (Object context, Object rule, string identifier)

名前xxxxのCSS文に対してコールされます。たとえば、@mediaの場合、タイプはcss-@mediaになります。

ruleはASTのノードです。

identifierはルール識別子です。たとえば、@mediaの場合、identifierはmediaになります。

ルール・ノードには、SelectorListSelectorBlockの各プロパティおよびサブプロパティが含まれています。完全なASTは、context.astにあります。

css-selector

(Object context, node selector)

あるタイプのセレクタに対してコールされます。実際のセレクタ・タイプについては、node.typeを参照してください。

css-sel-type

(Object context, node selector)

typeセレクタに対してコールされます。

css-sel-id

(Object context, node selector)

IDセレクタに対してコールされます。

css-sel-class

(Object context, node selector)

classセレクタに対してコールされます。

css-sel-pseudo

(Object context, node selector)

pseudoセレクタに対してコールされます。

css-var

(Object context, node var, Object rule )

CSS変数宣言に対してコールされます。varはASTの変数宣言ノードであり、変数に関するすべての情報が含まれています。varの著名なメンバーは2つです:

  • var.propertyString型で、CSS変数の名前を参照します。
  • var.valueObject型で、CSS変数の値を参照します。解析された値の詳細は、配列var.value.childrenの要素内にあります

引数ruleは、変数宣言を含むルール・オブジェクトです。

Markdownルールのリスナー・タイプ

Oracle JAF監査エンジンは、Markdownソース・ファイルに固有のリスナー・タイプをサポートしています。

次の表では、Markdownファイルの内容を解析し、解析されたファイルの抽象構文ツリー(AST)を生成する際にJAFで検出される可能性のあるデータ・ノードのリスナー・イベント・タイプについて説明します。アプリケーションのMarkdownファイルに対して監査ルールを実装するには、必要なMarkdownノードにイベント・リスナーを登録します。この表では、登録済リスナーで指定する適切な引数も示します。

返されるオブジェクトの形式とそのプロパティの説明は、「Markdownルール・リスナーで使用可能なコンテキスト・オブジェクト・プロパティ」を参照してください。

リスナー・タイプ リスナー引数 説明

md-link

(オブジェクトコンテキストオブジェクトリンク)

直接または間接リンク参照に対して呼び出されます。たとえば、

[Click Here](https://some/link/foo.html)

また、マークアップのない段落テキストで見つかったURLに対しても呼び出されます。

linkオブジェクトは次のプロパティを持ちます:

  • inline: URLを含む完全なリンクを示すブール(デフォルトはtrue)
  • link: URL文字列
  • text: リンク・テキストを含む文字列:
    • line: 参照キーの行番号(1からの相対位置)
    • col: 参照キーの列番号(1からの相対位置)
    • start: 参照キーの先頭のインデックス番号
    • end: 参照キーの末尾のインデックス番号

リンク宣言が参照リンクを使用する場合、リンク・オブジェクトではinlineプロパティがfalseとして宣言され、refKeyプロパティがlinkプロパティに置き換わります。

md-ref (オブジェクトコンテキストオブジェクト参照)

間接リンク参照に対して呼び出されます。たとえば、

[some ref]: <the url>

refオブジェクトは次のプロパティを持ちます:

  • refKey: 参照キーを含む文字列(例: some ref)
  • link: URLへのリンクを含む文字列(例: www.github.com)
  • pos: 次のプロパティを持つ、場所情報を含むオブジェクト:
    • line: 参照キーの行番号(1からの相対位置)
    • col: 参照キーの列番号(1からの相対位置)
    • start: 参照キーの先頭のインデックス番号
    • end: 参照キーの末尾のインデックス番号
md-para (オブジェクトコンテキストオブジェクトパラメータ)

段落テキストおよび#を使用した見出しに対して呼び出されます。

paraオブジェクトは次のプロパティを持ちます:

  • text: 段落または見出しテキストを含む文字列
  • level: 見出しレベルの番号
  • pos: 段落/見出しの開始位置と終了位置の情報をそれぞれ次の形式で保持する2つのオブジェクトを含むオブジェクト:
    • line: 開始行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

    • line: 終了行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

ノート: 標準の段落テキストの場合、levelは0です。ゼロより大きい値は、マークアップ見出しの#文字の数を表します(たとえば、##は見出しレベルh2を表し、levelは2になります)。

md-image (オブジェクトコンテキストオブジェクトイメージ)

すべてのイメージ参照に対して呼び出されます。たとえば、

![Click Here](https://somelink/foo.png)

imageオブジェクトは次のプロパティを持ちます:

  • inline: URLを含む完全なリンクを示すブール(デフォルトはtrue)
  • link: イメージURL文字列
  • alt: 代替テキストを含む文字列
  • pos: 次のプロパティを持つ、場所情報を含むオブジェクト:
    • line: 参照キーの行番号(1からの相対位置)
    • col: 参照キーの列番号(1からの相対位置)
    • start: 参照キーの先頭のインデックス番号
    • end: 参照キーの末尾のインデックス番号

イメージ宣言が参照リンクを使用する場合、イメージ・オブジェクトではinlineプロパティがfalseとして宣言され、refKeyプロパティがlinkプロパティに置き換わります。

md-code (オブジェクトコンテキストオブジェクトコード)

(バックティックまたはチルドを使用した)すべてのフェンス・コード・ブロックに対して呼び出されます。たとえば、

```
// Installation instructions
npm install -g @oracle/oraclejet-audit
```

codeオブジェクトは次のプロパティを持ちます:

  • code: コード・ブロックを含む文字列。セパレータとして/n改行文字が使用されます
  • pos: 開始位置と終了位置の情報をそれぞれ次の形式で保持する2つのオブジェクトを含むオブジェクト:
    • line: 開始行番号(1からの相対位置)
    • start: コード・ブロックの先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

    • line: 終了行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: コード・ブロックの末尾のインデックス番号(0からの相対位置)
md-list (オブジェクトコンテキストオブジェクトリスト)

マークアップ*またはn.表記法を使用した順序付きまたは順序なしのリストに対して呼び出されます。

listオブジェクトは次のプロパティを持ちます:

  • ordered: ブール(順序なしリストにはfalseを使用し、順序付きリストにはtrueを使用)
  • items: リスト・アイテム・オブジェクトの配列。それぞれに、文字列値を参照するitemプロパティがあります
  • pos: リストの開始位置と終了位置の情報をそれぞれ次の形式で保持する2つのオブジェクトを含む配列:
    • line: 開始行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

    • line: 終了行番号(1からの相対位置)
    • start: 行の先頭のインデックス番号(0からの相対位置)
    • end: 行の末尾のインデックス番号(0からの相対位置)

リスト・アイテムがサブリストを表す場合、リスト・アイテム内にchildrenプロパティが使用されます。childrenプロパティはサブリスト・オブジェクトを含む配列です。各オブジェクトはlistオブジェクトと同じ形式になり、ordereditemsおよびposプロパティを持ちます。

JavaScript/TypeScriptルールのリスナー・タイプ

Oracle JAF監査エンジンは、JavaScript/TypeScriptソース・ファイルに固有のリスナー・タイプをサポートしています。

次の表では、JavaScript/TypeScriptファイルの内容を解析し、解析されたファイルの抽象構文ツリー(AST)を生成する際にJAFで検出される可能性のある様々なデータ・ノードのリスナー・イベント・タイプについて説明します。アプリケーションのJavaScript/TypeScriptファイルに対して監査ルールを実装するには、必要なJavaScript/TypeScriptノードにイベント・リスナーを登録します。

リスナー・タイプ リスナー・タイプ リスナー・タイプ

AssignmentExpression

AssignmentPattern

ArrayExpression

ArrayPattern

ArrowFunctionExpression

AwaitExpression

BlockStatement

BinaryExpression

BreakStatement

CallExpression

CatchClause

ClassBody

ClassDeclaration

ClassExpression

ConditionalExpression

ContinueStatement

DoWhileStatement

DebuggerStatement

EmptyStatement

ExperimentalRestProperty

ExperimentalSpreadProperty

ExpressionStatement

ForStatement

ForInStatement

ForOfStatement

FunctionDeclaration

FunctionExpression

Identifier

IfStatement

Literal

LabeledStatement

LogicalExpression

MemberExpression

MetaProperty

MethodDefinition

NewExpression

ObjectExpression

ObjectPattern

Program

プロパティ

RestElement

ReturnStatement

SequenceExpression

SpreadElement

Super

SwitchCase

SwitchStatement

TaggedTemplateExpression

TemplateElement

TemplateLiteral

ThisExpression

ThrowStatement

TryStatement

UnaryExpression

UpdateExpression

VariableDeclaration

VariableDeclarator

WhileStatement

WithStatement

YieldExpression

JSXIdentifier

JSXNamespacedName

JSXMemberExpression

JSXEmptyExpression

JSXExpressionContainer

JSXElement

JSXClosingElement

JSXOpeningElement

JSXAttribute

JSXSpreadAttribute

JSXText

ExportDefaultDeclaration

ExportNamedDeclaration

ExportAllDeclaration

ExportSpecifier

ImportDeclaration

ImportSpecifier

ImportDefaultSpecifier

ImportNamespaceSpecifier

前述のように定義されたASTノード・タイプのかわりに、省略された文字列定数のオブジェクトをルール・コンテキストで見つけることができます。たとえば:

var NT = ruleCtx.utils.AstUtils.getNodeTypes() ;
 
if (node.type === NT.CALL_EXPR || node.type === NT.MEMBER_EXPR)  {
   . . .
}

レジスタ・コンテキストでは、ルールがJavaScriptとTypeScriptのどちらを処理するかに応じて、regCtx.jsNodeTypes()またはregCtx.tsNodeTypes()にノード・タイプ・オブジェクトがあります。次の例では、JavaScriptのノード・タイプをキャッシュします。

var NT ;
 
register(regXtx)  {
   NT = regCtx.jsNodeTypes ;     // cache the node types
   . . .
}

使用可能な定数のリストです:

定数 ノード・タイプ
ARRAY_EXPR "ArrayExpression"
ARROW_FUNC_EXPR "ArrowFunctionExpression"
ASSIGN_PATTERN "AssignmentPattern"
ASSIGN_EXPR "AssignmentExpression"
ASSIGNMENT_EXPR "AssignmentExpression"
AWAIT_EXPR "AwaitExpression"
BINARY_EXPR "BinaryExpression"
BLOCK_STMT "BlockStatement"
BREAK_STMT "BreakStatement"
CALL_EXPR "CallExpression"
CATCH_CLAUSE "CatchClause"
CLASS_BODY "ClassBody"
CLASS_DECLARATION "ClassDeclaration"
CONDITIONAL_EXPR "ConditionalExpression"
CONTINUE_STMT "ContinueStatement
CLASS_EXPR "ClassExpression"
DO_WHILE_STMT "DoWhileStatement"
DEBUG_STMT "DebuggerStatement"
EMPTY_STMT "EmptyStatement"
EX_REST_PROP "ExperimentalRestProperty"
EXPR_STMT "ExpressionStatement"
EX_SPREAD_STMT "ExperimentalSpreadProperty"
FOR_STMT "ForStatement"
FOR_IN_STMT "ForInStatement"
FOR_OF_STMT "ForOfStatement"
FUNC_DECLARATION "FunctionDeclaration"
FUNC_EXPR "FunctionExpression"
IDENTIFIER "Identifier"
IF_STMT "IfStatement"
LOGIC_EXPR "LogicalExpression"
LABELED_STMT "LabeledStatement"
LITERAL "Literal"
MEMBER_EXPR "MemberExpression"
META_PROP "MetaProperty"
METH_DEF "MethodDefinition"
NEW_EXPR "NewExpression"
OBJ_EXPR "ObjectExpression"
OBJ_PATTERN "ObjectPattern"
PROGRAM "Program"
PROPERTY "Property"
PROPERTY_DEF

"PropertyDefintion"

ノート:

クラス・メソッドの定義に使用されるArrowFunctionExpressionの親ノードは、新しいASTパーサー・ライブラリの使用時に、ClassPropertyからこのPropertyDefintionノード・タイプに変更できます
REST_ELEM "RestElement"
RETURN_STMT "ReturnStatement"
SEQUENCE_EXPR "SequenceExpression"
SPREAD_ELEM "SpreadElement"
SUPER "Super"
SWITCH_CASE "SwitchCase"
SWITCH_STMT "SwitchStatement"
TAGGED_TEMPLATE_EXPR "TaggedTemplateExpression"
TEMPLATE_ELEM "TemplateElement"
TEMPLATE_LIT "TemplateLiteral"
THIS_EXPR "ThisExpression"
THROW_EXPR "ThrowExpression"
TRY_STMT "TryStatement"
UNARY_EXPR "UnaryExpression"
UPDATE_EXPR "UpdateExpression"
VAR_DECLARATION "VariableDeclaration"
VAR_DECLARATOR "VariableDeclarator"
WHILE_STMT "WhileStatement"
WITH_STMT "WithStatementt"
YIELD_EXPR "YieldExpression"
JSX_ID "JSXIdentifier"
JSX_NS_NAME "JSXNamespacedName"
JSX_EMPTY_EXPR "JSXEmptyExpression"
JSX_EXPR_CONTAINER "JSXExpressionContainer"
JSX_ELEM "JSXElement"
JSX_CLOSING_ELEM "JSXClosingElement"
JSX_OPENING_ELEM "JSXOpeningElement"
JSX_ATTRIB "JSXAttribute"
SX_SPREAD_ATTRIB "JSXSpreadAttribute"
JSX_TEXT "JSXText"
EXPORT_DEFAULT_DECL "ExportDefaultDeclaration"
EXPORT_NAMED_DECL "ExportNamedDeclaration"
EXPORT_ALL_DECL "ExportAllDeclaration"
EXPORT_SPECIFIER "ExportSpecifier"
IMPORT_DECL "ImportDeclaration"
IMPORT_EQUALS_DECL "TSImportEqualsDeclaration"
IMPORT_SPECIFIER "ImportSpecifier"
IMPORT_DEFAULT_SPECIFIER "ImportDefaultSpecifier"
IMPORT_NS_SPECIFIER "ImportNamespaceSpecifier"
EXTERN_MOD_REF "TSExternalModuleReference"

TSXルールのリスナー・タイプ

Oracle JAF監査エンジンは、TSXファイルに固有のリスナー・タイプをサポートしています。

次の表では、TSXファイルの内容を解析し、解析されたファイルの抽象構文ツリー(AST)を生成する際にJAFで検出される可能性のある様々なデータ・ノードのリスナー・イベント・タイプについて説明します。アプリケーションのTSXファイルに対して監査ルールを実装するには、必要なノードにイベント・リスナーを登録します。この表では、登録済リスナーで指定する適切な引数と、特定のノードのイベントでリスナーがアクセスできるコンテキスト・プロパティも示します。

リスナー・タイプ リスナー・シグネチャ 説明(使用可能なコンテキスト・プロパティを含む)

TsxRenderComponent

(Object ruleContext, Object tsxRenderComponent)

TSXレンダリング可能コンテンツの関連グループ(つまり、render()コールや変数宣言など、単一の宣言内の複数のコンポーネント/HTMLマークアップ要素)に対してコールされます

TsxComponent

(Object ruleContext, Object tsxComponent)

TSXレンダリング可能コンテンツで見つかったコンポーネント/HTML要素/Preact関数に対してコールされます。

TsxWebComponent

(Object ruleContext, Object tsxComponent)

TSXレンダリング可能コンテンツで見つかったJAFに認識されているWebコンポーネントに対してコールされます。

TsxJetComponent

(Object ruleContext, Object tsxComponent)

JET Webコンポーネント(レガシーまたはJETコア・パック)に対してコールされます

TsxElem

(Object ruleContext, Object tsxComponent)

TSXレンダリング可能コンテンツで見つかった標準HTML要素に対してコールされます。

TsxEvent

(Object ruleContext, Object tsxProperty)

TSXレンダリング可能コンテンツで見つかったイベント・プロパティに対してコールされます。

TsxProperty

(Object ruleContext, Object tsxProperty)

TSXレンダリング可能コンテンツで見つかったプロパティに対してコールされます。

Tsx<component_name>

(Object ruleContext, Object tsxComponent)

TSXレンダリング可能コンテンツで見つかった名前付きコンポーネント/HTML要素に対してコールされます。

Tsx<component_name propName=>

(Object ruleContext, Object tsxProperty)

TSXレンダリング可能コンテンツで見つかった名前付きコンポーネント/HTML要素および名前付きプロパティに対してコールされます。

Tsx<propName=>

(Object ruleContext, Object tsxProperty)

TSXレンダリング可能マークアップで見つかった名前付きプロパティに対してコールされます。

TsxFunction

(Object ruleContext, Object tsxFunction)

他のTsxXxxリスナーがコールされる前に.TSXファイル内の関数宣言ごとにコールされます。

ファイルをASTに解析した後、JAFはツリーをパススルーし、関数および特にreturn文の一般詳細を蓄積します。TsxFunctionリスナーは、JAFがツリーを参照する前に最初にコールされ、その後、他のTsxXxxリスナーが呼び出されます。これにより、これらの他のリスナーは、JSXで参照される関数(foo=={MyFunc}など)を簡単に確認できます。

また、すべてのファイル・フック・リスナー・タイプ(fileendfileなど)およびASTノード・タイプも許可されます。

ノート:

名前付きプロパティおよびイベントの場合、前述のTSX形式を使用する必要があります。つまり、<oj-foo>形式のイベント・タイプは使用できません。これはTsx<oj-foo>として宣言する必要があります。