├── .gitattributes ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── commitlint.config.js ├── eslint.config.mjs ├── lib └── controllers.js ├── library.js ├── package-lock.json ├── package.json ├── plugin.json ├── public └── lib │ ├── acp-main.js │ ├── admin.js │ ├── main.js │ └── quickstart.js ├── renovate.json ├── scss └── quickstart.scss ├── static └── samplefile.html ├── templates ├── admin │ └── plugins │ │ ├── quickstart.tpl │ │ └── quickstart │ │ └── partials │ │ └── sorted-list │ │ ├── form.tpl │ │ └── item.tpl └── quickstart.tpl ├── test ├── .eslintrc └── index.js └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | 204 | # Installer logs 205 | pip-log.txt 206 | 207 | # Unit test / coverage reports 208 | .coverage 209 | .tox 210 | 211 | #Translations 212 | *.mo 213 | 214 | #Mr Developer 215 | .mr.developer.cfg 216 | 217 | sftp-config.json 218 | node_modules/ 219 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | sftp-config.json 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 NodeBB Inc. 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Quickstart Plugin for NodeBB 2 | 3 | A starter kit for quickly creating NodeBB plugins. Comes with a pre-setup SCSS file, server side JS script with an `static:app.load` hook, and a client-side script. Most plugins need at least one of the above, so this ought to save you some time. For a full list of hooks have a look at our [wiki page](https://github.com/NodeBB/NodeBB/wiki/Hooks), and for more information about creating plugins please visit our [documentation portal](https://docs.nodebb.org/). 4 | 5 | Fork this or copy it, and using your favourite text editor find and replace all instances of `nodebb-plugin-quickstart` with `nodebb-plugin-your-plugins-name`. Change the author's name in the LICENSE and package.json files. 6 | 7 | ## Hello World 8 | 9 | Really simple, just edit `public/lib/main.js` and paste in `console.log('hello world');`, and that's it! 10 | 11 | ## Installation 12 | 13 | npm install nodebb-plugin-quickstart 14 | 15 | ## Screenshots 16 | 17 | Don't forget to add screenshots! 18 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: ['@commitlint/config-angular'], 5 | rules: { 6 | 'header-max-length': [1, 'always', 72], 7 | 'type-enum': [ 8 | 2, 9 | 'always', 10 | [ 11 | 'breaking', 12 | 'build', 13 | 'chore', 14 | 'ci', 15 | 'docs', 16 | 'feat', 17 | 'fix', 18 | 'perf', 19 | 'refactor', 20 | 'revert', 21 | 'style', 22 | 'test', 23 | ], 24 | ], 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import serverConfig from 'eslint-config-nodebb'; 4 | import publicConfig from 'eslint-config-nodebb/public'; 5 | 6 | export default [ 7 | ...publicConfig, 8 | ...serverConfig, 9 | ]; 10 | 11 | -------------------------------------------------------------------------------- /lib/controllers.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const Controllers = module.exports; 4 | 5 | Controllers.renderAdminPage = function (req, res/* , next */) { 6 | /* 7 | Make sure the route matches your path to template exactly. 8 | 9 | If your route was: 10 | myforum.com/some/complex/route 11 | your template should be: 12 | templates/some/complex/route.tpl 13 | and you would render it like so: 14 | res.render('some/complex/route'); 15 | */ 16 | 17 | res.render('admin/plugins/quickstart', { 18 | title: 'Quick Start', 19 | }); 20 | }; 21 | -------------------------------------------------------------------------------- /library.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const nconf = require.main.require('nconf'); 4 | const winston = require.main.require('winston'); 5 | 6 | const meta = require.main.require('./src/meta'); 7 | 8 | const controllers = require('./lib/controllers'); 9 | 10 | const routeHelpers = require.main.require('./src/routes/helpers'); 11 | 12 | const plugin = {}; 13 | 14 | plugin.init = async (params) => { 15 | const { router /* , middleware , controllers */ } = params; 16 | 17 | // Settings saved in the plugin settings can be retrieved via settings methods 18 | const { setting1, setting2 } = await meta.settings.get('quickstart'); 19 | if (setting1) { 20 | console.log(setting2); 21 | } 22 | 23 | /** 24 | * We create two routes for every view. One API call, and the actual route itself. 25 | * Use the `setupPageRoute` helper and NodeBB will take care of everything for you. 26 | * 27 | * Other helpers include `setupAdminPageRoute` and `setupAPIRoute` 28 | * */ 29 | routeHelpers.setupPageRoute(router, '/quickstart', [(req, res, next) => { 30 | winston.info(`[plugins/quickstart] In middleware. This argument can be either a single middleware or an array of middlewares`); 31 | setImmediate(next); 32 | }], (req, res) => { 33 | winston.info(`[plugins/quickstart] Navigated to ${nconf.get('relative_path')}/quickstart`); 34 | res.render('quickstart', { uid: req.uid }); 35 | }); 36 | 37 | routeHelpers.setupAdminPageRoute(router, '/admin/plugins/quickstart', controllers.renderAdminPage); 38 | }; 39 | 40 | /** 41 | * If you wish to add routes to NodeBB's RESTful API, listen to the `static:api.routes` hook. 42 | * Define your routes similarly to above, and allow core to handle the response via the 43 | * built-in helpers.formatApiResponse() method. 44 | * 45 | * In this example route, the `ensureLoggedIn` middleware is added, which means a valid login 46 | * session or bearer token (which you can create via ACP > Settings > API Access) needs to be 47 | * passed in. 48 | * 49 | * To call this example route: 50 | * curl -X GET \ 51 | * http://example.org/api/v3/plugins/quickstart/test \ 52 | * -H "Authorization: Bearer some_valid_bearer_token" 53 | * 54 | * Will yield the following response JSON: 55 | * { 56 | * "status": { 57 | * "code": "ok", 58 | * "message": "OK" 59 | * }, 60 | * "response": { 61 | * "foobar": "test" 62 | * } 63 | * } 64 | */ 65 | plugin.addRoutes = async ({ router, middleware, helpers }) => { 66 | const middlewares = [ 67 | middleware.ensureLoggedIn, // use this if you want only registered users to call this route 68 | // middleware.admin.checkPrivileges, // use this to restrict the route to administrators 69 | ]; 70 | 71 | routeHelpers.setupApiRoute(router, 'get', '/quickstart/:param1', middlewares, (req, res) => { 72 | helpers.formatApiResponse(200, res, { 73 | foobar: req.params.param1, 74 | }); 75 | }); 76 | }; 77 | 78 | plugin.addAdminNavigation = (header) => { 79 | header.plugins.push({ 80 | route: '/plugins/quickstart', 81 | icon: 'fa-tint', 82 | name: 'Quickstart', 83 | }); 84 | 85 | return header; 86 | }; 87 | 88 | module.exports = plugin; 89 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodebb-plugin-quickstart", 3 | "version": "0.4.3", 4 | "description": "A starter kit for quickly creating NodeBB plugins", 5 | "main": "library.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/nodebb/nodebb-plugin-quickstart" 9 | }, 10 | "scripts": { 11 | "lint": "eslint ." 12 | }, 13 | "keywords": [ 14 | "nodebb", 15 | "plugin", 16 | "quickstart", 17 | "shell" 18 | ], 19 | "husky": { 20 | "hooks": { 21 | "pre-commit": "lint-staged", 22 | "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" 23 | } 24 | }, 25 | "lint-staged": { 26 | "*.js": [ 27 | "eslint --fix", 28 | "git add" 29 | ] 30 | }, 31 | "license": "MIT", 32 | "bugs": { 33 | "url": "https://github.com/nodebb/nodebb-plugin-quickstart/issues" 34 | }, 35 | "readmeFilename": "README.md", 36 | "nbbpm": { 37 | "compatibility": "^3.2.0" 38 | }, 39 | "devDependencies": { 40 | "@commitlint/cli": "19.8.1", 41 | "@commitlint/config-angular": "19.8.1", 42 | "eslint": "9.28.0", 43 | "eslint-config-nodebb": "1.1.7", 44 | "husky": "9.1.7", 45 | "lint-staged": "16.1.0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "nodebb-plugin-quickstart", 3 | "url": "https://github.com/NodeBB/nodebb-plugin-quickstart", 4 | "library": "./library.js", 5 | "hooks": [ 6 | { "hook": "static:app.load", "method": "init" }, 7 | { "hook": "static:api.routes", "method": "addRoutes" }, 8 | { "hook": "filter:admin.header.build", "method": "addAdminNavigation" } 9 | ], 10 | "staticDirs": { 11 | "static": "./static" 12 | }, 13 | "scss": [ 14 | "scss/quickstart.scss" 15 | ], 16 | "scripts": [ 17 | "public/lib/main.js" 18 | ], 19 | "acpScripts": [ 20 | "public/lib/acp-main.js" 21 | ], 22 | "modules": { 23 | "../client/quickstart.js": "./public/lib/quickstart.js", 24 | "../admin/plugins/quickstart.js": "./public/lib/admin.js" 25 | }, 26 | "templates": "templates" 27 | } -------------------------------------------------------------------------------- /public/lib/acp-main.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | $(document).ready(function () { 4 | /* 5 | This file shows how admin page client-side javascript can be included via a plugin. 6 | If you check `plugin.json`, you'll see that this file is listed under "acpScripts". 7 | That array tells NodeBB which files to bundle into the minified javascript 8 | that is served to the end user. 9 | 10 | Some events you can elect to listen for: 11 | 12 | $(document).ready(); Fired when the DOM is ready 13 | $(window).on('action:ajaxify.end', function(data) { ... }); "data" contains "url" 14 | */ 15 | 16 | console.log('nodebb-plugin-quickstart: acp-loaded'); 17 | // Note how this is shown in the console on the first load of every page in the ACP 18 | }); 19 | -------------------------------------------------------------------------------- /public/lib/admin.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /* 4 | This file is located in the "modules" block of plugin.json 5 | It is only loaded when the user navigates to /admin/plugins/quickstart page 6 | It is not bundled into the min file that is served on the first load of the page. 7 | */ 8 | 9 | import { save, load } from 'settings'; 10 | import * as uploader from 'uploader'; 11 | 12 | export function init() { 13 | handleSettingsForm(); 14 | setupUploader(); 15 | }; 16 | 17 | function handleSettingsForm() { 18 | load('quickstart', $('.quickstart-settings'), function () { 19 | setupColorInputs(); 20 | }); 21 | 22 | $('#save').on('click', () => { 23 | save('quickstart', $('.quickstart-settings')); // pass in a function in the 3rd parameter to override the default success/failure handler 24 | }); 25 | } 26 | 27 | function setupColorInputs() { 28 | var colorInputs = $('[data-settings="colorpicker"]'); 29 | colorInputs.on('change', updateColors); 30 | updateColors(); 31 | } 32 | 33 | function updateColors() { 34 | $('#preview').css({ 35 | color: $('#color').val(), 36 | 'background-color': $('#bgColor').val(), 37 | }); 38 | } 39 | 40 | function setupUploader() { 41 | $('#content input[data-action="upload"]').each(function () { 42 | var uploadBtn = $(this); 43 | uploadBtn.on('click', function () { 44 | uploader.show({ 45 | route: config.relative_path + '/api/admin/upload/file', 46 | params: { 47 | folder: 'quickstart', 48 | }, 49 | accept: 'image/*', 50 | }, function (image) { 51 | $('#' + uploadBtn.attr('data-target')).val(image); 52 | }); 53 | }); 54 | }); 55 | } 56 | -------------------------------------------------------------------------------- /public/lib/main.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /** 4 | * This file shows how client-side javascript can be included via a plugin. 5 | * If you check `plugin.json`, you'll see that this file is listed under "scripts". 6 | * That array tells NodeBB which files to bundle into the minified javascript 7 | * that is served to the end user. 8 | * 9 | * There are two (standard) ways to wait for when NodeBB is ready. 10 | * This one below executes when NodeBB reports it is ready... 11 | */ 12 | 13 | (async () => { 14 | const hooks = await app.require('hooks'); 15 | 16 | hooks.on('action:app.load', () => { 17 | // called once when nbb has loaded 18 | }); 19 | 20 | hooks.on('action:ajaxify.end', (/* data */) => { 21 | // called everytime user navigates between pages including first load 22 | }); 23 | })(); 24 | 25 | /** 26 | * ... and this one reports when the DOM is loaded (but NodeBB might not be fully ready yet). 27 | * For most cases, you'll want the one above. 28 | */ 29 | 30 | $(document).ready(function () { 31 | // ... 32 | }); 33 | -------------------------------------------------------------------------------- /public/lib/quickstart.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /* 4 | This file is located in the "modules" block of plugin.json 5 | It is only loaded when the user navigates to /quickstart page 6 | It is not bundled into the min file that is served on the first load of the page. 7 | */ 8 | 9 | define('forum/quickstart', function () { 10 | var module = {}; 11 | module.init = function () { 12 | $('#last-p').text('quickstart.js loaded!'); 13 | }; 14 | return module; 15 | }); 16 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:recommended" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /scss/quickstart.scss: -------------------------------------------------------------------------------- 1 | /* Place any SASS in here */ -------------------------------------------------------------------------------- /static/samplefile.html: -------------------------------------------------------------------------------- 1 |

Hello!

2 | 3 |

This file is served by nodebb at domain.com/assets/plugins/nodebb-plugin-quickstart/static/samplefile.html

4 | 5 | Check plugin.json for the "staticDirs" property if you want to change the path. -------------------------------------------------------------------------------- /templates/admin/plugins/quickstart.tpl: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 |
6 |
7 |
8 |
General
9 | 10 |

11 | Adjust these settings. You can then retrieve these settings in code via: 12 |
await meta.settings.get('quickstart'); 13 |

14 |
15 | 16 | 17 |
18 |
19 | 20 | 21 |
22 | 23 |
24 | 25 | 26 |
27 |
28 | 29 |
30 |
Colors
31 | 32 |

33 | Here is some preview text. Use the inputs below to modify this alert's appearance. 34 |

35 |
36 | 37 | 38 |
39 |
40 | 41 | 42 |
43 |
44 | 45 |
46 |
Sorted List
47 | 48 |
49 |
    50 | 51 |
    52 |
    53 | 54 |
    55 |
    Uploads
    56 | 57 | 58 |
    59 | 60 | 61 |
    62 |
    63 |
    64 |
    65 | 66 | 67 |
    68 |
    69 | -------------------------------------------------------------------------------- /templates/admin/plugins/quickstart/partials/sorted-list/form.tpl: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 |
    6 |
    7 | 8 | 9 |
    10 |
    -------------------------------------------------------------------------------- /templates/admin/plugins/quickstart/partials/sorted-list/item.tpl: -------------------------------------------------------------------------------- 1 |
  • 2 |
    3 |
    4 | {name}
    5 | {description} 6 |
    7 |
    8 | 9 | 10 |
    11 |
    12 |
  • -------------------------------------------------------------------------------- /templates/quickstart.tpl: -------------------------------------------------------------------------------- 1 |
    2 |

    This is a custom page.

    3 |

    Your uid is {uid}!

    4 |

    5 |
    -------------------------------------------------------------------------------- /test/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "rules": { 6 | "no-unused-vars": "off" 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * You can run these tests by executing `npx mocha test/plugins-installed.js` 3 | * from the NodeBB root folder. The regular test runner will also run these 4 | * tests. 5 | * 6 | * Keep in mind tests do not activate all plugins, so if you are testing 7 | * hook listeners, socket.io, or mounted routes, you will need to add your 8 | * plugin to `config.json`, e.g. 9 | * 10 | * { 11 | * "test_plugins": [ 12 | * "nodebb-plugin-quickstart" 13 | * ] 14 | * } 15 | */ 16 | 17 | 'use strict'; 18 | 19 | /* globals describe, it, before */ 20 | 21 | const assert = require('assert'); 22 | 23 | const db = require.main.require('./test/mocks/databasemock'); 24 | 25 | describe('nodebb-plugin-quickstart', () => { 26 | before(() => { 27 | // Prepare for tests here 28 | }); 29 | 30 | it('should pass', (done) => { 31 | const actual = 'value'; 32 | const expected = 'value'; 33 | assert.strictEqual(actual, expected); 34 | done(); 35 | }); 36 | 37 | it('should load config object', async () => { // Tests can be async functions too 38 | const config = await db.getObject('config'); 39 | assert(config); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.27.1" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" 8 | integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== 9 | dependencies: 10 | "@babel/helper-validator-identifier" "^7.27.1" 11 | js-tokens "^4.0.0" 12 | picocolors "^1.1.1" 13 | 14 | "@babel/helper-validator-identifier@^7.27.1": 15 | version "7.27.1" 16 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" 17 | integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== 18 | 19 | "@commitlint/cli@19.8.1": 20 | version "19.8.1" 21 | resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz" 22 | integrity sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA== 23 | dependencies: 24 | "@commitlint/format" "^19.8.1" 25 | "@commitlint/lint" "^19.8.1" 26 | "@commitlint/load" "^19.8.1" 27 | "@commitlint/read" "^19.8.1" 28 | "@commitlint/types" "^19.8.1" 29 | tinyexec "^1.0.0" 30 | yargs "^17.0.0" 31 | 32 | "@commitlint/config-angular-type-enum@^19.8.1": 33 | version "19.8.1" 34 | resolved "https://registry.npmjs.org/@commitlint/config-angular-type-enum/-/config-angular-type-enum-19.8.1.tgz" 35 | integrity sha512-JKEINTDQcH5+qSq0Fcp/gzT7SQ3RvY74SNXiMABNTsseocB33TKMzPwDJHZbl/hyRemWEE97Qbxz+ILnJ+9AZQ== 36 | 37 | "@commitlint/config-angular@19.8.1": 38 | version "19.8.1" 39 | resolved "https://registry.npmjs.org/@commitlint/config-angular/-/config-angular-19.8.1.tgz" 40 | integrity sha512-5OAVgqwg6m4iXP2FkrswKZjrgzyQetR5Jkyt5SajlxLfKzZOzdB3hSqVJQdtvF/AxiMwz9Ey5BIXTCfSIrvZGg== 41 | dependencies: 42 | "@commitlint/config-angular-type-enum" "^19.8.1" 43 | 44 | "@commitlint/config-validator@^19.8.1": 45 | version "19.8.1" 46 | resolved "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz" 47 | integrity sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ== 48 | dependencies: 49 | "@commitlint/types" "^19.8.1" 50 | ajv "^8.11.0" 51 | 52 | "@commitlint/ensure@^19.8.1": 53 | version "19.8.1" 54 | resolved "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz" 55 | integrity sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw== 56 | dependencies: 57 | "@commitlint/types" "^19.8.1" 58 | lodash.camelcase "^4.3.0" 59 | lodash.kebabcase "^4.1.1" 60 | lodash.snakecase "^4.1.1" 61 | lodash.startcase "^4.4.0" 62 | lodash.upperfirst "^4.3.1" 63 | 64 | "@commitlint/execute-rule@^19.8.1": 65 | version "19.8.1" 66 | resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz" 67 | integrity sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA== 68 | 69 | "@commitlint/format@^19.8.1": 70 | version "19.8.1" 71 | resolved "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz" 72 | integrity sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw== 73 | dependencies: 74 | "@commitlint/types" "^19.8.1" 75 | chalk "^5.3.0" 76 | 77 | "@commitlint/is-ignored@^19.8.1": 78 | version "19.8.1" 79 | resolved "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz" 80 | integrity sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg== 81 | dependencies: 82 | "@commitlint/types" "^19.8.1" 83 | semver "^7.6.0" 84 | 85 | "@commitlint/lint@^19.8.1": 86 | version "19.8.1" 87 | resolved "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz" 88 | integrity sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw== 89 | dependencies: 90 | "@commitlint/is-ignored" "^19.8.1" 91 | "@commitlint/parse" "^19.8.1" 92 | "@commitlint/rules" "^19.8.1" 93 | "@commitlint/types" "^19.8.1" 94 | 95 | "@commitlint/load@^19.8.1": 96 | version "19.8.1" 97 | resolved "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz" 98 | integrity sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A== 99 | dependencies: 100 | "@commitlint/config-validator" "^19.8.1" 101 | "@commitlint/execute-rule" "^19.8.1" 102 | "@commitlint/resolve-extends" "^19.8.1" 103 | "@commitlint/types" "^19.8.1" 104 | chalk "^5.3.0" 105 | cosmiconfig "^9.0.0" 106 | cosmiconfig-typescript-loader "^6.1.0" 107 | lodash.isplainobject "^4.0.6" 108 | lodash.merge "^4.6.2" 109 | lodash.uniq "^4.5.0" 110 | 111 | "@commitlint/message@^19.8.1": 112 | version "19.8.1" 113 | resolved "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz" 114 | integrity sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg== 115 | 116 | "@commitlint/parse@^19.8.1": 117 | version "19.8.1" 118 | resolved "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz" 119 | integrity sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw== 120 | dependencies: 121 | "@commitlint/types" "^19.8.1" 122 | conventional-changelog-angular "^7.0.0" 123 | conventional-commits-parser "^5.0.0" 124 | 125 | "@commitlint/read@^19.8.1": 126 | version "19.8.1" 127 | resolved "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz" 128 | integrity sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ== 129 | dependencies: 130 | "@commitlint/top-level" "^19.8.1" 131 | "@commitlint/types" "^19.8.1" 132 | git-raw-commits "^4.0.0" 133 | minimist "^1.2.8" 134 | tinyexec "^1.0.0" 135 | 136 | "@commitlint/resolve-extends@^19.8.1": 137 | version "19.8.1" 138 | resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz" 139 | integrity sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg== 140 | dependencies: 141 | "@commitlint/config-validator" "^19.8.1" 142 | "@commitlint/types" "^19.8.1" 143 | global-directory "^4.0.1" 144 | import-meta-resolve "^4.0.0" 145 | lodash.mergewith "^4.6.2" 146 | resolve-from "^5.0.0" 147 | 148 | "@commitlint/rules@^19.8.1": 149 | version "19.8.1" 150 | resolved "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz" 151 | integrity sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw== 152 | dependencies: 153 | "@commitlint/ensure" "^19.8.1" 154 | "@commitlint/message" "^19.8.1" 155 | "@commitlint/to-lines" "^19.8.1" 156 | "@commitlint/types" "^19.8.1" 157 | 158 | "@commitlint/to-lines@^19.8.1": 159 | version "19.8.1" 160 | resolved "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz" 161 | integrity sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg== 162 | 163 | "@commitlint/top-level@^19.8.1": 164 | version "19.8.1" 165 | resolved "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz" 166 | integrity sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw== 167 | dependencies: 168 | find-up "^7.0.0" 169 | 170 | "@commitlint/types@^19.8.1": 171 | version "19.8.1" 172 | resolved "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz" 173 | integrity sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw== 174 | dependencies: 175 | "@types/conventional-commits-parser" "^5.0.0" 176 | chalk "^5.3.0" 177 | 178 | "@eslint-community/eslint-utils@^4.2.0": 179 | version "4.7.0" 180 | resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz" 181 | integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== 182 | dependencies: 183 | eslint-visitor-keys "^3.4.3" 184 | 185 | "@eslint-community/regexpp@^4.12.1": 186 | version "4.12.1" 187 | resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" 188 | integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== 189 | 190 | "@eslint/config-array@^0.20.0": 191 | version "0.20.0" 192 | resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz" 193 | integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== 194 | dependencies: 195 | "@eslint/object-schema" "^2.1.6" 196 | debug "^4.3.1" 197 | minimatch "^3.1.2" 198 | 199 | "@eslint/config-helpers@^0.2.1": 200 | version "0.2.2" 201 | resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz" 202 | integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== 203 | 204 | "@eslint/core@^0.14.0": 205 | version "0.14.0" 206 | resolved "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz" 207 | integrity sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg== 208 | dependencies: 209 | "@types/json-schema" "^7.0.15" 210 | 211 | "@eslint/eslintrc@^3.3.1": 212 | version "3.3.1" 213 | resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz" 214 | integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== 215 | dependencies: 216 | ajv "^6.12.4" 217 | debug "^4.3.2" 218 | espree "^10.0.1" 219 | globals "^14.0.0" 220 | ignore "^5.2.0" 221 | import-fresh "^3.2.1" 222 | js-yaml "^4.1.0" 223 | minimatch "^3.1.2" 224 | strip-json-comments "^3.1.1" 225 | 226 | "@eslint/js@9.28.0": 227 | version "9.28.0" 228 | resolved "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz" 229 | integrity sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg== 230 | 231 | "@eslint/object-schema@^2.1.6": 232 | version "2.1.6" 233 | resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz" 234 | integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== 235 | 236 | "@eslint/plugin-kit@^0.3.1": 237 | version "0.3.1" 238 | resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz" 239 | integrity sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w== 240 | dependencies: 241 | "@eslint/core" "^0.14.0" 242 | levn "^0.4.1" 243 | 244 | "@humanfs/core@^0.19.1": 245 | version "0.19.1" 246 | resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" 247 | integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== 248 | 249 | "@humanfs/node@^0.16.6": 250 | version "0.16.6" 251 | resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" 252 | integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== 253 | dependencies: 254 | "@humanfs/core" "^0.19.1" 255 | "@humanwhocodes/retry" "^0.3.0" 256 | 257 | "@humanwhocodes/module-importer@^1.0.1": 258 | version "1.0.1" 259 | resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" 260 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 261 | 262 | "@humanwhocodes/retry@^0.3.0": 263 | version "0.3.1" 264 | resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" 265 | integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== 266 | 267 | "@humanwhocodes/retry@^0.4.2": 268 | version "0.4.3" 269 | resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz" 270 | integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== 271 | 272 | "@types/conventional-commits-parser@^5.0.0": 273 | version "5.0.1" 274 | resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz" 275 | integrity sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ== 276 | dependencies: 277 | "@types/node" "*" 278 | 279 | "@types/estree@^1.0.6": 280 | version "1.0.7" 281 | resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz" 282 | integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== 283 | 284 | "@types/json-schema@^7.0.15": 285 | version "7.0.15" 286 | resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" 287 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 288 | 289 | "@types/node@*": 290 | version "22.15.29" 291 | resolved "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz" 292 | integrity sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ== 293 | dependencies: 294 | undici-types "~6.21.0" 295 | 296 | JSONStream@^1.3.5: 297 | version "1.3.5" 298 | resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" 299 | integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== 300 | dependencies: 301 | jsonparse "^1.2.0" 302 | through ">=2.2.7 <3" 303 | 304 | acorn-jsx@^5.3.2: 305 | version "5.3.2" 306 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" 307 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 308 | 309 | acorn@^8.14.0: 310 | version "8.14.1" 311 | resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" 312 | integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== 313 | 314 | ajv@^6.12.4: 315 | version "6.12.6" 316 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 317 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 318 | dependencies: 319 | fast-deep-equal "^3.1.1" 320 | fast-json-stable-stringify "^2.0.0" 321 | json-schema-traverse "^0.4.1" 322 | uri-js "^4.2.2" 323 | 324 | ajv@^8.11.0: 325 | version "8.17.1" 326 | resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" 327 | integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== 328 | dependencies: 329 | fast-deep-equal "^3.1.3" 330 | fast-uri "^3.0.1" 331 | json-schema-traverse "^1.0.0" 332 | require-from-string "^2.0.2" 333 | 334 | ansi-escapes@^7.0.0: 335 | version "7.0.0" 336 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz" 337 | integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw== 338 | dependencies: 339 | environment "^1.0.0" 340 | 341 | ansi-regex@^5.0.0, ansi-regex@^5.0.1: 342 | version "5.0.1" 343 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 344 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 345 | 346 | ansi-regex@^6.0.1: 347 | version "6.1.0" 348 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" 349 | integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== 350 | 351 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 352 | version "4.3.0" 353 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 354 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 355 | dependencies: 356 | color-convert "^2.0.1" 357 | 358 | ansi-styles@^6.0.0, ansi-styles@^6.2.1: 359 | version "6.2.1" 360 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" 361 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 362 | 363 | argparse@^2.0.1: 364 | version "2.0.1" 365 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 366 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 367 | 368 | array-ify@^1.0.0: 369 | version "1.0.0" 370 | resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" 371 | integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== 372 | 373 | balanced-match@^1.0.0: 374 | version "1.0.2" 375 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 376 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 377 | 378 | brace-expansion@^1.1.7: 379 | version "1.1.11" 380 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 381 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 382 | dependencies: 383 | balanced-match "^1.0.0" 384 | concat-map "0.0.1" 385 | 386 | braces@^3.0.3: 387 | version "3.0.3" 388 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" 389 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 390 | dependencies: 391 | fill-range "^7.1.1" 392 | 393 | callsites@^3.0.0: 394 | version "3.1.0" 395 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" 396 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 397 | 398 | chalk@^4.0.0: 399 | version "4.1.2" 400 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 401 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 402 | dependencies: 403 | ansi-styles "^4.1.0" 404 | supports-color "^7.1.0" 405 | 406 | chalk@^5.3.0, chalk@^5.4.1: 407 | version "5.4.1" 408 | resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz" 409 | integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== 410 | 411 | cli-cursor@^5.0.0: 412 | version "5.0.0" 413 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz" 414 | integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== 415 | dependencies: 416 | restore-cursor "^5.0.0" 417 | 418 | cli-truncate@^4.0.0: 419 | version "4.0.0" 420 | resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz" 421 | integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== 422 | dependencies: 423 | slice-ansi "^5.0.0" 424 | string-width "^7.0.0" 425 | 426 | cliui@^8.0.1: 427 | version "8.0.1" 428 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 429 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 430 | dependencies: 431 | string-width "^4.2.0" 432 | strip-ansi "^6.0.1" 433 | wrap-ansi "^7.0.0" 434 | 435 | color-convert@^2.0.1: 436 | version "2.0.1" 437 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 438 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 439 | dependencies: 440 | color-name "~1.1.4" 441 | 442 | color-name@~1.1.4: 443 | version "1.1.4" 444 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 445 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 446 | 447 | colorette@^2.0.20: 448 | version "2.0.20" 449 | resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" 450 | integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== 451 | 452 | commander@^14.0.0: 453 | version "14.0.0" 454 | resolved "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz" 455 | integrity sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA== 456 | 457 | compare-func@^2.0.0: 458 | version "2.0.0" 459 | resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" 460 | integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== 461 | dependencies: 462 | array-ify "^1.0.0" 463 | dot-prop "^5.1.0" 464 | 465 | concat-map@0.0.1: 466 | version "0.0.1" 467 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 468 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 469 | 470 | conventional-changelog-angular@^7.0.0: 471 | version "7.0.0" 472 | resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz" 473 | integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== 474 | dependencies: 475 | compare-func "^2.0.0" 476 | 477 | conventional-commits-parser@^5.0.0: 478 | version "5.0.0" 479 | resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" 480 | integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== 481 | dependencies: 482 | JSONStream "^1.3.5" 483 | is-text-path "^2.0.0" 484 | meow "^12.0.1" 485 | split2 "^4.0.0" 486 | 487 | cosmiconfig-typescript-loader@^6.1.0: 488 | version "6.1.0" 489 | resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz" 490 | integrity sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g== 491 | dependencies: 492 | jiti "^2.4.1" 493 | 494 | cosmiconfig@^9.0.0: 495 | version "9.0.0" 496 | resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" 497 | integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== 498 | dependencies: 499 | env-paths "^2.2.1" 500 | import-fresh "^3.3.0" 501 | js-yaml "^4.1.0" 502 | parse-json "^5.2.0" 503 | 504 | cross-spawn@^7.0.6: 505 | version "7.0.6" 506 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" 507 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 508 | dependencies: 509 | path-key "^3.1.0" 510 | shebang-command "^2.0.0" 511 | which "^2.0.1" 512 | 513 | dargs@^8.0.0: 514 | version "8.1.0" 515 | resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz" 516 | integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== 517 | 518 | debug@^4.3.1, debug@^4.3.2, debug@^4.4.1: 519 | version "4.4.1" 520 | resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz" 521 | integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== 522 | dependencies: 523 | ms "^2.1.3" 524 | 525 | deep-is@^0.1.3: 526 | version "0.1.4" 527 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" 528 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 529 | 530 | dot-prop@^5.1.0: 531 | version "5.3.0" 532 | resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" 533 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 534 | dependencies: 535 | is-obj "^2.0.0" 536 | 537 | emoji-regex@^10.3.0: 538 | version "10.4.0" 539 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" 540 | integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== 541 | 542 | emoji-regex@^8.0.0: 543 | version "8.0.0" 544 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 545 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 546 | 547 | env-paths@^2.2.1: 548 | version "2.2.1" 549 | resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" 550 | integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== 551 | 552 | environment@^1.0.0: 553 | version "1.1.0" 554 | resolved "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz" 555 | integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== 556 | 557 | error-ex@^1.3.1: 558 | version "1.3.2" 559 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" 560 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 561 | dependencies: 562 | is-arrayish "^0.2.1" 563 | 564 | escalade@^3.1.1: 565 | version "3.1.1" 566 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" 567 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 568 | 569 | escape-string-regexp@^4.0.0: 570 | version "4.0.0" 571 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 572 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 573 | 574 | eslint-config-nodebb@1.1.7: 575 | version "1.1.7" 576 | resolved "https://registry.npmjs.org/eslint-config-nodebb/-/eslint-config-nodebb-1.1.7.tgz" 577 | integrity sha512-sdxh4+z0cvzjjpPoubkwl/1+ampG6OERs6vkuM8GzYWkXGBc2vnlBzw4bMpw6Nx6ACe3JBOP3MiVLOBzIGnlMw== 578 | 579 | eslint-scope@^8.3.0: 580 | version "8.3.0" 581 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz" 582 | integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== 583 | dependencies: 584 | esrecurse "^4.3.0" 585 | estraverse "^5.2.0" 586 | 587 | eslint-visitor-keys@^3.4.3: 588 | version "3.4.3" 589 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" 590 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 591 | 592 | eslint-visitor-keys@^4.2.0: 593 | version "4.2.0" 594 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" 595 | integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== 596 | 597 | eslint@9.28.0: 598 | version "9.28.0" 599 | resolved "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz" 600 | integrity sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ== 601 | dependencies: 602 | "@eslint-community/eslint-utils" "^4.2.0" 603 | "@eslint-community/regexpp" "^4.12.1" 604 | "@eslint/config-array" "^0.20.0" 605 | "@eslint/config-helpers" "^0.2.1" 606 | "@eslint/core" "^0.14.0" 607 | "@eslint/eslintrc" "^3.3.1" 608 | "@eslint/js" "9.28.0" 609 | "@eslint/plugin-kit" "^0.3.1" 610 | "@humanfs/node" "^0.16.6" 611 | "@humanwhocodes/module-importer" "^1.0.1" 612 | "@humanwhocodes/retry" "^0.4.2" 613 | "@types/estree" "^1.0.6" 614 | "@types/json-schema" "^7.0.15" 615 | ajv "^6.12.4" 616 | chalk "^4.0.0" 617 | cross-spawn "^7.0.6" 618 | debug "^4.3.2" 619 | escape-string-regexp "^4.0.0" 620 | eslint-scope "^8.3.0" 621 | eslint-visitor-keys "^4.2.0" 622 | espree "^10.3.0" 623 | esquery "^1.5.0" 624 | esutils "^2.0.2" 625 | fast-deep-equal "^3.1.3" 626 | file-entry-cache "^8.0.0" 627 | find-up "^5.0.0" 628 | glob-parent "^6.0.2" 629 | ignore "^5.2.0" 630 | imurmurhash "^0.1.4" 631 | is-glob "^4.0.0" 632 | json-stable-stringify-without-jsonify "^1.0.1" 633 | lodash.merge "^4.6.2" 634 | minimatch "^3.1.2" 635 | natural-compare "^1.4.0" 636 | optionator "^0.9.3" 637 | 638 | espree@^10.0.1, espree@^10.3.0: 639 | version "10.3.0" 640 | resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz" 641 | integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== 642 | dependencies: 643 | acorn "^8.14.0" 644 | acorn-jsx "^5.3.2" 645 | eslint-visitor-keys "^4.2.0" 646 | 647 | esquery@^1.5.0: 648 | version "1.6.0" 649 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" 650 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== 651 | dependencies: 652 | estraverse "^5.1.0" 653 | 654 | esrecurse@^4.3.0: 655 | version "4.3.0" 656 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" 657 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 658 | dependencies: 659 | estraverse "^5.2.0" 660 | 661 | estraverse@^5.1.0, estraverse@^5.2.0: 662 | version "5.3.0" 663 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" 664 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 665 | 666 | esutils@^2.0.2: 667 | version "2.0.3" 668 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 669 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 670 | 671 | eventemitter3@^5.0.1: 672 | version "5.0.1" 673 | resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" 674 | integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== 675 | 676 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 677 | version "3.1.3" 678 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 679 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 680 | 681 | fast-json-stable-stringify@^2.0.0: 682 | version "2.1.0" 683 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 684 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 685 | 686 | fast-levenshtein@^2.0.6: 687 | version "2.0.6" 688 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 689 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 690 | 691 | fast-uri@^3.0.1: 692 | version "3.0.6" 693 | resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz" 694 | integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== 695 | 696 | file-entry-cache@^8.0.0: 697 | version "8.0.0" 698 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" 699 | integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== 700 | dependencies: 701 | flat-cache "^4.0.0" 702 | 703 | fill-range@^7.1.1: 704 | version "7.1.1" 705 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" 706 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 707 | dependencies: 708 | to-regex-range "^5.0.1" 709 | 710 | find-up@^5.0.0: 711 | version "5.0.0" 712 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" 713 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 714 | dependencies: 715 | locate-path "^6.0.0" 716 | path-exists "^4.0.0" 717 | 718 | find-up@^7.0.0: 719 | version "7.0.0" 720 | resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz" 721 | integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== 722 | dependencies: 723 | locate-path "^7.2.0" 724 | path-exists "^5.0.0" 725 | unicorn-magic "^0.1.0" 726 | 727 | flat-cache@^4.0.0: 728 | version "4.0.1" 729 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" 730 | integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== 731 | dependencies: 732 | flatted "^3.2.9" 733 | keyv "^4.5.4" 734 | 735 | flatted@^3.2.9: 736 | version "3.3.3" 737 | resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" 738 | integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== 739 | 740 | get-caller-file@^2.0.5: 741 | version "2.0.5" 742 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 743 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 744 | 745 | get-east-asian-width@^1.0.0: 746 | version "1.3.0" 747 | resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz" 748 | integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== 749 | 750 | git-raw-commits@^4.0.0: 751 | version "4.0.0" 752 | resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz" 753 | integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== 754 | dependencies: 755 | dargs "^8.0.0" 756 | meow "^12.0.1" 757 | split2 "^4.0.0" 758 | 759 | glob-parent@^6.0.2: 760 | version "6.0.2" 761 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" 762 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 763 | dependencies: 764 | is-glob "^4.0.3" 765 | 766 | global-directory@^4.0.1: 767 | version "4.0.1" 768 | resolved "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz" 769 | integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== 770 | dependencies: 771 | ini "4.1.1" 772 | 773 | globals@^14.0.0: 774 | version "14.0.0" 775 | resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" 776 | integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== 777 | 778 | has-flag@^4.0.0: 779 | version "4.0.0" 780 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 781 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 782 | 783 | husky@9.1.7: 784 | version "9.1.7" 785 | resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz" 786 | integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== 787 | 788 | ignore@^5.2.0: 789 | version "5.3.2" 790 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" 791 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== 792 | 793 | import-fresh@^3.2.1, import-fresh@^3.3.0: 794 | version "3.3.1" 795 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" 796 | integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== 797 | dependencies: 798 | parent-module "^1.0.0" 799 | resolve-from "^4.0.0" 800 | 801 | import-meta-resolve@^4.0.0: 802 | version "4.1.0" 803 | resolved "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz" 804 | integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw== 805 | 806 | imurmurhash@^0.1.4: 807 | version "0.1.4" 808 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" 809 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 810 | 811 | ini@4.1.1: 812 | version "4.1.1" 813 | resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz" 814 | integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== 815 | 816 | is-arrayish@^0.2.1: 817 | version "0.2.1" 818 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" 819 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 820 | 821 | is-extglob@^2.1.1: 822 | version "2.1.1" 823 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 824 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 825 | 826 | is-fullwidth-code-point@^3.0.0: 827 | version "3.0.0" 828 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 829 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 830 | 831 | is-fullwidth-code-point@^4.0.0: 832 | version "4.0.0" 833 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" 834 | integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 835 | 836 | is-fullwidth-code-point@^5.0.0: 837 | version "5.0.0" 838 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz" 839 | integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== 840 | dependencies: 841 | get-east-asian-width "^1.0.0" 842 | 843 | is-glob@^4.0.0, is-glob@^4.0.3: 844 | version "4.0.3" 845 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 846 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 847 | dependencies: 848 | is-extglob "^2.1.1" 849 | 850 | is-number@^7.0.0: 851 | version "7.0.0" 852 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 853 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 854 | 855 | is-obj@^2.0.0: 856 | version "2.0.0" 857 | resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" 858 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 859 | 860 | is-text-path@^2.0.0: 861 | version "2.0.0" 862 | resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz" 863 | integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== 864 | dependencies: 865 | text-extensions "^2.0.0" 866 | 867 | isexe@^2.0.0: 868 | version "2.0.0" 869 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 870 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 871 | 872 | jiti@^2.4.1: 873 | version "2.4.2" 874 | resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz" 875 | integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== 876 | 877 | js-tokens@^4.0.0: 878 | version "4.0.0" 879 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 880 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 881 | 882 | js-yaml@^4.1.0: 883 | version "4.1.0" 884 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" 885 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 886 | dependencies: 887 | argparse "^2.0.1" 888 | 889 | json-buffer@3.0.1: 890 | version "3.0.1" 891 | resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" 892 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 893 | 894 | json-parse-even-better-errors@^2.3.0: 895 | version "2.3.1" 896 | resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" 897 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 898 | 899 | json-schema-traverse@^0.4.1: 900 | version "0.4.1" 901 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 902 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 903 | 904 | json-schema-traverse@^1.0.0: 905 | version "1.0.0" 906 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" 907 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 908 | 909 | json-stable-stringify-without-jsonify@^1.0.1: 910 | version "1.0.1" 911 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" 912 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 913 | 914 | jsonparse@^1.2.0: 915 | version "1.3.1" 916 | resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" 917 | integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== 918 | 919 | keyv@^4.5.4: 920 | version "4.5.4" 921 | resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" 922 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 923 | dependencies: 924 | json-buffer "3.0.1" 925 | 926 | levn@^0.4.1: 927 | version "0.4.1" 928 | resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" 929 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 930 | dependencies: 931 | prelude-ls "^1.2.1" 932 | type-check "~0.4.0" 933 | 934 | lilconfig@^3.1.3: 935 | version "3.1.3" 936 | resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz" 937 | integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== 938 | 939 | lines-and-columns@^1.1.6: 940 | version "1.2.4" 941 | resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" 942 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 943 | 944 | lint-staged@16.1.0: 945 | version "16.1.0" 946 | resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.0.tgz" 947 | integrity sha512-HkpQh69XHxgCjObjejBT3s2ILwNjFx8M3nw+tJ/ssBauDlIpkx2RpqWSi1fBgkXLSSXnbR3iEq1NkVtpvV+FLQ== 948 | dependencies: 949 | chalk "^5.4.1" 950 | commander "^14.0.0" 951 | debug "^4.4.1" 952 | lilconfig "^3.1.3" 953 | listr2 "^8.3.3" 954 | micromatch "^4.0.8" 955 | nano-spawn "^1.0.2" 956 | pidtree "^0.6.0" 957 | string-argv "^0.3.2" 958 | yaml "^2.8.0" 959 | 960 | listr2@^8.3.3: 961 | version "8.3.3" 962 | resolved "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz" 963 | integrity sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ== 964 | dependencies: 965 | cli-truncate "^4.0.0" 966 | colorette "^2.0.20" 967 | eventemitter3 "^5.0.1" 968 | log-update "^6.1.0" 969 | rfdc "^1.4.1" 970 | wrap-ansi "^9.0.0" 971 | 972 | locate-path@^6.0.0: 973 | version "6.0.0" 974 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" 975 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 976 | dependencies: 977 | p-locate "^5.0.0" 978 | 979 | locate-path@^7.2.0: 980 | version "7.2.0" 981 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" 982 | integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== 983 | dependencies: 984 | p-locate "^6.0.0" 985 | 986 | lodash.camelcase@^4.3.0: 987 | version "4.3.0" 988 | resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" 989 | integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== 990 | 991 | lodash.isplainobject@^4.0.6: 992 | version "4.0.6" 993 | resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" 994 | integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== 995 | 996 | lodash.kebabcase@^4.1.1: 997 | version "4.1.1" 998 | resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz" 999 | integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== 1000 | 1001 | lodash.merge@^4.6.2: 1002 | version "4.6.2" 1003 | resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" 1004 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1005 | 1006 | lodash.mergewith@^4.6.2: 1007 | version "4.6.2" 1008 | resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" 1009 | integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== 1010 | 1011 | lodash.snakecase@^4.1.1: 1012 | version "4.1.1" 1013 | resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" 1014 | integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== 1015 | 1016 | lodash.startcase@^4.4.0: 1017 | version "4.4.0" 1018 | resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" 1019 | integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== 1020 | 1021 | lodash.uniq@^4.5.0: 1022 | version "4.5.0" 1023 | resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" 1024 | integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== 1025 | 1026 | lodash.upperfirst@^4.3.1: 1027 | version "4.3.1" 1028 | resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" 1029 | integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== 1030 | 1031 | log-update@^6.1.0: 1032 | version "6.1.0" 1033 | resolved "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz" 1034 | integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== 1035 | dependencies: 1036 | ansi-escapes "^7.0.0" 1037 | cli-cursor "^5.0.0" 1038 | slice-ansi "^7.1.0" 1039 | strip-ansi "^7.1.0" 1040 | wrap-ansi "^9.0.0" 1041 | 1042 | meow@^12.0.1: 1043 | version "12.1.1" 1044 | resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz" 1045 | integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== 1046 | 1047 | micromatch@^4.0.8: 1048 | version "4.0.8" 1049 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" 1050 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1051 | dependencies: 1052 | braces "^3.0.3" 1053 | picomatch "^2.3.1" 1054 | 1055 | mimic-function@^5.0.0: 1056 | version "5.0.1" 1057 | resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" 1058 | integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== 1059 | 1060 | minimatch@^3.1.2: 1061 | version "3.1.2" 1062 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 1063 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1064 | dependencies: 1065 | brace-expansion "^1.1.7" 1066 | 1067 | minimist@^1.2.8: 1068 | version "1.2.8" 1069 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" 1070 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1071 | 1072 | ms@^2.1.3: 1073 | version "2.1.3" 1074 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1075 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1076 | 1077 | nano-spawn@^1.0.2: 1078 | version "1.0.2" 1079 | resolved "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.2.tgz" 1080 | integrity sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg== 1081 | 1082 | natural-compare@^1.4.0: 1083 | version "1.4.0" 1084 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" 1085 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1086 | 1087 | onetime@^7.0.0: 1088 | version "7.0.0" 1089 | resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" 1090 | integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== 1091 | dependencies: 1092 | mimic-function "^5.0.0" 1093 | 1094 | optionator@^0.9.3: 1095 | version "0.9.4" 1096 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" 1097 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== 1098 | dependencies: 1099 | deep-is "^0.1.3" 1100 | fast-levenshtein "^2.0.6" 1101 | levn "^0.4.1" 1102 | prelude-ls "^1.2.1" 1103 | type-check "^0.4.0" 1104 | word-wrap "^1.2.5" 1105 | 1106 | p-limit@^3.0.2: 1107 | version "3.1.0" 1108 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 1109 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1110 | dependencies: 1111 | yocto-queue "^0.1.0" 1112 | 1113 | p-limit@^4.0.0: 1114 | version "4.0.0" 1115 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" 1116 | integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== 1117 | dependencies: 1118 | yocto-queue "^1.0.0" 1119 | 1120 | p-locate@^5.0.0: 1121 | version "5.0.0" 1122 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" 1123 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1124 | dependencies: 1125 | p-limit "^3.0.2" 1126 | 1127 | p-locate@^6.0.0: 1128 | version "6.0.0" 1129 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" 1130 | integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== 1131 | dependencies: 1132 | p-limit "^4.0.0" 1133 | 1134 | parent-module@^1.0.0: 1135 | version "1.0.1" 1136 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" 1137 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1138 | dependencies: 1139 | callsites "^3.0.0" 1140 | 1141 | parse-json@^5.2.0: 1142 | version "5.2.0" 1143 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" 1144 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1145 | dependencies: 1146 | "@babel/code-frame" "^7.0.0" 1147 | error-ex "^1.3.1" 1148 | json-parse-even-better-errors "^2.3.0" 1149 | lines-and-columns "^1.1.6" 1150 | 1151 | path-exists@^4.0.0: 1152 | version "4.0.0" 1153 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 1154 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1155 | 1156 | path-exists@^5.0.0: 1157 | version "5.0.0" 1158 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" 1159 | integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== 1160 | 1161 | path-key@^3.1.0: 1162 | version "3.1.1" 1163 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 1164 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1165 | 1166 | picocolors@^1.1.1: 1167 | version "1.1.1" 1168 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" 1169 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 1170 | 1171 | picomatch@^2.3.1: 1172 | version "2.3.1" 1173 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1174 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1175 | 1176 | pidtree@^0.6.0: 1177 | version "0.6.0" 1178 | resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" 1179 | integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== 1180 | 1181 | prelude-ls@^1.2.1: 1182 | version "1.2.1" 1183 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" 1184 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1185 | 1186 | punycode@^2.1.0: 1187 | version "2.3.1" 1188 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" 1189 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 1190 | 1191 | require-directory@^2.1.1: 1192 | version "2.1.1" 1193 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 1194 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1195 | 1196 | require-from-string@^2.0.2: 1197 | version "2.0.2" 1198 | resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" 1199 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1200 | 1201 | resolve-from@^4.0.0: 1202 | version "4.0.0" 1203 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" 1204 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1205 | 1206 | resolve-from@^5.0.0: 1207 | version "5.0.0" 1208 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" 1209 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1210 | 1211 | restore-cursor@^5.0.0: 1212 | version "5.1.0" 1213 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" 1214 | integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== 1215 | dependencies: 1216 | onetime "^7.0.0" 1217 | signal-exit "^4.1.0" 1218 | 1219 | rfdc@^1.4.1: 1220 | version "1.4.1" 1221 | resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" 1222 | integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== 1223 | 1224 | semver@^7.6.0: 1225 | version "7.7.2" 1226 | resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" 1227 | integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== 1228 | 1229 | shebang-command@^2.0.0: 1230 | version "2.0.0" 1231 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 1232 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1233 | dependencies: 1234 | shebang-regex "^3.0.0" 1235 | 1236 | shebang-regex@^3.0.0: 1237 | version "3.0.0" 1238 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 1239 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1240 | 1241 | signal-exit@^4.1.0: 1242 | version "4.1.0" 1243 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" 1244 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 1245 | 1246 | slice-ansi@^5.0.0: 1247 | version "5.0.0" 1248 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" 1249 | integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 1250 | dependencies: 1251 | ansi-styles "^6.0.0" 1252 | is-fullwidth-code-point "^4.0.0" 1253 | 1254 | slice-ansi@^7.1.0: 1255 | version "7.1.0" 1256 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz" 1257 | integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== 1258 | dependencies: 1259 | ansi-styles "^6.2.1" 1260 | is-fullwidth-code-point "^5.0.0" 1261 | 1262 | split2@^4.0.0: 1263 | version "4.2.0" 1264 | resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" 1265 | integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== 1266 | 1267 | string-argv@^0.3.2: 1268 | version "0.3.2" 1269 | resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" 1270 | integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== 1271 | 1272 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 1273 | version "4.2.3" 1274 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1275 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1276 | dependencies: 1277 | emoji-regex "^8.0.0" 1278 | is-fullwidth-code-point "^3.0.0" 1279 | strip-ansi "^6.0.1" 1280 | 1281 | string-width@^7.0.0: 1282 | version "7.2.0" 1283 | resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" 1284 | integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== 1285 | dependencies: 1286 | emoji-regex "^10.3.0" 1287 | get-east-asian-width "^1.0.0" 1288 | strip-ansi "^7.1.0" 1289 | 1290 | strip-ansi@^6.0.0: 1291 | version "6.0.0" 1292 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" 1293 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1294 | dependencies: 1295 | ansi-regex "^5.0.0" 1296 | 1297 | strip-ansi@^6.0.1: 1298 | version "6.0.1" 1299 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1300 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1301 | dependencies: 1302 | ansi-regex "^5.0.1" 1303 | 1304 | strip-ansi@^7.1.0: 1305 | version "7.1.0" 1306 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" 1307 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 1308 | dependencies: 1309 | ansi-regex "^6.0.1" 1310 | 1311 | strip-json-comments@^3.1.1: 1312 | version "3.1.1" 1313 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 1314 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1315 | 1316 | supports-color@^7.1.0: 1317 | version "7.2.0" 1318 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1319 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1320 | dependencies: 1321 | has-flag "^4.0.0" 1322 | 1323 | text-extensions@^2.0.0: 1324 | version "2.4.0" 1325 | resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz" 1326 | integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== 1327 | 1328 | "through@>=2.2.7 <3": 1329 | version "2.3.8" 1330 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1331 | integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 1332 | 1333 | tinyexec@^1.0.0: 1334 | version "1.0.1" 1335 | resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz" 1336 | integrity sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw== 1337 | 1338 | to-regex-range@^5.0.1: 1339 | version "5.0.1" 1340 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1341 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1342 | dependencies: 1343 | is-number "^7.0.0" 1344 | 1345 | type-check@^0.4.0, type-check@~0.4.0: 1346 | version "0.4.0" 1347 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" 1348 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1349 | dependencies: 1350 | prelude-ls "^1.2.1" 1351 | 1352 | undici-types@~6.21.0: 1353 | version "6.21.0" 1354 | resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" 1355 | integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== 1356 | 1357 | unicorn-magic@^0.1.0: 1358 | version "0.1.0" 1359 | resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" 1360 | integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== 1361 | 1362 | uri-js@^4.2.2: 1363 | version "4.4.1" 1364 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 1365 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1366 | dependencies: 1367 | punycode "^2.1.0" 1368 | 1369 | which@^2.0.1: 1370 | version "2.0.2" 1371 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 1372 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1373 | dependencies: 1374 | isexe "^2.0.0" 1375 | 1376 | word-wrap@^1.2.5: 1377 | version "1.2.5" 1378 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" 1379 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== 1380 | 1381 | wrap-ansi@^7.0.0: 1382 | version "7.0.0" 1383 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1384 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1385 | dependencies: 1386 | ansi-styles "^4.0.0" 1387 | string-width "^4.1.0" 1388 | strip-ansi "^6.0.0" 1389 | 1390 | wrap-ansi@^9.0.0: 1391 | version "9.0.0" 1392 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" 1393 | integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== 1394 | dependencies: 1395 | ansi-styles "^6.2.1" 1396 | string-width "^7.0.0" 1397 | strip-ansi "^7.1.0" 1398 | 1399 | y18n@^5.0.5: 1400 | version "5.0.8" 1401 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1402 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1403 | 1404 | yaml@^2.8.0: 1405 | version "2.8.0" 1406 | resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz" 1407 | integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== 1408 | 1409 | yargs-parser@^21.1.1: 1410 | version "21.1.1" 1411 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 1412 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 1413 | 1414 | yargs@^17.0.0: 1415 | version "17.7.2" 1416 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 1417 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 1418 | dependencies: 1419 | cliui "^8.0.1" 1420 | escalade "^3.1.1" 1421 | get-caller-file "^2.0.5" 1422 | require-directory "^2.1.1" 1423 | string-width "^4.2.3" 1424 | y18n "^5.0.5" 1425 | yargs-parser "^21.1.1" 1426 | 1427 | yocto-queue@^0.1.0: 1428 | version "0.1.0" 1429 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 1430 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1431 | 1432 | yocto-queue@^1.0.0: 1433 | version "1.2.1" 1434 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz" 1435 | integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== 1436 | --------------------------------------------------------------------------------