mirror of https://github.com/portainer/portainer
chore(tests): remove cypress code [EE-3580] (#7103)
parent
767fabe0ce
commit
60cd7b5527
|
@ -188,8 +188,6 @@
|
|||
"copy-webpack-plugin": "^10.2.0",
|
||||
"css-loader": "^6.6.0",
|
||||
"cssnano": "^5.0.16",
|
||||
"cypress": "8.7",
|
||||
"cypress-wait-until": "^1.7.1",
|
||||
"dotenv-webpack": "^7.0.3",
|
||||
"eslint": "^8.4.1",
|
||||
"eslint-config-airbnb": "^19.0.2",
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
PORTAINER_TAG=develop
|
|
@ -1,18 +0,0 @@
|
|||
version: '3'
|
||||
services:
|
||||
agent:
|
||||
image: portainer/agent
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
||||
ports:
|
||||
- 9001:9001
|
||||
networks:
|
||||
- agent_network
|
||||
deploy:
|
||||
mode: global
|
||||
placement:
|
||||
constraints: [node.platform.os == linux]
|
||||
networks:
|
||||
agent_network:
|
||||
driver: overlay
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"projectId": "cgz5j5",
|
||||
"baseUrl": "https://localhost:9443",
|
||||
"video": false,
|
||||
"experimentalNetworkStubbing": true
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{}
|
|
@ -1,19 +0,0 @@
|
|||
context('Init admin user test', () => {
|
||||
beforeEach(() => {
|
||||
cy.restoreLocalStorage();
|
||||
});
|
||||
describe('Initialise admin user and endpoint', function () {
|
||||
it('Create admin user and verify success', function () {
|
||||
cy.initAdmin('admin', 'portainer');
|
||||
cy.url().should('include', 'init/endpoint');
|
||||
cy.saveLocalStorage();
|
||||
});
|
||||
it('Select local docker environment and init', function () {
|
||||
cy.initEndpoint();
|
||||
cy.url().should('include', 'home');
|
||||
});
|
||||
it('Add docker swarm endpoint', function () {
|
||||
cy.addNewEndpoint('swarm', 'Agent', 'e2e-portainer:9001');
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,31 +0,0 @@
|
|||
context('Resting of minimum viable functionality against docker standalone', () => {
|
||||
before(() => {
|
||||
cy.visit('/');
|
||||
});
|
||||
|
||||
after(() => {});
|
||||
|
||||
describe('Manipulating resources as admin', function () {
|
||||
beforeEach(() => {
|
||||
cy.visit('/');
|
||||
cy.auth('frontend', 'admin', 'portainer');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
// Clean Tokens
|
||||
cy.clearUserTokens();
|
||||
});
|
||||
|
||||
it('Login and create resources as admin', function () {
|
||||
cy.visit('/');
|
||||
cy.selectEndpoint('local');
|
||||
cy.modifyResources('frontend', 'create');
|
||||
});
|
||||
|
||||
it('Login and delete resources as admin', function () {
|
||||
cy.visit('/');
|
||||
cy.selectEndpoint('local');
|
||||
cy.modifyResources('frontend', 'delete');
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,31 +0,0 @@
|
|||
context('Testing of minimum viable functionality against docker swarm', () => {
|
||||
before(() => {
|
||||
cy.visit('/');
|
||||
});
|
||||
|
||||
after(() => {});
|
||||
|
||||
describe('Manipulating resources as admin', function () {
|
||||
beforeEach(() => {
|
||||
cy.visit('/');
|
||||
cy.auth('frontend', 'admin', 'portainer');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
// Clean Tokens
|
||||
cy.clearUserTokens();
|
||||
});
|
||||
|
||||
it('Login and create resources as admin', function () {
|
||||
cy.visit('/');
|
||||
cy.selectEndpoint('swarm');
|
||||
cy.modifyResources('frontend', 'create');
|
||||
});
|
||||
|
||||
it('Login and delete resources as admin', function () {
|
||||
cy.visit('/');
|
||||
cy.selectEndpoint('swarm');
|
||||
cy.modifyResources('frontend', 'delete');
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,16 +0,0 @@
|
|||
context('Init admin & local docker endpoint', () => {
|
||||
beforeEach(() => {
|
||||
cy.restoreLocalStorage();
|
||||
});
|
||||
describe('Initialise admin user and endpoint', function () {
|
||||
it('Create admin user and verify success', function () {
|
||||
cy.initAdmin('admin', 'portainer');
|
||||
cy.url().should('include', 'init/endpoint');
|
||||
cy.saveLocalStorage();
|
||||
});
|
||||
it('Select local docker environment and init', function () {
|
||||
cy.initEndpoint();
|
||||
cy.url().should('include', 'home');
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,17 +0,0 @@
|
|||
// ***********************************************************
|
||||
// This example plugins/index.js can be used to load plugins
|
||||
//
|
||||
// You can change the location of this file or turn off loading
|
||||
// the plugins file with the 'pluginsFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/plugins-guide
|
||||
// ***********************************************************
|
||||
|
||||
// This function is called when a project is opened or re-opened (e.g. due to
|
||||
// the project's config changing)
|
||||
|
||||
module.exports = (on, config) => {
|
||||
// `on` is used to hook into various events Cypress emits
|
||||
// `config` is the resolved Cypress config
|
||||
};
|
|
@ -1,575 +0,0 @@
|
|||
import 'cypress-wait-until';
|
||||
import _ from 'lodash-es';
|
||||
|
||||
let LOCAL_STORAGE_MEMORY = {};
|
||||
let USER_TOKENS = [];
|
||||
let ACTIVE_ENDPOINT_ID = '';
|
||||
let ACTIVE_ENDPOINT_TYPE = '';
|
||||
|
||||
Cypress.Commands.add('saveLocalStorage', () => {
|
||||
Object.keys(localStorage).forEach((key) => {
|
||||
LOCAL_STORAGE_MEMORY[key] = localStorage[key];
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add('restoreLocalStorage', () => {
|
||||
Object.keys(LOCAL_STORAGE_MEMORY).forEach((key) => {
|
||||
localStorage.setItem(key, LOCAL_STORAGE_MEMORY[key]);
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add('saveUserToken', (username) => {
|
||||
USER_TOKENS[username] = localStorage.getItem('portainer.JWT').slice(1, -1);
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteUserToken', (username) => {
|
||||
delete USER_TOKENS[username];
|
||||
});
|
||||
|
||||
Cypress.Commands.add('setBrowserToken', (username) => {
|
||||
localStorage.setItem('portainer.JWT', USER_TOKENS[username]);
|
||||
});
|
||||
|
||||
Cypress.Commands.add('clearBrowserToken', () => {
|
||||
localStorage.removeItem('portainer.JWT');
|
||||
});
|
||||
|
||||
Cypress.Commands.add('clearUserTokens', () => {
|
||||
USER_TOKENS = [];
|
||||
});
|
||||
|
||||
Cypress.Commands.add('initAdmin', (username, password) => {
|
||||
cy.visit('/#/init/admin');
|
||||
// Wait text, meaning page has loaded
|
||||
cy.waitUntil(() => cy.contains('Please create the initial administrator user.'));
|
||||
|
||||
if (username != 'admin') {
|
||||
cy.get('#username').clear().type(username);
|
||||
}
|
||||
cy.get('#password').type(password);
|
||||
cy.get('#confirm_password').type(password);
|
||||
cy.get('[type=submit]').click();
|
||||
});
|
||||
|
||||
Cypress.Commands.add('initEndpoint', () => {
|
||||
cy.get('[for=1]').click();
|
||||
cy.get('[type=submit]').click();
|
||||
});
|
||||
|
||||
Cypress.Commands.add('addNewEndpoint', (endpointName, endpointType, endpointURL) => {
|
||||
const addEndpoint = (endpointName, endpointType, endpointURL) => {
|
||||
cy.contains(endpointType).click();
|
||||
cy.get('input[name=container_name]').type(endpointName);
|
||||
cy.get('input[name=endpoint_url]').clear().type(endpointURL);
|
||||
cy.get('span').contains('Add endpoint').click();
|
||||
cy.waitUntil(() => cy.contains('Endpoints'));
|
||||
};
|
||||
|
||||
cy.visit('/#!/endpoints/new');
|
||||
cy.waitUntil(() => cy.contains('Create endpoint'));
|
||||
addEndpoint(endpointName, endpointType, endpointURL);
|
||||
});
|
||||
|
||||
Cypress.Commands.add('selectEndpoint', (endpointName) => {
|
||||
cy.visit('/#!/home');
|
||||
cy.waitUntil(() => cy.contains(endpointName).click());
|
||||
cy.waitUntil(() => cy.get('rd-header-title[title-text="Dashboard"]'));
|
||||
|
||||
// Get info from active endpoint for building URL's
|
||||
cy.request({
|
||||
method: 'GET',
|
||||
url: '/api/endpoints?limit=10&start=1',
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
})
|
||||
.its('body')
|
||||
.then((body) => {
|
||||
let endpointOBJ = _.find(body, { Name: endpointName });
|
||||
ACTIVE_ENDPOINT_ID = endpointOBJ.Id;
|
||||
ACTIVE_ENDPOINT_TYPE = endpointOBJ.Type;
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add('auth', (location, username, password) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit('/#/auth');
|
||||
cy.get('#username').click();
|
||||
cy.get('#username').type(username);
|
||||
cy.get('#password').type(password);
|
||||
cy.waitUntil(() => cy.get('ng-transclude > .ng-scope:nth-child(1)')).click();
|
||||
// Wait until you hit the home screen and get at least 1 endpoint item
|
||||
cy.waitUntil(() => cy.get('endpoint-item')).saveUserToken(username);
|
||||
} else {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: '/api/auth',
|
||||
body: {
|
||||
username: username,
|
||||
password: password,
|
||||
},
|
||||
})
|
||||
.its('body')
|
||||
.then((body) => {
|
||||
USER_TOKENS[username] = body.jwt;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createUser', (location, username, password) => {
|
||||
// Setup team route to wait for response
|
||||
cy.route2({ method: 'POST', path: '**/users' }).as('users');
|
||||
|
||||
if (location == 'frontend') {
|
||||
cy.visit('/#!/users');
|
||||
cy.waitUntil(() => cy.get('#username')).click();
|
||||
cy.get('#username').type(username);
|
||||
cy.get('#password').type(password);
|
||||
cy.get('#confirm_password').type(password);
|
||||
cy.get('.btn-primary').click();
|
||||
cy.wait('@users');
|
||||
} else {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: '/api/users',
|
||||
failOnStatusCode: false,
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
body: {
|
||||
username: username,
|
||||
password: password,
|
||||
role: 2,
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteUser', (username) => {
|
||||
cy.request({
|
||||
method: 'GET',
|
||||
url: '/api/users',
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
})
|
||||
.its('body')
|
||||
.then((response) => {
|
||||
let users = response;
|
||||
|
||||
for (var key in users) {
|
||||
if (users[key].Username == username) {
|
||||
cy.request({
|
||||
method: 'DELETE',
|
||||
url: '/api/users/' + users[key].Id,
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteUsers', () => {
|
||||
cy.request({
|
||||
method: 'GET',
|
||||
url: '/api/users',
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
})
|
||||
.its('body')
|
||||
.then((response) => {
|
||||
let users = response;
|
||||
|
||||
for (var key in users) {
|
||||
if (users[key].Id != 1) {
|
||||
cy.request({
|
||||
method: 'DELETE',
|
||||
url: '/api/users/' + users[key].Id,
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createTeam', (location, teamName) => {
|
||||
if (location == 'frontend') {
|
||||
// Setup team route to wait for response
|
||||
cy.route2('POST', '**/teams').as('teams');
|
||||
|
||||
cy.visit('/#!/teams');
|
||||
cy.get('#team_name').click().type(teamName);
|
||||
cy.get('.btn-primary').click();
|
||||
cy.wait('@teams');
|
||||
} else {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: '/api/teams',
|
||||
failOnStatusCode: false,
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
body: {
|
||||
Name: teamName,
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteTeam', (teamName) => {
|
||||
cy.request({
|
||||
method: 'GET',
|
||||
url: '/api/teams',
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
})
|
||||
.its('body')
|
||||
.then((response) => {
|
||||
let teams = response;
|
||||
|
||||
for (var key in teams) {
|
||||
if (teams[key].Name == teamName) {
|
||||
cy.request({
|
||||
method: 'DELETE',
|
||||
url: '/api/teams/' + teams[key].Id,
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteTeams', () => {
|
||||
cy.request({
|
||||
method: 'GET',
|
||||
url: '/api/teams',
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
})
|
||||
.its('body')
|
||||
.then((response) => {
|
||||
let teams = response;
|
||||
|
||||
for (var key in teams) {
|
||||
cy.request({
|
||||
method: 'DELETE',
|
||||
url: '/api/teams/' + teams[key].Id,
|
||||
auth: {
|
||||
bearer: USER_TOKENS['admin'],
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Navigate to teams view and assign a user to a team
|
||||
Cypress.Commands.add('assignToTeam', (username, teamName) => {
|
||||
cy.visit('/#!/teams');
|
||||
|
||||
// Click team to browse to related team details view
|
||||
cy.clickLink(teamName);
|
||||
|
||||
// Get users table and execute within
|
||||
cy.waitUntil(() => cy.contains('.widget', 'Users')).within(() => {
|
||||
cy.contains('td', ' ' + username + ' ')
|
||||
.children('span')
|
||||
.click();
|
||||
});
|
||||
});
|
||||
|
||||
// Navigate to the endpoints view and give the user/team access
|
||||
Cypress.Commands.add('assignAccess', (endpointName, entityName, entityType, role) => {
|
||||
cy.visit('/#!/endpoints');
|
||||
cy.contains('tr', endpointName).within(() => {
|
||||
cy.clickLink('Manage access');
|
||||
});
|
||||
// Click user/team dropdown
|
||||
cy.waitUntil(() => cy.get('.multiSelect > .ng-binding')).click();
|
||||
|
||||
// Assign based on entity type
|
||||
var type;
|
||||
if (entityType == 'team') {
|
||||
type = 'fa-users';
|
||||
} else {
|
||||
type = 'fa-user';
|
||||
}
|
||||
cy.get('.' + type)
|
||||
.parent()
|
||||
.contains(entityName)
|
||||
.click();
|
||||
|
||||
cy.get('.multiSelect > .ng-binding').click();
|
||||
// If a role is provided, click role dropdown and select role
|
||||
if (role) {
|
||||
cy.get('.form-control:nth-child(1)').select(role);
|
||||
}
|
||||
// Click Create access button
|
||||
cy.get('button[type=submit]').click();
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createStack', (location, resourceName, waitForRedirection = true) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/stacks/newstack`);
|
||||
cy.waitUntil(() => cy.get('#stack_name'))
|
||||
.click()
|
||||
.type(resourceName);
|
||||
if (ACTIVE_ENDPOINT_TYPE == '1') {
|
||||
cy.get('.CodeMirror-scroll')
|
||||
.click({ force: true })
|
||||
.type("version: '2'")
|
||||
.type('{enter}')
|
||||
.type('services:')
|
||||
.type('{enter}')
|
||||
.type(' test:')
|
||||
.type('{enter}')
|
||||
.type(' image: nginx');
|
||||
} else {
|
||||
cy.get('.CodeMirror-scroll')
|
||||
.click({ force: true })
|
||||
.type("version: '3'")
|
||||
.type('{enter}')
|
||||
.type('services:')
|
||||
.type('{enter}')
|
||||
.type(' test:')
|
||||
.type('{enter}')
|
||||
.type(' image: nginx');
|
||||
}
|
||||
cy.contains('Deploy the stack').click();
|
||||
// Wait for redirection to stacks view
|
||||
if (waitForRedirection) cy.waitUntil(() => cy.contains('Stacks list', { timeout: 60000 }));
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteStack', (location, resourceName) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/stacks`);
|
||||
cy.waitUntil(() => cy.contains('Stacks list', { timeout: 120000 })).showAllResources();
|
||||
cy.contains(new RegExp('^' + resourceName + '$', 'g'))
|
||||
.closest('tr')
|
||||
.within(() => {
|
||||
cy.get('input[type=checkbox]').click();
|
||||
});
|
||||
cy.contains('Remove').click();
|
||||
cy.get('.modal-dialog').within(() => {
|
||||
cy.get('button[class="btn btn-danger bootbox-accept"]').click();
|
||||
});
|
||||
cy.waitUntil(() => cy.contains('Stack successfully removed'));
|
||||
} else {
|
||||
cy.log('Delete stack via API');
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createService', (location, resourceName, waitForRedirection = true) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/services/new`);
|
||||
cy.waitUntil(() => cy.get('#service_name'))
|
||||
.click()
|
||||
.type(resourceName);
|
||||
cy.get('input[name=image_name]').type('nginx:alpine');
|
||||
cy.contains('Create the service').click();
|
||||
// Wait for redirection to services view
|
||||
if (waitForRedirection) cy.waitUntil(() => cy.contains('Service list', { timeout: 120000 }));
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteService', (location, resourceName) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/services`);
|
||||
cy.waitUntil(() => cy.contains('Service list', { timeout: 120000 })).showAllResources();
|
||||
cy.contains(new RegExp('^' + resourceName + '$', 'g'))
|
||||
.closest('tr')
|
||||
.within(() => {
|
||||
cy.get('input[type=checkbox]').click();
|
||||
});
|
||||
cy.contains('Remove').click();
|
||||
cy.get('.modal-dialog').within(() => {
|
||||
cy.get('button[class="btn btn-danger bootbox-accept"]').click();
|
||||
});
|
||||
cy.waitUntil(() => cy.contains('Service successfully removed'));
|
||||
} else {
|
||||
cy.log('Delete service via API');
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createContainer', (location, resourceName, waitForRedirection = true) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/containers/new`);
|
||||
cy.waitUntil(() => cy.get('#container_name'))
|
||||
.click()
|
||||
.type(resourceName);
|
||||
cy.get('input[name=image_name]').type('nginx:alpine');
|
||||
cy.contains('Deploy the container').click();
|
||||
// Wait for redirection to containers view
|
||||
if (waitForRedirection) cy.waitUntil(() => cy.contains('Container list', { timeout: 120000 }));
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteContainer', (location, resourceName) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/containers`);
|
||||
cy.waitUntil(() => cy.contains('Container list', { timeout: 120000 })).showAllResources();
|
||||
cy.contains(new RegExp('^' + resourceName + '$', 'g'))
|
||||
.closest('tr')
|
||||
.within(() => {
|
||||
cy.get('input[type=checkbox]').click();
|
||||
});
|
||||
cy.contains('Remove').click();
|
||||
cy.get('.modal-dialog').within(() => {
|
||||
cy.get('button[class="btn btn-danger bootbox-accept"]').click();
|
||||
});
|
||||
cy.waitUntil(() => cy.contains('Container successfully removed'));
|
||||
} else {
|
||||
cy.log('Delete container via API');
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createNetwork', (location, resourceName, waitForRedirection = true) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/networks/new`);
|
||||
cy.waitUntil(() => cy.get('#network_name'))
|
||||
.click()
|
||||
.type(resourceName);
|
||||
cy.contains('Create the network').click();
|
||||
// Wait for redirection to networks view
|
||||
if (waitForRedirection) cy.waitUntil(() => cy.contains('Network list', { timeout: 120000 }));
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteNetwork', (location, resourceName) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/networks`);
|
||||
cy.waitUntil(() => cy.contains('Network list', { timeout: 120000 })).showAllResources();
|
||||
cy.contains(new RegExp('^' + resourceName + '$', 'g'))
|
||||
.closest('tr')
|
||||
.within(() => {
|
||||
cy.get('input[type=checkbox]').click();
|
||||
});
|
||||
cy.contains('Remove').click();
|
||||
cy.waitUntil(() => cy.contains('Network successfully removed'));
|
||||
} else {
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createVolume', (location, resourceName, waitForRedirection = true) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/volumes/new`);
|
||||
cy.waitUntil(() => cy.get('#volume_name'))
|
||||
.click()
|
||||
.type(resourceName);
|
||||
cy.contains('Create the volume').click();
|
||||
// Wait for redirection to volumes view
|
||||
if (waitForRedirection) cy.waitUntil(() => cy.contains('Volume list', { timeout: 120000 }));
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteVolume', (location, resourceName) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/volumes`);
|
||||
cy.waitUntil(() => cy.contains('Volume list', { timeout: 120000 })).showAllResources();
|
||||
cy.contains(new RegExp('^' + resourceName + '$', 'g'))
|
||||
.closest('tr')
|
||||
.within(() => {
|
||||
cy.get('input[type=checkbox]').click();
|
||||
});
|
||||
cy.contains('Remove').click();
|
||||
cy.waitUntil(() => cy.contains('Volume successfully removed'));
|
||||
} else {
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createConfig', (location, resourceName, waitForRedirection = true) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/configs/new`);
|
||||
cy.waitUntil(() => cy.get('#config_name'))
|
||||
.click()
|
||||
.type(resourceName);
|
||||
cy.waitUntil(() => cy.get('.CodeMirror-scroll'))
|
||||
.click()
|
||||
.type('This is a config');
|
||||
cy.get('button').contains('Create config').click();
|
||||
// Wait for redirection to configs view
|
||||
if (waitForRedirection) cy.waitUntil(() => cy.contains('Configs list', { timeout: 120000 }));
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteConfig', (location, resourceName) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/configs`);
|
||||
cy.waitUntil(() => cy.contains('Configs list', { timeout: 120000 })).showAllResources();
|
||||
cy.contains(new RegExp('^' + resourceName + '$', 'g'))
|
||||
.closest('tr')
|
||||
.within(() => {
|
||||
cy.get('input[type=checkbox]').click();
|
||||
});
|
||||
cy.contains('Remove').click();
|
||||
cy.waitUntil(() => cy.contains('Config successfully removed'));
|
||||
} else {
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('createSecret', (location, resourceName, waitForRedirection = true) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/secrets/new`);
|
||||
cy.waitUntil(() => cy.get('#secret_name'))
|
||||
.click()
|
||||
.type(resourceName);
|
||||
cy.waitUntil(() => cy.get('textarea'))
|
||||
.click()
|
||||
.type('This is a secret');
|
||||
cy.contains('Create the secret').click();
|
||||
// Wait for redirection to secrets view
|
||||
if (waitForRedirection) cy.waitUntil(() => cy.contains('Secrets list', { timeout: 120000 }));
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('deleteSecret', (location, resourceName) => {
|
||||
if (location == 'frontend') {
|
||||
cy.visit(`/#!/${ACTIVE_ENDPOINT_ID}/docker/secrets`);
|
||||
cy.waitUntil(() => cy.contains('Secrets list', { timeout: 120000 })).showAllResources();
|
||||
cy.contains(new RegExp('^' + resourceName + '$', 'g'))
|
||||
.closest('tr')
|
||||
.within(() => {
|
||||
cy.get('input[type=checkbox]').click();
|
||||
});
|
||||
cy.contains('Remove').click();
|
||||
cy.waitUntil(() => cy.contains('Secret successfully removed'));
|
||||
} else {
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('modifyResource', (location, action, resourceType, resourceName) => {
|
||||
// Dynamically call a custom cypress method on a resource of type 'resourceType'
|
||||
cy[action + resourceType](location, resourceName);
|
||||
});
|
||||
|
||||
// Method for modifying all resources in an endpoint with the default names
|
||||
Cypress.Commands.add('modifyResources', (location, action) => {
|
||||
const associatedResources = {
|
||||
1: ['Stack', 'Container', 'Network', 'Volume'],
|
||||
2: ['Stack', 'Service', 'Container', 'Network', 'Volume', 'Config', 'Secret'],
|
||||
3: ['Application'],
|
||||
};
|
||||
for (var res in associatedResources[ACTIVE_ENDPOINT_TYPE]) {
|
||||
let resource = associatedResources[ACTIVE_ENDPOINT_TYPE][res];
|
||||
cy.modifyResource(location, action, resource, resource.toLowerCase());
|
||||
}
|
||||
});
|
||||
|
||||
Cypress.Commands.add('clickLink', (label) => {
|
||||
cy.waitUntil(() => cy.contains('a', label)).click();
|
||||
});
|
||||
|
||||
Cypress.Commands.add('showAllResources', () => {
|
||||
cy.waitUntil(() => cy.contains('.limitSelector', 'Items per page')).within(() => {
|
||||
cy.get('select').select('All');
|
||||
});
|
||||
});
|
|
@ -1 +0,0 @@
|
|||
import './commands';
|
|
@ -1,47 +0,0 @@
|
|||
version: '3'
|
||||
services:
|
||||
manager1:
|
||||
image: docker:dind
|
||||
privileged: true
|
||||
environment:
|
||||
DOCKER_TLS_CERTDIR:
|
||||
hostname: manager1
|
||||
ports:
|
||||
- 9001:9001
|
||||
volumes:
|
||||
- ${PWD}/agent-stack.yml:/agent-stack.yml
|
||||
|
||||
networks:
|
||||
- e2e-ci
|
||||
depends_on:
|
||||
- manager2
|
||||
- worker1
|
||||
- worker2
|
||||
manager2:
|
||||
image: docker:dind
|
||||
privileged: true
|
||||
environment:
|
||||
DOCKER_TLS_CERTDIR:
|
||||
hostname: manager2
|
||||
networks:
|
||||
- e2e-ci
|
||||
worker1:
|
||||
image: docker:dind
|
||||
privileged: true
|
||||
environment:
|
||||
DOCKER_TLS_CERTDIR:
|
||||
hostname: worker1
|
||||
networks:
|
||||
- e2e-ci
|
||||
worker2:
|
||||
image: docker:dind
|
||||
privileged: true
|
||||
environment:
|
||||
DOCKER_TLS_CERTDIR:
|
||||
hostname: worker2
|
||||
networks:
|
||||
- e2e-ci
|
||||
|
||||
networks:
|
||||
e2e-ci:
|
||||
driver: bridge
|
|
@ -1,23 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
exec_in() { docker-compose exec -T $@; }
|
||||
|
||||
# Up all dinds nodes
|
||||
docker-compose up -d
|
||||
|
||||
# Manager1 init
|
||||
exec_in manager1 docker swarm init
|
||||
TOKEN_WORKER="$(exec_in manager1 docker swarm join-token -q worker)"
|
||||
TOKEN_MANAGER="$(exec_in manager1 docker swarm join-token -q manager)"
|
||||
|
||||
# Manager2 join
|
||||
exec_in manager2 docker swarm join --token $TOKEN_MANAGER manager1:2377
|
||||
|
||||
# Worker1 join
|
||||
exec_in worker1 docker swarm join --token $TOKEN_WORKER manager1:2377
|
||||
|
||||
# Worker2 join
|
||||
exec_in worker2 docker swarm join --token $TOKEN_WORKER manager1:2377
|
||||
|
||||
# Deploy agent within dind swarm
|
||||
exec_in manager1 docker stack deploy -c agent-stack.yml portainer-agent
|
|
@ -1,53 +0,0 @@
|
|||
describe('ContainerController', function () {
|
||||
var $scope, $httpBackend, mockContainer, $routeParams;
|
||||
|
||||
beforeEach(module('portainer'));
|
||||
|
||||
beforeEach(inject(function ($rootScope, $controller, _$routeParams_) {
|
||||
$scope = $rootScope.$new();
|
||||
$routeParams = _$routeParams_;
|
||||
$controller('ContainerController', {
|
||||
$scope: $scope,
|
||||
});
|
||||
|
||||
angular.mock.inject(function (_$httpBackend_, _Container_) {
|
||||
mockContainer = _Container_;
|
||||
$httpBackend = _$httpBackend_;
|
||||
});
|
||||
}));
|
||||
|
||||
function expectGetContainer() {
|
||||
$httpBackend.expectGET('dockerapi/containers/json').respond({
|
||||
Created: 1421817232,
|
||||
id: 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f',
|
||||
Image: 'portainer:latest',
|
||||
Name: '/portainer',
|
||||
});
|
||||
}
|
||||
|
||||
it('a correct rename request to the Docker remote API', function () {
|
||||
$routeParams.id = 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f';
|
||||
$scope.container = {
|
||||
Created: 1421817232,
|
||||
id: 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f',
|
||||
Image: 'portainer:latest',
|
||||
Name: '/portainer',
|
||||
};
|
||||
$scope.container.newContainerName = 'newName';
|
||||
|
||||
var newContainerName = 'newName';
|
||||
expectGetContainer();
|
||||
|
||||
$httpBackend.expectGET('dockerapi/containers/changes').respond([{ Kind: 1, Path: '/docker.sock' }]);
|
||||
|
||||
$httpBackend.expectPOST('dockerapi/containers/' + $routeParams.id + '/rename?name=newName').respond({
|
||||
name: newContainerName,
|
||||
});
|
||||
|
||||
$scope.renameContainer();
|
||||
|
||||
$httpBackend.flush();
|
||||
expect($scope.container.Name).toBe(newContainerName);
|
||||
expect($scope.container.edit).toBeFalsy();
|
||||
});
|
||||
});
|
|
@ -1,33 +0,0 @@
|
|||
describe('ContainerTopController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(angular.mock.module('portainer'));
|
||||
|
||||
beforeEach(inject(function (_$rootScope_, _$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = _$rootScope_.$new();
|
||||
$httpBackend = _$httpBackend_;
|
||||
$routeParams = _$routeParams_;
|
||||
$routeParams.id = 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f';
|
||||
$controller('ContainerTopController', {
|
||||
$scope: $scope,
|
||||
$routeParams: $routeParams,
|
||||
});
|
||||
}));
|
||||
|
||||
it('should test controller initialize', function () {
|
||||
$httpBackend.expectGET('dockerapi/containers/b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f/json').respond(200, { Name: '/foo' });
|
||||
$httpBackend.expectGET('dockerapi/containers/b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f/top?ps_args=').respond(200);
|
||||
expect($scope.ps_args).toBeDefined();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
|
||||
it('a correct top request to the Docker remote API', function () {
|
||||
$httpBackend.expectGET('dockerapi/containers/b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f/json').respond(200, { Name: '/foo' });
|
||||
$httpBackend.expectGET('dockerapi/containers/' + $routeParams.id + '/top?ps_args=').respond(200);
|
||||
$routeParams.id = '123456789123456789123456789';
|
||||
$scope.ps_args = 'aux';
|
||||
$httpBackend.expectGET('dockerapi/containers/' + $routeParams.id + '/top?ps_args=' + $scope.ps_args).respond(200);
|
||||
$scope.getTop();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
});
|
|
@ -1,85 +0,0 @@
|
|||
describe('NetworkController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(module('portainer'));
|
||||
beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = {};
|
||||
$httpBackend = _$httpBackend_;
|
||||
$routeParams = _$routeParams_;
|
||||
$routeParams.id = 'f1e1ce1613ccd374a75caf5e2c3ab35520d1944f91498c1974ec86fb4019c79b';
|
||||
$controller('NetworkController', {
|
||||
$scope: $scope,
|
||||
$routeParams: $routeParams,
|
||||
});
|
||||
}));
|
||||
|
||||
it('initializes correctly', function () {
|
||||
expectGetNetwork();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
|
||||
it('issues a correct connect call to the remote API', function () {
|
||||
expectGetNetwork();
|
||||
$httpBackend.expectPOST('dockerapi/networks/f1e1ce1613ccd374a75caf5e2c3ab35520d1944f91498c1974ec86fb4019c79b/connect', { Container: 'containerId' }).respond(200);
|
||||
$scope.connect($routeParams.id, 'containerId');
|
||||
$httpBackend.flush();
|
||||
});
|
||||
it('issues a correct disconnect call to the remote API', function () {
|
||||
expectGetNetwork();
|
||||
$httpBackend.expectPOST('dockerapi/networks/f1e1ce1613ccd374a75caf5e2c3ab35520d1944f91498c1974ec86fb4019c79b/disconnect', { Container: 'containerId' }).respond(200);
|
||||
$scope.disconnect($routeParams.id, 'containerId');
|
||||
$httpBackend.flush();
|
||||
});
|
||||
it('issues a correct remove call to the remote API', function () {
|
||||
expectGetNetwork();
|
||||
$httpBackend.expectDELETE('dockerapi/networks/f1e1ce1613ccd374a75caf5e2c3ab35520d1944f91498c1974ec86fb4019c79b').respond(204);
|
||||
$scope.remove($routeParams.id);
|
||||
$httpBackend.flush();
|
||||
});
|
||||
|
||||
function expectGetNetwork() {
|
||||
$httpBackend.expectGET('dockerapi/networks/f1e1ce1613ccd374a75caf5e2c3ab35520d1944f91498c1974ec86fb4019c79b').respond({
|
||||
Name: 'bridge',
|
||||
Id: 'f1e1ce1613ccd374a75caf5e2c3ab35520d1944f91498c1974ec86fb4019c79b',
|
||||
Scope: 'local',
|
||||
Driver: 'bridge',
|
||||
IPAM: {
|
||||
Driver: 'default',
|
||||
Config: [
|
||||
{
|
||||
Subnet: '172.17.0.1/16',
|
||||
Gateway: '172.17.0.1',
|
||||
},
|
||||
],
|
||||
},
|
||||
Containers: {
|
||||
'727fe76cd0bd65033baab3045508784a166fbc67d177e91c1874b6b29eae946a': {
|
||||
EndpointID: 'c17ec80e2cfc8eaedc7737b7bb6f954adff439767197ef89c4a5b4127d07b267',
|
||||
MacAddress: '02:42:ac:11:00:03',
|
||||
IPv4Address: '172.17.0.3/16',
|
||||
IPv6Address: '',
|
||||
},
|
||||
'8c32c2446c3dfe0defac2dc8b5fd927cd394f15e08051c677a681bf36877175b': {
|
||||
EndpointID: 'cf7e795c978ab194d1af4a3efdc177d84c075582ba30a7cff414c7d516236af1',
|
||||
MacAddress: '02:42:ac:11:00:04',
|
||||
IPv4Address: '172.17.0.4/16',
|
||||
IPv6Address: '',
|
||||
},
|
||||
cfe81fc97b1f857fdb3061fe487a064b8b57d8f112910954ac16910400d2e058: {
|
||||
EndpointID: '611929ffcff2ced1db8e88f77e009c4fb4a4736395251cd97553b242e2e23bf1',
|
||||
MacAddress: '02:42:ac:11:00:02',
|
||||
IPv4Address: '172.17.0.2/16',
|
||||
IPv6Address: '',
|
||||
},
|
||||
},
|
||||
Options: {
|
||||
'com.docker.network.bridge.default_bridge': 'true',
|
||||
'com.docker.network.bridge.enable_icc': 'true',
|
||||
'com.docker.network.bridge.enable_ip_masquerade': 'true',
|
||||
'com.docker.network.bridge.host_binding_ipv4': '0.0.0.0',
|
||||
'com.docker.network.bridge.name': 'docker0',
|
||||
'com.docker.network.driver.mtu': '1500',
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
|
@ -1,109 +0,0 @@
|
|||
describe('NetworksController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(module('portainer'));
|
||||
beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = {};
|
||||
$httpBackend = _$httpBackend_;
|
||||
$routeParams = _$routeParams_;
|
||||
$controller('NetworksController', {
|
||||
$scope: $scope,
|
||||
$routeParams: $routeParams,
|
||||
});
|
||||
}));
|
||||
|
||||
it('initializes correctly', function () {
|
||||
expectGetNetwork();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
|
||||
it('issues correct remove calls to the remote API', function () {
|
||||
expectGetNetwork();
|
||||
$httpBackend.flush();
|
||||
$scope.networks[0].Checked = true;
|
||||
$scope.networks[2].Checked = true;
|
||||
$httpBackend.expectDELETE('dockerapi/networks/f2de39df4171b0dc801e8002d1d999b77256983dfc63041c0f34030aa3977566').respond(204);
|
||||
$httpBackend.expectDELETE('dockerapi/networks/13e871235c677f196c4e1ecebb9dc733b9b2d2ab589e30c539efeda84a24215e').respond(204);
|
||||
$scope.removeAction();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
it('issues a correct network creation call to the remote API', function () {
|
||||
expectGetNetwork();
|
||||
var createBody = {
|
||||
Name: 'isolated_nw',
|
||||
Driver: 'bridge',
|
||||
IPAM: {
|
||||
Config: [
|
||||
{
|
||||
Subnet: '172.20.0.0/16',
|
||||
IPRange: '172.20.10.0/24',
|
||||
Gateway: '172.20.10.11',
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
$httpBackend.expectPOST('dockerapi/networks/create', createBody).respond(201);
|
||||
expectGetNetwork();
|
||||
$scope.addNetwork(createBody);
|
||||
$httpBackend.flush();
|
||||
});
|
||||
|
||||
function expectGetNetwork() {
|
||||
$httpBackend.expectGET('dockerapi/networks').respond([
|
||||
{
|
||||
Name: 'bridge',
|
||||
Id: 'f2de39df4171b0dc801e8002d1d999b77256983dfc63041c0f34030aa3977566',
|
||||
Scope: 'local',
|
||||
Driver: 'bridge',
|
||||
IPAM: {
|
||||
Driver: 'default',
|
||||
Config: [
|
||||
{
|
||||
Subnet: '172.17.0.0/16',
|
||||
},
|
||||
],
|
||||
},
|
||||
Containers: {
|
||||
'39b69226f9d79f5634485fb236a23b2fe4e96a0a94128390a7fbbcc167065867': {
|
||||
EndpointID: 'ed2419a97c1d9954d05b46e462e7002ea552f216e9b136b80a7db8d98b442eda',
|
||||
MacAddress: '02:42:ac:11:00:02',
|
||||
IPv4Address: '172.17.0.2/16',
|
||||
IPv6Address: '',
|
||||
},
|
||||
},
|
||||
Options: {
|
||||
'com.docker.network.bridge.default_bridge': 'true',
|
||||
'com.docker.network.bridge.enable_icc': 'true',
|
||||
'com.docker.network.bridge.enable_ip_masquerade': 'true',
|
||||
'com.docker.network.bridge.host_binding_ipv4': '0.0.0.0',
|
||||
'com.docker.network.bridge.name': 'docker0',
|
||||
'com.docker.network.driver.mtu': '1500',
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: 'none',
|
||||
Id: 'e086a3893b05ab69242d3c44e49483a3bbbd3a26b46baa8f61ab797c1088d794',
|
||||
Scope: 'local',
|
||||
Driver: 'null',
|
||||
IPAM: {
|
||||
Driver: 'default',
|
||||
Config: [],
|
||||
},
|
||||
Containers: {},
|
||||
Options: {},
|
||||
},
|
||||
{
|
||||
Name: 'host',
|
||||
Id: '13e871235c677f196c4e1ecebb9dc733b9b2d2ab589e30c539efeda84a24215e',
|
||||
Scope: 'local',
|
||||
Driver: 'host',
|
||||
IPAM: {
|
||||
Driver: 'default',
|
||||
Config: [],
|
||||
},
|
||||
Containers: {},
|
||||
Options: {},
|
||||
},
|
||||
]);
|
||||
}
|
||||
});
|
|
@ -1,267 +0,0 @@
|
|||
describe('startContainerController', function () {
|
||||
var scope, $location, createController, mockContainer, $httpBackend;
|
||||
|
||||
beforeEach(angular.mock.module('portainer'));
|
||||
|
||||
beforeEach(inject(function ($rootScope, $controller, _$location_) {
|
||||
$location = _$location_;
|
||||
scope = $rootScope.$new();
|
||||
|
||||
createController = function () {
|
||||
return $controller('StartContainerController', {
|
||||
$scope: scope,
|
||||
});
|
||||
};
|
||||
|
||||
angular.mock.inject(function (_Container_, _$httpBackend_) {
|
||||
mockContainer = _Container_;
|
||||
$httpBackend = _$httpBackend_;
|
||||
});
|
||||
}));
|
||||
function expectGetContainers() {
|
||||
$httpBackend.expectGET('dockerapi/containers/json?all=1').respond([
|
||||
{
|
||||
Command: './portainer -e /docker.sock',
|
||||
Created: 1421817232,
|
||||
Id: 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f',
|
||||
Image: 'portainer:latest',
|
||||
Names: ['/portainer'],
|
||||
Ports: [
|
||||
{
|
||||
IP: '0.0.0.0',
|
||||
PrivatePort: 9443,
|
||||
PublicPort: 9443,
|
||||
Type: 'tcp',
|
||||
},
|
||||
],
|
||||
Status: 'Up 2 minutes',
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
describe('Create and start a container with port bindings', function () {
|
||||
it('should issue a correct create request to the Docker remote API', function () {
|
||||
var controller = createController();
|
||||
var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
|
||||
var expectedBody = {
|
||||
name: 'container-name',
|
||||
ExposedPorts: {
|
||||
'9443/tcp': {},
|
||||
},
|
||||
HostConfig: {
|
||||
PortBindings: {
|
||||
'9443/tcp': [
|
||||
{
|
||||
HostPort: '9999',
|
||||
HostIp: '10.20.10.15',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
expectGetContainers();
|
||||
|
||||
$httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
|
||||
Id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
$httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
|
||||
id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
|
||||
scope.config.name = 'container-name';
|
||||
scope.config.HostConfig.PortBindings = [
|
||||
{
|
||||
ip: '10.20.10.15',
|
||||
extPort: '9999',
|
||||
intPort: '9443',
|
||||
},
|
||||
];
|
||||
|
||||
scope.create();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Create and start a container with environment variables', function () {
|
||||
it('should issue a correct create request to the Docker remote API', function () {
|
||||
var controller = createController();
|
||||
var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
|
||||
var expectedBody = {
|
||||
name: 'container-name',
|
||||
Env: ['SHELL=/bin/bash', 'TERM=xterm-256color'],
|
||||
};
|
||||
|
||||
expectGetContainers();
|
||||
|
||||
$httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
|
||||
Id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
$httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
|
||||
id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
|
||||
scope.config.name = 'container-name';
|
||||
scope.config.Env = [
|
||||
{
|
||||
name: 'SHELL',
|
||||
value: '/bin/bash',
|
||||
},
|
||||
{
|
||||
name: 'TERM',
|
||||
value: 'xterm-256color',
|
||||
},
|
||||
];
|
||||
|
||||
scope.create();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Create and start a container with labels', function () {
|
||||
it('should issue a correct create request to the Docker remote API', function () {
|
||||
var controller = createController();
|
||||
var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
|
||||
var expectedBody = {
|
||||
name: 'container-name',
|
||||
Labels: {
|
||||
'org.foo.bar': 'Baz',
|
||||
'com.biz.baz': 'Boo',
|
||||
},
|
||||
};
|
||||
|
||||
expectGetContainers();
|
||||
|
||||
$httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
|
||||
Id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
$httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
|
||||
id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
|
||||
scope.config.name = 'container-name';
|
||||
scope.config.Labels = [
|
||||
{
|
||||
key: 'org.foo.bar',
|
||||
value: 'Baz',
|
||||
},
|
||||
{
|
||||
key: 'com.biz.baz',
|
||||
value: 'Boo',
|
||||
},
|
||||
];
|
||||
|
||||
scope.create();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Create and start a container with volumesFrom', function () {
|
||||
it('should issue a correct create request to the Docker remote API', function () {
|
||||
var controller = createController();
|
||||
var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
|
||||
var expectedBody = {
|
||||
HostConfig: {
|
||||
VolumesFrom: ['parent', 'other:ro'],
|
||||
},
|
||||
name: 'container-name',
|
||||
};
|
||||
|
||||
expectGetContainers();
|
||||
|
||||
$httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
|
||||
Id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
$httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
|
||||
id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
|
||||
scope.config.name = 'container-name';
|
||||
scope.config.HostConfig.VolumesFrom = [{ name: 'parent' }, { name: 'other:ro' }];
|
||||
|
||||
scope.create();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Create and start a container with multiple options', function () {
|
||||
it('should issue a correct create request to the Docker remote API', function () {
|
||||
var controller = createController();
|
||||
var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
|
||||
var expectedBody = {
|
||||
Volumes: ['/var/www'],
|
||||
SecurityOpts: ['label:type:svirt_apache'],
|
||||
HostConfig: {
|
||||
Binds: ['/app:/app'],
|
||||
Links: ['web:db'],
|
||||
Dns: ['8.8.8.8'],
|
||||
DnsSearch: ['example.com'],
|
||||
CapAdd: ['cap_sys_admin'],
|
||||
CapDrop: ['cap_foo_bar'],
|
||||
Devices: [
|
||||
{
|
||||
PathOnHost: '/dev/deviceName',
|
||||
PathInContainer: '/dev/deviceName',
|
||||
CgroupPermissions: 'mrw',
|
||||
},
|
||||
],
|
||||
Sysctls: { 'net.ipv6.conf.all.disable_ipv6': '0' },
|
||||
LxcConf: { 'lxc.utsname': 'docker' },
|
||||
ExtraHosts: ['hostname:127.0.0.1'],
|
||||
RestartPolicy: { name: 'always', MaximumRetryCount: 5 },
|
||||
},
|
||||
name: 'container-name',
|
||||
};
|
||||
|
||||
expectGetContainers();
|
||||
|
||||
$httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
|
||||
Id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
$httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
|
||||
id: id,
|
||||
Warnings: null,
|
||||
});
|
||||
|
||||
scope.config.name = 'container-name';
|
||||
scope.config.Volumes = [{ name: '/var/www' }];
|
||||
scope.config.SecurityOpts = [{ name: 'label:type:svirt_apache' }];
|
||||
scope.config.NetworkDisabled = true;
|
||||
scope.config.Tty = true;
|
||||
scope.config.OpenStdin = true;
|
||||
scope.config.StdinOnce = true;
|
||||
|
||||
scope.config.HostConfig.Binds = [{ name: '/app:/app' }];
|
||||
scope.config.HostConfig.Links = [{ name: 'web:db' }];
|
||||
scope.config.HostConfig.Dns = [{ name: '8.8.8.8' }];
|
||||
scope.config.HostConfig.DnsSearch = [{ name: 'example.com' }];
|
||||
scope.config.HostConfig.CapAdd = [{ name: 'cap_sys_admin' }];
|
||||
scope.config.HostConfig.CapDrop = [{ name: 'cap_foo_bar' }];
|
||||
scope.config.HostConfig.PublishAllPorts = true;
|
||||
scope.config.HostConfig.Privileged = true;
|
||||
scope.config.HostConfig.RestartPolicy = { name: 'always', MaximumRetryCount: 5 };
|
||||
scope.config.HostConfig.Devices = [
|
||||
{
|
||||
PathOnHost: '/dev/deviceName',
|
||||
PathInContainer: '/dev/deviceName',
|
||||
CgroupPermissions: 'mrw',
|
||||
},
|
||||
];
|
||||
scope.config.HostConfig.Sysctls = [{ name: 'net.ipv6.conf.all.disable_ipv6', value: '0' }];
|
||||
scope.config.HostConfig.LxcConf = [{ name: 'lxc.utsname', value: 'docker' }];
|
||||
scope.config.HostConfig.ExtraHosts = [{ host: 'hostname', ip: '127.0.0.1' }];
|
||||
|
||||
scope.create();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,31 +0,0 @@
|
|||
describe('StatsController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(angular.mock.module('portainer'));
|
||||
|
||||
beforeEach(inject(function (_$rootScope_, _$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = _$rootScope_.$new();
|
||||
$httpBackend = _$httpBackend_;
|
||||
$routeParams = _$routeParams_;
|
||||
$routeParams.id = 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f';
|
||||
$controller('StatsController', {
|
||||
$scope: $scope,
|
||||
$routeParams: $routeParams,
|
||||
});
|
||||
}));
|
||||
|
||||
//it("should test controller initialize", function () {
|
||||
// $httpBackend.expectGET('dockerapi/containers/b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f/stats?stream=false').respond(200);
|
||||
// //expect($scope.ps_args).toBeDefined();
|
||||
// $httpBackend.flush();
|
||||
//});
|
||||
//
|
||||
//it("a correct top request to the Docker remote API", function () {
|
||||
// //$httpBackend.expectGET('dockerapi/containers/' + $routeParams.id + '/top?ps_args=').respond(200);
|
||||
// //$routeParams.id = '123456789123456789123456789';
|
||||
// //$scope.ps_args = 'aux';
|
||||
// //$httpBackend.expectGET('dockerapi/containers/' + $routeParams.id + '/top?ps_args=' + $scope.ps_args).respond(200);
|
||||
// //$scope.getTop();
|
||||
// //$httpBackend.flush();
|
||||
//});
|
||||
});
|
|
@ -1,63 +0,0 @@
|
|||
describe('VolumesController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(module('portainer'));
|
||||
beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = {};
|
||||
$httpBackend = _$httpBackend_;
|
||||
$routeParams = _$routeParams_;
|
||||
$controller('VolumesController', {
|
||||
$scope: $scope,
|
||||
$routeParams: $routeParams,
|
||||
});
|
||||
}));
|
||||
|
||||
it('initializes correctly', function () {
|
||||
expectGetVolumes();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
|
||||
it('issues correct remove calls to the remote API', function () {
|
||||
expectGetVolumes();
|
||||
$httpBackend.flush();
|
||||
$scope.volumes[0].Checked = true;
|
||||
$scope.volumes[2].Checked = true;
|
||||
$httpBackend.expectDELETE('dockerapi/volumes/tardis').respond(200);
|
||||
$httpBackend.expectDELETE('dockerapi/volumes/bar').respond(200);
|
||||
$scope.removeAction();
|
||||
$httpBackend.flush();
|
||||
});
|
||||
it('issues a correct volume creation call to the remote API', function () {
|
||||
expectGetVolumes();
|
||||
var createBody = {
|
||||
Name: 'tardis',
|
||||
Driver: 'local',
|
||||
};
|
||||
$httpBackend.expectPOST('dockerapi/volumes/create', createBody).respond(201);
|
||||
expectGetVolumes();
|
||||
$scope.addVolume(createBody);
|
||||
$httpBackend.flush();
|
||||
});
|
||||
|
||||
function expectGetVolumes() {
|
||||
$httpBackend.expectGET('dockerapi/volumes').respond({
|
||||
Volumes: [
|
||||
{
|
||||
Name: 'tardis',
|
||||
Driver: 'local',
|
||||
Mountpoint: '/var/lib/docker/volumes/tardis',
|
||||
},
|
||||
{
|
||||
Name: 'foo',
|
||||
Driver: 'local',
|
||||
Mountpoint: '/var/lib/docker/volumes/foo',
|
||||
},
|
||||
{
|
||||
Name: 'bar',
|
||||
Driver: 'local',
|
||||
Mountpoint: '/var/lib/docker/volumes/bar',
|
||||
},
|
||||
],
|
||||
});
|
||||
}
|
||||
});
|
|
@ -1,109 +0,0 @@
|
|||
describe('filters', function () {
|
||||
beforeEach(module('portainer.filters'));
|
||||
|
||||
describe('truncate', function () {
|
||||
it('should truncate the string to 10 characters ending in "..." by default', inject(function (truncateFilter) {
|
||||
expect(truncateFilter('this is 20 chars long')).toBe('this is...');
|
||||
}));
|
||||
|
||||
it('should truncate the string to 7 characters ending in "..."', inject(function (truncateFilter) {
|
||||
expect(truncateFilter('this is 20 chars long', 7)).toBe('this...');
|
||||
}));
|
||||
|
||||
it('should truncate the string to 10 characters ending in "???"', inject(function (truncateFilter) {
|
||||
expect(truncateFilter('this is 20 chars long', 10, '???')).toBe('this is???');
|
||||
}));
|
||||
});
|
||||
|
||||
describe('getstatetext', function () {
|
||||
it('should return an empty string when state is undefined', inject(function (getstatetextFilter) {
|
||||
expect(getstatetextFilter(undefined)).toBe('');
|
||||
}));
|
||||
|
||||
it('should detect a Ghost state', inject(function (getstatetextFilter) {
|
||||
var state = {
|
||||
Ghost: true,
|
||||
Running: true,
|
||||
Paused: false,
|
||||
};
|
||||
expect(getstatetextFilter(state)).toBe('Ghost');
|
||||
}));
|
||||
|
||||
it('should detect a Paused state', inject(function (getstatetextFilter) {
|
||||
var state = {
|
||||
Ghost: false,
|
||||
Running: true,
|
||||
Paused: true,
|
||||
};
|
||||
expect(getstatetextFilter(state)).toBe('Running (Paused)');
|
||||
}));
|
||||
|
||||
it('should detect a Running state', inject(function (getstatetextFilter) {
|
||||
var state = {
|
||||
Ghost: false,
|
||||
Running: true,
|
||||
Paused: false,
|
||||
};
|
||||
expect(getstatetextFilter(state)).toBe('Running');
|
||||
}));
|
||||
|
||||
it('should detect a Stopped state', inject(function (getstatetextFilter) {
|
||||
var state = {
|
||||
Ghost: false,
|
||||
Running: false,
|
||||
Paused: false,
|
||||
};
|
||||
expect(getstatetextFilter(state)).toBe('Stopped');
|
||||
}));
|
||||
});
|
||||
|
||||
describe('getstatelabel', function () {
|
||||
it('should return default when state is undefined', inject(function (getstatelabelFilter) {
|
||||
expect(getstatelabelFilter(undefined)).toBe('label-default');
|
||||
}));
|
||||
|
||||
it('should return label-important when a ghost state is detected', inject(function (getstatelabelFilter) {
|
||||
var state = {
|
||||
Ghost: true,
|
||||
Running: true,
|
||||
Paused: false,
|
||||
};
|
||||
expect(getstatelabelFilter(state)).toBe('label-important');
|
||||
}));
|
||||
|
||||
it('should return label-success when a running state is detected', inject(function (getstatelabelFilter) {
|
||||
var state = {
|
||||
Ghost: false,
|
||||
Running: true,
|
||||
Paused: false,
|
||||
};
|
||||
expect(getstatelabelFilter(state)).toBe('label-success');
|
||||
}));
|
||||
});
|
||||
|
||||
describe('containername', function () {
|
||||
it('should strip the leading slash from container name', inject(function (containernameFilter) {
|
||||
var container = {
|
||||
Names: ['/elegant_ardinghelli'],
|
||||
};
|
||||
|
||||
expect(containernameFilter(container)).toBe('elegant_ardinghelli');
|
||||
}));
|
||||
});
|
||||
|
||||
describe('repotag', function () {
|
||||
it('should not display empty repo tag', inject(function (repotagFilter) {
|
||||
var image = {
|
||||
RepoTags: ['<none>:<none>'],
|
||||
};
|
||||
expect(repotagFilter(image)).toBe('');
|
||||
}));
|
||||
|
||||
it('should display a normal repo tag', inject(function (repotagFilter) {
|
||||
var image = {
|
||||
RepoTags: ['ubuntu:latest'],
|
||||
};
|
||||
expect(repotagFilter(image)).toBe('ubuntu:latest');
|
||||
}));
|
||||
});
|
||||
});
|
|
@ -1,45 +0,0 @@
|
|||
// base path, that will be used to resolve files and exclude
|
||||
basePath = '../..';
|
||||
|
||||
// list of files / patterns to load in the browser
|
||||
files = [JASMINE, JASMINE_ADAPTER, 'dist/angular.js', 'dist/vendor.js', 'dist/portainer.js', 'bower_components/angular-mocks/angular-mocks.js', 'test/unit/**/*.spec.js'];
|
||||
|
||||
// use dots reporter, as travis terminal does not support escaping sequences
|
||||
// possible values: 'dots' || 'progress'
|
||||
reporters = 'progress';
|
||||
|
||||
// these are default values, just to show available options
|
||||
|
||||
// web server port
|
||||
port = 8089;
|
||||
|
||||
// cli runner port
|
||||
runnerPort = 9109;
|
||||
|
||||
urlRoot = '/__test/';
|
||||
|
||||
// enable / disable colors in the output (reporters and logs)
|
||||
colors = true;
|
||||
|
||||
// level of logging
|
||||
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
|
||||
logLevel = LOG_INFO;
|
||||
|
||||
// enable / disable watching file and executing tests whenever any file changes
|
||||
autoWatch = false;
|
||||
|
||||
// polling interval in ms (ignored on OS that support inotify)
|
||||
autoWatchInterval = 0;
|
||||
|
||||
// Start these browsers, currently available:
|
||||
// - Chrome
|
||||
// - ChromeCanary
|
||||
// - Firefox
|
||||
// - Opera
|
||||
// - Safari
|
||||
// - PhantomJS
|
||||
browsers = ['Chrome'];
|
||||
|
||||
// Continuous Integration mode
|
||||
// if true, it capture browsers, run tests and exit
|
||||
singleRun = true;
|
514
yarn.lock
514
yarn.lock
|
@ -1225,38 +1225,6 @@
|
|||
exec-sh "^0.3.2"
|
||||
minimist "^1.2.0"
|
||||
|
||||
"@cypress/request@^2.88.6":
|
||||
version "2.88.10"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce"
|
||||
integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==
|
||||
dependencies:
|
||||
aws-sign2 "~0.7.0"
|
||||
aws4 "^1.8.0"
|
||||
caseless "~0.12.0"
|
||||
combined-stream "~1.0.6"
|
||||
extend "~3.0.2"
|
||||
forever-agent "~0.6.1"
|
||||
form-data "~2.3.2"
|
||||
http-signature "~1.3.6"
|
||||
is-typedarray "~1.0.0"
|
||||
isstream "~0.1.2"
|
||||
json-stringify-safe "~5.0.1"
|
||||
mime-types "~2.1.19"
|
||||
performance-now "^2.1.0"
|
||||
qs "~6.5.2"
|
||||
safe-buffer "^5.1.2"
|
||||
tough-cookie "~2.5.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
uuid "^8.3.2"
|
||||
|
||||
"@cypress/xvfb@^1.2.4":
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
|
||||
integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
|
||||
dependencies:
|
||||
debug "^3.1.0"
|
||||
lodash.once "^4.1.1"
|
||||
|
||||
"@dabh/diagnostics@^2.0.2":
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31"
|
||||
|
@ -3400,7 +3368,7 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c"
|
||||
integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==
|
||||
|
||||
"@types/node@^14.0.10", "@types/node@^14.14.31":
|
||||
"@types/node@^14.0.10":
|
||||
version "14.18.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.11.tgz#9bd810a959e1728d78df0f68b5c825b8ea7156f4"
|
||||
integrity sha512-zCoCEMA+IPpsRkyCFBqew5vGb7r8RSiB3uwdu/map7uwLAfu1MTazW26/pUDWoNnF88vJz4W3U56i5gtXNqxGg==
|
||||
|
@ -3536,12 +3504,7 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/sinonjs__fake-timers@^6.0.2":
|
||||
version "6.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d"
|
||||
integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==
|
||||
|
||||
"@types/sizzle@*", "@types/sizzle@^2.3.2":
|
||||
"@types/sizzle@*":
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef"
|
||||
integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==
|
||||
|
@ -3658,13 +3621,6 @@
|
|||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
"@types/yauzl@^2.9.1":
|
||||
version "2.9.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a"
|
||||
integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^5.7.0":
|
||||
version "5.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.11.0.tgz#3b866371d8d75c70f9b81535e7f7d3aa26527c7a"
|
||||
|
@ -4379,11 +4335,6 @@ ansi-colors@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
|
||||
integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
|
||||
|
||||
ansi-colors@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
|
||||
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
|
||||
|
||||
ansi-escapes@^1.1.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
|
||||
|
@ -4502,11 +4453,6 @@ aproba@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
||||
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
|
||||
|
||||
arch@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
|
||||
integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
|
||||
|
||||
are-we-there-yet@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c"
|
||||
|
@ -4667,18 +4613,6 @@ asn1.js@^5.2.0:
|
|||
minimalistic-assert "^1.0.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
asn1@~0.2.3:
|
||||
version "0.2.6"
|
||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
|
||||
integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
|
||||
dependencies:
|
||||
safer-buffer "~2.1.0"
|
||||
|
||||
assert-plus@1.0.0, assert-plus@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
|
||||
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
|
||||
|
||||
assert@^1.1.1:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
|
||||
|
@ -4726,7 +4660,7 @@ async@^2.6.1, async@^2.6.2:
|
|||
dependencies:
|
||||
lodash "^4.17.14"
|
||||
|
||||
async@^3.2.0, async@^3.2.3, async@~3.2.0:
|
||||
async@^3.2.3, async@~3.2.0:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
||||
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
||||
|
@ -4782,16 +4716,6 @@ autoprefixer@^9.8.6:
|
|||
postcss "^7.0.32"
|
||||
postcss-value-parser "^4.1.0"
|
||||
|
||||
aws-sign2@~0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
||||
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
|
||||
|
||||
aws4@^1.8.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
|
||||
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
|
||||
|
||||
axe-core@^4.3.5:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413"
|
||||
|
@ -5085,13 +5009,6 @@ batch@0.6.1:
|
|||
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
|
||||
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
|
||||
|
||||
bcrypt-pbkdf@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
|
||||
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
|
||||
dependencies:
|
||||
tweetnacl "^0.14.3"
|
||||
|
||||
better-opn@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6"
|
||||
|
@ -5148,12 +5065,7 @@ blob-tmp@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/blob-tmp/-/blob-tmp-1.0.0.tgz#de82491e222ff1354c77a93ee8e4ea2c89544273"
|
||||
integrity sha1-3oJJHiIv8TVMd6k+6OTqLIlUQnM=
|
||||
|
||||
blob-util@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb"
|
||||
integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==
|
||||
|
||||
bluebird@^3.3.5, bluebird@^3.5.5, bluebird@^3.7.2:
|
||||
bluebird@^3.3.5, bluebird@^3.5.5:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
||||
|
@ -5546,11 +5458,6 @@ cache-base@^1.0.1:
|
|||
union-value "^1.0.0"
|
||||
unset-value "^1.0.0"
|
||||
|
||||
cachedir@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
|
||||
integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
|
||||
|
||||
call-bind@^1.0.0, call-bind@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
|
||||
|
@ -5649,11 +5556,6 @@ case-sensitive-paths-webpack-plugin@^2.3.0:
|
|||
resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"
|
||||
integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
|
||||
|
||||
ccount@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
|
||||
|
@ -5798,11 +5700,6 @@ chartjs-color@^2.1.0:
|
|||
chartjs-color-string "^0.6.0"
|
||||
color-convert "^1.9.3"
|
||||
|
||||
check-more-types@^2.24.0:
|
||||
version "2.24.0"
|
||||
resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
|
||||
integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=
|
||||
|
||||
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.3:
|
||||
version "3.5.3"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||
|
@ -5957,7 +5854,7 @@ cli-spinners@^2.0.0, cli-spinners@^2.5.0:
|
|||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d"
|
||||
integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==
|
||||
|
||||
cli-table3@^0.6.1, cli-table3@~0.6.0:
|
||||
cli-table3@^0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8"
|
||||
integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==
|
||||
|
@ -6145,7 +6042,7 @@ colorspace@1.1.x:
|
|||
color "^3.1.3"
|
||||
text-hex "1.0.x"
|
||||
|
||||
combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
|
||||
combined-stream@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
||||
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
|
||||
|
@ -6172,11 +6069,6 @@ commander@^4.1.1:
|
|||
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
||||
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
|
||||
|
||||
commander@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
|
||||
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
|
||||
|
||||
commander@^6.2.1:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
|
||||
|
@ -6202,11 +6094,6 @@ common-path-prefix@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0"
|
||||
integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==
|
||||
|
||||
common-tags@^1.8.0:
|
||||
version "1.8.2"
|
||||
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
|
||||
integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
|
||||
|
||||
commondir@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||
|
@ -6383,11 +6270,6 @@ core-js@^3.0.4, core-js@^3.19.3, core-js@^3.6.5, core-js@^3.8.2:
|
|||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.0.tgz#f479dbfc3dffb035a0827602dd056839a774aa71"
|
||||
integrity sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==
|
||||
|
||||
core-util-is@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
||||
|
@ -6704,59 +6586,6 @@ cyclist@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
|
||||
integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
|
||||
|
||||
cypress-wait-until@^1.7.1:
|
||||
version "1.7.2"
|
||||
resolved "https://registry.yarnpkg.com/cypress-wait-until/-/cypress-wait-until-1.7.2.tgz#7f534dd5a11c89b65359e7a0210f20d3dfc22107"
|
||||
integrity sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q==
|
||||
|
||||
cypress@8.7:
|
||||
version "8.7.0"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-8.7.0.tgz#2ee371f383d8f233d3425b6cc26ddeec2668b6da"
|
||||
integrity sha512-b1bMC3VQydC6sXzBMFnSqcvwc9dTZMgcaOzT0vpSD+Gq1yFc+72JDWi55sfUK5eIeNLAtWOGy1NNb6UlhMvB+Q==
|
||||
dependencies:
|
||||
"@cypress/request" "^2.88.6"
|
||||
"@cypress/xvfb" "^1.2.4"
|
||||
"@types/node" "^14.14.31"
|
||||
"@types/sinonjs__fake-timers" "^6.0.2"
|
||||
"@types/sizzle" "^2.3.2"
|
||||
arch "^2.2.0"
|
||||
blob-util "^2.0.2"
|
||||
bluebird "^3.7.2"
|
||||
cachedir "^2.3.0"
|
||||
chalk "^4.1.0"
|
||||
check-more-types "^2.24.0"
|
||||
cli-cursor "^3.1.0"
|
||||
cli-table3 "~0.6.0"
|
||||
commander "^5.1.0"
|
||||
common-tags "^1.8.0"
|
||||
dayjs "^1.10.4"
|
||||
debug "^4.3.2"
|
||||
enquirer "^2.3.6"
|
||||
eventemitter2 "^6.4.3"
|
||||
execa "4.1.0"
|
||||
executable "^4.1.1"
|
||||
extract-zip "2.0.1"
|
||||
figures "^3.2.0"
|
||||
fs-extra "^9.1.0"
|
||||
getos "^3.2.1"
|
||||
is-ci "^3.0.0"
|
||||
is-installed-globally "~0.4.0"
|
||||
lazy-ass "^1.6.0"
|
||||
listr2 "^3.8.3"
|
||||
lodash "^4.17.21"
|
||||
log-symbols "^4.0.0"
|
||||
minimist "^1.2.5"
|
||||
ospath "^1.2.2"
|
||||
pretty-bytes "^5.6.0"
|
||||
proxy-from-env "1.0.0"
|
||||
ramda "~0.27.1"
|
||||
request-progress "^3.0.0"
|
||||
supports-color "^8.1.1"
|
||||
tmp "~0.2.1"
|
||||
untildify "^4.0.0"
|
||||
url "^0.11.0"
|
||||
yauzl "^2.10.0"
|
||||
|
||||
d@1, d@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
|
||||
|
@ -6770,13 +6599,6 @@ damerau-levenshtein@^1.0.7:
|
|||
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
|
||||
integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
|
||||
|
||||
dashdash@^1.12.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
|
||||
integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
data-urls@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
|
||||
|
@ -6796,11 +6618,6 @@ dateformat@~3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
|
||||
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
|
||||
|
||||
dayjs@^1.10.4:
|
||||
version "1.10.7"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468"
|
||||
integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==
|
||||
|
||||
debug@2.6.9, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
|
@ -6815,7 +6632,7 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3:
|
|||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.7:
|
||||
debug@^3.0.0, debug@^3.1.1, debug@^3.2.7:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
||||
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
||||
|
@ -7326,14 +7143,6 @@ eastasianwidth@^0.2.0:
|
|||
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
|
||||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||
|
||||
ecc-jsbn@~0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
|
||||
integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
|
||||
dependencies:
|
||||
jsbn "~0.1.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
ee-first@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||
|
@ -7446,13 +7255,6 @@ enhanced-resolve@^5.7.0, enhanced-resolve@^5.8.3:
|
|||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
|
||||
enquirer@^2.3.6:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
|
||||
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
|
||||
dependencies:
|
||||
ansi-colors "^4.1.1"
|
||||
|
||||
entities@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
|
||||
|
@ -8035,11 +7837,6 @@ event-emitter@~0.3.5:
|
|||
d "1"
|
||||
es5-ext "~0.10.14"
|
||||
|
||||
eventemitter2@^6.4.3:
|
||||
version "6.4.5"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655"
|
||||
integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==
|
||||
|
||||
eventemitter2@~0.4.13:
|
||||
version "0.4.14"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab"
|
||||
|
@ -8068,21 +7865,6 @@ exec-sh@^0.3.2:
|
|||
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc"
|
||||
integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==
|
||||
|
||||
execa@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
|
||||
integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
|
||||
dependencies:
|
||||
cross-spawn "^7.0.0"
|
||||
get-stream "^5.0.0"
|
||||
human-signals "^1.1.1"
|
||||
is-stream "^2.0.0"
|
||||
merge-stream "^2.0.0"
|
||||
npm-run-path "^4.0.0"
|
||||
onetime "^5.1.0"
|
||||
signal-exit "^3.0.2"
|
||||
strip-final-newline "^2.0.0"
|
||||
|
||||
execa@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
|
||||
|
@ -8111,13 +7893,6 @@ execa@^5.0.0, execa@^5.1.1:
|
|||
signal-exit "^3.0.3"
|
||||
strip-final-newline "^2.0.0"
|
||||
|
||||
executable@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
|
||||
integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
|
||||
dependencies:
|
||||
pify "^2.2.0"
|
||||
|
||||
exit-hook@^1.0.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
|
||||
|
@ -8216,7 +7991,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
|
|||
assign-symbols "^1.0.0"
|
||||
is-extendable "^1.0.1"
|
||||
|
||||
extend@^3.0.0, extend@^3.0.2, extend@~3.0.2:
|
||||
extend@^3.0.0, extend@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
||||
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
||||
|
@ -8244,27 +8019,6 @@ extglob@^2.0.4:
|
|||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
extract-zip@2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
|
||||
integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
|
||||
dependencies:
|
||||
debug "^4.1.1"
|
||||
get-stream "^5.1.0"
|
||||
yauzl "^2.10.0"
|
||||
optionalDependencies:
|
||||
"@types/yauzl" "^2.9.1"
|
||||
|
||||
extsprintf@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
||||
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
|
||||
|
||||
extsprintf@^1.2.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
|
||||
integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==
|
||||
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
|
@ -8393,7 +8147,7 @@ figures@^1.3.5:
|
|||
escape-string-regexp "^1.0.5"
|
||||
object-assign "^4.1.0"
|
||||
|
||||
figures@^3.0.0, figures@^3.2.0:
|
||||
figures@^3.0.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
|
||||
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
|
||||
|
@ -8686,11 +8440,6 @@ foreground-child@^2.0.0:
|
|||
cross-spawn "^7.0.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
forever-agent@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
|
||||
|
||||
fork-ts-checker-webpack-plugin@^4.1.6:
|
||||
version "4.1.6"
|
||||
resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5"
|
||||
|
@ -8732,15 +8481,6 @@ form-data@^3.0.0:
|
|||
combined-stream "^1.0.8"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
form-data@~2.3.2:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
|
||||
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.6"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
format@^0.2.0:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
|
||||
|
@ -8805,7 +8545,7 @@ fs-extra@^0.30.0:
|
|||
path-is-absolute "^1.0.0"
|
||||
rimraf "^2.2.8"
|
||||
|
||||
fs-extra@^9.0.0, fs-extra@^9.1.0:
|
||||
fs-extra@^9.0.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
|
||||
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
|
||||
|
@ -8968,13 +8708,6 @@ get-stream@^4.0.0:
|
|||
dependencies:
|
||||
pump "^3.0.0"
|
||||
|
||||
get-stream@^5.0.0, get-stream@^5.1.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
|
||||
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
|
||||
dependencies:
|
||||
pump "^3.0.0"
|
||||
|
||||
get-stream@^6.0.0:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
|
||||
|
@ -8998,20 +8731,6 @@ getobject@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/getobject/-/getobject-1.0.2.tgz#25ec87a50370f6dcc3c6ba7ef43c4c16215c4c89"
|
||||
integrity sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==
|
||||
|
||||
getos@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5"
|
||||
integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==
|
||||
dependencies:
|
||||
async "^3.2.0"
|
||||
|
||||
getpass@^0.1.1:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
|
||||
integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
github-slugger@^1.0.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e"
|
||||
|
@ -9110,13 +8829,6 @@ glob@~7.1.6:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global-dirs@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
|
||||
integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==
|
||||
dependencies:
|
||||
ini "2.0.0"
|
||||
|
||||
global-modules@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
|
||||
|
@ -9843,15 +9555,6 @@ http-proxy@^1.18.1:
|
|||
follow-redirects "^1.0.0"
|
||||
requires-port "^1.0.0"
|
||||
|
||||
http-signature@~1.3.6:
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9"
|
||||
integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
jsprim "^2.0.2"
|
||||
sshpk "^1.14.1"
|
||||
|
||||
http2-client@^1.2.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181"
|
||||
|
@ -9870,11 +9573,6 @@ https-proxy-agent@^5.0.0:
|
|||
agent-base "6"
|
||||
debug "4"
|
||||
|
||||
human-signals@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
|
||||
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
|
||||
|
||||
human-signals@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
|
||||
|
@ -10061,11 +9759,6 @@ inherits@2.0.3:
|
|||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
|
||||
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
|
||||
|
||||
ini@^1.3.4, ini@~1.3.0:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
|
@ -10289,13 +9982,6 @@ is-ci@^2.0.0:
|
|||
dependencies:
|
||||
ci-info "^2.0.0"
|
||||
|
||||
is-ci@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867"
|
||||
integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==
|
||||
dependencies:
|
||||
ci-info "^3.2.0"
|
||||
|
||||
is-core-module@^2.2.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
|
||||
|
@ -10442,14 +10128,6 @@ is-hexadecimal@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
|
||||
integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
|
||||
|
||||
is-installed-globally@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
|
||||
integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
|
||||
dependencies:
|
||||
global-dirs "^3.0.0"
|
||||
is-path-inside "^3.0.2"
|
||||
|
||||
is-interactive@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
|
||||
|
@ -10632,7 +10310,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
|
|||
dependencies:
|
||||
has-symbols "^1.0.2"
|
||||
|
||||
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
|
||||
is-typedarray@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
|
||||
|
@ -10732,11 +10410,6 @@ isobject@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0"
|
||||
integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==
|
||||
|
||||
isstream@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||
|
||||
istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.1, istanbul-lib-coverage@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
|
||||
|
@ -11295,11 +10968,6 @@ js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.3.0, js-yaml@^3.5.1, js-yaml@^4.1.0
|
|||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
jsbn@~0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
|
||||
|
||||
jsdom@^16.6.0:
|
||||
version "16.7.0"
|
||||
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710"
|
||||
|
@ -11363,11 +11031,6 @@ json-schema-traverse@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
|
||||
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
|
||||
|
||||
json-schema@0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
|
||||
integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
|
||||
|
||||
json-stable-stringify-without-jsonify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
||||
|
@ -11380,11 +11043,6 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
|
|||
dependencies:
|
||||
jsonify "~0.0.0"
|
||||
|
||||
json-stringify-safe@~5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
|
||||
|
||||
json5@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
|
||||
|
@ -11425,16 +11083,6 @@ jsonpointer@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072"
|
||||
integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==
|
||||
|
||||
jsprim@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d"
|
||||
integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==
|
||||
dependencies:
|
||||
assert-plus "1.0.0"
|
||||
extsprintf "1.3.0"
|
||||
json-schema "0.4.0"
|
||||
verror "1.10.0"
|
||||
|
||||
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b"
|
||||
|
@ -11516,11 +11164,6 @@ language-tags@^1.0.5:
|
|||
dependencies:
|
||||
language-subtag-registry "~0.3.2"
|
||||
|
||||
lazy-ass@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
|
||||
integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM=
|
||||
|
||||
lazy-universal-dotenv@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38"
|
||||
|
@ -11615,20 +11258,6 @@ lint-staged@>=10:
|
|||
supports-color "^9.2.1"
|
||||
yaml "^1.10.2"
|
||||
|
||||
listr2@^3.8.3:
|
||||
version "3.14.0"
|
||||
resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e"
|
||||
integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==
|
||||
dependencies:
|
||||
cli-truncate "^2.1.0"
|
||||
colorette "^2.0.16"
|
||||
log-update "^4.0.0"
|
||||
p-map "^4.0.0"
|
||||
rfdc "^1.3.0"
|
||||
rxjs "^7.5.1"
|
||||
through "^2.3.8"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
listr2@^4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.3.tgz#cf407d811aafdb609cb5a42d8b137b79e1bd968b"
|
||||
|
@ -11762,11 +11391,6 @@ lodash.merge@^4.6.2:
|
|||
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
|
||||
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
||||
|
||||
lodash.once@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
|
||||
integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
|
||||
|
||||
lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
|
@ -11784,7 +11408,7 @@ log-symbols@^2.2.0:
|
|||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
|
||||
log-symbols@^4.0.0, log-symbols@^4.1.0:
|
||||
log-symbols@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
|
||||
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
|
||||
|
@ -12123,7 +11747,7 @@ mime-db@1.51.0, "mime-db@>= 1.43.0 < 2":
|
|||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
|
||||
integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
|
||||
|
||||
mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
|
||||
mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
|
||||
version "2.1.34"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
|
||||
integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==
|
||||
|
@ -12662,7 +12286,7 @@ npm-run-path@^2.0.0:
|
|||
dependencies:
|
||||
path-key "^2.0.0"
|
||||
|
||||
npm-run-path@^4.0.0, npm-run-path@^4.0.1:
|
||||
npm-run-path@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
|
||||
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
|
||||
|
@ -13036,11 +12660,6 @@ osenv@^0.1.4:
|
|||
os-homedir "^1.0.0"
|
||||
os-tmpdir "^1.0.0"
|
||||
|
||||
ospath@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b"
|
||||
integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=
|
||||
|
||||
outvariant@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.2.1.tgz#e630f6cdc1dbf398ed857e36f219de4a005ccd35"
|
||||
|
@ -13428,11 +13047,6 @@ pend@~1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
||||
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
|
||||
|
||||
performance-now@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||
|
||||
picocolors@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
|
||||
|
@ -13448,7 +13062,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0:
|
|||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
|
||||
pify@^2.0.0, pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
|
||||
|
@ -13921,11 +13535,6 @@ prettier@^2.5.1:
|
|||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
|
||||
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
|
||||
|
||||
pretty-bytes@^5.6.0:
|
||||
version "5.6.0"
|
||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
|
||||
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
|
||||
|
||||
pretty-error@^2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6"
|
||||
|
@ -14049,17 +13658,12 @@ proxy-addr@~2.0.7:
|
|||
forwarded "0.2.0"
|
||||
ipaddr.js "1.9.1"
|
||||
|
||||
proxy-from-env@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
|
||||
integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=
|
||||
|
||||
prr@~1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
||||
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
|
||||
|
||||
psl@^1.1.28, psl@^1.1.33:
|
||||
psl@^1.1.33:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
|
||||
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
|
||||
|
@ -14128,11 +13732,6 @@ qs@^6.10.0:
|
|||
dependencies:
|
||||
side-channel "^1.0.4"
|
||||
|
||||
qs@~6.5.2:
|
||||
version "6.5.3"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
|
||||
integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
|
||||
|
||||
querystring-es3@^0.2.0:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
|
||||
|
@ -14163,11 +13762,6 @@ ramda@^0.21.0:
|
|||
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35"
|
||||
integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=
|
||||
|
||||
ramda@~0.27.1:
|
||||
version "0.27.2"
|
||||
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1"
|
||||
integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==
|
||||
|
||||
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
|
||||
|
@ -14855,13 +14449,6 @@ repeat-string@^1.5.4, repeat-string@^1.6.1:
|
|||
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
||||
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
|
||||
|
||||
request-progress@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
|
||||
integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=
|
||||
dependencies:
|
||||
throttleit "^1.0.0"
|
||||
|
||||
require-directory@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||
|
@ -15090,7 +14677,7 @@ rxjs@^6.4.0, rxjs@^6.6.0:
|
|||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.4:
|
||||
rxjs@^7.2.0, rxjs@^7.5.4:
|
||||
version "7.5.4"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d"
|
||||
integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==
|
||||
|
@ -15129,7 +14716,7 @@ safe-stable-stringify@^2.3.1:
|
|||
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73"
|
||||
integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
|
||||
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
@ -15786,21 +15373,6 @@ sprintf-js@~1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
||||
|
||||
sshpk@^1.14.1:
|
||||
version "1.17.0"
|
||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5"
|
||||
integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==
|
||||
dependencies:
|
||||
asn1 "~0.2.3"
|
||||
assert-plus "^1.0.0"
|
||||
bcrypt-pbkdf "^1.0.0"
|
||||
dashdash "^1.12.0"
|
||||
ecc-jsbn "~0.1.1"
|
||||
getpass "^0.1.1"
|
||||
jsbn "~0.1.0"
|
||||
safer-buffer "^2.0.2"
|
||||
tweetnacl "~0.14.0"
|
||||
|
||||
ssri@^6.0.1:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5"
|
||||
|
@ -16174,7 +15746,7 @@ supports-color@^7.0.0, supports-color@^7.1.0:
|
|||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
supports-color@^8.0.0, supports-color@^8.1.1:
|
||||
supports-color@^8.0.0:
|
||||
version "8.1.1"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
|
||||
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
|
||||
|
@ -16446,11 +16018,6 @@ throttle-debounce@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
|
||||
integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
|
||||
|
||||
throttleit@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
|
||||
integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
|
||||
|
||||
through2@^2.0.0:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
|
||||
|
@ -16501,13 +16068,6 @@ tmp@^0.0.33:
|
|||
dependencies:
|
||||
os-tmpdir "~1.0.2"
|
||||
|
||||
tmp@~0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
||||
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
||||
dependencies:
|
||||
rimraf "^3.0.0"
|
||||
|
||||
tmpl@1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
|
||||
|
@ -16596,14 +16156,6 @@ tough-cookie@^4.0.0:
|
|||
punycode "^2.1.1"
|
||||
universalify "^0.1.2"
|
||||
|
||||
tough-cookie@~2.5.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
|
||||
dependencies:
|
||||
psl "^1.1.28"
|
||||
punycode "^2.1.1"
|
||||
|
||||
tr46@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240"
|
||||
|
@ -16687,18 +16239,6 @@ tty-browserify@0.0.0:
|
|||
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
||||
integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
||||
version "0.14.5"
|
||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
|
||||
|
||||
type-check@^0.4.0, type-check@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
|
||||
|
@ -16993,11 +16533,6 @@ unset-value@^1.0.0:
|
|||
has-value "^0.3.1"
|
||||
isobject "^3.0.0"
|
||||
|
||||
untildify@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
|
||||
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
|
||||
|
||||
upath@^1.1.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
|
||||
|
@ -17201,15 +16736,6 @@ vary@~1.1.2:
|
|||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||
|
||||
verror@1.10.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
|
||||
integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
core-util-is "1.0.2"
|
||||
extsprintf "^1.2.0"
|
||||
|
||||
vfile-location@^3.0.0, vfile-location@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
|
||||
|
@ -17869,7 +17395,7 @@ yargs@^17.0.1, yargs@^17.3.0:
|
|||
y18n "^5.0.5"
|
||||
yargs-parser "^21.0.0"
|
||||
|
||||
yauzl@^2.10.0, yauzl@^2.4.2:
|
||||
yauzl@^2.4.2:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
|
||||
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
|
||||
|
|
Loading…
Reference in New Issue