Просмотр исходного кода

review page & midtrans payment

master
yusmardianto 3 лет назад
Родитель
Сommit
a4fb4cec69
6 измененных файлов: 379 добавлений и 148 удалений
  1. +35
    -8
      api/Booking/booking.js
  2. +34
    -2
      components/Booking/checkout.js
  3. +164
    -131
      components/Booking/review.js
  4. +3
    -1
      package.json
  5. +73
    -3
      pages/review.js
  6. +70
    -3
      yarn.lock

+ 35
- 8
api/Booking/booking.js Просмотреть файл

@@ -1,8 +1,8 @@
import apollo from "../../lib/apollo.js";

async function AddBooking(content, token = "") {
var res = await apollo.mutation(
`
var res = await apollo.mutation(
`
mutation($input: BookingInput!) {
createBooking(input: { data: $input }) {
booking {
@@ -12,13 +12,40 @@ async function AddBooking(content, token = "") {
}
`,
token,
{
input: content,
{
input: content,
}
);
return res;
}

async function getReview(token = "") {
var res = await apollo.query(
`
query {
bookings{
id
namaPemesan
emailPemesan
teleponPemesan
pemesan
checkIn
checkOut
jumlahPengunjung
namaKamar
requestKamar
hargaKamar
ppnKamar
hargaTotal
catatan
}
);
return res;
}
}`,
token
);
return res;
}

module.exports = {
AddBooking: AddBooking,
AddBooking: AddBooking,
getReview: getReview,
};

+ 34
- 2
components/Booking/checkout.js Просмотреть файл

@@ -1,5 +1,6 @@
import React, { useState } from 'react';
import * as Icon from 'react-feather';
import { useRouter } from 'next/router'

import NumberFormat from 'react-number-format';

@@ -35,6 +36,17 @@ const Checkout = function ({ backend, checkoutItem, ...props }) {
return yyyy + "-" + mm + "-" + dd;
};

const [TglCheckIn, setCheckIn] = useState('');
const [TglCheckOut, setCheckOut] = useState('');

const date = (new Date(TglCheckIn)).getTime();
const today = (new Date(TglCheckOut)).getTime();
const msDay = 24 * 60 * 60 * 1000; // milliseconds per day

const days = Math.floor((today - date) / msDay);

const router = useRouter();

const CheckoutKamar = checkoutItem.map((data) => {
return (
<div className="row">
@@ -77,7 +89,16 @@ const Checkout = function ({ backend, checkoutItem, ...props }) {
</td>

<td className="product-total">
<span className="subtotal-amount"><NumberFormat value={data.hargaKamar} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
<span className="subtotal-amount"><NumberFormat value={data.hargaKamar * days} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
</td>
</tr>
<tr>
<td className="product-name">
<span href="#">Total Hari</span>
</td>

<td className="product-total">
<span className="subtotal-amount">{days} Hari</span>
</td>
</tr>
<tr>
@@ -86,7 +107,16 @@ const Checkout = function ({ backend, checkoutItem, ...props }) {
</td>

<td className="product-total">
<span type="disable" className="subtotal-amount"><NumberFormat value={data.hargaKamar + data.hargaKamar * 0.1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
<span type="disable" className="subtotal-amount"><NumberFormat value={data.hargaKamar * days * 0.1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
</td>
</tr>
<tr>
<td className="product-name">
<span href="#">Total</span>
</td>

<td className="product-total">
<span type="disable" className="subtotal-amount"><NumberFormat value={data.hargaKamar * days + data.hargaKamar * days * 0.1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
</td>
</tr>
</tbody>
@@ -251,6 +281,7 @@ const Checkout = function ({ backend, checkoutItem, ...props }) {
type="date"
min={disablePastDate()}
className="form-control"
onChange={e => setCheckIn(e.target.value)}
onInput={(e) => {
setFormValue({
...formValue,
@@ -270,6 +301,7 @@ const Checkout = function ({ backend, checkoutItem, ...props }) {
type="date"
min={disablePastDate()}
className="form-control"
onChange={e => setCheckOut(e.target.value)}
onInput={(e) => {
setFormValue({
...formValue,


+ 164
- 131
components/Booking/review.js Просмотреть файл

@@ -1,150 +1,183 @@
import React, { useState } from 'react';
import * as Icon from 'react-feather';

const Checkout = () => {
return (
<>
<div className="checkout-area ptb-80">
<div className="container">
<div className="row">
<div className="col-lg-12 col-md-12">
<div className="user-actions">
<h4><Icon.Edit width="50px" /> Mohon Periksa Ulang Pesanan Anda</h4><br />
</div>
</div>
</div>
import NumberFormat from 'react-number-format';

const Checkout = function ({ transactionToken, backend, review, ...props }) {

console.log(transactionToken);

const Checkin = review[0].checkIn;
const [Checkinyear, Checkinmonth, Checkinday] = Checkin.split('-')

const Checkout = review[0].checkOut;
const [Checkoutnyear, Checkoutnmonth, Checkoutnday] = Checkout.split('-')

const date = (new Date(review[0].checkIn)).getTime();
const today = (new Date(review[0].checkOut)).getTime();
const msDay = 24 * 60 * 60 * 1000; // milliseconds per day

<form>
const days = Math.floor((today - date) / msDay);

const ReviewContens = review.map((data) => {
return (
<div className="row">
<div className="col-lg-12 col-md-6">
<div className="billing-details">
<div className="row">
<div className="col-lg-12 col-md-6">
<div className="billing-details">
<div className="row">
<div className="col-lg-4 col-md-6">
<img style={{ borderRadius: "10px" }} src="https://origin.pegipegi.com/jalan/images/pictM/Y4/Y972594/Y972594002.jpg" width="100%" />
</div>
<div className="col-lg-6 col-md-6">
<h2 className="title">Catania Double Room</h2>
<div className="row">
<div className="col-lg-3 col-md-6">
<p>Fasilitas : </p>
</div>
</div>
<div className="row">
<div className="col-lg-3 col-md-6">
<p><Icon.Wifi /> Free Wifi</p>
</div>
<div className="col-lg-3 col-md-6">
<p><Icon.Phone /> Telepon</p>
</div>
</div><br /><br />
<div className="row">
<div className="col-lg-3 col-md-6">
<h6>Check In </h6>
<h6><p>25 Nov 2021</p></h6>
<h6><p>From 14:00</p></h6>
</div>
<div className="col-lg-3 col-md-6">
<h6>Check Out </h6>
<h6><p>25 Nov 2021</p></h6>
<h6><p>Before 14:00</p></h6>
</div>
<div className="col-lg-3 col-md-6">
<h6>Durasi Hari </h6>
<h6><p>1 Hari</p></h6>
</div>
<div className="col-lg-2 col-md-6">
<h6>Pengunjung </h6>
<h6><p>1 Orang</p></h6>
</div>
</div>
</div>
</div><br />
<div className="col-lg-4 col-md-6">
<img style={{ borderRadius: "10px" }} src="https://origin.pegipegi.com/jalan/images/pictM/Y4/Y972594/Y972594002.jpg" width="100%" />
</div>
<div className="col-lg-6 col-md-6">
<h2 className="title">{data.namaKamar}</h2>
<div className="row">
<div className="col-lg-3 col-md-6">
<p>Fasilitas : </p>
</div>
</div>
<div className="row">
<div className="col-lg-3 col-md-6">
<p><Icon.Wifi /> Free Wifi</p>
</div>
<div className="col-lg-3 col-md-6">
<p><Icon.Phone /> Telepon</p>
</div>
</div><br /><br />
<div className="row">
<div className="col-lg-3 col-md-6">
<h6>Check In </h6>
<h6><p>{`${Checkinday}/${Checkinmonth}/${Checkinyear}`}</p></h6>
<h6><p>Setelah 14:00</p></h6>
</div>
<div className="col-lg-3 col-md-6">
<h6>Check Out </h6>
<h6><p>{`${Checkoutnday}/${Checkoutnmonth}/${Checkoutnyear}`}</p></h6>
<h6><p>Sebelum 14:00</p></h6>
</div>
<div className="col-lg-3 col-md-6">
<h6>Durasi Hari </h6>
<h6><p>{days} Hari</p></h6>
</div>
<div className="col-lg-2 col-md-6">
<h6>Pengunjung </h6>
<h6><p>1 Orang</p></h6>
</div>
</div>
</div>
</div><br />
</div>
</div>

<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}>
<div className="billing-details">
<h3 className="title">Informasi Pemesan</h3>

<div className="row">
<div className="col-lg-7 col-md-4">
<div className="row">
<div className="col-lg-12 col-md-4">
<h6>Nama Pemesan : Yusmardianto</h6>
</div>
<div className="col-lg-12 col-md-4">
<h6>Nomer HP Pemesan : 087797315685 </h6>
</div>
<div className="col-lg-12 col-md-4">
<h6>Alamat Email Pemesan : yusmardianto@thamrin.co.id</h6>
</div>
</div>
</div>
<div className="col-lg-5 col-md-4">
<div className="row">
<div className="col-lg-12 col-md-4">
<h6>Pesan Khusus : Yusmardianto</h6>
</div>
<div className="col-lg-7 col-md-4">
<h6> </h6>
</div>
</div>
</div>
<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}>
<div className="billing-details">
<h3 className="title">Informasi Pemesan</h3>

<div className="row">
<div className="col-lg-7 col-md-4">
<div className="row">
<div className="col-lg-12 col-md-4">
<h6>Nama Pemesan : {data.namaPemesan}</h6>
</div>
<div className="col-lg-12 col-md-4">
<h6>Nomer HP Pemesan : {data.teleponPemesan} </h6>
</div>
<div className="col-lg-12 col-md-4">
<h6>Alamat Email Pemesan : {data.emailPemesan}</h6>
</div>
</div>
</div>

<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}>
<div className="order-details">
<h3 className="title">Total Pesanan</h3>

<div className="order-table table-responsive">
<table className="table table-bordered">
<thead>
<tr>
<th scope="col">Jenis Kamar</th>
<th scope="col">Total</th>
</tr>
</thead>

<tbody>
<tr>
<td className="product-name">
<a href="#">Double Room</a>
</td>

<td className="product-total">
<span className="subtotal-amount">Rp.180.000</span>
</td>
</tr>
<tr>
<td className="product-name">
<a href="#">Extra Bed</a>
</td>

<td className="product-total">
<span className="subtotal-amount">Rp.50.000</span>
</td>
</tr>
<tr>
<td className="product-name">
<a href="#">Pajak 10%</a>
</td>

<td className="product-total">
<span className="subtotal-amount">Rp.23.000</span>
</td>
</tr>
</tbody>
</table>
<div className="col-lg-5 col-md-4">
<div className="row">
<div className="col-lg-12 col-md-4">
<h6>Pesan Khusus : {data.requestKamar}</h6>
</div>
<div className="col-lg-12 col-md-4">
<h6>Jumlah Pengunjung : {data.jumlahPengunjung} Orang</h6>
</div>
<div className="col-lg-12 col-md-4">
<h6>Catatan : {data.catatan} Orang</h6>
</div>

<a href="#" className="btn btn-primary order-btn">Bayar Pesanan</a>
</div>
</div>
</div>
</div>
</div>

<div className="col-lg-12 col-md-6" style={{ marginTop: "50px" }}>
<div className="order-details">
<h3 className="title">Total Pesanan</h3>

<div className="order-table table-responsive">
<table className="table table-bordered">
<thead>
<tr>
<th scope="col">Jenis Kamar</th>
<th scope="col">Total</th>
</tr>
</thead>

<tbody>
<tr>
<td className="product-name">
<span href="#">Catania {data.namaKamar}</span>
</td>

<td className="product-total">
<span className="subtotal-amount"><NumberFormat value={data.hargaKamar * days} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
</td>
</tr>
<tr>
<td className="product-name">
<span href="#">Pajak 10%</span>
</td>

<td className="product-total">
<span type="disable" className="subtotal-amount"><NumberFormat value={data.hargaKamar * days * 0.1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
</td>
</tr>
<tr>
<td className="product-name">
<span href="#">Total</span>
</td>

<td className="product-total">
<span type="disable" className="subtotal-amount"><NumberFormat value={data.hargaKamar * days + data.hargaKamar * days * 0.1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
</td>
</tr>
</tbody>
</table>
</div>
</form>

<button
onClick={(e) => { snap.pay(transactionToken); }}
className="btn btn-primary order-btn"
>
Bayar Pesanan
</button>
</div>
</div>
</div>
);
})

return (
<>
<script type="text/javascript"
src="https://app.sandbox.midtrans.com/snap/snap.js"
data-client-key="SB-Mid-client-srx674LjNbEybd4-">
</script>
<div className="checkout-area ptb-80">
<div className="container">
<div className="row">
<div className="col-lg-12 col-md-12">
<div className="user-actions">
<h4><Icon.Edit width="50px" /> Mohon Periksa Ulang Pesanan Anda</h4><br />
</div>
</div>
</div>

{ReviewContens}

</div>
</div>
</>


+ 3
- 1
package.json Просмотреть файл

@@ -20,6 +20,8 @@
"dotenv": "^10.0.0",
"graphql": "^16.0.1",
"next": "^10.0.7",
"midtrans-client": "^1.2.3",
"midtrans-payment": "^1.2.7",
"nodemailer": "^6.5.0",
"nodemailer-sendgrid-transport": "^0.2.0",
"react": "^17.0.1",
@@ -44,4 +46,4 @@
"sweetalert2-react-content": "^3.3.1"
},
"license": "MIT"
}
}

+ 73
- 3
pages/review.js Просмотреть файл

@@ -3,16 +3,86 @@ import Navbar from "@/components/_App/NavbarHome";
import Footer from "@/components/_App/Footer";
import ReviewContent from '@/components/Booking/review';

const Checkout = () => {
import GetReviewItem from "api/Booking/booking";

const Checkout = function ({ transactionToken, backend, review, ...props }) {
return (
<>
<Navbar /><br /><br />

<ReviewContent />
<ReviewContent review={review} transactionToken={transactionToken} />

<Footer />
</>
)
}

export default Checkout;
export default Checkout;

export async function getServerSideProps(context) {
var { query } = context;
var review = [];
const backend = process.env.BACKEND_SERVER_URI;

var res = await GetReviewItem.getReview(query.s || 0);
if (res["STATUS"] === 1) {
review = res["DATA"]["bookings"];
}

// midtrans
var parameters = await GetReviewItem.getReview();
console.log("parameters", parameters);
var transactionToken = [];
if (parameters["STATUS"] === 1) {
const midtransClient = require('midtrans-client');
let snap = new midtransClient.Snap({
isProduction: false,
serverKey: 'SB-Mid-server-SfBhLkXXlTxCBx7EYP5T2k3d',
clientKey: 'SB-Mid-client-srx674LjNbEybd4-'
});
let parameter = {
"transaction_details": {
// "order_id": parameters["DATA"]["bookings"][0]["NamaPemesan"],
"gross_amount": parameters["DATA"]["bookings"][0]["hargaTotal"],
"order_id":"Trx-Ord-2545343543",
// "gross_amount":33750000,
}, "credit_card": {
"secure": true
},
"customer_details": {
"first_name": parameters["DATA"]["bookings"][0]["namaPemesan"],
"phone": parameters["DATA"]["bookings"][0]["teleponPemesan"],
// "first_name":"Yusmar",
// "phone":"087797315685",
"billing_address":
{
"first_name": parameters["DATA"]["bookings"][0]["namaPemesan"],
"phone": parameters["DATA"]["bookings"][0]["teleponPemesan"],
"email": parameters["DATA"]["bookings"][0]["emailPemesan"],
// "first_name":"Yusmar",
// "phone":"087797315685",
// "address":"THAMRIN INDRAPURA JL.AIPDA KAREL SATSUIT TUBUN,17 ILIR, KEC.ILIR TIM.I, PALEMBANG, KOTA PALEMBANG - ILIR TIMUR II, SUMATERA SELATAN, ID 30114"
},
},
};

await snap.createTransaction(parameter)
.then((transaction) => {
// transaction token
transactionToken = transaction.token;
console.log('transactionToken:', transactionToken);

// transaction redirect url
let transactionRedirectUrl = transaction.redirect_url;
console.log('transactionRedirectUrl:', transactionRedirectUrl);
})
.catch((e) => {
console.log('Error occured:', e.message);
});
}


return {
props: { transactionToken, review, backend }, // will be passed to the page component as props
};
}

+ 70
- 3
yarn.lock Просмотреть файл

@@ -620,6 +620,11 @@ ast-types@0.13.2:
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48"
integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==

async@~0.9.0:
version "0.9.2"
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=

asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -640,7 +645,7 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==

axios@^0.21.1:
axios@^0.21.1, axios@^0.21.4:
version "0.21.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
@@ -1086,6 +1091,13 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"

combined-stream@~0.0.4:
version "0.0.7"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f"
integrity sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=
dependencies:
delayed-stream "0.0.5"

commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1298,6 +1310,11 @@ define-properties@^1.1.3:
dependencies:
object-keys "^1.0.12"

delayed-stream@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f"
integrity sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=

delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -1711,6 +1728,15 @@ forever-agent@~0.6.1:
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=

form-data@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz#26f8bc26da6440e299cbdcfb69035c4f77a6e466"
integrity sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=
dependencies:
async "~0.9.0"
combined-stream "~0.0.4"
mime-types "~2.0.3"

form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
@@ -2369,7 +2395,7 @@ lodash.sortby@^4.7.0:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=

lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.4, lodash@^4.2.1:
lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -2415,6 +2441,21 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==

midtrans-client@^1.2.3:
version "1.3.0"
resolved "https://registry.yarnpkg.com/midtrans-client/-/midtrans-client-1.3.0.tgz#cee8a9ac35834f362233c1e4c3f5546d2e02263a"
integrity sha512-FUm0X25ScaHGuwW0NQ7FRMsQokXzvRGkGduIPfjNOg6+Tggd/OS4/4ClxfCloKBIg2e5B1Cb1VfwwSRZHTev3w==
dependencies:
axios "^0.21.4"
lodash "^4.17.21"

midtrans-payment@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/midtrans-payment/-/midtrans-payment-1.2.7.tgz#1f7029b97509ed147e022c68716e04a04a5ac39f"
integrity sha512-gHAVCm/iM3wLb3gKhU9Oak7IcedIqlg6wWJcANX92kr8yyEwa6LF+IniR9MuzeoEl5Wg2DI9SVvY2jgXE8cz9A==
dependencies:
unirest "^0.6.0"

miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -2428,6 +2469,11 @@ mime-db@1.51.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==

mime-db@~1.12.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7"
integrity sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=

mime-types@^2.1.12, mime-types@~2.1.19:
version "2.1.34"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
@@ -2435,11 +2481,23 @@ mime-types@^2.1.12, mime-types@~2.1.19:
dependencies:
mime-db "1.51.0"

mime-types@~2.0.3:
version "2.0.14"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6"
integrity sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=
dependencies:
mime-db "~1.12.0"

mime@^1.2.9:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==

mime@^2.4.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==

minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
@@ -3159,7 +3217,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"

request@^2.55.0, request@^2.60.0:
request@^2.55.0, request@^2.60.0, request@^2.88.0:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@@ -3673,6 +3731,15 @@ unbox-primitive@^1.0.1:
has-symbols "^1.0.2"
which-boxed-primitive "^1.0.2"

unirest@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/unirest/-/unirest-0.6.0.tgz#289b5ae59cc9fa9fdfff3b5866e0dd50bf5eb280"
integrity sha512-BdYdcYJHXACqZ53k8Zz7QlNK/1W/HjCZlmg1OaaN/oTSp4FTWh0upXGSJsG88PljDBpSrNc2R649drasUA9NEg==
dependencies:
form-data "^0.2.0"
mime "^2.4.0"
request "^2.88.0"

universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"


Загрузка…
Отмена
Сохранить