12 リファレンス: カスタム監査ルールのリスナー・タイプ
このリファレンスを使用して、カスタム監査ルールに登録できるリスナー・タイプについて学習します。使用可能なリスナー・タイプは、Oracle JETアプリケーションのファイル・タイプに固有です。
リスナー・タイプ | 説明 |
---|---|
Oracle JAF監査エンジンは、HTMLおよびJSONファイルに固有のリスナー・タイプの長いリストをサポートしています。 |
|
Oracle JAF監査エンジンは、CSSソース・ファイルに固有のリスナー・タイプをサポートしています。 |
|
Oracle JAF監査エンジンは、JavaScriptソース・ファイルに固有のリスナー・タイプをサポートしています。 |
|
Oracle JAF監査エンジンは、Markdownソース・ファイルに固有のリスナー・タイプをサポートしています。 |
|
Oracle JAF監査エンジンは、TSXソース・ファイルのレンダリング可能なJSXコンテンツに固有のリスナー・タイプをサポートしています。 |
HTMLおよびJSONルールのリスナー・タイプ
Oracle JAF監査エンジンは、HTMLおよびJSONファイルに固有のリスナー・タイプの長いリストをサポートしています。
次の表では、HTMLおよびJSONファイルの内容を解析し、解析されたファイルの抽象構文ツリー(AST)を生成する際にJAFで検出される可能性のある様々なデータ・ノードのリスナー・イベント・タイプについて説明します。アプリケーションのHTMLおよびJSONファイルに対して監査ルールを実装するには、必要なノードにイベント・リスナーを登録します。この表では、登録済リスナーで指定する適切な引数と、特定のノードのイベントでリスナーがアクセスできるコンテキスト・プロパティも示します。
リスナー・タイプ | リスナー引数 | 説明(使用可能なコンテキスト・プロパティを含む) |
---|---|---|
webcomp |
(Object context, string elementName) |
Webコンポーネントとして認識されるDOM要素に対してコールされます。 webcompイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
|
jetcomp |
(Object context, string elementName) |
JET Webコンポーネントに対してコールされます。 jetcompイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
他のすべてのcontextコンテンツについては、前のwebcompエントリを参照してください。 |
extcomp |
(Object context, string elementName) |
外部(JET以外)のWebコンポーネントに対してコールされます。 extcompイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
他のすべてのcontextコンテンツについては、前のwebcompエントリを参照してください。 |
elem |
(Object context, string elementName) |
DOM要素に対してコールされます。 elemイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
|
globtag |
(Object context, string elementName) |
グローバル/共通DOM要素(標準HTML5要素名を含む)に対してコールされます。 globtagイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
|
notglob |
(Object context, string elementName) |
共通HTML名でもSVGタグ名でもない要素に対してコールされます。 notglobイベント・リスナーは、次のコンテキスト・プロパティにアクセスできます。
|
tag |
(Object context, string elementName) |
tagイベント・リスナーは、次のプロパティにアクセスできます。
|
bindingtag |
(Object context, string elementName) |
bindingtagイベント・リスナーは、次のプロパティにアクセスできます。
|
ojtag |
(Object context, string elementName) |
ojtagイベント・リスナーは、次のプロパティにアクセスできます。
|
<component> |
(Object context, string elementName) |
名前が山カッコで囲まれて宣言されている(例: <component>イベント・リスナーは、次のプロパティにアクセスできます。
|
<component attrname=> |
(Object context, string attribName, string attribValue, string rawAttribValue) |
指定された属性がコンポーネント要素(例: コンポーネント名の両側および終了の山カッコの前に空白を使用できます。コンポーネント宣言は正規表現にできません。 <component attrname=>イベント・リスナーは、次のプロパティにアクセスできます。
ノート: class およびstyle 属性の詳細は、<attrname=> エントリの注意を参照してください。
|
<attrname=> |
(Object context, string attribName, string attribValue, string rawAttribValue) |
コンポーネント要素(例: これは、前述のコンポーネント/属性の組合せでコンポーネントが省略された特殊なケースです。属性宣言の両側に空白を使用できます。 <attrname=>イベント・リスナーは、次のプロパティにアクセスできます。
ノート: この構文は、style 属性やclass 属性には使用しないでください。これらの特殊なケースは、それぞれ独自の登録済タイプのスタイルおよびクラスによって処理されます。この表の後続のエントリを参照してください。
|
script |
(Object context, string elementName) |
|
link |
(Object context, string elementName) |
|
attr |
(Object context, string attribName, string attribValue, string rawAttribValue) |
要素の各属性に対してコールされます(Oracle JETの rawAttrValue属性値には、引用符を区切る文字列を含む完全なテキストが含まれます。 attrイベント・リスナーは、次のプロパティにアクセスできます。
|
attrexpr |
(Object context, string attribName, string attribValue, string rawAttribValue) |
属性値が |
attrexpr-$props |
(Object context, string attribName, string attribValue, string rawAttribValue) |
値が |
class |
(Object context, string elemName, string classValue) |
要素の各 classイベント・リスナーは、次のプロパティにアクセスできます。
|
style |
(Object context, string attribName, string[] attribValue, string rawAttribValue) |
要素の各 attrValueは、style属性から抽出されたスタイルの配列です。rawAttrValueは属性文字列です。 styleイベント・リスナーは、次のプロパティにアクセスできます。
|
type |
(Object context, string elemName, string typeValue) |
要素の各 typeイベント・リスナーは、次のプロパティにアクセスできます。
|
event |
(Object context, string eventName, Object eventValue) |
Oracle JETの各イベント属性( eventValue属性は、次のプロパティを持つオブジェクトです:
eventイベント・リスナーは、次のプロパティにアクセスできます。
|
comment |
(Object context, string comment) |
たとえば、コメント<!-- This is a comment -->の場合、comment引数には文字列 |
doctype |
(Object context, string comment, string value) |
たとえば、コメント<!DOCTYPE html>の場合、doctype引数には、文字列 |
procstmt |
(Object context, string procinstr, string value) |
たとえば、procinstr引数は文字列 |
directive |
(Object context, string directive, string value) |
DOCTYPE命令ではない たとえば、ディレクティブ<!ABCD xxxx>の場合、directive引数には、文字列 |
json |
(Object context) |
jsonイベント・リスナーは、次のプロパティにアクセスできます。
|
compjson |
(Object context) |
compjsonイベント・リスナーは、次のプロパティにアクセスできます。
|
file |
(Object context) |
ファイルの読取り後、標準ルール(フック・ルールではなくノード・ルール)がファイルで起動される前にコールされます。 fileイベント・リスナーは、次のプロパティにアクセスできます。
|
endfile |
(Object context) |
すべての標準ルール(フック・ルールではなくノード・ルール)がファイルで起動された後にコールされます。 endfileイベント・リスナーは、次のプロパティにアクセスできます。
|
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のノードです。 ルール・ノードには、SelectorList、Selector、Blockの各プロパティおよびサブプロパティが含まれています。完全なASTは、context.astにあります。 |
css-atrule | (Object context, Object rule, string identifier) |
任意のCSS ruleはASTのノードです。 identifierはルール識別子です。たとえば、 ルール・ノードには、SelectorList、Selector、Blockの各プロパティおよびサブプロパティが含まれています。完全なASTは、context.astにあります。 |
css-@xxxx | (Object context, Object rule, string identifier) |
名前xxxxのCSS文に対してコールされます。たとえば、 ruleはASTのノードです。 identifierはルール識別子です。たとえば、 ルール・ノードには、SelectorList、Selector、Blockの各プロパティおよびサブプロパティが含まれています。完全な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つです:
引数ruleは、変数宣言を含むルール・オブジェクトです。 |
Markdownルールのリスナー・タイプ
Oracle JAF監査エンジンは、Markdownソース・ファイルに固有のリスナー・タイプをサポートしています。
次の表では、Markdownファイルの内容を解析し、解析されたファイルの抽象構文ツリー(AST)を生成する際にJAFで検出される可能性のあるデータ・ノードのリスナー・イベント・タイプについて説明します。アプリケーションのMarkdownファイルに対して監査ルールを実装するには、必要なMarkdownノードにイベント・リスナーを登録します。この表では、登録済リスナーで指定する適切な引数も示します。
返されるオブジェクトの形式とそのプロパティの説明は、「Markdownルール・リスナーで使用可能なコンテキスト・オブジェクト・プロパティ」を参照してください。
リスナー・タイプ | リスナー引数 | 説明 |
---|---|---|
md-link |
(オブジェクト・コンテキスト、オブジェクト・リンク) |
直接または間接リンク参照に対して呼び出されます。たとえば、
また、マークアップのない段落テキストで見つかったURLに対しても呼び出されます。
リンク宣言が参照リンクを使用する場合、リンク・オブジェクトではinlineプロパティが |
md-ref | (オブジェクト・コンテキスト、オブジェクト参照) |
間接リンク参照に対して呼び出されます。たとえば、
|
md-para | (オブジェクト・コンテキスト、オブジェクト・パラメータ) |
段落テキストおよび
ノート: 標準の段落テキストの場合、levelは0です。ゼロより大きい値は、マークアップ見出しの |
md-image | (オブジェクト・コンテキスト、オブジェクト・イメージ) |
すべてのイメージ参照に対して呼び出されます。たとえば、
イメージ宣言が参照リンクを使用する場合、イメージ・オブジェクトではinlineプロパティが |
md-code | (オブジェクト・コンテキスト、オブジェクト・コード) |
(バックティックまたはチルドを使用した)すべてのフェンス・コード・ブロックに対して呼び出されます。たとえば、
|
md-list | (オブジェクト・コンテキスト、オブジェクト・リスト) |
マークアップ
リスト・アイテムがサブリストを表す場合、リスト・アイテム内にchildrenプロパティが使用されます。childrenプロパティはサブリスト・オブジェクトを含む配列です。各オブジェクトは |
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はツリーをパススルーし、関数および特に |
また、すべてのファイル・フック・リスナー・タイプ(file
やendfile
など)およびASTノード・タイプも許可されます。
ノート:
名前付きプロパティおよびイベントの場合、前述のTSX形式を使用する必要があります。つまり、<oj-foo>
形式のイベント・タイプは使用できません。これはTsx<oj-foo>
として宣言する必要があります。