[AAE-17458] Move default apps away from repository

This commit is contained in:
MichalFidor
2024-01-11 14:17:57 +01:00
parent 9515e0e879
commit 7b7cb21737
13 changed files with 715 additions and 240 deletions
+1
View File
@@ -64,6 +64,7 @@ env:
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
DEFAULT_APPS_REPOSITORY: ${{ secrets.DEFAULT_APPS_REPOSITORY }}
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
HR_USER: ${{ secrets.HR_USER }}
+2 -1
View File
@@ -17,6 +17,7 @@
"booleanvisibility",
"booleanvisibilityprocess",
"boolitem",
"BPMECM",
"BPMHOST",
"cardview",
"checkboxes",
@@ -142,7 +143,7 @@
"Whitespaces",
"xdescribe",
"xsrf",
"BPMECM"
"zipfile"
],
"dictionaries": [
"html",
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -156,12 +156,12 @@ adf-cli docker --target "link" --dockerRepo "${docker_repository}" --dockerTags
The following command is in charge of Initializing the activiti cloud env with the default apps:
```bash
adf-cli init-aae-env --host "gateway_env" --oauth "identity_env" --identityHost "identity_env" --modelerUsername "modelerusername" --modelerPassword "modelerpassword" --devopsUsername "devopsusername" --devopsPassword "devopspassword"
adf-cli init-aae-env --host "gateway_env" --oauth "identity_env" --identityHost "identity_env" --modelerUsername "modelerusername" --modelerPassword "modelerpassword" --devopsUsername "devopsusername" --devopsPassword "devopspassword" --appsRepository "repository with default apps name"
```
You can also specify the environment ids of the envs where to deploy the app adding the `--envs` option:
```bash
adf-cli init-aae-env --host "gateway_env" --oauth "identity_env" --identityHost "identity_env" --modelerUsername "modelerusername" --modelerPassword "modelerpassword" --devopsUsername "devopsusername" --devopsPassword "devopspassword" --envs envId1 envId2
adf-cli init-aae-env --host "gateway_env" --oauth "identity_env" --identityHost "identity_env" --modelerUsername "modelerusername" --modelerPassword "modelerpassword" --devopsUsername "devopsusername" --devopsPassword "devopspassword" --envs envId1 envId2 --appsRepository "repository with default apps name"
```
If you want to add a new app the schema needs to be:
@@ -0,0 +1,51 @@
import axios, { AxiosResponse } from 'axios';
import AdmZip from 'adm-zip';
import path from 'path';
export class GitHubRepoUtils {
private baseURL = 'https://api.github.com';
private token: string;
private repo: string;
private subFolderName: string;
constructor(token: string, repo: string) {
this.token = token;
this.repo = repo;
}
async downloadRepoAndUnpackRepository(owner: string, branch = 'main'): Promise<void> {
const url = `${this.baseURL}/repos/${owner}/${this.repo}/zipball/${branch}`;
const headers = {
Authorization: `token ${this.token}`,
Accept: 'application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28'
};
try {
const response: AxiosResponse = await axios.get(url, {
responseType: 'arraybuffer',
headers,
});
const repoZipped = new AdmZip(response.data);
this.subFolderName = (repoZipped.getEntries().find(entry => entry.entryName.includes(owner))).entryName;
new AdmZip(response.data).extractAllTo(this.repo, /** overwrite **/ true);
} catch (error) {
throw new Error(`Failed to download repository: ${error}`);
}
}
async zipNeededApplication(appName: string): Promise<string> {
const pathToZip = path.resolve(`${process.cwd()}/${this.repo}`, `${appName}.zip`);
try {
const zip = new AdmZip();
zip.addLocalFolder(`${process.cwd()}/${this.repo}/${this.subFolderName}${appName}`);
await zip.writeZipPromise(pathToZip);
} catch (e) {
console.log(`Error during zipping app ${e}`)
}
return pathToZip;
}
}
+39 -69
View File
@@ -18,11 +18,12 @@
*/
import program from 'commander';
import fetch from 'node-fetch';
import * as fs from 'fs';
import { logger } from './logger';
import { AlfrescoApi, AlfrescoApiConfig } from '@alfresco/js-api';
import { argv, exit } from 'node:process';
import { GitHubRepoUtils } from './github-folder-downloader';
const ACTIVITI_CLOUD_APPS = require('./resources').ACTIVITI_CLOUD_APPS;
let alfrescoJsApiModeler: AlfrescoApi;
@@ -42,6 +43,9 @@ export interface ConfigArgs {
host: string;
tag: string;
envs: string[];
ghToken: string;
branch: string;
appsRepository: string;
}
export const AAE_MICROSERVICES = ['deployment-service', 'modeling-service', 'dmn-service'];
@@ -94,7 +98,7 @@ async function healthCheck(nameService: string) {
*/
async function getApplications(): Promise<{ list: { entries: any[] } }> {
const url = `${args.host}/deployment-service/v1/applications`;
logger.info(url)
const pathParams = {};
const queryParams = {};
const headerParams = {};
@@ -105,8 +109,7 @@ async function getApplications(): Promise<{ list: { entries: any[] } }> {
try {
await alfrescoJsApiDevops.login(args.devopsUsername, args.devopsPassword);
const result = alfrescoJsApiDevops.oauth2Auth.callCustomApi(
const result = await alfrescoJsApiDevops.oauth2Auth.callCustomApi(
url,
'GET',
pathParams,
@@ -117,12 +120,10 @@ async function getApplications(): Promise<{ list: { entries: any[] } }> {
contentTypes,
accepts
);
result.on('error', (error) => {
logger.error(`Get application by status ${error} `);
});
// logger.info(result)
return result;
} catch (error) {
logger.error(`Get application by status ${error.status} `);
logger.error(`Get application by status ${JSON.stringify(error)} `);
isValid = false;
return null;
}
@@ -312,7 +313,6 @@ function deleteProject(projectId: string) {
*/
async function importAndReleaseProject(absoluteFilePath: string) {
const fileContent = fs.createReadStream(absoluteFilePath);
try {
const project = await alfrescoJsApiModeler.oauth2Auth.callCustomApi(
`${args.host}/modeling-service/v1/projects/import`,
@@ -340,7 +340,7 @@ async function importAndReleaseProject(absoluteFilePath: string) {
['application/json']
);
} catch (error) {
logger.error(`Not able to import the project/create the release ${absoluteFilePath} with status: ${error}`);
logger.error(`Not able to import the project/create the release with status: ${JSON.stringify(error)}`);
isValid = false;
throw error;
}
@@ -464,7 +464,7 @@ function getAlfrescoJsApiInstance(configArgs: ConfigArgs): AlfrescoApi {
* @param tag tag
* @param envs environments
*/
async function deployMissingApps(tag?: string, envs?: string[]) {
async function deployMissingApps(envs: any) {
const deployedApps = await getApplications();
const failingApps = findFailingApps(deployedApps.list.entries);
const missingApps = findMissingApps(deployedApps.list.entries);
@@ -479,7 +479,7 @@ async function deployMissingApps(tag?: string, envs?: string[]) {
exit(1);
} else if (missingApps.length > 0) {
logger.warn(`Missing apps: ${JSON.stringify(missingApps)}`);
await checkIfAppIsReleased(missingApps, tag, envs);
await checkIfAppIsReleased(missingApps, envs);
} else {
const reset = '\x1b[0m';
const green = '\x1b[32m';
@@ -494,22 +494,25 @@ async function deployMissingApps(tag?: string, envs?: string[]) {
* @param tag tag
* @param envs environments
*/
async function checkIfAppIsReleased(missingApps: any[], tag?: string, envs?: string[]) {
async function checkIfAppIsReleased(missingApps: any[], envs: any) {
const projectList = await getProjects();
let TIME = 5000;
let noError = true;
const gitHubRepoUtils = new GitHubRepoUtils(envs.ghToken, envs.appsRepository);
await gitHubRepoUtils.downloadRepoAndUnpackRepository('HylandSoftware', envs.branch);
for (let i = 0; i < missingApps.length; i++) {
noError = true;
const currentAbsentApp = missingApps[i];
const project = projectList.list.entries.find((currentApp: any) => currentAbsentApp.name === currentApp.entry.name);
let projectRelease: any;
if (project === undefined) {
logger.warn('Missing project: Create the project for ' + currentAbsentApp.name);
try {
projectRelease = await importProjectAndRelease(currentAbsentApp, tag);
projectRelease = await importProjectAndRelease(currentAbsentApp, gitHubRepoUtils);
} catch (error) {
logger.info(`error status ${error.status}`);
@@ -530,7 +533,7 @@ async function checkIfAppIsReleased(missingApps: any[], tag?: string, envs?: str
if (projectReleaseList.list.entries.length === 0) {
logger.warn('Project needs release');
projectRelease = await releaseProject(project);
projectRelease = await releaseProject(project.entry.id);
logger.warn(`Project released: ${projectRelease.id}`);
} else {
logger.info('Project already has release');
@@ -558,6 +561,7 @@ async function checkIfAppIsReleased(missingApps: any[], tag?: string, envs?: str
await deployWithPayload(currentAbsentApp, projectRelease);
}
}
}
}
@@ -611,16 +615,11 @@ async function checkDescriptorExist(name: string): Promise<boolean> {
* @param app application
* @param tag tag
*/
async function importProjectAndRelease(app: any, tag?: string) {
const appLocationReplaced = app.file_location(tag);
logger.warn('App fileLocation ' + appLocationReplaced);
await getFileFromRemote(appLocationReplaced, app.name);
async function importProjectAndRelease(app: any, gitHubRepoUtils: GitHubRepoUtils) {
const pathToApp = await gitHubRepoUtils.zipNeededApplication(app.name)
const projectRelease = await importAndReleaseProject(pathToApp)
logger.warn('Project imported ' + app.name);
const projectRelease = await importAndReleaseProject(`${app.name}.zip`);
await deleteLocalFile(`${app.name}`);
return projectRelease;
}
@@ -666,48 +665,6 @@ function findFailingApps(deployedApps: any[]): any[] {
return result;
}
/**
* Get file from the remote
*
* @param url url to file
* @param name name
*/
async function getFileFromRemote(url: string, name: string): Promise<void> {
return fetch(url)
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response;
})
.then((response) => new Promise<void>((resolve, reject) => {
const outputFile = fs.createWriteStream(`${name}.zip`);
response.body.pipe(outputFile);
outputFile.on('finish', () => {
logger.info(`The file is finished downloading.`);
resolve();
});
outputFile.on('error', (error) => {
logger.error(`Not possible to download the project form remote`);
reject(error);
});
}))
.catch((error) => {
logger.error(`Failed to fetch file from remote: ${error.message}`);
throw error;
});
}
/**
* Deletes local file
*
* @param name file name
*/
async function deleteLocalFile(name: string) {
logger.info(`Deleting local file ${name}.zip`);
fs.unlinkSync(`${name}.zip`);
}
/**
* Perform a timeout
*
@@ -728,7 +685,7 @@ export default async function main() {
.version('0.1.0')
.description(
'The following command is in charge of Initializing the activiti cloud env with the default apps' +
'adf-cli init-aae-env --host "gateway_env" --modelerUsername "modelerusername" --modelerPassword "modelerpassword" --devopsUsername "devevopsusername" --devopsPassword "devopspassword"'
'adf-cli init-aae-env --host "gateway_env" --modelerUsername "modelerusername" --modelerPassword "modelerpassword" --devopsUsername "devevopsusername" --devopsPassword "devopspassword" --appsRepository "repositoryName"'
)
.option('-h, --host [type]', 'Host gateway')
.option('--oauth [type]', 'SSO host')
@@ -742,6 +699,9 @@ export default async function main() {
.option('--devopsPassword [type]', 'devops password')
.option('--tag [type]', 'tag name of the codebase')
.option('--envs [type...]', 'environment ids of the envs where to deploy the app')
.option('--ghToken [type]', 'GitHub token to retrieve the private repo')
.option('--branch [type]', 'target branch of GitHub repository with the default apps. Default main')
.option('--appsRepository [type]', 'GitHub repository with the apps')
.parse(argv);
if (argv.includes('-h') || argv.includes('--help')) {
@@ -763,7 +723,10 @@ export default async function main() {
scope: options.scope,
secret: options.secret,
tag: options.tag,
envs: options.envs
envs: options.envs,
ghToken: options.ghToken,
branch: options.branch,
appsRepository: options.appsRepository
};
alfrescoJsApiModeler = getAlfrescoJsApiInstance(args);
@@ -799,9 +762,16 @@ export default async function main() {
}
);
await deployMissingApps(args.tag, args.envs);
await deployMissingApps(args);
const pathToRepositoryWithApps = `${process.cwd()}/${args.appsRepository}`;
if (fs.existsSync(pathToRepositoryWithApps)) {
fs.rmSync(pathToRepositoryWithApps, { force: true, recursive: true });
}
} else {
logger.error('The environment is not up');
exit(1);
}
}
main()
-165
View File
@@ -21,11 +21,6 @@
export const ACTIVITI_CLOUD_APPS: any = {
SUB_PROCESS_APP: {
name: 'subprocessapp',
file_location: (TAG = 'develop') => `https://github.com/Alfresco/alfresco-ng2-components/blob/${TAG}/e2e/resources/activiti7/subprocessapp.zip?raw=true`,
processes: {
processchild: 'processchild',
processparent: 'processparent'
},
security: [
{ role: 'APPLICATION_MANAGER', groups: [], users: ['manageruser'] },
{ role: 'ACTIVITI_ADMIN', groups: [], users: ['superadminuser'] },
@@ -34,170 +29,14 @@ export const ACTIVITI_CLOUD_APPS: any = {
},
CANDIDATE_BASE_APP: {
name: 'candidatebaseapp',
file_location: (TAG = 'develop') => `https://github.com/Alfresco/alfresco-ng2-components/blob/${TAG}/e2e/resources/activiti7/candidatebaseapp.zip?raw=true`,
processes: {
candidateUserProcess: 'candidateuserprocess',
candidateGroupProcess: 'candidategroupprocess',
anotherCandidateGroupProcess: 'anothercandidategroup',
uploadFileProcess: 'uploadfileprocess',
processwithstarteventform: 'processwithstarteventform',
processwithjsonfilemapping: 'processwithjsonfilemapping',
assigneeProcess: 'assigneeprocess',
errorStartEventProcess: {
process_name: 'errorstartevent',
error_id: 'Error_END_EVENT',
error_code: '123'
},
errorBoundaryEventProcess: {
process_name: 'errorboundaryevent',
error_id: 'Error_END_EVENT',
error_code: '567'
},
errorExclusiveGateProcess: {
process_name: 'errorexclusivegate',
error_id: 'Error_OK',
error_code: '200'
}
},
forms: {
starteventform: 'starteventform',
formtotestvalidations: 'formtotestvalidations',
uploadfileform: 'uploadfileform',
inputform: 'inputform',
outputform: 'outputform'
},
security: [
{ role: 'APPLICATION_MANAGER', groups: [], users: ['manageruser'] },
{ role: 'ACTIVITI_ADMIN', groups: [], users: ['superadminuser', 'processadminuser'] },
{ role: 'ACTIVITI_USER', groups: ['hr', 'testgroup'], users: ['hruser', 'salesuser'] }
],
tasks: {
uploadFileTask: 'UploadFileTask',
candidateUserTask: 'candidateUserTask'
}
},
SIMPLE_APP: {
name: 'simpleapp',
file_location: (TAG = 'develop') => `https://github.com/Alfresco/alfresco-ng2-components/blob/${TAG}/e2e/resources/activiti7/simpleapp.zip?raw=true`,
processes: {
processwithvariables: 'processwithvariables',
simpleProcess: 'simpleprocess',
dropdownrestprocess: 'dropdownrestprocess',
multilingualprocess: 'multilingualprocess',
processWithTabVisibility: 'processwithtabvisibility',
startmessageevent: 'start-message-event',
intermediatemessageevent: 'intermediate-message-event',
intboundaryevent: 'int-boundary-event',
nonintboundaryevent: 'nonint-boundary-event',
intboundarysubprocess: 'int-boundary-subprocess',
intstartmessageevent: 'int-start-message-event',
nonintstartmessageevent: 'nonint-start-message-event',
siblingtaskprocess: 'siblingtaskprocess',
startTaskVisibilityForm: 'start-task-visibility-form',
startVisibilityForm: 'start-visibility-form',
processstring: 'processstring',
processinteger: 'processinteger',
processboolean: 'processboolean',
processdate: 'processdate',
multiprocess: 'multiprocess',
terminateexclusive: 'terminate-exclusive',
terminatesubprocess: 'terminate-subprocess',
multiinstancedmnparallel: 'multiinstance-dmnparallel',
multiinstancecallactivity: 'multiinstance-callactivity',
multiinstancecollection: 'multiinstance-collection',
multiinstancecompletion: 'multiinstance-completion',
multiinstancesequential: 'multiinstance-sequential',
multiinstanceservicetask: 'multiinstance-servicetask',
multiinstanceusertask: 'multiinstance-usertask',
multiinstancedmnsequence: 'multiinstance-dmnsequence',
multiinstancemanualtask: 'multiinstance-manualtask',
multiinstancesubprocess: 'multiinstance-subprocess',
calledprocess: 'calledprocess',
booleanvisibilityprocess: 'booleanvisibilityprocess',
numbervisibilityprocess: 'numbervisibilityprocess',
processformoutcome: 'outcomebuttons',
uploadSingleMultipleFiles: 'upload-single-multiple-pro',
processDisplayRestJson: 'process-display-rest-json',
poolStartEndMessageThrow: 'pool-start-end-mess-throw',
poolStartEndMessageCatch: 'pool-start-end-mess-catch',
poolProcessCalled: 'pool-process-called',
poolProcessCalling: 'pool-process-calling',
poolNonIntBoundaryThrown: 'pool-nonint-boundary-throw',
poolNonIntBoundaryCatch: 'pool-nonint-boundary-catch',
poolIntermediateMessageThrow: 'pool-interm-message-throw',
poolIntermediateMessageCatch: 'pool-interm-message-catch',
poolInterruptingBoundarySubprocessThrow: 'pool-int-bound-subpr-throw',
poolInterruptingBoundarySubprocessCatch: 'pool-int-bound-subpr-catch',
poolInterruptingBoundaryThrow: 'pool-int-boundary-throw',
poolInterruptingBoundaryCatch: 'pool-int-boundary-catch',
outputVariablesMapping: 'output-variables-mapping'
},
forms: {
tabVisibilityFields: {
name: 'tabvisibilitywithfields'
},
tabVisibilityVars: {
name: 'tabvisibilitywithvars'
},
usertaskform: {
name: 'usertaskform'
},
dropdownform: {
name: 'dropdownform'
},
formVisibility: {
name: 'form-visibility'
},
multilingualform: {
name: 'multilingualform'
},
inputform: {
name: 'inputform'
},
outputform: {
name: 'outputform'
},
exclusiveconditionform: {
name: 'exclusive-condition-form'
},
uploadlocalfileform: {
name: 'upload-localfile-form'
},
booleanvisibility: {
name: 'booleanvisibility'
},
requirednumbervisibility: {
name: 'requirednumbervisibility'
},
mealform: {
name: 'mealform'
},
resultcollectionform: {
name: 'resultcollectionform'
},
uploadSingleMultiple: {
name: 'upload-single-multiple',
widgets: {
contentMultipleAttachFileId: 'UploadMultipleFileFromContentId'
}
},
formWithJsonWidget: {
name: 'form-with-json-widget'
},
formWithAllWidgets: {
name: 'form-with-all-widgets'
},
poolForm: {
name: 'pool-usertaskform'
},
formWithSingleInput: {
name: 'form-with-single-input'
}
},
tasks: {
processstring: 'inputtask',
uploadSingleMultipleFiles: 'UploadSingleMultipleFiles'
},
security: [
{ role: 'APPLICATION_MANAGER', groups: [], users: ['manageruser'] },
{ role: 'ACTIVITI_ADMIN', groups: [], users: ['superadminuser', 'processadminuser'] },
@@ -208,10 +47,6 @@ export const ACTIVITI_CLOUD_APPS: any = {
},
UAT_BE_DEFAULT_APP: {
name: 'uat-be-default-app',
file_location: (TAG = 'develop') => `https://github.com/Alfresco/alfresco-ng2-components/blob/${TAG}/e2e/resources/activiti7/uat-be-default-app.zip?raw=true`,
processes: {
'script-acs-process': 'script-acs-process'
},
security: [
{ role: 'ACTIVITI_ADMIN', groups: [], users: ['processadminuser'] },
{ role: 'ACTIVITI_USER', groups: [], users: ['hruser', 'salesuser', 'testadmin', 'testuser'] }
+615 -2
View File
@@ -93,9 +93,12 @@
"@typescript-eslint/eslint-plugin": "5.59.8",
"@typescript-eslint/parser": "5.62.0",
"@typescript-eslint/typescript-estree": "6.7.0",
"adm-zip": "^0.5.10",
"ajv": "^8.12.0",
"archiver": "^6.0.1",
"commander": "6.2.1",
"css-loader": "^6.8.1",
"decompress": "^4.2.1",
"dotenv": "16.1.3",
"editorjs-text-color-plugin": "1.13.1",
"ejs": "^3.1.9",
@@ -156,7 +159,8 @@
"typescript": "4.7.4",
"webdriver-manager": "12.1.9",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.2"
"webpack-cli": "^5.1.2",
"zip-a-folder": "^3.1.5"
},
"engines": {
"node": ">=6.0.0"
@@ -25098,6 +25102,52 @@
"devOptional": true,
"license": "ISC"
},
"node_modules/archiver": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz",
"integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==",
"dev": true,
"dependencies": {
"archiver-utils": "^4.0.1",
"async": "^3.2.4",
"buffer-crc32": "^0.2.1",
"readable-stream": "^3.6.0",
"readdir-glob": "^1.1.2",
"tar-stream": "^3.0.0",
"zip-stream": "^5.0.1"
},
"engines": {
"node": ">= 12.0.0"
}
},
"node_modules/archiver-utils": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz",
"integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==",
"dev": true,
"dependencies": {
"glob": "^8.0.0",
"graceful-fs": "^4.2.0",
"lazystream": "^1.0.0",
"lodash": "^4.17.15",
"normalize-path": "^3.0.0",
"readable-stream": "^3.6.0"
},
"engines": {
"node": ">= 12.0.0"
}
},
"node_modules/archiver/node_modules/tar-stream": {
"version": "3.1.6",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
"integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
"dev": true,
"dependencies": {
"b4a": "^1.6.4",
"fast-fifo": "^1.2.0",
"streamx": "^2.15.0"
}
},
"node_modules/are-we-there-yet": {
"version": "2.0.0",
"devOptional": true,
@@ -25510,6 +25560,12 @@
"deep-equal": "^2.0.5"
}
},
"node_modules/b4a": {
"version": "1.6.4",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
"integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==",
"dev": true
},
"node_modules/babel-jest": {
"version": "28.1.3",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz",
@@ -26891,6 +26947,37 @@
"ieee754": "^1.1.13"
}
},
"node_modules/buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"dev": true,
"dependencies": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
}
},
"node_modules/buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
"dev": true
},
"node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"dev": true,
"engines": {
"node": "*"
}
},
"node_modules/buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
"dev": true
},
"node_modules/buffer-from": {
"version": "1.1.2",
"dev": true,
@@ -27815,6 +27902,21 @@
"version": "1.3.0",
"license": "MIT"
},
"node_modules/compress-commons": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz",
"integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==",
"dev": true,
"dependencies": {
"crc-32": "^1.2.0",
"crc32-stream": "^5.0.0",
"normalize-path": "^3.0.0",
"readable-stream": "^3.6.0"
},
"engines": {
"node": ">= 12.0.0"
}
},
"node_modules/compressible": {
"version": "2.0.18",
"license": "MIT",
@@ -28667,6 +28769,31 @@
"node": ">=0.10.0"
}
},
"node_modules/crc-32": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
"dev": true,
"bin": {
"crc32": "bin/crc32.njs"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/crc32-stream": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz",
"integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==",
"dev": true,
"dependencies": {
"crc-32": "^1.2.0",
"readable-stream": "^3.4.0"
},
"engines": {
"node": ">= 12.0.0"
}
},
"node_modules/create-ecdh": {
"version": "4.0.4",
"dev": true,
@@ -29578,6 +29705,25 @@
"node": ">=0.10"
}
},
"node_modules/decompress": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
"integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
"dev": true,
"dependencies": {
"decompress-tar": "^4.0.0",
"decompress-tarbz2": "^4.0.0",
"decompress-targz": "^4.0.0",
"decompress-unzip": "^4.0.1",
"graceful-fs": "^4.1.10",
"make-dir": "^1.0.0",
"pify": "^2.3.0",
"strip-dirs": "^2.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-response": {
"version": "4.2.1",
"license": "MIT",
@@ -29589,6 +29735,220 @@
"node": ">=8"
}
},
"node_modules/decompress-tar": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
"integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
"dev": true,
"dependencies": {
"file-type": "^5.2.0",
"is-stream": "^1.1.0",
"tar-stream": "^1.5.2"
},
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-tar/node_modules/bl": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
"integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
"dev": true,
"dependencies": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
}
},
"node_modules/decompress-tar/node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-tar/node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"dev": true
},
"node_modules/decompress-tar/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/decompress-tar/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/decompress-tar/node_modules/tar-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
"integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
"dev": true,
"dependencies": {
"bl": "^1.0.0",
"buffer-alloc": "^1.2.0",
"end-of-stream": "^1.0.0",
"fs-constants": "^1.0.0",
"readable-stream": "^2.3.0",
"to-buffer": "^1.1.1",
"xtend": "^4.0.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/decompress-tarbz2": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
"integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
"dev": true,
"dependencies": {
"decompress-tar": "^4.1.0",
"file-type": "^6.1.0",
"is-stream": "^1.1.0",
"seek-bzip": "^1.0.5",
"unbzip2-stream": "^1.0.9"
},
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-tarbz2/node_modules/file-type": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
"integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-tarbz2/node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-targz": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
"integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
"dev": true,
"dependencies": {
"decompress-tar": "^4.1.1",
"file-type": "^5.2.0",
"is-stream": "^1.1.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-targz/node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-unzip": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
"integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
"dev": true,
"dependencies": {
"file-type": "^3.8.0",
"get-stream": "^2.2.0",
"pify": "^2.3.0",
"yauzl": "^2.4.2"
},
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-unzip/node_modules/file-type": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
"integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-unzip/node_modules/get-stream": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
"integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
"dev": true,
"dependencies": {
"object-assign": "^4.0.1",
"pinkie-promise": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-unzip/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress/node_modules/make-dir": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
"integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"dev": true,
"dependencies": {
"pify": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/decompress/node_modules/make-dir/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/decompress/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/dedent": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
@@ -32171,6 +32531,12 @@
"integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
"dev": true
},
"node_modules/fast-fifo": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
"dev": true
},
"node_modules/fast-glob": {
"version": "3.2.7",
"dev": true,
@@ -32239,6 +32605,15 @@
"bser": "2.1.1"
}
},
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
"dev": true,
"dependencies": {
"pend": "~1.2.0"
}
},
"node_modules/fetch-retry": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz",
@@ -32360,6 +32735,15 @@
"ramda": "^0.28.0"
}
},
"node_modules/file-type": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
"integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/file-uri-to-path": {
"version": "1.0.0",
"dev": true,
@@ -38991,8 +39375,9 @@
},
"node_modules/jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"dev": true,
"license": "(MIT OR GPL-3.0-or-later)",
"dependencies": {
"lie": "~3.3.0",
"pako": "~1.0.2",
@@ -39339,6 +39724,48 @@
"node": ">=10"
}
},
"node_modules/lazystream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
"integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
"dev": true,
"dependencies": {
"readable-stream": "^2.0.5"
},
"engines": {
"node": ">= 0.6.3"
}
},
"node_modules/lazystream/node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"dev": true
},
"node_modules/lazystream/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/lazystream/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/less": {
"version": "4.1.3",
"dev": true,
@@ -43904,6 +44331,12 @@
"canvas": "^2.11.0"
}
},
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"dev": true
},
"node_modules/performance-now": {
"version": "2.1.0",
"dev": true,
@@ -46167,6 +46600,12 @@
],
"license": "MIT"
},
"node_modules/queue-tick": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
"dev": true
},
"node_modules/quick-lru": {
"version": "4.0.1",
"dev": true,
@@ -46601,6 +47040,36 @@
"node": ">= 6"
}
},
"node_modules/readdir-glob": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
"integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
"dev": true,
"dependencies": {
"minimatch": "^5.1.0"
}
},
"node_modules/readdir-glob/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/readdir-glob/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/readdir-scoped-modules": {
"version": "1.1.0",
"dev": true,
@@ -48230,6 +48699,25 @@
"dev": true,
"license": "MIT"
},
"node_modules/seek-bzip": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
"integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
"dev": true,
"dependencies": {
"commander": "^2.8.1"
},
"bin": {
"seek-bunzip": "bin/seek-bunzip",
"seek-table": "bin/seek-bzip-table"
}
},
"node_modules/seek-bzip/node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
"node_modules/select-hose": {
"version": "2.0.0",
"dev": true,
@@ -49569,6 +50057,16 @@
"node": ">= 4.0.0"
}
},
"node_modules/streamx": {
"version": "2.15.6",
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
"integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
"dev": true,
"dependencies": {
"fast-fifo": "^1.1.0",
"queue-tick": "^1.0.1"
}
},
"node_modules/string_decoder": {
"version": "1.3.0",
"devOptional": true,
@@ -49781,6 +50279,15 @@
"node": ">=8"
}
},
"node_modules/strip-dirs": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
"integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
"dev": true,
"dependencies": {
"is-natural-number": "^4.0.1"
}
},
"node_modules/strip-eof": {
"version": "1.0.0",
"dev": true,
@@ -50838,6 +51345,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/to-buffer": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
"integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
"dev": true
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
"license": "MIT",
@@ -51467,6 +51980,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/unbzip2-stream": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
"integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
"dev": true,
"dependencies": {
"buffer": "^5.2.1",
"through": "^2.3.8"
}
},
"node_modules/unfetch": {
"version": "4.2.0",
"dev": true,
@@ -53844,6 +54367,16 @@
"node": ">=8"
}
},
"node_modules/yauzl": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"dev": true,
"dependencies": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
}
},
"node_modules/yn": {
"version": "3.1.1",
"dev": true,
@@ -53873,6 +54406,86 @@
"zen-observable": "0.8.15"
}
},
"node_modules/zip-a-folder": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-3.1.5.tgz",
"integrity": "sha512-w7ZOjJS17MYqdjVEFiqa537H/hxVGcwxnmCcmOaUXDoezttVrWkbSob7nit4lqUqha+Q0pOFTCVsBttBx6hs5A==",
"dev": true,
"dependencies": {
"archiver": "^6.0.1",
"glob": "^10.3.10",
"is-glob": "^4.0.3"
}
},
"node_modules/zip-a-folder/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/zip-a-folder/node_modules/glob": {
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
"dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.3.5",
"minimatch": "^9.0.1",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
"path-scurry": "^1.10.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/zip-a-folder/node_modules/minimatch": {
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/zip-a-folder/node_modules/minipass": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
"dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/zip-stream": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz",
"integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==",
"dev": true,
"dependencies": {
"archiver-utils": "^4.0.1",
"compress-commons": "^5.0.1",
"readable-stream": "^3.6.0"
},
"engines": {
"node": ">= 12.0.0"
}
},
"node_modules/zone.js": {
"version": "0.11.8",
"license": "MIT",
+5 -1
View File
@@ -143,9 +143,12 @@
"@typescript-eslint/eslint-plugin": "5.59.8",
"@typescript-eslint/parser": "5.62.0",
"@typescript-eslint/typescript-estree": "6.7.0",
"adm-zip": "^0.5.10",
"ajv": "^8.12.0",
"archiver": "^6.0.1",
"commander": "6.2.1",
"css-loader": "^6.8.1",
"decompress": "^4.2.1",
"dotenv": "16.1.3",
"editorjs-text-color-plugin": "1.13.1",
"ejs": "^3.1.9",
@@ -206,7 +209,8 @@
"typescript": "4.7.4",
"webdriver-manager": "12.1.9",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.2"
"webpack-cli": "^5.1.2",
"zip-a-folder": "^3.1.5"
},
"license": "Apache-2.0",
"bundlesize": [