├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github ├── dependabot.yml └── workflows │ └── ci.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── .prettierrc.js ├── .watchmanconfig ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── config └── environment.js ├── index.js ├── lib └── cloudfront.js ├── package.json ├── tests ├── .eslintrc.js ├── helpers │ └── assert.js ├── index-test.js ├── lib │ └── cloudfront-test.js └── runner.js └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [*.hbs] 16 | insert_final_newline = false 17 | 18 | [*.{diff,md}] 19 | trim_trailing_whitespace = false 20 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /node_modules/ 11 | 12 | # misc 13 | /coverage/ 14 | !.* 15 | .*/ 16 | .eslintcache 17 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parserOptions: { 4 | ecmaVersion: 2018, 5 | sourceType: 'module', 6 | }, 7 | extends: ['eslint:recommended', 'plugin:prettier/recommended'], 8 | env: { 9 | browser: true, 10 | }, 11 | rules: {}, 12 | overrides: [ 13 | // node files 14 | { 15 | files: [ 16 | '.eslintrc.js', 17 | '.prettierrc.js', 18 | 'index.js', 19 | 'blueprints/*/index.js', 20 | 'config/**/*.js', 21 | ], 22 | parserOptions: { 23 | sourceType: 'script', 24 | }, 25 | env: { 26 | browser: false, 27 | node: true, 28 | }, 29 | plugins: ['node'], 30 | extends: ['plugin:node/recommended'], 31 | }, 32 | ], 33 | }; 34 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | time: "07:00" 8 | open-pull-requests-limit: 99 9 | reviewers: 10 | - kpfefferle 11 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - master 8 | pull_request: {} 9 | 10 | concurrency: 11 | group: ci-${{ github.head_ref || github.ref }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | test: 16 | name: Run Tests 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v1 21 | - name: Use Node.js 22 | uses: actions/setup-node@v1 23 | with: 24 | node-version: 18.x 25 | cache: yarn 26 | - name: Install Dependencies 27 | run: yarn install 28 | - name: Run Tests 29 | run: | 30 | yarn run lint:js 31 | yarn test 32 | env: 33 | CI: true 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist/ 5 | /tmp/ 6 | 7 | # dependencies 8 | /node_modules/ 9 | 10 | # misc 11 | /.env* 12 | /.pnp* 13 | /.sass-cache 14 | /.eslintcache 15 | /connect.lock 16 | /coverage/ 17 | /libpeerconnection.log 18 | /npm-debug.log* 19 | /testem.log 20 | /yarn-error.log 21 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # compiled output 2 | /dist/ 3 | /tmp/ 4 | 5 | # misc 6 | /.editorconfig 7 | /.env* 8 | /.eslintcache 9 | /.eslintrc.js 10 | /.git/ 11 | /.github/ 12 | /.gitignore 13 | /.prettierignore 14 | /.prettierrc.js 15 | /.watchmanconfig 16 | /CONTRIBUTING.md 17 | /tests/ 18 | /yarn-error.log 19 | /yarn.lock 20 | .gitkeep 21 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /node_modules/ 11 | 12 | # misc 13 | /coverage/ 14 | !.* 15 | .eslintcache 16 | .lint-todo/ 17 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | singleQuote: true, 5 | }; 6 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | The Ember team and community are committed to everyone having a safe and inclusive experience. 2 | 3 | **Our Community Guidelines / Code of Conduct can be found here**: 4 | 5 | http://emberjs.com/guidelines/ 6 | 7 | For a history of updates, see the page history here: 8 | 9 | https://github.com/emberjs/website/commits/master/source/guidelines.html.erb 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How To Contribute 2 | 3 | ## Installation 4 | 5 | * `git clone https://github.com/kpfefferle/ember-cli-deploy-cloudfront.git` 6 | * `cd ember-cli-deploy-cloudfront` 7 | * `yarn install` 8 | 9 | ## Linting 10 | 11 | * `yarn run lint:js` 12 | * `yarn run lint:js:fix` 13 | 14 | ## Running tests 15 | 16 | * `yarn test` 17 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ember-cli-deploy-cloudfront 2 | 3 | [![CI](https://github.com/kpfefferle/ember-cli-deploy-cloudfront/workflows/Node%20CI/badge.svg)](https://github.com/kpfefferle/ember-cli-deploy-cloudfront/actions) 4 | 5 | [![Ember Observer Score](https://emberobserver.com/badges/ember-cli-deploy-cloudfront.svg)](https://emberobserver.com/addons/ember-cli-deploy-cloudfront) 6 | 7 | > An ember-cli-deploy plugin to invalidate cached files on [AWS CloudFront](https://aws.amazon.com/cloudfront/) 8 | 9 | ![](https://ember-cli-deploy.github.io/ember-cli-deploy-version-badges/plugins/ember-cli-deploy-cloudfront.svg) 10 | 11 | This plugin invalidates one or more files in an Amazon CloudFront distribution. It is primarily useful for invalidating an outdated `index.html`, but can be configured to invalidate any other files as well. 12 | 13 | ## What is an ember-cli-deploy plugin? 14 | 15 | A plugin is an addon that can be executed as a part of the ember-cli-deploy pipeline. A plugin will implement one or more of the ember-cli-deploy's pipeline hooks. 16 | 17 | For more information on what plugins are and how they work, please refer to the [Plugin Documentation][1]. 18 | 19 | ## Quick Start 20 | 21 | To get up and running quickly, do the following: 22 | 23 | 1. Install this plugin 24 | 25 | ```bash 26 | $ ember install ember-cli-deploy-cloudfront 27 | ``` 28 | 29 | 1. Place the following configuration into `config/deploy.js` 30 | 31 | ```javascript 32 | ENV.cloudfront = { 33 | accessKeyId: '', 34 | secretAccessKey: '', 35 | distribution: '' 36 | } 37 | ``` 38 | 39 | 1. Run the pipeline with the activation flag 40 | 41 | ```bash 42 | $ ember deploy production --activate 43 | ``` 44 | 45 | ## Installation 46 | Run the following command in your terminal: 47 | 48 | ```bash 49 | ember install ember-cli-deploy-cloudfront 50 | ``` 51 | 52 | ## ember-cli-deploy Hooks Implemented 53 | 54 | For detailed information on what plugin hooks are and how they work, please refer to the [Plugin Documentation][1]. 55 | 56 | - `configure` 57 | - `didActivate` 58 | 59 | ## Configuration Options 60 | 61 | For detailed information on how configuration of plugins works, please refer to the [Plugin Documentation][1]. 62 | 63 | ### accessKeyId 64 | 65 | The AWS access key for the user that has the ability to upload to the `bucket`. If this is left undefined, the normal [AWS SDK credential resolution](https://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html#Setting_AWS_Credentials) will take place. 66 | 67 | *Default:* `undefined` 68 | 69 | ### secretAccessKey 70 | 71 | The AWS secret for the user that has the ability to upload to the `bucket`. This must be defined when `accessKeyId` is defined. 72 | 73 | *Default:* `undefined` 74 | 75 | ### profile 76 | 77 | The AWS profile as definied in ~/.aws/credentials. If this is left undefined, the normal AWS SDK credential resolution will take place. 78 | 79 | *Default:* `undefined` 80 | 81 | ### sessionToken 82 | 83 | The AWS session token for the user that has the ability to manage the CloudFront distribution. This may be required if you are using the [AWS Security Token Service](http://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html). 84 | This requires both `accessKeyId` and `secretAccessKey` to be defined. 85 | 86 | *Default:* `undefined` 87 | 88 | ### distribution (`required`) 89 | 90 | The CloudFront distribution ID that should be invalidated. May be specified as a string for a single distribution (most common) or as an array of strings for multiple distributions. 91 | 92 | *Default:* `undefined` 93 | 94 | ### region 95 | 96 | The AWS region to send service requests to. 97 | 98 | *Default:* `us-east-1` 99 | 100 | ### objectPaths 101 | 102 | CloudFront object paths contained in this array will be invalidated on CloudFront. Each object path must be relative to the CloudFront distribution root and begin with `/`. 103 | 104 | *Default:* `['/index.html']` 105 | 106 | ### invalidationClient 107 | 108 | The client used to create the invalidation. This allows the user the ability to use their own client for invalidating instead of the one provided by this plugin. 109 | 110 | The client specified MUST implement a function called `invalidate`. 111 | 112 | *Default:* the upload client provided by ember-cli-deploy-cloudfront 113 | 114 | ### cloudfrontClient 115 | 116 | The underlying CloudFront library used to create the invalidation with CloudFront. This allows the user to use the default invalidation client provided by this plugin but switch out the underlying library that is used to actually create the invalidation. 117 | 118 | The client specified MUST implement a function called `createInvalidation`. 119 | 120 | *Default:* the default CloudFront library is `aws-sdk` 121 | 122 | ### waitForInvalidation 123 | 124 | If set to `true` the deployment will wait until AWS reports invalidation complete state. This ensures new version is available online after the pipeline is finished. This can be useful to know, for example before running further tests against deployed production. Note that it may take several minutes or more for the invalidation to fully complete, so only use this option if you *really* need to wait for the invalidation to complete. Note that to use this option you'll need to have IAM permissions for `"cloudfront:GetInvalidation"`. See Minimum CloudFront Permissions below. 125 | 126 | *Default:* `false` 127 | 128 | ## Disable in Selected Environments 129 | 130 | If your application doesn't need CloudFront invalidation in an environment where you do need to run other activation hooks, it is possible to whitelist the plugins that you *do* want ember-cli-deploy to run. For an application using the ember-cli-deploy-aws-pack for example, the whitelist would look like this when excluding ember-cli-deploy-cloudfront: 131 | 132 | ```js 133 | ENV.plugins = ['build', 'gzip', 's3', 'manifest']; 134 | ``` 135 | 136 | While this may not be ideal for complicated deploy processes with many plugins, there is an effort currently underway to add per-plugin disabling to ember-cli-deploy: https://github.com/ember-cli-deploy/ember-cli-deploy/pull/349 137 | 138 | ## Configuring AWS 139 | 140 | ### Minimum CloudFront Permissions 141 | 142 | Ensure you have the minimum required permissions configured for the user (`accessKeyId`). A bare minimum policy should have the following permissions: 143 | 144 | ```json 145 | { 146 | "Version": "2012-10-17", 147 | "Statement":[{ 148 | "Effect":"Allow", 149 | "Action":["cloudfront:CreateInvalidation"], 150 | "Resource":"*" 151 | } 152 | ] 153 | } 154 | ``` 155 | 156 | If you have enabled the `waitForInvalidation` option above you'll need to ensure you have the following permissions as a minimum: 157 | 158 | 159 | ```json 160 | { 161 | "Version": "2012-10-17", 162 | "Statement":[{ 163 | "Effect":"Allow", 164 | "Action":[ 165 | "cloudfront:CreateInvalidation", 166 | "cloudfront:GetInvalidation" 167 | ], 168 | "Resource":"*" 169 | } 170 | ] 171 | } 172 | ``` 173 | 174 | The `cloudfront:CreateInvalidation` action is the only one necessary for this addon (unless you've enabled the `waitForInvalidation` option above), though the more permissive `cloudfront:*` permission will also work. AWS does not currently allow CloudFront permissions to be limited by distribution, so the only accepted value for `Resource` is `*` (all distributions). 175 | 176 | ## Why `ember build` and `ember test` don't work 177 | 178 | Since this is a node-only ember-cli addon, this package does not include many files and dependencies which are part of ember-cli's typical `ember build` and `ember test` processes. 179 | 180 | [1]: http://ember-cli-deploy.com/docs/v0.6.x/plugins-overview/ "Plugin Documentation" 181 | -------------------------------------------------------------------------------- /config/environment.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 'use strict'; 3 | 4 | module.exports = function (/* environment, appConfig */) { 5 | return {}; 6 | }; 7 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 'use strict'; 3 | 4 | var RSVP = require('rsvp'); 5 | var BasePlugin = require('ember-cli-deploy-plugin'); 6 | var CloudFront = require('./lib/cloudfront'); 7 | 8 | module.exports = { 9 | name: require('./package').name, 10 | 11 | createDeployPlugin: function (options) { 12 | var DeployPlugin = BasePlugin.extend({ 13 | name: options.name, 14 | defaultConfig: { 15 | region: 'us-east-1', 16 | objectPaths: ['/index.html'], 17 | invalidationClient: function (context) { 18 | return context.invalidationClient; // if you want to provide your own invalidation client to be used instead of one from this plugin 19 | }, 20 | cloudfrontClient: function (context) { 21 | return context.cloudfrontClient; // if you want to provide your own CloudFront client to be used instead of one from aws-sdk 22 | }, 23 | waitForInvalidation: false, 24 | }, 25 | requiredConfig: ['distribution', 'region'], 26 | 27 | didActivate: function (/*context*/) { 28 | var self = this; 29 | 30 | var distribution = this.readConfig('distribution'); 31 | var objectPaths = this.readConfig('objectPaths'); 32 | var waitForInvalidation = this.readConfig('waitForInvalidation'); 33 | 34 | var cloudfront = 35 | this.readConfig('invalidationClient') || 36 | new CloudFront({ 37 | plugin: this, 38 | }); 39 | 40 | var distributions = Array.isArray(distribution) 41 | ? distribution 42 | : [distribution]; 43 | var distributionInvalidations = distributions.map(function ( 44 | distribution 45 | ) { 46 | var options = { 47 | objectPaths: objectPaths, 48 | distribution: distribution, 49 | waitForInvalidation: waitForInvalidation, 50 | }; 51 | 52 | self.log( 53 | 'preparing to create invalidation for CloudFront distribution `' + 54 | distribution + 55 | '`', 56 | { verbose: true } 57 | ); 58 | 59 | return cloudfront 60 | .invalidate(options) 61 | .then(function (invalidationId) { 62 | self.log( 63 | 'invalidation process finished for invalidation ' + 64 | invalidationId, 65 | { verbose: true } 66 | ); 67 | }) 68 | .catch(self._errorMessage.bind(self)); 69 | }); 70 | 71 | return RSVP.Promise.all(distributionInvalidations); 72 | }, 73 | 74 | _errorMessage: function (error) { 75 | this.log(error, { color: 'red' }); 76 | if (error) { 77 | this.log(error.stack, { color: 'red' }); 78 | } 79 | return RSVP.reject(error); 80 | }, 81 | }); 82 | 83 | return new DeployPlugin(); 84 | }, 85 | }; 86 | -------------------------------------------------------------------------------- /lib/cloudfront.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 3 | const CoreObject = require('core-object'); 4 | const RSVP = require('rsvp'); 5 | const { v4: uuidv4 } = require('uuid'); 6 | 7 | module.exports = CoreObject.extend({ 8 | init: function (options) { 9 | this._super(); 10 | this._plugin = options.plugin; 11 | 12 | var AWS = require('aws-sdk'); 13 | const accessKeyId = this._plugin.readConfig('accessKeyId'); 14 | const secretAccessKey = this._plugin.readConfig('secretAccessKey'); 15 | const profile = this._plugin.readConfig('profile'); 16 | 17 | var awsOptions = { 18 | region: this._plugin.readConfig('region'), 19 | }; 20 | 21 | if (this._plugin.readConfig('sessionToken')) { 22 | awsOptions.sessionToken = this._plugin.readConfig('sessionToken'); 23 | } 24 | 25 | if (accessKeyId && secretAccessKey) { 26 | awsOptions.accessKeyId = accessKeyId; 27 | awsOptions.secretAccessKey = secretAccessKey; 28 | } 29 | 30 | if (profile) { 31 | this._plugin.log('Using AWS profile from config', { verbose: true }); 32 | AWS.config.credentials = new AWS.SharedIniFileCredentials({ profile }); 33 | } 34 | 35 | this._client = 36 | this._plugin.readConfig('cloudfrontClient') || 37 | new AWS.CloudFront(awsOptions); 38 | }, 39 | 40 | invalidate: function (options) { 41 | options = options || {}; 42 | 43 | return new RSVP.Promise( 44 | function (resolve, reject) { 45 | var distribution = options.distribution; 46 | var objectPaths = options.objectPaths || []; 47 | if (typeof objectPaths === 'string') { 48 | objectPaths = [objectPaths]; 49 | } 50 | 51 | var params = { 52 | DistributionId: distribution, 53 | InvalidationBatch: { 54 | CallerReference: uuidv4(), 55 | Paths: { 56 | Quantity: objectPaths.length, 57 | Items: objectPaths, 58 | }, 59 | }, 60 | }; 61 | 62 | this._client.createInvalidation( 63 | params, 64 | function (error, data) { 65 | if (error) { 66 | reject(error); 67 | } else { 68 | this._plugin.log( 69 | 'created CloudFront invalidation ' + 70 | data.Invalidation.Id + 71 | ' ok' 72 | ); 73 | if (options.waitForInvalidation) { 74 | var params = { 75 | DistributionId: distribution, 76 | Id: data.Invalidation.Id, 77 | }; 78 | this._plugin.log( 79 | 'waiting for invalidation ' + 80 | data.Invalidation.Id + 81 | ' to complete' 82 | ); 83 | this._client.waitFor( 84 | 'invalidationCompleted', 85 | params, 86 | function (invalidationCompletedError) { 87 | if (invalidationCompletedError) { 88 | reject(invalidationCompletedError); 89 | } else { 90 | resolve(data.Invalidation.Id); 91 | } 92 | }.bind(this) 93 | ); 94 | } else { 95 | resolve(data.Invalidation.Id); 96 | } 97 | } 98 | }.bind(this) 99 | ); 100 | }.bind(this) 101 | ); 102 | }, 103 | }); 104 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ember-cli-deploy-cloudfront", 3 | "version": "5.0.0", 4 | "description": "An ember-cli-deploy plugin to invalidate CloudFront cache.", 5 | "keywords": [ 6 | "ember-addon", 7 | "ember-cli-deploy-plugin" 8 | ], 9 | "license": "MIT", 10 | "author": "Kevin Pfefferle", 11 | "directories": { 12 | "doc": "doc", 13 | "test": "tests" 14 | }, 15 | "repository": "https://github.com/kpfefferle/ember-cli-deploy-cloudfront", 16 | "scripts": { 17 | "lint:js": "eslint . --cache", 18 | "lint:js:fix": "eslint . --fix", 19 | "test": "node tests/runner.js" 20 | }, 21 | "dependencies": { 22 | "aws-sdk": "^2.458.0", 23 | "core-object": "^3.1.5", 24 | "ember-cli-deploy-plugin": "~0.2.9", 25 | "rsvp": "^4.8.3", 26 | "uuid": "^11.0.1" 27 | }, 28 | "devDependencies": { 29 | "chai": "^4.1.2", 30 | "chai-as-promised": "^7.1.1", 31 | "eslint": "^8.0.0", 32 | "eslint-config-prettier": "^10.0.1", 33 | "eslint-plugin-node": "^11.1.0", 34 | "eslint-plugin-prettier": "^4.0.0", 35 | "glob": "^10.2.1", 36 | "mocha": "^11.0.1", 37 | "prettier": "^2.2.1" 38 | }, 39 | "engines": { 40 | "node": "16.* || 18.* || >= 20" 41 | }, 42 | "ember-addon": {}, 43 | "volta": { 44 | "node": "18.18.2", 45 | "yarn": "1.22.19" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /tests/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | embertest: true, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /tests/helpers/assert.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 'use strict'; 3 | 4 | var chai = require('chai'); 5 | var chaiAsPromised = require('chai-as-promised'); 6 | 7 | chai.use(chaiAsPromised); 8 | 9 | module.exports = chai.assert; 10 | -------------------------------------------------------------------------------- /tests/index-test.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | /* eslint-disable no-undef */ 3 | var assert = require('./helpers/assert'); 4 | var plugin = require('../index'); 5 | var BasePlugin = require('ember-cli-deploy-plugin'); 6 | 7 | describe('ember-cli-dpeloy-cloudfront plugin', function () { 8 | var pluginInstance, invalidateAssertions; 9 | var invalidateMock = function (options) { 10 | invalidateAssertions.forEach(function (customAssert) { 11 | customAssert(options); 12 | }); 13 | return Promise.resolve('invalidation_id'); 14 | }; 15 | 16 | beforeEach(function () { 17 | var mockUi = { 18 | messages: [], 19 | verbose: true, 20 | startProgress: function () {}, 21 | write: function () {}, 22 | writeLine: function (message) { 23 | this.messages.push(message); 24 | }, 25 | writeError: function (message) { 26 | this.messages.push(message); 27 | }, 28 | writeDeprecateLine: function (message) { 29 | this.messages.push(message); 30 | }, 31 | writeWarnLine: function (message) { 32 | this.messages.push(message); 33 | }, 34 | }; 35 | invalidateAssertions = []; 36 | pluginInstance = plugin.createDeployPlugin({ 37 | name: 'ember-cli-deploy-cloudfront-test', 38 | }); 39 | var context = { 40 | ui: mockUi, 41 | config: { 42 | 'ember-cli-deploy-cloudfront-test': { 43 | distribution: 'nope', 44 | invalidationClient: { 45 | invalidate: invalidateMock, 46 | }, 47 | }, 48 | }, 49 | }; 50 | pluginInstance.beforeHook(context); 51 | pluginInstance.configure(); 52 | }); 53 | 54 | it('returns a plugin instance', function () { 55 | assert.ok(pluginInstance instanceof BasePlugin); 56 | }); 57 | 58 | describe('objectPaths option', function () { 59 | it('has a default value of objects to invalidate', function () { 60 | invalidateAssertions.push(function (options) { 61 | assert.deepEqual(options.objectPaths, ['/index.html']); 62 | }); 63 | pluginInstance.didActivate(); 64 | }); 65 | 66 | it('allows to customize the objects to invalidate', function () { 67 | pluginInstance.pluginConfig.objectPaths = ['/yep.html']; 68 | invalidateAssertions.push(function (options) { 69 | assert.deepEqual(options.objectPaths, ['/yep.html']); 70 | }); 71 | pluginInstance.didActivate(); 72 | }); 73 | 74 | it('allows to use a function for objectPaths', function () { 75 | pluginInstance.pluginConfig.objectPaths = 76 | function (/*config, context, configHelper*/) { 77 | return ['/dynamic_filename.html']; 78 | }; 79 | invalidateAssertions.push(function (options) { 80 | assert.deepEqual(options.objectPaths, ['/dynamic_filename.html']); 81 | }); 82 | pluginInstance.didActivate(); 83 | }); 84 | }); 85 | }); 86 | -------------------------------------------------------------------------------- /tests/lib/cloudfront-test.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | /* eslint-disable no-undef */ 3 | /* eslint-disable no-unused-vars */ 4 | var assert = require('../helpers/assert'); 5 | var RSVP = require('rsvp'); 6 | 7 | describe('cloudfront', function () { 8 | var CloudFront, validParams, validOptions, cloudfrontClient, plugin, subject; 9 | 10 | before(function () { 11 | process.env['AWS_ACCESS_KEY_ID'] = 'set_via_env_var'; 12 | process.env['AWS_SECRET_ACCESS_KEY'] = 'set_via_env_var'; 13 | 14 | CloudFront = require('../../lib/cloudfront'); 15 | }); 16 | 17 | beforeEach(function () { 18 | validResponse = { 19 | Invalidation: { 20 | Id: 'ID', 21 | }, 22 | }; 23 | cloudfrontClient = { 24 | createInvalidation: function (params, cb) { 25 | cb(null, validResponse); 26 | }, 27 | }; 28 | plugin = { 29 | readConfig: function (propertyName) { 30 | if (propertyName === 'cloudfrontClient') { 31 | return cloudfrontClient; 32 | } 33 | }, 34 | log: function noop() {}, 35 | }; 36 | subject = new CloudFront({ 37 | plugin: plugin, 38 | }); 39 | validOptions = { 40 | objectPaths: ['/index.html'], 41 | distribution: 'ABCDEFG', 42 | }; 43 | }); 44 | 45 | describe('#init', function () { 46 | context('with a custom CloudFront client', function () { 47 | it('uses the custom client', function () { 48 | assert.equal(cloudfrontClient, subject._client); 49 | }); 50 | }); 51 | 52 | context('using the aws-sdk CloudFront client', function () { 53 | beforeEach(function () { 54 | plugin.readConfig = function (propertyName) {}; 55 | subject = new CloudFront({ plugin: plugin }); 56 | }); 57 | 58 | it('uses the AWS client', function () { 59 | var AWS = require('aws-sdk'); 60 | assert.ok(subject._client instanceof AWS.CloudFront); 61 | }); 62 | 63 | context('with credentials in plugin config', function () { 64 | beforeEach(function () { 65 | plugin.readConfig = function (propertyName) { 66 | if ( 67 | propertyName === 'accessKeyId' || 68 | propertyName === 'secretAccessKey' 69 | ) { 70 | return 'set_via_config'; 71 | } 72 | }; 73 | subject = new CloudFront({ plugin: plugin }); 74 | }); 75 | 76 | it('uses the configured credentials', function () { 77 | assert.equal( 78 | 'set_via_config', 79 | subject._client.config.credentials.accessKeyId 80 | ); 81 | assert.equal( 82 | 'set_via_config', 83 | subject._client.config.credentials.secretAccessKey 84 | ); 85 | }); 86 | }); 87 | 88 | context('with no credentials in the plugin config', function () { 89 | beforeEach(function () { 90 | plugin.readConfig = function (propertyName) {}; 91 | subject = new CloudFront({ plugin: plugin }); 92 | }); 93 | 94 | it('falls back to default AWS credential resolution', function () { 95 | assert.equal( 96 | 'set_via_env_var', 97 | subject._client.config.credentials.accessKeyId 98 | ); 99 | assert.equal( 100 | 'set_via_env_var', 101 | subject._client.config.credentials.secretAccessKey 102 | ); 103 | }); 104 | }); 105 | }); 106 | }); 107 | 108 | describe('#invalidate', function () { 109 | it('resolves if invalidation succeeds', function () { 110 | var promises = subject.invalidate(validOptions); 111 | 112 | return assert.isFulfilled(promises); 113 | }); 114 | 115 | it('rejects if invalidation fails', function () { 116 | cloudfrontClient.createInvalidation = function (params, cb) { 117 | cb('error creating invalidation'); 118 | }; 119 | 120 | var promises = subject.invalidate(validOptions); 121 | 122 | return assert.isRejected(promises); 123 | }); 124 | 125 | describe('creating the invalidation with CloudFront', function () { 126 | it('sends the correct params', function () { 127 | var cloudfrontParams; 128 | cloudfrontClient.createInvalidation = function (params, cb) { 129 | cloudfrontParams = params; 130 | cb(null, validResponse); 131 | }; 132 | 133 | var promises = subject.invalidate(validOptions); 134 | 135 | return assert.isFulfilled(promises).then(function () { 136 | assert.equal( 137 | cloudfrontParams.DistributionId, 138 | validOptions.distribution 139 | ); 140 | assert.isDefined(cloudfrontParams.InvalidationBatch.CallerReference); 141 | assert.equal( 142 | cloudfrontParams.InvalidationBatch.Paths.Quantity, 143 | validOptions.objectPaths.length 144 | ); 145 | assert.deepEqual( 146 | cloudfrontParams.InvalidationBatch.Paths.Items, 147 | validOptions.objectPaths 148 | ); 149 | }); 150 | }); 151 | 152 | describe('waiting for invalidation', function () { 153 | beforeEach(function () { 154 | subject = new CloudFront({ 155 | plugin: plugin, 156 | }); 157 | validOptions.waitForInvalidation = true; 158 | }); 159 | 160 | it('should not quit until validation is finished', function () { 161 | var callback = function () {}; 162 | cloudfrontClient.waitFor = function (state, params, cb) { 163 | callback = cb; 164 | }; 165 | 166 | var promise = subject.invalidate(validOptions); 167 | 168 | assert.isUndefined(promise._result); 169 | 170 | callback(null, validResponse); 171 | assert.instanceOf(promise, RSVP.Promise); 172 | 173 | assert.equal(promise._result, 'ID'); 174 | }); 175 | }); 176 | }); 177 | }); 178 | }); 179 | -------------------------------------------------------------------------------- /tests/runner.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 'use strict'; 3 | 4 | var glob = require('glob'); 5 | var Mocha = require('mocha'); 6 | 7 | var mocha = new Mocha({ 8 | reporter: 'spec', 9 | }); 10 | 11 | var arg = process.argv[2]; 12 | var root = 'tests/'; 13 | 14 | function addFiles(mocha, files) { 15 | glob.sync(root + files).forEach(mocha.addFile.bind(mocha)); 16 | } 17 | 18 | addFiles(mocha, '**/*-test.js'); 19 | 20 | if (arg === 'all') { 21 | addFiles(mocha, '**/*-test-slow.js'); 22 | } 23 | 24 | mocha.run(function (failures) { 25 | process.on('exit', function () { 26 | process.exit(failures); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aashutoshrathi/word-wrap@^1.2.3": 6 | version "1.2.6" 7 | resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" 8 | integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== 9 | 10 | "@eslint-community/eslint-utils@^4.2.0": 11 | version "4.4.0" 12 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 13 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 14 | dependencies: 15 | eslint-visitor-keys "^3.3.0" 16 | 17 | "@eslint-community/regexpp@^4.6.1": 18 | version "4.10.0" 19 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" 20 | integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== 21 | 22 | "@eslint/eslintrc@^2.1.3": 23 | version "2.1.3" 24 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" 25 | integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== 26 | dependencies: 27 | ajv "^6.12.4" 28 | debug "^4.3.2" 29 | espree "^9.6.0" 30 | globals "^13.19.0" 31 | ignore "^5.2.0" 32 | import-fresh "^3.2.1" 33 | js-yaml "^4.1.0" 34 | minimatch "^3.1.2" 35 | strip-json-comments "^3.1.1" 36 | 37 | "@eslint/js@8.53.0": 38 | version "8.53.0" 39 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" 40 | integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== 41 | 42 | "@humanwhocodes/config-array@^0.11.13": 43 | version "0.11.13" 44 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" 45 | integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== 46 | dependencies: 47 | "@humanwhocodes/object-schema" "^2.0.1" 48 | debug "^4.1.1" 49 | minimatch "^3.0.5" 50 | 51 | "@humanwhocodes/module-importer@^1.0.1": 52 | version "1.0.1" 53 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 54 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 55 | 56 | "@humanwhocodes/object-schema@^2.0.1": 57 | version "2.0.1" 58 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" 59 | integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== 60 | 61 | "@isaacs/cliui@^8.0.2": 62 | version "8.0.2" 63 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 64 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 65 | dependencies: 66 | string-width "^5.1.2" 67 | string-width-cjs "npm:string-width@^4.2.0" 68 | strip-ansi "^7.0.1" 69 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 70 | wrap-ansi "^8.1.0" 71 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 72 | 73 | "@nodelib/fs.scandir@2.1.5": 74 | version "2.1.5" 75 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 76 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 77 | dependencies: 78 | "@nodelib/fs.stat" "2.0.5" 79 | run-parallel "^1.1.9" 80 | 81 | "@nodelib/fs.stat@2.0.5": 82 | version "2.0.5" 83 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 84 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 85 | 86 | "@nodelib/fs.walk@^1.2.8": 87 | version "1.2.8" 88 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 89 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 90 | dependencies: 91 | "@nodelib/fs.scandir" "2.1.5" 92 | fastq "^1.6.0" 93 | 94 | "@pkgjs/parseargs@^0.11.0": 95 | version "0.11.0" 96 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 97 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 98 | 99 | "@ungap/structured-clone@^1.2.0": 100 | version "1.2.0" 101 | resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" 102 | integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== 103 | 104 | acorn-jsx@^5.3.2: 105 | version "5.3.2" 106 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 107 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 108 | 109 | acorn@^8.9.0: 110 | version "8.11.2" 111 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" 112 | integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== 113 | 114 | ajv@^6.12.4: 115 | version "6.12.6" 116 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 117 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 118 | dependencies: 119 | fast-deep-equal "^3.1.1" 120 | fast-json-stable-stringify "^2.0.0" 121 | json-schema-traverse "^0.4.1" 122 | uri-js "^4.2.2" 123 | 124 | ansi-regex@^2.0.0: 125 | version "2.1.1" 126 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 127 | integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== 128 | 129 | ansi-regex@^5.0.1: 130 | version "5.0.1" 131 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 132 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 133 | 134 | ansi-regex@^6.0.1: 135 | version "6.0.1" 136 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 137 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 138 | 139 | ansi-styles@^2.2.1: 140 | version "2.2.1" 141 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 142 | integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== 143 | 144 | ansi-styles@^3.2.1: 145 | version "3.2.1" 146 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 147 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 148 | dependencies: 149 | color-convert "^1.9.0" 150 | 151 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 152 | version "4.3.0" 153 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 154 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 155 | dependencies: 156 | color-convert "^2.0.1" 157 | 158 | ansi-styles@^6.1.0: 159 | version "6.2.1" 160 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 161 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 162 | 163 | argparse@^2.0.1: 164 | version "2.0.1" 165 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 166 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 167 | 168 | assertion-error@^1.1.0: 169 | version "1.1.0" 170 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 171 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 172 | 173 | available-typed-arrays@^1.0.5: 174 | version "1.0.5" 175 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" 176 | integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== 177 | 178 | aws-sdk@^2.458.0: 179 | version "2.1692.0" 180 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1692.0.tgz#9dac5f7bfcc5ab45825cc8591b12753aa7d2902c" 181 | integrity sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw== 182 | dependencies: 183 | buffer "4.9.2" 184 | events "1.1.1" 185 | ieee754 "1.1.13" 186 | jmespath "0.16.0" 187 | querystring "0.2.0" 188 | sax "1.2.1" 189 | url "0.10.3" 190 | util "^0.12.4" 191 | uuid "8.0.0" 192 | xml2js "0.6.2" 193 | 194 | balanced-match@^1.0.0: 195 | version "1.0.2" 196 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 197 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 198 | 199 | base64-js@^1.0.2: 200 | version "1.5.1" 201 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 202 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 203 | 204 | brace-expansion@^1.1.7: 205 | version "1.1.11" 206 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 207 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 208 | dependencies: 209 | balanced-match "^1.0.0" 210 | concat-map "0.0.1" 211 | 212 | brace-expansion@^2.0.1: 213 | version "2.0.1" 214 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 215 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 216 | dependencies: 217 | balanced-match "^1.0.0" 218 | 219 | browser-stdout@^1.3.1: 220 | version "1.3.1" 221 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 222 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 223 | 224 | buffer@4.9.2: 225 | version "4.9.2" 226 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" 227 | integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== 228 | dependencies: 229 | base64-js "^1.0.2" 230 | ieee754 "^1.1.4" 231 | isarray "^1.0.0" 232 | 233 | call-bind@^1.0.2, call-bind@^1.0.4: 234 | version "1.0.5" 235 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" 236 | integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== 237 | dependencies: 238 | function-bind "^1.1.2" 239 | get-intrinsic "^1.2.1" 240 | set-function-length "^1.1.1" 241 | 242 | callsites@^3.0.0: 243 | version "3.1.0" 244 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 245 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 246 | 247 | camelcase@^6.0.0: 248 | version "6.3.0" 249 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 250 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 251 | 252 | chai-as-promised@^7.1.1: 253 | version "7.1.2" 254 | resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041" 255 | integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== 256 | dependencies: 257 | check-error "^1.0.2" 258 | 259 | chai@^4.1.2: 260 | version "4.5.0" 261 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" 262 | integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== 263 | dependencies: 264 | assertion-error "^1.1.0" 265 | check-error "^1.0.3" 266 | deep-eql "^4.1.3" 267 | get-func-name "^2.0.2" 268 | loupe "^2.3.6" 269 | pathval "^1.1.1" 270 | type-detect "^4.1.0" 271 | 272 | chalk@^1.0.0, chalk@^1.1.3: 273 | version "1.1.3" 274 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 275 | integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== 276 | dependencies: 277 | ansi-styles "^2.2.1" 278 | escape-string-regexp "^1.0.2" 279 | has-ansi "^2.0.0" 280 | strip-ansi "^3.0.0" 281 | supports-color "^2.0.0" 282 | 283 | chalk@^2.0.0: 284 | version "2.4.2" 285 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 286 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 287 | dependencies: 288 | ansi-styles "^3.2.1" 289 | escape-string-regexp "^1.0.5" 290 | supports-color "^5.3.0" 291 | 292 | chalk@^4.0.0, chalk@^4.1.0: 293 | version "4.1.2" 294 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 295 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 296 | dependencies: 297 | ansi-styles "^4.1.0" 298 | supports-color "^7.1.0" 299 | 300 | check-error@^1.0.2, check-error@^1.0.3: 301 | version "1.0.3" 302 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" 303 | integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== 304 | dependencies: 305 | get-func-name "^2.0.2" 306 | 307 | chokidar@^4.0.1: 308 | version "4.0.3" 309 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" 310 | integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== 311 | dependencies: 312 | readdirp "^4.0.1" 313 | 314 | cliui@^8.0.1: 315 | version "8.0.1" 316 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 317 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 318 | dependencies: 319 | string-width "^4.2.0" 320 | strip-ansi "^6.0.1" 321 | wrap-ansi "^7.0.0" 322 | 323 | color-convert@^1.9.0: 324 | version "1.9.3" 325 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 326 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 327 | dependencies: 328 | color-name "1.1.3" 329 | 330 | color-convert@^2.0.1: 331 | version "2.0.1" 332 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 333 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 334 | dependencies: 335 | color-name "~1.1.4" 336 | 337 | color-name@1.1.3: 338 | version "1.1.3" 339 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 340 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 341 | 342 | color-name@~1.1.4: 343 | version "1.1.4" 344 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 345 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 346 | 347 | concat-map@0.0.1: 348 | version "0.0.1" 349 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 350 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 351 | 352 | core-object@2.0.6: 353 | version "2.0.6" 354 | resolved "https://registry.yarnpkg.com/core-object/-/core-object-2.0.6.tgz#60134b9c40ff69b27bc15e82db945e4df782961b" 355 | integrity sha512-gS1NpJFBKh/r+cYdNeaQ+ab/+2rRBq5B7nUgdXVZ9brCgpWnhYXY//tyBooYXxyuQZC9zE5yUAeCdokcwUajlQ== 356 | dependencies: 357 | chalk "^1.1.3" 358 | 359 | core-object@^3.1.5: 360 | version "3.1.5" 361 | resolved "https://registry.yarnpkg.com/core-object/-/core-object-3.1.5.tgz#fa627b87502adc98045e44678e9a8ec3b9c0d2a9" 362 | integrity sha512-sA2/4+/PZ/KV6CKgjrVrrUVBKCkdDO02CUlQ0YKTQoYUwPYNOtOAcWlbYhd5v/1JqYaA6oZ4sDlOU4ppVw6Wbg== 363 | dependencies: 364 | chalk "^2.0.0" 365 | 366 | cross-spawn@^7.0.0, cross-spawn@^7.0.2: 367 | version "7.0.6" 368 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" 369 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 370 | dependencies: 371 | path-key "^3.1.0" 372 | shebang-command "^2.0.0" 373 | which "^2.0.1" 374 | 375 | debug@^4.1.1, debug@^4.3.2, debug@^4.3.5: 376 | version "4.3.5" 377 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" 378 | integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== 379 | dependencies: 380 | ms "2.1.2" 381 | 382 | decamelize@^4.0.0: 383 | version "4.0.0" 384 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 385 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 386 | 387 | deep-eql@^4.1.3: 388 | version "4.1.3" 389 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" 390 | integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== 391 | dependencies: 392 | type-detect "^4.0.0" 393 | 394 | deep-is@^0.1.3: 395 | version "0.1.4" 396 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 397 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 398 | 399 | define-data-property@^1.1.1: 400 | version "1.1.1" 401 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" 402 | integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== 403 | dependencies: 404 | get-intrinsic "^1.2.1" 405 | gopd "^1.0.1" 406 | has-property-descriptors "^1.0.0" 407 | 408 | diff@^7.0.0: 409 | version "7.0.0" 410 | resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" 411 | integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== 412 | 413 | doctrine@^3.0.0: 414 | version "3.0.0" 415 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 416 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 417 | dependencies: 418 | esutils "^2.0.2" 419 | 420 | eastasianwidth@^0.2.0: 421 | version "0.2.0" 422 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 423 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 424 | 425 | ember-cli-deploy-plugin@~0.2.9: 426 | version "0.2.9" 427 | resolved "https://registry.yarnpkg.com/ember-cli-deploy-plugin/-/ember-cli-deploy-plugin-0.2.9.tgz#a3d395b8adad7ef68d8bacdd0b0f4a61bcf9e651" 428 | integrity sha512-6Cq3XbjZLi4vFYcyF0xfVr5tJdcnNY8kXZFY76qeN3VoKpwTfwiYMc45I8N9DsH8zog8xzHO8YL5RU58qKiqUQ== 429 | dependencies: 430 | chalk "^1.0.0" 431 | core-object "2.0.6" 432 | lodash.clonedeep "^4.5.0" 433 | 434 | emoji-regex@^8.0.0: 435 | version "8.0.0" 436 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 437 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 438 | 439 | emoji-regex@^9.2.2: 440 | version "9.2.2" 441 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 442 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 443 | 444 | escalade@^3.1.1: 445 | version "3.1.1" 446 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 447 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 448 | 449 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 450 | version "1.0.5" 451 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 452 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 453 | 454 | escape-string-regexp@^4.0.0: 455 | version "4.0.0" 456 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 457 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 458 | 459 | eslint-config-prettier@^10.0.1: 460 | version "10.1.5" 461 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" 462 | integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw== 463 | 464 | eslint-plugin-es@^3.0.0: 465 | version "3.0.1" 466 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" 467 | integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== 468 | dependencies: 469 | eslint-utils "^2.0.0" 470 | regexpp "^3.0.0" 471 | 472 | eslint-plugin-node@^11.1.0: 473 | version "11.1.0" 474 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" 475 | integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== 476 | dependencies: 477 | eslint-plugin-es "^3.0.0" 478 | eslint-utils "^2.0.0" 479 | ignore "^5.1.1" 480 | minimatch "^3.0.4" 481 | resolve "^1.10.1" 482 | semver "^6.1.0" 483 | 484 | eslint-plugin-prettier@^4.0.0: 485 | version "4.2.1" 486 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" 487 | integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== 488 | dependencies: 489 | prettier-linter-helpers "^1.0.0" 490 | 491 | eslint-scope@^7.2.2: 492 | version "7.2.2" 493 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" 494 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 495 | dependencies: 496 | esrecurse "^4.3.0" 497 | estraverse "^5.2.0" 498 | 499 | eslint-utils@^2.0.0: 500 | version "2.1.0" 501 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 502 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 503 | dependencies: 504 | eslint-visitor-keys "^1.1.0" 505 | 506 | eslint-visitor-keys@^1.1.0: 507 | version "1.3.0" 508 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 509 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 510 | 511 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: 512 | version "3.4.3" 513 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 514 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 515 | 516 | eslint@^8.0.0: 517 | version "8.53.0" 518 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" 519 | integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== 520 | dependencies: 521 | "@eslint-community/eslint-utils" "^4.2.0" 522 | "@eslint-community/regexpp" "^4.6.1" 523 | "@eslint/eslintrc" "^2.1.3" 524 | "@eslint/js" "8.53.0" 525 | "@humanwhocodes/config-array" "^0.11.13" 526 | "@humanwhocodes/module-importer" "^1.0.1" 527 | "@nodelib/fs.walk" "^1.2.8" 528 | "@ungap/structured-clone" "^1.2.0" 529 | ajv "^6.12.4" 530 | chalk "^4.0.0" 531 | cross-spawn "^7.0.2" 532 | debug "^4.3.2" 533 | doctrine "^3.0.0" 534 | escape-string-regexp "^4.0.0" 535 | eslint-scope "^7.2.2" 536 | eslint-visitor-keys "^3.4.3" 537 | espree "^9.6.1" 538 | esquery "^1.4.2" 539 | esutils "^2.0.2" 540 | fast-deep-equal "^3.1.3" 541 | file-entry-cache "^6.0.1" 542 | find-up "^5.0.0" 543 | glob-parent "^6.0.2" 544 | globals "^13.19.0" 545 | graphemer "^1.4.0" 546 | ignore "^5.2.0" 547 | imurmurhash "^0.1.4" 548 | is-glob "^4.0.0" 549 | is-path-inside "^3.0.3" 550 | js-yaml "^4.1.0" 551 | json-stable-stringify-without-jsonify "^1.0.1" 552 | levn "^0.4.1" 553 | lodash.merge "^4.6.2" 554 | minimatch "^3.1.2" 555 | natural-compare "^1.4.0" 556 | optionator "^0.9.3" 557 | strip-ansi "^6.0.1" 558 | text-table "^0.2.0" 559 | 560 | espree@^9.6.0, espree@^9.6.1: 561 | version "9.6.1" 562 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" 563 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== 564 | dependencies: 565 | acorn "^8.9.0" 566 | acorn-jsx "^5.3.2" 567 | eslint-visitor-keys "^3.4.1" 568 | 569 | esquery@^1.4.2: 570 | version "1.5.0" 571 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" 572 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== 573 | dependencies: 574 | estraverse "^5.1.0" 575 | 576 | esrecurse@^4.3.0: 577 | version "4.3.0" 578 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 579 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 580 | dependencies: 581 | estraverse "^5.2.0" 582 | 583 | estraverse@^5.1.0, estraverse@^5.2.0: 584 | version "5.3.0" 585 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 586 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 587 | 588 | esutils@^2.0.2: 589 | version "2.0.3" 590 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 591 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 592 | 593 | events@1.1.1: 594 | version "1.1.1" 595 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 596 | integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== 597 | 598 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 599 | version "3.1.3" 600 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 601 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 602 | 603 | fast-diff@^1.1.2: 604 | version "1.3.0" 605 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" 606 | integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== 607 | 608 | fast-json-stable-stringify@^2.0.0: 609 | version "2.1.0" 610 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 611 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 612 | 613 | fast-levenshtein@^2.0.6: 614 | version "2.0.6" 615 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 616 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 617 | 618 | fastq@^1.6.0: 619 | version "1.15.0" 620 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 621 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 622 | dependencies: 623 | reusify "^1.0.4" 624 | 625 | file-entry-cache@^6.0.1: 626 | version "6.0.1" 627 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 628 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 629 | dependencies: 630 | flat-cache "^3.0.4" 631 | 632 | find-up@^5.0.0: 633 | version "5.0.0" 634 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 635 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 636 | dependencies: 637 | locate-path "^6.0.0" 638 | path-exists "^4.0.0" 639 | 640 | flat-cache@^3.0.4: 641 | version "3.1.1" 642 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" 643 | integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== 644 | dependencies: 645 | flatted "^3.2.9" 646 | keyv "^4.5.3" 647 | rimraf "^3.0.2" 648 | 649 | flat@^5.0.2: 650 | version "5.0.2" 651 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 652 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 653 | 654 | flatted@^3.2.9: 655 | version "3.2.9" 656 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" 657 | integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== 658 | 659 | for-each@^0.3.3: 660 | version "0.3.3" 661 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 662 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 663 | dependencies: 664 | is-callable "^1.1.3" 665 | 666 | foreground-child@^3.1.0: 667 | version "3.1.1" 668 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" 669 | integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== 670 | dependencies: 671 | cross-spawn "^7.0.0" 672 | signal-exit "^4.0.1" 673 | 674 | fs.realpath@^1.0.0: 675 | version "1.0.0" 676 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 677 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 678 | 679 | function-bind@^1.1.2: 680 | version "1.1.2" 681 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 682 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 683 | 684 | get-caller-file@^2.0.5: 685 | version "2.0.5" 686 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 687 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 688 | 689 | get-func-name@^2.0.1, get-func-name@^2.0.2: 690 | version "2.0.2" 691 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" 692 | integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== 693 | 694 | get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: 695 | version "1.2.2" 696 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" 697 | integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== 698 | dependencies: 699 | function-bind "^1.1.2" 700 | has-proto "^1.0.1" 701 | has-symbols "^1.0.3" 702 | hasown "^2.0.0" 703 | 704 | glob-parent@^6.0.2: 705 | version "6.0.2" 706 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 707 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 708 | dependencies: 709 | is-glob "^4.0.3" 710 | 711 | glob@^10.2.1, glob@^10.4.5: 712 | version "10.4.5" 713 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" 714 | integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== 715 | dependencies: 716 | foreground-child "^3.1.0" 717 | jackspeak "^3.1.2" 718 | minimatch "^9.0.4" 719 | minipass "^7.1.2" 720 | package-json-from-dist "^1.0.0" 721 | path-scurry "^1.11.1" 722 | 723 | glob@^7.1.3: 724 | version "7.2.3" 725 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 726 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 727 | dependencies: 728 | fs.realpath "^1.0.0" 729 | inflight "^1.0.4" 730 | inherits "2" 731 | minimatch "^3.1.1" 732 | once "^1.3.0" 733 | path-is-absolute "^1.0.0" 734 | 735 | globals@^13.19.0: 736 | version "13.23.0" 737 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" 738 | integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== 739 | dependencies: 740 | type-fest "^0.20.2" 741 | 742 | gopd@^1.0.1: 743 | version "1.0.1" 744 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 745 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 746 | dependencies: 747 | get-intrinsic "^1.1.3" 748 | 749 | graphemer@^1.4.0: 750 | version "1.4.0" 751 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 752 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 753 | 754 | has-ansi@^2.0.0: 755 | version "2.0.0" 756 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 757 | integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== 758 | dependencies: 759 | ansi-regex "^2.0.0" 760 | 761 | has-flag@^3.0.0: 762 | version "3.0.0" 763 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 764 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 765 | 766 | has-flag@^4.0.0: 767 | version "4.0.0" 768 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 769 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 770 | 771 | has-property-descriptors@^1.0.0: 772 | version "1.0.1" 773 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" 774 | integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== 775 | dependencies: 776 | get-intrinsic "^1.2.2" 777 | 778 | has-proto@^1.0.1: 779 | version "1.0.1" 780 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" 781 | integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== 782 | 783 | has-symbols@^1.0.2, has-symbols@^1.0.3: 784 | version "1.0.3" 785 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 786 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 787 | 788 | has-tostringtag@^1.0.0: 789 | version "1.0.0" 790 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 791 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 792 | dependencies: 793 | has-symbols "^1.0.2" 794 | 795 | hasown@^2.0.0: 796 | version "2.0.0" 797 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" 798 | integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== 799 | dependencies: 800 | function-bind "^1.1.2" 801 | 802 | he@^1.2.0: 803 | version "1.2.0" 804 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 805 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 806 | 807 | ieee754@1.1.13: 808 | version "1.1.13" 809 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 810 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 811 | 812 | ieee754@^1.1.4: 813 | version "1.2.1" 814 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 815 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 816 | 817 | ignore@^5.1.1, ignore@^5.2.0: 818 | version "5.2.4" 819 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" 820 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== 821 | 822 | import-fresh@^3.2.1: 823 | version "3.3.0" 824 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 825 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 826 | dependencies: 827 | parent-module "^1.0.0" 828 | resolve-from "^4.0.0" 829 | 830 | imurmurhash@^0.1.4: 831 | version "0.1.4" 832 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 833 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 834 | 835 | inflight@^1.0.4: 836 | version "1.0.6" 837 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 838 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 839 | dependencies: 840 | once "^1.3.0" 841 | wrappy "1" 842 | 843 | inherits@2, inherits@^2.0.3: 844 | version "2.0.4" 845 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 846 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 847 | 848 | is-arguments@^1.0.4: 849 | version "1.1.1" 850 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" 851 | integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== 852 | dependencies: 853 | call-bind "^1.0.2" 854 | has-tostringtag "^1.0.0" 855 | 856 | is-callable@^1.1.3: 857 | version "1.2.7" 858 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 859 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 860 | 861 | is-core-module@^2.13.0: 862 | version "2.13.1" 863 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" 864 | integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== 865 | dependencies: 866 | hasown "^2.0.0" 867 | 868 | is-extglob@^2.1.1: 869 | version "2.1.1" 870 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 871 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 872 | 873 | is-fullwidth-code-point@^3.0.0: 874 | version "3.0.0" 875 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 876 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 877 | 878 | is-generator-function@^1.0.7: 879 | version "1.0.10" 880 | resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" 881 | integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== 882 | dependencies: 883 | has-tostringtag "^1.0.0" 884 | 885 | is-glob@^4.0.0, is-glob@^4.0.3: 886 | version "4.0.3" 887 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 888 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 889 | dependencies: 890 | is-extglob "^2.1.1" 891 | 892 | is-path-inside@^3.0.3: 893 | version "3.0.3" 894 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 895 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 896 | 897 | is-plain-obj@^2.1.0: 898 | version "2.1.0" 899 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 900 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 901 | 902 | is-typed-array@^1.1.3: 903 | version "1.1.12" 904 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" 905 | integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== 906 | dependencies: 907 | which-typed-array "^1.1.11" 908 | 909 | is-unicode-supported@^0.1.0: 910 | version "0.1.0" 911 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 912 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 913 | 914 | isarray@^1.0.0: 915 | version "1.0.0" 916 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 917 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 918 | 919 | isexe@^2.0.0: 920 | version "2.0.0" 921 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 922 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 923 | 924 | jackspeak@^3.1.2: 925 | version "3.1.2" 926 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.1.2.tgz#eada67ea949c6b71de50f1b09c92a961897b90ab" 927 | integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ== 928 | dependencies: 929 | "@isaacs/cliui" "^8.0.2" 930 | optionalDependencies: 931 | "@pkgjs/parseargs" "^0.11.0" 932 | 933 | jmespath@0.16.0: 934 | version "0.16.0" 935 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" 936 | integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== 937 | 938 | js-yaml@^4.1.0: 939 | version "4.1.0" 940 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 941 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 942 | dependencies: 943 | argparse "^2.0.1" 944 | 945 | json-buffer@3.0.1: 946 | version "3.0.1" 947 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 948 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 949 | 950 | json-schema-traverse@^0.4.1: 951 | version "0.4.1" 952 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 953 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 954 | 955 | json-stable-stringify-without-jsonify@^1.0.1: 956 | version "1.0.1" 957 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 958 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 959 | 960 | keyv@^4.5.3: 961 | version "4.5.4" 962 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 963 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 964 | dependencies: 965 | json-buffer "3.0.1" 966 | 967 | levn@^0.4.1: 968 | version "0.4.1" 969 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 970 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 971 | dependencies: 972 | prelude-ls "^1.2.1" 973 | type-check "~0.4.0" 974 | 975 | locate-path@^6.0.0: 976 | version "6.0.0" 977 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 978 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 979 | dependencies: 980 | p-locate "^5.0.0" 981 | 982 | lodash.clonedeep@^4.5.0: 983 | version "4.5.0" 984 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 985 | integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== 986 | 987 | lodash.merge@^4.6.2: 988 | version "4.6.2" 989 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 990 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 991 | 992 | log-symbols@^4.1.0: 993 | version "4.1.0" 994 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 995 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 996 | dependencies: 997 | chalk "^4.1.0" 998 | is-unicode-supported "^0.1.0" 999 | 1000 | loupe@^2.3.6: 1001 | version "2.3.7" 1002 | resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" 1003 | integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== 1004 | dependencies: 1005 | get-func-name "^2.0.1" 1006 | 1007 | lru-cache@^10.2.0: 1008 | version "10.2.0" 1009 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" 1010 | integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== 1011 | 1012 | minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 1013 | version "3.1.2" 1014 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1015 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1016 | dependencies: 1017 | brace-expansion "^1.1.7" 1018 | 1019 | minimatch@^9.0.4, minimatch@^9.0.5: 1020 | version "9.0.5" 1021 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" 1022 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== 1023 | dependencies: 1024 | brace-expansion "^2.0.1" 1025 | 1026 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: 1027 | version "7.1.2" 1028 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" 1029 | integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== 1030 | 1031 | mocha@^11.0.1: 1032 | version "11.7.1" 1033 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.1.tgz#91948fecd624fb4bd154ed260b7e1ad3910d7c7a" 1034 | integrity sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A== 1035 | dependencies: 1036 | browser-stdout "^1.3.1" 1037 | chokidar "^4.0.1" 1038 | debug "^4.3.5" 1039 | diff "^7.0.0" 1040 | escape-string-regexp "^4.0.0" 1041 | find-up "^5.0.0" 1042 | glob "^10.4.5" 1043 | he "^1.2.0" 1044 | js-yaml "^4.1.0" 1045 | log-symbols "^4.1.0" 1046 | minimatch "^9.0.5" 1047 | ms "^2.1.3" 1048 | picocolors "^1.1.1" 1049 | serialize-javascript "^6.0.2" 1050 | strip-json-comments "^3.1.1" 1051 | supports-color "^8.1.1" 1052 | workerpool "^9.2.0" 1053 | yargs "^17.7.2" 1054 | yargs-parser "^21.1.1" 1055 | yargs-unparser "^2.0.0" 1056 | 1057 | ms@2.1.2: 1058 | version "2.1.2" 1059 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1060 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1061 | 1062 | ms@^2.1.3: 1063 | version "2.1.3" 1064 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1065 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1066 | 1067 | natural-compare@^1.4.0: 1068 | version "1.4.0" 1069 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1070 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1071 | 1072 | once@^1.3.0: 1073 | version "1.4.0" 1074 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1075 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1076 | dependencies: 1077 | wrappy "1" 1078 | 1079 | optionator@^0.9.3: 1080 | version "0.9.3" 1081 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" 1082 | integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== 1083 | dependencies: 1084 | "@aashutoshrathi/word-wrap" "^1.2.3" 1085 | deep-is "^0.1.3" 1086 | fast-levenshtein "^2.0.6" 1087 | levn "^0.4.1" 1088 | prelude-ls "^1.2.1" 1089 | type-check "^0.4.0" 1090 | 1091 | p-limit@^3.0.2: 1092 | version "3.1.0" 1093 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1094 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1095 | dependencies: 1096 | yocto-queue "^0.1.0" 1097 | 1098 | p-locate@^5.0.0: 1099 | version "5.0.0" 1100 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1101 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1102 | dependencies: 1103 | p-limit "^3.0.2" 1104 | 1105 | package-json-from-dist@^1.0.0: 1106 | version "1.0.0" 1107 | resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" 1108 | integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== 1109 | 1110 | parent-module@^1.0.0: 1111 | version "1.0.1" 1112 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1113 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1114 | dependencies: 1115 | callsites "^3.0.0" 1116 | 1117 | path-exists@^4.0.0: 1118 | version "4.0.0" 1119 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1120 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1121 | 1122 | path-is-absolute@^1.0.0: 1123 | version "1.0.1" 1124 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1125 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1126 | 1127 | path-key@^3.1.0: 1128 | version "3.1.1" 1129 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1130 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1131 | 1132 | path-parse@^1.0.7: 1133 | version "1.0.7" 1134 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1135 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1136 | 1137 | path-scurry@^1.11.1: 1138 | version "1.11.1" 1139 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" 1140 | integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== 1141 | dependencies: 1142 | lru-cache "^10.2.0" 1143 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 1144 | 1145 | pathval@^1.1.1: 1146 | version "1.1.1" 1147 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 1148 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 1149 | 1150 | picocolors@^1.1.1: 1151 | version "1.1.1" 1152 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 1153 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 1154 | 1155 | prelude-ls@^1.2.1: 1156 | version "1.2.1" 1157 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1158 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1159 | 1160 | prettier-linter-helpers@^1.0.0: 1161 | version "1.0.0" 1162 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 1163 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 1164 | dependencies: 1165 | fast-diff "^1.1.2" 1166 | 1167 | prettier@^2.2.1: 1168 | version "2.8.8" 1169 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" 1170 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== 1171 | 1172 | punycode@1.3.2: 1173 | version "1.3.2" 1174 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1175 | integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== 1176 | 1177 | punycode@^2.1.0: 1178 | version "2.3.0" 1179 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 1180 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 1181 | 1182 | querystring@0.2.0: 1183 | version "0.2.0" 1184 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1185 | integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== 1186 | 1187 | queue-microtask@^1.2.2: 1188 | version "1.2.3" 1189 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1190 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1191 | 1192 | randombytes@^2.1.0: 1193 | version "2.1.0" 1194 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1195 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1196 | dependencies: 1197 | safe-buffer "^5.1.0" 1198 | 1199 | readdirp@^4.0.1: 1200 | version "4.1.2" 1201 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" 1202 | integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== 1203 | 1204 | regexpp@^3.0.0: 1205 | version "3.2.0" 1206 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1207 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1208 | 1209 | require-directory@^2.1.1: 1210 | version "2.1.1" 1211 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1212 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1213 | 1214 | resolve-from@^4.0.0: 1215 | version "4.0.0" 1216 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1217 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1218 | 1219 | resolve@^1.10.1: 1220 | version "1.22.8" 1221 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 1222 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 1223 | dependencies: 1224 | is-core-module "^2.13.0" 1225 | path-parse "^1.0.7" 1226 | supports-preserve-symlinks-flag "^1.0.0" 1227 | 1228 | reusify@^1.0.4: 1229 | version "1.0.4" 1230 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1231 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1232 | 1233 | rimraf@^3.0.2: 1234 | version "3.0.2" 1235 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1236 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1237 | dependencies: 1238 | glob "^7.1.3" 1239 | 1240 | rsvp@^4.8.3: 1241 | version "4.8.5" 1242 | resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" 1243 | integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== 1244 | 1245 | run-parallel@^1.1.9: 1246 | version "1.2.0" 1247 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1248 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1249 | dependencies: 1250 | queue-microtask "^1.2.2" 1251 | 1252 | safe-buffer@^5.1.0: 1253 | version "5.2.1" 1254 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1255 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1256 | 1257 | sax@1.2.1: 1258 | version "1.2.1" 1259 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 1260 | integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== 1261 | 1262 | sax@>=0.6.0: 1263 | version "1.3.0" 1264 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" 1265 | integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== 1266 | 1267 | semver@^6.1.0: 1268 | version "6.3.1" 1269 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 1270 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1271 | 1272 | serialize-javascript@^6.0.2: 1273 | version "6.0.2" 1274 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" 1275 | integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== 1276 | dependencies: 1277 | randombytes "^2.1.0" 1278 | 1279 | set-function-length@^1.1.1: 1280 | version "1.1.1" 1281 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" 1282 | integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== 1283 | dependencies: 1284 | define-data-property "^1.1.1" 1285 | get-intrinsic "^1.2.1" 1286 | gopd "^1.0.1" 1287 | has-property-descriptors "^1.0.0" 1288 | 1289 | shebang-command@^2.0.0: 1290 | version "2.0.0" 1291 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1292 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1293 | dependencies: 1294 | shebang-regex "^3.0.0" 1295 | 1296 | shebang-regex@^3.0.0: 1297 | version "3.0.0" 1298 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1299 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1300 | 1301 | signal-exit@^4.0.1: 1302 | version "4.1.0" 1303 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 1304 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 1305 | 1306 | "string-width-cjs@npm:string-width@^4.2.0": 1307 | version "4.2.3" 1308 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1309 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1310 | dependencies: 1311 | emoji-regex "^8.0.0" 1312 | is-fullwidth-code-point "^3.0.0" 1313 | strip-ansi "^6.0.1" 1314 | 1315 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 1316 | version "4.2.3" 1317 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1318 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1319 | dependencies: 1320 | emoji-regex "^8.0.0" 1321 | is-fullwidth-code-point "^3.0.0" 1322 | strip-ansi "^6.0.1" 1323 | 1324 | string-width@^5.0.1, string-width@^5.1.2: 1325 | version "5.1.2" 1326 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 1327 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1328 | dependencies: 1329 | eastasianwidth "^0.2.0" 1330 | emoji-regex "^9.2.2" 1331 | strip-ansi "^7.0.1" 1332 | 1333 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1": 1334 | version "6.0.1" 1335 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1336 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1337 | dependencies: 1338 | ansi-regex "^5.0.1" 1339 | 1340 | strip-ansi@^3.0.0: 1341 | version "3.0.1" 1342 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1343 | integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== 1344 | dependencies: 1345 | ansi-regex "^2.0.0" 1346 | 1347 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1348 | version "6.0.1" 1349 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1350 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1351 | dependencies: 1352 | ansi-regex "^5.0.1" 1353 | 1354 | strip-ansi@^7.0.1: 1355 | version "7.1.0" 1356 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 1357 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 1358 | dependencies: 1359 | ansi-regex "^6.0.1" 1360 | 1361 | strip-json-comments@^3.1.1: 1362 | version "3.1.1" 1363 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1364 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1365 | 1366 | supports-color@^2.0.0: 1367 | version "2.0.0" 1368 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1369 | integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== 1370 | 1371 | supports-color@^5.3.0: 1372 | version "5.5.0" 1373 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1374 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1375 | dependencies: 1376 | has-flag "^3.0.0" 1377 | 1378 | supports-color@^7.1.0: 1379 | version "7.2.0" 1380 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1381 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1382 | dependencies: 1383 | has-flag "^4.0.0" 1384 | 1385 | supports-color@^8.1.1: 1386 | version "8.1.1" 1387 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1388 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1389 | dependencies: 1390 | has-flag "^4.0.0" 1391 | 1392 | supports-preserve-symlinks-flag@^1.0.0: 1393 | version "1.0.0" 1394 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1395 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1396 | 1397 | text-table@^0.2.0: 1398 | version "0.2.0" 1399 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1400 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1401 | 1402 | type-check@^0.4.0, type-check@~0.4.0: 1403 | version "0.4.0" 1404 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1405 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1406 | dependencies: 1407 | prelude-ls "^1.2.1" 1408 | 1409 | type-detect@^4.0.0, type-detect@^4.1.0: 1410 | version "4.1.0" 1411 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" 1412 | integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== 1413 | 1414 | type-fest@^0.20.2: 1415 | version "0.20.2" 1416 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1417 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1418 | 1419 | uri-js@^4.2.2: 1420 | version "4.4.1" 1421 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1422 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1423 | dependencies: 1424 | punycode "^2.1.0" 1425 | 1426 | url@0.10.3: 1427 | version "0.10.3" 1428 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 1429 | integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== 1430 | dependencies: 1431 | punycode "1.3.2" 1432 | querystring "0.2.0" 1433 | 1434 | util@^0.12.4: 1435 | version "0.12.5" 1436 | resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" 1437 | integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== 1438 | dependencies: 1439 | inherits "^2.0.3" 1440 | is-arguments "^1.0.4" 1441 | is-generator-function "^1.0.7" 1442 | is-typed-array "^1.1.3" 1443 | which-typed-array "^1.1.2" 1444 | 1445 | uuid@8.0.0: 1446 | version "8.0.0" 1447 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" 1448 | integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== 1449 | 1450 | uuid@^11.0.1: 1451 | version "11.1.0" 1452 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" 1453 | integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== 1454 | 1455 | which-typed-array@^1.1.11, which-typed-array@^1.1.2: 1456 | version "1.1.13" 1457 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" 1458 | integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== 1459 | dependencies: 1460 | available-typed-arrays "^1.0.5" 1461 | call-bind "^1.0.4" 1462 | for-each "^0.3.3" 1463 | gopd "^1.0.1" 1464 | has-tostringtag "^1.0.0" 1465 | 1466 | which@^2.0.1: 1467 | version "2.0.2" 1468 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1469 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1470 | dependencies: 1471 | isexe "^2.0.0" 1472 | 1473 | workerpool@^9.2.0: 1474 | version "9.3.2" 1475 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.3.2.tgz#4c045a8b437ae1bc70c646af11929a8b4d238656" 1476 | integrity sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A== 1477 | 1478 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 1479 | version "7.0.0" 1480 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1481 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1482 | dependencies: 1483 | ansi-styles "^4.0.0" 1484 | string-width "^4.1.0" 1485 | strip-ansi "^6.0.0" 1486 | 1487 | wrap-ansi@^7.0.0: 1488 | version "7.0.0" 1489 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1490 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1491 | dependencies: 1492 | ansi-styles "^4.0.0" 1493 | string-width "^4.1.0" 1494 | strip-ansi "^6.0.0" 1495 | 1496 | wrap-ansi@^8.1.0: 1497 | version "8.1.0" 1498 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 1499 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 1500 | dependencies: 1501 | ansi-styles "^6.1.0" 1502 | string-width "^5.0.1" 1503 | strip-ansi "^7.0.1" 1504 | 1505 | wrappy@1: 1506 | version "1.0.2" 1507 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1508 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1509 | 1510 | xml2js@0.6.2: 1511 | version "0.6.2" 1512 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" 1513 | integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== 1514 | dependencies: 1515 | sax ">=0.6.0" 1516 | xmlbuilder "~11.0.0" 1517 | 1518 | xmlbuilder@~11.0.0: 1519 | version "11.0.1" 1520 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 1521 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 1522 | 1523 | y18n@^5.0.5: 1524 | version "5.0.8" 1525 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1526 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1527 | 1528 | yargs-parser@^21.1.1: 1529 | version "21.1.1" 1530 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 1531 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 1532 | 1533 | yargs-unparser@^2.0.0: 1534 | version "2.0.0" 1535 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1536 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1537 | dependencies: 1538 | camelcase "^6.0.0" 1539 | decamelize "^4.0.0" 1540 | flat "^5.0.2" 1541 | is-plain-obj "^2.1.0" 1542 | 1543 | yargs@^17.7.2: 1544 | version "17.7.2" 1545 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 1546 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 1547 | dependencies: 1548 | cliui "^8.0.1" 1549 | escalade "^3.1.1" 1550 | get-caller-file "^2.0.5" 1551 | require-directory "^2.1.1" 1552 | string-width "^4.2.3" 1553 | y18n "^5.0.5" 1554 | yargs-parser "^21.1.1" 1555 | 1556 | yocto-queue@^0.1.0: 1557 | version "0.1.0" 1558 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1559 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1560 | --------------------------------------------------------------------------------