リリースノート|バージョン 1.7
主要パッケージ (@yamato-daiwa/es-extensions)
新規機能
配列の弄り
破壊的変更
配列の弄り
getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOneと getIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOneでのの3引数目の名前変更
オブジェクト型の第3引数目に於いて、 mustThrowErrorIfElementNotFoundOrMoreThan1プロパティは mustThrowErrorIfElementNotFoundOrMatchesAreMultipleに名前が変更された。
- 理由
- 以前の名前が迷わせる、即ち「or more than1」を「元の配列に1個以上の要素がなくては 成らない」と勘違いしがち。 今の「or matches are multiple」(「・・・それとも一致は複数の場合」)は、 プレディケートに満たされている要素の中には複数がなくては成らないと明確に伝える様に成った。
- 貴方のコードが編集が必要に成る条件
getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOneの利用の際、 3引数目が参照されている所が有る。- 対策
- コードエディター又は結合開発環境の適切な機能を使って、プロジェクトの全ファイルに
mustThrowErrorIfElementNotFoundOrMoreThan1をmustThrowErrorIfElementNotFoundOrMatchesAreMultipleに置き換えて下さい。
「RawObjectDataProcessor」クラス
ローカリゼーションオブジェクト名前変更
更新された名付けのガイドライン通り、RawObjectDataProcessorLocalization__Englishと言う ローカリゼーションオブジェクトはrawObjectDataProcessorLocalization__englishに 名前が変更された。 同じ様な変更が他のローカリゼーションオブジェクトにも適応された。
ブラウザーJavaScript (@yamato-daiwa/es-extensions-browserjs)
破壊的変更
DOMの弄り
getExpectedToBeSingleDOM_ElementとgetExpectedToBeSingleChildOfTemplateElement関数に於ける 引数及びエラー投擲条件変更
以前、オブジェクト型の単一引数は contextと言う多態性の任意 プロパティが有り、指定された場合、 Element型か、 Document型か、 何方からから継承した型でなければいけなかった。 当プロパティはcontextElementに代えられ、多態性の儘だが、 型はParentNode | Readonly<{ selector: string; }>に成った御蔭て コンテキスト要素自体だけでなく、此れのセレクターを指定可能に成った。 但し、コンテキスト要素のセレクターが指定された場合、此れに丁度 一個の要素が該当しなければいけない、 然もないとエラーが投げられる(0個の場合は DOM_ElementRetrievingFailedError、2個以上の場合は UnexpectedEventError)。 ElementもDocumentも ParentNodeから継承した御蔭で、旧い プロパティの型と新しいプロパティの型が互換性が有る。
- 理由
- コンテキスト要素の指定方法の統一。
ParentNode | Readonly<{ selector: string; }>型のcontextElementプロパティは複数の 関数に使われる様に成っただけでなく、YDEE以外にも使われる事が有る(例えば、Yamato Daiwa Frontendと言うフロントエンド開発専用ライブラリで). - 貴方のコードが編集が必要に成る条件
getExpectedToBeSingleDOM_Element関数か、getExpectedToBeSingleChildOfTemplateElement関数のcontextプロパティが使用中。- 対策
- コードエディター又は結合開発環境の適切な機能を使って、プロジェクトの全ファイルに
contextプロパティをcontextElementに 置き換えて下さい。 コンテキスト要素ではなく、此れのセレクターが使えば便利なら、最新のAPIを 使ってリファクタリングしても良いが、エラーが投げられない様に、コンテキスト 要素のセレクターに丁度 1個の要素が該当していなければいけない。
イベント処理
addLeftClickEventHandler関数APIの変更
相変わらず、当関数の単一の引数はオブジェクト型だが、 此れのプロパティに下記の変更が適応された。
targetElementSelectorの廃止- 当プロパティが削除されかた代わりに、
targetElementプロパティが多態性のになった。 今後目的要素のセレクターをtargetElementオブジェクトのselectorと言う 文字列型のプロパティで指定しなければいけない。 但し以前と相変わらず、目的要素はセレクターで指定された場合、mustApplyToAllMatchingsWithSelectorか、mustIgnoreSubsequentMatchingsWithSelectorか、mustExpectExactlyOneMatchingWithSelectorプロパティで 当セレクターに該当している複数の要素が発見された時の振る舞いを指定 しなくてはならない。 contextElementの追加targetElementSelectorプロパティが指定された場合、 其れに加えてcontextElementと言う新規で 任意なプロパティを用いて、 対象要素が検索される事に成るコンテキスト要素を指定出来る様に成った。targetElementSelectorの場合と同じ様に、要素のインスタンスを指定するか、 セレクターを指定出来る、但しセレクターの場合 当セレクターは単一の要素に該当していなければいけない、 さもなくばエラーが投げられるのだ。mustInvokeBeforeChildren_sHandlersをeventPropagationへの置き換えeventPropagationと言う新規多態性の プロパティでイベントの伝播の種類を指定可能だけでなく、 イベントの伝播自体の無効化も出来る様に成った。capturingとbubblingと言うeventPropagation列挙の要素は以前の APIに比べて分かりにくいと評判されるかもしれないが、「capturing」 (DOMツリーの下降移動)と「bubbling」 (DOMツリーの上昇移動)は正規的な用語であり、正規的な用語の利用は低品質のAPIとして見做されない。
- 理由
- 他関数とのAPIの部分的な統一
- コンテキスト依存の対象要素をセレクターを指定する需要
- イベントの伝搬のもっと柔軟な指定の需要
- 貴方のコードが編集が必要に成る条件
単一の引数の下記のプロパティの中から1個以上利用中
targetElementSelectormustInvokeBeforeChildren_sHandlers
- 対策
targetElementSelectorプロパティをtargetElementに名前変更の上、セレクターを含めている 文字列リテラルか、此のリテラルを含めている変数を 子オブジェクトのselectorプロパティ へ移してください。 例えば、targetElementSelector: ".Card-SavingButton"はtargetElement: { selector: ".Card-SavingButton"}に成る。mustInvokeBeforeChildren_sHandlers: trueが指定してある場合、eventPropagation: EventPropagationTypes.capturingに置き換えて下さい。mustInvokeBeforeChildren_sHandlers: trueが指定してある場合、eventPropagation: EventPropagationTypes.bubblingに置き換えて下さい。