mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-09 18:03:21 +00:00
[AAE-17458] Move default apps away from repository
This commit is contained in:
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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'] }
|
||||
|
||||
Generated
+615
-2
@@ -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
@@ -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": [
|
||||
|
||||
Reference in New Issue
Block a user