updatef for personal document validation, digital sign zip archive

This commit is contained in:
merelendor 2023-04-14 10:52:10 +03:00
parent 38092fdaf9
commit 1cfbd39e1a
15 changed files with 694 additions and 287 deletions

View File

@ -82,3 +82,24 @@ export const getSuggests = (type, payload) =>
});
});
}
export const checkDocumentData = (payload) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/suggests/document/check`, payload, {
withCredentials: true,
})
.then((response) =>
{
resolve(response.data);
})
.catch((error) =>
{
console.log("error");
console.error(error);
reject();
});
});
}

View File

@ -61,10 +61,11 @@ export default class AddressSuggests extends React.Component
const { fias, focused } = this.state;
const { onChange } = this.props;
this.setState({ focused: false }, () =>
{
onChange({ name: value, fias_id: fias[value] });
});
setTimeout(() =>
{
this.setState({ focused: false });
}, 100);
}
_handle_onFocus = (event) =>

View File

@ -81,10 +81,11 @@ export default class DocumentIssuerSuggestsInput extends React.Component
console.log("DocumentIssuerSuggestsInput", "_handle_onSelect", { option });
const { onChange } = this.props;
this.setState({ focused: false }, () =>
{
onChange(option);
});
setTimeout(() =>
{
this.setState({ focused: false });
}, 100);
}
_handle_onFocus = () =>
@ -187,11 +188,17 @@ export default class DocumentIssuerSuggestsInput extends React.Component
disabled={ disabled }
/>
{ focused && options.length > 0 && (
<div className="react-select__menu" style={{ position: "absolute", zIndex: 1, background: "#fff", width: "100%", left: "0px", top: "40px" }}>
<div className="react-select__menu" style={{ position: "absolute", zIndex: 1000, background: "#fff", width: "100%", left: "0px", top: "40px" }}>
<div className="react-select__menu-list">
{ options.map((option, index) =>
(
<div className="react-select__option" aria-disabled="false" tab-index="-1" key={ index } onClick={ () => this._handle_onSelect(option) }>{ option.value }</div>
<div
className="react-select__option"
style={{ minHeight: "26px", background: "#FFF", lineHeight: "18px", margin: "0px", padding: "5px 5px 5px 5px", }}
key={ index }
onMouseDown={ (event) => { event.preventDefault(); this._handle_onSelect(option); } }
onTouchStart={ (event) => { event.preventDefault(); this._handle_onSelect(option); } }
><span>{ option.value }</span></div>
)) }
</div>
</div>

View File

@ -69,10 +69,12 @@ export default class SuggestsInput extends React.Component
const { onChange } = this.props;
onChange(value);
this.setState({ focused: true }, () =>
{
this._getValue(value);
});
setTimeout(() =>
{
this.setState({ focused: false });
}, 100);
}
_handle_onSelect = (value) =>

View File

@ -94,11 +94,21 @@ class Form_1_Main extends QuestionnaireForm
for(let i in check)
{
if(main[check[i]] === "")
if(check[i] === "telephone")
{
if(main.telephone === "" || main.telephone === null || isNaN(parseInt(main.telephone.replace(/[^\d]+/g, ''), 10)) || parseInt(main.telephone.replace(/[^\d]+/g, ''), 10).toString().length < 11)
{
errors.push(`main.telephone`);
}
}
else
{
if(main[check[i]] === null || main[check[i]] === "")
{
errors.push(`main.${ check[i] }`);
}
}
}
if(main.websiteurl !== null && main.websiteurl !== "")
{
@ -112,7 +122,10 @@ class Form_1_Main extends QuestionnaireForm
this.setState({ errors }, () =>
{
window.scroll(0, 0);
if(errors.length === 0)
{
this.ref_submit.current.click();
}
});
}
@ -276,7 +289,7 @@ class Form_1_Main extends QuestionnaireForm
placeholder="Укажите сумму"
decimalSeparator="."
groupSeparator=" "
suffix=" ₽"
//suffix=" ₽"
maxLength={ 12 }
onValueChange={ (value, name) => { this._removeError(name); this._handle_onTextFieldChange(name, value); } }
required={ true }

View File

@ -26,7 +26,7 @@ import AddressSuggests from "../../AddressSuggests";
import InputMask from 'react-input-mask';
import SuggestsInput from "../../SuggestsInput";
import { getCitizenshipTitleByCode } from "../../../../utils/citizenship";
import { removeAttachmentFiles, saveQuestionnaire, getSuggests } from "../../../../actions";
import { removeAttachmentFiles, saveQuestionnaire, getSuggests, checkDocumentData } from "../../../../actions";
import DocumentIssuerSuggestsInput from "../../DocumentIssuerSuggestsInput";
import FormMessage from "../FormMessage";
@ -246,6 +246,7 @@ class Form_3_Signer extends QuestionnaireForm
const { head_person } = this.state;
const indefinite = !head_person.evo_indefinite ? true : false;
this._handle_onCheckboxFieldChange("head_person.evo_indefinite", indefinite);
this._removeError("head_person.evo_credentials_dateend");
if(!indefinite)
{
@ -322,7 +323,8 @@ class Form_3_Signer extends QuestionnaireForm
_handle_onNextPage = (event) =>
{
event.preventDefault();
this.setState({ loading: true }, async () =>
{
const errors = [];
const { main, head_person, signatory_person,
delegation_files, head_person_files, signatory_person_files, signatory_corporate_files,
@ -380,7 +382,7 @@ class Form_3_Signer extends QuestionnaireForm
if(!head_person.evo_indefinite)
{
if(head_person.evo_credentials_dateend === "")
if(head_person.evo_credentials_dateend === undefined || head_person.evo_credentials_dateend === null || head_person.evo_credentials_dateend === "")
{
errors.push(`head_person.evo_credentials_dateend`);
}
@ -417,6 +419,23 @@ class Form_3_Signer extends QuestionnaireForm
errors.push(`head_person.email`);
}
//8004
//930118
if(parseInt(_get(head_person, "identity_document.doctype"), 10) === 100000000 && errors.indexOf("head_persor.identity_document.seria") < 0 && errors.indexOf("head_persor.identity_document.docnumber") < 0)
{
const head_person_document_check_response = await checkDocumentData({
seria: head_person.identity_document.seria,
number: head_person.identity_document.docnumber,
});
if(head_person_document_check_response[0] !== undefined && head_person_document_check_response[0].qc !== 0)
{
errors.push(`head_person.identity_document.invalid`);
errors.push(`head_person.identity_document.seria`);
errors.push(`head_person.identity_document.docnumber`);
}
}
//переданы
if(signatory_person.delegation_agreement)
{
@ -509,20 +528,34 @@ class Form_3_Signer extends QuestionnaireForm
errors.push(`signatory_person.${ signatory_person_check[i] }`);
}
}
if(parseInt(_get(signatory_person, "identity_document.doctype"), 10) === 100000000 && errors.indexOf("signatory_person.identity_document.seria") < 0 && errors.indexOf("signatory_person.identity_document.docnumber") < 0)
{
const signatory_person_document_check_response = await checkDocumentData({
seria: signatory_person.identity_document.seria,
number: signatory_person.identity_document.docnumber,
});
if(signatory_person_document_check_response[0] !== undefined && signatory_person_document_check_response[0].qc !== 0)
{
errors.push(`signatory_person.identity_document.invalid`);
errors.push(`signatory_person.identity_document.seria`);
errors.push(`signatory_person.identity_document.docnumber`);
}
}
}
if(head_person_files.length === 0) { errors.push(`head_person_files`); }
this.setState({ errors }, () =>
this.setState({ errors, loading: false }, () =>
{
console.log("_handle_onNextPage", { errors });
window.scroll(0, 0);
if(errors.length === 0)
{
this.ref_submit.current.click();
}
});
});
}
_handle_onFormSubmit = (event) =>
@ -619,6 +652,11 @@ class Form_3_Signer extends QuestionnaireForm
/>
</div>
{ errors.indexOf("head_person.identity_document.invalid") > -1 &&
(
<FormMessage type="error" title="Ошибка" message="Указаны недействительные паспортные данные."/>
) }
<div className="formgroup">
<div className="form_field">
<label>Серия паспорта <sup className="required_label">*</sup></label>
@ -629,7 +667,7 @@ class Form_3_Signer extends QuestionnaireForm
name="head_person.identity_document.seria"
value={ this._checkStrValue(head_person.identity_document.seria) }
placeholder="Введите серию"
onChange={ (event) => { this._removeError("head_person.identity_document.seria"); this._handle_onTextFieldChange(event.target.name, event.target.value) } }
onChange={ (event) => { this._removeError(["head_person.identity_document.seria", "head_person.identity_document.invalid"]); this._handle_onTextFieldChange(event.target.name, event.target.value) } }
required={ true }
disabled={ checking }
/>
@ -643,7 +681,7 @@ class Form_3_Signer extends QuestionnaireForm
name="head_person.identity_document.docnumber"
value={ this._checkStrValue(head_person.identity_document.docnumber) }
placeholder="Введите номер"
onChange={ (event) => { this._removeError("head_person.identity_document.docnumber"); this._handle_onTextFieldChange(event.target.name, event.target.value) } }
onChange={ (event) => { this._removeError(["head_person.identity_document.docnumber", "head_person.identity_document.invalid"]); this._handle_onTextFieldChange(event.target.name, event.target.value) } }
required={ true }
disabled={ checking }>
</InputMask>
@ -1069,6 +1107,11 @@ class Form_3_Signer extends QuestionnaireForm
/>
</div>
{ errors.indexOf("signatory_person.identity_document.invalid") > -1 &&
(
<FormMessage type="error" title="Ошибка" message="Указаны недействительные паспортные данные."/>
) }
<div className="formgroup">
<div className="form_field">
<label>Серия паспорта <sup className="required_label">*</sup></label>

View File

@ -19,7 +19,7 @@ import { reduxWrapper } from '../../../../store';
import AddressSuggests from "../../AddressSuggests";
import InputMask from 'react-input-mask';
import { getCitizenshipTitleByCode } from "../../../../utils/citizenship";
import { saveQuestionnaire } from "../../../../actions";
import { checkDocumentData, saveQuestionnaire } from "../../../../actions";
import SuggestsInput from "../../SuggestsInput";
import DocumentIssuerSuggestsInput from "../../DocumentIssuerSuggestsInput";
import moment from "moment";
@ -38,8 +38,6 @@ class ShareholderForm extends React.Component
_handle_onCitizenshipChange = (name, value) =>
{
console.log("_handle_onCitizenshipChange", value);
let citizenship = getCitizenshipTitleByCode(value);
this._handle_onFieldChange(name, {
title: citizenship,
@ -52,10 +50,7 @@ class ShareholderForm extends React.Component
const { index, shareholder, checking, errors } = this.props;
let citizenship = { label: getCitizenshipTitleByCode(shareholder.identity_document.citizenship.code), code: shareholder.identity_document.citizenship.code };
console.log("shareholder", "citizenship", citizenship);
console.log("shareholder", shareholder);
console.log("shareholder errors", errors);
console.log({ errors });
return (
<React.Fragment>
@ -166,6 +161,11 @@ class ShareholderForm extends React.Component
/>
</div>
{ errors.indexOf("identity_document.invalid") > -1 &&
(
<FormMessage type="error" title="Ошибка" message="Указаны недействительные паспортные данные."/>
) }
<div className="form_field ">
<div className="form_field">
<label>Серия и номер паспорта <sup className="required_label">*</sup></label>
@ -178,7 +178,7 @@ class ShareholderForm extends React.Component
name={ `founder_persons[${ index }].identity_document.seria` }
value={ this._checkStrValue(shareholder.identity_document.seria) }
placeholder="Введите серию"
onChange={ (event) => { this._removeError("identity_document.seria"); this._handle_onTextFieldChange(event.target.name, event.target.value) } }
onChange={ (event) => { this._removeError(["identity_document.seria", "identity_document.invalid"]); this._handle_onTextFieldChange(event.target.name, event.target.value) } }
required={ true }
disabled={ checking }
/>
@ -191,7 +191,7 @@ class ShareholderForm extends React.Component
name={ `founder_persons[${ index }].identity_document.docnumber` }
value={ this._checkStrValue(shareholder.identity_document.docnumber) }
placeholder="Введите номер"
onChange={ (event) => { this._removeError("identity_document.docnumber"); this._handle_onTextFieldChange(event.target.name, event.target.value); } }
onChange={ (event) => { this._removeError(["identity_document.docnumber", "identity_document.invalid"]); this._handle_onTextFieldChange(event.target.name, event.target.value); } }
required={ true }
disabled={ checking }
/>
@ -298,6 +298,10 @@ class ShareholderForm extends React.Component
/>
</div>
{ index === 0 && errors.indexOf("founder_part_total") > -1 && (
<FormMessage type="error" title="Ошибка" message="Сумма долей учредителей более 100%"/>
) }
<div className="form_field">
<label>Доля в уставном капитале (%) <sup className="required_label">*</sup></label>
<InputMask
@ -440,7 +444,7 @@ class Shareholder extends React.Component
id={ `founder_persons[${ index }].contact_${ hash }` }
name={ `founder_persons[${ index }].contact_${ hash }` }
checked={ hash === shareholder.hash }
onChange={ () => changeFounderSelectionFromList(`founder_persons[${ index }]`, { ...shareholder, ...contact, ...{
onChange={ () => changeFounderSelectionFromList(index, `founder_persons[${ index }]`, { ...shareholder, ...contact, ...{
founder_from_list: false,
founder_number: shareholders.length,
} }) }
@ -535,8 +539,6 @@ class Form_4_Shareholders extends QuestionnaireForm
componentDidMount()
{
console.log("Form_4_Shareholders", "this.state", this.state);
console.log("Form_4_Shareholders", "global.store.getState()", global.store.getState());
const founder_persons_template = JSON.parse(JSON.stringify(this.state.founder_persons_template));
if(this.state.founder_persons.length === 0)
@ -549,13 +551,9 @@ class Form_4_Shareholders extends QuestionnaireForm
_handle_onAddShareholder = () =>
{
console.log("_handle_onAddShareholder");
const founder_persons = [ ...this.state.founder_persons ];
const founder_persons_template = JSON.parse(JSON.stringify(this.state.founder_persons_template));
console.log("_handle_onAddShareholder", { founder_persons_template });
if(founder_persons.length < 4)
{
founder_persons.push(founder_persons_template);
@ -581,16 +579,16 @@ class Form_4_Shareholders extends QuestionnaireForm
{
const founder_persons_template = JSON.parse(JSON.stringify(this.state.founder_persons_template));
const update = { ...founder_persons_template , ...values };
console.log("_handle_onClearFounderFromListSelection", update);
this._handle_onFieldChange(name, update );
}
_handle_onChangeFounderSelectionFromList = (name, values) =>
_handle_onChangeFounderSelectionFromList = (index, name, values) =>
{
console.log("_handle_onChangeFounderSelectionFromList");
console.log(name, values);
this._handle_onFieldChange(name, { ...values } );
const { errors } = this.state;
errors.splice(index, 1);
this.setState({ errors });
}
_handle_onIssuerCodeChange = (branch, index, option) =>
@ -640,7 +638,6 @@ class Form_4_Shareholders extends QuestionnaireForm
_handle_onFormSubmit = (event) =>
{
event.preventDefault();
console.log("Form_4_Shareholders", "_handle_onFormSubmit");
this._handle_onCheckboxFieldChange("step", 5);
setTimeout(() =>
@ -650,8 +647,9 @@ class Form_4_Shareholders extends QuestionnaireForm
}, 10);
}
_handle_onNextPage = () =>
_handle_onNextPage = (event) =>
{
event.preventDefault();
const errors = [
[], [], [], []
];
@ -674,10 +672,14 @@ class Form_4_Shareholders extends QuestionnaireForm
"identity_document.registration_address.name",
];
this.setState({ loading: true }, async () =>
{
if(parseInt(_get("signatory_person.identity_document.doctype"), 10) === 100000000)
{
}
let total_parts = 0;
for(let f in founder_persons)
{
for(let i in check)
@ -698,6 +700,17 @@ class Form_4_Shareholders extends QuestionnaireForm
errors[f].push(`email`);
}
}
else if(check[i] === "founder_part")
{
if(v !== "" || v !== null || !isNaN(parseInt(v, 10)))
{
total_parts = total_parts + parseInt(v, 10)
}
else
{
errors[f].push(`founder_part`);
}
}
else
{
if(v === "" || v === null)
@ -706,22 +719,51 @@ class Form_4_Shareholders extends QuestionnaireForm
}
}
}
if(total_parts > 100)
{
errors[0].push(`founder_part_total`);
}
this.setState({ errors }, () =>
if(parseInt(_get(founder_persons[f], "identity_document.doctype"), 10) === 100000000 && errors.indexOf("identity_document.seria") < 0 && errors.indexOf("identity_document.docnumber") < 0)
{
const founder_document_check_response = await checkDocumentData({
seria: _get(founder_persons[f], "identity_document.seria"),
number: _get(founder_persons[f], "identity_document.docnumber"),
});
if(founder_document_check_response[0] !== undefined && founder_document_check_response[0].qc !== 0)
{
errors[f].push(`identity_document.invalid`);
errors[f].push(`identity_document.seria`);
errors[f].push(`identity_document.docnumber`);
}
}
}
this.setState({ errors, loading: false }, () =>
{
window.scroll(0, 0);
if(errors.length === 0)
let errnum = 0;
for(let i in errors)
{
for(let e in errors[i])
{
errnum++;
}
}
if(errnum === 0)
{
this.ref_submit.current.click();
}
});
});
}
_onRemoveError = (index, name) =>
{
const errors = [ ...this.state.errors ];
console.log("_onRemoveError", { index, name, errors });
if(typeof name === "string")
{
@ -764,8 +806,6 @@ class Form_4_Shareholders extends QuestionnaireForm
const { checking } = this.props;
const { founder_persons, client_contacts, loading, address, status, errors, } = this.state;
//console.log("questionnaire", questionnaire);
return (
<form ref={ this.ref_form } onSubmit={ this._handle_onFormSubmit } onKeyDown={(e) => {if (e.key === 'Enter') e.preventDefault() }} className={`questionnaire questionnaire_4 ${ checking && "disabled" }`}>
<p className="title">4. Сведения об участниках (акционерах) и бенефициарных владельцах</p>
@ -809,7 +849,7 @@ class Form_4_Shareholders extends QuestionnaireForm
) : (
<div></div>
) }
<div>
<div className="questionnaire_button_continue">
<button type="submit" className="button button-blue" onClick={ this._handle_onNextPage } disabled={ founder_persons.length === 0 ? true : founder_persons[0].founder_from_list ? true : false }>
{ loading ? (
<SpinnerCircular size={24} thickness={100} speed={100} color="rgba(255, 255, 255, 1)" secondaryColor="rgba(255, 255, 255, 0.5)" style={{ marginTop: "4px" }}/>

View File

@ -191,7 +191,7 @@ class Form_5_Regulatory extends QuestionnaireForm
{ !checking && (
<div className="action">
<div></div>
<div>
<div className="questionnaire_button_continue">
<button type="submit" className="button button-blue" onClick={ this._handle_onNextPage }>
{ loading ? (
<SpinnerCircular size={24} thickness={100} speed={100} color="rgba(255, 255, 255, 1)" secondaryColor="rgba(255, 255, 255, 0.5)" style={{ marginTop: "4px" }}/>

View File

@ -1080,6 +1080,9 @@
}
}
/* questionnaire */
.questionnaire .button-blue {
min-width: 80px;
}
.questionnaire:not(:last-child) {
margin-bottom: 50px;
}
@ -1384,6 +1387,9 @@
line-height: 20px;
}
}
.questionnaire .files_list {
padding-bottom: 30px;
}
@media all and (max-width: 720px) {
.questionnaire .files_list .dosc_list {
width: 100% !important;
@ -1641,3 +1647,8 @@
margin-top: 10px;
}
}
@media all and (max-width: 720px) {
.questionnaire_button_continue {
width: 100%;
}
}

View File

@ -1289,6 +1289,7 @@
/* questionnaire */
.questionnaire {
.button-blue { min-width: 80px; }
&:not(:last-child) {
margin-bottom: 50px;
}
@ -1630,6 +1631,8 @@
}
.files_list {
padding-bottom: 30px;
@media all and (max-width: 720px) {
.dosc_list {
width: 100% !important;
@ -1914,3 +1917,9 @@
}
}
}
.questionnaire_button_continue {
@media all and (max-width: 720px) {
width: 100%;
}
}

View File

@ -12,6 +12,7 @@
"@mpth/react-no-ssr": "^1.0.1",
"@nano-sql/core": "^2.3.7",
"@pdf-lib/fontkit": "^1.1.1",
"archiver": "^5.3.1",
"async": "^3.2.2",
"axios": "^0.24.0",
"cookie": "^0.4.1",

View File

@ -12,6 +12,7 @@ import { inspect } from 'util';
import multer from 'multer';
import { get as _get, pick as _pick } from 'lodash';
import { eachSeries } from 'async';
import archiver from 'archiver';
import { fileTypeFromBuffer } from "file-type";
//import { MIMEType } from 'util';
@ -22,6 +23,8 @@ import RedisClient from '../../../lib/RedisClient';
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });
const uploads = `${ __dirname }/../../../../../uploads/`;
function checkNullEmpty(value)
{
if(value === null) { return false; }
@ -30,13 +33,53 @@ function checkNullEmpty(value)
return true;
}
function zipDigitalContent(zip_filename, files)
{
return new Promise((resolve) =>
{
const output = fs.createWriteStream(`${ uploads }${ zip_filename }`);
const archive = archiver('zip', {
zlib: { level: 9 } // Sets the compression level.
});
output.on('end', function()
{
console.log('Data has been drained');
});
archive.on('warning', function(err)
{
if (err.code === 'ENOENT')
{
// log warning
} else {
// throw error
throw err;
}
});
archive.on('error', function(err)
{
throw err;
});
archive.pipe(output);
for(let i in files)
{
archive.append(fs.createReadStream(files[i].path), { name: files[i].name });
}
archive.finalize();
resolve();
});
}
export default async function handler(req, res)
{
console.log("API", "questionnaire", "send");
await cors(req, res);
const uploads = `${ __dirname }/../../../../../uploads/`;
return new Promise((resolve) =>
{
if(req.headers.cookie !== undefined)
@ -64,9 +107,11 @@ export default async function handler(req, res)
const filetype = await fileTypeFromBuffer(file.buffer);
console.log("fileTypeFromBuffer", filetype);
const timemark = moment().format("YYYY_MM_DD_HH_mm_ss");
const local_filename = digital
? `${ client_jwt_decoded.acc_number }_questionnaire_${ moment().format("YYYY_MM_DD_HH:mm:ss") }.sig`
: `${ client_jwt_decoded.acc_number }_signed_questionnaire_${ moment().format("YYYY_MM_DD_HH:mm:ss") }.${ filetype.ext }`;
? `${ client_jwt_decoded.acc_number }_questionnaire_${ timemark }.sig`
: `${ client_jwt_decoded.acc_number }_signed_questionnaire_${ timemark }.${ filetype.ext }`;
const key = md5(`questionnaire_${ client_jwt_decoded.acc_number }`);
const questionnaire = await RedisClient.get(key);
@ -201,15 +246,38 @@ export default async function handler(req, res)
files_to_send.push({ ...parsed.signatory_corporate_files[i], ...{ number: 22, } })
}
/*
files_to_send.push({ ...{
name: `${ client_jwt_decoded.acc_number }_questionnaire.pdf`,
filename: `${ client_jwt_decoded.acc_number }_questionnaire.pdf`,
}, ...{ number: 18, } });
*/
if(digital)
{
const zip_filename = `${ client_jwt_decoded.acc_number }_questionnaire.zip`;
await zipDigitalContent(zip_filename, [{
name: `${ client_jwt_decoded.acc_number }_questionnaire_${ timemark }.pdf`,
path: `${ uploads }${ client_jwt_decoded.acc_number }_questionnaire.pdf`,
},
{
name: local_filename,
path: `${ uploads }${ local_filename }`,
}
]);
files_to_send.push({ ...{
name: zip_filename,
filename: zip_filename,
}, ...{ number: 162 } });
}
else
{
files_to_send.push({ ...{
name: local_filename,
filename: local_filename,
}, ...{ number: digital ? 162 : 161, } });
}, ...{ number: 161, } });
}
console.log("@".repeat(200));
console.log(payload);

View File

@ -40,6 +40,8 @@ class QuestionnairePage extends React.Component
signatories: [],
company: {},
nko: false,
moderation: false,
loading: true,
};
}
@ -70,7 +72,15 @@ class QuestionnairePage extends React.Component
console.log("-".repeat(50));
console.log(company);
getQuestionnaire({ dispatch, id: company.questionnaire_id });
getQuestionnaire({ dispatch, id: company.questionnaire_id })
.then(() =>
{
this.setState({ loading: false, });
})
.catch(() =>
{
this.setState({ loading: false, moderation: true });
});
}
_check_fields_disabled = (values) =>
@ -113,7 +123,7 @@ class QuestionnairePage extends React.Component
render()
{
const { company, nko, phone, phone_check_loading, phone_number_format_error } = this.state;
const { loading, moderation, company, nko, phone, phone_check_loading, phone_number_format_error } = this.state;
const route = this.props.router.asPath;
return (
@ -130,6 +140,31 @@ class QuestionnairePage extends React.Component
</div>
</div>
<NoSSR>
{ loading ? (
<div className="container" style={{ display: "flex", alignItems: "center", justifyContent: "center", }}>
<SpinnerCircular size={ 90 } thickness={ 51 } speed={ 100 } color="rgba(28, 1, 169, 1)" secondaryColor="rgba(236, 239, 244, 1)" />
</div>
) : (
<React.Fragment>
{ moderation ? (
<React.Fragment>
<div className="questionnaire message moderate">
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 38.5C31.1127 38.5 38.5 31.1127 38.5 22C38.5 12.8873 31.1127 5.5 22 5.5C12.8873 5.5 5.5 12.8873 5.5 22C5.5 31.1127 12.8873 38.5 22 38.5Z" fill="white"/>
<path d="M23.0322 14.699L28.301 19.9678L29.0537 22.9785L25.2903 26.7419M14.0478 23.779L19.221 28.9522M18.957 29H14.7527C14.5531 29 14.3616 28.9207 14.2205 28.7795C14.0793 28.6384 14 28.4469 14 28.2473V24.043C14 23.9441 14.0195 23.8463 14.0573 23.7549C14.0951 23.6636 14.1506 23.5806 14.2205 23.5107L25.5107 12.2205C25.6519 12.0793 25.8433 12 26.043 12C26.2426 12 26.434 12.0793 26.5752 12.2205L30.7795 16.4248C30.9207 16.566 31 16.7574 31 16.957C31 17.1567 30.9207 17.3481 30.7795 17.4893L19.4893 28.7795C19.4194 28.8494 19.3364 28.9049 19.2451 28.9427C19.1537 28.9805 19.0559 29 18.957 29Z" stroke="#8E94A7" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
</svg>
<p>
<b>Анкета подписана и находится на проверке</b>
При необходимости сотрудник Отдела по работе с клиентами свяжется с Вами.
</p>
</div>
<div className="questionnaire status_action">
<>
<button className="button button-blue" style={{ width: "100%", minWidth: "255px" }} onClick={ () => this.props.router.push("/") }>Перейти на главную страницу </button>
</>
</div>
</React.Fragment>
) : (
<div className={ `aside_container ${ route.indexOf("#status") < 0 ? "about" : "" }` }>
{ route.indexOf("#status") < 0 && (
<InnerMenu company={ company } nko={ nko } { ...this.props }/>
@ -138,6 +173,9 @@ class QuestionnairePage extends React.Component
{ this._renderForm() }
</article>
</div>
) }
</React.Fragment>
) }
</NoSSR>
</AccountLayout>
<Footer/>

191
yarn.lock
View File

@ -647,6 +647,35 @@ append-field@^1.0.0:
resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56"
integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==
archiver-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2"
integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==
dependencies:
glob "^7.1.4"
graceful-fs "^4.2.0"
lazystream "^1.0.0"
lodash.defaults "^4.2.0"
lodash.difference "^4.5.0"
lodash.flatten "^4.4.0"
lodash.isplainobject "^4.0.6"
lodash.union "^4.6.0"
normalize-path "^3.0.0"
readable-stream "^2.0.0"
archiver@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6"
integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==
dependencies:
archiver-utils "^2.1.0"
async "^3.2.3"
buffer-crc32 "^0.2.1"
readable-stream "^3.6.0"
readdir-glob "^1.0.0"
tar-stream "^2.2.0"
zip-stream "^4.1.0"
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
@ -803,7 +832,7 @@ async-each@^1.0.0:
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77"
integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==
async@^3.2.2:
async@^3.2.2, async@^3.2.3:
version "3.2.4"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
@ -1421,7 +1450,7 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base64-js@^1.0.2:
base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@ -1468,6 +1497,15 @@ bindings@^1.5.0:
dependencies:
file-uri-to-path "1.0.0"
bl@^4.0.3:
version "4.1.0"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
dependencies:
buffer "^5.5.0"
inherits "^2.0.4"
readable-stream "^3.4.0"
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
@ -1486,6 +1524,13 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
brace-expansion@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
dependencies:
balanced-match "^1.0.0"
braces@^1.8.2:
version "1.8.5"
resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
@ -1674,6 +1719,11 @@ browserslist@4.16.6:
escalade "^3.1.1"
node-releases "^1.1.71"
buffer-crc32@^0.2.1, buffer-crc32@^0.2.13:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
buffer-equal-constant-time@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
@ -1706,6 +1756,14 @@ buffer@^4.1.0, buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
dependencies:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@ -1974,6 +2032,16 @@ component-emitter@^1.2.1:
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
compress-commons@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d"
integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==
dependencies:
buffer-crc32 "^0.2.13"
crc32-stream "^4.0.2"
normalize-path "^3.0.0"
readable-stream "^3.6.0"
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@ -2091,6 +2159,19 @@ cosmiconfig@^7.0.0:
path-type "^4.0.0"
yaml "^1.10.0"
crc-32@^1.2.0:
version "1.2.2"
resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
crc32-stream@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007"
integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==
dependencies:
crc-32 "^1.2.0"
readable-stream "^3.4.0"
create-ecdh@^4.0.0:
version "4.0.4"
resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
@ -2465,6 +2546,13 @@ encoding@0.1.13, encoding@^0.1.11:
dependencies:
iconv-lite "^0.6.2"
end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
enquire.js@^2.1.6:
version "2.1.6"
resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814"
@ -3123,6 +3211,11 @@ fragment-cache@^0.2.1:
dependencies:
map-cache "^0.2.2"
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
fs-readdir-recursive@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
@ -3258,7 +3351,7 @@ glob@7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@^7.0.5, glob@^7.1.0, glob@^7.1.2, glob@^7.1.3, glob@^7.2.0:
glob@^7.0.5, glob@^7.1.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@ -3294,7 +3387,7 @@ globby@^11.0.3, globby@^11.1.0:
merge2 "^1.4.1"
slash "^3.0.0"
graceful-fs@^4.1.11, graceful-fs@^4.1.4:
graceful-fs@^4.1.11, graceful-fs@^4.1.4, graceful-fs@^4.2.0:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@ -3503,7 +3596,7 @@ iconv-lite@^0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
ieee754@^1.1.4, ieee754@^1.2.1:
ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@ -4179,6 +4272,13 @@ language-tags@^1.0.5:
dependencies:
language-subtag-registry "~0.3.2"
lazystream@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638"
integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==
dependencies:
readable-stream "^2.0.5"
levenshtein-edit-distance@^2.0.4:
version "2.0.5"
resolved "https://registry.yarnpkg.com/levenshtein-edit-distance/-/levenshtein-edit-distance-2.0.5.tgz#a066eca8afb350e4d9054aed9ffeef66e78ffc83"
@ -4252,6 +4352,11 @@ lodash.defaults@^4.2.0:
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==
lodash.difference@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==
lodash.flatten@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
@ -4312,6 +4417,11 @@ lodash.sortby@^4.7.0:
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
lodash.union@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==
lodash@^4.17.21, lodash@^4.17.4:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@ -4481,6 +4591,13 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
dependencies:
brace-expansion "^1.1.7"
minimatch@^5.1.0:
version "5.1.6"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
dependencies:
brace-expansion "^2.0.1"
minimist@^1.1.0:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
@ -4889,7 +5006,7 @@ object.values@^1.1.5:
define-properties "^1.1.3"
es-abstract "^1.19.1"
once@^1.3.0:
once@^1.3.0, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
@ -5506,6 +5623,19 @@ read-only-stream@^2.0.0:
dependencies:
readable-stream "^2.0.2"
readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@~2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
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"
readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@ -5519,6 +5649,15 @@ readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.1.1, readable-stream@^3.4.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readable-stream@^3.5.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
@ -5540,19 +5679,6 @@ readable-stream@~2.0.0:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
readable-stream@~2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
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"
readable-web-to-node-stream@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb"
@ -5560,6 +5686,13 @@ readable-web-to-node-stream@^3.0.2:
dependencies:
readable-stream "^3.6.0"
readdir-glob@^1.0.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584"
integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==
dependencies:
minimatch "^5.1.0"
readdirp@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
@ -6379,6 +6512,17 @@ syntax-error@^1.1.1:
dependencies:
acorn-node "^1.2.0"
tar-stream@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
dependencies:
bl "^4.0.3"
end-of-stream "^1.4.1"
fs-constants "^1.0.0"
inherits "^2.0.3"
readable-stream "^3.1.1"
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@ -6940,3 +7084,12 @@ yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
zip-stream@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79"
integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==
dependencies:
archiver-utils "^2.1.0"
compress-commons "^4.1.0"
readable-stream "^3.6.0"