@@ -1,8 +1,8 @@ | |||||
import apollo from "../../lib/apollo.js"; | import apollo from "../../lib/apollo.js"; | ||||
async function AddBooking(content, token = "") { | async function AddBooking(content, token = "") { | ||||
var res = await apollo.mutation( | |||||
` | |||||
var res = await apollo.mutation( | |||||
` | |||||
mutation($input: BookingInput!) { | mutation($input: BookingInput!) { | ||||
createBooking(input: { data: $input }) { | createBooking(input: { data: $input }) { | ||||
booking { | booking { | ||||
@@ -12,13 +12,40 @@ async function AddBooking(content, token = "") { | |||||
} | } | ||||
`, | `, | ||||
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 = { | module.exports = { | ||||
AddBooking: AddBooking, | |||||
AddBooking: AddBooking, | |||||
getReview: getReview, | |||||
}; | }; |
@@ -1,5 +1,6 @@ | |||||
import React, { useState } from 'react'; | import React, { useState } from 'react'; | ||||
import * as Icon from 'react-feather'; | import * as Icon from 'react-feather'; | ||||
import { useRouter } from 'next/router' | |||||
import NumberFormat from 'react-number-format'; | import NumberFormat from 'react-number-format'; | ||||
@@ -35,6 +36,17 @@ const Checkout = function ({ backend, checkoutItem, ...props }) { | |||||
return yyyy + "-" + mm + "-" + dd; | 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) => { | const CheckoutKamar = checkoutItem.map((data) => { | ||||
return ( | return ( | ||||
<div className="row"> | <div className="row"> | ||||
@@ -77,7 +89,16 @@ const Checkout = function ({ backend, checkoutItem, ...props }) { | |||||
</td> | </td> | ||||
<td className="product-total"> | <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> | </td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -86,7 +107,16 @@ const Checkout = function ({ backend, checkoutItem, ...props }) { | |||||
</td> | </td> | ||||
<td className="product-total"> | <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> | </td> | ||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
@@ -251,6 +281,7 @@ const Checkout = function ({ backend, checkoutItem, ...props }) { | |||||
type="date" | type="date" | ||||
min={disablePastDate()} | min={disablePastDate()} | ||||
className="form-control" | className="form-control" | ||||
onChange={e => setCheckIn(e.target.value)} | |||||
onInput={(e) => { | onInput={(e) => { | ||||
setFormValue({ | setFormValue({ | ||||
...formValue, | ...formValue, | ||||
@@ -270,6 +301,7 @@ const Checkout = function ({ backend, checkoutItem, ...props }) { | |||||
type="date" | type="date" | ||||
min={disablePastDate()} | min={disablePastDate()} | ||||
className="form-control" | className="form-control" | ||||
onChange={e => setCheckOut(e.target.value)} | |||||
onInput={(e) => { | onInput={(e) => { | ||||
setFormValue({ | setFormValue({ | ||||
...formValue, | ...formValue, | ||||
@@ -1,150 +1,183 @@ | |||||
import React, { useState } from 'react'; | import React, { useState } from 'react'; | ||||
import * as Icon from 'react-feather'; | 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="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> | </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> | ||||
</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> | </div> | ||||
<a href="#" className="btn btn-primary order-btn">Bayar Pesanan</a> | |||||
</div> | </div> | ||||
</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> | </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> | ||||
</div> | </div> | ||||
</> | </> | ||||
@@ -20,6 +20,8 @@ | |||||
"dotenv": "^10.0.0", | "dotenv": "^10.0.0", | ||||
"graphql": "^16.0.1", | "graphql": "^16.0.1", | ||||
"next": "^10.0.7", | "next": "^10.0.7", | ||||
"midtrans-client": "^1.2.3", | |||||
"midtrans-payment": "^1.2.7", | |||||
"nodemailer": "^6.5.0", | "nodemailer": "^6.5.0", | ||||
"nodemailer-sendgrid-transport": "^0.2.0", | "nodemailer-sendgrid-transport": "^0.2.0", | ||||
"react": "^17.0.1", | "react": "^17.0.1", | ||||
@@ -44,4 +46,4 @@ | |||||
"sweetalert2-react-content": "^3.3.1" | "sweetalert2-react-content": "^3.3.1" | ||||
}, | }, | ||||
"license": "MIT" | "license": "MIT" | ||||
} | |||||
} |
@@ -3,16 +3,86 @@ import Navbar from "@/components/_App/NavbarHome"; | |||||
import Footer from "@/components/_App/Footer"; | import Footer from "@/components/_App/Footer"; | ||||
import ReviewContent from '@/components/Booking/review'; | import ReviewContent from '@/components/Booking/review'; | ||||
const Checkout = () => { | |||||
import GetReviewItem from "api/Booking/booking"; | |||||
const Checkout = function ({ transactionToken, backend, review, ...props }) { | |||||
return ( | return ( | ||||
<> | <> | ||||
<Navbar /><br /><br /> | <Navbar /><br /><br /> | ||||
<ReviewContent /> | |||||
<ReviewContent review={review} transactionToken={transactionToken} /> | |||||
<Footer /> | <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 | |||||
}; | |||||
} |
@@ -620,6 +620,11 @@ ast-types@0.13.2: | |||||
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" | ||||
integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== | 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: | asynckit@^0.4.0: | ||||
version "0.4.0" | version "0.4.0" | ||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" | 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" | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" | ||||
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== | ||||
axios@^0.21.1: | |||||
axios@^0.21.1, axios@^0.21.4: | |||||
version "0.21.4" | version "0.21.4" | ||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" | resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" | ||||
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== | integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== | ||||
@@ -1086,6 +1091,13 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: | |||||
dependencies: | dependencies: | ||||
delayed-stream "~1.0.0" | 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: | commondir@^1.0.1: | ||||
version "1.0.1" | version "1.0.1" | ||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" | ||||
@@ -1298,6 +1310,11 @@ define-properties@^1.1.3: | |||||
dependencies: | dependencies: | ||||
object-keys "^1.0.12" | 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: | delayed-stream@~1.0.0: | ||||
version "1.0.0" | version "1.0.0" | ||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" | 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" | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" | ||||
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= | 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: | form-data@~2.3.2: | ||||
version "2.3.3" | version "2.3.3" | ||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" | 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" | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" | ||||
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= | 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" | version "4.17.21" | ||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" | ||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== | 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" | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" | ||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== | 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: | miller-rabin@^4.0.0: | ||||
version "4.0.1" | version "4.0.1" | ||||
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" | 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" | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" | ||||
integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== | 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: | mime-types@^2.1.12, mime-types@~2.1.19: | ||||
version "2.1.34" | version "2.1.34" | ||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" | 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: | dependencies: | ||||
mime-db "1.51.0" | 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: | mime@^1.2.9: | ||||
version "1.6.0" | version "1.6.0" | ||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" | ||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== | 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: | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: | ||||
version "1.0.1" | version "1.0.1" | ||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" | ||||
@@ -3159,7 +3217,7 @@ repeating@^2.0.0: | |||||
dependencies: | dependencies: | ||||
is-finite "^1.0.0" | 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" | version "2.88.2" | ||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" | ||||
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== | ||||
@@ -3673,6 +3731,15 @@ unbox-primitive@^1.0.1: | |||||
has-symbols "^1.0.2" | has-symbols "^1.0.2" | ||||
which-boxed-primitive "^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: | universalify@^0.1.0: | ||||
version "0.1.2" | version "0.1.2" | ||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" | ||||