├── .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]: "
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]: "
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 |
2 |
3 | 7.3
4 |
5 |
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 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/network/members)
11 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/stargazers)
12 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/watchers)
13 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/graphs/contributors)
14 |
15 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/issues)
16 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/issues?q=is%3Aissue+is%3Aclosed)
17 |
18 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/pulls)
19 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/pulls?q=is%3Apr+is%3Aclosed)
20 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/compare)
21 |
22 |
23 | [](https://github.com/XeroxDev/Loupedeck-plugin-Speedtest/releases)
24 | []()
25 |
26 | [](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 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
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 GetConfig(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(IEnumerable testData, Func> doWork,
103 | Int32 concurrencyCount = 2)
104 | {
105 | var throttler = new SemaphoreSlim(concurrencyCount);
106 | var size = new List();
107 |
108 | Task[] 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 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 GenerateUploadData(Int32 count = 4)
144 | {
145 | var random = new Random();
146 | var result = new List();
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 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {68FF3C95-04A1-48D3-AD57-14501B0C4486}
8 | Library
9 | Properties
10 | Loupedeck.SpeedtestPlugin
11 | SpeedtestPlugin
12 | v4.7.2
13 | 512
14 | 9
15 |
16 |
17 | $(SolutionDir)obj\
18 | $(SolutionDir)bin\
19 | $(BaseOutputPath)$(Configuration)\
20 | $(SolutionDir)packages\LibZ.Tool.1.2.0.0\tools\libz.exe
21 |
22 |
23 | $(LocalAppData)\Loupedeck\Plugins\$(AssemblyName)\
24 | true
25 | full
26 | false
27 | DEBUG;TRACE
28 | prompt
29 | 4
30 |
31 |
32 | true
33 | false
34 | None
35 | $(BaseOutputPath)win\
36 |
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 |
48 |
49 |
50 |
51 | C:\Program Files (x86)\Loupedeck\Loupedeck2\Newtonsoft.Json.dll
52 | False
53 |
54 |
55 | False
56 | C:\Program Files (x86)\Loupedeck\Loupedeck2\PluginApi.dll
57 | False
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/SpeedtestPlugin/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/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 | };
--------------------------------------------------------------------------------