├── .editorconfig ├── .github ├── CODEOWNERS └── ISSUE_TEMPLATE │ ├── BUG-REPORT.yml │ ├── FEATURE-REQUEST.yml │ ├── QUESTION.yml │ └── config.yml ├── .gitignore ├── .versionrc.js ├── CHANGELOG.md ├── Directory.Build.props ├── LICENSE ├── LoupedeckPackage.yaml ├── README.md ├── SpeedtestPlugin.sln ├── SpeedtestPlugin ├── App.config ├── Classes │ ├── SpeedTestHttpClient.cs │ └── SpeedtestClient.cs ├── Commands │ └── SpeedtestCommand.cs ├── Extensions │ └── FileSizeExtensions.cs ├── PluginConfiguration.json ├── Properties │ └── AssemblyInfo.cs ├── Resources │ └── Icon │ │ ├── icon-16.png │ │ ├── icon-256.png │ │ ├── icon-32.png │ │ └── icon-48.png ├── SpeedtestApplication.cs ├── SpeedtestPlugin.cs ├── SpeedtestPlugin.csproj └── packages.config ├── commitlint.config.js ├── package.json ├── pnpm-lock.yaml └── standard-version-updater └── AssemblyInfo.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # Remove the line below if you want to inherit .editorconfig settings from higher directories 2 | root = true 3 | 4 | # C# files 5 | [*.cs] 6 | 7 | #### Core EditorConfig Options #### 8 | 9 | # Indentation and spacing 10 | indent_size = 4 11 | indent_style = space 12 | tab_width = 4 13 | 14 | # New line preferences 15 | end_of_line = crlf 16 | insert_final_newline = false 17 | 18 | #### .NET Coding Conventions #### 19 | 20 | # Organize usings 21 | dotnet_separate_import_directive_groups = true 22 | dotnet_sort_system_directives_first = true 23 | 24 | # this. and Me. preferences 25 | dotnet_style_qualification_for_event = true:warning 26 | dotnet_style_qualification_for_field = true:warning 27 | dotnet_style_qualification_for_method = true:warning 28 | dotnet_style_qualification_for_property = true:warning 29 | 30 | # Language keywords vs BCL types preferences 31 | dotnet_style_predefined_type_for_locals_parameters_members = false:warning 32 | dotnet_style_predefined_type_for_member_access = false:warning 33 | 34 | # Parentheses preferences 35 | dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:warning 36 | dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning 37 | dotnet_style_parentheses_in_other_operators = never_if_unnecessary:warning 38 | dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:warning 39 | 40 | # Modifier preferences 41 | dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent 42 | 43 | # Expression-level preferences 44 | csharp_style_deconstructed_variable_declaration = true:suggestion 45 | csharp_style_inlined_variable_declaration = true:warning 46 | csharp_style_throw_expression = true:warning 47 | dotnet_style_coalesce_expression = true:warning 48 | dotnet_style_collection_initializer = true:warning 49 | dotnet_style_explicit_tuple_names = true:warning 50 | dotnet_style_null_propagation = true:warning 51 | dotnet_style_object_initializer = false:suggestion 52 | dotnet_style_prefer_auto_properties = true:warning 53 | dotnet_style_prefer_compound_assignment = true:warning 54 | dotnet_style_prefer_conditional_expression_over_assignment = true:warning 55 | dotnet_style_prefer_conditional_expression_over_return = true:warning 56 | dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion 57 | dotnet_style_prefer_inferred_tuple_names = true:suggestion 58 | dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning 59 | 60 | # Field preferences 61 | dotnet_style_readonly_field = true:warning 62 | 63 | # Parameter preferences 64 | dotnet_code_quality_unused_parameters = all:warning 65 | 66 | #### C# Coding Conventions #### 67 | 68 | # var preferences 69 | csharp_style_var_elsewhere = true:silent 70 | csharp_style_var_for_built_in_types = true:warning 71 | csharp_style_var_when_type_is_apparent = true:warning 72 | 73 | # Expression-bodied members 74 | csharp_style_expression_bodied_accessors = when_on_single_line:suggestion 75 | csharp_style_expression_bodied_constructors = when_on_single_line:suggestion 76 | csharp_style_expression_bodied_indexers = when_on_single_line:suggestion 77 | csharp_style_expression_bodied_lambdas = when_on_single_line:suggestion 78 | csharp_style_expression_bodied_local_functions = when_on_single_line:suggestion 79 | csharp_style_expression_bodied_methods = when_on_single_line:suggestion 80 | csharp_style_expression_bodied_operators = when_on_single_line:suggestion 81 | csharp_style_expression_bodied_properties = when_on_single_line:suggestion 82 | 83 | # Pattern matching preferences 84 | csharp_style_pattern_matching_over_as_with_null_check = true:warning 85 | csharp_style_pattern_matching_over_is_with_cast_check = true:warning 86 | 87 | # Null-checking preferences 88 | csharp_style_conditional_delegate_call = true:warning 89 | 90 | # Modifier preferences 91 | csharp_prefer_static_local_function = false:warning 92 | csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async 93 | 94 | # Code-block preferences 95 | csharp_prefer_braces = true:warning 96 | csharp_prefer_simple_using_statement = false:warning 97 | 98 | # Expression-level preferences 99 | csharp_prefer_simple_default_expression = true:warning 100 | csharp_style_pattern_local_over_anonymous_function = true:warning 101 | csharp_style_prefer_index_operator = true:suggestion 102 | csharp_style_prefer_range_operator = true:suggestion 103 | csharp_style_unused_value_assignment_preference = discard_variable:suggestion 104 | csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion 105 | 106 | # 'using' directive preferences 107 | csharp_using_directive_placement = inside_namespace:warning 108 | 109 | #### C# Formatting Rules #### 110 | 111 | # New line preferences 112 | csharp_new_line_before_catch = true 113 | csharp_new_line_before_else = true 114 | csharp_new_line_before_finally = true 115 | csharp_new_line_before_members_in_anonymous_types = true 116 | csharp_new_line_before_members_in_object_initializers = true 117 | csharp_new_line_before_open_brace = all 118 | csharp_new_line_between_query_expression_clauses = true 119 | 120 | # Indentation preferences 121 | csharp_indent_block_contents = true 122 | csharp_indent_braces = false 123 | csharp_indent_case_contents = true 124 | csharp_indent_case_contents_when_block = false 125 | csharp_indent_labels = one_less_than_current 126 | csharp_indent_switch_labels = true 127 | 128 | # Space preferences 129 | csharp_space_after_cast = false 130 | csharp_space_after_colon_in_inheritance_clause = true 131 | csharp_space_after_comma = true 132 | csharp_space_after_dot = false 133 | csharp_space_after_keywords_in_control_flow_statements = true 134 | csharp_space_after_semicolon_in_for_statement = true 135 | csharp_space_around_binary_operators = before_and_after 136 | csharp_space_around_declaration_statements = false 137 | csharp_space_before_colon_in_inheritance_clause = true 138 | csharp_space_before_comma = false 139 | csharp_space_before_dot = false 140 | csharp_space_before_open_square_brackets = false 141 | csharp_space_before_semicolon_in_for_statement = false 142 | csharp_space_between_empty_square_brackets = false 143 | csharp_space_between_method_call_empty_parameter_list_parentheses = false 144 | csharp_space_between_method_call_name_and_opening_parenthesis = false 145 | csharp_space_between_method_call_parameter_list_parentheses = false 146 | csharp_space_between_method_declaration_empty_parameter_list_parentheses = false 147 | csharp_space_between_method_declaration_name_and_open_parenthesis = false 148 | csharp_space_between_method_declaration_parameter_list_parentheses = false 149 | csharp_space_between_parentheses = false 150 | csharp_space_between_square_brackets = false 151 | 152 | # Wrapping preferences 153 | csharp_preserve_single_line_blocks = true 154 | csharp_preserve_single_line_statements = false 155 | 156 | #### Naming styles #### 157 | 158 | # Naming rules 159 | 160 | dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion 161 | dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface 162 | dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i 163 | 164 | dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion 165 | dotnet_naming_rule.types_should_be_pascal_case.symbols = types 166 | dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case 167 | 168 | dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion 169 | dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members 170 | dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case 171 | 172 | # Symbol specifications 173 | 174 | dotnet_naming_symbols.interface.applicable_kinds = interface 175 | dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal 176 | dotnet_naming_symbols.interface.required_modifiers = 177 | 178 | dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum 179 | dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal 180 | dotnet_naming_symbols.types.required_modifiers = 181 | 182 | dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method 183 | dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal 184 | dotnet_naming_symbols.non_field_members.required_modifiers = 185 | 186 | # Naming styles 187 | 188 | dotnet_naming_style.pascal_case.required_prefix = 189 | dotnet_naming_style.pascal_case.required_suffix = 190 | dotnet_naming_style.pascal_case.word_separator = 191 | dotnet_naming_style.pascal_case.capitalization = pascal_case 192 | 193 | dotnet_naming_style.begins_with_i.required_prefix = I 194 | dotnet_naming_style.begins_with_i.required_suffix = 195 | dotnet_naming_style.begins_with_i.word_separator = 196 | dotnet_naming_style.begins_with_i.capitalization = pascal_case 197 | 198 | #### Diagnostic configuration #### 199 | 200 | dotnet_diagnostic.CA1028.severity = none 201 | dotnet_diagnostic.CA1031.severity = none 202 | dotnet_diagnostic.CA1303.severity = none 203 | dotnet_diagnostic.CA1060.severity = none 204 | dotnet_diagnostic.CA2101.severity = none 205 | 206 | dotnet_diagnostic.IDE0058.severity = none 207 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @XeroxDev -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/BUG-REPORT.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: File a bug report 3 | title: "[Bug]: " 4 | labels: ["Type: Bug"] 5 | body: 6 | - type: checkboxes 7 | attributes: 8 | label: Consent 9 | options: 10 | - label: I have searched the existing issues and verified that there is no open issue for the same subject. 11 | required: true 12 | - type: textarea 13 | attributes: 14 | label: Current Behavior 15 | description: A concise description of what you're experiencing. 16 | validations: 17 | required: true 18 | - type: textarea 19 | attributes: 20 | label: Expected Behavior 21 | description: A concise description of what you expected to happen. 22 | validations: 23 | required: true 24 | - type: textarea 25 | attributes: 26 | label: Steps To Reproduce 27 | description: Steps to reproduce the behavior. 28 | placeholder: | 29 | 1. Go to '...' 30 | 2. Click on '....' 31 | 3. Scroll down to '....' 32 | 4. See error 33 | validations: 34 | required: true 35 | - type: input 36 | attributes: 37 | label: OS 38 | description: "Which OS are you using?" 39 | value: Windows 40 | validations: 41 | required: true 42 | - type: input 43 | attributes: 44 | label: OS Version 45 | description: "Which OS version are you on?" 46 | value: "10" 47 | validations: 48 | required: true 49 | - type: input 50 | attributes: 51 | label: Plugin Version 52 | description: "Which Version does your plugin has?" 53 | placeholder: v1.0.0 54 | validations: 55 | required: true 56 | - type: input 57 | attributes: 58 | label: YTMDesktop Version 59 | description: "Which Version does your YTMDesktop application has?" 60 | placeholder: v1.13.0 61 | validations: 62 | required: true 63 | - type: dropdown 64 | attributes: 65 | label: How did you download the plugin? 66 | options: 67 | - Loupedeck Store 68 | - GitHub 69 | - Discord 70 | validations: 71 | required: true 72 | - type: textarea 73 | attributes: 74 | label: Anything else? 75 | description: | 76 | Links? References? Anything that will give us more context about the issue you are encountering! 77 | 78 | Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. 79 | validations: 80 | required: false 81 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml: -------------------------------------------------------------------------------- 1 | name: Feature request 2 | description: Suggest an idea for this project 3 | title: "[FEATURE]: <title>" 4 | labels: ["Type: Enhancement"] 5 | body: 6 | - type: checkboxes 7 | attributes: 8 | label: Consent 9 | options: 10 | - label: I have searched the existing issues and verified that there is no open issue for the same subject. 11 | required: true 12 | - type: textarea 13 | attributes: 14 | label: Feature 15 | description: Describe the feature you'd like 16 | validations: 17 | required: true 18 | - type: textarea 19 | attributes: 20 | label: Solution 21 | description: Describe the solution you'd like 22 | validations: 23 | required: false 24 | - type: textarea 25 | attributes: 26 | label: Alternatives 27 | description: Describe alternatives you've considered 28 | validations: 29 | required: false 30 | - type: textarea 31 | attributes: 32 | label: Anything else? 33 | description: | 34 | Links? References? Anything that will give us more context about the feature you are wish to add! 35 | 36 | Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. 37 | validations: 38 | required: false 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/QUESTION.yml: -------------------------------------------------------------------------------- 1 | name: Ask a Question 2 | description: You have questions? Please let us know! 3 | title: "[QUESTION]: <title>" 4 | labels: ["Type: Question"] 5 | body: 6 | - type: checkboxes 7 | attributes: 8 | label: Consent 9 | options: 10 | - label: I have searched the existing issues and verified that there is no open issue for the same subject. 11 | required: true 12 | - type: textarea 13 | attributes: 14 | label: Question 15 | description: What is your question? 16 | validations: 17 | required: true 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | Installer/ 25 | 26 | # Visual Studio 2015 cache/options directory 27 | .vs/ 28 | # Uncomment if you have tasks that create the project's static files in wwwroot 29 | #wwwroot/ 30 | 31 | # MSTest test Results 32 | [Tt]est[Rr]esult*/ 33 | [Bb]uild[Ll]og.* 34 | 35 | # NUNIT 36 | *.VisualState.xml 37 | TestResult.xml 38 | 39 | # Build Results of an ATL Project 40 | [Dd]ebugPS/ 41 | [Rr]eleasePS/ 42 | dlldata.c 43 | 44 | # DNX 45 | project.lock.json 46 | project.fragment.lock.json 47 | artifacts/ 48 | 49 | *_i.c 50 | *_p.c 51 | *_i.h 52 | *.ilk 53 | *.meta 54 | *.obj 55 | *.pch 56 | *.pdb 57 | *.pgc 58 | *.pgd 59 | *.rsp 60 | *.sbr 61 | *.tlb 62 | *.tli 63 | *.tlh 64 | *.tmp 65 | *.tmp_proj 66 | *.log 67 | *.vspscc 68 | *.vssscc 69 | .builds 70 | *.pidb 71 | *.svclog 72 | *.scc 73 | 74 | # Chutzpah Test files 75 | _Chutzpah* 76 | 77 | # Visual C++ cache files 78 | ipch/ 79 | *.aps 80 | *.ncb 81 | *.opendb 82 | *.opensdf 83 | *.sdf 84 | *.cachefile 85 | *.VC.db 86 | *.VC.VC.opendb 87 | 88 | # Visual Studio profiler 89 | *.psess 90 | *.vsp 91 | *.vspx 92 | *.sap 93 | 94 | # TFS 2012 Local Workspace 95 | $tf/ 96 | 97 | # Guidance Automation Toolkit 98 | *.gpState 99 | 100 | # ReSharper is a .NET coding add-in 101 | _ReSharper*/ 102 | *.[Rr]e[Ss]harper 103 | *.DotSettings.user 104 | 105 | # JustCode is a .NET coding add-in 106 | .JustCode 107 | 108 | # TeamCity is a build add-in 109 | _TeamCity* 110 | 111 | # DotCover is a Code Coverage Tool 112 | *.dotCover 113 | 114 | # NCrunch 115 | _NCrunch_* 116 | .*crunch*.local.xml 117 | nCrunchTemp_* 118 | 119 | # MightyMoose 120 | *.mm.* 121 | AutoTest.Net/ 122 | 123 | # Web workbench (sass) 124 | .sass-cache/ 125 | 126 | # Installshield output folder 127 | [Ee]xpress/ 128 | 129 | # DocProject is a documentation generator add-in 130 | DocProject/buildhelp/ 131 | DocProject/Help/*.HxT 132 | DocProject/Help/*.HxC 133 | DocProject/Help/*.hhc 134 | DocProject/Help/*.hhk 135 | DocProject/Help/*.hhp 136 | DocProject/Help/Html2 137 | DocProject/Help/html 138 | 139 | # Click-Once directory 140 | publish/ 141 | 142 | # Publish Web Output 143 | *.[Pp]ublish.xml 144 | *.azurePubxml 145 | # TODO: Comment the next line if you want to checkin your web deploy settings 146 | # but database connection strings (with potential passwords) will be unencrypted 147 | #*.pubxml 148 | *.publishproj 149 | 150 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 151 | # checkin your Azure Web App publish settings, but sensitive information contained 152 | # in these scripts will be unencrypted 153 | PublishScripts/ 154 | 155 | # NuGet Packages 156 | *.nupkg 157 | # The packages folder can be ignored because of Package Restore 158 | **/packages/* 159 | # except build/, which is used as an MSBuild target. 160 | !**/packages/build/ 161 | # Uncomment if necessary however generally it will be regenerated when needed 162 | #!**/packages/repositories.config 163 | # NuGet v3's project.json files produces more ignoreable files 164 | *.nuget.props 165 | *.nuget.targets 166 | 167 | # Microsoft Azure Build Output 168 | csx/ 169 | *.build.csdef 170 | 171 | # Microsoft Azure Emulator 172 | ecf/ 173 | rcf/ 174 | 175 | # Windows Store app package directories and files 176 | AppPackages/ 177 | BundleArtifacts/ 178 | Package.StoreAssociation.xml 179 | _pkginfo.txt 180 | 181 | # Visual Studio cache files 182 | # files ending in .cache can be ignored 183 | *.[Cc]ache 184 | # but keep track of directories ending in .cache 185 | !*.[Cc]ache/ 186 | 187 | # Others 188 | ClientBin/ 189 | ~$* 190 | *~ 191 | *.dbmdl 192 | *.dbproj.schemaview 193 | *.jfm 194 | *.pfx 195 | *.publishsettings 196 | node_modules/ 197 | orleans.codegen.cs 198 | 199 | # Since there are multiple workflows, uncomment next line to ignore bower_components 200 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 201 | #bower_components/ 202 | 203 | # RIA/Silverlight projects 204 | Generated_Code/ 205 | 206 | # Backup & report files from converting an old project file 207 | # to a newer Visual Studio version. Backup files are not needed, 208 | # because we have git ;-) 209 | _UpgradeReport_Files/ 210 | Backup*/ 211 | UpgradeLog*.XML 212 | UpgradeLog*.htm 213 | 214 | # SQL Server files 215 | *.mdf 216 | *.ldf 217 | 218 | # Business Intelligence projects 219 | *.rdl.data 220 | *.bim.layout 221 | *.bim_*.settings 222 | 223 | # Microsoft Fakes 224 | FakesAssemblies/ 225 | 226 | # GhostDoc plugin setting file 227 | *.GhostDoc.xml 228 | 229 | # Node.js Tools for Visual Studio 230 | .ntvs_analysis.dat 231 | 232 | # Visual Studio 6 build log 233 | *.plg 234 | 235 | # Visual Studio 6 workspace options file 236 | *.opt 237 | 238 | # Visual Studio LightSwitch build output 239 | **/*.HTMLClient/GeneratedArtifacts 240 | **/*.DesktopClient/GeneratedArtifacts 241 | **/*.DesktopClient/ModelManifest.xml 242 | **/*.Server/GeneratedArtifacts 243 | **/*.Server/ModelManifest.xml 244 | _Pvt_Extensions 245 | 246 | # Paket dependency manager 247 | .paket/paket.exe 248 | paket-files/ 249 | 250 | # FAKE - F# Make 251 | .fake/ 252 | 253 | # JetBrains Rider 254 | .idea/ 255 | *.sln.iml 256 | 257 | # CodeRush 258 | .cr/ 259 | 260 | # Python Tools for Visual Studio (PTVS) 261 | __pycache__/ 262 | *.pyc 263 | 264 | 265 | # 266 | # ANGULAR gitignore begin section 267 | # 268 | 269 | # See http://help.github.com/ignore-files/ for more about ignoring files. 270 | 271 | # compiled output 272 | /dist 273 | /tmp 274 | /out-tsc 275 | 276 | # dependencies 277 | /node_modules 278 | 279 | # IDEs and editors 280 | /.idea 281 | .project 282 | .classpath 283 | .c9/ 284 | *.launch 285 | .settings/ 286 | *.sublime-workspace 287 | 288 | # IDE - VSCode 289 | .vscode/* 290 | !.vscode/settings.json 291 | !.vscode/tasks.json 292 | !.vscode/launch.json 293 | !.vscode/extensions.json 294 | 295 | # misc 296 | /.sass-cache 297 | /connect.lock 298 | /coverage 299 | /libpeerconnection.log 300 | npm-debug.log 301 | testem.log 302 | /typings 303 | 304 | # e2e 305 | /e2e/*.js 306 | /e2e/*.map 307 | 308 | # System Files 309 | *.xcuserstate 310 | *.xcactivitylog 311 | 312 | *.DotSettings 313 | -------------------------------------------------------------------------------- /.versionrc.js: -------------------------------------------------------------------------------- 1 | // .versionrc.js 2 | const tracker = [ 3 | { 4 | filename: './SpeedtestPlugin/Properties/AssemblyInfo.cs', 5 | updater: require('./standard-version-updater/AssemblyInfo.js') 6 | }, 7 | { 8 | filename: './package.json', 9 | type: 'json' 10 | }, 11 | { 12 | filename: './LoupedeckPackage.yaml', 13 | updater: require.resolve("standard-version-updater-yaml") 14 | } 15 | ] 16 | 17 | module.exports = { 18 | sign: true, 19 | commitAll: true, 20 | bumpFiles: tracker, 21 | packageFiles: tracker 22 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | ## 1.0.0 (2021-12-08) 6 | -------------------------------------------------------------------------------- /Directory.Build.props: -------------------------------------------------------------------------------- 1 | <Project> 2 | <PropertyGroup> 3 | <LangVersion>7.3</LangVersion> 4 | </PropertyGroup> 5 | </Project> 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Dominic "XeroxDev" Ris 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /LoupedeckPackage.yaml: -------------------------------------------------------------------------------- 1 | type: plugin4 2 | name: Speedtest 3 | displayName: Speedtest 4 | version: 1.0.0 5 | author: XeroxDev 6 | copyright: Copyright (c) 2021 Dominic Ris 7 | 8 | supportedDevices: 9 | - LoupedeckCt 10 | - LoupedeckLive 11 | 12 | pluginFileName: SpeedtestPlugin.dll 13 | pluginFolderWin: ./bin/win/ 14 | pluginFolderMac: ./bin/mac/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 1. Table of content 2 | - [1. Table of content](#1-table-of-content) 3 | - [2. Badges](#2-badges) 4 | - [3. What is this Plugin?](#3-what-is-this-plugin) 5 | - [4. Support / Feedback](#4-support--feedback) 6 | - [5. How to use it?](#5-how-to-use-it) 7 | - [6. How to contribute?](#6-how-to-contribute) 8 | 9 | # 2. Badges 10 | [![Forks](https://img.shields.io/github/forks/XeroxDev/Loupedeck-plugin-Speedtest?color=blue&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/network/members) 11 | [![Stars](https://img.shields.io/github/stars/XeroxDev/Loupedeck-plugin-Speedtest?color=yellow&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/stargazers) 12 | [![Watchers](https://img.shields.io/github/watchers/XeroxDev/Loupedeck-plugin-Speedtest?color=lightgray&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/watchers) 13 | [![Contributors](https://img.shields.io/github/contributors/XeroxDev/Loupedeck-plugin-Speedtest?color=green&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/graphs/contributors) 14 | 15 | [![Issues](https://img.shields.io/github/issues/XeroxDev/Loupedeck-plugin-Speedtest?color=yellow&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/issues) 16 | [![Issues closed](https://img.shields.io/github/issues-closed/XeroxDev/Loupedeck-plugin-Speedtest?color=yellow&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/issues?q=is%3Aissue+is%3Aclosed) 17 | 18 | [![Issues-pr](https://img.shields.io/github/issues-pr/XeroxDev/Loupedeck-plugin-Speedtest?color=yellow&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/pulls) 19 | [![Issues-pr closed](https://img.shields.io/github/issues-pr-closed/XeroxDev/Loupedeck-plugin-Speedtest?color=yellow&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/pulls?q=is%3Apr+is%3Aclosed) 20 | [![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/compare) 21 | 22 | <!-- [![Build](https://img.shields.io/github/workflow/status/XeroxDev/Loupedeck-plugin-Speedtest/CI-CD?style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/actions?query=workflow%3A%22CI-CD%22) --> 23 | [![Release](https://img.shields.io/github/release/XeroxDev/Loupedeck-plugin-Speedtest?color=black&style=for-the-badge)](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/releases) 24 | [![Downloads](https://img.shields.io/github/downloads/XeroxDev/Loupedeck-plugin-Speedtest/total.svg?color=cyan&style=for-the-badge&logo=github)]() 25 | 26 | [![Awesome Badges](https://img.shields.io/badge/badges-awesome-green?style=for-the-badge)](https://shields.io) 27 | 28 | # 3. What is this Plugin? 29 | This Loupedeck Plugin allows you to control the test your internet connection. It shows Ping, download and upload speed 30 | 31 | # 4. Support / Feedback 32 | You found a bug? You have a feature request? I would love to hear about it [here](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/issues/new/choose) or click on the "Issues" tab here on the GitHub repositorie! 33 | 34 | You can also join my discord [here](https://s.tswi.me/discord) 35 | 36 | # 5. How to use it? 37 | 38 | 1. Install the Plugin 39 | 2. Add Action to Loupedeck 40 | 3. Push it & wait 41 | 42 | # 6. How to contribute? 43 | 44 | Just fork the repository and create PR's, but we use 45 | [standard-version](https://github.com/conventional-changelog/standard-version) to optimal release the plugin. 46 | 47 | standard-version is following the [conventionalcommits](https://www.conventionalcommits.org) specification which follows 48 | the 49 | [angular commit guidelines](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines) 50 | 51 | [Here](https://kapeli.com/cheat_sheets/Conventional_Commits.docset/Contents/Resources/Documents/index) is a neat little cheatsheet for Conventional Commits 52 | -------------------------------------------------------------------------------- /SpeedtestPlugin.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30128.74 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeedtestPlugin", "SpeedtestPlugin\SpeedtestPlugin.csproj", "{68FF3C95-04A1-48D3-AD57-14501B0C4486}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {68FF3C95-04A1-48D3-AD57-14501B0C4486}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {68FF3C95-04A1-48D3-AD57-14501B0C4486}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {68FF3C95-04A1-48D3-AD57-14501B0C4486}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {68FF3C95-04A1-48D3-AD57-14501B0C4486}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {A507F143-1012-4D81-9769-C55CDA9E3D7D} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /SpeedtestPlugin/App.config: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <configuration> 3 | <runtime> 4 | <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 5 | <dependentAssembly> 6 | <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 7 | <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" /> 8 | </dependentAssembly> 9 | <dependentAssembly> 10 | <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 11 | <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" /> 12 | </dependentAssembly> 13 | <dependentAssembly> 14 | <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> 15 | <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> 16 | </dependentAssembly> 17 | </assemblyBinding> 18 | </runtime> 19 | <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration> 20 | -------------------------------------------------------------------------------- /SpeedtestPlugin/Classes/SpeedTestHttpClient.cs: -------------------------------------------------------------------------------- 1 | namespace Loupedeck.SpeedtestPlugin.Classes 2 | { 3 | using System; 4 | using System.Globalization; 5 | using System.IO; 6 | using System.Net.Http; 7 | using System.Runtime.InteropServices; 8 | using System.Threading.Tasks; 9 | using System.Web; 10 | using System.Xml.Serialization; 11 | 12 | internal class SpeedTestHttpClient : HttpClient 13 | { 14 | public Int32 ConnectionLimit { get; set; } 15 | 16 | public SpeedTestHttpClient() 17 | { 18 | var frameworkInfo = RuntimeInformation.FrameworkDescription.Split(); 19 | var frameworkName = $"{frameworkInfo[0]}{frameworkInfo[1]}"; 20 | 21 | var osInfo = RuntimeInformation.OSDescription.Split(); 22 | 23 | this.DefaultRequestHeaders.Add("Accept", "text/html, application/xhtml+xml, */*"); 24 | this.DefaultRequestHeaders.Add("user-agent", 25 | String.Join(" ", "Mozilla/5.0", 26 | $"({osInfo[0]}-{osInfo[1]}; U; {RuntimeInformation.ProcessArchitecture}; en-us)", 27 | $"{frameworkName}/{frameworkInfo[2]}", "(KHTML, like Gecko)", 28 | $"SpeedTest.Net/{typeof(SpeedtestClient).Assembly.GetName().Version}" 29 | ) 30 | ); 31 | } 32 | 33 | public async Task<T> GetConfig<T>(String url) 34 | { 35 | var data = await this.GetStringAsync(AddTimeStamp(new Uri(url))); 36 | var xmlSerializer = new XmlSerializer(typeof(T)); 37 | using var reader = new StringReader(data); 38 | return (T)xmlSerializer.Deserialize(reader); 39 | } 40 | 41 | private static Uri AddTimeStamp(Uri address) 42 | { 43 | var uriBuilder = new UriBuilder(address); 44 | var query = HttpUtility.ParseQueryString(uriBuilder.Query); 45 | query["x"] = DateTime.Now.ToFileTime().ToString(CultureInfo.InvariantCulture); 46 | uriBuilder.Query = query.ToString(); 47 | return uriBuilder.Uri; 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /SpeedtestPlugin/Classes/SpeedtestClient.cs: -------------------------------------------------------------------------------- 1 | namespace Loupedeck.SpeedtestPlugin.Classes 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Diagnostics; 6 | using System.Linq; 7 | using System.Net; 8 | using System.Net.Http; 9 | using System.Net.Http.Headers; 10 | using System.Net.NetworkInformation; 11 | using System.Text; 12 | using System.Threading; 13 | using System.Threading.Tasks; 14 | 15 | using Newtonsoft.Json.Linq; 16 | 17 | public class SpeedtestClient 18 | { 19 | private static Int32 DownloadSize => 25 * 1000 * 1000; 20 | private static Int32 UploadSize => 5; 21 | 22 | private static Char[] Chars => new[] 23 | { 24 | 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 25 | 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 26 | 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 27 | }; 28 | 29 | private JToken _serverProperties; 30 | 31 | public SpeedtestClient() => this.GetNearestServers().GetAwaiter().GetResult(); 32 | 33 | private async Task GetNearestServers() 34 | { 35 | var urlForServers = "https://www.speedtest.net/api/js/servers"; 36 | var paramsForServers = "?engine=js"; 37 | 38 | try 39 | { 40 | var client = new HttpClient(); 41 | client.BaseAddress = new Uri(urlForServers); 42 | client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 43 | 44 | HttpResponseMessage responseMessage = await client.GetAsync(paramsForServers); 45 | if (responseMessage.IsSuccessStatusCode) 46 | { 47 | var responseString = await responseMessage.Content.ReadAsStringAsync(); 48 | var jsonServers = JArray.Parse(responseString); 49 | 50 | this._serverProperties = jsonServers[0]; 51 | } 52 | } 53 | catch (Exception) 54 | { 55 | this._serverProperties = null; 56 | } 57 | } 58 | 59 | public Int64 PingServer() 60 | { 61 | Ping ping = new Ping(); 62 | PingReply reply = null; 63 | 64 | try 65 | { 66 | Uri hostUri = new Uri(this._serverProperties["url"]?.ToString() ?? String.Empty); 67 | IPAddress ip = Dns.GetHostEntry(hostUri.Host).AddressList[0]; 68 | reply = ping.Send(ip); 69 | } 70 | catch (Exception) 71 | { 72 | // ignored 73 | } 74 | 75 | return reply?.RoundtripTime ?? -1; 76 | } 77 | 78 | public Double TestDownloadSpeed(Int32 simultaneousDownloads = 2, Int32 retryCount = 2) 79 | { 80 | var testData = this.GenerateDownloadUrls(); 81 | 82 | return TestSpeed(testData, async (client, url) => 83 | { 84 | var data = await client.GetByteArrayAsync(url); 85 | return DownloadSize; 86 | }, simultaneousDownloads); 87 | } 88 | 89 | public Double TestUploadSpeed(Int32 simultaneousUploads = 2, Int32 retryCount = 2) 90 | { 91 | var testData = GenerateUploadData(retryCount); 92 | return TestSpeed(testData, async (client, uploadData) => 93 | { 94 | var uploadUrl = $"https://{this._serverProperties["host"]}/upload?nocache={Guid.NewGuid().ToString()}"; 95 | 96 | await client.PostAsync(uploadUrl, new StringContent(uploadData)); 97 | return uploadData.Length; 98 | }, simultaneousUploads); 99 | } 100 | 101 | 102 | private static Double TestSpeed<T>(IEnumerable<T> testData, Func<HttpClient, T, Task<Double>> doWork, 103 | Int32 concurrencyCount = 2) 104 | { 105 | var throttler = new SemaphoreSlim(concurrencyCount); 106 | var size = new List<Double>(); 107 | 108 | Task<Double>[] downloadTasks = testData.Select(async data => 109 | { 110 | await throttler.WaitAsync(); 111 | var client = new SpeedTestHttpClient(); 112 | try 113 | { 114 | var timer = new Stopwatch(); 115 | timer.Start(); 116 | size.Add(await doWork(client, data)); 117 | timer.Stop(); 118 | return timer.Elapsed.TotalSeconds; 119 | } 120 | finally 121 | { 122 | client.Dispose(); 123 | throttler.Release(); 124 | } 125 | }).ToArray(); 126 | 127 | var results = Task.WhenAll(downloadTasks).Result; 128 | 129 | var avg = results.Average(); 130 | var avgSize = size.Average(); 131 | return Math.Round(avgSize / avg, 2); 132 | } 133 | 134 | private IEnumerable<String> GenerateDownloadUrls(Int32 count = 4) 135 | { 136 | var downloadUriBase = $"https://{this._serverProperties["host"]}/download?"; 137 | for (var i = 0; i < count; i++) 138 | { 139 | yield return $"{downloadUriBase}nocache={Guid.NewGuid().ToString()}&size={DownloadSize}"; 140 | } 141 | } 142 | 143 | private static IEnumerable<string> GenerateUploadData(Int32 count = 4) 144 | { 145 | var random = new Random(); 146 | var result = new List<string>(); 147 | 148 | for (var sizeCounter = 1; sizeCounter < UploadSize + 1; sizeCounter++) 149 | { 150 | var size = sizeCounter * 200 * 1024; 151 | var builder = new StringBuilder(size); 152 | 153 | builder.AppendFormat("content{0}=", sizeCounter); 154 | 155 | for (var i = 0; i < size; ++i) 156 | { 157 | builder.Append(Chars[random.Next(Chars.Length)]); 158 | } 159 | 160 | for (var i = 0; i < count; i++) 161 | { 162 | result.Add(builder.ToString()); 163 | } 164 | } 165 | 166 | return result; 167 | } 168 | } 169 | } -------------------------------------------------------------------------------- /SpeedtestPlugin/Commands/SpeedtestCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Loupedeck.SpeedtestPlugin.Commands 2 | { 3 | using System; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | using Classes; 9 | 10 | using Extensions; 11 | 12 | 13 | public class SpeedtestCommand : PluginDynamicCommand 14 | { 15 | private Double _downloadSpeed = -1; 16 | private Double _uploadSpeed = -1; 17 | private Int64 _ping = -1; 18 | private Boolean _isRunning; 19 | private readonly SpeedtestClient _client; 20 | 21 | public SpeedtestCommand() : base("Speedtest", "Run a speedtest", "Speedtest") => 22 | this._client = new SpeedtestClient(); 23 | 24 | protected override void RunCommand(String actionParameter) 25 | { 26 | if (this._isRunning) 27 | { 28 | return; 29 | } 30 | 31 | // Run in another thread 32 | Task.Run(() => 33 | { 34 | this.Reset(); 35 | 36 | this._isRunning = true; 37 | 38 | // Test ping 39 | this._ping = this._client.PingServer(); 40 | this.ActionImageChanged(); 41 | 42 | // Test download speed 43 | this._downloadSpeed = this._client.TestDownloadSpeed(); 44 | this.ActionImageChanged(); 45 | 46 | // Test upload speed 47 | this._uploadSpeed = this._client.TestUploadSpeed(); 48 | this.ActionImageChanged(); 49 | 50 | this._isRunning = false; 51 | }); 52 | } 53 | 54 | protected override BitmapImage GetCommandImage(String actionParameter, PluginImageSize imageSize) 55 | { 56 | var sb = new StringBuilder(); 57 | var bmpBuilder = new BitmapBuilder(imageSize); 58 | if (this._ping <= -1) 59 | { 60 | bmpBuilder.DrawText(this._isRunning ? "Speedtest started" : "Start speedtest"); 61 | return bmpBuilder.ToImage(); 62 | } 63 | 64 | sb.AppendLine($"Ping: {this._ping} ms"); 65 | sb.AppendLine($"↓: {(this._downloadSpeed <= -1 ? "N/A" : $"{this._downloadSpeed.ToPrettySize()}/s")}"); 66 | sb.AppendLine($"↑: {(this._uploadSpeed <= -1 ? "N/A" : $"{this._uploadSpeed.ToPrettySize()}/s")}"); 67 | 68 | bmpBuilder.DrawText(sb.ToString(), fontSize: 12); 69 | return bmpBuilder.ToImage(); 70 | } 71 | 72 | 73 | private void Reset() 74 | { 75 | this._downloadSpeed = -1; 76 | this._uploadSpeed = -1; 77 | this._ping = -1; 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /SpeedtestPlugin/Extensions/FileSizeExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace Loupedeck.SpeedtestPlugin.Extensions 2 | { 3 | using System; 4 | 5 | public static class FileSizeExtensions 6 | { 7 | private const Int64 OneKb = 1024; 8 | private const Int64 OneMb = OneKb * 1024; 9 | private const Int64 OneGb = OneMb * 1024; 10 | private const Int64 OneTb = OneGb * 1024; 11 | 12 | public static String ToPrettySize(this Double value, Int32 decimalPlaces = 2) 13 | { 14 | var asTb = Math.Round(value / OneTb, decimalPlaces); 15 | var asGb = Math.Round(value / OneGb, decimalPlaces); 16 | var asMb = Math.Round(value / OneMb, decimalPlaces); 17 | var asKb = Math.Round(value / OneKb, decimalPlaces); 18 | var chosenValue = asTb > 1 ? $"{asTb}TB" 19 | : asGb > 1 ? String.Format("{0}GB", asGb) 20 | : asMb > 1 ? String.Format("{0}MB", asMb) 21 | : asKb > 1 ? String.Format("{0}KB", asKb) 22 | : $"{Math.Round(value, decimalPlaces)}B"; 23 | return chosenValue; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /SpeedtestPlugin/PluginConfiguration.json: -------------------------------------------------------------------------------- 1 | { 2 | "displayName": "Speedtest", 3 | "supportedDevices": "Loupedeck20,Loupedeck30" 4 | } 5 | -------------------------------------------------------------------------------- /SpeedtestPlugin/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Speedtest")] 8 | [assembly: AssemblyDescription("With this plugin you can make speedtests with your LoupeDeck")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("XeroxDev")] 11 | [assembly: AssemblyProduct("Loupedeck2")] 12 | [assembly: AssemblyCopyright("Copyright (c) 2021 XeroxDev. All rights reserved.")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("68FF3C95-04A1-48D3-AD57-14501B0C4486")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | [assembly: AssemblyVersion("1.0.0")] -------------------------------------------------------------------------------- /SpeedtestPlugin/Resources/Icon/icon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroxDev/Loupedeck-plugin-Speedtest/c8e3059fabccbbb2082d89689042a80687ae5d00/SpeedtestPlugin/Resources/Icon/icon-16.png -------------------------------------------------------------------------------- /SpeedtestPlugin/Resources/Icon/icon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroxDev/Loupedeck-plugin-Speedtest/c8e3059fabccbbb2082d89689042a80687ae5d00/SpeedtestPlugin/Resources/Icon/icon-256.png -------------------------------------------------------------------------------- /SpeedtestPlugin/Resources/Icon/icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroxDev/Loupedeck-plugin-Speedtest/c8e3059fabccbbb2082d89689042a80687ae5d00/SpeedtestPlugin/Resources/Icon/icon-32.png -------------------------------------------------------------------------------- /SpeedtestPlugin/Resources/Icon/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroxDev/Loupedeck-plugin-Speedtest/c8e3059fabccbbb2082d89689042a80687ae5d00/SpeedtestPlugin/Resources/Icon/icon-48.png -------------------------------------------------------------------------------- /SpeedtestPlugin/SpeedtestApplication.cs: -------------------------------------------------------------------------------- 1 | namespace Loupedeck.SpeedtestPlugin 2 | { 3 | using Loupedeck; 4 | 5 | public class SpeedtestApplication : ClientApplication 6 | { 7 | public SpeedtestApplication() 8 | { 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /SpeedtestPlugin/SpeedtestPlugin.cs: -------------------------------------------------------------------------------- 1 | namespace Loupedeck.SpeedtestPlugin 2 | { 3 | using System; 4 | 5 | using Loupedeck; 6 | 7 | public class SpeedtestPlugin : Plugin 8 | { 9 | public override Boolean HasNoApplication => true; 10 | public override Boolean UsesApplicationApiOnly => true; 11 | 12 | public override void Load() 13 | { 14 | var resourcePath = "Loupedeck.SpeedtestPlugin.Resources.Icon."; 15 | this.Info.Icon16x16 = EmbeddedResources.ReadImage($"{resourcePath}icon-16.png"); 16 | this.Info.Icon32x32 = EmbeddedResources.ReadImage($"{resourcePath}icon-32.png"); 17 | this.Info.Icon48x48 = EmbeddedResources.ReadImage($"{resourcePath}icon-48.png"); 18 | this.Info.Icon256x256 = EmbeddedResources.ReadImage($"{resourcePath}icon-256.png"); 19 | } 20 | 21 | public override void Unload() 22 | { 23 | } 24 | 25 | private void OnApplicationStarted(Object sender, EventArgs e) 26 | { 27 | } 28 | 29 | private void OnApplicationStopped(Object sender, EventArgs e) 30 | { 31 | } 32 | 33 | public override void RunCommand(String commandName, String parameter) 34 | { 35 | } 36 | 37 | public override void ApplyAdjustment(String adjustmentName, String parameter, Int32 diff) 38 | { 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /SpeedtestPlugin/SpeedtestPlugin.csproj: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 | <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 4 | <PropertyGroup> 5 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 6 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 7 | <ProjectGuid>{68FF3C95-04A1-48D3-AD57-14501B0C4486}</ProjectGuid> 8 | <OutputType>Library</OutputType> 9 | <AppDesignerFolder>Properties</AppDesignerFolder> 10 | <RootNamespace>Loupedeck.SpeedtestPlugin</RootNamespace> 11 | <AssemblyName>SpeedtestPlugin</AssemblyName> 12 | <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> 13 | <FileAlignment>512</FileAlignment> 14 | <LangVersion>9</LangVersion> 15 | </PropertyGroup> 16 | <PropertyGroup> 17 | <BaseIntermediateOutputPath>$(SolutionDir)obj\</BaseIntermediateOutputPath> 18 | <BaseOutputPath>$(SolutionDir)bin\</BaseOutputPath> 19 | <OutputPath>$(BaseOutputPath)$(Configuration)\</OutputPath> 20 | <LibZPath>$(SolutionDir)packages\LibZ.Tool.1.2.0.0\tools\libz.exe</LibZPath> 21 | </PropertyGroup> 22 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 23 | <OutputPath>$(LocalAppData)\Loupedeck\Plugins\$(AssemblyName)\</OutputPath> 24 | <DebugSymbols>true</DebugSymbols> 25 | <DebugType>full</DebugType> 26 | <Optimize>false</Optimize> 27 | <DefineConstants>DEBUG;TRACE</DefineConstants> 28 | <ErrorReport>prompt</ErrorReport> 29 | <WarningLevel>4</WarningLevel> 30 | </PropertyGroup> 31 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 32 | <Optimize>true</Optimize> 33 | <DebugSymbols>false</DebugSymbols> 34 | <DebugType>None</DebugType> 35 | <OutputPath>$(BaseOutputPath)win\</OutputPath> 36 | <PostBuildEvent> 37 | cd $(OutputPath) 38 | dir /s /b 39 | del *.xml 40 | del *.config 41 | $(LibZPath) inject-dll --assembly $(AssemblyName).dll --include *.dll --exclude $(AssemblyName).dll --move 42 | cd $(SolutionDir) 43 | PowerShell -command Remove-Item .\Installer -Recurse -ErrorAction Ignore 44 | PowerShell -command New-Item -Path .\Installer -ItemType Directory 45 | PowerShell -command Compress-Archive -Path $(SolutionDir)LoupedeckPackage.yaml,$(SolutionDir)bin -DestinationPath $(SolutionDir)Installer\$(AssemblyName).zip -CompressionLevel Fastest -Force 46 | PowerShell -command Rename-Item -Path .\Installer\$(AssemblyName).zip -newName $(AssemblyName).lplug4 47 | </PostBuildEvent> 48 | </PropertyGroup> 49 | <ItemGroup> 50 | <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed"> 51 | <HintPath>C:\Program Files (x86)\Loupedeck\Loupedeck2\Newtonsoft.Json.dll</HintPath> 52 | <Private>False</Private> 53 | </Reference> 54 | <Reference Include="PluginApi, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"> 55 | <SpecificVersion>False</SpecificVersion> 56 | <HintPath>C:\Program Files (x86)\Loupedeck\Loupedeck2\PluginApi.dll</HintPath> 57 | <Private>False</Private> 58 | </Reference> 59 | <Reference Include="System" /> 60 | <Reference Include="System.Core" /> 61 | <Reference Include="System.Web" /> 62 | <Reference Include="System.Xml.Linq" /> 63 | <Reference Include="System.Data.DataSetExtensions" /> 64 | <Reference Include="Microsoft.CSharp" /> 65 | <Reference Include="System.Data" /> 66 | <Reference Include="System.Net.Http" /> 67 | <Reference Include="System.Xml" /> 68 | </ItemGroup> 69 | <ItemGroup> 70 | <Compile Include="Classes\SpeedtestClient.cs" /> 71 | <Compile Include="Classes\SpeedTestHttpClient.cs" /> 72 | <Compile Include="Commands\SpeedtestCommand.cs" /> 73 | <Compile Include="Extensions\FileSizeExtensions.cs" /> 74 | <Compile Include="Properties\AssemblyInfo.cs" /> 75 | <Compile Include="SpeedtestApplication.cs" /> 76 | <Compile Include="SpeedtestPlugin.cs" /> 77 | </ItemGroup> 78 | <ItemGroup> 79 | <EmbeddedResource Include="PluginConfiguration.json" /> 80 | </ItemGroup> 81 | <ItemGroup> 82 | <None Include="App.config" /> 83 | <None Include="packages.config" /> 84 | </ItemGroup> 85 | <ItemGroup> 86 | <EmbeddedResource Include="Resources\Icon\icon-16.png" /> 87 | <EmbeddedResource Include="Resources\Icon\icon-256.png" /> 88 | <EmbeddedResource Include="Resources\Icon\icon-32.png" /> 89 | <EmbeddedResource Include="Resources\Icon\icon-48.png" /> 90 | </ItemGroup> 91 | <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 92 | </Project> -------------------------------------------------------------------------------- /SpeedtestPlugin/packages.config: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <packages> 3 | <package id="LibZ.Tool" version="1.2.0.0" targetFramework="net472" /> 4 | </packages> -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = {extends: ['@commitlint/config-conventional']}; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "speedtest-plugin", 3 | "version": "1.0.0", 4 | "description": "A plugin for your loupedeck to test your internet speed", 5 | "main": ".versionrc.js", 6 | "scripts": { 7 | "release": "standard-version" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/XeroxDev/Loupedeck-plugin-Speedtest.git" 12 | }, 13 | "keywords": [ 14 | "loupedeck", 15 | "plugin", 16 | "speedtest" 17 | ], 18 | "author": "XeroxDev", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/XeroxDev/Loupedeck-plugin-YTMDesktop/issues" 22 | }, 23 | "homepage": "https://github.com/XeroxDev/Loupedeck-plugin-YTMDesktop#readme", 24 | "devDependencies": { 25 | "@commitlint/cli": "^13.1.0", 26 | "@commitlint/config-conventional": "^13.1.0", 27 | "husky": "3", 28 | "standard-version": "^9.3.1" 29 | }, 30 | "husky": { 31 | "hooks": { 32 | "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" 33 | } 34 | }, 35 | "dependencies": { 36 | "standard-version-updater-yaml": "^1.0.3" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@commitlint/cli': ^13.1.0 5 | '@commitlint/config-conventional': ^13.1.0 6 | husky: '3' 7 | standard-version: ^9.3.1 8 | standard-version-updater-yaml: ^1.0.3 9 | 10 | dependencies: 11 | standard-version-updater-yaml: 1.0.3_standard-version@9.3.2 12 | 13 | devDependencies: 14 | '@commitlint/cli': 13.2.1 15 | '@commitlint/config-conventional': 13.2.0 16 | husky: 3.1.0 17 | standard-version: 9.3.2 18 | 19 | packages: 20 | 21 | /@babel/code-frame/7.16.0: 22 | resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} 23 | engines: {node: '>=6.9.0'} 24 | dependencies: 25 | '@babel/highlight': 7.16.0 26 | dev: true 27 | 28 | /@babel/helper-validator-identifier/7.15.7: 29 | resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} 30 | engines: {node: '>=6.9.0'} 31 | dev: true 32 | 33 | /@babel/highlight/7.16.0: 34 | resolution: {integrity: sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==} 35 | engines: {node: '>=6.9.0'} 36 | dependencies: 37 | '@babel/helper-validator-identifier': 7.15.7 38 | chalk: 2.4.2 39 | js-tokens: 4.0.0 40 | dev: true 41 | 42 | /@commitlint/cli/13.2.1: 43 | resolution: {integrity: sha512-JGzYk2ay5JkRS5w+FLQzr0u/Kih52ds4HPpa3vnwVOQN8Q+S1VYr8Nk/6kRm6uNYsAcC1nejtuDxRdLcLh/9TA==} 44 | engines: {node: '>=v12'} 45 | hasBin: true 46 | dependencies: 47 | '@commitlint/format': 13.2.0 48 | '@commitlint/lint': 13.2.0 49 | '@commitlint/load': 13.2.1 50 | '@commitlint/read': 13.2.0 51 | '@commitlint/types': 13.2.0 52 | lodash: 4.17.21 53 | resolve-from: 5.0.0 54 | resolve-global: 1.0.0 55 | yargs: 17.3.0 56 | dev: true 57 | 58 | /@commitlint/config-conventional/13.2.0: 59 | resolution: {integrity: sha512-7u7DdOiF+3qSdDlbQGfpvCH8DCQdLFvnI2+VucYmmV7E92iD6t9PBj+UjIoSQCaMAzYp27Vkall78AkcXBh6Xw==} 60 | engines: {node: '>=v12'} 61 | dependencies: 62 | conventional-changelog-conventionalcommits: 4.6.1 63 | dev: true 64 | 65 | /@commitlint/ensure/13.2.0: 66 | resolution: {integrity: sha512-rqhT62RehdLTRBu8OrPHnRCCd/7RmHEE4TiTlT4BLlr5ls5jlZhecOQWJ8np872uCNirrJ5NFjnjYYdbkNoW9Q==} 67 | engines: {node: '>=v12'} 68 | dependencies: 69 | '@commitlint/types': 13.2.0 70 | lodash: 4.17.21 71 | dev: true 72 | 73 | /@commitlint/execute-rule/13.2.0: 74 | resolution: {integrity: sha512-6nPwpN0hwTYmsH3WM4hCdN+NrMopgRIuQ0aqZa+jnwMoS/g6ljliQNYfL+m5WO306BaIu1W3yYpbW5aI8gEr0g==} 75 | engines: {node: '>=v12'} 76 | dev: true 77 | 78 | /@commitlint/format/13.2.0: 79 | resolution: {integrity: sha512-yNBQJe6YFhM1pJAta4LvzQxccSKof6axJH7ALYjuhQqfT8AKlad7Y/2SuJ07ioyreNIqwOTuF2UfU8yJ7JzEIQ==} 80 | engines: {node: '>=v12'} 81 | dependencies: 82 | '@commitlint/types': 13.2.0 83 | chalk: 4.1.2 84 | dev: true 85 | 86 | /@commitlint/is-ignored/13.2.0: 87 | resolution: {integrity: sha512-onnx4WctHFPPkHGFFAZBIWRSaNwuhixIIfbwPhcZ6IewwQX5n4jpjwM1GokA7vhlOnQ57W7AavbKUGjzIVtnRQ==} 88 | engines: {node: '>=v12'} 89 | dependencies: 90 | '@commitlint/types': 13.2.0 91 | semver: 7.3.5 92 | dev: true 93 | 94 | /@commitlint/lint/13.2.0: 95 | resolution: {integrity: sha512-5XYkh0e9ehHjA7BxAHFpjPgr1qqbFY8OFG1wpBiAhycbYBtJnQmculA2wcwqTM40YCUBqEvWFdq86jTG8fbkMw==} 96 | engines: {node: '>=v12'} 97 | dependencies: 98 | '@commitlint/is-ignored': 13.2.0 99 | '@commitlint/parse': 13.2.0 100 | '@commitlint/rules': 13.2.0 101 | '@commitlint/types': 13.2.0 102 | dev: true 103 | 104 | /@commitlint/load/13.2.1: 105 | resolution: {integrity: sha512-qlaJkj0hfa9gtWRfCfbgFBTK3GYQRmjZhba4l9mUu4wV9lEZ4ICFlrLtd/8kaLXf/8xbrPhkAPkVFOAqM0YwUQ==} 106 | engines: {node: '>=v12'} 107 | dependencies: 108 | '@commitlint/execute-rule': 13.2.0 109 | '@commitlint/resolve-extends': 13.2.0 110 | '@commitlint/types': 13.2.0 111 | '@endemolshinegroup/cosmiconfig-typescript-loader': 3.0.2_b67f536f129c730ed129a6d21d223ba9 112 | chalk: 4.1.2 113 | cosmiconfig: 7.0.1 114 | lodash: 4.17.21 115 | resolve-from: 5.0.0 116 | typescript: 4.5.2 117 | dev: true 118 | 119 | /@commitlint/message/13.2.0: 120 | resolution: {integrity: sha512-+LlErJj2F2AC86xJb33VJIvSt25xqSF1I0b0GApSgoUtQBeJhx4SxIj1BLvGcLVmbRmbgTzAFq/QylwLId7EhA==} 121 | engines: {node: '>=v12'} 122 | dev: true 123 | 124 | /@commitlint/parse/13.2.0: 125 | resolution: {integrity: sha512-AtfKSQJQADbDhW+kuC5PxOyBANsYCuuJlZRZ2PYslOz2rvWwZ93zt+nKjM4g7C9ETbz0uq4r7/EoOsTJ2nJqfQ==} 126 | engines: {node: '>=v12'} 127 | dependencies: 128 | '@commitlint/types': 13.2.0 129 | conventional-changelog-angular: 5.0.13 130 | conventional-commits-parser: 3.2.3 131 | dev: true 132 | 133 | /@commitlint/read/13.2.0: 134 | resolution: {integrity: sha512-7db5e1Bn3re6hQN0SqygTMF/QX6/MQauoJn3wJiUHE93lvwO6aFQxT3qAlYeyBPwfWsmDz/uSH454jtrSsv3Uw==} 135 | engines: {node: '>=v12'} 136 | dependencies: 137 | '@commitlint/top-level': 13.2.0 138 | '@commitlint/types': 13.2.0 139 | fs-extra: 10.0.0 140 | git-raw-commits: 2.0.10 141 | dev: true 142 | 143 | /@commitlint/resolve-extends/13.2.0: 144 | resolution: {integrity: sha512-HLCMkqMKtvl1yYLZ1Pm0UpFvd0kYjsm1meLOGZ7VkOd9G/XX+Fr1S2G5AT2zeiDw7WUVYK8lGVMNa319bnV+aw==} 145 | engines: {node: '>=v12'} 146 | dependencies: 147 | import-fresh: 3.3.0 148 | lodash: 4.17.21 149 | resolve-from: 5.0.0 150 | resolve-global: 1.0.0 151 | dev: true 152 | 153 | /@commitlint/rules/13.2.0: 154 | resolution: {integrity: sha512-O3A9S7blOzvHfzrJrUQe9JxdtGy154ol/GXHwvd8WfMJ10y5ryBB4b6+0YZ1XhItWzrEASOfOKbD++EdLV90dQ==} 155 | engines: {node: '>=v12'} 156 | dependencies: 157 | '@commitlint/ensure': 13.2.0 158 | '@commitlint/message': 13.2.0 159 | '@commitlint/to-lines': 13.2.0 160 | '@commitlint/types': 13.2.0 161 | execa: 5.1.1 162 | dev: true 163 | 164 | /@commitlint/to-lines/13.2.0: 165 | resolution: {integrity: sha512-ZfWZix2y/CzewReCrj5g0nKOEfj5HW9eBMDrqjJJMPApve00CWv0tYrFCGXuGlv244lW4uvWJt6J/0HLRWsfyg==} 166 | engines: {node: '>=v12'} 167 | dev: true 168 | 169 | /@commitlint/top-level/13.2.0: 170 | resolution: {integrity: sha512-knBvWYbIq6VV6VPHrVeDsxDiJq4Zq6cv5NIYU3iesKAsmK2KlLfsZPa+Ig96Y4AqAPU3zNJwjHxYkz9qxdBbfA==} 171 | engines: {node: '>=v12'} 172 | dependencies: 173 | find-up: 5.0.0 174 | dev: true 175 | 176 | /@commitlint/types/13.2.0: 177 | resolution: {integrity: sha512-RRVHEqmk1qn/dIaSQhvuca6k/6Z54G+r/KyimZ8gnAFielGiGUpsFRhIY3qhd5rXClVxDaa3nlcyTWckSccotQ==} 178 | engines: {node: '>=v12'} 179 | dependencies: 180 | chalk: 4.1.2 181 | dev: true 182 | 183 | /@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_b67f536f129c730ed129a6d21d223ba9: 184 | resolution: {integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==} 185 | engines: {node: '>=10.0.0'} 186 | peerDependencies: 187 | cosmiconfig: '>=6' 188 | dependencies: 189 | cosmiconfig: 7.0.1 190 | lodash.get: 4.4.2 191 | make-error: 1.3.6 192 | ts-node: 9.1.1_typescript@4.5.2 193 | tslib: 2.3.1 194 | transitivePeerDependencies: 195 | - typescript 196 | dev: true 197 | 198 | /@hutson/parse-repository-url/3.0.2: 199 | resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} 200 | engines: {node: '>=6.9.0'} 201 | dev: true 202 | 203 | /@types/minimist/1.2.2: 204 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} 205 | dev: true 206 | 207 | /@types/normalize-package-data/2.4.1: 208 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 209 | dev: true 210 | 211 | /@types/parse-json/4.0.0: 212 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} 213 | dev: true 214 | 215 | /JSONStream/1.3.5: 216 | resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} 217 | hasBin: true 218 | dependencies: 219 | jsonparse: 1.3.1 220 | through: 2.3.8 221 | dev: true 222 | 223 | /add-stream/1.0.0: 224 | resolution: {integrity: sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=} 225 | dev: true 226 | 227 | /ansi-regex/5.0.1: 228 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 229 | engines: {node: '>=8'} 230 | dev: true 231 | 232 | /ansi-styles/3.2.1: 233 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 234 | engines: {node: '>=4'} 235 | dependencies: 236 | color-convert: 1.9.3 237 | dev: true 238 | 239 | /ansi-styles/4.3.0: 240 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 241 | engines: {node: '>=8'} 242 | dependencies: 243 | color-convert: 2.0.1 244 | dev: true 245 | 246 | /arg/4.1.3: 247 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 248 | dev: true 249 | 250 | /argparse/1.0.10: 251 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 252 | dependencies: 253 | sprintf-js: 1.0.3 254 | dev: true 255 | 256 | /array-ify/1.0.0: 257 | resolution: {integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=} 258 | dev: true 259 | 260 | /arrify/1.0.1: 261 | resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} 262 | engines: {node: '>=0.10.0'} 263 | dev: true 264 | 265 | /balanced-match/1.0.2: 266 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 267 | dev: true 268 | 269 | /brace-expansion/1.1.11: 270 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 271 | dependencies: 272 | balanced-match: 1.0.2 273 | concat-map: 0.0.1 274 | dev: true 275 | 276 | /buffer-from/1.1.2: 277 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 278 | dev: true 279 | 280 | /caller-callsite/2.0.0: 281 | resolution: {integrity: sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=} 282 | engines: {node: '>=4'} 283 | dependencies: 284 | callsites: 2.0.0 285 | dev: true 286 | 287 | /caller-path/2.0.0: 288 | resolution: {integrity: sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=} 289 | engines: {node: '>=4'} 290 | dependencies: 291 | caller-callsite: 2.0.0 292 | dev: true 293 | 294 | /callsites/2.0.0: 295 | resolution: {integrity: sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=} 296 | engines: {node: '>=4'} 297 | dev: true 298 | 299 | /callsites/3.1.0: 300 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 301 | engines: {node: '>=6'} 302 | dev: true 303 | 304 | /camelcase-keys/6.2.2: 305 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 306 | engines: {node: '>=8'} 307 | dependencies: 308 | camelcase: 5.3.1 309 | map-obj: 4.3.0 310 | quick-lru: 4.0.1 311 | dev: true 312 | 313 | /camelcase/5.3.1: 314 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 315 | engines: {node: '>=6'} 316 | dev: true 317 | 318 | /chalk/2.4.2: 319 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 320 | engines: {node: '>=4'} 321 | dependencies: 322 | ansi-styles: 3.2.1 323 | escape-string-regexp: 1.0.5 324 | supports-color: 5.5.0 325 | dev: true 326 | 327 | /chalk/4.1.2: 328 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 329 | engines: {node: '>=10'} 330 | dependencies: 331 | ansi-styles: 4.3.0 332 | supports-color: 7.2.0 333 | dev: true 334 | 335 | /ci-info/2.0.0: 336 | resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} 337 | dev: true 338 | 339 | /cliui/7.0.4: 340 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 341 | dependencies: 342 | string-width: 4.2.3 343 | strip-ansi: 6.0.1 344 | wrap-ansi: 7.0.0 345 | dev: true 346 | 347 | /color-convert/1.9.3: 348 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 349 | dependencies: 350 | color-name: 1.1.3 351 | dev: true 352 | 353 | /color-convert/2.0.1: 354 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 355 | engines: {node: '>=7.0.0'} 356 | dependencies: 357 | color-name: 1.1.4 358 | dev: true 359 | 360 | /color-name/1.1.3: 361 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 362 | dev: true 363 | 364 | /color-name/1.1.4: 365 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 366 | dev: true 367 | 368 | /compare-func/2.0.0: 369 | resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} 370 | dependencies: 371 | array-ify: 1.0.0 372 | dot-prop: 5.3.0 373 | dev: true 374 | 375 | /concat-map/0.0.1: 376 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 377 | dev: true 378 | 379 | /concat-stream/2.0.0: 380 | resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} 381 | engines: {'0': node >= 6.0} 382 | dependencies: 383 | buffer-from: 1.1.2 384 | inherits: 2.0.4 385 | readable-stream: 3.6.0 386 | typedarray: 0.0.6 387 | dev: true 388 | 389 | /conventional-changelog-angular/5.0.13: 390 | resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} 391 | engines: {node: '>=10'} 392 | dependencies: 393 | compare-func: 2.0.0 394 | q: 1.5.1 395 | dev: true 396 | 397 | /conventional-changelog-atom/2.0.8: 398 | resolution: {integrity: sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==} 399 | engines: {node: '>=10'} 400 | dependencies: 401 | q: 1.5.1 402 | dev: true 403 | 404 | /conventional-changelog-codemirror/2.0.8: 405 | resolution: {integrity: sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==} 406 | engines: {node: '>=10'} 407 | dependencies: 408 | q: 1.5.1 409 | dev: true 410 | 411 | /conventional-changelog-config-spec/2.1.0: 412 | resolution: {integrity: sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==} 413 | dev: true 414 | 415 | /conventional-changelog-conventionalcommits/4.6.1: 416 | resolution: {integrity: sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==} 417 | engines: {node: '>=10'} 418 | dependencies: 419 | compare-func: 2.0.0 420 | lodash: 4.17.21 421 | q: 1.5.1 422 | dev: true 423 | 424 | /conventional-changelog-core/4.2.4: 425 | resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==} 426 | engines: {node: '>=10'} 427 | dependencies: 428 | add-stream: 1.0.0 429 | conventional-changelog-writer: 5.0.0 430 | conventional-commits-parser: 3.2.3 431 | dateformat: 3.0.3 432 | get-pkg-repo: 4.2.1 433 | git-raw-commits: 2.0.10 434 | git-remote-origin-url: 2.0.0 435 | git-semver-tags: 4.1.1 436 | lodash: 4.17.21 437 | normalize-package-data: 3.0.3 438 | q: 1.5.1 439 | read-pkg: 3.0.0 440 | read-pkg-up: 3.0.0 441 | through2: 4.0.2 442 | dev: true 443 | 444 | /conventional-changelog-ember/2.0.9: 445 | resolution: {integrity: sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==} 446 | engines: {node: '>=10'} 447 | dependencies: 448 | q: 1.5.1 449 | dev: true 450 | 451 | /conventional-changelog-eslint/3.0.9: 452 | resolution: {integrity: sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==} 453 | engines: {node: '>=10'} 454 | dependencies: 455 | q: 1.5.1 456 | dev: true 457 | 458 | /conventional-changelog-express/2.0.6: 459 | resolution: {integrity: sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==} 460 | engines: {node: '>=10'} 461 | dependencies: 462 | q: 1.5.1 463 | dev: true 464 | 465 | /conventional-changelog-jquery/3.0.11: 466 | resolution: {integrity: sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==} 467 | engines: {node: '>=10'} 468 | dependencies: 469 | q: 1.5.1 470 | dev: true 471 | 472 | /conventional-changelog-jshint/2.0.9: 473 | resolution: {integrity: sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==} 474 | engines: {node: '>=10'} 475 | dependencies: 476 | compare-func: 2.0.0 477 | q: 1.5.1 478 | dev: true 479 | 480 | /conventional-changelog-preset-loader/2.3.4: 481 | resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==} 482 | engines: {node: '>=10'} 483 | dev: true 484 | 485 | /conventional-changelog-writer/5.0.0: 486 | resolution: {integrity: sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g==} 487 | engines: {node: '>=10'} 488 | hasBin: true 489 | dependencies: 490 | conventional-commits-filter: 2.0.7 491 | dateformat: 3.0.3 492 | handlebars: 4.7.7 493 | json-stringify-safe: 5.0.1 494 | lodash: 4.17.21 495 | meow: 8.1.2 496 | semver: 6.3.0 497 | split: 1.0.1 498 | through2: 4.0.2 499 | dev: true 500 | 501 | /conventional-changelog/3.1.24: 502 | resolution: {integrity: sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==} 503 | engines: {node: '>=10'} 504 | dependencies: 505 | conventional-changelog-angular: 5.0.13 506 | conventional-changelog-atom: 2.0.8 507 | conventional-changelog-codemirror: 2.0.8 508 | conventional-changelog-conventionalcommits: 4.6.1 509 | conventional-changelog-core: 4.2.4 510 | conventional-changelog-ember: 2.0.9 511 | conventional-changelog-eslint: 3.0.9 512 | conventional-changelog-express: 2.0.6 513 | conventional-changelog-jquery: 3.0.11 514 | conventional-changelog-jshint: 2.0.9 515 | conventional-changelog-preset-loader: 2.3.4 516 | dev: true 517 | 518 | /conventional-commits-filter/2.0.7: 519 | resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==} 520 | engines: {node: '>=10'} 521 | dependencies: 522 | lodash.ismatch: 4.4.0 523 | modify-values: 1.0.1 524 | dev: true 525 | 526 | /conventional-commits-parser/3.2.3: 527 | resolution: {integrity: sha512-YyRDR7On9H07ICFpRm/igcdjIqebXbvf4Cff+Pf0BrBys1i1EOzx9iFXNlAbdrLAR8jf7bkUYkDAr8pEy0q4Pw==} 528 | engines: {node: '>=10'} 529 | hasBin: true 530 | dependencies: 531 | is-text-path: 1.0.1 532 | JSONStream: 1.3.5 533 | lodash: 4.17.21 534 | meow: 8.1.2 535 | split2: 3.2.2 536 | through2: 4.0.2 537 | dev: true 538 | 539 | /conventional-recommended-bump/6.1.0: 540 | resolution: {integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==} 541 | engines: {node: '>=10'} 542 | hasBin: true 543 | dependencies: 544 | concat-stream: 2.0.0 545 | conventional-changelog-preset-loader: 2.3.4 546 | conventional-commits-filter: 2.0.7 547 | conventional-commits-parser: 3.2.3 548 | git-raw-commits: 2.0.10 549 | git-semver-tags: 4.1.1 550 | meow: 8.1.2 551 | q: 1.5.1 552 | dev: true 553 | 554 | /core-util-is/1.0.3: 555 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 556 | dev: true 557 | 558 | /cosmiconfig/5.2.1: 559 | resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} 560 | engines: {node: '>=4'} 561 | dependencies: 562 | import-fresh: 2.0.0 563 | is-directory: 0.3.1 564 | js-yaml: 3.14.1 565 | parse-json: 4.0.0 566 | dev: true 567 | 568 | /cosmiconfig/7.0.1: 569 | resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} 570 | engines: {node: '>=10'} 571 | dependencies: 572 | '@types/parse-json': 4.0.0 573 | import-fresh: 3.3.0 574 | parse-json: 5.2.0 575 | path-type: 4.0.0 576 | yaml: 1.10.2 577 | dev: true 578 | 579 | /create-require/1.1.1: 580 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 581 | dev: true 582 | 583 | /cross-spawn/6.0.5: 584 | resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} 585 | engines: {node: '>=4.8'} 586 | dependencies: 587 | nice-try: 1.0.5 588 | path-key: 2.0.1 589 | semver: 5.7.1 590 | shebang-command: 1.2.0 591 | which: 1.3.1 592 | dev: true 593 | 594 | /cross-spawn/7.0.3: 595 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 596 | engines: {node: '>= 8'} 597 | dependencies: 598 | path-key: 3.1.1 599 | shebang-command: 2.0.0 600 | which: 2.0.2 601 | dev: true 602 | 603 | /dargs/7.0.0: 604 | resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} 605 | engines: {node: '>=8'} 606 | dev: true 607 | 608 | /dateformat/3.0.3: 609 | resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} 610 | dev: true 611 | 612 | /decamelize-keys/1.1.0: 613 | resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} 614 | engines: {node: '>=0.10.0'} 615 | dependencies: 616 | decamelize: 1.2.0 617 | map-obj: 1.0.1 618 | dev: true 619 | 620 | /decamelize/1.2.0: 621 | resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} 622 | engines: {node: '>=0.10.0'} 623 | dev: true 624 | 625 | /detect-indent/6.1.0: 626 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 627 | engines: {node: '>=8'} 628 | dev: true 629 | 630 | /detect-newline/3.1.0: 631 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 632 | engines: {node: '>=8'} 633 | dev: true 634 | 635 | /diff/4.0.2: 636 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 637 | engines: {node: '>=0.3.1'} 638 | dev: true 639 | 640 | /dot-prop/5.3.0: 641 | resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} 642 | engines: {node: '>=8'} 643 | dependencies: 644 | is-obj: 2.0.0 645 | dev: true 646 | 647 | /dotgitignore/2.1.0: 648 | resolution: {integrity: sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==} 649 | engines: {node: '>=6'} 650 | dependencies: 651 | find-up: 3.0.0 652 | minimatch: 3.0.4 653 | dev: true 654 | 655 | /emoji-regex/8.0.0: 656 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 657 | dev: true 658 | 659 | /end-of-stream/1.4.4: 660 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 661 | dependencies: 662 | once: 1.4.0 663 | dev: true 664 | 665 | /error-ex/1.3.2: 666 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 667 | dependencies: 668 | is-arrayish: 0.2.1 669 | dev: true 670 | 671 | /escalade/3.1.1: 672 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 673 | engines: {node: '>=6'} 674 | dev: true 675 | 676 | /escape-string-regexp/1.0.5: 677 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 678 | engines: {node: '>=0.8.0'} 679 | dev: true 680 | 681 | /esprima/4.0.1: 682 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 683 | engines: {node: '>=4'} 684 | hasBin: true 685 | dev: true 686 | 687 | /execa/1.0.0: 688 | resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} 689 | engines: {node: '>=6'} 690 | dependencies: 691 | cross-spawn: 6.0.5 692 | get-stream: 4.1.0 693 | is-stream: 1.1.0 694 | npm-run-path: 2.0.2 695 | p-finally: 1.0.0 696 | signal-exit: 3.0.6 697 | strip-eof: 1.0.0 698 | dev: true 699 | 700 | /execa/5.1.1: 701 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 702 | engines: {node: '>=10'} 703 | dependencies: 704 | cross-spawn: 7.0.3 705 | get-stream: 6.0.1 706 | human-signals: 2.1.0 707 | is-stream: 2.0.1 708 | merge-stream: 2.0.0 709 | npm-run-path: 4.0.1 710 | onetime: 5.1.2 711 | signal-exit: 3.0.6 712 | strip-final-newline: 2.0.0 713 | dev: true 714 | 715 | /figures/3.2.0: 716 | resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} 717 | engines: {node: '>=8'} 718 | dependencies: 719 | escape-string-regexp: 1.0.5 720 | dev: true 721 | 722 | /find-up/2.1.0: 723 | resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} 724 | engines: {node: '>=4'} 725 | dependencies: 726 | locate-path: 2.0.0 727 | dev: true 728 | 729 | /find-up/3.0.0: 730 | resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} 731 | engines: {node: '>=6'} 732 | dependencies: 733 | locate-path: 3.0.0 734 | dev: true 735 | 736 | /find-up/4.1.0: 737 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 738 | engines: {node: '>=8'} 739 | dependencies: 740 | locate-path: 5.0.0 741 | path-exists: 4.0.0 742 | dev: true 743 | 744 | /find-up/5.0.0: 745 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 746 | engines: {node: '>=10'} 747 | dependencies: 748 | locate-path: 6.0.0 749 | path-exists: 4.0.0 750 | dev: true 751 | 752 | /fs-access/1.0.1: 753 | resolution: {integrity: sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=} 754 | engines: {node: '>=0.10.0'} 755 | dependencies: 756 | null-check: 1.0.0 757 | dev: true 758 | 759 | /fs-extra/10.0.0: 760 | resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} 761 | engines: {node: '>=12'} 762 | dependencies: 763 | graceful-fs: 4.2.8 764 | jsonfile: 6.1.0 765 | universalify: 2.0.0 766 | dev: true 767 | 768 | /function-bind/1.1.1: 769 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 770 | dev: true 771 | 772 | /get-caller-file/2.0.5: 773 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 774 | engines: {node: 6.* || 8.* || >= 10.*} 775 | dev: true 776 | 777 | /get-pkg-repo/4.2.1: 778 | resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} 779 | engines: {node: '>=6.9.0'} 780 | hasBin: true 781 | dependencies: 782 | '@hutson/parse-repository-url': 3.0.2 783 | hosted-git-info: 4.0.2 784 | through2: 2.0.5 785 | yargs: 16.2.0 786 | dev: true 787 | 788 | /get-stdin/7.0.0: 789 | resolution: {integrity: sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==} 790 | engines: {node: '>=8'} 791 | dev: true 792 | 793 | /get-stream/4.1.0: 794 | resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} 795 | engines: {node: '>=6'} 796 | dependencies: 797 | pump: 3.0.0 798 | dev: true 799 | 800 | /get-stream/6.0.1: 801 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 802 | engines: {node: '>=10'} 803 | dev: true 804 | 805 | /git-raw-commits/2.0.10: 806 | resolution: {integrity: sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==} 807 | engines: {node: '>=10'} 808 | hasBin: true 809 | dependencies: 810 | dargs: 7.0.0 811 | lodash: 4.17.21 812 | meow: 8.1.2 813 | split2: 3.2.2 814 | through2: 4.0.2 815 | dev: true 816 | 817 | /git-remote-origin-url/2.0.0: 818 | resolution: {integrity: sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=} 819 | engines: {node: '>=4'} 820 | dependencies: 821 | gitconfiglocal: 1.0.0 822 | pify: 2.3.0 823 | dev: true 824 | 825 | /git-semver-tags/4.1.1: 826 | resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==} 827 | engines: {node: '>=10'} 828 | hasBin: true 829 | dependencies: 830 | meow: 8.1.2 831 | semver: 6.3.0 832 | dev: true 833 | 834 | /gitconfiglocal/1.0.0: 835 | resolution: {integrity: sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=} 836 | dependencies: 837 | ini: 1.3.8 838 | dev: true 839 | 840 | /global-dirs/0.1.1: 841 | resolution: {integrity: sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=} 842 | engines: {node: '>=4'} 843 | dependencies: 844 | ini: 1.3.8 845 | dev: true 846 | 847 | /graceful-fs/4.2.8: 848 | resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} 849 | dev: true 850 | 851 | /handlebars/4.7.7: 852 | resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} 853 | engines: {node: '>=0.4.7'} 854 | hasBin: true 855 | dependencies: 856 | minimist: 1.2.5 857 | neo-async: 2.6.2 858 | source-map: 0.6.1 859 | wordwrap: 1.0.0 860 | optionalDependencies: 861 | uglify-js: 3.14.4 862 | dev: true 863 | 864 | /hard-rejection/2.1.0: 865 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 866 | engines: {node: '>=6'} 867 | dev: true 868 | 869 | /has-flag/3.0.0: 870 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 871 | engines: {node: '>=4'} 872 | dev: true 873 | 874 | /has-flag/4.0.0: 875 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 876 | engines: {node: '>=8'} 877 | dev: true 878 | 879 | /has/1.0.3: 880 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 881 | engines: {node: '>= 0.4.0'} 882 | dependencies: 883 | function-bind: 1.1.1 884 | dev: true 885 | 886 | /hosted-git-info/2.8.9: 887 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 888 | dev: true 889 | 890 | /hosted-git-info/4.0.2: 891 | resolution: {integrity: sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==} 892 | engines: {node: '>=10'} 893 | dependencies: 894 | lru-cache: 6.0.0 895 | dev: true 896 | 897 | /human-signals/2.1.0: 898 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 899 | engines: {node: '>=10.17.0'} 900 | dev: true 901 | 902 | /husky/3.1.0: 903 | resolution: {integrity: sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ==} 904 | engines: {node: '>=8.6.0'} 905 | hasBin: true 906 | requiresBuild: true 907 | dependencies: 908 | chalk: 2.4.2 909 | ci-info: 2.0.0 910 | cosmiconfig: 5.2.1 911 | execa: 1.0.0 912 | get-stdin: 7.0.0 913 | opencollective-postinstall: 2.0.3 914 | pkg-dir: 4.2.0 915 | please-upgrade-node: 3.2.0 916 | read-pkg: 5.2.0 917 | run-node: 1.0.0 918 | slash: 3.0.0 919 | dev: true 920 | 921 | /import-fresh/2.0.0: 922 | resolution: {integrity: sha1-2BNVwVYS04bGH53dOSLUMEgipUY=} 923 | engines: {node: '>=4'} 924 | dependencies: 925 | caller-path: 2.0.0 926 | resolve-from: 3.0.0 927 | dev: true 928 | 929 | /import-fresh/3.3.0: 930 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 931 | engines: {node: '>=6'} 932 | dependencies: 933 | parent-module: 1.0.1 934 | resolve-from: 4.0.0 935 | dev: true 936 | 937 | /indent-string/4.0.0: 938 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 939 | engines: {node: '>=8'} 940 | dev: true 941 | 942 | /inherits/2.0.4: 943 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 944 | dev: true 945 | 946 | /ini/1.3.8: 947 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 948 | dev: true 949 | 950 | /is-arrayish/0.2.1: 951 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} 952 | dev: true 953 | 954 | /is-core-module/2.8.0: 955 | resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} 956 | dependencies: 957 | has: 1.0.3 958 | dev: true 959 | 960 | /is-directory/0.3.1: 961 | resolution: {integrity: sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=} 962 | engines: {node: '>=0.10.0'} 963 | dev: true 964 | 965 | /is-fullwidth-code-point/3.0.0: 966 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 967 | engines: {node: '>=8'} 968 | dev: true 969 | 970 | /is-obj/2.0.0: 971 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} 972 | engines: {node: '>=8'} 973 | dev: true 974 | 975 | /is-plain-obj/1.1.0: 976 | resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} 977 | engines: {node: '>=0.10.0'} 978 | dev: true 979 | 980 | /is-stream/1.1.0: 981 | resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} 982 | engines: {node: '>=0.10.0'} 983 | dev: true 984 | 985 | /is-stream/2.0.1: 986 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 987 | engines: {node: '>=8'} 988 | dev: true 989 | 990 | /is-text-path/1.0.1: 991 | resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} 992 | engines: {node: '>=0.10.0'} 993 | dependencies: 994 | text-extensions: 1.9.0 995 | dev: true 996 | 997 | /isarray/1.0.0: 998 | resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} 999 | dev: true 1000 | 1001 | /isexe/2.0.0: 1002 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1003 | dev: true 1004 | 1005 | /js-tokens/4.0.0: 1006 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1007 | dev: true 1008 | 1009 | /js-yaml/3.14.1: 1010 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1011 | hasBin: true 1012 | dependencies: 1013 | argparse: 1.0.10 1014 | esprima: 4.0.1 1015 | dev: true 1016 | 1017 | /json-parse-better-errors/1.0.2: 1018 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} 1019 | dev: true 1020 | 1021 | /json-parse-even-better-errors/2.3.1: 1022 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1023 | dev: true 1024 | 1025 | /json-stringify-safe/5.0.1: 1026 | resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} 1027 | dev: true 1028 | 1029 | /jsonfile/6.1.0: 1030 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1031 | dependencies: 1032 | universalify: 2.0.0 1033 | optionalDependencies: 1034 | graceful-fs: 4.2.8 1035 | dev: true 1036 | 1037 | /jsonparse/1.3.1: 1038 | resolution: {integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=} 1039 | engines: {'0': node >= 0.2.0} 1040 | dev: true 1041 | 1042 | /kind-of/6.0.3: 1043 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1044 | engines: {node: '>=0.10.0'} 1045 | dev: true 1046 | 1047 | /lines-and-columns/1.2.4: 1048 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1049 | dev: true 1050 | 1051 | /load-json-file/4.0.0: 1052 | resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} 1053 | engines: {node: '>=4'} 1054 | dependencies: 1055 | graceful-fs: 4.2.8 1056 | parse-json: 4.0.0 1057 | pify: 3.0.0 1058 | strip-bom: 3.0.0 1059 | dev: true 1060 | 1061 | /locate-path/2.0.0: 1062 | resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} 1063 | engines: {node: '>=4'} 1064 | dependencies: 1065 | p-locate: 2.0.0 1066 | path-exists: 3.0.0 1067 | dev: true 1068 | 1069 | /locate-path/3.0.0: 1070 | resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} 1071 | engines: {node: '>=6'} 1072 | dependencies: 1073 | p-locate: 3.0.0 1074 | path-exists: 3.0.0 1075 | dev: true 1076 | 1077 | /locate-path/5.0.0: 1078 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1079 | engines: {node: '>=8'} 1080 | dependencies: 1081 | p-locate: 4.1.0 1082 | dev: true 1083 | 1084 | /locate-path/6.0.0: 1085 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1086 | engines: {node: '>=10'} 1087 | dependencies: 1088 | p-locate: 5.0.0 1089 | dev: true 1090 | 1091 | /lodash.get/4.4.2: 1092 | resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=} 1093 | dev: true 1094 | 1095 | /lodash.ismatch/4.4.0: 1096 | resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} 1097 | dev: true 1098 | 1099 | /lodash/4.17.21: 1100 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1101 | dev: true 1102 | 1103 | /lru-cache/6.0.0: 1104 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1105 | engines: {node: '>=10'} 1106 | dependencies: 1107 | yallist: 4.0.0 1108 | dev: true 1109 | 1110 | /make-error/1.3.6: 1111 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1112 | dev: true 1113 | 1114 | /map-obj/1.0.1: 1115 | resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} 1116 | engines: {node: '>=0.10.0'} 1117 | dev: true 1118 | 1119 | /map-obj/4.3.0: 1120 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 1121 | engines: {node: '>=8'} 1122 | dev: true 1123 | 1124 | /meow/8.1.2: 1125 | resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} 1126 | engines: {node: '>=10'} 1127 | dependencies: 1128 | '@types/minimist': 1.2.2 1129 | camelcase-keys: 6.2.2 1130 | decamelize-keys: 1.1.0 1131 | hard-rejection: 2.1.0 1132 | minimist-options: 4.1.0 1133 | normalize-package-data: 3.0.3 1134 | read-pkg-up: 7.0.1 1135 | redent: 3.0.0 1136 | trim-newlines: 3.0.1 1137 | type-fest: 0.18.1 1138 | yargs-parser: 20.2.9 1139 | dev: true 1140 | 1141 | /merge-stream/2.0.0: 1142 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1143 | dev: true 1144 | 1145 | /mimic-fn/2.1.0: 1146 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1147 | engines: {node: '>=6'} 1148 | dev: true 1149 | 1150 | /min-indent/1.0.1: 1151 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1152 | engines: {node: '>=4'} 1153 | dev: true 1154 | 1155 | /minimatch/3.0.4: 1156 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 1157 | dependencies: 1158 | brace-expansion: 1.1.11 1159 | dev: true 1160 | 1161 | /minimist-options/4.1.0: 1162 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 1163 | engines: {node: '>= 6'} 1164 | dependencies: 1165 | arrify: 1.0.1 1166 | is-plain-obj: 1.1.0 1167 | kind-of: 6.0.3 1168 | dev: true 1169 | 1170 | /minimist/1.2.5: 1171 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 1172 | dev: true 1173 | 1174 | /modify-values/1.0.1: 1175 | resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} 1176 | engines: {node: '>=0.10.0'} 1177 | dev: true 1178 | 1179 | /neo-async/2.6.2: 1180 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 1181 | dev: true 1182 | 1183 | /nice-try/1.0.5: 1184 | resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} 1185 | dev: true 1186 | 1187 | /normalize-package-data/2.5.0: 1188 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1189 | dependencies: 1190 | hosted-git-info: 2.8.9 1191 | resolve: 1.20.0 1192 | semver: 5.7.1 1193 | validate-npm-package-license: 3.0.4 1194 | dev: true 1195 | 1196 | /normalize-package-data/3.0.3: 1197 | resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} 1198 | engines: {node: '>=10'} 1199 | dependencies: 1200 | hosted-git-info: 4.0.2 1201 | is-core-module: 2.8.0 1202 | semver: 7.3.5 1203 | validate-npm-package-license: 3.0.4 1204 | dev: true 1205 | 1206 | /npm-run-path/2.0.2: 1207 | resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=} 1208 | engines: {node: '>=4'} 1209 | dependencies: 1210 | path-key: 2.0.1 1211 | dev: true 1212 | 1213 | /npm-run-path/4.0.1: 1214 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1215 | engines: {node: '>=8'} 1216 | dependencies: 1217 | path-key: 3.1.1 1218 | dev: true 1219 | 1220 | /null-check/1.0.0: 1221 | resolution: {integrity: sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=} 1222 | engines: {node: '>=0.10.0'} 1223 | dev: true 1224 | 1225 | /once/1.4.0: 1226 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 1227 | dependencies: 1228 | wrappy: 1.0.2 1229 | dev: true 1230 | 1231 | /onetime/5.1.2: 1232 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1233 | engines: {node: '>=6'} 1234 | dependencies: 1235 | mimic-fn: 2.1.0 1236 | dev: true 1237 | 1238 | /opencollective-postinstall/2.0.3: 1239 | resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} 1240 | hasBin: true 1241 | dev: true 1242 | 1243 | /p-finally/1.0.0: 1244 | resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} 1245 | engines: {node: '>=4'} 1246 | dev: true 1247 | 1248 | /p-limit/1.3.0: 1249 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} 1250 | engines: {node: '>=4'} 1251 | dependencies: 1252 | p-try: 1.0.0 1253 | dev: true 1254 | 1255 | /p-limit/2.3.0: 1256 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1257 | engines: {node: '>=6'} 1258 | dependencies: 1259 | p-try: 2.2.0 1260 | dev: true 1261 | 1262 | /p-limit/3.1.0: 1263 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1264 | engines: {node: '>=10'} 1265 | dependencies: 1266 | yocto-queue: 0.1.0 1267 | dev: true 1268 | 1269 | /p-locate/2.0.0: 1270 | resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} 1271 | engines: {node: '>=4'} 1272 | dependencies: 1273 | p-limit: 1.3.0 1274 | dev: true 1275 | 1276 | /p-locate/3.0.0: 1277 | resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} 1278 | engines: {node: '>=6'} 1279 | dependencies: 1280 | p-limit: 2.3.0 1281 | dev: true 1282 | 1283 | /p-locate/4.1.0: 1284 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1285 | engines: {node: '>=8'} 1286 | dependencies: 1287 | p-limit: 2.3.0 1288 | dev: true 1289 | 1290 | /p-locate/5.0.0: 1291 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1292 | engines: {node: '>=10'} 1293 | dependencies: 1294 | p-limit: 3.1.0 1295 | dev: true 1296 | 1297 | /p-try/1.0.0: 1298 | resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} 1299 | engines: {node: '>=4'} 1300 | dev: true 1301 | 1302 | /p-try/2.2.0: 1303 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1304 | engines: {node: '>=6'} 1305 | dev: true 1306 | 1307 | /parent-module/1.0.1: 1308 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1309 | engines: {node: '>=6'} 1310 | dependencies: 1311 | callsites: 3.1.0 1312 | dev: true 1313 | 1314 | /parse-json/4.0.0: 1315 | resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} 1316 | engines: {node: '>=4'} 1317 | dependencies: 1318 | error-ex: 1.3.2 1319 | json-parse-better-errors: 1.0.2 1320 | dev: true 1321 | 1322 | /parse-json/5.2.0: 1323 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1324 | engines: {node: '>=8'} 1325 | dependencies: 1326 | '@babel/code-frame': 7.16.0 1327 | error-ex: 1.3.2 1328 | json-parse-even-better-errors: 2.3.1 1329 | lines-and-columns: 1.2.4 1330 | dev: true 1331 | 1332 | /path-exists/3.0.0: 1333 | resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} 1334 | engines: {node: '>=4'} 1335 | dev: true 1336 | 1337 | /path-exists/4.0.0: 1338 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1339 | engines: {node: '>=8'} 1340 | dev: true 1341 | 1342 | /path-key/2.0.1: 1343 | resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=} 1344 | engines: {node: '>=4'} 1345 | dev: true 1346 | 1347 | /path-key/3.1.1: 1348 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1349 | engines: {node: '>=8'} 1350 | dev: true 1351 | 1352 | /path-parse/1.0.7: 1353 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1354 | dev: true 1355 | 1356 | /path-type/3.0.0: 1357 | resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} 1358 | engines: {node: '>=4'} 1359 | dependencies: 1360 | pify: 3.0.0 1361 | dev: true 1362 | 1363 | /path-type/4.0.0: 1364 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1365 | engines: {node: '>=8'} 1366 | dev: true 1367 | 1368 | /pify/2.3.0: 1369 | resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} 1370 | engines: {node: '>=0.10.0'} 1371 | dev: true 1372 | 1373 | /pify/3.0.0: 1374 | resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} 1375 | engines: {node: '>=4'} 1376 | dev: true 1377 | 1378 | /pkg-dir/4.2.0: 1379 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1380 | engines: {node: '>=8'} 1381 | dependencies: 1382 | find-up: 4.1.0 1383 | dev: true 1384 | 1385 | /please-upgrade-node/3.2.0: 1386 | resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} 1387 | dependencies: 1388 | semver-compare: 1.0.0 1389 | dev: true 1390 | 1391 | /process-nextick-args/2.0.1: 1392 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 1393 | dev: true 1394 | 1395 | /pump/3.0.0: 1396 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 1397 | dependencies: 1398 | end-of-stream: 1.4.4 1399 | once: 1.4.0 1400 | dev: true 1401 | 1402 | /q/1.5.1: 1403 | resolution: {integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=} 1404 | engines: {node: '>=0.6.0', teleport: '>=0.2.0'} 1405 | dev: true 1406 | 1407 | /quick-lru/4.0.1: 1408 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 1409 | engines: {node: '>=8'} 1410 | dev: true 1411 | 1412 | /read-pkg-up/3.0.0: 1413 | resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} 1414 | engines: {node: '>=4'} 1415 | dependencies: 1416 | find-up: 2.1.0 1417 | read-pkg: 3.0.0 1418 | dev: true 1419 | 1420 | /read-pkg-up/7.0.1: 1421 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 1422 | engines: {node: '>=8'} 1423 | dependencies: 1424 | find-up: 4.1.0 1425 | read-pkg: 5.2.0 1426 | type-fest: 0.8.1 1427 | dev: true 1428 | 1429 | /read-pkg/3.0.0: 1430 | resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} 1431 | engines: {node: '>=4'} 1432 | dependencies: 1433 | load-json-file: 4.0.0 1434 | normalize-package-data: 2.5.0 1435 | path-type: 3.0.0 1436 | dev: true 1437 | 1438 | /read-pkg/5.2.0: 1439 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 1440 | engines: {node: '>=8'} 1441 | dependencies: 1442 | '@types/normalize-package-data': 2.4.1 1443 | normalize-package-data: 2.5.0 1444 | parse-json: 5.2.0 1445 | type-fest: 0.6.0 1446 | dev: true 1447 | 1448 | /readable-stream/2.3.7: 1449 | resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} 1450 | dependencies: 1451 | core-util-is: 1.0.3 1452 | inherits: 2.0.4 1453 | isarray: 1.0.0 1454 | process-nextick-args: 2.0.1 1455 | safe-buffer: 5.1.2 1456 | string_decoder: 1.1.1 1457 | util-deprecate: 1.0.2 1458 | dev: true 1459 | 1460 | /readable-stream/3.6.0: 1461 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 1462 | engines: {node: '>= 6'} 1463 | dependencies: 1464 | inherits: 2.0.4 1465 | string_decoder: 1.3.0 1466 | util-deprecate: 1.0.2 1467 | dev: true 1468 | 1469 | /redent/3.0.0: 1470 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 1471 | engines: {node: '>=8'} 1472 | dependencies: 1473 | indent-string: 4.0.0 1474 | strip-indent: 3.0.0 1475 | dev: true 1476 | 1477 | /require-directory/2.1.1: 1478 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 1479 | engines: {node: '>=0.10.0'} 1480 | dev: true 1481 | 1482 | /resolve-from/3.0.0: 1483 | resolution: {integrity: sha1-six699nWiBvItuZTM17rywoYh0g=} 1484 | engines: {node: '>=4'} 1485 | dev: true 1486 | 1487 | /resolve-from/4.0.0: 1488 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1489 | engines: {node: '>=4'} 1490 | dev: true 1491 | 1492 | /resolve-from/5.0.0: 1493 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1494 | engines: {node: '>=8'} 1495 | dev: true 1496 | 1497 | /resolve-global/1.0.0: 1498 | resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} 1499 | engines: {node: '>=8'} 1500 | dependencies: 1501 | global-dirs: 0.1.1 1502 | dev: true 1503 | 1504 | /resolve/1.20.0: 1505 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} 1506 | dependencies: 1507 | is-core-module: 2.8.0 1508 | path-parse: 1.0.7 1509 | dev: true 1510 | 1511 | /run-node/1.0.0: 1512 | resolution: {integrity: sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==} 1513 | engines: {node: '>=4'} 1514 | hasBin: true 1515 | dev: true 1516 | 1517 | /safe-buffer/5.1.2: 1518 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1519 | dev: true 1520 | 1521 | /safe-buffer/5.2.1: 1522 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1523 | dev: true 1524 | 1525 | /semver-compare/1.0.0: 1526 | resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=} 1527 | dev: true 1528 | 1529 | /semver/5.7.1: 1530 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 1531 | hasBin: true 1532 | dev: true 1533 | 1534 | /semver/6.3.0: 1535 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1536 | hasBin: true 1537 | dev: true 1538 | 1539 | /semver/7.3.5: 1540 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 1541 | engines: {node: '>=10'} 1542 | hasBin: true 1543 | dependencies: 1544 | lru-cache: 6.0.0 1545 | dev: true 1546 | 1547 | /shebang-command/1.2.0: 1548 | resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} 1549 | engines: {node: '>=0.10.0'} 1550 | dependencies: 1551 | shebang-regex: 1.0.0 1552 | dev: true 1553 | 1554 | /shebang-command/2.0.0: 1555 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1556 | engines: {node: '>=8'} 1557 | dependencies: 1558 | shebang-regex: 3.0.0 1559 | dev: true 1560 | 1561 | /shebang-regex/1.0.0: 1562 | resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} 1563 | engines: {node: '>=0.10.0'} 1564 | dev: true 1565 | 1566 | /shebang-regex/3.0.0: 1567 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1568 | engines: {node: '>=8'} 1569 | dev: true 1570 | 1571 | /signal-exit/3.0.6: 1572 | resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} 1573 | dev: true 1574 | 1575 | /slash/3.0.0: 1576 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1577 | engines: {node: '>=8'} 1578 | dev: true 1579 | 1580 | /source-map-support/0.5.21: 1581 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1582 | dependencies: 1583 | buffer-from: 1.1.2 1584 | source-map: 0.6.1 1585 | dev: true 1586 | 1587 | /source-map/0.6.1: 1588 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1589 | engines: {node: '>=0.10.0'} 1590 | dev: true 1591 | 1592 | /spdx-correct/3.1.1: 1593 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 1594 | dependencies: 1595 | spdx-expression-parse: 3.0.1 1596 | spdx-license-ids: 3.0.11 1597 | dev: true 1598 | 1599 | /spdx-exceptions/2.3.0: 1600 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 1601 | dev: true 1602 | 1603 | /spdx-expression-parse/3.0.1: 1604 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1605 | dependencies: 1606 | spdx-exceptions: 2.3.0 1607 | spdx-license-ids: 3.0.11 1608 | dev: true 1609 | 1610 | /spdx-license-ids/3.0.11: 1611 | resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} 1612 | dev: true 1613 | 1614 | /split/1.0.1: 1615 | resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} 1616 | dependencies: 1617 | through: 2.3.8 1618 | dev: true 1619 | 1620 | /split2/3.2.2: 1621 | resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} 1622 | dependencies: 1623 | readable-stream: 3.6.0 1624 | dev: true 1625 | 1626 | /sprintf-js/1.0.3: 1627 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 1628 | dev: true 1629 | 1630 | /standard-version-updater-yaml/1.0.3_standard-version@9.3.2: 1631 | resolution: {integrity: sha512-K93X/FPgeBtYVpEi7AooHNlUu0cop98AeLKOIyBXoD4so4/7jbe9PVUVjsI4fk5iutnEVqit5oxRqZ812vEckA==} 1632 | peerDependencies: 1633 | standard-version: ^9.0.0 1634 | dependencies: 1635 | standard-version: 9.3.2 1636 | yaml: 1.10.2 1637 | dev: false 1638 | 1639 | /standard-version/9.3.2: 1640 | resolution: {integrity: sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==} 1641 | engines: {node: '>=10'} 1642 | hasBin: true 1643 | dependencies: 1644 | chalk: 2.4.2 1645 | conventional-changelog: 3.1.24 1646 | conventional-changelog-config-spec: 2.1.0 1647 | conventional-changelog-conventionalcommits: 4.6.1 1648 | conventional-recommended-bump: 6.1.0 1649 | detect-indent: 6.1.0 1650 | detect-newline: 3.1.0 1651 | dotgitignore: 2.1.0 1652 | figures: 3.2.0 1653 | find-up: 5.0.0 1654 | fs-access: 1.0.1 1655 | git-semver-tags: 4.1.1 1656 | semver: 7.3.5 1657 | stringify-package: 1.0.1 1658 | yargs: 16.2.0 1659 | dev: true 1660 | 1661 | /string-width/4.2.3: 1662 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1663 | engines: {node: '>=8'} 1664 | dependencies: 1665 | emoji-regex: 8.0.0 1666 | is-fullwidth-code-point: 3.0.0 1667 | strip-ansi: 6.0.1 1668 | dev: true 1669 | 1670 | /string_decoder/1.1.1: 1671 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 1672 | dependencies: 1673 | safe-buffer: 5.1.2 1674 | dev: true 1675 | 1676 | /string_decoder/1.3.0: 1677 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1678 | dependencies: 1679 | safe-buffer: 5.2.1 1680 | dev: true 1681 | 1682 | /stringify-package/1.0.1: 1683 | resolution: {integrity: sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==} 1684 | dev: true 1685 | 1686 | /strip-ansi/6.0.1: 1687 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1688 | engines: {node: '>=8'} 1689 | dependencies: 1690 | ansi-regex: 5.0.1 1691 | dev: true 1692 | 1693 | /strip-bom/3.0.0: 1694 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 1695 | engines: {node: '>=4'} 1696 | dev: true 1697 | 1698 | /strip-eof/1.0.0: 1699 | resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=} 1700 | engines: {node: '>=0.10.0'} 1701 | dev: true 1702 | 1703 | /strip-final-newline/2.0.0: 1704 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1705 | engines: {node: '>=6'} 1706 | dev: true 1707 | 1708 | /strip-indent/3.0.0: 1709 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1710 | engines: {node: '>=8'} 1711 | dependencies: 1712 | min-indent: 1.0.1 1713 | dev: true 1714 | 1715 | /supports-color/5.5.0: 1716 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1717 | engines: {node: '>=4'} 1718 | dependencies: 1719 | has-flag: 3.0.0 1720 | dev: true 1721 | 1722 | /supports-color/7.2.0: 1723 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1724 | engines: {node: '>=8'} 1725 | dependencies: 1726 | has-flag: 4.0.0 1727 | dev: true 1728 | 1729 | /text-extensions/1.9.0: 1730 | resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} 1731 | engines: {node: '>=0.10'} 1732 | dev: true 1733 | 1734 | /through/2.3.8: 1735 | resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} 1736 | dev: true 1737 | 1738 | /through2/2.0.5: 1739 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} 1740 | dependencies: 1741 | readable-stream: 2.3.7 1742 | xtend: 4.0.2 1743 | dev: true 1744 | 1745 | /through2/4.0.2: 1746 | resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} 1747 | dependencies: 1748 | readable-stream: 3.6.0 1749 | dev: true 1750 | 1751 | /trim-newlines/3.0.1: 1752 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} 1753 | engines: {node: '>=8'} 1754 | dev: true 1755 | 1756 | /ts-node/9.1.1_typescript@4.5.2: 1757 | resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} 1758 | engines: {node: '>=10.0.0'} 1759 | hasBin: true 1760 | peerDependencies: 1761 | typescript: '>=2.7' 1762 | dependencies: 1763 | arg: 4.1.3 1764 | create-require: 1.1.1 1765 | diff: 4.0.2 1766 | make-error: 1.3.6 1767 | source-map-support: 0.5.21 1768 | typescript: 4.5.2 1769 | yn: 3.1.1 1770 | dev: true 1771 | 1772 | /tslib/2.3.1: 1773 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 1774 | dev: true 1775 | 1776 | /type-fest/0.18.1: 1777 | resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} 1778 | engines: {node: '>=10'} 1779 | dev: true 1780 | 1781 | /type-fest/0.6.0: 1782 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 1783 | engines: {node: '>=8'} 1784 | dev: true 1785 | 1786 | /type-fest/0.8.1: 1787 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 1788 | engines: {node: '>=8'} 1789 | dev: true 1790 | 1791 | /typedarray/0.0.6: 1792 | resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} 1793 | dev: true 1794 | 1795 | /typescript/4.5.2: 1796 | resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==} 1797 | engines: {node: '>=4.2.0'} 1798 | hasBin: true 1799 | dev: true 1800 | 1801 | /uglify-js/3.14.4: 1802 | resolution: {integrity: sha512-AbiSR44J0GoCeV81+oxcy/jDOElO2Bx3d0MfQCUShq7JRXaM4KtQopZsq2vFv8bCq2yMaGrw1FgygUd03RyRDA==} 1803 | engines: {node: '>=0.8.0'} 1804 | hasBin: true 1805 | requiresBuild: true 1806 | dev: true 1807 | optional: true 1808 | 1809 | /universalify/2.0.0: 1810 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 1811 | engines: {node: '>= 10.0.0'} 1812 | dev: true 1813 | 1814 | /util-deprecate/1.0.2: 1815 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} 1816 | dev: true 1817 | 1818 | /validate-npm-package-license/3.0.4: 1819 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 1820 | dependencies: 1821 | spdx-correct: 3.1.1 1822 | spdx-expression-parse: 3.0.1 1823 | dev: true 1824 | 1825 | /which/1.3.1: 1826 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 1827 | hasBin: true 1828 | dependencies: 1829 | isexe: 2.0.0 1830 | dev: true 1831 | 1832 | /which/2.0.2: 1833 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1834 | engines: {node: '>= 8'} 1835 | hasBin: true 1836 | dependencies: 1837 | isexe: 2.0.0 1838 | dev: true 1839 | 1840 | /wordwrap/1.0.0: 1841 | resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} 1842 | dev: true 1843 | 1844 | /wrap-ansi/7.0.0: 1845 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1846 | engines: {node: '>=10'} 1847 | dependencies: 1848 | ansi-styles: 4.3.0 1849 | string-width: 4.2.3 1850 | strip-ansi: 6.0.1 1851 | dev: true 1852 | 1853 | /wrappy/1.0.2: 1854 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 1855 | dev: true 1856 | 1857 | /xtend/4.0.2: 1858 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1859 | engines: {node: '>=0.4'} 1860 | dev: true 1861 | 1862 | /y18n/5.0.8: 1863 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1864 | engines: {node: '>=10'} 1865 | dev: true 1866 | 1867 | /yallist/4.0.0: 1868 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1869 | dev: true 1870 | 1871 | /yaml/1.10.2: 1872 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1873 | engines: {node: '>= 6'} 1874 | 1875 | /yargs-parser/20.2.9: 1876 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 1877 | engines: {node: '>=10'} 1878 | dev: true 1879 | 1880 | /yargs-parser/21.0.0: 1881 | resolution: {integrity: sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==} 1882 | engines: {node: '>=12'} 1883 | dev: true 1884 | 1885 | /yargs/16.2.0: 1886 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 1887 | engines: {node: '>=10'} 1888 | dependencies: 1889 | cliui: 7.0.4 1890 | escalade: 3.1.1 1891 | get-caller-file: 2.0.5 1892 | require-directory: 2.1.1 1893 | string-width: 4.2.3 1894 | y18n: 5.0.8 1895 | yargs-parser: 20.2.9 1896 | dev: true 1897 | 1898 | /yargs/17.3.0: 1899 | resolution: {integrity: sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==} 1900 | engines: {node: '>=12'} 1901 | dependencies: 1902 | cliui: 7.0.4 1903 | escalade: 3.1.1 1904 | get-caller-file: 2.0.5 1905 | require-directory: 2.1.1 1906 | string-width: 4.2.3 1907 | y18n: 5.0.8 1908 | yargs-parser: 21.0.0 1909 | dev: true 1910 | 1911 | /yn/3.1.1: 1912 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 1913 | engines: {node: '>=6'} 1914 | dev: true 1915 | 1916 | /yocto-queue/0.1.0: 1917 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1918 | engines: {node: '>=10'} 1919 | dev: true 1920 | -------------------------------------------------------------------------------- /standard-version-updater/AssemblyInfo.js: -------------------------------------------------------------------------------- 1 | module.exports.readVersion = function (contents) { 2 | var regex = /\[assembly: AssemblyVersion\(\"(.*)\"\)\]/g; 3 | return contents.match(regex)[0].replace(regex, "$1") 4 | }; 5 | 6 | module.exports.writeVersion = function (contents, version) { 7 | var regex = /\[assembly: AssemblyVersion\(\"(.*)\"\)\]/g; 8 | return contents.replace(regex, `[assembly: AssemblyVersion("${version}")]`) 9 | }; --------------------------------------------------------------------------------