From b0b702f2e6f94824a1aa9fe3e119c405cb4d22a4 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Tue, 29 Dec 2020 13:36:28 -0600 Subject: [PATCH 01/16] fixed bug with indexing aria-label, it also got references to aria-labelledby --- examples/index.html | 30 ------------------------------ scripts/reference-tables.js | 2 +- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/examples/index.html b/examples/index.html index 719a72a5e6..e21d83df48 100644 --- a/examples/index.html +++ b/examples/index.html @@ -527,7 +527,6 @@

Examples By Properties and States

aria-hidden @@ -539,40 +538,19 @@

Examples By Properties and States

@@ -580,7 +558,6 @@

Examples By Properties and States

aria-labelledby @@ -440,8 +440,8 @@

Roles with More than One Guidance or Exa radiogroup - @@ -452,8 +452,8 @@

Roles with More than One Guidance or Exa @@ -498,7 +498,7 @@

Roles with More than One Guidance or Exa Keyboard Navigation Between Components (The Tab Sequence) @@ -518,7 +518,7 @@

Roles with More than One Guidance or Exa tablist - @@ -528,7 +528,7 @@

Roles with More than One Guidance or Exa tabpanel - @@ -575,7 +575,7 @@

Roles with More than One Guidance or Exa
-

Properties and States with No Guidance or Examples (14)

+

Properties and States with No Guidance or Examples (15)

  • aria-atomic
  • aria-details
  • @@ -586,6 +586,7 @@

    Properties and States with No Guidance or
  • aria-invalid
  • aria-keyshortcuts
  • aria-multiline
  • +
  • aria-orientation
  • aria-owns
  • aria-placeholder
  • aria-readonly
  • @@ -594,7 +595,7 @@

    Properties and States with No Guidance or

-

Properties and States with at Least One Guidance or Example (8)

+

Properties and States with at Least One Guidance or Example (7)

@@ -633,12 +634,6 @@

Properties and States with at Least One Gu

- - - - - @@ -683,7 +678,7 @@

Properties and States with More than One
  • Listboxes with Rearrangeable Options
  • Scrollable Listbox
  • Actions Menu Button Using aria-activedescendant
  • -
  • Radio Group Using aria-activedescendant
  • +
  • Radio Group Using aria-activedescendant
  • @@ -706,8 +701,8 @@

    Properties and States with More than One
  • Checkbox (Two State)
  • Checkbox (Mixed-State)
  • Editor Menubar
  • -
  • Radio Group Using Roving tabindex
  • -
  • Radio Group Using aria-activedescendant
  • +
  • Radio Group Using aria-activedescendant
  • +
  • Radio Group Using Roving tabindex
  • Toolbar
  • @@ -727,7 +722,7 @@

    Properties and States with More than One

    @@ -875,7 +848,6 @@

    Properties and States with More than One

    @@ -998,7 +968,7 @@

    Properties and States with More than One

    aria-multiselectable - Listboxes with Rearrangeable Options -
    aria-orientation-Slider with aria-orientation and aria-valuetext
    - aria-hidden - @@ -831,42 +825,21 @@

    Properties and States with More than One

    Naming with a String Attribute Via aria-label
    Naming with Referenced Content Via aria-labelledby - @@ -926,8 +897,8 @@

    Properties and States with More than One

    - @@ -949,7 +920,6 @@

    Properties and States with More than One

    @@ -969,8 +939,8 @@

    Properties and States with More than One

    aria-roledescription -
    aria-selected - - @@ -1081,4 +1050,4 @@

    Properties and States with More than One - + \ No newline at end of file diff --git a/coverage/prop-coverage.csv b/coverage/prop-coverage.csv index 9f123b9599..977bfd7a75 100644 --- a/coverage/prop-coverage.csv +++ b/coverage/prop-coverage.csv @@ -3,11 +3,11 @@ "aria-atomic","0","0" "aria-autocomplete","0","5","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup" "aria-busy","0","1","Example: Feed" -"aria-checked","0","6","Example: Checkbox (Two State)","Example: Checkbox (Mixed-State)","Example: Editor Menubar","Example: Radio Group Using Roving tabindex","Example: Radio Group Using aria-activedescendant","Example: Toolbar" +"aria-checked","0","6","Example: Checkbox (Two State)","Example: Checkbox (Mixed-State)","Example: Editor Menubar","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" "aria-colcount","1","1","Guidance: Using aria-colcount and aria-colindex ","Example: Data Grid" "aria-colindex","3","0","Guidance: Using aria-colcount and aria-colindex ","Guidance: Using aria-colindex When Column Indices Are Contiguous","Guidance: Using aria-colindex When Column Indices Are Not Contiguous" "aria-colspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan " -"aria-controls","0","18","Example: Accordion","Example: Auto-Rotating Image Carousel with a Tablist","Example: Checkbox (Mixed-State)","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar" +"aria-controls","0","18","Example: Accordion","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Checkbox (Mixed-State)","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar" "aria-current","0","1","Example: Disclosure for Navigation Menus" "aria-describedby","1","6","Guidance: Describing by referencing content with aria-describedby ","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Table" "aria-details","0","0" @@ -18,30 +18,30 @@ "aria-flowto","0","0" "aria-grabbed","0","0" "aria-haspopup","0","9","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Toolbar" -"aria-hidden","0","3","Example: Alert Dialog","Example: Date Picker Spin Button","Example: Toolbar" +"aria-hidden","0","2","Example: Date Picker Spin Button","Example: Toolbar" "aria-invalid","0","0" "aria-keyshortcuts","0","0" -"aria-label","1","36","Guidance: Naming with a String Attribute Via aria-label ","Example: Auto-Rotating Image Carousel","Example: Auto-Rotating Image Carousel with a Tablist","Example: Checkbox (Two State)","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Radio Group Using Roving tabindex","Example: Radio Group Using aria-activedescendant","Example: Date Picker Spin Button","Example: Table","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" -"aria-labelledby","1","32","Guidance: Naming with Referenced Content Via aria-labelledby ","Example: Checkbox (Two State)","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Radio Group Using Roving tabindex","Example: Radio Group Using aria-activedescendant","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" -"aria-level","0","4","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" -"aria-live","0","5","Example: Alert","Example: Auto-Rotating Image Carousel","Example: Auto-Rotating Image Carousel with a Tablist","Example: Date Picker Combobox","Example: Date Picker Dialog" +"aria-label","1","15","Guidance: Naming with a String Attribute Via aria-label ","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Editor Menubar","Example: Navigation Menubar","Example: Date Picker Spin Button","Example: Table","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar","Example: Treegrid Email Inbox" +"aria-labelledby","1","31","Guidance: Naming with Referenced Content Via aria-labelledby ","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" +"aria-level","0","3","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-live","0","5","Example: Alert","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Date Picker Combobox","Example: Date Picker Dialog" "aria-modal","0","3","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog" "aria-multiline","0","0" "aria-multiselectable","0","1","Example: Listboxes with Rearrangeable Options" -"aria-orientation","0","1","Example: Slider with aria-orientation and aria-valuetext" +"aria-orientation","0","0" "aria-owns","0","0" "aria-placeholder","0","0" -"aria-posinset","0","5","Example: Feed","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-posinset","0","4","Example: Feed","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" "aria-pressed","0","3","Example: Button (IDL Version)","Example: Button","Example: Toolbar" "aria-readonly","0","0" "aria-relevant","0","0" "aria-required","0","0" -"aria-roledescription","0","2","Example: Auto-Rotating Image Carousel","Example: Auto-Rotating Image Carousel with a Tablist" +"aria-roledescription","0","2","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control" "aria-rowcount","1","2","Guidance: Using aria-rowcount and aria-rowindex ","Example: Data Grid","Example: Layout Grid" "aria-rowindex","1","2","Guidance: Using aria-rowcount and aria-rowindex ","Example: Data Grid","Example: Layout Grid" "aria-rowspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan " -"aria-selected","0","8","Example: Auto-Rotating Image Carousel with a Tablist","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Editable Combobox with Grid Popup","Example: Listboxes with Rearrangeable Options","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"aria-setsize","0","4","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-selected","0","8","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Editable Combobox with Grid Popup","Example: Listboxes with Rearrangeable Options","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" +"aria-setsize","0","3","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" "aria-sort","1","1","Guidance: Indicating sort order with aria-sort ","Example: Data Grid" "aria-valuemax","1","5","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button" "aria-valuemin","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" diff --git a/coverage/role-coverage.csv b/coverage/role-coverage.csv index 8d359dc2de..886f6d0049 100644 --- a/coverage/role-coverage.csv +++ b/coverage/role-coverage.csv @@ -20,7 +20,7 @@ "form","2","1","Guidance: Naming Form Controls with the Label Element","Guidance: Form","Example: Form Landmark" "grid","2","5","Guidance: Grid and Table Properties","Guidance: Grid Popup Keyboard Interaction","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid" "gridcell","0","1","Example: Layout Grid" -"group","2","6","Guidance: Radio Group","Guidance: For Radio Group Contained in a Toolbar","Example: Auto-Rotating Image Carousel","Example: Checkbox (Two State)","Example: Editor Menubar","Example: Date Picker Spin Button","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"group","2","6","Guidance: Radio Group","Guidance: For Radio Group Contained in a Toolbar","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Checkbox (Two State)","Example: Editor Menubar","Example: Date Picker Spin Button","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "heading","0","0" "img","0","0" "link","1","1","Guidance: Link","Example: Link" @@ -42,9 +42,9 @@ "option","0","4","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox" "presentation","4","0","Guidance: Intentionally Hiding Semantics with the presentation Role","Guidance: Effects of Role presentation ","Guidance: Conditions That Cause Role presentation to be Ignored","Guidance: Example Demonstrating Effects of the presentation Role" "progressbar","0","0" -"radio","3","3","Guidance: Radio Group","Guidance: For Radio Groups Not Contained in a Toolbar","Guidance: For Radio Group Contained in a Toolbar","Example: Radio Group Using Roving tabindex","Example: Radio Group Using aria-activedescendant","Example: Toolbar" -"radiogroup","0","3","Example: Radio Group Using Roving tabindex","Example: Radio Group Using aria-activedescendant","Example: Toolbar" -"region","1","4","Guidance: Region","Example: Accordion","Example: Auto-Rotating Image Carousel","Example: Auto-Rotating Image Carousel with a Tablist","Example: Region Landmark" +"radio","3","3","Guidance: Radio Group","Guidance: For Radio Groups Not Contained in a Toolbar","Guidance: For Radio Group Contained in a Toolbar","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" +"radiogroup","0","3","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" +"region","1","4","Guidance: Region","Example: Accordion","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Region Landmark" "row","0","4","Example: Editable Combobox with Grid Popup","Example: Layout Grid","Example: Table","Example: Treegrid Email Inbox" "rowgroup","0","1","Example: Table" "rowheader","0","0" @@ -56,10 +56,10 @@ "spinbutton","1","2","Guidance: Spinbutton","Example: Date Picker Spin Button","Example: Toolbar" "status","0","0" "switch","0","0" -"tab","1","3","Guidance: Keyboard Navigation Between Components (The Tab Sequence)","Example: Auto-Rotating Image Carousel with a Tablist","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" +"tab","1","3","Guidance: Keyboard Navigation Between Components (The Tab Sequence)","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" "table","2","1","Guidance: Grid and Table Properties","Guidance: Table","Example: Table" -"tablist","0","3","Example: Auto-Rotating Image Carousel with a Tablist","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"tabpanel","0","3","Example: Auto-Rotating Image Carousel with a Tablist","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" +"tablist","0","3","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" +"tabpanel","0","3","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" "term","0","0" "textbox","0","0" "timer","0","0" diff --git a/scripts/coverage-report.js b/scripts/coverage-report.js index 64f7982968..2f405b0941 100644 --- a/scripts/coverage-report.js +++ b/scripts/coverage-report.js @@ -241,7 +241,7 @@ function getPropertiesAndStatesFromExample(data) { for (let i = 0; i < ariaPropertiesAndStates.length; i++) { if ( getColumn(data, indexStart) === 2 && - code.indexOf(ariaPropertiesAndStates[i]) >= 0 && + code.indexOf(ariaPropertiesAndStates[i] + '=') >= 0 && propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 ) { propertiesAndStates.push(ariaPropertiesAndStates[i]); From 5bf220038f7e956accad0d7f0a1ebc98e6e2648b Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Mon, 18 Jan 2021 16:57:39 -0600 Subject: [PATCH 03/16] replaced indexOf with regex --- coverage/index.html | 20 +++++++++++++++----- coverage/prop-coverage.csv | 12 ++++++------ examples/index.html | 9 +++++++++ scripts/coverage-report.js | 3 ++- scripts/reference-tables.js | 3 ++- 5 files changed, 34 insertions(+), 13 deletions(-) diff --git a/coverage/index.html b/coverage/index.html index b8294565c5..d3a5bd309a 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -27,8 +27,8 @@

    ARIA Roles, Properties and States Referenced in Guidance and Examples

  • Roles with no Guidance or Examples (22)
  • Roles with at Least One Guidance or Example (16)
  • Roles with More than One Guidance or Example (31)
  • -
  • Properties and States with no Examples (15)
  • -
  • Properties and States with One Examples (7)
  • +
  • Properties and States with no Examples (14)
  • +
  • Properties and States with One Examples (8)
  • Properties and States with More than One Example (26)
  • @@ -575,7 +575,7 @@

    Roles with More than One Guidance or Exa
    -

    Properties and States with No Guidance or Examples (15)

    +

    Properties and States with No Guidance or Examples (14)

    • aria-atomic
    • aria-details
    • @@ -586,7 +586,6 @@

      Properties and States with No Guidance or
    • aria-invalid
    • aria-keyshortcuts
    • aria-multiline
    • -
    • aria-orientation
    • aria-owns
    • aria-placeholder
    • aria-readonly
    • @@ -595,7 +594,7 @@

      Properties and States with No Guidance or

    -

    Properties and States with at Least One Guidance or Example (7)

    +

    Properties and States with at Least One Guidance or Example (8)

    @@ -634,6 +633,12 @@

    Properties and States with at Least One Gu

    + + + + + @@ -815,6 +820,7 @@

    Properties and States with More than One

    + + + + - + @@ -55,11 +60,34 @@

    Examples by Role

    + + + + - + @@ -80,6 +114,7 @@

    Examples by Role

  • Editable Combobox With Both List and Inline Autocomplete
  • Editable Combobox With List Autocomplete
  • Editable Combobox without Autocomplete
  • +
  • Date Picker Combobox
  • Select-Only Combobox
  • Editable Combobox with Grid Popup
  • @@ -98,6 +133,7 @@

    Examples by Role

    - + @@ -135,15 +180,35 @@

    Examples by Role

  • Checkbox (Two State)
  • Editor Menubar
  • Date Picker Spin Button
  • +
  • File Directory Treeview Using Computed Properties
  • +
  • File Directory Treeview Using Declared Properties
  • Navigation Treeview Using Computed Properties
  • Navigation Treeview Using Declared Properties
  • + + + + + + + + + + + + @@ -189,6 +265,7 @@

    Examples by Role

    @@ -233,6 +312,10 @@

    Examples by Role

    + + + + + + + + @@ -311,7 +401,15 @@

    Examples by Role

    - + @@ -393,6 +491,10 @@

    Examples By Properties and States

    + + + + + + + + - + @@ -527,7 +639,9 @@

    Examples By Properties and States

    @@ -624,6 +748,7 @@

    Examples By Properties and States

  • Date Picker Combobox
  • Alert Dialog
  • Date Picker Dialog
  • +
  • Modal Dialog
  • @@ -639,10 +764,13 @@

    Examples By Properties and States

    @@ -692,8 +820,14 @@

    Examples By Properties and States

  • Editable Combobox With Both List and Inline Autocomplete
  • Editable Combobox With List Autocomplete
  • Editable Combobox without Autocomplete
  • +
  • Date Picker Combobox
  • +
  • Select-Only Combobox
  • Editable Combobox with Grid Popup
  • +
  • Date Picker Dialog
  • +
  • Collapsible Dropdown Listbox
  • +
  • Listbox with Grouped Options
  • Listboxes with Rearrangeable Options
  • +
  • Scrollable Listbox
  • Tabs with Automatic Activation
  • Tabs with Manual Activation
  • @@ -703,9 +837,13 @@

    Examples By Properties and States

    @@ -723,6 +861,7 @@

    Examples By Properties and States

  • Horizontal Slider
  • Slider with aria-orientation and aria-valuetext
  • Date Picker Spin Button
  • +
  • Toolbar
  • diff --git a/scripts/coverage-report.js b/scripts/coverage-report.js index b61bde12e0..096642bfa1 100644 --- a/scripts/coverage-report.js +++ b/scripts/coverage-report.js @@ -180,49 +180,65 @@ ariaPropertiesAndStates.forEach(function (prop) { console.log('Generating index...'); -function getColumn(data, indexStart) { - let count = 0; - let index = data.lastIndexOf(' 0 && index <= indexStart) { - let indexTd = data.indexOf('= 0) { + indexEnd = data.indexOf('
    aria-multiselectable - Listboxes with Rearrangeable Options +
    aria-orientation-Slider with aria-orientation and aria-valuetext
    aria-hidden - @@ -848,6 +854,7 @@

    Properties and States with More than One

    Naming with Referenced Content Via aria-labelledby - @@ -920,6 +928,7 @@

    Properties and States with More than One

    @@ -984,6 +993,7 @@

    Properties and States with More than One

    - diff --git a/coverage/prop-coverage.csv b/coverage/prop-coverage.csv index 977bfd7a75..6856c20ba0 100644 --- a/coverage/prop-coverage.csv +++ b/coverage/prop-coverage.csv @@ -18,20 +18,20 @@ "aria-flowto","0","0" "aria-grabbed","0","0" "aria-haspopup","0","9","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Toolbar" -"aria-hidden","0","2","Example: Date Picker Spin Button","Example: Toolbar" +"aria-hidden","0","3","Example: Alert Dialog","Example: Date Picker Spin Button","Example: Toolbar" "aria-invalid","0","0" "aria-keyshortcuts","0","0" "aria-label","1","15","Guidance: Naming with a String Attribute Via aria-label ","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Editor Menubar","Example: Navigation Menubar","Example: Date Picker Spin Button","Example: Table","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar","Example: Treegrid Email Inbox" -"aria-labelledby","1","31","Guidance: Naming with Referenced Content Via aria-labelledby ","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" -"aria-level","0","3","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-labelledby","1","32","Guidance: Naming with Referenced Content Via aria-labelledby ","Example: Checkbox (Two State)","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" +"aria-level","0","4","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" "aria-live","0","5","Example: Alert","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Date Picker Combobox","Example: Date Picker Dialog" "aria-modal","0","3","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog" "aria-multiline","0","0" "aria-multiselectable","0","1","Example: Listboxes with Rearrangeable Options" -"aria-orientation","0","0" +"aria-orientation","0","1","Example: Slider with aria-orientation and aria-valuetext" "aria-owns","0","0" "aria-placeholder","0","0" -"aria-posinset","0","4","Example: Feed","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-posinset","0","5","Example: Feed","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" "aria-pressed","0","3","Example: Button (IDL Version)","Example: Button","Example: Toolbar" "aria-readonly","0","0" "aria-relevant","0","0" @@ -41,7 +41,7 @@ "aria-rowindex","1","2","Guidance: Using aria-rowcount and aria-rowindex ","Example: Data Grid","Example: Layout Grid" "aria-rowspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan " "aria-selected","0","8","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Editable Combobox with Grid Popup","Example: Listboxes with Rearrangeable Options","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"aria-setsize","0","3","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-setsize","0","4","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" "aria-sort","1","1","Guidance: Indicating sort order with aria-sort ","Example: Data Grid" "aria-valuemax","1","5","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button" "aria-valuemin","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" diff --git a/examples/index.html b/examples/index.html index e21d83df48..d49acab85f 100644 --- a/examples/index.html +++ b/examples/index.html @@ -527,6 +527,7 @@

    Examples By Properties and States

    aria-hidden @@ -558,6 +559,7 @@

    Examples By Properties and States

    aria-labelledby @@ -628,12 +631,17 @@

    Examples By Properties and States

    aria-multiselectable Listboxes with Rearrangeable Options
    aria-orientationSlider with aria-orientation and aria-valuetext
    aria-posinset @@ -696,6 +704,7 @@

    Examples By Properties and States

    diff --git a/scripts/coverage-report.js b/scripts/coverage-report.js index 2f405b0941..b61bde12e0 100644 --- a/scripts/coverage-report.js +++ b/scripts/coverage-report.js @@ -239,9 +239,10 @@ function getPropertiesAndStatesFromExample(data) { let code = data.substring(indexStart + 6, indexEnd); for (let i = 0; i < ariaPropertiesAndStates.length; i++) { + const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); if ( getColumn(data, indexStart) === 2 && - code.indexOf(ariaPropertiesAndStates[i] + '=') >= 0 && + hasPropOrState.test(code) && propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 ) { propertiesAndStates.push(ariaPropertiesAndStates[i]); diff --git a/scripts/reference-tables.js b/scripts/reference-tables.js index 21d89c948d..a1f433370e 100644 --- a/scripts/reference-tables.js +++ b/scripts/reference-tables.js @@ -209,9 +209,10 @@ function getPropertiesAndStates(data) { let code = data.substring(indexStart + 6, indexEnd); for (let i = 0; i < ariaPropertiesAndStates.length; i++) { + const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); if ( getColumn(data, indexStart) === 2 && - code.indexOf(ariaPropertiesAndStates[i] + '=') >= 0 && + hasPropOrState.test(code) && propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 ) { propertiesAndStates.push(ariaPropertiesAndStates[i]); From 4c170415cf2f9f9ff8b4dc2116fd04fcb3e05266 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Tue, 19 Jan 2021 14:50:13 -0600 Subject: [PATCH 04/16] updated algorithms for searching for roles, properties and states --- aria-practices.html | 2 +- coverage/index.html | 195 ++++++++++++++++++++++------ coverage/prop-coverage.csv | 26 ++-- coverage/role-coverage.csv | 34 ++--- examples/breadcrumb/breadcrumb.html | 142 ++++++++++++++++++++ examples/index.html | 149 ++++++++++++++++++++- scripts/coverage-report.js | 123 ++++++++++-------- scripts/reference-tables.js | 126 ++++++++++-------- 8 files changed, 620 insertions(+), 177 deletions(-) create mode 100644 examples/breadcrumb/breadcrumb.html diff --git a/aria-practices.html b/aria-practices.html index 7867293cf7..6d2b1599e4 100644 --- a/aria-practices.html +++ b/aria-practices.html @@ -365,7 +365,7 @@

    Breadcrumb

    Example

    -

    Breadcrumb design pattern example

    +

    Breadcrumb design pattern example

    diff --git a/coverage/index.html b/coverage/index.html index d3a5bd309a..7b4f71c994 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -24,12 +24,12 @@

    ARIA Roles, Properties and States Referenced in Guidance and Examples

    @@ -41,7 +41,7 @@

    CSV Files of Role, Properties and States Coverage

    -

    Roles with No Guidance or Examples (22)

    +

    Roles with No Guidance or Examples (18)

    • application
    • definition
    • @@ -49,15 +49,11 @@

      Roles with No Guidance or Examples (document
    • figure
    • heading
    • -
    • img
    • -
    • list
    • -
    • listitem
    • log
    • marquee
    • math
    • note
    • progressbar
    • -
    • rowheader
    • scrollbar
    • searchbox
    • status
    • @@ -68,7 +64,7 @@

      Roles with No Guidance or Examples (
      -

      Roles with at Least One Guidance or Example (16)

      +

      Roles with at Least One Guidance or Example (15)

      @@ -95,12 +91,6 @@

      Roles with at Least One Guidance or Exampl

      - - - - - @@ -122,12 +112,6 @@

      Roles with at Least One Guidance or Exampl

      - - - - - @@ -154,6 +138,12 @@

      Roles with at Least One Guidance or Exampl

      + + + + + @@ -186,7 +176,7 @@

      Roles with at Least One Guidance or Exampl
      -

      Roles with More than One Guidance or Example (31)

      +

      Roles with More than One Guidance or Example (36)

      Banner Banner Landmark -
      columnheader-Table
      Feed Feed -
      gridcell-Layout Grid
      rowgroup - Table +
      rowheader-Data Grid
      @@ -203,7 +193,10 @@

      Roles with More than One Guidance or Exa
    • Alert and Message Dialogs
    • -

      @@ -214,8 +207,27 @@

      Roles with More than One Guidance or Exa

      @@ -227,7 +239,8 @@

      Roles with More than One Guidance or Exa
    • Editing and Navigating Inside a Cell
    • -

      + @@ -237,6 +250,16 @@

      Roles with More than One Guidance or Exa
    • Checkbox (Two State)
    • Checkbox (Mixed-State)
    • + +

      + + + + @@ -250,6 +273,7 @@

      Roles with More than One Guidance or Exa
    • Editable Combobox With Both List and Inline Autocomplete
    • Editable Combobox With List Autocomplete
    • Editable Combobox without Autocomplete
    • +
    • Date Picker Combobox
    • Select-Only Combobox
    • Editable Combobox with Grid Popup
    • @@ -264,6 +288,7 @@

      Roles with More than One Guidance or Exa

      + + + + + @@ -307,6 +345,26 @@

      Roles with More than One Guidance or Exa
    • Checkbox (Two State)
    • Editor Menubar
    • Date Picker Spin Button
    • +
    • File Directory Treeview Using Computed Properties
    • +
    • File Directory Treeview Using Declared Properties
    • +
    • Navigation Treeview Using Computed Properties
    • +
    • Navigation Treeview Using Declared Properties
    • + + +

      + + + + + + + + + + + + + + @@ -361,6 +430,7 @@

      Roles with More than One Guidance or Exa

      @@ -419,7 +491,8 @@

      Roles with More than One Guidance or Exa
    • Example Demonstrating Effects of the presentation Role
    • -

      + @@ -462,7 +535,10 @@

      Roles with More than One Guidance or Exa

      - @@ -575,9 +657,8 @@

      Roles with More than One Guidance or Exa
      -

      Properties and States with No Guidance or Examples (14)

      +

      Properties and States with No Guidance or Examples (13)

        -
      • aria-atomic
      • aria-details
      • aria-dropeffect
      • aria-errormessage
      • @@ -604,6 +685,12 @@

        Properties and States with at Least One Gu

      + + + + + @@ -623,12 +710,6 @@

      Properties and States with at Least One Gu

      - - - - - @@ -658,7 +739,7 @@

      Properties and States with at Least One Gu
      -

      Properties and States with More than One Guidance or Example (26)

      +

      Properties and States with More than One Guidance or Example (27)

      Alert +
      -Table +
      checkbox
      columnheader-
      @@ -293,6 +318,19 @@

      Roles with More than One Guidance or Exa
    • Data Grid
    • Layout Grid
    • +

      gridcell-
      img- +
      list- @@ -329,6 +387,17 @@

      Roles with More than One Guidance or Exa
    • Listboxes with Rearrangeable Options
    • Scrollable Listbox
    • +

      listitem-
      menuitem -
      -Navigation Menu Button +
      radiorow - Table +
      aria-atomic-Alert +
      aria-busy --
      aria-current-Disclosure for Navigation Menus -
      aria-multiselectable -
      @@ -720,13 +801,15 @@

      Properties and States with More than One
    • Using aria-colindex When Column Indices Are Not Contiguous
    • -

      + + + + + + @@ -820,7 +912,9 @@

      Properties and States with More than One

      @@ -919,6 +1023,7 @@

      Properties and States with More than One
    • Date Picker Combobox
    • Alert Dialog
    • Date Picker Dialog
    • +
    • Modal Dialog
    • @@ -926,10 +1031,13 @@

      Properties and States with More than One

      @@ -981,8 +1089,14 @@

      Properties and States with More than One
    • Editable Combobox With Both List and Inline Autocomplete
    • Editable Combobox With List Autocomplete
    • Editable Combobox without Autocomplete
    • +
    • Date Picker Combobox
    • +
    • Select-Only Combobox
    • Editable Combobox with Grid Popup
    • +
    • Date Picker Dialog
    • +
    • Collapsible Dropdown Listbox
    • +
    • Listbox with Grouped Options
    • Listboxes with Rearrangeable Options
    • +
    • Scrollable Listbox
    • Tabs with Automatic Activation
    • Tabs with Manual Activation
    • @@ -992,9 +1106,13 @@

      Properties and States with More than One

      @@ -1009,6 +1127,7 @@

      Properties and States with More than One
    • Horizontal Slider
    • Slider with aria-orientation and aria-valuetext
    • Date Picker Spin Button
    • +
    • Toolbar
    • diff --git a/coverage/prop-coverage.csv b/coverage/prop-coverage.csv index 6856c20ba0..982a906269 100644 --- a/coverage/prop-coverage.csv +++ b/coverage/prop-coverage.csv @@ -1,14 +1,14 @@ "Property or State","Guidance","Examples","References" "aria-activedescendant","1","11","Guidance: Managing Focus in Composites Using aria-activedescendant","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Radio Group Using aria-activedescendant" -"aria-atomic","0","0" +"aria-atomic","0","1","Example: Alert" "aria-autocomplete","0","5","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup" "aria-busy","0","1","Example: Feed" "aria-checked","0","6","Example: Checkbox (Two State)","Example: Checkbox (Mixed-State)","Example: Editor Menubar","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" "aria-colcount","1","1","Guidance: Using aria-colcount and aria-colindex ","Example: Data Grid" -"aria-colindex","3","0","Guidance: Using aria-colcount and aria-colindex ","Guidance: Using aria-colindex When Column Indices Are Contiguous","Guidance: Using aria-colindex When Column Indices Are Not Contiguous" +"aria-colindex","3","1","Guidance: Using aria-colcount and aria-colindex ","Guidance: Using aria-colindex When Column Indices Are Contiguous","Guidance: Using aria-colindex When Column Indices Are Not Contiguous","Example: Data Grid" "aria-colspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan " -"aria-controls","0","18","Example: Accordion","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Checkbox (Mixed-State)","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar" -"aria-current","0","1","Example: Disclosure for Navigation Menus" +"aria-controls","0","19","Example: Accordion","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Checkbox (Mixed-State)","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar" +"aria-current","0","2","Example: Breadcrumb","Example: Disclosure for Navigation Menus" "aria-describedby","1","6","Guidance: Describing by referencing content with aria-describedby ","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Table" "aria-details","0","0" "aria-disabled","0","3","Example: Accordion","Example: Editor Menubar","Example: Toolbar" @@ -18,20 +18,20 @@ "aria-flowto","0","0" "aria-grabbed","0","0" "aria-haspopup","0","9","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Toolbar" -"aria-hidden","0","3","Example: Alert Dialog","Example: Date Picker Spin Button","Example: Toolbar" +"aria-hidden","0","5","Example: Button (IDL Version)","Example: Alert Dialog","Example: Modal Dialog","Example: Date Picker Spin Button","Example: Toolbar" "aria-invalid","0","0" "aria-keyshortcuts","0","0" -"aria-label","1","15","Guidance: Naming with a String Attribute Via aria-label ","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Editor Menubar","Example: Navigation Menubar","Example: Date Picker Spin Button","Example: Table","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar","Example: Treegrid Email Inbox" -"aria-labelledby","1","32","Guidance: Naming with Referenced Content Via aria-labelledby ","Example: Checkbox (Two State)","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" -"aria-level","0","4","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-label","1","18","Guidance: Naming with a String Attribute Via aria-label ","Example: Breadcrumb","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Link","Example: Editor Menubar","Example: Navigation Menubar","Example: Horizontal Multi-Thumb Slider","Example: Date Picker Spin Button","Example: Table","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar","Example: Treegrid Email Inbox" +"aria-labelledby","1","38","Guidance: Naming with Referenced Content Via aria-labelledby ","Example: Accordion","Example: Checkbox (Two State)","Example: EXAMPLE_NAME","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Advanced Data Grid","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Meter","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" +"aria-level","0","5","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "aria-live","0","5","Example: Alert","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Date Picker Combobox","Example: Date Picker Dialog" -"aria-modal","0","3","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog" +"aria-modal","0","4","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog" "aria-multiline","0","0" "aria-multiselectable","0","1","Example: Listboxes with Rearrangeable Options" "aria-orientation","0","1","Example: Slider with aria-orientation and aria-valuetext" "aria-owns","0","0" "aria-placeholder","0","0" -"aria-posinset","0","5","Example: Feed","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-posinset","0","8","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Feed","Example: Editor Menubar","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "aria-pressed","0","3","Example: Button (IDL Version)","Example: Button","Example: Toolbar" "aria-readonly","0","0" "aria-relevant","0","0" @@ -40,10 +40,10 @@ "aria-rowcount","1","2","Guidance: Using aria-rowcount and aria-rowindex ","Example: Data Grid","Example: Layout Grid" "aria-rowindex","1","2","Guidance: Using aria-rowcount and aria-rowindex ","Example: Data Grid","Example: Layout Grid" "aria-rowspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan " -"aria-selected","0","8","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Editable Combobox with Grid Popup","Example: Listboxes with Rearrangeable Options","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"aria-setsize","0","4","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Declared Properties" +"aria-selected","0","14","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" +"aria-setsize","0","8","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Feed","Example: Editor Menubar","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "aria-sort","1","1","Guidance: Indicating sort order with aria-sort ","Example: Data Grid" -"aria-valuemax","1","5","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button" +"aria-valuemax","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" "aria-valuemin","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" "aria-valuenow","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" "aria-valuetext","1","4","Guidance: Using aria-valuetext ","Example: Horizontal Multi-Thumb Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" diff --git a/coverage/role-coverage.csv b/coverage/role-coverage.csv index 886f6d0049..13f93dd0eb 100644 --- a/coverage/role-coverage.csv +++ b/coverage/role-coverage.csv @@ -1,53 +1,53 @@ "Role","Guidance","Examples","References" -"alert","2","1","Guidance: Alert","Guidance: Alert and Message Dialogs","Example: Alert" +"alert","2","2","Guidance: Alert","Guidance: Alert and Message Dialogs","Example: Alert","Example: Alert Dialog" "alertdialog","0","1","Example: Alert Dialog" "application","0","0" "article","0","1","Example: Feed" "banner","1","1","Guidance: Banner","Example: Banner Landmark" -"button","2","2","Guidance: Button","Guidance: Menu Button","Example: Button (IDL Version)","Example: Button" -"cell","3","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan ","Guidance: Whether to Focus on a Cell Or an Element Inside It","Guidance: Editing and Navigating Inside a Cell" +"button","2","21","Guidance: Button","Guidance: Menu Button","Example: Accordion","Example: Button (IDL Version)","Example: Button","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar" +"cell","3","1","Guidance: Defining cell spans using aria-colspan and aria-rowspan ","Guidance: Whether to Focus on a Cell Or an Element Inside It","Guidance: Editing and Navigating Inside a Cell","Example: Table" "checkbox","1","2","Guidance: Checkbox","Example: Checkbox (Two State)","Example: Checkbox (Mixed-State)" -"columnheader","0","1","Example: Table" -"combobox","2","5","Guidance: Combobox","Guidance: Combobox Keyboard Interaction","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup" +"columnheader","0","3","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Table" +"combobox","2","6","Guidance: Combobox","Guidance: Combobox Keyboard Interaction","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup" "complementary","1","1","Guidance: Complementary","Example: Complementary Landmark" "contentinfo","1","1","Guidance: Contentinfo","Example: Contentinfo Landmark" "definition","0","0" -"dialog","2","3","Guidance: Dialog (Modal)","Guidance: Dialog Popup Keyboard Interaction","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Modal Dialog" +"dialog","2","4","Guidance: Dialog (Modal)","Guidance: Dialog Popup Keyboard Interaction","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog" "directory","0","0" "document","0","0" "feed","1","1","Guidance: Feed","Example: Feed" "figure","0","0" "form","2","1","Guidance: Naming Form Controls with the Label Element","Guidance: Form","Example: Form Landmark" "grid","2","5","Guidance: Grid and Table Properties","Guidance: Grid Popup Keyboard Interaction","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid" -"gridcell","0","1","Example: Layout Grid" -"group","2","6","Guidance: Radio Group","Guidance: For Radio Group Contained in a Toolbar","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Checkbox (Two State)","Example: Editor Menubar","Example: Date Picker Spin Button","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"gridcell","0","6","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid","Example: Treegrid Email Inbox" +"group","2","8","Guidance: Radio Group","Guidance: For Radio Group Contained in a Toolbar","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Checkbox (Two State)","Example: Editor Menubar","Example: Date Picker Spin Button","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "heading","0","0" -"img","0","0" +"img","0","2","Example: Link","Example: Horizontal Multi-Thumb Slider" "link","1","1","Guidance: Link","Example: Link" -"list","0","0" +"list","0","2","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "listbox","2","8","Guidance: Listbox","Guidance: Listbox Popup Keyboard Interaction","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox" -"listitem","0","0" +"listitem","0","4","Example: Navigation Menu Button","Example: Navigation Menubar","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "log","0","0" "main","1","1","Guidance: Main","Example: Main Landmark" "marquee","0","0" "math","0","0" "menu","2","6","Guidance: Menu or Menu bar","Guidance: Menu Button","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Toolbar" "menubar","0","2","Example: Editor Menubar","Example: Navigation Menubar" -"menuitem","0","4","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar" +"menuitem","0","5","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar" "menuitemcheckbox","0","1","Example: Editor Menubar" "menuitemradio","0","2","Example: Editor Menubar","Example: Toolbar" "navigation","5","1","Guidance: Fundamental Keyboard Navigation Conventions","Guidance: Keyboard Navigation Between Components (The Tab Sequence)","Guidance: Keyboard Navigation Inside Components","Guidance: Ensure Basic Access Via Navigation","Guidance: Navigation","Example: Navigation Landmark" -"none","0","2","Example: Navigation Menu Button","Example: Navigation Menubar" +"none","0","4","Example: Navigation Menu Button","Example: Navigation Menubar","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "note","0","0" "option","0","4","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox" -"presentation","4","0","Guidance: Intentionally Hiding Semantics with the presentation Role","Guidance: Effects of Role presentation ","Guidance: Conditions That Cause Role presentation to be Ignored","Guidance: Example Demonstrating Effects of the presentation Role" +"presentation","4","1","Guidance: Intentionally Hiding Semantics with the presentation Role","Guidance: Effects of Role presentation ","Guidance: Conditions That Cause Role presentation to be Ignored","Guidance: Example Demonstrating Effects of the presentation Role","Example: Navigation Menu Button" "progressbar","0","0" "radio","3","3","Guidance: Radio Group","Guidance: For Radio Groups Not Contained in a Toolbar","Guidance: For Radio Group Contained in a Toolbar","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" "radiogroup","0","3","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" "region","1","4","Guidance: Region","Example: Accordion","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Region Landmark" -"row","0","4","Example: Editable Combobox with Grid Popup","Example: Layout Grid","Example: Table","Example: Treegrid Email Inbox" +"row","0","7","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid","Example: Table","Example: Treegrid Email Inbox" "rowgroup","0","1","Example: Table" -"rowheader","0","0" +"rowheader","0","1","Example: Data Grid" "scrollbar","0","0" "search","1","1","Guidance: Search","Example: Search Landmark" "searchbox","0","0" @@ -57,7 +57,7 @@ "status","0","0" "switch","0","0" "tab","1","3","Guidance: Keyboard Navigation Between Components (The Tab Sequence)","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"table","2","1","Guidance: Grid and Table Properties","Guidance: Table","Example: Table" +"table","2","5","Guidance: Grid and Table Properties","Guidance: Table","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Data Grid","Example: Table","Example: Treegrid Email Inbox" "tablist","0","3","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" "tabpanel","0","3","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" "term","0","0" diff --git a/examples/breadcrumb/breadcrumb.html b/examples/breadcrumb/breadcrumb.html new file mode 100644 index 0000000000..ef173009e8 --- /dev/null +++ b/examples/breadcrumb/breadcrumb.html @@ -0,0 +1,142 @@ + + + + + Breadcrumb Example | WAI-ARIA Authoring Practices 1.2 + + + + + + + + + + + + +
      +

      Breadcrumb Example

      +

      The following example demonstrates the breadcrumb design pattern.

      +
      +
      +

      Example

      +
      + + + +
      + +
      +

      Accessibility Features

      +
        +
      • The set of links is structured using an ordered list .
      • +
      • A nav element labeled Breadcrumb identifies the structure as a breadcrumb trail and makes it a navigation landmark so that it is easy to locate.
      • +
      • To prevent screen reader announcement of the visual separators between links, they are added via CSS: +
          +
        • + The separators are part of the visual presentation that signifies the breadcrumb trail, which is already semantically represented by the nav element with its label of Breadcrumb. + So, using a display technique that is not represented in the accessibility tree used by screen readers prevents redundant and potentially distracting verbosity. +
        • +
        • Each link has a border on one side that is skewed with the CSS’ transform property so it resembles a slash.
        • +
        +
      • +
      +
      + +
      +

      Keyboard Support

      +

      No keyboard interaction needed.

      +
      + +
      +

      Role, Property, State, and Tabindex Attributes

      +
      -Data Grid +
      aria-controls - +
      aria-current-
      aria-hidden - @@ -831,6 +925,7 @@

      Properties and States with More than One

      Naming with a String Attribute Via aria-label Naming with Referenced Content Via aria-labelledby
      aria-posinset - aria-setsize -
      + + + + + + + + + + + + + + + + + + + + + + +
      RoleAttributeElementUsage
      + aria-label=Breadcrumb + + nav + + Provides a label that describes the type of navigation provided in the nav element. +
      + aria-current=page + + a + + Applied to the last link in the set to indicate that it represents the current page. +
      +
      + +
      +

      Javascript and CSS Source Code

      + +
      + +
      +

      HTML Source Code

      + +
      + + +
      + + + + + diff --git a/examples/index.html b/examples/index.html index d49acab85f..9cb0e8df03 100644 --- a/examples/index.html +++ b/examples/index.html @@ -37,7 +37,12 @@

      Examples by Role

    alertAlert + +
    alertdialog button
    cellTable
    checkbox @@ -71,7 +99,13 @@

    Examples by Role

    columnheaderTable + +
    combobox @@ -125,7 +161,16 @@

    Examples by Role

    gridcellLayout Grid + +
    group
    img + +
    link Link
    list + +
    listbox @@ -159,6 +224,17 @@

    Examples by Role

    listitem + +
    main Main Landmark menuitem
    presentationNavigation Menu Button
    radio @@ -261,7 +344,10 @@

    Examples by Role

    row rowgroup Table
    rowheaderData Grid
    search Search Landmark
    tableTable + +
    tablist
    aria-atomicAlert
    aria-autocomplete @@ -426,11 +528,16 @@

    Examples By Properties and States

    aria-colcount Data Grid
    aria-colindexData Grid
    aria-controls
    aria-currentDisclosure for Navigation Menus + +
    aria-describedby aria-hidden @@ -537,6 +651,7 @@

    Examples By Properties and States

    aria-label aria-labelledby
    aria-posinset aria-setsize
    ', indexStart); + } + if (indexStart >= 0 && indexEnd >= 0) { + dataAttributeTables.push(data.substr(indexStart, indexEnd)); + indexStart = indexEnd + 1; } + } while (indexStart >= 0 && indexEnd >= 0); - index += 1; + return dataAttributeTables; +} + +function getIndexStartAndEnd(table, indexStart) { + indexStart = table.indexOf('', indexStart); + if (indexStart < 0) { + return [-1, -1]; } + let indexEnd = table.indexOf('', indexStart); + let indexEqual = table.indexOf('=', indexStart); - return count; + if (indexEqual >= 0) { + indexEnd = Math.min(indexEnd, indexEqual); + } + return [indexStart, indexEnd]; } function getRolesFromExample(data) { let roles = []; - let indexStart = data.indexOf('', 0); - let indexEnd = data.indexOf('', indexStart); + let tables = getDataAttributeTables(data); - while (indexStart > 1 && indexEnd > 1) { - let code = data.substring(indexStart + 6, indexEnd).trim(); - - for (let i = 0; i < ariaRoles.length; i++) { - if ( - getColumn(data, indexStart) === 1 && - code == ariaRoles[i] && - roles.indexOf(ariaRoles[i]) < 0 - ) { - roles.push(ariaRoles[i]); - } - } + for (let i = 0; i < tables.length; i++) { + let table = tables[i]; - indexStart = data.indexOf('', indexEnd); + let indexStart = 0, + indexEnd; + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); - if (indexStart > 0) { - indexEnd = data.indexOf('', indexStart); + while (indexStart > 1 && indexEnd > 1) { + let code = table.substring(indexStart + 6, indexEnd).trim(); + if (code.indexOf('aria') !== 0) { + console.log(' [roleOrElement]: ' + code); + for (let i = 0; i < ariaRoles.length; i++) { + if (code == ariaRoles[i] && roles.indexOf(ariaRoles[i]) < 0) { + roles.push(ariaRoles[i]); + } + } + } + indexStart = table.indexOf('', indexEnd + 1); + if (indexStart >= 0) { + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + } } } @@ -232,30 +248,34 @@ function getRolesFromExample(data) { function getPropertiesAndStatesFromExample(data) { let propertiesAndStates = []; - let indexStart = data.indexOf('', 0); - let indexEnd = data.indexOf('', indexStart); - - while (indexStart > 1 && indexEnd > 1) { - let code = data.substring(indexStart + 6, indexEnd); - - for (let i = 0; i < ariaPropertiesAndStates.length; i++) { - const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); - if ( - getColumn(data, indexStart) === 2 && - hasPropOrState.test(code) && - propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 - ) { - propertiesAndStates.push(ariaPropertiesAndStates[i]); - } - } + let tables = getDataAttributeTables(data); - indexStart = data.indexOf('', indexEnd); + for (let i = 0; i < tables.length; i++) { + let table = tables[i]; + let indexStart = 0, + indexEnd; + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); - if (indexStart > 0) { - indexEnd = data.indexOf('', indexStart); + while (indexStart > 1 && indexEnd > 1) { + let code = table.substring(indexStart + 6, indexEnd); + if (code.indexOf('aria') === 0) { + console.log(' [propertyOrState]: ' + code); + for (let i = 0; i < ariaPropertiesAndStates.length; i++) { + const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); + if ( + hasPropOrState.test(code) && + propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 + ) { + propertiesAndStates.push(ariaPropertiesAndStates[i]); + } + } + } + indexStart = table.indexOf('', indexEnd + 1); + if (indexStart >= 0) { + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + } } } - return propertiesAndStates; } @@ -308,6 +328,7 @@ glob nodir: true, }) .forEach(function (file) { + console.log('[file]: ' + file); let data = fs.readFileSync(file, 'utf8'); let ref = file.replace('examples/', '../examples/'); let title = data diff --git a/scripts/reference-tables.js b/scripts/reference-tables.js index a1f433370e..dee32ccd0b 100644 --- a/scripts/reference-tables.js +++ b/scripts/reference-tables.js @@ -150,49 +150,65 @@ let indexOfPropertiesAndStates = {}; console.log('Generating index...'); -function getColumn(data, indexStart) { - let count = 0; - let index = data.lastIndexOf(' 0 && index <= indexStart) { - let indexTd = data.indexOf('= 0) { + indexEnd = data.indexOf('

    ', indexStart); } + if (indexStart >= 0 && indexEnd >= 0) { + dataAttributeTables.push(data.substr(indexStart, indexEnd)); + indexStart = indexEnd + 1; + } + } while (indexStart >= 0 && indexEnd >= 0); + + return dataAttributeTables; +} - index += 1; +function getIndexStartAndEnd(table, indexStart) { + indexStart = table.indexOf('', indexStart); + if (indexStart < 0) { + return [-1, -1]; } + let indexEnd = table.indexOf('', indexStart); + let indexEqual = table.indexOf('=', indexStart); - return count; + if (indexEqual >= 0) { + indexEnd = Math.min(indexEnd, indexEqual); + } + return [indexStart, indexEnd]; } function getRoles(data) { let roles = []; - let indexStart = data.indexOf('', 0); - let indexEnd = data.indexOf('', indexStart); - - while (indexStart > 1 && indexEnd > 1) { - let code = data.substring(indexStart + 6, indexEnd).trim(); + let tables = getDataAttributeTables(data); - for (let i = 0; i < ariaRoles.length; i++) { - if ( - getColumn(data, indexStart) === 1 && - code == ariaRoles[i] && - roles.indexOf(ariaRoles[i]) < 0 - ) { - roles.push(ariaRoles[i]); - } - } + for (let i = 0; i < tables.length; i++) { + let table = tables[i]; - indexStart = data.indexOf('', indexEnd); + let indexStart = 0, + indexEnd; + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); - if (indexStart > 0) { - indexEnd = data.indexOf('', indexStart); + while (indexStart > 1 && indexEnd > 1) { + let code = table.substring(indexStart + 6, indexEnd).trim(); + if (code.indexOf('aria') !== 0) { + console.log(' [roleOrElement]: ' + code); + for (let i = 0; i < ariaRoles.length; i++) { + if (code == ariaRoles[i] && roles.indexOf(ariaRoles[i]) < 0) { + roles.push(ariaRoles[i]); + } + } + } + indexStart = table.indexOf('', indexEnd + 1); + if (indexStart >= 0) { + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + } } } @@ -202,30 +218,34 @@ function getRoles(data) { function getPropertiesAndStates(data) { let propertiesAndStates = []; - let indexStart = data.indexOf('', 0); - let indexEnd = data.indexOf('', indexStart); - - while (indexStart > 1 && indexEnd > 1) { - let code = data.substring(indexStart + 6, indexEnd); - - for (let i = 0; i < ariaPropertiesAndStates.length; i++) { - const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); - if ( - getColumn(data, indexStart) === 2 && - hasPropOrState.test(code) && - propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 - ) { - propertiesAndStates.push(ariaPropertiesAndStates[i]); + let tables = getDataAttributeTables(data); + + for (let i = 0; i < tables.length; i++) { + let table = tables[i]; + let indexStart = 0, + indexEnd; + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + + while (indexStart > 1 && indexEnd > 1) { + let code = table.substring(indexStart + 6, indexEnd); + if (code.indexOf('aria') === 0) { + console.log(' [propertyOrState]: ' + code); + for (let i = 0; i < ariaPropertiesAndStates.length; i++) { + const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); + if ( + hasPropOrState.test(code) && + propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 + ) { + propertiesAndStates.push(ariaPropertiesAndStates[i]); + } + } + } + indexStart = table.indexOf('', indexEnd + 1); + if (indexStart >= 0) { + [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); } - } - - indexStart = data.indexOf('', indexEnd); - - if (indexStart > 0) { - indexEnd = data.indexOf('', indexStart); } } - return propertiesAndStates; } @@ -277,6 +297,8 @@ glob nodir: true, }) .forEach(function (file) { + console.log('[file]: ' + file); + let data = fs.readFileSync(file, 'utf8'); let ref = file.replace('examples/', ''); let title = data From 6cabaa3532ccf1e2a57247ba1a2e44b7e4a24ad4 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Tue, 19 Jan 2021 14:52:58 -0600 Subject: [PATCH 05/16] removed index.html for breadcrumbs --- examples/breadcrumb/index.html | 142 --------------------------------- 1 file changed, 142 deletions(-) delete mode 100644 examples/breadcrumb/index.html diff --git a/examples/breadcrumb/index.html b/examples/breadcrumb/index.html deleted file mode 100644 index ef173009e8..0000000000 --- a/examples/breadcrumb/index.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - Breadcrumb Example | WAI-ARIA Authoring Practices 1.2 - - - - - - - - - - - - -
    -

    Breadcrumb Example

    -

    The following example demonstrates the breadcrumb design pattern.

    -
    -
    -

    Example

    -
    - - - -
    - -
    -

    Accessibility Features

    -
      -
    • The set of links is structured using an ordered list .
    • -
    • A nav element labeled Breadcrumb identifies the structure as a breadcrumb trail and makes it a navigation landmark so that it is easy to locate.
    • -
    • To prevent screen reader announcement of the visual separators between links, they are added via CSS: -
        -
      • - The separators are part of the visual presentation that signifies the breadcrumb trail, which is already semantically represented by the nav element with its label of Breadcrumb. - So, using a display technique that is not represented in the accessibility tree used by screen readers prevents redundant and potentially distracting verbosity. -
      • -
      • Each link has a border on one side that is skewed with the CSS’ transform property so it resembles a slash.
      • -
      -
    • -
    -
    - -
    -

    Keyboard Support

    -

    No keyboard interaction needed.

    -
    - -
    -

    Role, Property, State, and Tabindex Attributes

    - - - - - - - - - - - - - - - - - - - - - - - -
    RoleAttributeElementUsage
    - aria-label=Breadcrumb - - nav - - Provides a label that describes the type of navigation provided in the nav element. -
    - aria-current=page - - a - - Applied to the last link in the set to indicate that it represents the current page. -
    -
    - -
    -

    Javascript and CSS Source Code

    - -
    - -
    -

    HTML Source Code

    - -
    - - -
    -
    - - - - From 921dc02bbe133a9b3cbb4a24d33fe55385949c42 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Tue, 19 Jan 2021 16:34:20 -0600 Subject: [PATCH 06/16] updated console output for references and coverage --- scripts/coverage-report.js | 4 ++-- scripts/reference-tables.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/coverage-report.js b/scripts/coverage-report.js index 096642bfa1..1fab8a4960 100644 --- a/scripts/coverage-report.js +++ b/scripts/coverage-report.js @@ -228,9 +228,9 @@ function getRolesFromExample(data) { while (indexStart > 1 && indexEnd > 1) { let code = table.substring(indexStart + 6, indexEnd).trim(); if (code.indexOf('aria') !== 0) { - console.log(' [roleOrElement]: ' + code); for (let i = 0; i < ariaRoles.length; i++) { if (code == ariaRoles[i] && roles.indexOf(ariaRoles[i]) < 0) { + console.log(' [role]: ' + code); roles.push(ariaRoles[i]); } } @@ -259,13 +259,13 @@ function getPropertiesAndStatesFromExample(data) { while (indexStart > 1 && indexEnd > 1) { let code = table.substring(indexStart + 6, indexEnd); if (code.indexOf('aria') === 0) { - console.log(' [propertyOrState]: ' + code); for (let i = 0; i < ariaPropertiesAndStates.length; i++) { const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); if ( hasPropOrState.test(code) && propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 ) { + console.log(' [propertyOrState]: ' + code); propertiesAndStates.push(ariaPropertiesAndStates[i]); } } diff --git a/scripts/reference-tables.js b/scripts/reference-tables.js index dee32ccd0b..77a87403b2 100644 --- a/scripts/reference-tables.js +++ b/scripts/reference-tables.js @@ -198,9 +198,9 @@ function getRoles(data) { while (indexStart > 1 && indexEnd > 1) { let code = table.substring(indexStart + 6, indexEnd).trim(); if (code.indexOf('aria') !== 0) { - console.log(' [roleOrElement]: ' + code); for (let i = 0; i < ariaRoles.length; i++) { if (code == ariaRoles[i] && roles.indexOf(ariaRoles[i]) < 0) { + console.log(' [role]: ' + code); roles.push(ariaRoles[i]); } } @@ -229,13 +229,13 @@ function getPropertiesAndStates(data) { while (indexStart > 1 && indexEnd > 1) { let code = table.substring(indexStart + 6, indexEnd); if (code.indexOf('aria') === 0) { - console.log(' [propertyOrState]: ' + code); for (let i = 0; i < ariaPropertiesAndStates.length; i++) { const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); if ( hasPropOrState.test(code) && propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 ) { + console.log(' [propertyOrState]: ' + code); propertiesAndStates.push(ariaPropertiesAndStates[i]); } } From 5290cadcab64c6d3978b32c7a018fa4557385a59 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Fri, 9 Apr 2021 12:49:26 -0500 Subject: [PATCH 07/16] ignoring depricated template files --- examples/index.html | 1 - scripts/reference-tables.js | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/index.html b/examples/index.html index 9cb0e8df03..27fa1b32b4 100644 --- a/examples/index.html +++ b/examples/index.html @@ -678,7 +678,6 @@

    Examples By Properties and States

    • Accordion
    • Checkbox (Two State)
    • -
    • EXAMPLE_NAME
    • Date Picker Combobox
    • Select-Only Combobox
    • Editable Combobox with Grid Popup
    • diff --git a/scripts/reference-tables.js b/scripts/reference-tables.js index 77a87403b2..311c6799ea 100644 --- a/scripts/reference-tables.js +++ b/scripts/reference-tables.js @@ -299,6 +299,11 @@ glob .forEach(function (file) { console.log('[file]: ' + file); + if (file.toLowerCase().indexOf('depricated') >= 0) { + console.log(' [ignored]'); + return; + } + let data = fs.readFileSync(file, 'utf8'); let ref = file.replace('examples/', ''); let title = data From b091bc63d0047b44043e1796146195c8798c10aa Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Fri, 9 Apr 2021 12:58:44 -0500 Subject: [PATCH 08/16] fixed spelling mistake in deprecated file name and in JS --- ... Deprecated-MultipleImplementationExample-Template.html} | 0 scripts/coverage-report.js | 6 ++++++ scripts/reference-tables.js | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) rename examples/coding-template/{Depricated-MultipleImplementationExample-Template.html => Deprecated-MultipleImplementationExample-Template.html} (100%) diff --git a/examples/coding-template/Depricated-MultipleImplementationExample-Template.html b/examples/coding-template/Deprecated-MultipleImplementationExample-Template.html similarity index 100% rename from examples/coding-template/Depricated-MultipleImplementationExample-Template.html rename to examples/coding-template/Deprecated-MultipleImplementationExample-Template.html diff --git a/scripts/coverage-report.js b/scripts/coverage-report.js index 1fab8a4960..999d28e566 100644 --- a/scripts/coverage-report.js +++ b/scripts/coverage-report.js @@ -329,6 +329,12 @@ glob }) .forEach(function (file) { console.log('[file]: ' + file); + + if (file.toLowerCase().indexOf('deprecated') >= 0) { + console.log(' [ignored]'); + return; + } + let data = fs.readFileSync(file, 'utf8'); let ref = file.replace('examples/', '../examples/'); let title = data diff --git a/scripts/reference-tables.js b/scripts/reference-tables.js index 311c6799ea..df579f0571 100644 --- a/scripts/reference-tables.js +++ b/scripts/reference-tables.js @@ -299,7 +299,7 @@ glob .forEach(function (file) { console.log('[file]: ' + file); - if (file.toLowerCase().indexOf('depricated') >= 0) { + if (file.toLowerCase().indexOf('deprecated') >= 0) { console.log(' [ignored]'); return; } From 739e6964c7e701bfab97e9ef180a75ecffd6ea51 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Fri, 9 Apr 2021 15:19:41 -0500 Subject: [PATCH 09/16] fixed bugs --- coverage/index.html | 981 ++++++++++++------------------------ coverage/prop-coverage.csv | 68 +-- coverage/role-coverage.csv | 84 +-- examples/index.html | 465 +---------------- package-lock.json | 34 +- package.json | 4 +- scripts/coverage-report.js | 285 ++++------- scripts/reference-tables.js | 121 ++--- 8 files changed, 550 insertions(+), 1492 deletions(-) diff --git a/coverage/index.html b/coverage/index.html index 7b4f71c994..fea68ce930 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -24,12 +24,12 @@

      ARIA Roles, Properties and States Referenced in Guidance and Examples

      @@ -41,30 +41,41 @@

      CSV Files of Role, Properties and States Coverage

      -

      Roles with No Guidance or Examples (18)

      +

      Roles with No Guidance or Examples (29)

      • application
      • +
      • article
      • definition
      • directory
      • document
      • figure
      • heading
      • +
      • list
      • +
      • listitem
      • log
      • marquee
      • math
      • +
      • menuitemcheckbox
      • +
      • menuitemradio
      • +
      • none
      • note
      • +
      • option
      • progressbar
      • +
      • rowgroup
      • scrollbar
      • searchbox
      • +
      • separator
      • status
      • switch
      • +
      • tabpanel
      • term
      • textbox
      • -
      • timer
      +
    • timer
    • +
    • treeitem
    -

    Roles with at Least One Guidance or Example (15)

    +

    Roles with at Least One Guidance or Example (9)

    @@ -77,87 +88,48 @@

    Roles with at Least One Guidance or Exampl

    - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + - - - - + + @@ -169,14 +141,14 @@

    Roles with at Least One Guidance or Exampl

    -
    alertdialog -Alert Dialog + Alert Dialog
    article-Feed -
    bannerBanner -Banner Landmark -
    complementaryComplementary -Complementary Landmark -
    contentinfoContentinfo + checkboxCheckbox Contentinfo Landmark + Checkbox (Mixed-State)
    feed Feed Feed + Feed
    link Link Link -
    mainMain -Main Landmark -
    menuitemcheckbox-Editor Menubar -
    rowgroup-Table + Link
    rowheader -Data Grid + Data Grid
    searchSearch + spinbuttonSpinbutton Search Landmark + Toolbar
    separator-Editor Menubar + tabKeyboard Navigation Between Components (The Tab Sequence) -
    tooltiptreegrid Treegrid Treegrid Email Inbox + Treegrid Email Inbox
    -

    Roles with More than One Guidance or Example (36)

    +

    Roles with More than One Guidance or Example (31)

    @@ -193,10 +165,17 @@

    Roles with More than One Guidance or Exa
  • Alert and Message Dialogs
  • +

    + + + + @@ -207,58 +186,41 @@

    Roles with More than One Guidance or Exa

    - - - - - - + @@ -270,33 +232,52 @@

    Roles with More than One Guidance or Exa

    + + + + + + + + + + @@ -324,12 +305,9 @@

    Roles with More than One Guidance or Exa

    @@ -340,64 +318,44 @@

    Roles with More than One Guidance or Exa
  • For Radio Group Contained in a Toolbar
  • -

    - - - - - - - + + @@ -408,12 +366,12 @@

    Roles with More than One Guidance or Exa

    @@ -421,8 +379,8 @@

    Roles with More than One Guidance or Exa

    @@ -430,69 +388,38 @@

    Roles with More than One Guidance or Exa

    - - - - - - - - - - - - - - - - + @@ -503,9 +430,8 @@

    Roles with More than One Guidance or Exa

    @@ -513,20 +439,22 @@

    Roles with More than One Guidance or Exa

    - @@ -535,64 +463,49 @@

    Roles with More than One Guidance or Exa

    - + - - - + - - - - @@ -600,56 +513,34 @@

    Roles with More than One Guidance or Exa

    - - - - - - - - - - - @@ -657,25 +548,35 @@

    Roles with More than One Guidance or Exa
    -

    Properties and States with No Guidance or Examples (13)

    +

    Properties and States with No Guidance or Examples (23)

      +
    • aria-atomic
    • +
    • aria-busy
    • +
    • aria-checked
    • aria-details
    • aria-dropeffect
    • aria-errormessage
    • aria-flowto
    • aria-grabbed
    • +
    • aria-hidden
    • aria-invalid
    • aria-keyshortcuts
    • +
    • aria-level
    • aria-multiline
    • +
    • aria-multiselectable
    • +
    • aria-orientation
    • aria-owns
    • aria-placeholder
    • +
    • aria-posinset
    • aria-readonly
    • aria-relevant
    • -
    • aria-required
    +
  • aria-required
  • +
  • aria-selected
  • +
  • aria-setsize
  • -

    Properties and States with at Least One Guidance or Example (8)

    +

    Properties and States with at Least One Guidance or Example (16)

    Alert +
    banner +Banner Landmark
    cell Table -
    checkboxCheckbox - --
    columnheader -
    +
    complementary +Complementary Landmark +
    contentinfo +Contentinfo Landmark
    dialog
    form @@ -307,16 +288,16 @@

    Roles with More than One Guidance or Exa

    grid
    gridcell -
    + Date Picker Spin Button
    img - -
    list-
    listbox
    listitem-main +Main Landmark
    menubar -
    menuitem - -
    menuitemradio-
    navigation Navigation Landmark -
    none- -
    option-
    presentation Navigation Menu Button --
    radio
    radiogroup -
    regionRegion + row -
    slidersearch + Search Landmark
    spinbuttonSpinbutton -slider -
    tabKeyboard Navigation Between Components (The Tab Sequence)
    table
    tablist - -
    tabpanel-
    toolbar Toolbar + Toolbar
    tree -
    treeitem-
    @@ -686,60 +587,106 @@

    Properties and States with at Least One Gu

    - - - + + - + + - + + + + - - + + - + + + + - - + + + + + + - + - - + + - + + + + - - - + + + + + + + + + + + + + + + + + + + +
    aria-atomic-Alert + aria-activedescendantManaging Focus in Composites Using aria-activedescendant -
    aria-busyaria-colcountUsing aria-colcount and aria-colindex + -Feed +
    aria-colspanDefining cell spans using aria-colspan and aria-rowspan -
    aria-colcountUsing aria-colcount and aria-colindex + aria-current-Breadcrumb Data Grid +
    aria-describedbyDescribing by referencing content with aria-describedby -
    aria-colspanDefining cell spans using aria-colspan and aria-rowspan + aria-disabled-Toolbar
    aria-live -Alert +
    aria-multiselectablearia-pressed -Listboxes with Rearrangeable Options + Toolbar
    aria-orientationaria-rowcountUsing aria-rowcount and aria-rowindex + -Slider with aria-orientation and aria-valuetext +
    aria-rowindexUsing aria-rowcount and aria-rowindex -
    aria-rowspanDefining cell spans using aria-colspan and aria-rowspan + Defining cell spans using aria-colspan and aria-rowspan -
    aria-sortIndicating sort order with aria-sort + Indicating sort order with aria-sort Data Grid + -
    aria-valuemaxUsing aria-valuemin, aria-valuemax and aria-valuenow +-
    aria-valuemin-Meter +
    aria-valuenowUsing aria-valuemin, aria-valuemax and aria-valuenow +-
    aria-valuetextUsing aria-valuetext -
    -

    Properties and States with More than One Guidance or Example (27)

    +

    Properties and States with More than One Guidance or Example (9)

    @@ -749,117 +696,33 @@

    Properties and States with More than One

    - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -867,28 +730,10 @@

    Properties and States with More than One

    @@ -896,93 +741,60 @@

    Properties and States with More than One

    - - - - - - - - + - - - - - - - - - - - - - - - - - - - - @@ -1056,118 +817,8 @@

    Properties and States with More than One

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/prop-coverage.csv b/coverage/prop-coverage.csv index 982a906269..1918faff66 100644 --- a/coverage/prop-coverage.csv +++ b/coverage/prop-coverage.csv @@ -1,49 +1,49 @@ "Property or State","Guidance","Examples","References" -"aria-activedescendant","1","11","Guidance: Managing Focus in Composites Using aria-activedescendant","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Radio Group Using aria-activedescendant" -"aria-atomic","0","1","Example: Alert" -"aria-autocomplete","0","5","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup" -"aria-busy","0","1","Example: Feed" -"aria-checked","0","6","Example: Checkbox (Two State)","Example: Checkbox (Mixed-State)","Example: Editor Menubar","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" -"aria-colcount","1","1","Guidance: Using aria-colcount and aria-colindex ","Example: Data Grid" -"aria-colindex","3","1","Guidance: Using aria-colcount and aria-colindex ","Guidance: Using aria-colindex When Column Indices Are Contiguous","Guidance: Using aria-colindex When Column Indices Are Not Contiguous","Example: Data Grid" -"aria-colspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan " -"aria-controls","0","19","Example: Accordion","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Checkbox (Mixed-State)","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar" -"aria-current","0","2","Example: Breadcrumb","Example: Disclosure for Navigation Menus" -"aria-describedby","1","6","Guidance: Describing by referencing content with aria-describedby ","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Table" +"aria-activedescendant","1","0","Guidance: Managing Focus in Composites Using aria-activedescendant" +"aria-atomic","0","0" +"aria-autocomplete","0","3","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete" +"aria-busy","0","0" +"aria-checked","0","0" +"aria-colcount","1","0","Guidance: Using aria-colcount and aria-colindex" +"aria-colindex","3","0","Guidance: Using aria-colcount and aria-colindex","Guidance: Using aria-colindex When Column Indices Are Contiguous","Guidance: Using aria-colindex When Column Indices Are Not Contiguous" +"aria-colspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan" +"aria-controls","0","3","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button" +"aria-current","0","1","Example: Breadcrumb" +"aria-describedby","1","0","Guidance: Describing by referencing content with aria-describedby" "aria-details","0","0" -"aria-disabled","0","3","Example: Accordion","Example: Editor Menubar","Example: Toolbar" +"aria-disabled","0","1","Example: Toolbar" "aria-dropeffect","0","0" "aria-errormessage","0","0" -"aria-expanded","0","22","Example: Accordion","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Toolbar","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"aria-expanded","0","4","Example: Accordion","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus" "aria-flowto","0","0" "aria-grabbed","0","0" -"aria-haspopup","0","9","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Toolbar" -"aria-hidden","0","5","Example: Button (IDL Version)","Example: Alert Dialog","Example: Modal Dialog","Example: Date Picker Spin Button","Example: Toolbar" +"aria-haspopup","0","4","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Collapsible Dropdown Listbox","Example: Toolbar" +"aria-hidden","0","0" "aria-invalid","0","0" "aria-keyshortcuts","0","0" -"aria-label","1","18","Guidance: Naming with a String Attribute Via aria-label ","Example: Breadcrumb","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Link","Example: Editor Menubar","Example: Navigation Menubar","Example: Horizontal Multi-Thumb Slider","Example: Date Picker Spin Button","Example: Table","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar","Example: Treegrid Email Inbox" -"aria-labelledby","1","38","Guidance: Naming with Referenced Content Via aria-labelledby ","Example: Accordion","Example: Checkbox (Two State)","Example: EXAMPLE_NAME","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Advanced Data Grid","Example: Data Grid","Example: Layout Grid","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Meter","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" -"aria-level","0","5","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" -"aria-live","0","5","Example: Alert","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Date Picker Combobox","Example: Date Picker Dialog" -"aria-modal","0","4","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog" +"aria-label","1","11","Guidance: Naming with a String Attribute Via aria-label","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Editor Menubar","Example: Navigation Menubar","Example: Table","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar","Example: Treegrid Email Inbox" +"aria-labelledby","1","29","Guidance: Naming with Referenced Content Via aria-labelledby","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog","Example: Feed","Example: Advanced Data Grid","Example: Data Grid","Example: Layout Grid","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Date Picker Spin Button","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties","Example: Complementary Landmark","Example: Form Landmark","Example: Main Landmark","Example: Navigation Landmark","Example: Region Landmark","Example: Search Landmark" +"aria-level","0","0" +"aria-live","0","1","Example: Alert" +"aria-modal","0","2","Example: Date Picker Combobox","Example: Date Picker Dialog" "aria-multiline","0","0" -"aria-multiselectable","0","1","Example: Listboxes with Rearrangeable Options" -"aria-orientation","0","1","Example: Slider with aria-orientation and aria-valuetext" +"aria-multiselectable","0","0" +"aria-orientation","0","0" "aria-owns","0","0" "aria-placeholder","0","0" -"aria-posinset","0","8","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Feed","Example: Editor Menubar","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" -"aria-pressed","0","3","Example: Button (IDL Version)","Example: Button","Example: Toolbar" +"aria-posinset","0","0" +"aria-pressed","0","1","Example: Toolbar" "aria-readonly","0","0" "aria-relevant","0","0" "aria-required","0","0" "aria-roledescription","0","2","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control" -"aria-rowcount","1","2","Guidance: Using aria-rowcount and aria-rowindex ","Example: Data Grid","Example: Layout Grid" -"aria-rowindex","1","2","Guidance: Using aria-rowcount and aria-rowindex ","Example: Data Grid","Example: Layout Grid" -"aria-rowspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan " -"aria-selected","0","14","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"aria-setsize","0","8","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Feed","Example: Editor Menubar","Example: Treegrid Email Inbox","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" -"aria-sort","1","1","Guidance: Indicating sort order with aria-sort ","Example: Data Grid" -"aria-valuemax","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" -"aria-valuemin","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" -"aria-valuenow","1","6","Guidance: Using aria-valuemin , aria-valuemax and aria-valuenow ","Example: Meter","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" -"aria-valuetext","1","4","Guidance: Using aria-valuetext ","Example: Horizontal Multi-Thumb Slider","Example: Slider with aria-orientation and aria-valuetext","Example: Date Picker Spin Button","Example: Toolbar" +"aria-rowcount","1","0","Guidance: Using aria-rowcount and aria-rowindex" +"aria-rowindex","1","0","Guidance: Using aria-rowcount and aria-rowindex" +"aria-rowspan","1","0","Guidance: Defining cell spans using aria-colspan and aria-rowspan" +"aria-selected","0","0" +"aria-setsize","0","0" +"aria-sort","1","0","Guidance: Indicating sort order with aria-sort" +"aria-valuemax","1","0","Guidance: Using aria-valuemin, aria-valuemax and aria-valuenow" +"aria-valuemin","0","1","Example: Meter" +"aria-valuenow","1","0","Guidance: Using aria-valuemin, aria-valuemax and aria-valuenow" +"aria-valuetext","1","0","Guidance: Using aria-valuetext" diff --git a/coverage/role-coverage.csv b/coverage/role-coverage.csv index 13f93dd0eb..1be13cf831 100644 --- a/coverage/role-coverage.csv +++ b/coverage/role-coverage.csv @@ -1,70 +1,74 @@ "Role","Guidance","Examples","References" -"alert","2","2","Guidance: Alert","Guidance: Alert and Message Dialogs","Example: Alert","Example: Alert Dialog" +"alert","2","1","Guidance: Alert","Guidance: Alert and Message Dialogs","Example: Alert" "alertdialog","0","1","Example: Alert Dialog" "application","0","0" -"article","0","1","Example: Feed" -"banner","1","1","Guidance: Banner","Example: Banner Landmark" -"button","2","21","Guidance: Button","Guidance: Menu Button","Example: Accordion","Example: Button (IDL Version)","Example: Button","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Date Picker Spin Button","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation","Example: Toolbar" -"cell","3","1","Guidance: Defining cell spans using aria-colspan and aria-rowspan ","Guidance: Whether to Focus on a Cell Or an Element Inside It","Guidance: Editing and Navigating Inside a Cell","Example: Table" -"checkbox","1","2","Guidance: Checkbox","Example: Checkbox (Two State)","Example: Checkbox (Mixed-State)" -"columnheader","0","3","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Table" -"combobox","2","6","Guidance: Combobox","Guidance: Combobox Keyboard Interaction","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup" -"complementary","1","1","Guidance: Complementary","Example: Complementary Landmark" -"contentinfo","1","1","Guidance: Contentinfo","Example: Contentinfo Landmark" +"article","0","0" +"banner","2","1","Guidance: Banner","Guidance: Banner","Example: Banner Landmark" +"button","2","16","Guidance: Button","Guidance: Menu Button","Example: Button (IDL Version)","Example: Button","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Disclosure (Show/Hide) for Answers to Frequently Asked Questions","Example: Disclosure (Show/Hide) for Image Description","Example: Disclosure for Navigation Menus","Example: Collapsible Dropdown Listbox","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Toolbar" +"cell","3","0","Guidance: Whether to Focus on a Cell Or an Element Inside It","Guidance: Editing and Navigating Inside a Cell","Guidance: Defining cell spans using aria-colspan and aria-rowspan" +"checkbox","1","1","Guidance: Checkbox","Example: Checkbox (Mixed-State)" +"columnheader","0","2","Example: Date Picker Combobox","Example: Date Picker Dialog" +"combobox","2","5","Guidance: Combobox","Guidance: Combobox Keyboard Interaction","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox","Example: Editable Combobox with Grid Popup" +"complementary","2","1","Guidance: Complementary","Guidance: Complementary","Example: Complementary Landmark" +"contentinfo","2","1","Guidance: Contentinfo","Guidance: Contentinfo","Example: Contentinfo Landmark" "definition","0","0" -"dialog","2","4","Guidance: Dialog (Modal)","Guidance: Dialog Popup Keyboard Interaction","Example: Date Picker Combobox","Example: Alert Dialog","Example: Date Picker Dialog","Example: Modal Dialog" +"dialog","2","3","Guidance: Dialog Popup Keyboard Interaction","Guidance: Dialog (Modal)","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Modal Dialog" "directory","0","0" "document","0","0" "feed","1","1","Guidance: Feed","Example: Feed" "figure","0","0" -"form","2","1","Guidance: Naming Form Controls with the Label Element","Guidance: Form","Example: Form Landmark" -"grid","2","5","Guidance: Grid and Table Properties","Guidance: Grid Popup Keyboard Interaction","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid" -"gridcell","0","6","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid","Example: Treegrid Email Inbox" -"group","2","8","Guidance: Radio Group","Guidance: For Radio Group Contained in a Toolbar","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Checkbox (Two State)","Example: Editor Menubar","Example: Date Picker Spin Button","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"form","3","1","Guidance: Form","Guidance: Naming Form Controls with the Label Element","Guidance: Form","Example: Form Landmark" +"grid","2","5","Guidance: Grid Popup Keyboard Interaction","Guidance: Grid and Table Properties","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid" +"gridcell","0","3","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Data Grid" +"group","2","1","Guidance: Radio Group","Guidance: For Radio Group Contained in a Toolbar","Example: Date Picker Spin Button" "heading","0","0" "img","0","2","Example: Link","Example: Horizontal Multi-Thumb Slider" "link","1","1","Guidance: Link","Example: Link" -"list","0","2","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" -"listbox","2","8","Guidance: Listbox","Guidance: Listbox Popup Keyboard Interaction","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox","Example: Collapsible Dropdown Listbox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox" -"listitem","0","4","Example: Navigation Menu Button","Example: Navigation Menubar","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"list","0","0" +"listbox","2","7","Guidance: Listbox Popup Keyboard Interaction","Guidance: Listbox","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox","Example: Listbox with Grouped Options","Example: Listboxes with Rearrangeable Options","Example: Scrollable Listbox" +"listitem","0","0" "log","0","0" -"main","1","1","Guidance: Main","Example: Main Landmark" +"main","2","1","Guidance: Main","Guidance: Main","Example: Main Landmark" "marquee","0","0" "math","0","0" "menu","2","6","Guidance: Menu or Menu bar","Guidance: Menu Button","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar","Example: Toolbar" "menubar","0","2","Example: Editor Menubar","Example: Navigation Menubar" -"menuitem","0","5","Example: Actions Menu Button Using aria-activedescendant","Example: Actions Menu Button Using element.focus()","Example: Navigation Menu Button","Example: Editor Menubar","Example: Navigation Menubar" -"menuitemcheckbox","0","1","Example: Editor Menubar" -"menuitemradio","0","2","Example: Editor Menubar","Example: Toolbar" -"navigation","5","1","Guidance: Fundamental Keyboard Navigation Conventions","Guidance: Keyboard Navigation Between Components (The Tab Sequence)","Guidance: Keyboard Navigation Inside Components","Guidance: Ensure Basic Access Via Navigation","Guidance: Navigation","Example: Navigation Landmark" -"none","0","4","Example: Navigation Menu Button","Example: Navigation Menubar","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"menuitem","0","2","Example: Editor Menubar","Example: Navigation Menubar" +"menuitemcheckbox","0","0" +"menuitemradio","0","0" +"navigation","6","1","Guidance: Navigation","Guidance: Fundamental Keyboard Navigation Conventions","Guidance: Keyboard Navigation Between Components (The Tab Sequence)","Guidance: Keyboard Navigation Inside Components","Guidance: Ensure Basic Access Via Navigation ","Guidance: Navigation","Example: Navigation Landmark" +"none","0","0" "note","0","0" -"option","0","4","Example: Editable Combobox With Both List and Inline Autocomplete","Example: Editable Combobox With List Autocomplete","Example: Editable Combobox without Autocomplete","Example: Select-Only Combobox" -"presentation","4","1","Guidance: Intentionally Hiding Semantics with the presentation Role","Guidance: Effects of Role presentation ","Guidance: Conditions That Cause Role presentation to be Ignored","Guidance: Example Demonstrating Effects of the presentation Role","Example: Navigation Menu Button" +"option","0","0" +"presentation","3","0","Guidance: Intentionally Hiding Semantics with the presentation Role","Guidance: + Conditions That Cause Role presentation to be Ignored + ","Guidance: + Example Demonstrating Effects of the presentation Role + " "progressbar","0","0" -"radio","3","3","Guidance: Radio Group","Guidance: For Radio Groups Not Contained in a Toolbar","Guidance: For Radio Group Contained in a Toolbar","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" +"radio","3","2","Guidance: Radio Group","Guidance: For Radio Groups Not Contained in a Toolbar","Guidance: For Radio Group Contained in a Toolbar","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex" "radiogroup","0","3","Example: Radio Group Using aria-activedescendant","Example: Radio Group Using Roving tabindex","Example: Toolbar" -"region","1","4","Guidance: Region","Example: Accordion","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Region Landmark" -"row","0","7","Example: Date Picker Combobox","Example: Editable Combobox with Grid Popup","Example: Date Picker Dialog","Example: Data Grid","Example: Layout Grid","Example: Table","Example: Treegrid Email Inbox" -"rowgroup","0","1","Example: Table" +"region","2","3","Guidance: Region","Guidance: Region","Example: Auto-Rotating Image Carousel with Buttons for Slide Control","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Region Landmark" +"row","0","3","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Data Grid" +"rowgroup","0","0" "rowheader","0","1","Example: Data Grid" "scrollbar","0","0" -"search","1","1","Guidance: Search","Example: Search Landmark" +"search","2","1","Guidance: Search","Guidance: Search","Example: Search Landmark" "searchbox","0","0" -"separator","0","1","Example: Editor Menubar" +"separator","0","0" "slider","2","3","Guidance: Slider","Guidance: Slider (Multi-Thumb)","Example: Horizontal Multi-Thumb Slider","Example: Horizontal Slider","Example: Slider with aria-orientation and aria-valuetext" -"spinbutton","1","2","Guidance: Spinbutton","Example: Date Picker Spin Button","Example: Toolbar" +"spinbutton","1","1","Guidance: Spinbutton","Example: Toolbar" "status","0","0" "switch","0","0" -"tab","1","3","Guidance: Keyboard Navigation Between Components (The Tab Sequence)","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"table","2","5","Guidance: Grid and Table Properties","Guidance: Table","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Data Grid","Example: Table","Example: Treegrid Email Inbox" -"tablist","0","3","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" -"tabpanel","0","3","Example: Auto-Rotating Image Carousel with Tabs for Slide Control","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" +"tab","1","0","Guidance: Keyboard Navigation Between Components (The Tab Sequence)" +"table","2","5","Guidance: Table","Guidance: Grid and Table Properties","Example: Date Picker Combobox","Example: Date Picker Dialog","Example: Data Grid","Example: Table","Example: Treegrid Email Inbox" +"tablist","0","2","Example: Tabs with Automatic Activation","Example: Tabs with Manual Activation" +"tabpanel","0","0" "term","0","0" "textbox","0","0" "timer","0","0" -"toolbar","3","1","Guidance: Toolbar","Guidance: For Radio Groups Not Contained in a Toolbar","Guidance: For Radio Group Contained in a Toolbar","Example: Toolbar" +"toolbar","3","1","Guidance: For Radio Groups Not Contained in a Toolbar","Guidance: For Radio Group Contained in a Toolbar","Guidance: Toolbar","Example: Toolbar" "tooltip","1","0","Guidance: Tooltip Widget" -"tree","2","4","Guidance: Tree View","Guidance: Tree Popup Keyboard Interaction","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"tree","2","4","Guidance: Tree Popup Keyboard Interaction","Guidance: Tree View","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" "treegrid","1","1","Guidance: Treegrid","Example: Treegrid Email Inbox" -"treeitem","0","4","Example: File Directory Treeview Using Computed Properties","Example: File Directory Treeview Using Declared Properties","Example: Navigation Treeview Using Computed Properties","Example: Navigation Treeview Using Declared Properties" +"treeitem","0","0" diff --git a/examples/index.html b/examples/index.html index 27fa1b32b4..4bda9f2700 100644 --- a/examples/index.html +++ b/examples/index.html @@ -37,21 +37,12 @@

    Examples by Role

    - + - - - - @@ -60,10 +51,8 @@

    Examples by Role

    - - - - - + @@ -103,7 +80,6 @@

    Examples by Role

    @@ -114,7 +90,6 @@

    Examples by Role

  • Editable Combobox With Both List and Inline Autocomplete
  • Editable Combobox With List Autocomplete
  • Editable Combobox without Autocomplete
  • -
  • Date Picker Combobox
  • Select-Only Combobox
  • Editable Combobox with Grid Popup
  • @@ -133,7 +108,6 @@

    Examples by Role

    - + @@ -200,15 +160,6 @@

    Examples by Role

    - - - - - - - - @@ -265,64 +204,21 @@

    Examples by Role

    - - - - - - - - - - - - - - - - - - - - @@ -345,19 +241,11 @@

    Examples by Role

    - - - - @@ -366,10 +254,6 @@

    Examples by Role

    - - - - - - - - - + @@ -415,17 +284,6 @@

    Examples by Role

    - - - - - - - -
    aria-activedescendantManaging Focus in Composites Using aria-activedescendant - -
    aria-autocomplete - -
    aria-checked-
    aria-colindex Data Grid -
    aria-controls - -
    aria-current- -
    aria-describedbyDescribing by referencing content with aria-describedby - -
    aria-disabledaria-controls -
    aria-expanded -
    aria-haspopup - -
    aria-hidden-
    aria-labelNaming with a String Attribute Via aria-label + Naming with a String Attribute Via aria-label
    aria-labelledbyNaming with Referenced Content Via aria-labelledby -Naming with Referenced Content Via aria-labelledby + -
    aria-level- -
    aria-live-
    aria-modal - -
    aria-posinset- -
    aria-pressed-
    aria-roledescription - -
    aria-rowcountUsing aria-rowcount and aria-rowindex - -
    aria-rowindexUsing aria-rowcount and aria-rowindex - -
    aria-selected- -
    aria-setsize- -
    aria-valuemaxUsing aria-valuemin , aria-valuemax and aria-valuenow - -
    aria-valueminUsing aria-valuemin , aria-valuemax and aria-valuenow - -
    aria-valuenowUsing aria-valuemin , aria-valuemax and aria-valuenow - -
    aria-valuetextUsing aria-valuetext -
    alert - - Alert
    alertdialog Alert Dialog
    articleFeed
    banner Banner Landmark button
    cellTable
    checkbox - - Checkbox (Mixed-State)
    columnheader
    @@ -164,28 +138,14 @@

    Examples by Role

    group - - Date Picker Spin Button
    img link Link
    list - -
    listbox @@ -217,24 +168,12 @@

    Examples by Role

  • Editable Combobox With List Autocomplete
  • Editable Combobox without Autocomplete
  • Select-Only Combobox
  • -
  • Collapsible Dropdown Listbox
  • Listbox with Grouped Options
  • Listboxes with Rearrangeable Options
  • Scrollable Listbox
  • listitem - -
    main Main Landmark menuitem
    menuitemcheckboxEditor Menubar
    menuitemradio - -
    navigation Navigation Landmark
    none - -
    option - -
    presentationNavigation Menu Button
    radio
    rowgroupTable
    rowheader Data Grid search Search Landmark
    separatorEditor Menubar
    slider @@ -382,22 +266,7 @@

    Examples by Role

    spinbutton - -
    tab - - Toolbar
    table tablist -
    tabpanel - @@ -449,17 +307,6 @@

    Examples by Role

    treegrid Treegrid Email Inbox
    treeitem - -
    @@ -473,28 +320,6 @@

    Examples By Properties and States

    - - aria-activedescendant - - - - - - aria-atomic - Alert - aria-autocomplete @@ -502,120 +327,35 @@

    Examples By Properties and States

  • Editable Combobox With Both List and Inline Autocomplete
  • Editable Combobox With List Autocomplete
  • Editable Combobox without Autocomplete
  • -
  • Date Picker Combobox
  • -
  • Editable Combobox with Grid Popup
  • - - aria-busy - Feed - - - aria-checked - - - - - - aria-colcount - Data Grid - - - aria-colindex - Data Grid - aria-controls aria-current - - - - - - aria-describedby - - - + Breadcrumb aria-disabled - - - + Toolbar aria-expanded @@ -626,23 +366,6 @@

    Examples By Properties and States

  • Date Picker Combobox
  • Editable Combobox with Grid Popup
  • Collapsible Dropdown Listbox
  • -
  • Actions Menu Button Using aria-activedescendant
  • -
  • Actions Menu Button Using element.focus()
  • -
  • Navigation Menu Button
  • -
  • Editor Menubar
  • -
  • Navigation Menubar
  • -
  • Toolbar
  • - - - - - aria-hidden - - @@ -651,19 +374,12 @@

    Examples By Properties and States

    aria-label - - aria-rowcount - - - - - - aria-rowindex - - - - - - aria-selected - - - - - - aria-setsize - - - - - - aria-sort - Data Grid - - - aria-valuemax - - - - aria-valuemin - - - - - - aria-valuenow - - - - - - aria-valuetext - - - + Meter diff --git a/package-lock.json b/package-lock.json index 85c1ec133e..1399af4c80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1375,8 +1375,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "boxen": { "version": "4.2.0", @@ -2104,7 +2103,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", - "dev": true, "requires": { "boolbase": "^1.0.0", "css-what": "^4.0.0", @@ -2117,7 +2115,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", - "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -2127,14 +2124,12 @@ "domelementtype": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" }, "domutils": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", "integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", - "dev": true, "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.0.1", @@ -2144,16 +2139,14 @@ "entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" } } }, "css-what": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", - "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", - "dev": true + "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==" }, "cssesc": { "version": "3.0.0", @@ -2340,7 +2333,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz", "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==", - "dev": true, "requires": { "domelementtype": "^2.1.0" }, @@ -2348,8 +2340,7 @@ "domelementtype": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" } } }, @@ -3318,6 +3309,11 @@ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -4560,6 +4556,15 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node-html-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-3.1.3.tgz", + "integrity": "sha512-pCE2I5UY5iOBnWdJQkbYZSk+fyq2zepw0nsELpHQjVFyCzOeZhkMhnvKqGceKgzWsWx7EG4KtMqsy9Eklf5Thw==", + "requires": { + "css-select": "^3.1.2", + "he": "1.2.0" + } + }, "node-releases": { "version": "1.1.67", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", @@ -4996,7 +5001,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", - "dev": true, "requires": { "boolbase": "^1.0.0" } diff --git a/package.json b/package.json index 09b8fcbd7b..b06227a36d 100644 --- a/package.json +++ b/package.json @@ -78,5 +78,7 @@ "test/tests/*" ] }, - "dependencies": {} + "dependencies": { + "node-html-parser": "^3.1.3" + } } diff --git a/scripts/coverage-report.js b/scripts/coverage-report.js index 999d28e566..af3169eee7 100644 --- a/scripts/coverage-report.js +++ b/scripts/coverage-report.js @@ -12,6 +12,7 @@ const fs = require('fs'); const path = require('path'); const glob = require('glob'); const cheerio = require('cheerio'); +const HTMLParser = require('node-html-parser'); const exampleFilePath = path.join(__dirname, '..', 'coverage', 'index.html'); const exampleTemplatePath = path.join(__dirname, 'coverage-report.template'); @@ -180,64 +181,19 @@ ariaPropertiesAndStates.forEach(function (prop) { console.log('Generating index...'); -function getDataAttributeTables(data) { - let dataAttributeTables = []; - let indexStart = 0, - indexEnd = -1; - // Get data attribute tables - do { - indexStart = data.indexOf('data attributes', indexStart); - if (indexStart >= 0) { - indexEnd = data.indexOf('', indexStart); - } - if (indexStart >= 0 && indexEnd >= 0) { - dataAttributeTables.push(data.substr(indexStart, indexEnd)); - indexStart = indexEnd + 1; - } - } while (indexStart >= 0 && indexEnd >= 0); - - return dataAttributeTables; -} - -function getIndexStartAndEnd(table, indexStart) { - indexStart = table.indexOf('', indexStart); - if (indexStart < 0) { - return [-1, -1]; - } - let indexEnd = table.indexOf('', indexStart); - let indexEqual = table.indexOf('=', indexStart); - - if (indexEqual >= 0) { - indexEnd = Math.min(indexEnd, indexEqual); - } - return [indexStart, indexEnd]; -} - -function getRolesFromExample(data) { +function getRoles(html) { let roles = []; - let tables = getDataAttributeTables(data); - - for (let i = 0; i < tables.length; i++) { - let table = tables[i]; - - let indexStart = 0, - indexEnd; - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + let exampleRoles = html.querySelectorAll( + 'table.data.attributes tbody tr:nth-child(1) code' + ); - while (indexStart > 1 && indexEnd > 1) { - let code = table.substring(indexStart + 6, indexEnd).trim(); - if (code.indexOf('aria') !== 0) { - for (let i = 0; i < ariaRoles.length; i++) { - if (code == ariaRoles[i] && roles.indexOf(ariaRoles[i]) < 0) { - console.log(' [role]: ' + code); - roles.push(ariaRoles[i]); - } - } - } - indexStart = table.indexOf('', indexEnd + 1); - if (indexStart >= 0) { - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + for (let i = 0; i < exampleRoles.length; i++) { + let code = exampleRoles[i].textContent.toLowerCase().trim(); + for (let j = 0; j < ariaRoles.length; j++) { + if (code == ariaRoles[j] && roles.indexOf(ariaRoles[j]) < 0) { + console.log(' [role]: ' + code); + roles.push(ariaRoles[j]); } } } @@ -245,37 +201,27 @@ function getRolesFromExample(data) { return roles; } -function getPropertiesAndStatesFromExample(data) { +function getPropertiesAndStates(html) { let propertiesAndStates = []; - let tables = getDataAttributeTables(data); - - for (let i = 0; i < tables.length; i++) { - let table = tables[i]; - let indexStart = 0, - indexEnd; - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); - - while (indexStart > 1 && indexEnd > 1) { - let code = table.substring(indexStart + 6, indexEnd); - if (code.indexOf('aria') === 0) { - for (let i = 0; i < ariaPropertiesAndStates.length; i++) { - const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); - if ( - hasPropOrState.test(code) && - propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 - ) { - console.log(' [propertyOrState]: ' + code); - propertiesAndStates.push(ariaPropertiesAndStates[i]); - } - } - } - indexStart = table.indexOf('', indexEnd + 1); - if (indexStart >= 0) { - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + let exampleProps = html.querySelectorAll( + 'table.data.attributes tbody tr:nth-child(2) code' + ); + + for (let i = 0; i < exampleProps.length; i++) { + let code = exampleProps[i].textContent.toLowerCase().trim().split('=')[0]; + for (let j = 0; j < ariaPropertiesAndStates.length; j++) { + const hasPropOrState = RegExp(ariaPropertiesAndStates[j] + '\\b'); + if ( + hasPropOrState.test(code) && + propertiesAndStates.indexOf(ariaPropertiesAndStates[j]) < 0 + ) { + console.log(' [propertyOrState]: ' + code); + propertiesAndStates.push(ariaPropertiesAndStates[j]); } } } + return propertiesAndStates; } @@ -336,10 +282,13 @@ glob } let data = fs.readFileSync(file, 'utf8'); - let ref = file.replace('examples/', '../examples/'); - let title = data - .substring(data.indexOf('') + 7, data.indexOf('')) - .split('|')[0] + + let html = HTMLParser.parse(data); + + let ref = file.replace('examples/', ''); + let title = html + .querySelector('title') + .textContent.split('|')[0] .replace('Examples', '') .replace('Example of', '') .replace('Example', '') @@ -350,22 +299,22 @@ glob ref: ref, }; - addExampleToRoles(getRolesFromExample(data), example); - addExampleToPropertiesAndStates( - getPropertiesAndStatesFromExample(data), - example - ); + addExampleToRoles(getRoles(html), example); + addExampleToPropertiesAndStates(getPropertiesAndStates(html), example); }); // Index roles, properties and states used in guidance -function getClosestId(data, index) { +function getClosestId(node) { let id = ''; - let indexStart = data.lastIndexOf('id="', index); - let indexEnd = data.indexOf('"', indexStart + 4); - if (indexStart >= 0 && indexEnd >= 0) { - id = data.substring(indexStart + 4, indexEnd); + node = node.parentNode; + + while (node) { + if (node.id) { + return node.id; + } + node = node.parentNode; } return id; @@ -393,113 +342,62 @@ function addGuidanceToPropertyOrState(prop, url, label, id) { indexOfPropertiesAndStatesInGuidance[prop].push(r); } -function getHeaderContent(data, index) { - let content = ''; - - let indexStart = data.indexOf('>', index); - let indexEnd = data.indexOf(' 1 && indexEnd > 1) { - content = data.substring(indexStart + 1, indexEnd).trim(); + console.log('[Number of Headings]: ' + dataHeadings.length); - content = content.replace(//g, ' '); - content = content.replace(/<\/code>/g, ' '); - } + for (let i = 0; i < dataHeadings.length; i++) { + let dataHeading = dataHeadings[i]; + let tagName = dataHeading.tagName; + let content = dataHeading.textContent; + let contentItems = content.toLowerCase().split(' '); - return content; -} + ariaRoles.forEach(function (role) { + if (contentItems.indexOf(role) >= 0) { + console.log(tagName + ': ' + role + ', ' + content); + addGuidanceToRole(role, url, content, getClosestId(dataHeading)); + } + }); -function getRolesPropertiesAndStatesFromHeaders(data, url) { - function getRolesPropertiesAndStatesFromHeader(level) { - let indexStart = data.indexOf('', 0); - let indexEnd = data.indexOf('', indexStart); - - while (indexStart > 1 && indexEnd > 1) { - let content = getHeaderContent(data, indexStart); - - let contentItems = content.toLowerCase().split(' '); - - ariaRoles.forEach(function (role) { - if (contentItems.indexOf(role) >= 0) { - console.log('h' + level + ': ' + role + ', ' + content); - addGuidanceToRole(role, url, content, getClosestId(data, indexStart)); - } - }); - - ariaPropertiesAndStates.forEach(function (prop) { - if (contentItems.indexOf(prop) >= 0) { - console.log('h' + level + ': ' + prop + ', ' + content); - addGuidanceToPropertyOrState( - prop, - url, - content, - getClosestId(data, indexStart) - ); - } - }); - - indexStart = data.indexOf('', indexEnd); - - if (indexStart > 0) { - indexEnd = data.indexOf('', indexStart); + ariaPropertiesAndStates.forEach(function (prop) { + if (contentItems.indexOf(prop) >= 0) { + console.log(tagName + ': ' + prop + ', ' + content); + addGuidanceToPropertyOrState( + prop, + url, + content, + getClosestId(dataHeading) + ); } - } + }); } - - getRolesPropertiesAndStatesFromHeader(2); - getRolesPropertiesAndStatesFromHeader(3); - getRolesPropertiesAndStatesFromHeader(4); - getRolesPropertiesAndStatesFromHeader(5); - getRolesPropertiesAndStatesFromHeader(6); } -function getRolesFromDataAttributesOnHeaders(data, url) { - let indexStart = data.indexOf('data-aria-roles="', 0); - let indexEnd = data.indexOf('"', indexStart + 17); +function getRolesFromDataAttributesOnHeaders(html, url) { + let dataRoles = html.querySelectorAll('[data-aria-roles]'); - while (indexStart > 1 && indexEnd > 1) { - let content = getHeaderContent(data, indexStart); - - let roles = data - .substring(indexStart + 17, indexEnd) - .trim() - .toLowerCase(); - - roles = roles.split(' '); + for (let i = 0; i < dataRoles.length; i++) { + let dataRole = dataRoles[i]; + let roles = dataRole.textContent.split(' '); + let content = dataRole.textContent; ariaRoles.forEach(function (role) { if (roles.indexOf(role) >= 0) { console.log('data: ' + role + ', ' + content); - addGuidanceToRole( - role, - url, - content + ' (D)', - getClosestId(data, indexStart) - ); + addGuidanceToRole(role, url, content + ' (D)', getClosestId(dataRole)); } }); - - indexStart = data.indexOf('data-aria-roles="', indexEnd); - - if (indexStart > 0) { - indexEnd = data.indexOf('"', indexStart + 17); - } } } -function getPropertiesAndStatesFromDataAttributesOnHeaders(data, url) { - let indexStart = data.indexOf('data-aria-props="', 0); - let indexEnd = data.indexOf('"', indexStart + 17); - - while (indexStart > 1 && indexEnd > 1) { - let content = getHeaderContent(data, indexStart); +function getPropertiesAndStatesFromDataAttributesOnHeaders(html, url) { + let dataProps = html.querySelectorAll('[data-aria-props]'); - let props = data - .substring(indexStart + 17, indexEnd) - .trim() - .toLowerCase(); - - props = props.split(' '); + for (let i = 0; i < dataProps.length; i++) { + let dataProp = dataProps[i]; + let props = dataProp.textContent.split(' '); + let content = dataProp.textContent; ariaPropertiesAndStates.forEach(function (prop) { if (props.indexOf(prop) >= 0) { @@ -508,22 +406,17 @@ function getPropertiesAndStatesFromDataAttributesOnHeaders(data, url) { prop, url, content + ' (D)', - getClosestId(data, indexStart) + getClosestId(dataProp) ); } }); - - indexStart = data.indexOf('data-aria-props="', indexEnd); - - if (indexStart > 0) { - indexEnd = data.indexOf('"', indexStart + 17); - } } } -function getRolesPropertiesAndStatesFromGuidance(data, url) { - getRolesPropertiesAndStatesFromHeaders(data, url); - getRolesFromDataAttributesOnHeaders(data, url); - getPropertiesAndStatesFromDataAttributesOnHeaders(data, url); + +function getRolesPropertiesAndStatesFromGuidance(html, url) { + getRolesPropertiesAndStatesFromHeaders(html, url); + getRolesFromDataAttributesOnHeaders(html, url); + getPropertiesAndStatesFromDataAttributesOnHeaders(html, url); } let data = fs.readFileSync( @@ -531,7 +424,9 @@ let data = fs.readFileSync( 'utf8' ); -getRolesPropertiesAndStatesFromGuidance(data, '../aria-practices.html'); +let html = HTMLParser.parse(data); + +getRolesPropertiesAndStatesFromGuidance(html, '../aria-practices.html'); // Add landmark examples, since they are a different format addLandmarkRole( diff --git a/scripts/reference-tables.js b/scripts/reference-tables.js index df579f0571..f7f9b31117 100644 --- a/scripts/reference-tables.js +++ b/scripts/reference-tables.js @@ -12,6 +12,7 @@ const fs = require('fs'); const path = require('path'); const glob = require('glob'); const cheerio = require('cheerio'); +const HTMLParser = require('node-html-parser'); const exampleFilePath = path.join(__dirname, '..', 'examples', 'index.html'); const exampleTemplatePath = path.join(__dirname, 'reference-tables.template'); @@ -150,64 +151,19 @@ let indexOfPropertiesAndStates = {}; console.log('Generating index...'); -function getDataAttributeTables(data) { - let dataAttributeTables = []; - let indexStart = 0, - indexEnd = -1; - // Get data attribute tables - do { - indexStart = data.indexOf('data attributes', indexStart); - if (indexStart >= 0) { - indexEnd = data.indexOf('', indexStart); - } - if (indexStart >= 0 && indexEnd >= 0) { - dataAttributeTables.push(data.substr(indexStart, indexEnd)); - indexStart = indexEnd + 1; - } - } while (indexStart >= 0 && indexEnd >= 0); - - return dataAttributeTables; -} - -function getIndexStartAndEnd(table, indexStart) { - indexStart = table.indexOf('', indexStart); - if (indexStart < 0) { - return [-1, -1]; - } - let indexEnd = table.indexOf('', indexStart); - let indexEqual = table.indexOf('=', indexStart); - - if (indexEqual >= 0) { - indexEnd = Math.min(indexEnd, indexEqual); - } - return [indexStart, indexEnd]; -} - -function getRoles(data) { +function getRoles(html) { let roles = []; - let tables = getDataAttributeTables(data); - - for (let i = 0; i < tables.length; i++) { - let table = tables[i]; - - let indexStart = 0, - indexEnd; - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + let exampleRoles = html.querySelectorAll( + 'table.data.attributes tbody tr:nth-child(1) code' + ); - while (indexStart > 1 && indexEnd > 1) { - let code = table.substring(indexStart + 6, indexEnd).trim(); - if (code.indexOf('aria') !== 0) { - for (let i = 0; i < ariaRoles.length; i++) { - if (code == ariaRoles[i] && roles.indexOf(ariaRoles[i]) < 0) { - console.log(' [role]: ' + code); - roles.push(ariaRoles[i]); - } - } - } - indexStart = table.indexOf('', indexEnd + 1); - if (indexStart >= 0) { - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + for (let i = 0; i < exampleRoles.length; i++) { + let code = exampleRoles[i].textContent.toLowerCase().trim(); + for (let j = 0; j < ariaRoles.length; j++) { + if (code == ariaRoles[j] && roles.indexOf(ariaRoles[j]) < 0) { + console.log(' [role]: ' + code); + roles.push(ariaRoles[j]); } } } @@ -215,37 +171,27 @@ function getRoles(data) { return roles; } -function getPropertiesAndStates(data) { +function getPropertiesAndStates(html) { let propertiesAndStates = []; - let tables = getDataAttributeTables(data); - - for (let i = 0; i < tables.length; i++) { - let table = tables[i]; - let indexStart = 0, - indexEnd; - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); - - while (indexStart > 1 && indexEnd > 1) { - let code = table.substring(indexStart + 6, indexEnd); - if (code.indexOf('aria') === 0) { - for (let i = 0; i < ariaPropertiesAndStates.length; i++) { - const hasPropOrState = RegExp(ariaPropertiesAndStates[i] + '\\b'); - if ( - hasPropOrState.test(code) && - propertiesAndStates.indexOf(ariaPropertiesAndStates[i]) < 0 - ) { - console.log(' [propertyOrState]: ' + code); - propertiesAndStates.push(ariaPropertiesAndStates[i]); - } - } - } - indexStart = table.indexOf('', indexEnd + 1); - if (indexStart >= 0) { - [indexStart, indexEnd] = getIndexStartAndEnd(table, indexStart); + let exampleProps = html.querySelectorAll( + 'table.data.attributes tbody tr:nth-child(2) code' + ); + + for (let i = 0; i < exampleProps.length; i++) { + let code = exampleProps[i].textContent.toLowerCase().trim().split('=')[0]; + for (let j = 0; j < ariaPropertiesAndStates.length; j++) { + const hasPropOrState = RegExp(ariaPropertiesAndStates[j] + '\\b'); + if ( + hasPropOrState.test(code) && + propertiesAndStates.indexOf(ariaPropertiesAndStates[j]) < 0 + ) { + console.log(' [propertyOrState]: ' + code); + propertiesAndStates.push(ariaPropertiesAndStates[j]); } } } + return propertiesAndStates; } @@ -305,10 +251,13 @@ glob } let data = fs.readFileSync(file, 'utf8'); + + let html = HTMLParser.parse(data); + let ref = file.replace('examples/', ''); - let title = data - .substring(data.indexOf('') + 7, data.indexOf('')) - .split('|')[0] + let title = html + .querySelector('title') + .textContent.split('|')[0] .replace('Examples', '') .replace('Example of', '') .replace('Example', '') @@ -319,8 +268,8 @@ glob ref: ref, }; - addExampleToRoles(getRoles(data), example); - addExampleToPropertiesAndStates(getPropertiesAndStates(data), example); + addExampleToRoles(getRoles(html), example); + addExampleToPropertiesAndStates(getPropertiesAndStates(html), example); }); // Add landmark examples, since they are a different format From bb08117d58d0f7fa72a95fe58bd4f9ac333e8311 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Fri, 9 Apr 2021 15:25:50 -0500 Subject: [PATCH 10/16] updated package files to include node-html-parser --- package-lock.json | 2265 ++++++++++++++++++++++++++++++--------------- package.json | 34 +- 2 files changed, 1561 insertions(+), 738 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1399af4c80..724546ccc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,55 +14,139 @@ } }, "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.17.tgz", + "integrity": "sha512-V3CuX1aBywbJvV2yzJScRxeiiw0v2KZZYYE3giywxzFJL13RiyPjaaDwhDnxmgFTTS7FgvM2ijr4QmKNIu0AtQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.17", + "@babel/helper-module-transforms": "^7.12.17", + "@babel/helpers": "^7.12.17", + "@babel/parser": "^7.12.17", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.17", + "@babel/types": "^7.12.17", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", "lodash": "^4.17.19", - "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.17.tgz", + "integrity": "sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.17", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, + "@babel/parser": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.17.tgz", + "integrity": "sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz", + "integrity": "sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.17", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.17", + "@babel/types": "^7.12.17", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -98,6 +182,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -161,76 +251,494 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", - "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.17.tgz", + "integrity": "sha512-Bzv4p3ODgS/qpBE0DiJ9qf5WxSmrQ8gVTe8ClMfwwsY2x/rhykxxy3bXzG7AGTnPB2ij37zGJ/Q/6FruxHxsxg==", "dev": true, "requires": { - "@babel/types": "^7.12.7" + "@babel/types": "^7.12.17" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", "dev": true, "requires": { - "@babel/types": "^7.12.5" + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz", + "integrity": "sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.17", + "@babel/types": "^7.12.17", "lodash": "^4.17.19" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.17.tgz", + "integrity": "sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.17", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.17.tgz", + "integrity": "sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz", + "integrity": "sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.17", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.17", + "@babel/types": "^7.12.17", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz", - "integrity": "sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "requires": { - "@babel/types": "^7.12.7" + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-replace-supers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", - "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz", + "integrity": "sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" + "@babel/helper-member-expression-to-functions": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.17.tgz", + "integrity": "sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.17", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.17.tgz", + "integrity": "sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz", + "integrity": "sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.17", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.17", + "@babel/types": "^7.12.17", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-split-export-declaration": { @@ -249,14 +757,189 @@ "dev": true }, "@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.17.tgz", + "integrity": "sha512-tEpjqSBGt/SFEsFikKds1sLNChKKGGR17flIgQKXH4fG6m9gTgl3gnOC1giHNyaBCSKuTfxaSzHi7UnvqiVKxg==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.17", + "@babel/types": "^7.12.17" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.17.tgz", + "integrity": "sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.17", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.17.tgz", + "integrity": "sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz", + "integrity": "sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.17", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.17", + "@babel/types": "^7.12.17", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/highlight": { @@ -555,9 +1238,9 @@ } }, "@cspell/cspell-bundled-dicts": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.1.0.tgz", - "integrity": "sha512-R7ZzZ4vy6rNIo85Ho5SYATLOcaiDkICCrBYu92Gq/7L4GsVdFkEZis9Rx9DEcPLNn+9DBXcsD8XO7eiOxwqZww==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.3.0.tgz", + "integrity": "sha512-7KmXdbPGYg9f9BW8M/toxCFozA55W6mO8ZRYevGbvEy5YX5QEnf8LNEKDugAL0Pu2NAx/RVMon5WPQQkzvZNGQ==", "dev": true, "requires": { "@cspell/dict-aws": "^1.0.13", @@ -571,30 +1254,36 @@ "@cspell/dict-dotnet": "^1.0.24", "@cspell/dict-elixir": "^1.0.23", "@cspell/dict-en-gb": "^1.1.27", - "@cspell/dict-en_us": "^1.2.38", + "@cspell/dict-en_us": "^1.2.39", "@cspell/dict-filetypes": "^1.1.5", - "@cspell/dict-fonts": "^1.0.13", + "@cspell/dict-fonts": "^1.0.14", "@cspell/dict-fullstack": "^1.0.36", "@cspell/dict-golang": "^1.1.24", - "@cspell/dict-haskell": "^1.0.12", - "@cspell/dict-html": "^1.1.5", + "@cspell/dict-haskell": "^1.0.13", + "@cspell/dict-html": "^1.1.6", "@cspell/dict-html-symbol-entities": "^1.0.23", "@cspell/dict-java": "^1.0.22", "@cspell/dict-latex": "^1.0.23", "@cspell/dict-lorem-ipsum": "^1.0.22", "@cspell/dict-lua": "^1.0.16", - "@cspell/dict-node": "^1.0.9", + "@cspell/dict-node": "^1.0.10", "@cspell/dict-npm": "^1.0.10", "@cspell/dict-php": "^1.0.23", "@cspell/dict-powershell": "^1.0.14", - "@cspell/dict-python": "^1.0.32", + "@cspell/dict-python": "^1.0.33", "@cspell/dict-ruby": "^1.0.12", "@cspell/dict-rust": "^1.0.22", "@cspell/dict-scala": "^1.0.21", - "@cspell/dict-software-terms": "^1.0.23", + "@cspell/dict-software-terms": "^1.0.26", "@cspell/dict-typescript": "^1.0.16" } }, + "@cspell/cspell-types": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-5.3.1.tgz", + "integrity": "sha512-3g/5Ro4yR3mrNXRF0Vy97JtJiJC4w8JQa0Kj1RIlM26Z9432T95sT/Am25liHE/U9eFpCvZrFsau75nALiEU7g==", + "dev": true + }, "@cspell/dict-aws": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-1.0.13.tgz", @@ -674,9 +1363,9 @@ "dev": true }, "@cspell/dict-fonts": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-1.0.13.tgz", - "integrity": "sha512-oCwcJhwWqAu4dijGkTjOgGCQftZGfKkf+oBXjFIySdkAKGtddV6eW6VFLLtimNUf53e9Cb5wils+1Gl4NqWx1w==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-1.0.14.tgz", + "integrity": "sha512-VhIX+FVYAnqQrOuoFEtya6+H72J82cIicz9QddgknsTqZQ3dvgp6lmVnsQXPM3EnzA8n1peTGpLDwHzT7ociLA==", "dev": true }, "@cspell/dict-fullstack": { @@ -692,15 +1381,15 @@ "dev": true }, "@cspell/dict-haskell": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-1.0.12.tgz", - "integrity": "sha512-JrSSuV2oY8Z1/qYi8j1w5M3eokiFkcpRtCrxpKlHYFXFEvmqTH9D8qvzVbAkrQpefMppy8uIUzknSzhwAc/MQA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-1.0.13.tgz", + "integrity": "sha512-kvl8T84cnYRPpND/P3D86P6WRSqebsbk0FnMfy27zo15L5MLAb3d3MOiT1kW3vEWfQgzUD7uddX/vUiuroQ8TA==", "dev": true }, "@cspell/dict-html": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-1.1.5.tgz", - "integrity": "sha512-ecwFDcponQgLpC9VJK7SRAbLu3CAlw6KUSlLtVOiN3zxlh27MDCCMp9jCD4UImZGACe0YQ1Zj0DW7PjXkHuKHg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-1.1.6.tgz", + "integrity": "sha512-RsZXIrmsnLcUpXfyZdNg7OtO2+e4p7m/qILg03kM6vhSUMY6ryCQNPWKrHqsl8+LBKd54EgFM+O5zcgq6IIsCw==", "dev": true }, "@cspell/dict-html-symbol-entities": { @@ -782,9 +1471,9 @@ "dev": true }, "@cspell/dict-software-terms": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-1.0.24.tgz", - "integrity": "sha512-617u+fn0T/9vx1UBK4qMghhyVNe90iG9BzpeRrtARLVkz2bOADwAp+VwTYwOgDlbvim6dcfWEQgVfVu4Ape0kg==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-1.0.26.tgz", + "integrity": "sha512-NN+mv6VnCwxEWzGxOgFG4akDIRvY0j8slHmgxtoPGKDm+K22zvZITxFwF3/NHGOSxQ4n2hW6sYjqMpxAPGhjCQ==", "dev": true }, "@cspell/dict-typescript": { @@ -818,9 +1507,9 @@ "dev": true }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "strip-json-comments": { @@ -857,6 +1546,118 @@ "fastq": "^1.6.0" } }, + "@octokit/auth-token": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", + "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.5.tgz", + "integrity": "sha512-+DCtPykGnvXKWWQI0E1XD+CCeWSBhB6kwItXqfFmNBlIlhczuDPbg+P6BtLnVBaRJDAjv+1mrUJuRsFSjktopg==", + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.4.12", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.1.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz", + "integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==", + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.0.tgz", + "integrity": "sha512-CJ6n7izLFXLvPZaWzCQDjU/RP+vHiZmWdOunaCS87v+2jxMsW9FB5ktfIxybRBxZjxuJGRnxk7xJecWTVxFUYQ==", + "requires": { + "@octokit/request": "^5.3.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-5.1.0.tgz", + "integrity": "sha512-bodZvSYgycbUuuKrC/anCBUExvaSSWzMMFz0xl7pcJujxnmGxvqvcFHktjx1ZOSyeNKLfYF0QCgibaHUGsZTng==" + }, + "@octokit/plugin-paginate-rest": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.10.0.tgz", + "integrity": "sha512-71OsKBSMcQEu/6lfVbhv5C5ikU1rn10rKot/WiV7do7fyfElQ2eCUQFogHPbj0ci5lnKAjvahOiMAr6lcvL8Qw==", + "requires": { + "@octokit/types": "^6.10.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz", + "integrity": "sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==" + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.12.0.tgz", + "integrity": "sha512-RgnQ1aoetdOJjZYC37LV5FNlL7GY/v1CdC5dur1Zp/UiADJlbRFbAz/xLx26ovXw67dK7EUtwCghS+6QyiI9RA==", + "requires": { + "@octokit/types": "^6.10.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.14.tgz", + "integrity": "sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA==", + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^6.7.1", + "deprecation": "^2.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "once": "^1.4.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz", + "integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==", + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.2.0.tgz", + "integrity": "sha512-xsp6bIqL2sb/NmgLXTxw96caegobRw+YHnzdIi70ruquHtPPDW2cBAONhDYMUuAOeXx0JH2auOeplpk4SQJy1w==", + "requires": { + "@octokit/core": "^3.2.3", + "@octokit/plugin-paginate-rest": "^2.6.2", + "@octokit/plugin-request-log": "^1.0.2", + "@octokit/plugin-rest-endpoint-methods": "4.12.0" + } + }, + "@octokit/types": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.10.0.tgz", + "integrity": "sha512-aMDo10kglofejJ96edCBIgQLVuzMDyjxmhdgEcoUUD64PlHYSrNsAGqN0wZtoiX4/PCQ3JLA50IpkP1bcKD/cA==", + "requires": { + "@octokit/openapi-types": "^5.1.0" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -964,9 +1765,9 @@ } }, "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -1316,6 +2117,20 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, "bail": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", @@ -1343,6 +2158,11 @@ "tweetnacl": "^0.14.3" } }, + "before-after-hook": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.1.tgz", + "integrity": "sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==" + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1431,24 +2251,16 @@ } }, "browserslist": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.15.0.tgz", - "integrity": "sha512-IJ1iysdMkGmjjYeRlDU8PQejVwxvVO5QOfXH7ylW31GO6LwNRSmm/SgRXtNsEXqMLl2e+2H5eEJ7sfynF8TCaQ==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001164", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.612", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.67" - }, - "dependencies": { - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - } + "node-releases": "^1.1.70" } }, "buf-compare": { @@ -1529,9 +2341,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001165", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz", - "integrity": "sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==", + "version": "1.0.30001190", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001190.tgz", + "integrity": "sha512-62KVw474IK8E+bACBYhRS0/L6o/1oeAVkpF2WetjV58S5vkzNh0/Rz3lD8D4YCbOTqi0/aD4X3LtoP7V5xnuAg==", "dev": true }, "capture-stack-trace": { @@ -1587,37 +2399,12 @@ "htmlparser2": "^6.0.0", "parse5": "^6.0.0", "parse5-htmlparser2-tree-adapter": "^6.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", - "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - } } }, "cheerio-select-tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select-tmp/-/cheerio-select-tmp-0.1.0.tgz", - "integrity": "sha512-kx/pq9hxLo6FhjiYqUheSOV0Eb729ZwkXXPrPTeK6kl/VMgaUlsYoAOv3nOJZcHk++V9pI17YNNngtbLVPTB9A==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz", + "integrity": "sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ==", "dev": true, "requires": { "css-select": "^3.1.2", @@ -1625,42 +2412,6 @@ "domelementtype": "^2.1.0", "domhandler": "^4.0.0", "domutils": "^2.4.4" - }, - "dependencies": { - "dom-serializer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", - "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - }, - "domutils": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", - "integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0" - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - } } }, "chokidar": { @@ -1755,19 +2506,6 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } } }, "clone": { @@ -1860,18 +2598,18 @@ "repeat-string": "^1.6.1" } }, + "comment-parser": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.2.tgz", + "integrity": "sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ==", + "dev": true + }, "common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2015,20 +2753,20 @@ "dev": true }, "cspell": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-5.1.3.tgz", - "integrity": "sha512-pZ5EecESCQUmV1pD6/ehBjS+iNUfoJDjH22TCVF1P+ClHvtkiStSxIAtBPdzrVuFyUtYxTB5m6DnHInoVhx7eQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-5.3.1.tgz", + "integrity": "sha512-2AyYhCi+RqQXF9d9rRMtoVWidbLJRQ5POcfP6LlfSXCYBl/pEl1rc0XaI2aSEjt/kZijFb9K6DMQmBc4LCf6YQ==", "dev": true, "requires": { + "@cspell/cspell-types": "^5.3.1", "chalk": "^4.1.0", - "commander": "^6.2.1", + "commander": "^7.1.0", "comment-json": "^4.1.0", - "cspell-glob": "^5.1.3", - "cspell-lib": "^5.1.3", - "fs-extra": "^9.0.1", + "cspell-glob": "^5.3.1", + "cspell-lib": "^5.3.1", + "fs-extra": "^9.1.0", "get-stdin": "^8.0.0", "glob": "^7.1.6", - "minimatch": "^3.0.4", "strip-ansi": "^6.0.0" }, "dependencies": { @@ -2041,22 +2779,28 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "commander": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true } } }, "cspell-glob": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-5.1.3.tgz", - "integrity": "sha512-l9N6nb2yU+rhU+IAPmFdxDvblYbZCc1LAyk3MxmvoY7N+eKgrF7ZG8G85029qmVI8eepEMP0UxBHLeV9GDC2TA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-5.3.1.tgz", + "integrity": "sha512-nNN3lpNsqo0iV6OusVDS5ImoGXfl9oQtknUN7zAuBOi9NbsZrPfCXal+cgbTD8GooBp/qO+Q+Ms0ozArcbDEug==", "dev": true, "requires": { "micromatch": "^4.0.2" } }, "cspell-io": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-5.1.3.tgz", - "integrity": "sha512-B62hnk5O1p54MW9Gm72ulivjyEKKxpO6mnv01Q8Im+vsdJdJHyBoIBDaT1Y/qGh3Nd4CgbhvcXvWIT2vzbx/ag==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-5.3.1.tgz", + "integrity": "sha512-IBkC24u+ougvDgQQA/etfswNKxoleR6NfTm9n1EWbx977SVtQi4sUheudSnIwMrz9QmmC2iSmviAsGCbfeqLmw==", "dev": true, "requires": { "iconv-lite": "^0.6.2", @@ -2064,41 +2808,36 @@ } }, "cspell-lib": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-5.1.3.tgz", - "integrity": "sha512-/jXWiZHMzRWcLT3ErxVOpRETUnwXqYMD5vkKiUYiQOsDz54p9odR1r+Y4hMUsQLK29506UDiKBVkYrhCNyPuWA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-5.3.1.tgz", + "integrity": "sha512-yo5wY/3wRmvPGqrq71djlNZklVDY1RLtvzdez1FdEWbnGUkRuLD2ZdBHtwQCJ/Za/jpmgKVEfz98K8yL8QwnPw==", "dev": true, "requires": { - "@cspell/cspell-bundled-dicts": "^5.1.0", + "@cspell/cspell-bundled-dicts": "^5.3.0", + "@cspell/cspell-types": "^5.3.1", "comment-json": "^4.1.0", "configstore": "^5.0.1", - "cspell-io": "^5.1.3", - "cspell-trie-lib": "^5.1.3", - "cspell-util-bundle": "^5.1.3", - "fs-extra": "^9.0.1", + "cosmiconfig": "^7.0.0", + "cspell-glob": "^5.3.1", + "cspell-io": "^5.3.1", + "cspell-trie-lib": "^5.3.1", + "fs-extra": "^9.1.0", "gensequence": "^3.1.1", - "minimatch": "^3.0.4", "resolve-from": "^5.0.0", "resolve-global": "^1.0.0", "vscode-uri": "^3.0.2" } }, "cspell-trie-lib": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-5.1.3.tgz", - "integrity": "sha512-rNfPZpBwCDsZuK2CJFxjFTk2WnbFfscWyAWN3djyKPbt1TZen0dd/kIPOIzAZxhealx+xfvJwt0kk2nZq5g8Lg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-5.3.1.tgz", + "integrity": "sha512-om/i3qOc5zpegKYRnzHKlU89aY4ykY0AQHLKr5rKg+DVfG669d4+zZzaseb5zPy9OoLu651MsDYX1j97JdPzag==", "dev": true, "requires": { - "fs-extra": "^9.0.1", + "fs-extra": "^9.1.0", "gensequence": "^3.1.1" } }, - "cspell-util-bundle": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cspell-util-bundle/-/cspell-util-bundle-5.1.3.tgz", - "integrity": "sha512-FDxs0sw4gYMKKHdSobypvLQTRsZB96n9QNewRuyMv6nVwOcD1JsboClMpYigeE3rxBvyiGbj0V+Vf94+RTWWWA==", - "dev": true - }, "css-select": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", @@ -2109,38 +2848,6 @@ "domhandler": "^4.0.0", "domutils": "^2.4.3", "nth-check": "^2.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", - "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" - }, - "domutils": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", - "integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0" - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - } } }, "css-what": { @@ -2279,14 +2986,6 @@ "p-map": "^4.0.0", "rimraf": "^3.0.2", "slash": "^3.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - } } }, "delayed-stream": { @@ -2295,6 +2994,17 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2314,20 +3024,19 @@ } }, "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", + "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "entities": "^2.0.0" } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" }, "domhandler": { "version": "4.0.0", @@ -2335,34 +3044,32 @@ "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==", "requires": { "domelementtype": "^2.1.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" - } } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", + "integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0" } }, "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { "is-obj": "^2.0.0" } }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -2415,9 +3122,9 @@ } }, "electron-to-chromium": { - "version": "1.3.615", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.615.tgz", - "integrity": "sha512-fNYTQXoUhNc6RmHDlGN4dgcLURSBIqQCN7ls6MuQ741+NJyLNRz8DxAC+pZpOKfRs6cfY0lv2kWdy8Oxf9j4+A==", + "version": "1.3.671", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.671.tgz", + "integrity": "sha512-RTD97QkdrJKaKwRv9h/wGAaoR2lGxNXEcBXS31vjitgTPwTWAbLdS7cEsBK68eEQy7p6YyT8D5BxBEYHu2SuwQ==", "dev": true }, "emittery": { @@ -2460,10 +3167,9 @@ } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, "equal-length": { "version": "1.0.1", @@ -2499,12 +3205,12 @@ "dev": true }, "eslint": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", - "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", + "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.3.0", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -2516,7 +3222,7 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", @@ -2543,6 +3249,75 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -2562,6 +3337,12 @@ } } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -2569,9 +3350,9 @@ "dev": true }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "semver": { @@ -2588,13 +3369,22 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "eslint-config-prettier": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", - "integrity": "sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz", + "integrity": "sha512-5EaAVPsIHu+grmm5WKjxUia4yHgRrbkd8I0ffqUSwixCPMVBrbS97UnzlEY/Q7OWo584vgixefM0kJnUfo/VjA==", "dev": true }, "eslint-plugin-ava": { @@ -2614,6 +3404,57 @@ "resolve-from": "^5.0.0" } }, + "eslint-plugin-jsdoc": { + "version": "32.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.1.0.tgz", + "integrity": "sha512-nCdKF8QQvAZ6RsnNoEK4kPF0aD9E6XURdjLx88oIqF+txmPNXAo2rNvu2WwV77R78vnhAGJkeOgmxmYdRRpgaQ==", + "dev": true, + "requires": { + "comment-parser": "1.1.2", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.20", + "regextras": "^0.7.1", + "semver": "^7.3.4", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + } + } + }, "eslint-plugin-prettier": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", @@ -2651,9 +3492,9 @@ } }, "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { @@ -2688,9 +3529,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2851,9 +3692,9 @@ } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -2878,15 +3719,6 @@ "path-exists": "^4.0.0" } }, - "find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "requires": { - "semver-regex": "^3.1.2" - } - }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -2898,9 +3730,9 @@ } }, "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "forever-agent": { @@ -2920,16 +3752,22 @@ "mime-types": "^2.1.12" } }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", - "universalify": "^1.0.0" + "universalify": "^2.0.0" } }, "fs-minipass": { @@ -2967,9 +3805,9 @@ "dev": true }, "geckodriver": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-1.21.1.tgz", - "integrity": "sha512-i5pYkYFEjTMkSCWh8agNFJPCUxVPr9I3JsRQ+bAypt73urXFnB73GQxDbJPKzELUeLhbQybhNKNlKjxfgS1yAA==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-1.22.1.tgz", + "integrity": "sha512-pT5Wf3AVszsvu0I8XWQT6VX7GzVYtASxzluVMlMXb3wb+jlmE0IFNQ7VGfjpdDrwF/MraukmdFtVQLpSJH0M2A==", "dev": true, "requires": { "adm-zip": "0.4.16", @@ -3167,6 +4005,14 @@ "dev": true, "requires": { "ini": "1.3.7" + }, + "dependencies": { + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + } } }, "global-modules": { @@ -3255,9 +4101,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "har-schema": { @@ -3376,42 +4222,6 @@ "domhandler": "^4.0.0", "domutils": "^2.4.4", "entities": "^2.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", - "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - }, - "domutils": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", - "integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0" - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - } } }, "http-cache-semantics": { @@ -3448,70 +4258,10 @@ "dev": true }, "husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - } - } - } + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-5.1.1.tgz", + "integrity": "sha512-80LZ736V0Nr4/st0c2COYaMbEQhHNmAbLMN8J/kLk7/mo0QdUkUGNDjv/7jVkhug377Wh8wfbWyaVXEJ/h2B/Q==", + "dev": true }, "iconv-lite": { "version": "0.6.2", @@ -3621,9 +4371,9 @@ "dev": true }, "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "irregular-plurals": { @@ -3787,8 +4537,7 @@ "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" }, "is-promise": { "version": "4.0.0", @@ -3884,6 +4633,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3933,9 +4688,9 @@ "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { "minimist": "^1.2.5" @@ -3949,14 +4704,6 @@ "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } } }, "jsprim": { @@ -3972,9 +4719,9 @@ } }, "jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz", + "integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==", "dev": true, "requires": { "lie": "~3.3.0", @@ -4025,9 +4772,9 @@ "dev": true }, "known-css-properties": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.20.0.tgz", - "integrity": "sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", "dev": true }, "latest-version": { @@ -4065,9 +4812,9 @@ "dev": true }, "lint-staged": { - "version": "10.5.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.3.tgz", - "integrity": "sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg==", + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", + "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -4109,9 +4856,9 @@ } }, "listr2": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.2.3.tgz", - "integrity": "sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.3.1.tgz", + "integrity": "sha512-8Zoxe7s/8nNr4bJ8bdAduHD8uJce+exmMmUWTXlq0WuUdffnH3muisHPHPFtW2vvOfohIsq7FGCaguUxN/h3Iw==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -4121,7 +4868,8 @@ "log-update": "^4.0.0", "p-map": "^4.0.0", "rxjs": "^6.6.3", - "through": "^2.3.8" + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" }, "dependencies": { "chalk": { @@ -4195,6 +4943,17 @@ "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } } } }, @@ -4220,9 +4979,9 @@ } }, "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -4284,21 +5043,22 @@ } }, "mdast-util-from-markdown": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.1.tgz", - "integrity": "sha512-qJXNcFcuCSPqUF0Tb0uYcFDIq67qwB3sxo9RPdf9vG8T90ViKnksFqdB/Coq2a7sTnxL/Ify2y7aIQXDkQFH0w==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", "dev": true, "requires": { "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^1.0.0", - "micromark": "~2.10.0", - "parse-entities": "^2.0.0" + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" } }, "mdast-util-to-markdown": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.5.4.tgz", - "integrity": "sha512-0jQTkbWYx0HdEA/h++7faebJWr5JyBoBeiRf0u3F4F3QtnyyGaWIsOwo749kRb1ttKrLLr+wRtOkfou9yB0p6A==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -4307,20 +5067,12 @@ "parse-entities": "^2.0.0", "repeat-string": "^1.0.0", "zwitch": "^1.0.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true - } } }, "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true }, "mem": { @@ -4342,13 +5094,14 @@ } }, "meow": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz", - "integrity": "sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, "requires": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", @@ -4361,9 +5114,9 @@ }, "dependencies": { "hosted-git-info": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", - "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -4382,12 +5135,12 @@ } }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4405,12 +5158,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true } } }, @@ -4433,9 +5180,9 @@ "dev": true }, "micromark": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.10.1.tgz", - "integrity": "sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ==", + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", "dev": true, "requires": { "debug": "^4.0.0", @@ -4556,6 +5303,11 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, "node-html-parser": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-3.1.3.tgz", @@ -4566,9 +5318,9 @@ } }, "node-releases": { - "version": "1.1.67", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", - "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "version": "1.1.70", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz", + "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==", "dev": true }, "node-status-codes": { @@ -4625,17 +5377,20 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -4645,12 +5400,14 @@ }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -4664,7 +5421,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -4672,22 +5430,26 @@ }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -4695,17 +5457,20 @@ }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -4713,7 +5478,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -4722,7 +5488,8 @@ }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -4731,7 +5498,8 @@ }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -4739,17 +5507,20 @@ }, "mimic-fn": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -4757,7 +5528,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" @@ -4765,12 +5537,14 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "^0.7.0", @@ -4780,17 +5554,20 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -4798,37 +5575,44 @@ }, "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -4836,17 +5620,20 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -4856,7 +5643,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -4864,12 +5652,14 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -4877,12 +5667,14 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -4891,17 +5683,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "10.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { "cliui": "^3.2.0", @@ -4920,12 +5715,14 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "cliui": { "version": "3.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -4935,7 +5732,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -4947,7 +5745,8 @@ }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -4956,12 +5755,14 @@ "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -4973,7 +5774,8 @@ }, "yargs-parser": { "version": "8.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -4981,7 +5783,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -5027,26 +5830,19 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" } }, - "opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true - }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -5330,6 +6126,16 @@ "pinkie": "^2.0.0" } }, + "pinst": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/pinst/-/pinst-2.1.4.tgz", + "integrity": "sha512-T44k87is/GiSjONFxSl/uL6yGqwVpojdnUfbYzNeatDTM8uRCoCEQjuQ0g1oW6XENfbdO2XKtMfdGlDSQ19MJA==", + "dev": true, + "requires": { + "fromentries": "^1.3.2", + "write-json-file": "^4.3.0" + } + }, "pkg-conf": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", @@ -5486,6 +6292,36 @@ "htmlparser2": "^3.10.0" }, "dependencies": { + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", @@ -5495,6 +6331,22 @@ "domelementtype": "1" } }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", @@ -5810,6 +6662,12 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, "registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -5849,12 +6707,12 @@ } }, "remark-stringify": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.0.tgz", - "integrity": "sha512-8x29DpTbVzEc6Dwb90qhxCtbZ6hmj3BxWWDpMhA+1WM4dOEGH5U5/GFe3Be5Hns5MvPSFAr1e2KSVtKZkK5nUw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dev": true, "requires": { - "mdast-util-to-markdown": "^0.5.0" + "mdast-util-to-markdown": "^0.6.0" } }, "repeat-string": { @@ -5863,12 +6721,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -6015,14 +6867,14 @@ "dev": true }, "selenium-webdriver": { - "version": "4.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.8.tgz", - "integrity": "sha512-yPSaiWySZTEbxuuWQMDqdXh3H3N4Aiw/bSUjpkKMPWWCysfPqUncrq6FewBqdxWD1wQKzy5yWaQMGsgTY/0rCQ==", + "version": "4.0.0-beta.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-beta.1.tgz", + "integrity": "sha512-DJ10z6Yk+ZBaLrt1CLElytQ/FOayx29ANKDtmtyW1A6kCJx3+dsc5fFMOZxwzukDniyYsC3OObT5pUAsgkjpxQ==", "dev": true, "requires": { "jszip": "^3.5.0", "rimraf": "^2.7.1", - "tmp": "^0.1.0", + "tmp": "^0.2.1", "ws": "^7.3.1" }, "dependencies": { @@ -6066,12 +6918,6 @@ } } }, - "semver-regex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz", - "integrity": "sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==", - "dev": true - }, "serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -6133,6 +6979,23 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "requires": { + "is-plain-obj": "^2.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6323,9 +7186,9 @@ "dev": true }, "stylelint": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.8.0.tgz", - "integrity": "sha512-iHH3dv3UI23SLDrH4zMQDjLT9/dDIz/IpoFeuNxZmEx86KtfpjDOscxLTFioQyv+2vQjPlRZnK0UoJtfxLICXQ==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.11.0.tgz", + "integrity": "sha512-DhrKSWDWGZkCiQMtU+VroXM6LWJVC8hSK24nrUngTSQvXGK75yZUq4yNpynqrxD3a/fzKMED09V+XxO4z4lTbw==", "dev": true, "requires": { "@stylelint/postcss-css-in-js": "^0.37.2", @@ -6334,24 +7197,24 @@ "balanced-match": "^1.0.0", "chalk": "^4.1.0", "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", + "debug": "^4.3.1", "execall": "^2.0.0", - "fast-glob": "^3.2.4", + "fast-glob": "^3.2.5", "fastest-levenshtein": "^1.0.12", "file-entry-cache": "^6.0.0", "get-stdin": "^8.0.0", "global-modules": "^2.0.0", - "globby": "^11.0.1", + "globby": "^11.0.2", "globjoin": "^0.1.4", "html-tags": "^3.1.0", "ignore": "^5.1.8", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.20.0", + "known-css-properties": "^0.21.0", "lodash": "^4.17.20", "log-symbols": "^4.0.0", "mathml-tag-names": "^2.1.3", - "meow": "^8.0.0", + "meow": "^9.0.0", "micromatch": "^4.0.2", "normalize-selector": "^0.2.0", "postcss": "^7.0.35", @@ -6373,7 +7236,7 @@ "style-search": "^0.1.0", "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^6.0.3", + "table": "^6.0.7", "v8-compile-cache": "^2.2.0", "write-file-atomic": "^3.0.3" }, @@ -6398,9 +7261,9 @@ } }, "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -6411,31 +7274,20 @@ "picomatch": "^2.2.1" } }, - "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { - "flat-cache": "^3.0.4" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } }, - "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", - "dev": true - }, "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", @@ -6449,33 +7301,10 @@ "dev": true }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "table": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", - "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - } } } }, @@ -6529,18 +7358,6 @@ "js-yaml": "^3.14.0", "serialize-error": "^7.0.1", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } } }, "supports-color": { @@ -6571,9 +7388,9 @@ }, "dependencies": { "ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -6589,9 +7406,9 @@ "dev": true }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "slice-ansi": { @@ -6658,23 +7475,12 @@ "dev": true }, "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { - "rimraf": "^2.6.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "rimraf": "^3.0.0" } }, "to-fast-properties": { @@ -6832,10 +7638,15 @@ "@types/unist": "^2.0.2" } }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "unzip-response": { @@ -6945,14 +7756,13 @@ } }, "vfile": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", - "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, "requires": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", "unist-util-stringify-position": "^2.0.0", "vfile-message": "^2.0.0" } @@ -6968,9 +7778,9 @@ } }, "vnu-jar": { - "version": "20.6.30", - "resolved": "https://registry.npmjs.org/vnu-jar/-/vnu-jar-20.6.30.tgz", - "integrity": "sha512-zlNNe7jW6cTIrxVlZK9AcZiNWjxzjqi7LpTafBCi4OY4bsh2uyGhxXT2l6hZ3ibpxP0ZC/pQsBpFQEACS0ePIg==", + "version": "21.2.5", + "resolved": "https://registry.npmjs.org/vnu-jar/-/vnu-jar-21.2.5.tgz", + "integrity": "sha512-mVBXRui9jAkZwXyiqofprrDIAB91F5S0xRic49elb5sutx/L3JFICVut4rMlOoX5Jwqv7lAMHGnl7RMOFdSkVA==", "dev": true }, "vscode-uri": { @@ -7003,12 +7813,6 @@ "isexe": "^2.0.0" } }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -7025,9 +7829,9 @@ "dev": true }, "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -7038,8 +7842,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "3.0.3", @@ -7053,10 +7856,32 @@ "typedarray-to-buffer": "^3.1.5" } }, + "write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "requires": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, "ws": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", - "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==", "dev": true }, "xdg-basedir": { @@ -7110,12 +7935,6 @@ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, "zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", diff --git a/package.json b/package.json index b06227a36d..6670c010ef 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,11 @@ "regression": "ava --timeout=1m", "regression-report": "node test/util/report", "test": "npm run lint && npm run regression", - "vnu-jar": "java -jar node_modules/vnu-jar/build/dist/vnu.jar --errors-only --filterfile .vnurc --no-langdetect --skip-non-html aria-practices.html examples/" + "vnu-jar": "java -jar node_modules/vnu-jar/build/dist/vnu.jar --filterfile .vnurc --no-langdetect --skip-non-html aria-practices.html examples/", + "create-gh-project": "node ./scripts/create-gh-project.js", + "postinstall": "husky install", + "prepublishOnly": "pinst --disable", + "postpublish": "pinst --enable" }, "repository": { "type": "git", @@ -33,31 +37,29 @@ "homepage": "https://github.com/w3c/aria-practices#readme", "devDependencies": { "ava": "^3.15.0", + "babel-eslint": "^10.1.0", "cheerio": "^1.0.0-rc.5", - "cspell": "^5.1.3", - "eslint": "^7.18.0", - "eslint-config-prettier": "^7.1.0", + "cspell": "^5.3.1", + "eslint": "^7.20.0", + "eslint-config-prettier": "^8.0.0", "eslint-plugin-ava": "^11.0.0", + "eslint-plugin-jsdoc": "^32.1.0", "eslint-plugin-prettier": "^3.3.1", - "geckodriver": "^1.21.1", + "geckodriver": "^1.22.1", "glob": "^7.1.6", "htmlhint": "^0.14.2", "htmlparser2": "^6.0.0", - "husky": "^4.3.8", - "lint-staged": "^10.5.3", + "husky": "^5.1.1", + "lint-staged": "^10.5.4", "npm-merge-driver": "^2.3.6", + "pinst": "^2.1.4", "prettier": "^2.2.1", - "selenium-webdriver": "^4.0.0-alpha.8", - "stylelint": "^13.8.0", + "selenium-webdriver": "^4.0.0-beta.1", + "stylelint": "^13.11.0", "stylelint-config-prettier": "^8.0.2", "stylelint-config-standard": "^20.0.0", "stylelint-prettier": "^1.1.2", - "vnu-jar": "^20.6.30" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } + "vnu-jar": "^21.2.5" }, "lint-staged": { "*.css": [ @@ -79,6 +81,8 @@ ] }, "dependencies": { + "@octokit/rest": "^18.2.0", + "dotenv": "^8.2.0", "node-html-parser": "^3.1.3" } } From a4ae9651fea612b3e2cce63ddc6fd4d4165a3080 Mon Sep 17 00:00:00 2001 From: Jon Gunderson Date: Mon, 12 Apr 2021 10:26:43 -0500 Subject: [PATCH 11/16] added high contrast information --- coverage/index.html | 440 ++++++++++++++++-------------- coverage/role-coverage.csv | 14 +- examples/index.html | 152 +++++++---- scripts/coverage-report.js | 15 +- scripts/coverage-report.template | 5 + scripts/reference-tables.js | 12 +- scripts/reference-tables.template | 2 + 7 files changed, 370 insertions(+), 270 deletions(-) diff --git a/coverage/index.html b/coverage/index.html index fea68ce930..3123f90c99 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -24,9 +24,9 @@

    ARIA Roles, Properties and States Referenced in Guidance and Examples