Yamato DaiwaE(CMA)S(cript) extensions

リリースノート|バージョン 1.7

主要パッケージ (@yamato-daiwa/es-extensions)

新規機能

配列の弄り

破壊的変更

配列の弄り

getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOnegetIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOneでのの3引数目の名前変更

オブジェクト型第3引数目に於いて、 mustThrowErrorIfElementNotFoundOrMoreThan1プロパティmustThrowErrorIfElementNotFoundOrMatchesAreMultipleに名前が変更された。

理由
以前の名前が迷わせる、即ち「or more than1」を「元の配列に1個以上の要素がなくては 成らない」と勘違いしがち。 今の「or matches are multiple」(「・・・それとも一致は複数の場合」)は、 プレディケートに満たされている要素の中には複数がなくては成らないと明確に伝える様に成った。
貴方のコードが編集が必要に成る条件
getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOneの利用の際、 3引数目が参照されている所が有る。
対策
コードエディター又は結合開発環境の適切な機能を使って、プロジェクトの全ファイルに mustThrowErrorIfElementNotFoundOrMoreThan1mustThrowErrorIfElementNotFoundOrMatchesAreMultipleに置き換えて下さい。

「RawObjectDataProcessor」クラス

ローカリゼーションオブジェクト名前変更

更新された名付けのガイドライン通り、RawObjectDataProcessorLocalization__Englishと言う ローカリゼーションオブジェクトrawObjectDataProcessorLocalization__englishに 名前が変更された。 同じ様な変更が他のローカリゼーションオブジェクトにも適応された。

ブラウザーJavaScript (@yamato-daiwa/es-extensions-browserjs)

破壊的変更

DOMの弄り

getExpectedToBeSingleDOM_ElementgetExpectedToBeSingleChildOfTemplateElement関数に於ける 引数及びエラー投擲条件変更

以前、オブジェクト型の単一引数contextと言う多態性の任意 プロパティが有り、指定された場合、 Element型か、 Document型か、 何方からから継承したでなければいけなかった。 当プロパティcontextElementに代えられ、多態性の儘だが、 ParentNode | Readonly<{ selector: string; }>に成った御蔭て コンテキスト要素自体だけでなく、此れのセレクターを指定可能に成った。 但し、コンテキスト要素セレクターが指定された場合、此れに丁度 一個要素が該当しなければいけない然もないとエラーが投げられる0個の場合は DOM_ElementRetrievingFailedError2個以上の場合は UnexpectedEventError)。 ElementDocumentParentNodeから継承した御蔭で、旧い プロパティと新しいプロパティの型が互換性が有る

理由
コンテキスト要素の指定方法の統一。 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_sHandlerseventPropagationへの置き換え
eventPropagationと言う新規多態性の プロパティイベントの伝播の種類を指定可能だけでなくイベントの伝播自体の無効化も出来る様に成った。 capturingbubblingと言う eventPropagation列挙要素は以前の APIに比べて分かりにくいと評判されるかもしれないが、「capturing」DOMツリー下降移動)と「bubbling」DOMツリー上昇移動)は正規的な用語であり、正規的な用語の利用は低品質のAPIとして見做されない。
理由
  • 関数とのAPIの部分的な統一
  • コンテキスト依存の対象要素をセレクターを指定する需要
  • イベントの伝搬のもっと柔軟な指定の需要
貴方のコードが編集が必要に成る条件

単一の引数の下記のプロパティの中から1個以上利用中

  • targetElementSelector
  • mustInvokeBeforeChildren_sHandlers
対策
  • targetElementSelectorプロパティtargetElementに名前変更の上、セレクターを含めている 文字列リテラルか、此のリテラルを含めている変数子オブジェクトselectorプロパティ へ移してください。 例えば、targetElementSelector: ".Card-SavingButton"targetElement: { selector: ".Card-SavingButton"}に成る。
  • mustInvokeBeforeChildren_sHandlers: trueが指定してある場合、 eventPropagation: EventPropagationTypes.capturingに置き換えて下さい。
  • mustInvokeBeforeChildren_sHandlers: trueが指定してある場合、 eventPropagation: EventPropagationTypes.bubblingに置き換えて下さい。