updatef for personal document validation, digital sign zip archive
This commit is contained in:
parent
38092fdaf9
commit
1cfbd39e1a
@ -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();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@ -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) =>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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) =>
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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" }}/>
|
||||
|
||||
@ -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" }}/>
|
||||
|
||||
@ -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%;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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%;
|
||||
}
|
||||
}
|
||||
@ -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",
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
191
yarn.lock
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user