├── .babelrc ├── .dockerignore ├── .domains.example ├── .drone.yml ├── .gitignore ├── .nvmrc ├── .prettierrc ├── .stylelintrc.json ├── .vscode └── launch.json ├── .yarnclean ├── Dockerfile ├── LICENSE.md ├── README.md ├── VERSION ├── __mocks__ ├── fileMock.js └── styleMock.js ├── capacitor.config.json ├── config-overrides.js ├── cypress.json ├── docs ├── basic_customization.html.md ├── releases │ ├── 2.1.0.md │ └── 2.2.0.md └── roadmap.md ├── images.d.ts ├── ionic.config.json ├── jest.config.js ├── mocks ├── api │ └── v2 │ │ ├── applogic │ │ └── customization │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ └── POST.mock │ │ ├── barong │ │ ├── identity │ │ │ ├── configs │ │ │ │ └── GET.mock │ │ │ ├── ping │ │ │ │ └── GET.mock │ │ │ ├── sessions │ │ │ │ ├── DELETE.mock │ │ │ │ ├── OPTIONS.mock │ │ │ │ ├── POST--email=&password=&otp_code=.mock │ │ │ │ ├── POST--email=accountant@barong.io&password=123123.mock │ │ │ │ ├── POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock │ │ │ │ ├── POST--email=compliance@barong.io&password=123123&otp_code=.mock │ │ │ │ ├── POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock │ │ │ │ ├── POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock │ │ │ │ ├── POST--email=superadmin@barong.io&password=123123&otp_code=.mock │ │ │ │ ├── POST--email=support@barong.io&password=123123&otp_code=.mock │ │ │ │ ├── POST--email=technical@peatio.tech&password=123123&otp_code=.mock │ │ │ │ ├── POST--email=toweradmin@barong.io&password=123123&otp_code=.mock │ │ │ │ ├── POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock │ │ │ │ ├── POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock │ │ │ │ ├── POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock │ │ │ │ └── POST.mock │ │ │ └── users │ │ │ │ ├── OPTIONS.mock │ │ │ │ ├── POST.mock │ │ │ │ ├── email │ │ │ │ └── generate_code │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ ├── POST--email=wrong@email.com.mock │ │ │ │ │ └── POST.mock │ │ │ │ ├── password │ │ │ │ ├── confirm_code │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ └── POST.mock │ │ │ │ └── generate_code │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ └── POST.mock │ │ │ │ └── register_geetest │ │ │ │ └── GET.mock │ │ └── resource │ │ │ ├── api_keys │ │ │ ├── GET--page=1&limit=4.mock │ │ │ ├── GET--page=2&limit=4.mock │ │ │ ├── GET--page=5&limit=1.mock │ │ │ ├── GET--totp_code=.mock │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ ├── POST--totp_code=&algorithm=HS256.mock │ │ │ ├── POST.mock │ │ │ └── __ │ │ │ │ ├── DELETE--totp_code=.mock │ │ │ │ ├── DELETE.mock │ │ │ │ ├── OPTIONS.mock │ │ │ │ ├── PATCH--totp_code=000000&state=disabled.mock │ │ │ │ └── PATCH.mock │ │ │ ├── documents │ │ │ └── POST.mock │ │ │ ├── labels │ │ │ └── GET.mock │ │ │ ├── otp │ │ │ ├── enable │ │ │ │ ├── OPTIONS.mock │ │ │ │ ├── POST--code=0000000.mock │ │ │ │ └── POST.mock │ │ │ └── generate_qrcode │ │ │ │ ├── OPTIONS.mock │ │ │ │ └── POST.mock │ │ │ ├── phones │ │ │ ├── OPTIONS.mock │ │ │ ├── POST--phone_number=+1111.mock │ │ │ ├── POST--phone_number=+1234.mock │ │ │ ├── send_code │ │ │ │ ├── OPTIONS.mock │ │ │ │ └── POST.mock │ │ │ └── verify │ │ │ │ ├── OPTIONS.mock │ │ │ │ └── POST.mock │ │ │ ├── profiles │ │ │ ├── OPTIONS.mock │ │ │ └── POST.mock │ │ │ └── users │ │ │ ├── activity │ │ │ ├── GET--limit=25&page=1.mock │ │ │ ├── GET--limit=25&page=2.mock │ │ │ └── all │ │ │ │ ├── GET--limit=10&page=1.mock │ │ │ │ ├── GET--limit=10&page=2.mock │ │ │ │ ├── GET--limit=10&page=3.mock │ │ │ │ ├── GET--limit=25&page=1.mock │ │ │ │ ├── GET--limit=25&page=2.mock │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── me │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ └── PUT.mock │ │ │ └── password │ │ │ ├── OPTIONS.mock │ │ │ ├── PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock │ │ │ └── PUT.mock │ │ ├── finex │ │ └── public │ │ │ └── markets │ │ │ └── GET.mock │ │ └── peatio │ │ ├── account │ │ ├── balances │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ ├── bch │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── btc │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── dash │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── eth │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── eur │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── ltc │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── usd │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── xrp │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ └── zar │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ ├── beneficiaries │ │ │ ├── 10 │ │ │ │ ├── DELETE.mock │ │ │ │ ├── OPTIONS.mock │ │ │ │ ├── activate │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ ├── PATCH--pin=111111&id=10.mock │ │ │ │ │ ├── PATCH.mock │ │ │ │ │ └── POST.mock │ │ │ │ └── resend_pin │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ ├── PATCH--id=10.mock │ │ │ │ │ └── PATCH.mock │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ ├── POST--currency=btc&name=111&data.address=111.mock │ │ │ └── POST.mock │ │ ├── deposit_address │ │ │ ├── bch │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── btc │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── dash │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── eth │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ ├── ltc │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ │ └── xrp │ │ │ │ ├── GET.mock │ │ │ │ └── OPTIONS.mock │ │ ├── deposits │ │ │ ├── GET--limit=1¤cy=btc&page=7.mock │ │ │ ├── GET--limit=100.mock │ │ │ ├── GET--limit=6¤cy=btc&page=1.mock │ │ │ ├── GET--limit=6¤cy=btc&page=2.mock │ │ │ ├── GET--page=1&limit=25.mock │ │ │ ├── GET--page=2&limit=25.mock │ │ │ ├── GET.mock │ │ │ └── OPTIONS.mock │ │ ├── history │ │ │ ├── GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock │ │ │ ├── GET--currency=btc&sort=date&order=asc.mock │ │ │ ├── GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock │ │ │ ├── GET--currency=btc&sort=date&order=desc.mock │ │ │ ├── GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock │ │ │ ├── GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock │ │ │ ├── GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock │ │ │ ├── GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock │ │ │ ├── GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock │ │ │ ├── GET--filter=trade¤cy=btc&sort=date&order=asc.mock │ │ │ ├── GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock │ │ │ ├── GET--filter=trade¤cy=btc&sort=date&order=desc.mock │ │ │ ├── GET--limit=5¤cy=btc&sort=date&order=asc.mock │ │ │ ├── GET--limit=5¤cy=btc&sort=date&order=desc.mock │ │ │ ├── GET.mock │ │ │ └── OPTIONS.mock │ │ └── withdraws │ │ │ ├── GET--limit=100.mock │ │ │ ├── GET--page=1&limit=25.mock │ │ │ ├── GET--page=2&limit=25.mock │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ └── POST.mock │ │ ├── market │ │ ├── orders │ │ │ ├── GET--limit=25&page=2&state=wait.mock │ │ │ ├── GET--market=bchbtc&state=cancel.mock │ │ │ ├── GET--market=bchbtc&state=done.mock │ │ │ ├── GET--market=bchbtc&state=wait.mock │ │ │ ├── GET--market=bchbtc.mock │ │ │ ├── GET--market=bchzar&state=cancel.mock │ │ │ ├── GET--market=bchzar&state=done.mock │ │ │ ├── GET--market=bchzar&state=wait.mock │ │ │ ├── GET--market=bchzar.mock │ │ │ ├── GET--market=btczar&state=cancel.mock │ │ │ ├── GET--market=btczar&state=done.mock │ │ │ ├── GET--market=btczar&state=wait.mock │ │ │ ├── GET--market=btczar.mock │ │ │ ├── GET--market=dashbtc&state=cancel.mock │ │ │ ├── GET--market=dashbtc&state=done.mock │ │ │ ├── GET--market=dashbtc&state=wait.mock │ │ │ ├── GET--market=dashbtc.mock │ │ │ ├── GET--market=dashzar&state=cancel.mock │ │ │ ├── GET--market=dashzar&state=done.mock │ │ │ ├── GET--market=dashzar&state=wait.mock │ │ │ ├── GET--market=dashzar.mock │ │ │ ├── GET--market=ethbtc&state=cancel.mock │ │ │ ├── GET--market=ethbtc&state=done.mock │ │ │ ├── GET--market=ethbtc&state=wait.mock │ │ │ ├── GET--market=ethbtc.mock │ │ │ ├── GET--market=ethusd&state=cancel.mock │ │ │ ├── GET--market=ethusd&state=done.mock │ │ │ ├── GET--market=ethusd&state=wait.mock │ │ │ ├── GET--market=ethusd.mock │ │ │ ├── GET--market=ethzar&state=cancel.mock │ │ │ ├── GET--market=ethzar&state=done.mock │ │ │ ├── GET--market=ethzar&state=wait.mock │ │ │ ├── GET--market=ethzar.mock │ │ │ ├── GET--market=eurusd&state=cancel.mock │ │ │ ├── GET--market=eurusd&state=done.mock │ │ │ ├── GET--market=eurusd&state=wait.mock │ │ │ ├── GET--market=eurusd.mock │ │ │ ├── GET--market=ltcbtc&state=cancel.mock │ │ │ ├── GET--market=ltcbtc&state=done.mock │ │ │ ├── GET--market=ltcbtc&state=wait.mock │ │ │ ├── GET--market=ltcbtc.mock │ │ │ ├── GET--market=ltczar&state=cancel.mock │ │ │ ├── GET--market=ltczar&state=done.mock │ │ │ ├── GET--market=ltczar&state=wait.mock │ │ │ ├── GET--market=ltczar.mock │ │ │ ├── GET--market=xrpbtc&state=cancel.mock │ │ │ ├── GET--market=xrpbtc&state=done.mock │ │ │ ├── GET--market=xrpbtc&state=wait.mock │ │ │ ├── GET--market=xrpbtc.mock │ │ │ ├── GET--market=xrpzar&state=cancel.mock │ │ │ ├── GET--market=xrpzar&state=done.mock │ │ │ ├── GET--market=xrpzar&state=wait.mock │ │ │ ├── GET--market=xrpzar.mock │ │ │ ├── GET--page=1&limit=25&state=wait.mock │ │ │ ├── GET--page=1&limit=25.mock │ │ │ ├── GET--page=2&limit=25.mock │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ ├── POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock │ │ │ ├── POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock │ │ │ ├── POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock │ │ │ ├── POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock │ │ │ ├── POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock │ │ │ ├── POST--market=ethusd&side=sell&volume=1&ord_type=market.mock │ │ │ ├── POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock │ │ │ ├── POST.mock │ │ │ ├── __ │ │ │ │ └── cancel │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ └── POST.mock │ │ │ └── cancel │ │ │ │ ├── OPTIONS.mock │ │ │ │ └── POST.mock │ │ └── trades │ │ │ ├── GET--market=bchzar.mock │ │ │ ├── GET--market=btczar.mock │ │ │ ├── GET--market=dashbtc.mock │ │ │ ├── GET--market=ethbtc.mock │ │ │ ├── GET--market=eurusd.mock │ │ │ ├── GET--page=1&limit=25.mock │ │ │ ├── GET.mock │ │ │ └── OPTIONS.mock │ │ ├── public │ │ ├── currencies │ │ │ └── GET.mock │ │ ├── markets │ │ │ ├── GET.mock │ │ │ ├── OPTIONS.mock │ │ │ ├── bchzar │ │ │ │ ├── depth │ │ │ │ │ ├── GET.mock │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ └── script.js │ │ │ │ ├── k-line │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ │ └── trades │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ ├── btczar │ │ │ │ ├── depth │ │ │ │ │ ├── GET.mock │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ └── script.js │ │ │ │ ├── k-line │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ │ └── trades │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ ├── dashbtc │ │ │ │ ├── depth │ │ │ │ │ ├── GET.mock │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ └── script.js │ │ │ │ ├── k-line │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ │ └── trades │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ ├── ethbtc │ │ │ │ ├── depth │ │ │ │ │ ├── GET.mock │ │ │ │ │ ├── OPTIONS.mock │ │ │ │ │ └── script.js │ │ │ │ ├── k-line │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ │ └── trades │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ ├── eurusd │ │ │ │ ├── depth │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ │ ├── k-line │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ │ └── trades │ │ │ │ │ ├── GET.mock │ │ │ │ │ └── OPTIONS.mock │ │ │ ├── k-line.js │ │ │ └── tickers │ │ │ │ ├── GET.mock │ │ │ │ ├── OPTIONS.mock │ │ │ │ └── script.js │ │ └── member-levels │ │ │ ├── GET.mock │ │ │ └── OPTIONS.mock │ │ └── swagger │ │ └── GET.mock ├── helpers.js ├── markets.js ├── mockAPI.js ├── mockWS.js ├── mockserver.js └── ranger.js ├── nginx.conf ├── package.json ├── postcss.config.js ├── public ├── charting_library │ ├── charting_library.min.d.ts │ ├── charting_library.min.js │ ├── datafeed-api.d.ts │ └── static │ │ ├── ar-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── bundles │ │ ├── 0.1d4cbcaddbec7d8c5363.js │ │ ├── 1.2fa13f88d2bf6ae6f3f0.css │ │ ├── 1.2fa13f88d2bf6ae6f3f0.rtl.css │ │ ├── 1.ea828ac684caa2b94a1b.js │ │ ├── 10.0501e55a3ef6aa50aec6.js │ │ ├── 10.c0a8664f16f3834961e4.css │ │ ├── 10.c0a8664f16f3834961e4.rtl.css │ │ ├── 11.b900b9cb8ed6dd3bc321.css │ │ ├── 11.b900b9cb8ed6dd3bc321.rtl.css │ │ ├── 11.dd520838f92e45cd91e3.js │ │ ├── 12.18e3c4b9c329e737cb80.js │ │ ├── 12.87f9777d9fe2086ce090.css │ │ ├── 12.87f9777d9fe2086ce090.rtl.css │ │ ├── 13.46f312828e93b6546d0c.js │ │ ├── 14.579d7892443d1a90180c.js │ │ ├── 15.19c5212d15382007773d.js │ │ ├── 16.cc58f582c191485d9392.css │ │ ├── 16.cc58f582c191485d9392.rtl.css │ │ ├── 16.e0d00f8a564954896734.js │ │ ├── 17.00b04a06a8cd9c6f5f6c.js │ │ ├── 18.183d41ade16dae257526.css │ │ ├── 18.183d41ade16dae257526.rtl.css │ │ ├── 18.e4c458360dbad4de5cf6.js │ │ ├── 19.aba848e28ec755548668.css │ │ ├── 19.aba848e28ec755548668.rtl.css │ │ ├── 19.c5542d290eefbb001433.js │ │ ├── 2.195070ea59b3395625da.js │ │ ├── 2.a3e34146d368d13b6bc1.css │ │ ├── 2.a3e34146d368d13b6bc1.rtl.css │ │ ├── 20.2416da4fc4c075b56691.js │ │ ├── 20.f75162343321d7d9178c.css │ │ ├── 20.f75162343321d7d9178c.rtl.css │ │ ├── 21.7e987db0ed47cc3f789c.css │ │ ├── 21.7e987db0ed47cc3f789c.rtl.css │ │ ├── 21.fc856808959a5b8734f7.js │ │ ├── 22.c118eafc7686081984c8.js │ │ ├── 22.f31ebffc8672752a2d4b.css │ │ ├── 22.f31ebffc8672752a2d4b.rtl.css │ │ ├── 23.7c4be219df640cb3880c.css │ │ ├── 23.7c4be219df640cb3880c.rtl.css │ │ ├── 23.e89d09694523563b8f86.js │ │ ├── 24.319f9ed9725f3cea260a.js │ │ ├── 25.15d449d35706e01821dd.js │ │ ├── 26.16e9146c09ea7d6b839a.js │ │ ├── 27.54aad15135c7ea57b345.js │ │ ├── 28.3f2589cd73664ea3f3e3.js │ │ ├── 29.6a6accc00e80feb13030.js │ │ ├── 3.f41fdd1a128935b63e5b.js │ │ ├── 30.c3cc90c5fbe9a2b87ffb.js │ │ ├── 31.5c895c4f655400b0b4e2.css │ │ ├── 31.5c895c4f655400b0b4e2.rtl.css │ │ ├── 31.d081df3316799b489847.js │ │ ├── 32.48df7a8cdc38d60b308b.js │ │ ├── 32.b92773bfff0363a69bb9.css │ │ ├── 32.b92773bfff0363a69bb9.rtl.css │ │ ├── 33.4a74c62095be3045c87e.js │ │ ├── 33.ac320c107772f8e72252.css │ │ ├── 33.ac320c107772f8e72252.rtl.css │ │ ├── 34.17e0ce399a577f17ba55.js │ │ ├── 34.dd27b311326fd1fc6fde.css │ │ ├── 34.dd27b311326fd1fc6fde.rtl.css │ │ ├── 35.47b9d16b3fa10b495a11.css │ │ ├── 35.47b9d16b3fa10b495a11.rtl.css │ │ ├── 35.58433cec10095e3c1b7e.js │ │ ├── 36.2ee80b40751fcc88a65c.js │ │ ├── 36.e9a6bec06ee11d2c2d4a.css │ │ ├── 36.e9a6bec06ee11d2c2d4a.rtl.css │ │ ├── 37.065a5f2249aafcfe50ec.css │ │ ├── 37.065a5f2249aafcfe50ec.rtl.css │ │ ├── 37.1735365b01406a8d696d.js │ │ ├── 38.4073381c29c4e2bc2209.css │ │ ├── 38.4073381c29c4e2bc2209.rtl.css │ │ ├── 38.9ae2eea9402c30aa3046.js │ │ ├── 39.5f64b4bc2e263edfbf6e.css │ │ ├── 39.5f64b4bc2e263edfbf6e.rtl.css │ │ ├── 39.7e524b82ef9947f0f19f.js │ │ ├── 4.80bf1a925965757be6d4.js │ │ ├── 40.0f54f57304896d7506a2.css │ │ ├── 40.0f54f57304896d7506a2.rtl.css │ │ ├── 40.42bd9598272e9dd24457.js │ │ ├── 41.11c024e8e0504741fd66.js │ │ ├── 41.1dc91fcdd5dbde1247d7.css │ │ ├── 41.1dc91fcdd5dbde1247d7.rtl.css │ │ ├── 42.0491acaaf55887f7fcb3.js │ │ ├── 42.db948a104cb86b7df06e.css │ │ ├── 42.db948a104cb86b7df06e.rtl.css │ │ ├── 43.12df9892872230fa2898.css │ │ ├── 43.12df9892872230fa2898.rtl.css │ │ ├── 43.4ae432f1b8259dbfd0e5.js │ │ ├── 44.01ec30ff4ce8cf7fa8e5.css │ │ ├── 44.01ec30ff4ce8cf7fa8e5.rtl.css │ │ ├── 44.7aabc64d3dfb54c85d60.js │ │ ├── 45.6c1fc3ac2f6063249f97.js │ │ ├── 45.e09d2beed14ffd8995a9.css │ │ ├── 45.e09d2beed14ffd8995a9.rtl.css │ │ ├── 46.75a0e6fecbc3c92a6bc7.js │ │ ├── 46.923fdbea563cd1d28d4c.css │ │ ├── 46.923fdbea563cd1d28d4c.rtl.css │ │ ├── 47.773635a99e184d6dc131.js │ │ ├── 47.b48791ffffadc9c96a10.css │ │ ├── 47.b48791ffffadc9c96a10.rtl.css │ │ ├── 48.912258c9b4f11cd518c3.css │ │ ├── 48.912258c9b4f11cd518c3.rtl.css │ │ ├── 48.9d08141ee2d55bcad3e7.js │ │ ├── 49.0cb5c561f3b28a047912.css │ │ ├── 49.0cb5c561f3b28a047912.rtl.css │ │ ├── 49.929acbc67c2613c57f58.js │ │ ├── 5.1beaffde9123ffaeff74.js │ │ ├── 50.2c50aad369bf63f77061.js │ │ ├── 50.e2f9bc14536ad546e595.css │ │ ├── 50.e2f9bc14536ad546e595.rtl.css │ │ ├── 51.30c5804303a9f1c455e3.js │ │ ├── 51.a35e4c0d0b08a018e307.css │ │ ├── 51.a35e4c0d0b08a018e307.rtl.css │ │ ├── 52.be1d70abe1a172cc5c3a.css │ │ ├── 52.be1d70abe1a172cc5c3a.rtl.css │ │ ├── 52.c212ca3684de16c6f115.js │ │ ├── 53.3f6d736abe33683640bc.css │ │ ├── 53.3f6d736abe33683640bc.rtl.css │ │ ├── 53.7217742e39b70fc9d431.js │ │ ├── 54.9eb4ca2a30197d95fe82.js │ │ ├── 54.cf540e4ba48bf75e96c2.css │ │ ├── 54.cf540e4ba48bf75e96c2.rtl.css │ │ ├── 55.7707e6ae9f2ec8cfb656.js │ │ ├── 55.c11884ad80d526214fb6.css │ │ ├── 55.c11884ad80d526214fb6.rtl.css │ │ ├── 56.83cd8456e872f49059c3.js │ │ ├── 56.ea0c135a2b02b495fbb5.css │ │ ├── 56.ea0c135a2b02b495fbb5.rtl.css │ │ ├── 57.6384b62456dc4fed6ffb.js │ │ ├── 57.651927021db01a7ed13f.css │ │ ├── 57.651927021db01a7ed13f.rtl.css │ │ ├── 58.8077d6b199609737b3d5.js │ │ ├── 58.82b7bef062a290e587d4.css │ │ ├── 58.82b7bef062a290e587d4.rtl.css │ │ ├── 6.35dee0cfeb8a4d70732c.css │ │ ├── 6.35dee0cfeb8a4d70732c.rtl.css │ │ ├── 6.902d5f3923d45b49b876.js │ │ ├── 7.e98fce2ffac2c552565f.css │ │ ├── 7.e98fce2ffac2c552565f.rtl.css │ │ ├── 7.fc0941206f7b7d32812d.js │ │ ├── 8.180c6bdc716e5045b645.css │ │ ├── 8.180c6bdc716e5045b645.rtl.css │ │ ├── 8.62bd4ee21281906a7019.js │ │ ├── 9.855edb9bea2352bd5129.js │ │ ├── add-compare-dialog.e9db1b14483f3e7358f4.js │ │ ├── change-interval-dialog.c8c04c297cc329376f2b.js │ │ ├── chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js │ │ ├── chart-widget-gui.8005316cfc1f06be4bf0.js │ │ ├── clipboard.5403f9bd852af06addff.js │ │ ├── confirm-inputs-dialog.f9823e95a365cd8974c9.js │ │ ├── confirm-symbol-input-dialog.c72289c830292c73812f.js │ │ ├── context-menu-renderer.5eff9c34fa03e94b2c1b.js │ │ ├── create-dialog.472fe015128398f27a86.js │ │ ├── crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur │ │ ├── dialogs-core.c712826575e8ea62d8e0.js │ │ ├── dialogs-core.e9f630dd3fdeb4ceee21.css │ │ ├── dialogs-core.e9f630dd3fdeb4ceee21.rtl.css │ │ ├── dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur │ │ ├── drawing-toolbar.35360bdf4aedb7db7287.js │ │ ├── ds-property-pages.33a0b54c87f584f79681.js │ │ ├── editobjectdialog.a4fd348616e0724542ac.js │ │ ├── eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur │ │ ├── export-data.ea9e219d1d41389ea3b7.js │ │ ├── floating-toolbars.d7f25f59513991368767.js │ │ ├── fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff │ │ ├── fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2 │ │ ├── go-to-date-dialog-impl.51162344726d8956c763.js │ │ ├── grab.bc156522a6b55a60be9fae15c14b66c5.cur │ │ ├── grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur │ │ ├── hammerjs.46686dd839f22b742351.js │ │ ├── header-toolbar.743cca210a6a3e37939e.js │ │ ├── ie-fallback-logos.589046871bfa17cbfbda.js │ │ ├── lazy-jquery-ui.3a9fe36168ca8e6cacb8.js │ │ ├── lazy-velocity.d040cf1092d3b2920dde.js │ │ ├── library.bb7ca756e7cbe50becb3.css │ │ ├── library.bb7ca756e7cbe50becb3.rtl.css │ │ ├── library.e964cdc99937c68d0389.js │ │ ├── line-tools-icons.c89643eed013eb0ff7c1.js │ │ ├── load-chart-dialog.24806d5c5be9fbdfd103.js │ │ ├── lt-pane-views.e06093931461762ecd11.js │ │ ├── moment.fdf50ccef2c78863664d.js │ │ ├── new-edit-object-dialog.232c44a337440602cba4.js │ │ ├── objecttreedialog.bb84539d18c87a88a80b.js │ │ ├── opacity-pattern.a6506134daec7169f68f563f084a9d41.svg │ │ ├── precache-manifest.60144109bbe17651b1eb050c29e4f6f4.js │ │ ├── react.cdaa9c19dda854fad341.js │ │ ├── restricted-toolset.e356a29caff335c91f6b.js │ │ ├── runtime.d22af752ee0c2111becd.js │ │ ├── series-icons-map.e3b746e7a7341e8ddb2d.js │ │ ├── series-pane-views.678a074c53e327c3184a.js │ │ ├── service-worker.js │ │ ├── study-market.ff409c6c02ba9edc0151.js │ │ ├── study-pane-views.ee901b6c4a31f84ba03d.js │ │ ├── study-template-dialog.a6f710070f1f64f2ef11.js │ │ ├── symbol-info-dialog-impl.eaddb54cc066d7a021e2.js │ │ ├── symbolsearch.0057814b113bcee3d957.js │ │ ├── take-chart-image-dialog-impl.d61e03a87b11d0c1adf1.js │ │ ├── vendors.267dd414d71e078f822c.js │ │ └── zoom.e21f24dd632c7069139bc47ae89c54b5.cur │ │ ├── cs-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── da_DK-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── de-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── el-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── en-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── es-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── et_EE-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── fa-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── fr-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── he_IL-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── hu_HU-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── id_ID-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── images │ │ ├── balloon.png │ │ ├── bar-loader.gif │ │ ├── button-bg.png │ │ ├── charting_library │ │ │ ├── logo-widget-copyright-faded.png │ │ │ └── logo-widget-copyright.png │ │ ├── controlll.png │ │ ├── delayed.png │ │ ├── dialogs │ │ │ ├── checkbox.png │ │ │ ├── close-flat.png │ │ │ ├── large-slider-handle.png │ │ │ ├── linewidth-slider.png │ │ │ └── opacity-slider.png │ │ ├── icons.png │ │ ├── prediction-clock-black.png │ │ ├── prediction-clock-white.png │ │ ├── prediction-failure-white.png │ │ ├── prediction-success-white.png │ │ ├── price_label.png │ │ ├── select-bg.png │ │ ├── svg │ │ │ ├── chart │ │ │ │ ├── bucket2.svg │ │ │ │ ├── font.svg │ │ │ │ ├── large-slider-handle.svg │ │ │ │ └── pencil2.svg │ │ │ └── question-mark-rounded.svg │ │ ├── tvcolorpicker-bg-gradient.png │ │ ├── tvcolorpicker-bg.png │ │ ├── tvcolorpicker-check.png │ │ └── tvcolorpicker-sprite.png │ │ ├── it-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ja-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ko-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ms_MY-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── nl_NL-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── no-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── pl-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── pt-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ro-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ru-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── sk_SK-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── sv-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── th-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── tr-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── vi-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── zh-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ └── zh_TW-tv-chart.8562c7b8f7bdb50c1f5d.html ├── config │ └── env.js ├── css │ ├── theme.css │ └── tradingview.css ├── datafeeds │ ├── README.md │ └── udf │ │ ├── .npmrc │ │ ├── README.md │ │ ├── dist │ │ ├── bundle.js │ │ └── polyfills.js │ │ ├── lib │ │ ├── data-pulse-provider.js │ │ ├── helpers.js │ │ ├── history-provider.js │ │ ├── iquotes-provider.js │ │ ├── quotes-provider.js │ │ ├── quotes-pulse-provider.js │ │ ├── requester.js │ │ ├── symbols-storage.js │ │ ├── udf-compatible-datafeed-base.js │ │ └── udf-compatible-datafeed.js │ │ ├── package.json │ │ ├── rollup.config.js │ │ ├── src │ │ ├── data-pulse-provider.js │ │ ├── data-pulse-provider.ts │ │ ├── helpers.js │ │ ├── helpers.ts │ │ ├── history-provider.js │ │ ├── history-provider.ts │ │ ├── iquotes-provider.js │ │ ├── iquotes-provider.ts │ │ ├── polyfills.es6 │ │ ├── quotes-provider.js │ │ ├── quotes-provider.ts │ │ ├── quotes-pulse-provider.js │ │ ├── quotes-pulse-provider.ts │ │ ├── requester.js │ │ ├── requester.ts │ │ ├── symbols-storage.js │ │ ├── symbols-storage.ts │ │ ├── udf-compatible-datafeed-base.js │ │ ├── udf-compatible-datafeed-base.ts │ │ ├── udf-compatible-datafeed.js │ │ └── udf-compatible-datafeed.ts │ │ └── tsconfig.json ├── favicon.ico ├── index.html └── manifest.json ├── robots.txt ├── scripts ├── build.sh └── validate_commit.js ├── spec ├── fixtures │ ├── example.json │ ├── profile.json │ └── users.json ├── integration │ └── login_spec.js ├── plugins │ └── index.js └── support │ ├── commands.js │ └── index.js ├── src ├── App.test.tsx ├── App.tsx ├── api │ ├── config.ts │ ├── index.ts │ ├── requestBuilder.ts │ ├── tests │ │ └── requestBuilder.test.ts │ └── types.ts ├── assets │ └── images │ │ ├── BackgroundMaintenance.tsx │ │ ├── ChevronIcon.tsx │ │ ├── ClockIcon.tsx │ │ ├── CloseIcon.tsx │ │ ├── LetterIcon.tsx │ │ ├── LockIcon.tsx │ │ ├── LockedIcon.tsx │ │ ├── LogoIcon.tsx │ │ ├── LogoutIcon.tsx │ │ ├── MetaMaskLogo.tsx │ │ ├── Moon.tsx │ │ ├── NavBarIcons.tsx │ │ ├── PendingIcon.tsx │ │ ├── PlusIcon.tsx │ │ ├── RejectedIcon.tsx │ │ ├── SearchFieldCloseIcon.tsx │ │ ├── SortIcons.tsx │ │ ├── Sun.tsx │ │ ├── TipIcon.tsx │ │ ├── TrashBin.tsx │ │ ├── background.svg │ │ ├── chart.svg │ │ ├── customization │ │ ├── ArrowIcon.tsx │ │ ├── PaletteIcon.tsx │ │ └── SettingsIcon.tsx │ │ ├── kyc │ │ ├── CheckBigIcon.tsx │ │ ├── CheckIcon.tsx │ │ ├── ClocksIcon.tsx │ │ ├── CrossIcon.tsx │ │ ├── DocumentBackExample.svg │ │ ├── DocumentFrontExample.svg │ │ ├── DocumentSelfieExample.svg │ │ └── TipIcon.tsx │ │ ├── landing │ │ ├── GridMainBG.svg │ │ ├── GridSecondBG.svg │ │ ├── PhoneImage.svg │ │ ├── TradingUIFullBG.png │ │ ├── features │ │ │ ├── API.svg │ │ │ ├── Community.svg │ │ │ ├── Customize.svg │ │ │ ├── Exchange.svg │ │ │ ├── Security.svg │ │ │ └── Types.svg │ │ └── social │ │ │ ├── CoinMarket.svg │ │ │ ├── Facebook.svg │ │ │ ├── LinkedIn.svg │ │ │ ├── Medium.svg │ │ │ ├── Reddit.svg │ │ │ ├── Telegram.svg │ │ │ ├── Twitter.svg │ │ │ └── YouTube.svg │ │ ├── openwareLogo.svg │ │ └── sidebar │ │ ├── LogoutIcon.tsx │ │ ├── ProfileIcon.tsx │ │ ├── SidebarIcons.tsx │ │ ├── en.svg │ │ └── ru.svg ├── charting_library │ ├── charting_library.min.d.ts │ ├── charting_library.min.js │ ├── datafeed-api.d.ts │ └── static │ │ ├── ar-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── bundles │ │ ├── 0.1d4cbcaddbec7d8c5363.js │ │ ├── 1.2fa13f88d2bf6ae6f3f0.css │ │ ├── 1.2fa13f88d2bf6ae6f3f0.rtl.css │ │ ├── 1.ea828ac684caa2b94a1b.js │ │ ├── 10.0501e55a3ef6aa50aec6.js │ │ ├── 10.c0a8664f16f3834961e4.css │ │ ├── 10.c0a8664f16f3834961e4.rtl.css │ │ ├── 11.b900b9cb8ed6dd3bc321.css │ │ ├── 11.b900b9cb8ed6dd3bc321.rtl.css │ │ ├── 11.dd520838f92e45cd91e3.js │ │ ├── 12.18e3c4b9c329e737cb80.js │ │ ├── 12.87f9777d9fe2086ce090.css │ │ ├── 12.87f9777d9fe2086ce090.rtl.css │ │ ├── 13.46f312828e93b6546d0c.js │ │ ├── 14.579d7892443d1a90180c.js │ │ ├── 15.19c5212d15382007773d.js │ │ ├── 16.cc58f582c191485d9392.css │ │ ├── 16.cc58f582c191485d9392.rtl.css │ │ ├── 16.e0d00f8a564954896734.js │ │ ├── 17.00b04a06a8cd9c6f5f6c.js │ │ ├── 18.183d41ade16dae257526.css │ │ ├── 18.183d41ade16dae257526.rtl.css │ │ ├── 18.e4c458360dbad4de5cf6.js │ │ ├── 19.aba848e28ec755548668.css │ │ ├── 19.aba848e28ec755548668.rtl.css │ │ ├── 19.c5542d290eefbb001433.js │ │ ├── 2.195070ea59b3395625da.js │ │ ├── 2.a3e34146d368d13b6bc1.css │ │ ├── 2.a3e34146d368d13b6bc1.rtl.css │ │ ├── 20.2416da4fc4c075b56691.js │ │ ├── 20.f75162343321d7d9178c.css │ │ ├── 20.f75162343321d7d9178c.rtl.css │ │ ├── 21.7e987db0ed47cc3f789c.css │ │ ├── 21.7e987db0ed47cc3f789c.rtl.css │ │ ├── 21.fc856808959a5b8734f7.js │ │ ├── 22.c118eafc7686081984c8.js │ │ ├── 22.f31ebffc8672752a2d4b.css │ │ ├── 22.f31ebffc8672752a2d4b.rtl.css │ │ ├── 23.7c4be219df640cb3880c.css │ │ ├── 23.7c4be219df640cb3880c.rtl.css │ │ ├── 23.e89d09694523563b8f86.js │ │ ├── 24.319f9ed9725f3cea260a.js │ │ ├── 25.15d449d35706e01821dd.js │ │ ├── 26.16e9146c09ea7d6b839a.js │ │ ├── 27.54aad15135c7ea57b345.js │ │ ├── 28.3f2589cd73664ea3f3e3.js │ │ ├── 29.6a6accc00e80feb13030.js │ │ ├── 3.f41fdd1a128935b63e5b.js │ │ ├── 30.c3cc90c5fbe9a2b87ffb.js │ │ ├── 31.5c895c4f655400b0b4e2.css │ │ ├── 31.5c895c4f655400b0b4e2.rtl.css │ │ ├── 31.d081df3316799b489847.js │ │ ├── 32.48df7a8cdc38d60b308b.js │ │ ├── 32.b92773bfff0363a69bb9.css │ │ ├── 32.b92773bfff0363a69bb9.rtl.css │ │ ├── 33.4a74c62095be3045c87e.js │ │ ├── 33.ac320c107772f8e72252.css │ │ ├── 33.ac320c107772f8e72252.rtl.css │ │ ├── 34.17e0ce399a577f17ba55.js │ │ ├── 34.dd27b311326fd1fc6fde.css │ │ ├── 34.dd27b311326fd1fc6fde.rtl.css │ │ ├── 35.47b9d16b3fa10b495a11.css │ │ ├── 35.47b9d16b3fa10b495a11.rtl.css │ │ ├── 35.58433cec10095e3c1b7e.js │ │ ├── 36.2ee80b40751fcc88a65c.js │ │ ├── 36.e9a6bec06ee11d2c2d4a.css │ │ ├── 36.e9a6bec06ee11d2c2d4a.rtl.css │ │ ├── 37.065a5f2249aafcfe50ec.css │ │ ├── 37.065a5f2249aafcfe50ec.rtl.css │ │ ├── 37.1735365b01406a8d696d.js │ │ ├── 38.4073381c29c4e2bc2209.css │ │ ├── 38.4073381c29c4e2bc2209.rtl.css │ │ ├── 38.9ae2eea9402c30aa3046.js │ │ ├── 39.5f64b4bc2e263edfbf6e.css │ │ ├── 39.5f64b4bc2e263edfbf6e.rtl.css │ │ ├── 39.7e524b82ef9947f0f19f.js │ │ ├── 4.80bf1a925965757be6d4.js │ │ ├── 40.0f54f57304896d7506a2.css │ │ ├── 40.0f54f57304896d7506a2.rtl.css │ │ ├── 40.42bd9598272e9dd24457.js │ │ ├── 41.11c024e8e0504741fd66.js │ │ ├── 41.1dc91fcdd5dbde1247d7.css │ │ ├── 41.1dc91fcdd5dbde1247d7.rtl.css │ │ ├── 42.0491acaaf55887f7fcb3.js │ │ ├── 42.db948a104cb86b7df06e.css │ │ ├── 42.db948a104cb86b7df06e.rtl.css │ │ ├── 43.12df9892872230fa2898.css │ │ ├── 43.12df9892872230fa2898.rtl.css │ │ ├── 43.4ae432f1b8259dbfd0e5.js │ │ ├── 44.01ec30ff4ce8cf7fa8e5.css │ │ ├── 44.01ec30ff4ce8cf7fa8e5.rtl.css │ │ ├── 44.7aabc64d3dfb54c85d60.js │ │ ├── 45.6c1fc3ac2f6063249f97.js │ │ ├── 45.e09d2beed14ffd8995a9.css │ │ ├── 45.e09d2beed14ffd8995a9.rtl.css │ │ ├── 46.75a0e6fecbc3c92a6bc7.js │ │ ├── 46.923fdbea563cd1d28d4c.css │ │ ├── 46.923fdbea563cd1d28d4c.rtl.css │ │ ├── 47.773635a99e184d6dc131.js │ │ ├── 47.b48791ffffadc9c96a10.css │ │ ├── 47.b48791ffffadc9c96a10.rtl.css │ │ ├── 48.912258c9b4f11cd518c3.css │ │ ├── 48.912258c9b4f11cd518c3.rtl.css │ │ ├── 48.9d08141ee2d55bcad3e7.js │ │ ├── 49.0cb5c561f3b28a047912.css │ │ ├── 49.0cb5c561f3b28a047912.rtl.css │ │ ├── 49.929acbc67c2613c57f58.js │ │ ├── 5.1beaffde9123ffaeff74.js │ │ ├── 50.2c50aad369bf63f77061.js │ │ ├── 50.e2f9bc14536ad546e595.css │ │ ├── 50.e2f9bc14536ad546e595.rtl.css │ │ ├── 51.30c5804303a9f1c455e3.js │ │ ├── 51.a35e4c0d0b08a018e307.css │ │ ├── 51.a35e4c0d0b08a018e307.rtl.css │ │ ├── 52.be1d70abe1a172cc5c3a.css │ │ ├── 52.be1d70abe1a172cc5c3a.rtl.css │ │ ├── 52.c212ca3684de16c6f115.js │ │ ├── 53.3f6d736abe33683640bc.css │ │ ├── 53.3f6d736abe33683640bc.rtl.css │ │ ├── 53.7217742e39b70fc9d431.js │ │ ├── 54.9eb4ca2a30197d95fe82.js │ │ ├── 54.cf540e4ba48bf75e96c2.css │ │ ├── 54.cf540e4ba48bf75e96c2.rtl.css │ │ ├── 55.7707e6ae9f2ec8cfb656.js │ │ ├── 55.c11884ad80d526214fb6.css │ │ ├── 55.c11884ad80d526214fb6.rtl.css │ │ ├── 56.83cd8456e872f49059c3.js │ │ ├── 56.ea0c135a2b02b495fbb5.css │ │ ├── 56.ea0c135a2b02b495fbb5.rtl.css │ │ ├── 57.6384b62456dc4fed6ffb.js │ │ ├── 57.651927021db01a7ed13f.css │ │ ├── 57.651927021db01a7ed13f.rtl.css │ │ ├── 58.8077d6b199609737b3d5.js │ │ ├── 58.82b7bef062a290e587d4.css │ │ ├── 58.82b7bef062a290e587d4.rtl.css │ │ ├── 6.35dee0cfeb8a4d70732c.css │ │ ├── 6.35dee0cfeb8a4d70732c.rtl.css │ │ ├── 6.902d5f3923d45b49b876.js │ │ ├── 7.e98fce2ffac2c552565f.css │ │ ├── 7.e98fce2ffac2c552565f.rtl.css │ │ ├── 7.fc0941206f7b7d32812d.js │ │ ├── 8.180c6bdc716e5045b645.css │ │ ├── 8.180c6bdc716e5045b645.rtl.css │ │ ├── 8.62bd4ee21281906a7019.js │ │ ├── 9.855edb9bea2352bd5129.js │ │ ├── add-compare-dialog.e9db1b14483f3e7358f4.js │ │ ├── change-interval-dialog.c8c04c297cc329376f2b.js │ │ ├── chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js │ │ ├── chart-widget-gui.8005316cfc1f06be4bf0.js │ │ ├── clipboard.5403f9bd852af06addff.js │ │ ├── confirm-inputs-dialog.f9823e95a365cd8974c9.js │ │ ├── confirm-symbol-input-dialog.c72289c830292c73812f.js │ │ ├── context-menu-renderer.5eff9c34fa03e94b2c1b.js │ │ ├── create-dialog.472fe015128398f27a86.js │ │ ├── crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur │ │ ├── dialogs-core.c712826575e8ea62d8e0.js │ │ ├── dialogs-core.e9f630dd3fdeb4ceee21.css │ │ ├── dialogs-core.e9f630dd3fdeb4ceee21.rtl.css │ │ ├── dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur │ │ ├── drawing-toolbar.35360bdf4aedb7db7287.js │ │ ├── ds-property-pages.33a0b54c87f584f79681.js │ │ ├── editobjectdialog.a4fd348616e0724542ac.js │ │ ├── eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur │ │ ├── export-data.ea9e219d1d41389ea3b7.js │ │ ├── floating-toolbars.d7f25f59513991368767.js │ │ ├── fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff │ │ ├── fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2 │ │ ├── go-to-date-dialog-impl.51162344726d8956c763.js │ │ ├── grab.bc156522a6b55a60be9fae15c14b66c5.cur │ │ ├── grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur │ │ ├── hammerjs.46686dd839f22b742351.js │ │ ├── header-toolbar.743cca210a6a3e37939e.js │ │ ├── ie-fallback-logos.589046871bfa17cbfbda.js │ │ ├── lazy-jquery-ui.3a9fe36168ca8e6cacb8.js │ │ ├── lazy-velocity.d040cf1092d3b2920dde.js │ │ ├── library.bb7ca756e7cbe50becb3.css │ │ ├── library.bb7ca756e7cbe50becb3.rtl.css │ │ ├── library.e964cdc99937c68d0389.js │ │ ├── line-tools-icons.c89643eed013eb0ff7c1.js │ │ ├── load-chart-dialog.24806d5c5be9fbdfd103.js │ │ ├── lt-pane-views.e06093931461762ecd11.js │ │ ├── moment.fdf50ccef2c78863664d.js │ │ ├── new-edit-object-dialog.232c44a337440602cba4.js │ │ ├── objecttreedialog.bb84539d18c87a88a80b.js │ │ ├── opacity-pattern.a6506134daec7169f68f563f084a9d41.svg │ │ ├── precache-manifest.60144109bbe17651b1eb050c29e4f6f4.js │ │ ├── react.cdaa9c19dda854fad341.js │ │ ├── restricted-toolset.e356a29caff335c91f6b.js │ │ ├── runtime.d22af752ee0c2111becd.js │ │ ├── series-icons-map.e3b746e7a7341e8ddb2d.js │ │ ├── series-pane-views.678a074c53e327c3184a.js │ │ ├── service-worker.js │ │ ├── study-market.ff409c6c02ba9edc0151.js │ │ ├── study-pane-views.ee901b6c4a31f84ba03d.js │ │ ├── study-template-dialog.a6f710070f1f64f2ef11.js │ │ ├── symbol-info-dialog-impl.eaddb54cc066d7a021e2.js │ │ ├── symbolsearch.0057814b113bcee3d957.js │ │ ├── take-chart-image-dialog-impl.d61e03a87b11d0c1adf1.js │ │ ├── vendors.267dd414d71e078f822c.js │ │ └── zoom.e21f24dd632c7069139bc47ae89c54b5.cur │ │ ├── cs-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── da_DK-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── de-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── el-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── en-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── es-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── et_EE-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── fa-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── fr-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── he_IL-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── hu_HU-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── id_ID-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── images │ │ ├── balloon.png │ │ ├── bar-loader.gif │ │ ├── button-bg.png │ │ ├── charting_library │ │ │ ├── logo-widget-copyright-faded.png │ │ │ └── logo-widget-copyright.png │ │ ├── controlll.png │ │ ├── delayed.png │ │ ├── dialogs │ │ │ ├── checkbox.png │ │ │ ├── close-flat.png │ │ │ ├── large-slider-handle.png │ │ │ ├── linewidth-slider.png │ │ │ └── opacity-slider.png │ │ ├── icons.png │ │ ├── prediction-clock-black.png │ │ ├── prediction-clock-white.png │ │ ├── prediction-failure-white.png │ │ ├── prediction-success-white.png │ │ ├── price_label.png │ │ ├── select-bg.png │ │ ├── svg │ │ │ ├── chart │ │ │ │ ├── bucket2.svg │ │ │ │ ├── font.svg │ │ │ │ ├── large-slider-handle.svg │ │ │ │ └── pencil2.svg │ │ │ └── question-mark-rounded.svg │ │ ├── tvcolorpicker-bg-gradient.png │ │ ├── tvcolorpicker-bg.png │ │ ├── tvcolorpicker-check.png │ │ └── tvcolorpicker-sprite.png │ │ ├── it-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ja-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ko-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ms_MY-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── nl_NL-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── no-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── pl-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── pt-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ro-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── ru-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── sk_SK-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── sv-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── th-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── tr-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── vi-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ ├── zh-tv-chart.8562c7b8f7bdb50c1f5d.html │ │ └── zh_TW-tv-chart.8562c7b8f7bdb50c1f5d.html ├── components │ ├── Beneficiaries │ │ ├── Beneficiaries.pcss │ │ ├── BeneficiariesActivateModal.tsx │ │ ├── BeneficiariesAddModal.tsx │ │ ├── BeneficiariesFailAddModal.tsx │ │ └── index.tsx │ ├── Blur │ │ ├── Blur.pcss │ │ └── index.tsx │ ├── Captcha │ │ ├── Captcha.pcss │ │ └── index.tsx │ ├── ChangePassword │ │ ├── ChangePassword.pcss │ │ └── index.tsx │ ├── CombinedOrderBook │ │ ├── CombinedOrderBook.pcss │ │ ├── CombinedOrderBook.test.tsx │ │ ├── __snapshots__ │ │ │ └── CombinedOrderBook.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── CopyableTextField │ │ ├── CopyableTextField.pcss │ │ ├── CopyableTextField.test.tsx │ │ ├── __snapshots__ │ │ │ └── CopyableTextField.test.tsx.snap │ │ └── index.tsx │ ├── CryptoIcon │ │ ├── CryptoIcon.pcss │ │ ├── CryptoIcon.test.tsx │ │ ├── __snapshots__ │ │ │ └── CryptoIcon.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── CurrencyInfo │ │ ├── CurrencyInfo.pcss │ │ └── index.tsx │ ├── CustomInput │ │ ├── CustomInput.pcss │ │ ├── CustomInput.test.tsx │ │ ├── __snapshots__ │ │ │ └── CustomInput.test.tsx.snap │ │ └── index.tsx │ ├── Customization │ │ ├── Fonts │ │ │ └── index.tsx │ │ ├── Images │ │ │ └── index.tsx │ │ ├── Spacing │ │ │ └── index.tsx │ │ ├── Themes │ │ │ ├── ColorSettings │ │ │ │ ├── ColorSettings.pcss │ │ │ │ └── index.tsx │ │ │ ├── Themes.pcss │ │ │ └── index.tsx │ │ ├── index.ts │ │ └── style.pcss │ ├── Decimal │ │ ├── Decimal.pcss │ │ ├── Decimal.test.tsx │ │ ├── __snapshots__ │ │ │ └── Decimal.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── DepositCrypto │ │ ├── DepositCrypto.pcss │ │ ├── DepositCrypto.test.tsx │ │ ├── __snapshots__ │ │ │ └── DepositCrypto.test.tsx.snap │ │ └── index.tsx │ ├── DepositFiat │ │ ├── DepositFiat.pcss │ │ ├── DepositFiat.test.tsx │ │ ├── __snapshots__ │ │ │ └── DepositFiat.test.tsx.snap │ │ └── index.tsx │ ├── Documentation │ │ ├── Documentation.pcss │ │ ├── Endpoints │ │ │ ├── DocumentationEndpoints.pcss │ │ │ ├── Item │ │ │ │ ├── RequestTypeItem │ │ │ │ │ ├── ParametersItem │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ResponsesItem │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Header │ │ │ ├── DocumentationHeader.pcss │ │ │ └── index.tsx │ │ ├── Models │ │ │ ├── DocumentationModels.pcss │ │ │ ├── Item │ │ │ │ ├── DocumentationModelsItem.pcss │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ └── index.ts │ ├── Dropdown │ │ ├── Dropdown.pcss │ │ ├── Dropdown.test.tsx │ │ ├── __snapshots__ │ │ │ └── Dropdown.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── EmailForm │ │ ├── EmailForm.pcss │ │ ├── EmailForm.test.tsx │ │ ├── __snapshots__ │ │ │ └── EmailForm.test.tsx.snap │ │ ├── close.svg │ │ └── index.tsx │ ├── ExpiredSessionModal │ │ ├── ExpiredSessionModal.pcss │ │ └── index.tsx │ ├── FilterInput │ │ ├── FilterInput.pcss │ │ ├── FilterInput.test.tsx │ │ ├── Search.svg │ │ ├── __snapshots__ │ │ │ └── FilterInput.test.tsx.snap │ │ └── index.tsx │ ├── GridItem │ │ ├── GriItem.test.tsx │ │ ├── GridItem.pcss │ │ ├── __snapshots__ │ │ │ └── GriItem.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── History │ │ ├── History.pcss │ │ ├── History.test.tsx │ │ ├── __snapshots__ │ │ │ └── History.test.tsx.snap │ │ └── index.tsx │ ├── MarketDepths │ │ ├── MarketDepths.pcss │ │ ├── MarketDepths.test.tsx │ │ ├── __snapshots__ │ │ │ └── MarketDepths.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── Markets │ │ ├── Markets.pcss │ │ ├── Markets.test.tsx │ │ ├── __snapshots__ │ │ │ └── Markets.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── MetaMaskButton │ │ ├── MetaMaskButton.pcss │ │ └── index.tsx │ ├── Modal │ │ ├── Modal.pcss │ │ ├── Modal.test.tsx │ │ ├── __snapshots__ │ │ │ └── Modal.test.tsx.snap │ │ └── index.tsx │ ├── OpenOrders │ │ ├── OpenOrders.pcss │ │ ├── OpenOrders.test.tsx │ │ ├── __snapshots__ │ │ │ └── OpenOrders.test.tsx.snap │ │ └── index.tsx │ ├── Order │ │ ├── Order.pcss │ │ ├── Order.test.tsx │ │ ├── __snapshots__ │ │ │ └── Order.test.tsx.snap │ │ └── index.tsx │ ├── OrderBook │ │ ├── OrderBook.pcss │ │ ├── OrderBook.test.tsx │ │ ├── __snapshots__ │ │ │ └── OrderBook.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── OrderForm │ │ ├── OrderForm.pcss │ │ ├── OrderForm.test.tsx │ │ ├── __snapshots__ │ │ │ └── OrderForm.test.tsx.snap │ │ └── index.tsx │ ├── OrderInput │ │ ├── OrderInput.pcss │ │ ├── OrderInput.test.tsx │ │ ├── __snapshots__ │ │ │ └── OrderInput.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── Pagination │ │ ├── Pagination.pcss │ │ ├── Pagination.test.tsx │ │ ├── __snapshots__ │ │ │ └── Pagination.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── PasswordStrengthMeter │ │ ├── PasswordStrengthMeter.pcss │ │ ├── PasswordStrengthMeter.test.tsx │ │ ├── Readme.md │ │ ├── __snapshots__ │ │ │ └── PasswordStrengthMeter.test.tsx.snap │ │ └── index.tsx │ ├── PasswordStrengthTip │ │ ├── PasswordStrengthTip.pcss │ │ ├── PasswordStrengthTip.test.tsx │ │ ├── Readme.md │ │ ├── __snapshots__ │ │ │ └── PasswordStrengthTip.test.tsx.snap │ │ └── index.tsx │ ├── PercentageButton │ │ ├── PercentageButton.pcss │ │ ├── PercentageButton.test.tsx │ │ ├── __snapshots__ │ │ │ └── PercentageButton.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── QRCode │ │ ├── QRCode.pcss │ │ ├── QRCode.test.tsx │ │ ├── __snapshots__ │ │ │ └── QRCode.test.tsx.snap │ │ ├── index.tsx │ │ └── readme.md │ ├── SearchDropdown │ │ ├── SearchDropdown.pcss │ │ └── index.tsx │ ├── SignIn │ │ ├── SignIn.pcss │ │ ├── SignIn.test.tsx │ │ ├── __snapshots__ │ │ │ └── SignIn.test.tsx.snap │ │ └── index.tsx │ ├── SignUp │ │ ├── SignUp.pcss │ │ ├── SignUp.test.tsx │ │ ├── __snapshots__ │ │ │ └── SignUp.test.tsx.snap │ │ └── index.tsx │ ├── SummaryField │ │ ├── SummaryField.pcss │ │ ├── SummaryField.test.tsx │ │ ├── __snapshots__ │ │ │ └── SummaryField.test.tsx.snap │ │ └── index.tsx │ ├── TabPanel │ │ ├── TabPanel.pcss │ │ ├── TabPanel.test.tsx │ │ ├── __snapshots__ │ │ │ └── TabPanel.test.tsx.snap │ │ └── index.tsx │ ├── Table │ │ ├── Table.pcss │ │ ├── Table.test.tsx │ │ ├── index.tsx │ │ └── readme.md │ ├── TickerTable │ │ ├── TickerTable.pcss │ │ └── index.tsx │ ├── Tooltip │ │ ├── Tooltip.pcss │ │ └── index.tsx │ ├── TwoFactorAuth │ │ ├── TwoFactorAuth.test.tsx │ │ ├── __snapshots__ │ │ │ └── TwoFactorAuth.test.tsx.snap │ │ └── index.tsx │ ├── UploadFile │ │ ├── UploadFile.pcss │ │ └── index.tsx │ ├── WalletItem │ │ ├── WalletItem.pcss │ │ ├── WalletItem.test.tsx │ │ ├── __snapshots__ │ │ │ └── WalletItem.test.tsx.snap │ │ └── index.tsx │ ├── WalletList │ │ ├── WalletList.pcss │ │ ├── WalletList.test.tsx │ │ ├── __snapshots__ │ │ │ └── WalletList.test.tsx.snap │ │ ├── fixtures.ts │ │ └── index.tsx │ ├── index.ts │ └── style.pcss ├── constants │ ├── constants.test.ts │ └── index.ts ├── containers │ ├── Alerts │ │ ├── Alerts.pcss │ │ └── index.tsx │ ├── ChangePassword │ │ ├── ChangePassword.pcss │ │ └── index.tsx │ ├── Charts │ │ ├── Charts.pcss │ │ └── index.tsx │ ├── Confirm │ │ ├── Address │ │ │ └── index.tsx │ │ ├── Documents │ │ │ ├── Documents.pcss │ │ │ └── index.tsx │ │ ├── Identity │ │ │ ├── Identity.pcss │ │ │ └── index.tsx │ │ ├── Phone │ │ │ ├── Phone.pcss │ │ │ └── index.tsx │ │ └── index.ts │ ├── Customization │ │ ├── Customization.pcss │ │ └── index.tsx │ ├── Errors │ │ └── index.tsx │ ├── Footer │ │ ├── Footer.pcss │ │ └── index.tsx │ ├── GeetestCaptcha │ │ └── index.tsx │ ├── Header │ │ ├── Header.pcss │ │ ├── arrows │ │ │ ├── arrowBottom.svg │ │ │ ├── arrowBottomLight.svg │ │ │ ├── arrowRight.svg │ │ │ └── arrowRightLight.svg │ │ ├── back.svg │ │ ├── backLight.svg │ │ └── index.tsx │ ├── HeaderToolbar │ │ └── index.tsx │ ├── HistoryElement │ │ └── index.tsx │ ├── LegalDocuments │ │ ├── LegalDocuments.pcss │ │ └── index.tsx │ ├── MarketDepth │ │ ├── MarketDepth.pcss │ │ └── index.tsx │ ├── Markets │ │ ├── Markets.pcss │ │ └── index.tsx │ ├── MarketsTable │ │ └── index.tsx │ ├── ModalWithdrawConfirmation │ │ ├── ModalWithdrawConfirmation.pcss │ │ └── index.tsx │ ├── ModalWithdrawSubmit │ │ ├── ModalWithdrawSubmit.pcss │ │ └── index.tsx │ ├── NavBar │ │ ├── NavBar.pcss │ │ ├── close-avatar.svg │ │ ├── close-icon.svg │ │ ├── close.svg │ │ ├── down-arrow.svg │ │ ├── index.tsx │ │ ├── open-avatar.svg │ │ └── open-icon.svg │ ├── OpenOrders │ │ ├── OpenOrders.pcss │ │ ├── OpenOrders.test.tsx │ │ ├── __snapshots__ │ │ │ └── OpenOrders.test.tsx.snap │ │ └── index.tsx │ ├── Order │ │ ├── Order.pcss │ │ └── index.tsx │ ├── OrderBook │ │ ├── OrderBook.pcss │ │ └── index.tsx │ ├── OrdersElement │ │ └── index.tsx │ ├── ProfileAccountActivity │ │ ├── ProfileAccountActivity.pcss │ │ └── index.tsx │ ├── ProfileApiKeys │ │ ├── ProfileApiKeys.pcss │ │ └── index.tsx │ ├── ProfileAuthDetails │ │ ├── close.svg │ │ └── index.tsx │ ├── ProfileTwoFactorAuth │ │ ├── ProfileTwoFactorAuth.pcss │ │ └── index.tsx │ ├── ProfileVerification │ │ ├── ProfileVerification.pcss │ │ └── index.tsx │ ├── RecentTrades │ │ ├── Market.tsx │ │ ├── RecentTrades.pcss │ │ ├── RecentTrades.test.tsx │ │ ├── Yours.tsx │ │ ├── __snapshots__ │ │ │ └── RecentTrades.test.tsx.snap │ │ └── index.tsx │ ├── ReferralProgram │ │ ├── ReferralProgram.pcss │ │ └── index.tsx │ ├── Sidebar │ │ ├── Sidebar.pcss │ │ └── index.tsx │ ├── ToolBar │ │ ├── MarketSelector │ │ │ ├── MarketSelector.pcss │ │ │ ├── MarketsList │ │ │ │ ├── MarketsList.pcss │ │ │ │ └── index.tsx │ │ │ ├── MarketsTabs │ │ │ │ ├── MarketsTabs.pcss │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── PriceBar │ │ │ ├── PriceBar.pcss │ │ │ └── index.tsx │ │ ├── ProgressLabel │ │ │ ├── ProgressLabel.pcss │ │ │ └── index.tsx │ │ ├── ToolBar.pcss │ │ ├── icons │ │ │ ├── ArrowIcon.tsx │ │ │ ├── hidden.svg │ │ │ └── search.svg │ │ └── index.tsx │ ├── TradingChart │ │ ├── TradingChart.pcss │ │ ├── api.ts │ │ ├── config.ts │ │ ├── index.tsx │ │ ├── timezones.test.tsx │ │ └── timezones.ts │ ├── TwoFactorAuth │ │ └── TwoFactorAuth.pcss │ ├── Wallets │ │ ├── EstimatedValue │ │ │ ├── EstimatedValue.pcss │ │ │ └── index.tsx │ │ ├── FailIcon.tsx │ │ ├── History.tsx │ │ └── SucceedIcon.tsx │ ├── WalletsFetch │ │ ├── WalletsFetch.test.tsx │ │ ├── __snapshots__ │ │ │ └── WalletsFetch.test.tsx.snap │ │ └── index.tsx │ ├── Withdraw │ │ └── index.tsx │ ├── index.ts │ └── style.pcss ├── custom │ ├── helpers │ │ └── layout.ts │ ├── styles │ │ ├── colors.pcss │ │ ├── fonts.pcss │ │ ├── style.pcss │ │ └── themes │ │ │ └── style.pcss │ ├── tradingChartConfig.ts │ └── translations │ │ ├── en.ts │ │ ├── index.ts │ │ ├── nationalities.ts │ │ └── ru.ts ├── filters │ ├── FilterPrice │ │ ├── FilterPriceCustomStep.ts │ │ ├── FilterPriceSignificantDigit.ts │ │ ├── index.test.ts │ │ └── index.ts │ └── index.ts ├── helpers │ ├── accumulateVolume.ts │ ├── areEqualProps.ts │ ├── areEqualSelectedProps.ts │ ├── buildQueryString.test.ts │ ├── buildQueryString.ts │ ├── calcMaxVolume.ts │ ├── changeElementPosition.ts │ ├── checkDate.ts │ ├── cleanPositiveFloatInput.ts │ ├── convertRgbToHex.test.ts │ ├── convertRgbToHex.ts │ ├── copy.ts │ ├── emailValidation.ts │ ├── estimateValue.test.ts │ ├── estimateValue.ts │ ├── filterData.ts │ ├── formatCCYAddress.ts │ ├── formatDate.ts │ ├── geetest.js │ ├── getCsrfToken.ts │ ├── getHistorySagaParam.ts │ ├── getLanguageByCode.ts │ ├── getOrderAPI.ts │ ├── getStylesValueByKey.ts │ ├── getTimestampPeriod.ts │ ├── getTotalPrice.ts │ ├── getUnique.ts │ ├── getUrlPart.ts │ ├── getUserAgent.ts │ ├── getVerificationStep.ts │ ├── handleCCYPrecision.ts │ ├── handleIncrementalUpdate.test.ts │ ├── handleIncrementalUpdate.ts │ ├── helpers.test.ts │ ├── historyTableUtils.ts │ ├── index.ts │ ├── jest.ts │ ├── layout.ts │ ├── localeDate.ts │ ├── passwordValidation.ts │ ├── providers.tsx │ ├── randomSecretHex.ts │ ├── regExp.test.ts │ ├── regExp.ts │ ├── setDocumentTitle.ts │ ├── setTradeColor.ts │ ├── sliceArray.ts │ ├── sliceString.ts │ ├── sortByDate.ts │ ├── sortByPrice.ts │ ├── timeConvert.ts │ ├── timezone.ts │ ├── toggleColorTheme.ts │ ├── truncateMiddle.ts │ ├── usernameValidation.ts │ ├── validateBeneficiaryAddress.test.ts │ └── validateBeneficiaryAddress.ts ├── hooks │ ├── index.ts │ ├── useApiKeysFetch.ts │ ├── useBeneficiariesFetch.ts │ ├── useCurrenciesFetch.ts │ ├── useDepthFetch.ts │ ├── useDocumentTitle.ts │ ├── useDocumentationFetch.ts │ ├── useHistoryFetch.ts │ ├── useMarketsFetch.ts │ ├── usePrevious.ts │ ├── useResetCaptchaState.ts │ ├── useSetMobileDevice.ts │ ├── useSetShouldGeetestReset.ts │ ├── useTickersFetch.ts │ ├── useUserActivityFetch.ts │ ├── useUserOrdersHistoryFetch.ts │ └── useWalletsFetch.ts ├── index.pcss ├── index.tsx ├── mobile │ ├── assets │ │ └── images │ │ │ ├── AddIcon.tsx │ │ │ ├── CheckIcon.tsx │ │ │ ├── ChevronIcon.tsx │ │ │ ├── MinusIcon.tsx │ │ │ ├── PlusIcon.tsx │ │ │ ├── WarningIcon.tsx │ │ │ └── footer │ │ │ ├── HomeIcon.tsx │ │ │ ├── OrderIcon.tsx │ │ │ ├── ProfileIcon.tsx │ │ │ ├── TradeIcon.tsx │ │ │ └── WalletIcon.tsx │ ├── components │ │ ├── CreatedApiKeyModal │ │ │ └── index.tsx │ │ ├── CurrentMarketInfo │ │ │ └── index.tsx │ │ ├── EstimatedValue │ │ │ └── index.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Header │ │ │ └── index.tsx │ │ ├── HistoryTable │ │ │ ├── Rowitem.tsx │ │ │ └── index.tsx │ │ ├── Modal │ │ │ └── index.tsx │ │ ├── ModalWithdrawConfirmation │ │ │ └── index.tsx │ │ ├── OpenOrders │ │ │ └── index.tsx │ │ ├── OrderButtons │ │ │ └── index.tsx │ │ ├── OrderInput │ │ │ └── index.tsx │ │ ├── Orders │ │ │ ├── OrdersItem.tsx │ │ │ └── index.tsx │ │ ├── Profile │ │ │ ├── ApiKeysItem │ │ │ │ └── index.tsx │ │ │ ├── ProfileLinks │ │ │ │ └── index.tsx │ │ │ ├── UserActivityItem │ │ │ │ └── index.tsx │ │ │ ├── UserInfo │ │ │ │ └── index.tsx │ │ │ └── index.ts │ │ ├── Subheader │ │ │ └── index.tsx │ │ ├── TradingTabs │ │ │ ├── Charts │ │ │ │ └── index.tsx │ │ │ ├── CreateOrder │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── TwoFactorModal │ │ │ └── index.tsx │ │ ├── WalletBanner │ │ │ └── index.tsx │ │ ├── WalletDepositBody │ │ │ └── index.tsx │ │ ├── WalletHeader │ │ │ └── index.tsx │ │ ├── WalletItem │ │ │ └── index.tsx │ │ ├── WalletWithdrawBody │ │ │ └── index.tsx │ │ ├── WalletsButtons │ │ │ └── index.tsx │ │ └── index.ts │ ├── screens │ │ ├── ChangeForgottenPasswordScreen │ │ │ └── index.tsx │ │ ├── ConfirmScreen │ │ │ └── index.tsx │ │ ├── EmailVerificationScreen │ │ │ └── index.tsx │ │ ├── ForgotPassword │ │ │ └── index.tsx │ │ ├── Landing │ │ │ └── index.tsx │ │ ├── Orders │ │ │ └── index.tsx │ │ ├── Profile │ │ │ └── index.tsx │ │ ├── ProfileAccountActivity │ │ │ └── index.tsx │ │ ├── ProfileApiKeys │ │ │ └── index.tsx │ │ ├── ProfileAuth │ │ │ └── index.tsx │ │ ├── ProfileChangePassword │ │ │ └── index.tsx │ │ ├── ProfileColorTheme │ │ │ └── index.tsx │ │ ├── ProfileLanguage │ │ │ └── index.tsx │ │ ├── ProfileVerificationScreen │ │ │ └── index.tsx │ │ ├── SelectedWalletScreen │ │ │ └── index.tsx │ │ ├── SignInScreen │ │ │ └── index.tsx │ │ ├── SignUpScreen │ │ │ └── index.tsx │ │ ├── Trading │ │ │ └── index.tsx │ │ ├── WalletDeposit │ │ │ └── index.tsx │ │ ├── WalletWithdraw │ │ │ └── index.tsx │ │ ├── WalletsHistory │ │ │ └── index.tsx │ │ ├── WalletsScreen │ │ │ └── index.tsx │ │ └── index.ts │ ├── styles │ │ ├── components │ │ │ ├── ApiKeysItem.pcss │ │ │ ├── Charts.pcss │ │ │ ├── CreateOrder.pcss │ │ │ ├── CreatedApiKeyModal.pcss │ │ │ ├── CurrentMarketInfo.pcss │ │ │ ├── EstimatedValue.pcss │ │ │ ├── Footer.pcss │ │ │ ├── Header.pcss │ │ │ ├── Modal.pcss │ │ │ ├── ModalWithdrawConfirmation.pcss │ │ │ ├── OpenOrders.pcss │ │ │ ├── OrderButtons.pcss │ │ │ ├── OrderInput.pcss │ │ │ ├── Orders.pcss │ │ │ ├── OrdersItem.pcss │ │ │ ├── ProfileLinks.pcss │ │ │ ├── RowItem.pcss │ │ │ ├── Subheader.pcss │ │ │ ├── TickerTable.pcss │ │ │ ├── TradingTabs.pcss │ │ │ ├── TwoFactorModal.pcss │ │ │ ├── UserActivityItem.pcss │ │ │ ├── UserInfo.pcss │ │ │ ├── WalletBanner.pcss │ │ │ ├── WalletDepositBody.pcss │ │ │ ├── WalletHeader.pcss │ │ │ ├── WalletItem.pcss │ │ │ ├── WalletWithdrawBody.pcss │ │ │ ├── WalletsButtons.pcss │ │ │ └── styles.pcss │ │ ├── screens │ │ │ ├── ChangeForgottenPasswordMobileScreen.pcss │ │ │ ├── ConfirmMobileScreen.pcss │ │ │ ├── EmailVerificationMobileScreen.pcss │ │ │ ├── ForgotPassword.pcss │ │ │ ├── HistoryTable.pcss │ │ │ ├── Landing.pcss │ │ │ ├── Orders.pcss │ │ │ ├── Profile.pcss │ │ │ ├── ProfileApiKeys.pcss │ │ │ ├── ProfileAuthMobileScreen.pcss │ │ │ ├── ProfileChangePassword.pcss │ │ │ ├── ProfileColorTheme.pcss │ │ │ ├── ProfileLanguage.pcss │ │ │ ├── ProfileUserActivity.pcss │ │ │ ├── ProfileVerificationMobileScreen.pcss │ │ │ ├── SignInMobileScreen.pcss │ │ │ ├── SignUpMobileScreen.pcss │ │ │ ├── WalletWithdraw.pcss │ │ │ └── styles.pcss │ │ └── style.pcss │ └── translations │ │ ├── en.ts │ │ ├── index.ts │ │ └── ru.ts ├── modules │ ├── app.ts │ ├── helpers.ts │ ├── index.ts │ ├── public │ │ ├── alert │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── handleAlertSaga.ts │ │ │ │ ├── handleErrorAlert.test.ts │ │ │ │ ├── handleSuccessAlert.test.ts │ │ │ │ └── index.ts │ │ │ └── selectors.ts │ │ ├── blocklistAccess │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── blocklistAccessFetchSaga.test.ts │ │ │ │ ├── blocklistAccessFetchSaga.ts │ │ │ │ └── index.ts │ │ │ └── selectors.ts │ │ ├── configs │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── configsFetchSaga.test.ts │ │ │ │ ├── configsFetchSaga.ts │ │ │ │ └── index.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── currencies │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── currenciesFetchSaga.test.ts │ │ │ │ └── currenciesFetchSaga.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── customization │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── customizationFetchSaga.test.ts │ │ │ │ ├── customizationFetchSaga.ts │ │ │ │ └── index.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── errorHandler │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── helpers │ │ │ │ └── getMetaMaskErrorMessage.ts │ │ │ ├── index.ts │ │ │ ├── reducer.ts │ │ │ └── sagas │ │ │ │ ├── handleErrorSaga.ts │ │ │ │ └── index.ts │ │ ├── globalSettings │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ └── selectors.ts │ │ ├── gridLayout │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ └── selectors.ts │ │ ├── i18n │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ └── selectors.ts │ │ ├── kline │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── handleKlineFetchSaga.test.ts │ │ │ │ ├── handleKlineFetchSaga.ts │ │ │ │ └── index.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── markets │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── marketsFetchSaga.test.ts │ │ │ │ └── marketsFetchSaga.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── memberLevels │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── index.ts │ │ │ │ ├── memberLevelsSaga.test.ts │ │ │ │ └── memberLevelsSaga.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── orderBook │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── depthSaga.test.ts │ │ │ │ ├── depthSaga.ts │ │ │ │ ├── index.ts │ │ │ │ ├── orderBookSaga.test.ts │ │ │ │ └── orderBookSaga.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── ranger │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── index.ts │ │ │ │ ├── rangerSaga.test.ts │ │ │ │ └── rangerSaga.ts │ │ │ └── selectors.ts │ │ └── recentTrades │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ ├── index.ts │ │ │ ├── recentTradesFetchSaga.test.ts │ │ │ └── recentTradesFetchSaga.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ ├── types.ts │ └── user │ │ ├── apiKeys │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── apiKeyCreateSaga.test.ts │ │ │ ├── apiKeyCreateSaga.ts │ │ │ ├── apiKeyDeleteSaga.test.ts │ │ │ ├── apiKeyDeleteSaga.ts │ │ │ ├── apiKeyUpdateSaga.test.ts │ │ │ ├── apiKeyUpdateSaga.ts │ │ │ ├── apiKeysSaga.test.ts │ │ │ ├── apiKeysSaga.ts │ │ │ └── index.ts │ │ ├── selectors.test.ts │ │ └── selectors.ts │ │ ├── auth │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── entropyPassword.ts │ │ │ ├── index.ts │ │ │ ├── logoutSaga.test.ts │ │ │ ├── logoutSaga.ts │ │ │ ├── signInSaga.test.ts │ │ │ ├── signInSaga.ts │ │ │ ├── signUpSaga.ts │ │ │ └── verificationSaga.ts │ │ └── selectors.ts │ │ ├── beneficiaries │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── beneficiariesActivateSaga.test.ts │ │ │ ├── beneficiariesActivateSaga.ts │ │ │ ├── beneficiariesCreateSaga.test.ts │ │ │ ├── beneficiariesCreateSaga.ts │ │ │ ├── beneficiariesDeleteSaga.test.ts │ │ │ ├── beneficiariesDeleteSaga.ts │ │ │ ├── beneficiariesResendPinSaga.test.ts │ │ │ ├── beneficiariesResendPinSaga.ts │ │ │ ├── beneficiariesSaga.test.ts │ │ │ ├── beneficiariesSaga.ts │ │ │ └── index.ts │ │ ├── selectors.ts │ │ └── types.ts │ │ ├── captcha │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── geetestCaptchaSaga.ts │ │ │ └── index.ts │ │ └── selectors.ts │ │ ├── customization │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── customizationUpdateSaga.test.ts │ │ │ ├── customizationUpdateSaga.ts │ │ │ └── index.ts │ │ └── selectors.ts │ │ ├── documentation │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── docTradeUserApiFetchSaga.test.ts │ │ │ ├── docTradeUserApiFetchSaga.ts │ │ │ └── index.ts │ │ ├── selectors.ts │ │ └── types.ts │ │ ├── emailVerification │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── EmailVerificationSaga.test.ts │ │ │ ├── emailVerificationSaga.ts │ │ │ └── index.ts │ │ └── selectors.ts │ │ ├── history │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── historyPushSaga.ts │ │ │ ├── historySaga.test.ts │ │ │ ├── historySaga.ts │ │ │ └── index.ts │ │ ├── selectors.ts │ │ └── types.ts │ │ ├── kyc │ │ ├── addresses │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── index.ts │ │ │ │ ├── sendAddressesSaga.test.ts │ │ │ │ └── sendAddressesSaga.ts │ │ │ ├── selectors.test.ts │ │ │ └── selectors.ts │ │ ├── documents │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── index.ts │ │ │ │ ├── sendDocumentsSaga.test.ts │ │ │ │ └── sendDocumentsSaga.ts │ │ │ └── selectors.ts │ │ ├── identity │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── editIdentity.test.ts │ │ │ │ ├── editIdentitySaga.ts │ │ │ │ ├── index.ts │ │ │ │ ├── sendIdentity.test.ts │ │ │ │ └── sendIdentitySaga.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── label │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ │ ├── index.ts │ │ │ │ ├── labelSaga.test.ts │ │ │ │ └── labelSaga.ts │ │ │ └── selectors.ts │ │ └── phone │ │ │ ├── actions.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── reducer.test.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas │ │ │ ├── confirmPhoneSaga.ts │ │ │ ├── index.ts │ │ │ ├── resendCodeSaga.ts │ │ │ ├── sendCodeSaga.test.ts │ │ │ └── sendCodeSaga.ts │ │ │ └── selectors.ts │ │ ├── openOrders │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── index.ts │ │ │ ├── openOrdersCancelSaga.test.ts │ │ │ ├── openOrdersCancelSaga.ts │ │ │ ├── userOpenOrdersFetchSaga.test.ts │ │ │ └── userOpenOrdersFetchSaga.ts │ │ └── selectors.ts │ │ ├── orders │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── index.ts │ │ │ ├── ordersExecuteSaga.test.ts │ │ │ └── ordersExecuteSaga.ts │ │ └── selectors.ts │ │ ├── ordersHistory │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── index.ts │ │ │ ├── ordersCancelAllSaga.test.ts │ │ │ ├── ordersCancelAllSaga.ts │ │ │ ├── ordersHistoryCancelSaga.test.ts │ │ │ ├── ordersHistoryCancelSaga.ts │ │ │ ├── ordersHistorySaga.test.ts │ │ │ └── ordersHistorySaga.ts │ │ └── selectors.ts │ │ ├── password │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── changeForgotPasswordSaga.test.ts │ │ │ ├── changeForgotPasswordSaga.ts │ │ │ ├── forgotPasswordSaga.test.ts │ │ │ ├── forgotPasswordSaga.ts │ │ │ └── index.ts │ │ └── selectors.ts │ │ ├── profile │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── changePasswordSaga.test.ts │ │ │ ├── changePasswordSaga.ts │ │ │ ├── changeUserDataSaga.test.ts │ │ │ ├── changeUserDataSaga.ts │ │ │ ├── generate2faQRSaga.test.ts │ │ │ ├── generate2faQRSaga.ts │ │ │ ├── index.ts │ │ │ ├── toggle2faSaga.test.ts │ │ │ ├── toggle2faSaga.ts │ │ │ ├── userSaga.test.ts │ │ │ └── userSaga.ts │ │ ├── selectors.ts │ │ └── types.ts │ │ ├── userActivity │ │ ├── actions.test.ts │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── index.ts │ │ │ ├── userActivitySaga.test.ts │ │ │ └── userActivitySaga.ts │ │ ├── selectors.test.ts │ │ └── selectors.ts │ │ ├── wallets │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ │ ├── index.ts │ │ │ ├── walletsAddressSaga.ts │ │ │ ├── walletsSaga.test.ts │ │ │ ├── walletsSaga.ts │ │ │ └── walletsWithdrawSaga.ts │ │ ├── selectors.ts │ │ └── types.ts │ │ └── withdrawLimit │ │ ├── actions.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── sagas │ │ ├── index.ts │ │ ├── withdrawLimitSaga.test.ts │ │ └── withdrawLimitSaga.ts │ │ ├── selectors.test.ts │ │ ├── selectors.ts │ │ └── types.ts ├── react-app-env.d.ts ├── routes │ ├── Layout │ │ ├── Layout.pcss │ │ └── index.tsx │ └── index.ts ├── screens │ ├── ChangeForgottenPasswordScreen │ │ ├── ChangeForgottenPasswordScreen.pcss │ │ └── index.tsx │ ├── ConfirmScreen │ │ ├── ConfirmScreen.pcss │ │ └── index.tsx │ ├── DocumentationScreen │ │ ├── DocumentationScreen.pcss │ │ └── index.tsx │ ├── EmailVerification │ │ ├── EmailVerification.pcss │ │ └── index.tsx │ ├── ForgotPassword │ │ ├── ForgotPassword.pcss │ │ └── index.tsx │ ├── History │ │ ├── HistoryTab.pcss │ │ └── index.tsx │ ├── LandingScreen │ │ ├── LandingScreen.pcss │ │ └── index.tsx │ ├── MagicLinkScreen │ │ └── index.tsx │ ├── MaintenanceScreen │ │ ├── MaintenanceScreen.pcss │ │ └── index.tsx │ ├── OrdersTabScreen │ │ ├── OrdersTabScreen.pcss │ │ └── index.tsx │ ├── ProfileScreen │ │ ├── ProfileScreen.pcss │ │ └── index.tsx │ ├── ProfileTwoFactorAuthScreen │ │ ├── ProfileTwoFactorAuthScreen.pcss │ │ ├── close.svg │ │ └── index.tsx │ ├── RestrictedScreen │ │ ├── RestrictedScreen.pcss │ │ └── index.tsx │ ├── SignInScreen │ │ ├── SignInScreen.pcss │ │ └── index.tsx │ ├── SignUpScreen │ │ ├── SignUpScreen.pcss │ │ └── index.tsx │ ├── TradingScreen │ │ ├── TradingScreen.pcss │ │ └── index.tsx │ ├── VerificationScreen │ │ └── index.tsx │ ├── WalletsScreen │ │ ├── WalletsScreen.pcss │ │ └── index.tsx │ ├── index.ts │ ├── style.pcss │ └── tests │ │ ├── ChangeForgottenPassword.test.tsx │ │ ├── ConfirmScreen.test.tsx │ │ ├── EmailVerification.test.tsx │ │ ├── ForgotPassword.test.tsx │ │ ├── History.test.tsx │ │ ├── MaintenanceScreen.test.tsx │ │ ├── OrdersTabScreen.test.tsx │ │ ├── ProfileScreen.test.tsx │ │ ├── ProfileTwoFactorAuthScreen.test.tsx │ │ ├── RestrictedScreen.test.tsx │ │ ├── SignInScreen.test.tsx │ │ ├── SignUpScreen.test.tsx │ │ ├── VerificationScreen.test.tsx │ │ ├── WalletsScreen.test.tsx │ │ └── __snapshots__ │ │ ├── ChangeForgottenPassword.test.tsx.snap │ │ ├── ConfirmScreen.test.tsx.snap │ │ ├── EmailVerification.test.tsx.snap │ │ ├── ForgotPassword.test.tsx.snap │ │ ├── History.test.tsx.snap │ │ ├── MaintenanceScreen.test.tsx.snap │ │ ├── OrdersTabScreen.test.tsx.snap │ │ ├── ProfileScreen.test.tsx.snap │ │ ├── ProfileTwoFactorAuthScreen.test.tsx.snap │ │ ├── RestrictedScreen.test.tsx.snap │ │ ├── SignInScreen.test.tsx.snap │ │ ├── SignUpScreen.test.tsx.snap │ │ ├── VerificationScreen.test.tsx.snap │ │ └── WalletsScreen.test.tsx.snap ├── setupTests.js ├── store.ts ├── styles │ ├── buttons.pcss │ ├── colors.pcss │ ├── customizationBarColors.pcss │ ├── style.pcss │ └── themes │ │ ├── dark.pcss │ │ ├── light.pcss │ │ └── style.pcss ├── themes │ ├── ColorTitles.ts │ ├── index.ts │ └── templates │ │ ├── DarkBlue.tsx │ │ ├── DarkRed.tsx │ │ ├── Green.tsx │ │ ├── Purple.tsx │ │ └── index.ts └── translations │ ├── en.ts │ ├── index.ts │ └── nationalities.ts ├── tsconfig.json ├── tsconfig.prod.json ├── tslint.json └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "transform-es2015-modules-commonjs" 4 | ] 5 | } 6 | 7 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | *Dockerfile* 2 | *docker-compose* 3 | node_modules 4 | -------------------------------------------------------------------------------- /.domains.example: -------------------------------------------------------------------------------- 1 | localhost,.app.local,.openfinex.io,.devkube.com,.openware.work,.opendax.app 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.npmrc 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | /.idea 12 | /android 13 | /ios 14 | .gradle/ 15 | 16 | # misc 17 | .DS_Store 18 | .env.local 19 | .env.development.local 20 | .env.test.local 21 | .env.production.local 22 | .env 23 | env.js 24 | 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | index.css 29 | 30 | # environment config 31 | public/config/ 32 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v10.15.0 2 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "plugins": [ 4 | "stylelint-order" 5 | ], 6 | "rules": { 7 | "at-rule-no-unknown": null, 8 | "order/order": [ 9 | "custom-properties", 10 | "declarations" 11 | ], 12 | "order/properties-alphabetical-order": true, 13 | "no-descending-specificity": null 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 2.6.0 2 | -------------------------------------------------------------------------------- /__mocks__/fileMock.js: -------------------------------------------------------------------------------- 1 | module.exports = 'test-file-stub'; 2 | -------------------------------------------------------------------------------- /__mocks__/styleMock.js: -------------------------------------------------------------------------------- 1 | module.exports = {}; 2 | -------------------------------------------------------------------------------- /capacitor.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "appId": "odax.openware.work", 3 | "appName": "Baseapp", 4 | "bundledWebRuntime": false, 5 | "npmClient": "yarn", 6 | "webDir": "build", 7 | "plugins": { 8 | "SplashScreen": { 9 | "launchShowDuration": 0 10 | } 11 | }, 12 | "ios": { 13 | "contentInset": "always" 14 | }, 15 | "linuxAndroidStudioPath": "/snap/bin/android-studio", 16 | "cordova": {}, 17 | "server": { 18 | "hostname": "odax.openware.work" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseUrl": "http://www.app.local", 3 | "fixturesFolder": "spec/fixtures", 4 | "integrationFolder": "spec/integration", 5 | "pluginsFile": "spec/plugins/index.js", 6 | "supportFile": "spec/support/index.js", 7 | "screenshotsFolder": "cypress/screenshots", 8 | "videosFolder": "cypress/videos" 9 | } 10 | -------------------------------------------------------------------------------- /docs/releases/2.2.0.md: -------------------------------------------------------------------------------- 1 | #### Overview 2 | 3 | BaseApp frontend v2.2.0 fully compatible with Barong v2.2.20 and Peatio v2.2.19. 4 | 5 | ## New features comparing with v2.1.0: 6 | 7 | - Ability to switch between dark and light themes; 8 | - Added user's trade on recent trades component; 9 | - Improved sorting on market selector component; 10 | - List API keys immediately without providing 2FA code; 11 | - Cancelling orders by event from WS; 12 | - General UI fixes, platform stabilization and small improvements. 13 | -------------------------------------------------------------------------------- /images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg'; 2 | declare module '*.png'; 3 | declare module '*.jpg'; 4 | -------------------------------------------------------------------------------- /ionic.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Baseapp", 3 | "integrations": { 4 | "capacitor": {} 5 | }, 6 | "type": "react" 7 | } 8 | -------------------------------------------------------------------------------- /mocks/api/v2/applogic/customization/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/configs/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | 7 | { 8 | "session_expire_time": 5000, 9 | "captcha_type": "none", 10 | "captcha_id": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI", 11 | "password_min_entropy": 14 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/ping/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | 7 | { 8 | "ping": "pong" 9 | } 10 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/sessions/DELETE.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/sessions/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/sessions/POST--email=&password=&otp_code=.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 400 2 | content-type: application/json 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | 7 | 8 | {"error":"Email is missing, Password is missing, otp_code is missing, recaptcha response is missing"} 9 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 403 2 | Content-Type: application/json; charset=utf-8 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | 7 | {"error":"The account has enabled 2FA but OTP code is missing"} 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 401 2 | Content-Type: application/json; charset=utf-8 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | 7 | 8 | {"error":"Invalid Email or Password"} 9 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: content-type, x-csrf-token 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/email/generate_code/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/email/generate_code/POST--email=wrong@email.com.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 422 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | { 7 | "error": "User doesn't exist or has already been activated" 8 | } 9 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/email/generate_code/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | 201 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/password/confirm_code/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/password/confirm_code/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | 201 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/password/generate_code/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/password/generate_code/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | 201 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/identity/users/register_geetest/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | 7 | { 8 | "gt": "0c4ab8ac2ed12c1c3f4a023dff99cd87", 9 | "challenge": "25e8fe07feed0b02eb88634a7b052be4" 10 | } 11 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/GET--totp_code=.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 422 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | 6 | { 7 | "error": "This code was already used. Wait until the next time period" 8 | } 9 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/POST--totp_code=&algorithm=HS256.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 422 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | { 8 | "error": "This code was already used. Wait until the next time period" 9 | } 10 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/__/DELETE--totp_code=.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 422 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | { 8 | "error": "This code was already used. Wait until the next time period" 9 | } 10 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/__/DELETE.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 204 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/__/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 422 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | { 8 | "error": "This code was already used. Wait until the next time period" 9 | } 10 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/api_keys/__/PATCH.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | { 8 | "algorithm": "HS256", 9 | "created_at": "2019-02-14T15:56:57Z", 10 | "kid": "5c3933e8c8f97071", 11 | "scope": [], 12 | "state": "disabled", 13 | "updated_at": "2019-02-14T15:56:57Z" 14 | } 15 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/documents/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | 201 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/otp/enable/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/otp/enable/POST--code=0000000.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 422 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | { 8 | "error": "OTP code is invalid" 9 | } 10 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/otp/enable/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | 200 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/otp/generate_qrcode/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/phones/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Allow-Headers: * 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/phones/POST--phone_number=+1111.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 400 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | {"errors":["resource.phone.number_exist"]} 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/phones/POST--phone_number=+1234.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 400 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | {"errors":["resource.phone.exists"]} 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/phones/send_code/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Allow-Headers: * 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/phones/send_code/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | {"message":"Code was sent successfully via sms"} 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/phones/verify/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/phones/verify/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | 201 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/profiles/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/profiles/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Allow-Headers: * 6 | 7 | 201 8 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/users/activity/all/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/users/activity/all/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/users/me/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/users/password/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | access-control-allow-origin: * 3 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 422 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Allow-Headers: * 5 | 6 | {"errors":["password.requirements","password.password.password_strength"]} 7 | -------------------------------------------------------------------------------- /mocks/api/v2/barong/resource/users/password/PUT.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: * 7 | 8 | 201 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/bch/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: * 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/btc/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/dash/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/eth/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/eur/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currency":"eur", 10 | "balance":"1000.0", 11 | "locked":"0.0" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/eur/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/ltc/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/usd/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currency":"usd", 10 | "balance":"1000.0", 11 | "locked":"0.0" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/usd/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/xrp/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currency":"xrp", 10 | "balance":"0", 11 | "locked":"0" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/xrp/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/zar/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currency":"zar", 10 | "balance":"1000.0", 11 | "locked":"0.0" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/balances/zar/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/beneficiaries/10/DELETE.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: content-type, x-csrf-token 7 | 8 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/beneficiaries/10/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: content-type, x-csrf-token 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/beneficiaries/10/activate/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: content-type, x-csrf-token 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/beneficiaries/10/resend_pin/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: content-type, x-csrf-token 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/beneficiaries/10/resend_pin/PATCH--id=10.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | Access-Control-Allow-Headers: content-type, x-csrf-token 8 | 9 | 204 10 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/beneficiaries/10/resend_pin/PATCH.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | Access-Control-Allow-Headers: content-type, x-csrf-token 8 | 9 | 204 10 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/beneficiaries/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: content-type, x-csrf-token 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/bch/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currencies": ["bch"], 10 | "address": null, 11 | "state": "pending" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/bch/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/btc/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currencies": ["btc"], 10 | "address": "2NCimTNGnbm92drX7ARcwBKw6rvr456VWym", 11 | "state": "active" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/btc/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/dash/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currencies": ["dash"], 10 | "address": "XpESxaUmonkq8RaLLp46Brx2K39ggQe226", 11 | "state": "active" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/dash/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/eth/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currencies": ["eth", "ltc"], 10 | "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", 11 | "state": "active" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/eth/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/ltc/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currencies": ["eth", "ltc"], 10 | "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", 11 | "state": "active" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/ltc/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/xrp/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "currencies": ["xrp"], 10 | "address": null, 11 | "state": "pending" 12 | } 13 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposit_address/xrp/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/deposits/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/history/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/account/withdraws/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/market/orders/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | Access-Control-Allow-Headers: * 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/market/orders/__/cancel/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | Content-Type: application/json; charset=utf-8 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | Access-Control-Allow-Headers: * 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/market/orders/__/cancel/POST.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 201 2 | Content-Type: application/json; charset=utf-8 3 | access-control-allow-origin: * 4 | access-control-allow-methods: GET, POST, PUT, PATCH, DELETE 5 | access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 6 | Access-Control-Allow-Headers: * 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/market/orders/cancel/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/market/trades/GET--market=eurusd.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | [] -------------------------------------------------------------------------------- /mocks/api/v2/peatio/market/trades/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | 7 | [ 8 | {"id":35,"price":10894000,"amount":0.1164,"total":1268061.6,"market":"btczar","created_at":1594951964,"taker_type":"buy"}, 9 | {"id":34,"price":10894000,"amount":0.2414,"total":2629811.6,"market":"btczar","created_at":1594951957,"taker_type":"sell"} 10 | ] 11 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/market/trades/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/bchzar/depth/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import './script.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/bchzar/depth/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/bchzar/k-line/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import '../../k-line.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/bchzar/k-line/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/bchzar/trades/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/btczar/depth/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import './script.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/btczar/depth/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/btczar/k-line/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import '../../k-line.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/btczar/k-line/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/btczar/trades/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/dashbtc/depth/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | cContent-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import './script.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/dashbtc/depth/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/dashbtc/k-line/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import '../../k-line.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/dashbtc/k-line/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/dashbtc/trades/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/ethbtc/depth/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import './script.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/ethbtc/depth/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/ethbtc/k-line/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import '../../k-line.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/ethbtc/k-line/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/ethbtc/trades/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/eurusd/depth/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/eurusd/k-line/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import '../../k-line.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/eurusd/k-line/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/eurusd/trades/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/tickers/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | #import './script.js'; 9 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/markets/tickers/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/member-levels/GET.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Content-Type: application/json; charset=utf-8 3 | Access-Control-Allow-Origin: * 4 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 5 | Access-Control-Max-Age: 3600 6 | Access-Control-Allow-Credentials: true 7 | 8 | { 9 | "deposit": { 10 | "minimum_level": 3 11 | }, 12 | "withdraw": { 13 | "minimum_level": 3 14 | }, 15 | "trading": { 16 | "minimum_level": 3 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /mocks/api/v2/peatio/public/member-levels/OPTIONS.mock: -------------------------------------------------------------------------------- 1 | HTTP/2 200 2 | Access-Control-Allow-Origin: * 3 | Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD 4 | Access-Control-Max-Age: 3600 5 | Access-Control-Allow-Credentials: true 6 | -------------------------------------------------------------------------------- /mocks/markets.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | 'BTC/ZAR', 3 | 'BCH/ZAR', 4 | 'ETH/BTC', 5 | 'DASH/BTC', 6 | 'EUR/USD', 7 | ] 8 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | include: [ 3 | 'node_modules', 4 | ], 5 | plugins: [ 6 | require('postcss-import'), 7 | require('postcss-nested'), 8 | require('postcss-hexrgba'), 9 | require('autoprefixer'), 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[1],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[10],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[11],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[12],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css: -------------------------------------------------------------------------------- 1 | .dialog-2APwxL3O-{display:flex;min-width:280px;text-align:left;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} -------------------------------------------------------------------------------- /public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-2APwxL3O-{display:flex;min-width:280px;text-align:right;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} -------------------------------------------------------------------------------- /public/charting_library/static/bundles/16.e0d00f8a564954896734.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[16],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[18],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/19.c5542d290eefbb001433.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[19],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/2.195070ea59b3395625da.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[2],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/20.2416da4fc4c075b56691.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[20],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/21.fc856808959a5b8734f7.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[21],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/22.c118eafc7686081984c8.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[22],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/23.7c4be219df640cb3880c.css: -------------------------------------------------------------------------------- 1 | .dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} -------------------------------------------------------------------------------- /public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} -------------------------------------------------------------------------------- /public/charting_library/static/bundles/23.e89d09694523563b8f86.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[23],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/31.d081df3316799b489847.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[31],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[32],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/33.4a74c62095be3045c87e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[33],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[34],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[35],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[36],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css: -------------------------------------------------------------------------------- 1 | .star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} -------------------------------------------------------------------------------- /public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css: -------------------------------------------------------------------------------- 1 | .star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} -------------------------------------------------------------------------------- /public/charting_library/static/bundles/37.1735365b01406a8d696d.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[37],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[38],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[39],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/40.42bd9598272e9dd24457.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[40],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/41.11c024e8e0504741fd66.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[41],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/42.0491acaaf55887f7fcb3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[42],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/43.4ae432f1b8259dbfd0e5.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[43],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/44.7aabc64d3dfb54c85d60.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[44],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/45.6c1fc3ac2f6063249f97.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[45],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/46.75a0e6fecbc3c92a6bc7.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[46],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/47.773635a99e184d6dc131.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[47],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/48.9d08141ee2d55bcad3e7.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[48],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/49.929acbc67c2613c57f58.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[49],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/50.2c50aad369bf63f77061.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[50],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/51.30c5804303a9f1c455e3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[51],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/52.c212ca3684de16c6f115.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[52],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/53.7217742e39b70fc9d431.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[53],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/54.9eb4ca2a30197d95fe82.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[54],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/55.7707e6ae9f2ec8cfb656.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[55],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/56.83cd8456e872f49059c3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[56],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/57.6384b62456dc4fed6ffb.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[57],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/58.8077d6b199609737b3d5.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[58],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/6.902d5f3923d45b49b876.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[6],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/7.fc0941206f7b7d32812d.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[7],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/8.62bd4ee21281906a7019.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[8],[]]); -------------------------------------------------------------------------------- /public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur -------------------------------------------------------------------------------- /public/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur -------------------------------------------------------------------------------- /public/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur -------------------------------------------------------------------------------- /public/charting_library/static/bundles/fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff -------------------------------------------------------------------------------- /public/charting_library/static/bundles/fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2 -------------------------------------------------------------------------------- /public/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur -------------------------------------------------------------------------------- /public/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur -------------------------------------------------------------------------------- /public/charting_library/static/bundles/opacity-pattern.a6506134daec7169f68f563f084a9d41.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/charting_library/static/bundles/precache-manifest.60144109bbe17651b1eb050c29e4f6f4.js: -------------------------------------------------------------------------------- 1 | self.__precacheManifest = [ 2 | ]; -------------------------------------------------------------------------------- /public/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur -------------------------------------------------------------------------------- /public/charting_library/static/images/balloon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/balloon.png -------------------------------------------------------------------------------- /public/charting_library/static/images/bar-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/bar-loader.gif -------------------------------------------------------------------------------- /public/charting_library/static/images/button-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/button-bg.png -------------------------------------------------------------------------------- /public/charting_library/static/images/charting_library/logo-widget-copyright-faded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/charting_library/logo-widget-copyright-faded.png -------------------------------------------------------------------------------- /public/charting_library/static/images/charting_library/logo-widget-copyright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/charting_library/logo-widget-copyright.png -------------------------------------------------------------------------------- /public/charting_library/static/images/controlll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/controlll.png -------------------------------------------------------------------------------- /public/charting_library/static/images/delayed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/delayed.png -------------------------------------------------------------------------------- /public/charting_library/static/images/dialogs/checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/dialogs/checkbox.png -------------------------------------------------------------------------------- /public/charting_library/static/images/dialogs/close-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/dialogs/close-flat.png -------------------------------------------------------------------------------- /public/charting_library/static/images/dialogs/large-slider-handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/dialogs/large-slider-handle.png -------------------------------------------------------------------------------- /public/charting_library/static/images/dialogs/linewidth-slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/dialogs/linewidth-slider.png -------------------------------------------------------------------------------- /public/charting_library/static/images/dialogs/opacity-slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/dialogs/opacity-slider.png -------------------------------------------------------------------------------- /public/charting_library/static/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/icons.png -------------------------------------------------------------------------------- /public/charting_library/static/images/prediction-clock-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/prediction-clock-black.png -------------------------------------------------------------------------------- /public/charting_library/static/images/prediction-clock-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/prediction-clock-white.png -------------------------------------------------------------------------------- /public/charting_library/static/images/prediction-failure-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/prediction-failure-white.png -------------------------------------------------------------------------------- /public/charting_library/static/images/prediction-success-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/prediction-success-white.png -------------------------------------------------------------------------------- /public/charting_library/static/images/price_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/price_label.png -------------------------------------------------------------------------------- /public/charting_library/static/images/select-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/select-bg.png -------------------------------------------------------------------------------- /public/charting_library/static/images/svg/chart/bucket2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/charting_library/static/images/svg/chart/font.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/charting_library/static/images/svg/chart/pencil2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/charting_library/static/images/tvcolorpicker-bg-gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/tvcolorpicker-bg-gradient.png -------------------------------------------------------------------------------- /public/charting_library/static/images/tvcolorpicker-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/tvcolorpicker-bg.png -------------------------------------------------------------------------------- /public/charting_library/static/images/tvcolorpicker-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/tvcolorpicker-check.png -------------------------------------------------------------------------------- /public/charting_library/static/images/tvcolorpicker-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/charting_library/static/images/tvcolorpicker-sprite.png -------------------------------------------------------------------------------- /public/css/theme.css: -------------------------------------------------------------------------------- 1 | :root { 2 | /* Override application styles by redeclaring variables using !important rule */ 3 | 4 | /* Example: */ 5 | /* --text: blue !important; */ 6 | } 7 | -------------------------------------------------------------------------------- /public/css/tradingview.css: -------------------------------------------------------------------------------- 1 | html.theme-dark .chart-page { 2 | background-color: var(--body-background-color); 3 | } 4 | 5 | html.theme-dark .group-wWM3zP_M- { 6 | background-color: transparent; 7 | } 8 | -------------------------------------------------------------------------------- /public/datafeeds/README.md: -------------------------------------------------------------------------------- 1 | # Charting Library Datafeeds 2 | 3 | This folder contains implementation of Charting Library Datafeeds. 4 | -------------------------------------------------------------------------------- /public/datafeeds/udf/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /public/datafeeds/udf/lib/iquotes-provider.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/datafeeds/udf/lib/iquotes-provider.js -------------------------------------------------------------------------------- /public/datafeeds/udf/src/iquotes-provider.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/datafeeds/udf/src/iquotes-provider.js -------------------------------------------------------------------------------- /public/datafeeds/udf/src/iquotes-provider.ts: -------------------------------------------------------------------------------- 1 | import { QuoteData } from '../../../charting_library/datafeed-api'; 2 | 3 | import { 4 | UdfOkResponse, 5 | } from './helpers'; 6 | 7 | export interface UdfQuotesResponse extends UdfOkResponse { 8 | d: QuoteData[]; 9 | } 10 | 11 | export interface IQuotesProvider { 12 | // tslint:disable-next-line:variable-name tv-variable-name 13 | getQuotes(symbols: string[]): Promise; 14 | } 15 | -------------------------------------------------------------------------------- /public/datafeeds/udf/src/polyfills.es6: -------------------------------------------------------------------------------- 1 | import 'promise-polyfill'; 2 | import 'whatwg-fetch'; 3 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/public/favicon.ico -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": "./index.html", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/robots.txt -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export REACT_APP_GIT_SHA=$(git rev-parse --short HEAD) 4 | export BUILD_DOMAIN=$(test -e .domains && cat .domains) 5 | [ -n "$BUILD_EXPIRE" ] && export REACT_APP_BUILD_EXPIRE=$(date -d "+${BUILD_EXPIRE}" +%s000) 6 | 7 | yarn build 8 | -------------------------------------------------------------------------------- /spec/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } -------------------------------------------------------------------------------- /spec/fixtures/profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 8739, 3 | "name": "Jane", 4 | "email": "jane@example.com" 5 | } -------------------------------------------------------------------------------- /spec/integration/login_spec.js: -------------------------------------------------------------------------------- 1 | describe('My First Test', function() { 2 | it('clicks the link "Trade"', function() { 3 | cy.visit('/') 4 | cy.contains('Trade').click() 5 | }) 6 | 7 | it('Can login', function() { 8 | cy.contains('Sign In').click() 9 | cy.get('input[type=email]').type('admin@barong.io') 10 | cy.get('input[type=password]').type('0lDHd9ufs9t@') 11 | cy.get('input[type=submit]').click() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /src/assets/images/ChevronIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | interface ChevronIconProps { 4 | className?: string; 5 | } 6 | 7 | export const ChevronIcon: React.FC = (props: ChevronIconProps) => ( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /src/assets/images/customization/ArrowIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | export const ArrowIcon = () => { 4 | return ( 5 | 6 | 7 | 8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /src/assets/images/customization/SettingsIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | export const SettingsIcon = () => { 4 | return ( 5 | 6 | 7 | 8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /src/assets/images/kyc/CheckBigIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | export const CheckBigIcon = () => { 4 | return ( 5 | 6 | 7 | 8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /src/assets/images/kyc/CheckIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | export const CheckIcon = () => { 4 | return ( 5 | 6 | 7 | 8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /src/assets/images/landing/TradingUIFullBG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/assets/images/landing/TradingUIFullBG.png -------------------------------------------------------------------------------- /src/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[1],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[10],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/11.dd520838f92e45cd91e3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[11],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[12],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/12.87f9777d9fe2086ce090.css: -------------------------------------------------------------------------------- 1 | .dialog-2APwxL3O-{display:flex;min-width:280px;text-align:left;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} -------------------------------------------------------------------------------- /src/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-2APwxL3O-{display:flex;min-width:280px;text-align:right;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} -------------------------------------------------------------------------------- /src/charting_library/static/bundles/16.e0d00f8a564954896734.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[16],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[18],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/19.c5542d290eefbb001433.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[19],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/2.195070ea59b3395625da.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[2],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/20.2416da4fc4c075b56691.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[20],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/21.fc856808959a5b8734f7.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[21],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/22.c118eafc7686081984c8.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[22],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/23.7c4be219df640cb3880c.css: -------------------------------------------------------------------------------- 1 | .dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} -------------------------------------------------------------------------------- /src/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} -------------------------------------------------------------------------------- /src/charting_library/static/bundles/23.e89d09694523563b8f86.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[23],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/31.d081df3316799b489847.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[31],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[32],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/33.4a74c62095be3045c87e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[33],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/34.17e0ce399a577f17ba55.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[34],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/35.58433cec10095e3c1b7e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[35],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[36],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css: -------------------------------------------------------------------------------- 1 | .star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} -------------------------------------------------------------------------------- /src/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css: -------------------------------------------------------------------------------- 1 | .star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} -------------------------------------------------------------------------------- /src/charting_library/static/bundles/37.1735365b01406a8d696d.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[37],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[38],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[39],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/40.42bd9598272e9dd24457.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[40],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/41.11c024e8e0504741fd66.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[41],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/42.0491acaaf55887f7fcb3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[42],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/43.4ae432f1b8259dbfd0e5.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[43],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/44.7aabc64d3dfb54c85d60.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[44],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/45.6c1fc3ac2f6063249f97.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[45],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/46.75a0e6fecbc3c92a6bc7.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[46],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/47.773635a99e184d6dc131.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[47],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/48.9d08141ee2d55bcad3e7.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[48],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/49.929acbc67c2613c57f58.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[49],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/50.2c50aad369bf63f77061.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[50],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/51.30c5804303a9f1c455e3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[51],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/52.c212ca3684de16c6f115.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[52],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/53.7217742e39b70fc9d431.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[53],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/54.9eb4ca2a30197d95fe82.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[54],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/55.7707e6ae9f2ec8cfb656.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[55],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/56.83cd8456e872f49059c3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[56],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/57.6384b62456dc4fed6ffb.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[57],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/58.8077d6b199609737b3d5.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[58],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/6.902d5f3923d45b49b876.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[6],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/7.fc0941206f7b7d32812d.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[7],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/8.62bd4ee21281906a7019.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[8],[]]); -------------------------------------------------------------------------------- /src/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur -------------------------------------------------------------------------------- /src/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur -------------------------------------------------------------------------------- /src/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur -------------------------------------------------------------------------------- /src/charting_library/static/bundles/fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff -------------------------------------------------------------------------------- /src/charting_library/static/bundles/fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2 -------------------------------------------------------------------------------- /src/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur -------------------------------------------------------------------------------- /src/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur -------------------------------------------------------------------------------- /src/charting_library/static/bundles/opacity-pattern.a6506134daec7169f68f563f084a9d41.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/charting_library/static/bundles/precache-manifest.60144109bbe17651b1eb050c29e4f6f4.js: -------------------------------------------------------------------------------- 1 | self.__precacheManifest = [ 2 | ]; -------------------------------------------------------------------------------- /src/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur -------------------------------------------------------------------------------- /src/charting_library/static/images/balloon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/balloon.png -------------------------------------------------------------------------------- /src/charting_library/static/images/bar-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/bar-loader.gif -------------------------------------------------------------------------------- /src/charting_library/static/images/button-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/button-bg.png -------------------------------------------------------------------------------- /src/charting_library/static/images/charting_library/logo-widget-copyright-faded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/charting_library/logo-widget-copyright-faded.png -------------------------------------------------------------------------------- /src/charting_library/static/images/charting_library/logo-widget-copyright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/charting_library/logo-widget-copyright.png -------------------------------------------------------------------------------- /src/charting_library/static/images/controlll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/controlll.png -------------------------------------------------------------------------------- /src/charting_library/static/images/delayed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/delayed.png -------------------------------------------------------------------------------- /src/charting_library/static/images/dialogs/checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/dialogs/checkbox.png -------------------------------------------------------------------------------- /src/charting_library/static/images/dialogs/close-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/dialogs/close-flat.png -------------------------------------------------------------------------------- /src/charting_library/static/images/dialogs/large-slider-handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/dialogs/large-slider-handle.png -------------------------------------------------------------------------------- /src/charting_library/static/images/dialogs/linewidth-slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/dialogs/linewidth-slider.png -------------------------------------------------------------------------------- /src/charting_library/static/images/dialogs/opacity-slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/dialogs/opacity-slider.png -------------------------------------------------------------------------------- /src/charting_library/static/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/icons.png -------------------------------------------------------------------------------- /src/charting_library/static/images/prediction-clock-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/prediction-clock-black.png -------------------------------------------------------------------------------- /src/charting_library/static/images/prediction-clock-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/prediction-clock-white.png -------------------------------------------------------------------------------- /src/charting_library/static/images/prediction-failure-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/prediction-failure-white.png -------------------------------------------------------------------------------- /src/charting_library/static/images/prediction-success-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/prediction-success-white.png -------------------------------------------------------------------------------- /src/charting_library/static/images/price_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/price_label.png -------------------------------------------------------------------------------- /src/charting_library/static/images/select-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/select-bg.png -------------------------------------------------------------------------------- /src/charting_library/static/images/svg/chart/bucket2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/charting_library/static/images/svg/chart/font.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/charting_library/static/images/svg/chart/large-slider-handle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/charting_library/static/images/svg/chart/pencil2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/charting_library/static/images/tvcolorpicker-bg-gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/tvcolorpicker-bg-gradient.png -------------------------------------------------------------------------------- /src/charting_library/static/images/tvcolorpicker-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/tvcolorpicker-bg.png -------------------------------------------------------------------------------- /src/charting_library/static/images/tvcolorpicker-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/tvcolorpicker-check.png -------------------------------------------------------------------------------- /src/charting_library/static/images/tvcolorpicker-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openware/baseapp/f719faf435ada93e1a7ab1f506748344b3aadd33/src/charting_library/static/images/tvcolorpicker-sprite.png -------------------------------------------------------------------------------- /src/components/Captcha/Captcha.pcss: -------------------------------------------------------------------------------- 1 | .pg-captcha { 2 | &--recaptcha { 3 | display: flex; 4 | justify-content: center; 5 | margin: var(--email-form-padding); 6 | } 7 | 8 | &--geetest { 9 | margin: 10px calc(var(--big-gap) * 0.9); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/CombinedOrderBook/__snapshots__/CombinedOrderBook.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`CombinedOrderBook should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/CopyableTextField/__snapshots__/CopyableTextField.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`CopyableTextField should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/CryptoIcon/CryptoIcon.pcss: -------------------------------------------------------------------------------- 1 | .cr-crypto-icon { 2 | color: var(--base); 3 | } 4 | -------------------------------------------------------------------------------- /src/components/CryptoIcon/__snapshots__/CryptoIcon.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`CryptoIcon should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/CryptoIcon/readme.md: -------------------------------------------------------------------------------- 1 | Example of usage: 2 | 3 | ```js 4 |
5 | 6 | 7.40 7 | 8 | 9 |
10 | ``` -------------------------------------------------------------------------------- /src/components/CustomInput/__snapshots__/CustomInput.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`CustomInput component should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/Customization/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Themes'; 2 | export * from './Fonts'; 3 | export * from './Images'; 4 | export * from './Spacing'; 5 | -------------------------------------------------------------------------------- /src/components/Customization/style.pcss: -------------------------------------------------------------------------------- 1 | @import "./Themes/Themes.pcss"; 2 | @import "./Themes/ColorSettings/ColorSettings.pcss"; 3 | -------------------------------------------------------------------------------- /src/components/Decimal/Decimal.pcss: -------------------------------------------------------------------------------- 1 | .cr-decimal__opacity { 2 | opacity: 0.6; 3 | } 4 | -------------------------------------------------------------------------------- /src/components/Decimal/readme.md: -------------------------------------------------------------------------------- 1 | Decimal format example: 2 | 3 | ```js 4 | const fixed = 5; 5 | const prevValue = '1234.56333'; 6 | 7 | 1234.56999 8 | ``` 9 | -------------------------------------------------------------------------------- /src/components/DepositCrypto/__snapshots__/DepositCrypto.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`DepositCrypto should match snapshot 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/DepositFiat/__snapshots__/DepositFiat.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`DepositFiat should match snapshot 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/Documentation/Documentation.pcss: -------------------------------------------------------------------------------- 1 | @import "./Endpoints/DocumentationEndpoints.pcss"; 2 | @import "./Header/DocumentationHeader.pcss"; 3 | @import "./Models/DocumentationModels.pcss"; 4 | -------------------------------------------------------------------------------- /src/components/Documentation/Endpoints/DocumentationEndpoints.pcss: -------------------------------------------------------------------------------- 1 | .pg-documentation-endpoints { 2 | padding: 0 20px 20px 20px; 3 | } 4 | -------------------------------------------------------------------------------- /src/components/Documentation/Models/DocumentationModels.pcss: -------------------------------------------------------------------------------- 1 | @import "./Item/DocumentationModelsItem.pcss"; 2 | 3 | .pg-documentation-models { 4 | padding: 0 20px 20px 20px; 5 | } 6 | -------------------------------------------------------------------------------- /src/components/Documentation/Models/Item/DocumentationModelsItem.pcss: -------------------------------------------------------------------------------- 1 | .pg-documentation-models-item { 2 | &:last-child { 3 | margin-bottom: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/components/Documentation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Header'; 2 | export * from './Endpoints'; 3 | export * from './Models'; 4 | -------------------------------------------------------------------------------- /src/components/Dropdown/__snapshots__/Dropdown.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Dropdown #render should render dropdown 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/Dropdown/readme.md: -------------------------------------------------------------------------------- 1 | 2 | ```js 3 | const testData = ['Limit', 'Market']; 4 | 5 | const onSelect = (value) => console.log(value); 6 | 7 | 11 | 12 | ``` 13 | -------------------------------------------------------------------------------- /src/components/EmailForm/__snapshots__/EmailForm.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`EmailForm component should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/EmailForm/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/components/FilterInput/__snapshots__/FilterInput.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`FilterInput should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/GridItem/__snapshots__/GriItem.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`GridItem should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/GridItem/readme.md: -------------------------------------------------------------------------------- 1 | GridItem example: 2 | 3 | ```js 4 |
5 | Child Body 6 |
7 | ``` 8 | -------------------------------------------------------------------------------- /src/components/History/History.pcss: -------------------------------------------------------------------------------- 1 | .cr-history { 2 | &-action { 3 | background: transparent; 4 | 5 | &--buy { 6 | color: var(--history-action-buy); 7 | } 8 | 9 | &--sell { 10 | color: var(--history-action-sell); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/components/History/__snapshots__/History.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`History should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/MarketDepths/MarketDepths.pcss: -------------------------------------------------------------------------------- 1 | .cr-market-depths { 2 | box-sizing: border-box; 3 | height: 100%; 4 | max-width: 100%; 5 | } 6 | -------------------------------------------------------------------------------- /src/components/MarketDepths/__snapshots__/MarketDepths.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`CryptoIcon should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/Markets/__snapshots__/Markets.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Markets should render 1`] = `ShallowWrapper {}`; 4 | 5 | exports[`Markets should render empty data 1`] = `ShallowWrapper {}`; 6 | -------------------------------------------------------------------------------- /src/components/Markets/readme.md: -------------------------------------------------------------------------------- 1 | ```js 2 | const data = [ 3 | ['eth/btc', '0.0710000'], 4 | ['xpr/btc', '0.0710000'], 5 | ['xpr/ltc', '0.0710000'], 6 | ['usdt/btc', '0.0710000'], 7 | ['ltc/btc', '0.0710000'], 8 | ]; 9 | 10 | const headers = ['Pair', 'Price', '24h Change']; 11 | 12 | const index = 0; 13 | 14 | const onSelect = (index) => console.log(index); 15 | 16 | 17 | ``` 18 | -------------------------------------------------------------------------------- /src/components/MetaMaskButton/MetaMaskButton.pcss: -------------------------------------------------------------------------------- 1 | .pg-metamask { 2 | align-items: center; 3 | display: flex; 4 | height: 40px; 5 | justify-content: center; 6 | margin-top: 30px; 7 | 8 | &__logo-icon { 9 | cursor: pointer; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Modal/__snapshots__/Modal.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Basic Modal should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/OpenOrders/__snapshots__/OpenOrders.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`OpenOrders should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/Order/__snapshots__/Order.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Order should match snapshot 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/OrderBook/OrderBook.pcss: -------------------------------------------------------------------------------- 1 | .cr-order-book { 2 | tr { 3 | td:nth-child(1) { 4 | text-align: left; 5 | } 6 | 7 | td:nth-child(2) { 8 | width: 100%; 9 | } 10 | 11 | td:nth-child(3) { 12 | text-align: right; 13 | } 14 | 15 | th:nth-child(1) { 16 | text-align: left; 17 | } 18 | 19 | th:nth-child(3) { 20 | text-align: right; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/components/OrderBook/__snapshots__/OrderBook.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`History should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/OrderForm/__snapshots__/OrderForm.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`OrderForm should match snapshot 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/OrderInput/__snapshots__/OrderInput.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`InputBlock should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/OrderInput/readme.md: -------------------------------------------------------------------------------- 1 | InputBlock example: 2 | 3 | ```js 4 | 5 | ``` 6 | -------------------------------------------------------------------------------- /src/components/Pagination/Pagination.pcss: -------------------------------------------------------------------------------- 1 | .pg-history-elem__pagination { 2 | align-items: center; 3 | display: flex; 4 | justify-content: flex-end; 5 | padding: calc(var(--gap) * 2.5) 0 0; 6 | 7 | button { 8 | background: none; 9 | border: none; 10 | cursor: pointer; 11 | margin-left: calc(var(--gap) * 4.5); 12 | outline: none; 13 | padding: 0; 14 | 15 | &:disabled { 16 | cursor: default; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/components/Pagination/__snapshots__/Pagination.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Pagination should matches snapshot 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/Pagination/readme.md: -------------------------------------------------------------------------------- 1 | Example of usage: 2 | 3 | ```js 4 | const onClickPrevPage = () => console.log(1); 5 | 6 | const onClickNextPage = () => console.log(2); 7 | 8 | 17 | ``` -------------------------------------------------------------------------------- /src/components/PasswordStrengthMeter/__snapshots__/PasswordStrengthMeter.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`PasswordStrengthMeter component should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/PasswordStrengthTip/PasswordStrengthTip.pcss: -------------------------------------------------------------------------------- 1 | .pg-password-strength-tip { 2 | display: flex; 3 | flex-direction: column; 4 | padding-top: 14px; 5 | 6 | &-title { 7 | padding-bottom: 6px; 8 | } 9 | 10 | &-text { 11 | color: var(--primary-text-color); 12 | opacity: 0.72; 13 | padding-bottom: 2px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/components/PasswordStrengthTip/__snapshots__/PasswordStrengthTip.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`PasswordStrengthMeter component should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/PercentageButton/__snapshots__/PercentageButton.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Close Button should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/PercentageButton/readme.md: -------------------------------------------------------------------------------- 1 | Example of usage: 2 | 3 | ```js 4 | const onClick = label => alert(`Clicked: ${label}`); 5 | 6 |
7 | 8 | 9 |
10 | ``` 11 | -------------------------------------------------------------------------------- /src/components/QRCode/QRCode.pcss: -------------------------------------------------------------------------------- 1 | .qr-code { 2 | svg { 3 | border: 1px solid var(--base-bright); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/components/QRCode/__snapshots__/QRCode.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`QRCode renders correctly 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/QRCode/readme.md: -------------------------------------------------------------------------------- 1 | QRCode example: 2 | 3 | ```js 4 | const address = 'kjsnvjkrv3434jnv'; 5 | 6 | 10 | ``` 11 | -------------------------------------------------------------------------------- /src/components/SignIn/__snapshots__/SignIn.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`SignIn component should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/SignUp/__snapshots__/SignUp.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`SignUp component should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/SummaryField/__snapshots__/SummaryField.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`SummaryField should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/TabPanel/__snapshots__/TabPanel.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`TabPanel should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/TwoFactorAuth/__snapshots__/TwoFactorAuth.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`TwoFactorAuth component should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/WalletItem/__snapshots__/WalletItem.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`WalletItem #render should match snapshot 1`] = `ReactWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/components/WalletList/WalletList.pcss: -------------------------------------------------------------------------------- 1 | .cr-wallet-list { 2 | background-color: var(--background); 3 | box-sizing: border-box; 4 | list-style: none; 5 | overflow-y: auto; 6 | padding: 0; 7 | } 8 | -------------------------------------------------------------------------------- /src/components/WalletList/__snapshots__/WalletList.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`WalletList should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/containers/Confirm/Identity/Identity.pcss: -------------------------------------------------------------------------------- 1 | .pg-confirm__content-identity { 2 | &__forms { 3 | align-items: flex-start; 4 | display: flex; 5 | flex-direction: column; 6 | height: 100%; 7 | height: max-content; 8 | justify-content: flex-start; 9 | margin: 0; 10 | padding: 0; 11 | width: 100%; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/containers/Confirm/Phone/Phone.pcss: -------------------------------------------------------------------------------- 1 | .pg-confirm__content-phone { 2 | display: flex; 3 | flex-direction: column; 4 | max-width: 380px; 5 | width: 100vw; 6 | 7 | &-col { 8 | margin: 0; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/containers/Confirm/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Address'; 2 | export * from './Documents'; 3 | export * from './Identity'; 4 | export * from './Phone'; 5 | -------------------------------------------------------------------------------- /src/containers/Header/arrows/arrowBottom.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/Header/arrows/arrowBottomLight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/Header/arrows/arrowRight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/Header/arrows/arrowRightLight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/Header/back.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/Header/backLight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/ModalWithdrawConfirmation/ModalWithdrawConfirmation.pcss: -------------------------------------------------------------------------------- 1 | .modal-body__withdraw-confirm { 2 | text-align: center; 3 | } 4 | 5 | .modal-footer__withdraw-confirm { 6 | display: flex; 7 | justify-content: space-between; 8 | } 9 | -------------------------------------------------------------------------------- /src/containers/NavBar/close-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/NavBar/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/containers/NavBar/open-avatar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/containers/NavBar/open-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/OpenOrders/__snapshots__/OpenOrders.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`OpenOrders should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/containers/ProfileAuthDetails/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/RecentTrades/__snapshots__/RecentTrades.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`RecentTradesComponent should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/containers/ToolBar/icons/hidden.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/containers/Wallets/FailIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | 4 | export const FailIcon = () => { 5 | return ( 6 | 7 | 8 | 9 | 10 | 11 | ); 12 | }; 13 | -------------------------------------------------------------------------------- /src/containers/WalletsFetch/__snapshots__/WalletsFetch.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`WalletsFetch component should match snapshot 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/custom/helpers/layout.ts: -------------------------------------------------------------------------------- 1 | export const customLayouts = {}; 2 | -------------------------------------------------------------------------------- /src/custom/styles/colors.pcss: -------------------------------------------------------------------------------- 1 | /* variables overwriting */ 2 | -------------------------------------------------------------------------------- /src/custom/styles/fonts.pcss: -------------------------------------------------------------------------------- 1 | /* custom fonts */ 2 | -------------------------------------------------------------------------------- /src/custom/styles/style.pcss: -------------------------------------------------------------------------------- 1 | @import "./fonts.pcss"; 2 | @import "./themes/style.pcss"; 3 | @import "./colors.pcss"; 4 | -------------------------------------------------------------------------------- /src/custom/styles/themes/style.pcss: -------------------------------------------------------------------------------- 1 | /* custom themes */ 2 | -------------------------------------------------------------------------------- /src/custom/translations/en.ts: -------------------------------------------------------------------------------- 1 | export const en = {}; 2 | -------------------------------------------------------------------------------- /src/custom/translations/index.ts: -------------------------------------------------------------------------------- 1 | import { ru } from './ru'; 2 | 3 | export const customLanguageMap = { 4 | ru, 5 | }; 6 | -------------------------------------------------------------------------------- /src/custom/translations/nationalities.ts: -------------------------------------------------------------------------------- 1 | export const customNationalitiesNames = {}; 2 | -------------------------------------------------------------------------------- /src/filters/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FilterPrice'; 2 | -------------------------------------------------------------------------------- /src/helpers/accumulateVolume.ts: -------------------------------------------------------------------------------- 1 | export const accumulateVolume = array => { 2 | const total: number[] = []; 3 | array.map(item => { 4 | return item[1]; 5 | }).reduce((accumulator, currentValue, currentIndex) => { 6 | total[currentIndex] = Number(accumulator) + Number(currentValue); 7 | 8 | return (Number(accumulator) + Number(currentValue)); 9 | }, 0); 10 | 11 | return total; 12 | }; 13 | -------------------------------------------------------------------------------- /src/helpers/areEqualProps.ts: -------------------------------------------------------------------------------- 1 | const areEqualProps = (prevProps, nextProps) => { 2 | const keys = Object.keys(prevProps); 3 | 4 | return keys.every(key => prevProps[key] === nextProps[key]); 5 | }; 6 | 7 | export { 8 | areEqualProps, 9 | }; 10 | -------------------------------------------------------------------------------- /src/helpers/areEqualSelectedProps.ts: -------------------------------------------------------------------------------- 1 | const areEqualSelectedProps = (key, props) => (prevProps, nextProps) => { 2 | return props.every(prop => prevProps[key][prop] === nextProps[key][prop]); 3 | }; 4 | 5 | export { 6 | areEqualSelectedProps, 7 | }; 8 | -------------------------------------------------------------------------------- /src/helpers/calcMaxVolume.ts: -------------------------------------------------------------------------------- 1 | import { accumulateVolume } from './accumulateVolume'; 2 | 3 | export const calcMaxVolume = (bids: string[][], asks: string[][]) => { 4 | return Math.max(...accumulateVolume(bids), ...accumulateVolume(asks)); 5 | }; 6 | -------------------------------------------------------------------------------- /src/helpers/cleanPositiveFloatInput.ts: -------------------------------------------------------------------------------- 1 | export const cleanPositiveFloatInput = (text: string) => { 2 | let cleanInput = text 3 | .replace(',', '.') 4 | .replace(/-+/, '') 5 | .replace(/^0+/, '0') 6 | .replace(/\.+/, '.') 7 | .replace(/^0+([1-9])/, '$1'); 8 | 9 | if (cleanInput[0] === '.') { 10 | cleanInput = `0${cleanInput}`; 11 | } 12 | 13 | return cleanInput; 14 | }; 15 | -------------------------------------------------------------------------------- /src/helpers/convertRgbToHex.ts: -------------------------------------------------------------------------------- 1 | const componentToHex = (c: string) => { 2 | const hex = (+c).toString(16); 3 | 4 | return hex.length === 1 ? `0${hex}` : hex; 5 | }; 6 | 7 | export const convertRgbToHex = (rgb: string): string => { 8 | const colorCodes = rgb.replace(' ', '').split(','); 9 | 10 | if (colorCodes.length > 2) { 11 | return `#${componentToHex(colorCodes[0])}${componentToHex(colorCodes[1])}${componentToHex(colorCodes[2])}`; 12 | } 13 | 14 | return ''; 15 | }; 16 | 17 | -------------------------------------------------------------------------------- /src/helpers/copy.ts: -------------------------------------------------------------------------------- 1 | export const copy = (id: string) => { 2 | const copyText: HTMLInputElement | null = document.querySelector(`#${id}`); 3 | 4 | if (copyText) { 5 | copyText.select(); 6 | 7 | document.execCommand('copy'); 8 | (window.getSelection() as any).removeAllRanges(); // tslint:disable-line 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /src/helpers/filterData.ts: -------------------------------------------------------------------------------- 1 | const consist = (a, b) => { 2 | return a.toLowerCase().indexOf(b.toLowerCase()) !== -1; 3 | }; 4 | 5 | export const handleFilter = (item, term) => { 6 | return consist(item.currency, term); 7 | }; 8 | -------------------------------------------------------------------------------- /src/helpers/getCsrfToken.ts: -------------------------------------------------------------------------------- 1 | export const getCsrfToken = () => localStorage.getItem('csrfToken') || undefined; 2 | -------------------------------------------------------------------------------- /src/helpers/getHistorySagaParam.ts: -------------------------------------------------------------------------------- 1 | import { HistoryFetchPayload } from '../modules/user/history'; 2 | 3 | export const getHistorySagaParam = (action: HistoryFetchPayload) => (Object.entries(action) 4 | .filter(w => w[1] !== undefined && w[0] !== 'type') 5 | .map(k => { 6 | const param = k[0] === 'page' ? Number(k[1]) + 1 : k[1]; 7 | 8 | return `${k[0]}=${encodeURIComponent(param)}`; 9 | }) 10 | .join('&')); 11 | -------------------------------------------------------------------------------- /src/helpers/getLanguageByCode.ts: -------------------------------------------------------------------------------- 1 | export const getLanguageName = (code: string) => { 2 | switch (code) { 3 | case 'en': 4 | return 'English'; 5 | case 'ru': 6 | return 'Русский'; 7 | case 'zh': 8 | return '中国'; 9 | default: 10 | return 'English'; 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /src/helpers/getOrderAPI.ts: -------------------------------------------------------------------------------- 1 | import { isFinexEnabled } from '../api'; 2 | 3 | export const getOrderAPI = () => isFinexEnabled() ? 'finex' : 'peatio'; 4 | -------------------------------------------------------------------------------- /src/helpers/getStylesValueByKey.ts: -------------------------------------------------------------------------------- 1 | export const getStylesValueByKey = (variable: string): string => { 2 | const bodyStyles = window.getComputedStyle(document.body); 3 | 4 | if (bodyStyles && variable) { 5 | const key = variable.slice(4, variable.length - 1); 6 | 7 | return bodyStyles.getPropertyValue(key); 8 | } 9 | 10 | return ''; 11 | }; 12 | -------------------------------------------------------------------------------- /src/helpers/getTimestampPeriod.ts: -------------------------------------------------------------------------------- 1 | export const getTimestampPeriod = (ts: number | string, period: number | string): number => +ts - +ts % ((+period || 1) * 60); 2 | -------------------------------------------------------------------------------- /src/helpers/getUnique.ts: -------------------------------------------------------------------------------- 1 | export const getUnique = (arr, comp) => { 2 | return arr 3 | .map(item => item[comp]) 4 | .map((item, i, final) => final.indexOf(item) === i && i) 5 | .filter(item => arr[item]).map(item => arr[item]); 6 | }; 7 | -------------------------------------------------------------------------------- /src/helpers/getUrlPart.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | export const getUrlPart = (index: number, url: string): string => { 3 | const part = url.split(/[\/#?]/)[index]; 4 | 5 | return part ? part : ''; 6 | }; 7 | -------------------------------------------------------------------------------- /src/helpers/handleCCYPrecision.ts: -------------------------------------------------------------------------------- 1 | import { Currency } from '../modules'; 2 | 3 | export const handleCCYPrecision = (currencies: Currency[], currency: string, defaultPrecision: number): number => { 4 | const precisableCCY = currencies[0] && currency.length && currencies.find(item => (item.id.toLowerCase() === currency.toLowerCase())); 5 | 6 | return (precisableCCY && precisableCCY.precision) || defaultPrecision; 7 | }; 8 | -------------------------------------------------------------------------------- /src/helpers/passwordValidation.ts: -------------------------------------------------------------------------------- 1 | export const passwordErrorFirstSolution = (value: string) => value.match(/.{8,80}/g); 2 | export const passwordErrorSecondSolution = (value: string) => value.match(/(?=.*[a-z])(?=.*[A-Z]).*/g); 3 | export const passwordErrorThirdSolution = (value: string) => value.match(/[a-zA-Z0-9]*[0-9]+[a-zA-Z0-9]*/g); 4 | -------------------------------------------------------------------------------- /src/helpers/regExp.test.ts: -------------------------------------------------------------------------------- 1 | import { precisionRegExp } from './'; 2 | 3 | describe('Describe regular expressions helper', () => { 4 | it('should match precisionRegExp', () => { 5 | expect('1').toMatch(precisionRegExp(0)); 6 | expect('1.1').not.toMatch(precisionRegExp(0)); 7 | expect('0.0000001').toMatch(precisionRegExp(7)); 8 | expect('0.00000001').not.toMatch(precisionRegExp(7)); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /src/helpers/regExp.ts: -------------------------------------------------------------------------------- 1 | export const precisionRegExp = (precision: number) => new RegExp(precision ? 2 | `^(?:[\\d-]*\\.?[\\d-]{0,${precision}}|[\\d-]*\\.[\\d-])$` : 3 | `^(?:[\\d-]*)$`, 4 | ); 5 | -------------------------------------------------------------------------------- /src/helpers/setDocumentTitle.ts: -------------------------------------------------------------------------------- 1 | import { PG_TITLE_PREFIX } from '../constants'; 2 | 3 | export const setDocumentTitle = (title: string): void => { 4 | document.title = [PG_TITLE_PREFIX, title].join(': '); 5 | }; 6 | -------------------------------------------------------------------------------- /src/helpers/setTradeColor.ts: -------------------------------------------------------------------------------- 1 | const tradesColorMapping = { 2 | buy: { 3 | color: 'var(--bids)', 4 | }, 5 | sell: { 6 | color: 'var(--asks)', 7 | }, 8 | }; 9 | 10 | export const setTradeColor = (side: string) => tradesColorMapping[side] || { color: ''}; 11 | -------------------------------------------------------------------------------- /src/helpers/sliceArray.ts: -------------------------------------------------------------------------------- 1 | export const sliceArray = (data, limit) => { 2 | const temp = data; 3 | if (!temp) { 4 | return temp; 5 | } 6 | 7 | if (temp.length > limit) { 8 | temp.length = limit; 9 | } 10 | 11 | return temp; 12 | }; 13 | -------------------------------------------------------------------------------- /src/helpers/sliceString.ts: -------------------------------------------------------------------------------- 1 | export const sliceString = (str, period) => { 2 | return str ? str.length > period ? `${str.slice(0, period)}...` : str : str; 3 | }; 4 | -------------------------------------------------------------------------------- /src/helpers/sortByDate.ts: -------------------------------------------------------------------------------- 1 | import * as moment from 'moment'; 2 | import { localeDate } from './localeDate'; 3 | 4 | export const sortByDate = (prop: string, format: string) => { 5 | return (a, b) => { 6 | return moment(localeDate(a[prop], 'fullDate'), format) > moment(localeDate(b[prop], 'fullDate'), format) ? -1 : 1; 7 | }; 8 | }; 9 | -------------------------------------------------------------------------------- /src/helpers/sortByPrice.ts: -------------------------------------------------------------------------------- 1 | export const sortAsks = (asks: string[][]) => { 2 | return asks.sort((a, b) => Number(a[0]) - Number(b[0])); 3 | }; 4 | 5 | export const sortBids = (bids: string[][]) => { 6 | return bids.sort((a, b) => Number(b[0]) - Number(a[0])); 7 | }; 8 | -------------------------------------------------------------------------------- /src/helpers/timezone.ts: -------------------------------------------------------------------------------- 1 | import * as moment from 'moment-timezone'; 2 | 3 | let timezone = ''; 4 | export const getTimezone = () => timezone.length > 0 ? timezone : moment.tz.guess(); 5 | export const setTimezone = (tz: string) => timezone = tz; 6 | 7 | export const stdTimezoneOffset = (date: Date) => { 8 | const jan = new Date(date.getFullYear(), 0, 1); 9 | const jul = new Date(date.getFullYear(), 6, 1); 10 | 11 | return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); 12 | }; 13 | -------------------------------------------------------------------------------- /src/helpers/toggleColorTheme.ts: -------------------------------------------------------------------------------- 1 | export const toggleColorTheme = (value: string) => { 2 | const rootElement = document.getElementsByTagName('body')[0]; 3 | if (value === 'light') { 4 | rootElement && rootElement.classList.add('light-mode'); 5 | } else { 6 | rootElement && rootElement.classList.remove('light-mode'); 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/helpers/truncateMiddle.ts: -------------------------------------------------------------------------------- 1 | export const truncateMiddle = (fullStr: string, strLen: number, sep?: string): string => { 2 | if (!fullStr || fullStr.length <= strLen) { return fullStr; } 3 | const separator = sep || '...'; 4 | const charsToShow = strLen - separator.length; 5 | const frontChars = Math.ceil(charsToShow / 2); 6 | const backChars = Math.floor(charsToShow / 2); 7 | 8 | return `${fullStr.substr(0, frontChars)}${separator}${fullStr.substr(fullStr.length - backChars)}`; 9 | }; 10 | -------------------------------------------------------------------------------- /src/helpers/usernameValidation.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | export const USERNAME_REGEX = /^[a-zA-Z0-9]{4,12}$/; 3 | export const ERROR_SHORT_USERNAME = 'page.header.signUp.username.minLength.error'; 4 | export const ERROR_LONG_USERNAME = 'page.header.signUp.username.maxLength.error'; 5 | -------------------------------------------------------------------------------- /src/hooks/useApiKeysFetch.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { useDispatch } from 'react-redux'; 3 | import { apiKeysFetch } from '../modules'; 4 | 5 | export const useApiKeysFetch = (pageIndex, limit) => { 6 | const dispatch = useDispatch(); 7 | 8 | React.useEffect(() => { 9 | dispatch(apiKeysFetch({ pageIndex, limit })); 10 | }, [dispatch, pageIndex, limit]); 11 | }; 12 | -------------------------------------------------------------------------------- /src/hooks/useDocumentTitle.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { PG_TITLE_PREFIX } from '../constants'; 3 | 4 | export const useDocumentTitle = title => { 5 | React.useEffect(() => { 6 | document.title = [PG_TITLE_PREFIX, title].join(': '); 7 | }, [title]); 8 | }; 9 | -------------------------------------------------------------------------------- /src/hooks/useHistoryFetch.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { useDispatch } from 'react-redux'; 3 | import { fetchHistory } from '../modules'; 4 | 5 | export const useHistoryFetch = ({ type, currency, limit = 6, page = 0 }) => { 6 | const dispatch = useDispatch(); 7 | 8 | React.useEffect(() => { 9 | dispatch(fetchHistory({ type, limit, currency, page })); 10 | }, [dispatch, type, currency, limit, page]); 11 | }; 12 | -------------------------------------------------------------------------------- /src/hooks/usePrevious.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | export const usePrevious = value => { 4 | const ref = React.useRef(); 5 | React.useEffect(() => { 6 | ref.current = value; 7 | }); 8 | 9 | return ref.current; 10 | }; 11 | -------------------------------------------------------------------------------- /src/hooks/useResetCaptchaState.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { useDispatch } from 'react-redux'; 3 | import { resetCaptchaState } from '../modules'; 4 | 5 | export const useResetCaptchaState = () => { 6 | const dispatch = useDispatch(); 7 | 8 | React.useEffect(() => { 9 | dispatch(resetCaptchaState()); 10 | }, [dispatch]); 11 | }; 12 | -------------------------------------------------------------------------------- /src/hooks/useUserActivityFetch.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { useDispatch } from 'react-redux'; 3 | import { getUserActivity } from '../modules'; 4 | 5 | export const useUserActivityFetch = ({ page = 0, limit = 25 }) => { 6 | const dispatch = useDispatch(); 7 | 8 | React.useEffect(() => { 9 | dispatch(getUserActivity({ page, limit })); 10 | }, [dispatch, page, limit]); 11 | }; 12 | -------------------------------------------------------------------------------- /src/hooks/useUserOrdersHistoryFetch.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { useDispatch } from 'react-redux'; 3 | import { userOrdersHistoryFetch } from '../modules'; 4 | 5 | export const useUserOrdersHistoryFetch = (pageIndex, type, limit) => { 6 | const dispatch = useDispatch(); 7 | 8 | React.useEffect(() => { 9 | dispatch(userOrdersHistoryFetch({ pageIndex, type, limit })); 10 | }, [dispatch, pageIndex, type, limit]); 11 | }; 12 | -------------------------------------------------------------------------------- /src/mobile/assets/images/CheckIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | interface Props { 4 | className?: string; 5 | } 6 | 7 | export const CheckIcon: React.FC = (props: Props) => ( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /src/mobile/assets/images/MinusIcon.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | interface Props { 4 | className?: string; 5 | } 6 | 7 | export const MinusIcon: React.FC = (props: Props) => ( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /src/mobile/components/Profile/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ApiKeysItem'; 2 | export * from './ProfileLinks'; 3 | export * from './UserActivityItem'; 4 | export * from './UserInfo'; 5 | -------------------------------------------------------------------------------- /src/mobile/screens/Landing/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { MarketsTable } from '../../../containers'; 3 | 4 | const LandingComponent: React.FC = () => { 5 | return ( 6 |
7 | 8 |
9 | ); 10 | }; 11 | 12 | export const LandingScreenMobile = React.memo(LandingComponent); 13 | -------------------------------------------------------------------------------- /src/mobile/screens/Orders/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Orders } from '../../components'; 3 | 4 | const OrdersMobileScreenComponent: React.FC = () => ( 5 |
6 | 7 |
8 | ); 9 | 10 | export const OrdersMobileScreen = React.memo(OrdersMobileScreenComponent); 11 | -------------------------------------------------------------------------------- /src/mobile/styles/components/RowItem.pcss: -------------------------------------------------------------------------------- 1 | /* stylelint-disable */ 2 | .cr-mobile-table-row { 3 | &__amount { 4 | display: flex; 5 | font-size: 14px; 6 | margin-bottom: 12px; 7 | 8 | &-value { 9 | padding-right: 5px; 10 | color: var(--primary-text-color); 11 | } 12 | 13 | &-currency { 14 | text-transform: uppercase; 15 | color: var(--primary-text-color); 16 | } 17 | } 18 | 19 | &__date { 20 | font-size: 14px; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/mobile/styles/screens/ChangeForgottenPasswordMobileScreen.pcss: -------------------------------------------------------------------------------- 1 | /* stylelint-disable */ 2 | .pg-mobile-app { 3 | .pg-change-forgotten-password-screen { 4 | background: unset; 5 | height: auto; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/mobile/styles/screens/Landing.pcss: -------------------------------------------------------------------------------- 1 | .pg-landing-screen-mobile { 2 | align-items: center; 3 | display: flex; 4 | flex-direction: column; 5 | height: 100%; 6 | justify-content: flex-start; 7 | width: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /src/mobile/styles/screens/Orders.pcss: -------------------------------------------------------------------------------- 1 | .pg-mobile-orders-screen { 2 | display: flex; 3 | margin: 4px 0; 4 | } 5 | -------------------------------------------------------------------------------- /src/mobile/styles/screens/Profile.pcss: -------------------------------------------------------------------------------- 1 | .pg-mobile-profile-screen { 2 | align-items: center; 3 | display: flex; 4 | flex-direction: column; 5 | height: 100%; 6 | justify-content: flex-start; 7 | width: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /src/mobile/styles/screens/ProfileChangePassword.pcss: -------------------------------------------------------------------------------- 1 | .pg-mobile-profile-change-password-screen { 2 | align-items: center; 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: flex-start; 6 | margin: 4px 0; 7 | width: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /src/mobile/styles/style.pcss: -------------------------------------------------------------------------------- 1 | @import "./screens/styles.pcss"; 2 | @import "./components/styles.pcss"; 3 | -------------------------------------------------------------------------------- /src/mobile/translations/index.ts: -------------------------------------------------------------------------------- 1 | import { en } from './en'; 2 | import { ru } from './ru'; 3 | 4 | export { 5 | en, 6 | ru, 7 | }; 8 | -------------------------------------------------------------------------------- /src/modules/helpers.ts: -------------------------------------------------------------------------------- 1 | import { MakerType } from './user/history'; 2 | 3 | const makerTypeMap = { 4 | ask: 'sell', 5 | bid: 'buy', 6 | }; 7 | 8 | export const kindToMakerType = (kind: string): MakerType => makerTypeMap[kind]; 9 | -------------------------------------------------------------------------------- /src/modules/public/alert/constants.ts: -------------------------------------------------------------------------------- 1 | export const ALERT_DELETE = 'alert/ALERT_DELETE'; 2 | export const ALERT_DATA = 'alert/ALERT_DATA'; 3 | export const ALERT_PUSH = 'alert/ALERT_PUSH'; 4 | export const ALERT_DELETE_BY_INDEX = 'alert/ALERT_DELETE_BY_INDEX'; 5 | -------------------------------------------------------------------------------- /src/modules/public/alert/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './sagas'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/public/alert/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeEvery } from 'redux-saga/effects'; 2 | import { ALERT_PUSH } from '../constants'; 3 | import { handleAlertSaga } from './handleAlertSaga'; 4 | 5 | export function* rootHandleAlertSaga() { 6 | yield takeEvery(ALERT_PUSH, handleAlertSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/alert/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../'; 2 | import { AlertState } from './reducer'; 3 | 4 | export const selectAlertState = (state: RootState): AlertState => state.public.alerts; 5 | -------------------------------------------------------------------------------- /src/modules/public/blocklistAccess/constants.ts: -------------------------------------------------------------------------------- 1 | export const SEND_BLOCKLIST_ACCESS_TOKEN_FETCH = 'SEND_BLOCKLIST_ACCESS_TOKEN_FETCH'; 2 | export const SEND_BLOCKLIST_ACCESS_TOKEN_DATA = 'SEND_BLOCKLIST_ACCESS_TOKEN_DATA'; 3 | export const SEND_BLOCKLIST_ACCESS_TOKEN_ERROR = 'SEND_BLOCKLIST_ACCESS_TOKEN_ERROR'; 4 | 5 | export const SET_BLOCKLIST_STATUS = 'SET_BLOCKLIST_STATUS'; 6 | -------------------------------------------------------------------------------- /src/modules/public/blocklistAccess/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './selectors'; 4 | export * from './sagas'; 5 | -------------------------------------------------------------------------------- /src/modules/public/blocklistAccess/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeEvery } from 'redux-saga/effects'; 2 | import { SEND_BLOCKLIST_ACCESS_TOKEN_FETCH } from '../constants'; 3 | import { blocklistAccessFetchSaga } from './blocklistAccessFetchSaga'; 4 | 5 | export function* rootBlocklistAccessSaga() { 6 | yield takeEvery(SEND_BLOCKLIST_ACCESS_TOKEN_FETCH, blocklistAccessFetchSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/configs/constants.ts: -------------------------------------------------------------------------------- 1 | export const CONFIGS_FETCH = 'configs/FETCH'; 2 | export const CONFIGS_DATA = 'configs/DATA'; 3 | export const CONFIGS_ERROR = 'configs/ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/public/configs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './sagas'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/public/configs/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { CONFIGS_FETCH } from '../constants'; 3 | import { configsFetchSaga } from './configsFetchSaga'; 4 | 5 | export function* rootConfigsSaga() { 6 | yield takeLatest(CONFIGS_FETCH, configsFetchSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/configs/types.ts: -------------------------------------------------------------------------------- 1 | export interface Configs { 2 | captcha_type: 'recaptcha' | 'geetest' | 'none'; 3 | captcha_id?: string; 4 | password_min_entropy: number; 5 | } 6 | -------------------------------------------------------------------------------- /src/modules/public/currencies/constants.ts: -------------------------------------------------------------------------------- 1 | export const CURRENCIES_FETCH = 'currencies/FETCH'; 2 | export const CURRENCIES_DATA = 'currencies/DATA'; 3 | export const CURRENCIES_ERROR = 'currencies/ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/public/currencies/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './sagas/currenciesFetchSaga'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/public/customization/constants.ts: -------------------------------------------------------------------------------- 1 | export const CUSTOMIZATION_CURRENT = 'customization/CURRENT'; 2 | export const CUSTOMIZATION_FETCH = 'customization/FETCH'; 3 | export const CUSTOMIZATION_DATA = 'customization/DATA'; 4 | export const CUSTOMIZATION_ERROR = 'customization/ERROR'; 5 | -------------------------------------------------------------------------------- /src/modules/public/customization/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './sagas'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/public/customization/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { CUSTOMIZATION_FETCH } from '../constants'; 3 | import { customizationFetchSaga } from './customizationFetchSaga'; 4 | 5 | export function* rootCustomizationSaga() { 6 | yield takeLatest(CUSTOMIZATION_FETCH, customizationFetchSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/customization/types.ts: -------------------------------------------------------------------------------- 1 | export interface CustomizationDataInterface { 2 | settings?: string; 3 | } 4 | 5 | export interface CustomizationCurrentDataInterface { 6 | theme_id: number; 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/errorHandler/constants.ts: -------------------------------------------------------------------------------- 1 | export const ERROR_HANDLE_FETCH = 'errorHandler/ERROR_HANDLE_FETCH'; 2 | export const ERROR_HANDLE_DATA = 'errorHandler/ERROR_HANDLE_DATA'; 3 | -------------------------------------------------------------------------------- /src/modules/public/errorHandler/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './sagas'; 4 | -------------------------------------------------------------------------------- /src/modules/public/errorHandler/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeEvery } from 'redux-saga/effects'; 2 | import { ERROR_HANDLE_FETCH } from '../constants'; 3 | import { handleErrorSaga } from './handleErrorSaga'; 4 | 5 | export function* rootErrorHandlerSaga() { 6 | yield takeEvery(ERROR_HANDLE_FETCH, handleErrorSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/globalSettings/constants.ts: -------------------------------------------------------------------------------- 1 | export const CHANGE_COLOR_THEME = 'colorTheme/CHANGE_COLOR_THEME'; 2 | export const TOGGLE_CHART_REBUILD = 'colorTheme/TOGGLE_CHART_REBUILD'; 3 | export const TOGGLE_MARKET_SELECTOR = 'colorTheme/TOGGLE_MARKET_SELECTOR'; 4 | export const TOGGLE_MOBILE_DEVICE = 'colorTheme/TOGGLE_MOBILE_DEVICE'; 5 | export const TOGGLE_SIDEBAR = 'colorTheme/TOGGLE_SIDEBAR'; 6 | -------------------------------------------------------------------------------- /src/modules/public/globalSettings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './selectors'; 4 | -------------------------------------------------------------------------------- /src/modules/public/gridLayout/constants.ts: -------------------------------------------------------------------------------- 1 | export const SAVE_LAYOUTS = 'layouts/SAVE_LAYOUTS'; 2 | export const RESET_LAYOUTS = 'layouts/RESET_LAYOUTS'; 3 | -------------------------------------------------------------------------------- /src/modules/public/gridLayout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './selectors'; 4 | -------------------------------------------------------------------------------- /src/modules/public/gridLayout/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../'; 2 | import { GridLayoutState } from './reducer'; 3 | 4 | export const selectGridLayoutState = (state: RootState): GridLayoutState => state.public.rgl; 5 | -------------------------------------------------------------------------------- /src/modules/public/i18n/actions.ts: -------------------------------------------------------------------------------- 1 | import { CHANGE_LANGUAGE } from './constants'; 2 | 3 | export interface ChangeLanguageAction { 4 | type: string; 5 | payload: string; 6 | } 7 | export const changeLanguage = (payload: string): ChangeLanguageAction => ({ 8 | type: CHANGE_LANGUAGE, 9 | payload, 10 | }); 11 | -------------------------------------------------------------------------------- /src/modules/public/i18n/constants.ts: -------------------------------------------------------------------------------- 1 | export const CHANGE_LANGUAGE = 'i18n/CHANGE_LANGUAGE'; 2 | -------------------------------------------------------------------------------- /src/modules/public/i18n/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './selectors'; 4 | -------------------------------------------------------------------------------- /src/modules/public/i18n/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../'; 2 | import { LanguageState } from './reducer'; 3 | 4 | export const selectCurrentLanguage = (state: RootState): LanguageState['lang'] => 5 | state.public.i18n.lang; 6 | -------------------------------------------------------------------------------- /src/modules/public/kline/constants.ts: -------------------------------------------------------------------------------- 1 | export const KLINE_PUSH = 'kline/PUSH'; 2 | 3 | export const KLINE_FETCH = 'kline/KLINE_FETCH'; 4 | export const KLINE_DATA = 'kline/KLINE_DATA'; 5 | 6 | export const KLINE_UPDATE_TIME_RANGE = 'kline/KLINE_UPDATE_TIME_RANGE'; 7 | export const KLINE_UPDATE_PERIOD = 'kline/KLINE_UPDATE_PERIOD'; 8 | 9 | export const KLINE_ERROR = 'kline/KLINE_ERROR'; 10 | -------------------------------------------------------------------------------- /src/modules/public/kline/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './selectors'; 4 | export * from './types'; 5 | export * from './sagas'; 6 | -------------------------------------------------------------------------------- /src/modules/public/kline/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { KLINE_FETCH } from '../constants'; 3 | import { handleKlineFetchSaga } from './handleKlineFetchSaga'; 4 | 5 | export function* rootKlineFetchSaga() { 6 | yield takeLatest(KLINE_FETCH, handleKlineFetchSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/kline/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../'; 2 | import { KlineState } from './reducer'; 3 | 4 | export const selectKline = (state: RootState): KlineState => 5 | state.public.kline; 6 | -------------------------------------------------------------------------------- /src/modules/public/kline/types.ts: -------------------------------------------------------------------------------- 1 | export interface KlineEvent { 2 | time: number; 3 | close: number; 4 | open: number; 5 | high: number; 6 | low: number; 7 | volume: number; 8 | } 9 | -------------------------------------------------------------------------------- /src/modules/public/markets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './sagas/marketsFetchSaga'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/public/memberLevels/constants.ts: -------------------------------------------------------------------------------- 1 | export const MEMBER_LEVELS_FETCH = 'memberLevels/FETCH'; 2 | export const MEMBER_LEVELS_DATA = 'memberLevels/DATA'; 3 | export const MEMBER_LEVELS_ERROR = 'memberLevels/ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/public/memberLevels/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './sagas'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/public/memberLevels/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { MEMBER_LEVELS_FETCH } from '../constants'; 3 | import { memberLevelsSaga } from './memberLevelsSaga'; 4 | 5 | export function* rootMemberLevelsSaga() { 6 | yield takeLatest(MEMBER_LEVELS_FETCH, memberLevelsSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/memberLevels/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../'; 2 | import { MemberLevels } from './types'; 3 | 4 | export const selectMemberLevels = (state: RootState): MemberLevels | undefined => 5 | state.public.memberLevels.levels; 6 | 7 | export const selectMemberLevelsLoading = (state: RootState): boolean => 8 | state.public.memberLevels.loading; 9 | -------------------------------------------------------------------------------- /src/modules/public/memberLevels/types.ts: -------------------------------------------------------------------------------- 1 | export interface MemberLevels { 2 | deposit: { minimum_level: number }; 3 | withdraw: { minimum_level: number }; 4 | trading: { minimum_level: number }; 5 | } 6 | -------------------------------------------------------------------------------- /src/modules/public/orderBook/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/public/orderBook/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { DEPTH_FETCH, ORDER_BOOK_FETCH } from '../constants'; 3 | import { depthSaga } from './depthSaga'; 4 | import { orderBookSaga } from './orderBookSaga'; 5 | 6 | export function* rootOrderBookSaga() { 7 | yield takeLatest(ORDER_BOOK_FETCH, orderBookSaga); 8 | yield takeLatest(DEPTH_FETCH, depthSaga); 9 | } 10 | -------------------------------------------------------------------------------- /src/modules/public/ranger/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './sagas'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/public/ranger/sagas/index.ts: -------------------------------------------------------------------------------- 1 | export * from './rangerSaga'; 2 | -------------------------------------------------------------------------------- /src/modules/public/recentTrades/constants.ts: -------------------------------------------------------------------------------- 1 | export const RECENT_TRADES_FETCH = 'recentTrades/FETCH'; 2 | export const RECENT_TRADES_DATA = 'recentTrades/DATA'; 3 | export const RECENT_TRADES_ERROR = 'recentTrades/ERROR'; 4 | export const RECENT_TRADES_PUSH = 'recentTrades/PUSH'; 5 | -------------------------------------------------------------------------------- /src/modules/public/recentTrades/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/public/recentTrades/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLeading } from 'redux-saga/effects'; 2 | import { RECENT_TRADES_FETCH } from '../constants'; 3 | import { recentTradesFetchSaga } from './recentTradesFetchSaga'; 4 | 5 | export function* rootRecentTradesSaga() { 6 | yield takeLeading(RECENT_TRADES_FETCH, recentTradesFetchSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/public/recentTrades/types.ts: -------------------------------------------------------------------------------- 1 | export interface PublicTradeEvent { 2 | tid: number; 3 | taker_type: 'buy' | 'sell'; 4 | date: number; 5 | price: string; 6 | amount: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/apiKeys/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | -------------------------------------------------------------------------------- /src/modules/user/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/beneficiaries/index.ts: -------------------------------------------------------------------------------- 1 | export * from './reducer'; 2 | export * from './actions'; 3 | export * from './selectors'; 4 | export * from './sagas/index'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/user/captcha/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/captcha/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { GET_GEETEST_CAPTCHA_FETCH } from '../constants'; 3 | import { geetestCaptchaSaga } from './geetestCaptchaSaga'; 4 | 5 | export function* rootGeetestCaptchaSaga() { 6 | yield takeLatest(GET_GEETEST_CAPTCHA_FETCH, geetestCaptchaSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/customization/constants.ts: -------------------------------------------------------------------------------- 1 | export const CUSTOMIZATION_UPDATE = 'customization/UPDATE'; 2 | export const CUSTOMIZATION_UPDATE_DATA = 'customization/UPDATE_DATA'; 3 | export const CUSTOMIZATION_UPDATE_ERROR = 'customization/UPDATE_ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/user/customization/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './sagas'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/customization/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { CUSTOMIZATION_UPDATE } from '../constants'; 3 | import { customizationUpdateSaga } from './customizationUpdateSaga'; 4 | 5 | export function* rootCustomizationUpdateSaga() { 6 | yield takeLatest(CUSTOMIZATION_UPDATE, customizationUpdateSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/documentation/constants.ts: -------------------------------------------------------------------------------- 1 | export const DOC_TRADE_USER_API_FETCH = 'docTradeUserApi/FETCH'; 2 | export const DOC_TRADE_USER_API_DATA = 'docTradeUserApi/DATA'; 3 | export const DOC_TRADE_USER_API_ERROR = 'docTradeUserApi/ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/user/documentation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './sagas'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/user/documentation/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { DOC_TRADE_USER_API_FETCH } from '../constants'; 3 | import { docTradeUserApiFetchSaga } from './docTradeUserApiFetchSaga'; 4 | 5 | export function* rootDocumentationSaga() { 6 | yield takeLatest(DOC_TRADE_USER_API_FETCH, docTradeUserApiFetchSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/emailVerification/constants.ts: -------------------------------------------------------------------------------- 1 | export const EMAIL_VERIFICATION_DATA = 'emailVerification/DATA'; 2 | export const EMAIL_VERIFICATION_ERROR = 'emailVerification/ERROR'; 3 | export const EMAIL_VERIFICATION_FETCH = 'emailVerification/FETCH'; 4 | -------------------------------------------------------------------------------- /src/modules/user/emailVerification/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/emailVerification/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { 3 | EMAIL_VERIFICATION_FETCH, 4 | } from '../constants'; 5 | import { emailVerificationSaga } from './emailVerificationSaga'; 6 | 7 | export function* rootEmailVerificationSaga() { 8 | yield takeLatest(EMAIL_VERIFICATION_FETCH, emailVerificationSaga); 9 | } 10 | -------------------------------------------------------------------------------- /src/modules/user/history/constants.ts: -------------------------------------------------------------------------------- 1 | export const HISTORY_FETCH = 'history/FETCH'; 2 | export const HISTORY_DATA = 'history/DATA'; 3 | export const HISTORY_ERROR = 'history/ERROR'; 4 | export const HISTORY_RESET = 'history/RESET'; 5 | export const HISTORY_PUSH_EMIT = 'history/PUSH_EMIT'; 6 | export const HISTORY_PUSH_FINISH = 'history/PUSH_FINISH'; 7 | -------------------------------------------------------------------------------- /src/modules/user/history/index.ts: -------------------------------------------------------------------------------- 1 | export * from './reducer'; 2 | export * from './actions'; 3 | export * from './selectors'; 4 | export * from './sagas/index'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/user/history/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { HISTORY_FETCH, HISTORY_PUSH_EMIT } from '../constants'; 3 | import { historyPushSaga } from './historyPushSaga'; 4 | import { historySaga } from './historySaga'; 5 | 6 | export function* rootHistorySaga() { 7 | yield takeLatest(HISTORY_PUSH_EMIT, historyPushSaga); 8 | yield takeLatest(HISTORY_FETCH, historySaga); 9 | } 10 | -------------------------------------------------------------------------------- /src/modules/user/kyc/addresses/constants.ts: -------------------------------------------------------------------------------- 1 | export const SEND_ADDRESSES_ERROR = 'addresses/SEND_ADDRESSES_ERROR'; 2 | export const SEND_ADDRESSES_FETCH = 'addresses/SEND_ADDRESSES_FETCH'; 3 | export const SEND_ADDRESSES_DATA = 'addresses/SEND_ADDRESSES_DATA'; 4 | -------------------------------------------------------------------------------- /src/modules/user/kyc/addresses/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/kyc/addresses/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeEvery } from 'redux-saga/effects'; 2 | import { SEND_ADDRESSES_FETCH } from '../constants'; 3 | import { sendAddressesSaga } from './sendAddressesSaga'; 4 | 5 | export function* rootSendAddressesSaga() { 6 | yield takeEvery(SEND_ADDRESSES_FETCH, sendAddressesSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/kyc/addresses/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../../'; 2 | import { AddressesState } from './reducer'; 3 | 4 | export const selectSendAddressesSuccess = (state: RootState): AddressesState['success'] => 5 | state.user.addresses.success; 6 | 7 | export const selectSendAddressesLoading = (state: RootState): AddressesState['loading'] => 8 | state.user.addresses.loading; 9 | -------------------------------------------------------------------------------- /src/modules/user/kyc/documents/constants.ts: -------------------------------------------------------------------------------- 1 | export const SEND_DOCUMENTS_ERROR = 'documents/SEND_DOCUMENTS_ERROR'; 2 | export const SEND_DOCUMENTS_FETCH = 'documents/SEND_DOCUMENTS_FETCH'; 3 | export const SEND_DOCUMENTS_DATA = 'documents/SEND_DOCUMENTS_DATA'; 4 | -------------------------------------------------------------------------------- /src/modules/user/kyc/documents/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/kyc/documents/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeEvery } from 'redux-saga/effects'; 2 | import { SEND_DOCUMENTS_FETCH } from '../constants'; 3 | import { sendDocumentsSaga } from './sendDocumentsSaga'; 4 | 5 | export function* rootSendDocumentsSaga() { 6 | yield takeEvery(SEND_DOCUMENTS_FETCH, sendDocumentsSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/kyc/documents/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../../'; 2 | import { DocumentsState } from './reducer'; 3 | 4 | export const selectSendDocumentsSuccess = (state: RootState): DocumentsState['success'] => 5 | state.user.documents.success; 6 | 7 | export const selectSendDocumentsLoading = (state: RootState): DocumentsState['loading'] => 8 | state.user.documents.loading; 9 | -------------------------------------------------------------------------------- /src/modules/user/kyc/identity/constants.ts: -------------------------------------------------------------------------------- 1 | export const EDIT_IDENTITY_ERROR = 'identity/EDIT_IDENTITY_ERROR'; 2 | export const EDIT_IDENTITY_FETCH = 'identity/EDIT_IDENTITY_FETCH'; 3 | export const EDIT_IDENTITY_DATA = 'identity/EDIT_IDENTITY_DATA'; 4 | 5 | export const SEND_IDENTITY_ERROR = 'identity/SEND_IDENTITY_ERROR'; 6 | export const SEND_IDENTITY_FETCH = 'identity/SEND_IDENTITY_FETCH'; 7 | export const SEND_IDENTITY_DATA = 'identity/SEND_IDENTITY_DATA'; 8 | -------------------------------------------------------------------------------- /src/modules/user/kyc/identity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/kyc/identity/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeEvery } from 'redux-saga/effects'; 2 | import { EDIT_IDENTITY_FETCH, SEND_IDENTITY_FETCH } from '../constants'; 3 | import { editIdentitySaga } from './editIdentitySaga'; 4 | import { sendIdentitySaga } from './sendIdentitySaga'; 5 | 6 | export function* rootSendIdentitySaga() { 7 | yield takeEvery(EDIT_IDENTITY_FETCH, editIdentitySaga); 8 | yield takeEvery(SEND_IDENTITY_FETCH, sendIdentitySaga); 9 | } 10 | -------------------------------------------------------------------------------- /src/modules/user/kyc/identity/types.ts: -------------------------------------------------------------------------------- 1 | export interface IdentityData { 2 | first_name: string; 3 | last_name: string; 4 | dob: string; 5 | address: string; 6 | postcode: string; 7 | city: string; 8 | country: string; 9 | metadata?: string; 10 | confirm?: boolean; 11 | } 12 | -------------------------------------------------------------------------------- /src/modules/user/kyc/label/constants.ts: -------------------------------------------------------------------------------- 1 | export const GET_LABEL_FETCH = 'confirm/GET_LABEL_FETCH'; 2 | export const GET_LABEL_DATA = 'confirm/GET_LABEL_DATA'; 3 | export const GET_LABEL_ERROR = 'confirm/GET_LABEL_ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/user/kyc/label/index.ts: -------------------------------------------------------------------------------- 1 | export * from './selectors'; 2 | export * from './sagas'; 3 | export * from './actions'; 4 | export * from './reducer'; 5 | -------------------------------------------------------------------------------- /src/modules/user/kyc/label/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { GET_LABEL_FETCH } from '../constants'; 3 | import { labelSaga } from './labelSaga'; 4 | 5 | export function* rootLabelSaga() { 6 | yield takeLatest(GET_LABEL_FETCH, labelSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/kyc/label/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../../'; 2 | import { Label } from './actions'; 3 | 4 | export const selectLabelData = (state: RootState): Label[] => 5 | state.user.label.data; 6 | 7 | export const selectLabelFetching = (state: RootState): boolean => 8 | state.user.label.isFetching; 9 | -------------------------------------------------------------------------------- /src/modules/user/kyc/phone/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/kyc/phone/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../../'; 2 | import { PhoneState } from './reducer'; 3 | 4 | export const sendPhoneCode = (state: RootState): PhoneState['codeSend'] => 5 | state.user.phone.codeSend; 6 | 7 | export const selectVerifyPhoneSuccess = (state: RootState): PhoneState['successMessage'] => 8 | state.user.phone.successMessage; 9 | -------------------------------------------------------------------------------- /src/modules/user/openOrders/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/openOrders/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeEvery, takeLatest } from 'redux-saga/effects'; 2 | import { OPEN_ORDERS_CANCEL_FETCH, OPEN_ORDERS_FETCH } from '../constants'; 3 | import { openOrdersCancelSaga } from './openOrdersCancelSaga'; 4 | import { userOpenOrdersFetchSaga } from './userOpenOrdersFetchSaga'; 5 | 6 | export function* rootOpenOrdersSaga() { 7 | yield takeLatest(OPEN_ORDERS_FETCH, userOpenOrdersFetchSaga); 8 | yield takeEvery(OPEN_ORDERS_CANCEL_FETCH, openOrdersCancelSaga); 9 | } 10 | -------------------------------------------------------------------------------- /src/modules/user/openOrders/selectors.ts: -------------------------------------------------------------------------------- 1 | import { RootState } from '../../'; 2 | import { OrderCommon } from '../../types'; 3 | 4 | export const selectOpenOrdersList = (state: RootState): OrderCommon[] => 5 | state.user.openOrders.list; 6 | 7 | export const selectOpenOrdersFetching = (state: RootState): boolean => 8 | state.user.openOrders.fetching; 9 | 10 | export const selectCancelOpenOrdersFetching = (state: RootState): boolean => 11 | state.user.openOrders.cancelFetching; 12 | -------------------------------------------------------------------------------- /src/modules/user/orders/constants.ts: -------------------------------------------------------------------------------- 1 | export const ORDER_EXECUTE_FETCH = 'orders/EXECUTE_FETCH'; 2 | export const ORDER_EXECUTE_DATA= 'orders/EXECUTE_DATA'; 3 | export const ORDER_EXECUTE_ERROR = 'orders/EXECUTE_ERROR'; 4 | 5 | export const ORDERS_SET_CURRENT_PRICE = 'orders/SET_CURRENT_PRICE'; 6 | export const ORDERS_SET_AMOUNT = 'orders/SET_AMOUNT'; 7 | export const ORDERS_SET_ORDER_TYPE = 'orders/SET_ORDER_TYPE'; 8 | -------------------------------------------------------------------------------- /src/modules/user/orders/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/orders/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { ORDER_EXECUTE_FETCH } from '../constants'; 3 | import { ordersExecuteSaga } from './ordersExecuteSaga'; 4 | 5 | export function* rootOrdersSaga() { 6 | yield takeLatest(ORDER_EXECUTE_FETCH, ordersExecuteSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/ordersHistory/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './selectors'; 4 | export * from './sagas'; 5 | -------------------------------------------------------------------------------- /src/modules/user/password/constants.ts: -------------------------------------------------------------------------------- 1 | export const PASSWORD_FORGOT_FETCH = 'password/FORGOT_PASSWORD_FETCH'; 2 | export const PASSWORD_FORGOT_SUCCESS = 'password/FORGOT_PASSWORD_SUCCESS'; 3 | export const PASSWORD_FORGOT_ERROR = 'password/FORGOT_PASSWORD_ERROR'; 4 | 5 | export const PASSWORD_CHANGE_FORGOT_PASSWORD_FETCH = 'password/CHANGE_FORGOT_PASSWORD_FETCH'; 6 | export const PASSWORD_CHANGE_FORGOT_PASSWORD_SUCCESS = 'password/CHANGE_FORGOT_PASSWORD_SUCCESS'; 7 | -------------------------------------------------------------------------------- /src/modules/user/password/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/profile/index.ts: -------------------------------------------------------------------------------- 1 | export * from './actions'; 2 | export * from './reducer'; 3 | export * from './sagas'; 4 | export * from './selectors'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/user/userActivity/constants.ts: -------------------------------------------------------------------------------- 1 | export const USER_ACTIVITY_FETCH = 'userActivity/FETCH'; 2 | export const USER_ACTIVITY_DATA = 'userActivity/DATA'; 3 | export const USER_ACTIVITY_ERROR = 'userActivity/ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/user/userActivity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sagas'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './selectors'; 5 | -------------------------------------------------------------------------------- /src/modules/user/userActivity/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { USER_ACTIVITY_FETCH } from '../constants'; 3 | import { userActivitySaga } from './userActivitySaga'; 4 | 5 | export function* rootUserActivitySaga() { 6 | yield takeLatest(USER_ACTIVITY_FETCH, userActivitySaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/wallets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './selectors'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './sagas'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/user/withdrawLimit/constants.ts: -------------------------------------------------------------------------------- 1 | export const WITHDRAW_LIMIT_FETCH = 'withdraw-limit/FETCH'; 2 | export const WITHDRAW_LIMIT_DATA = 'withdraw-limit/DATA'; 3 | export const WITHDRAW_LIMIT_ERROR = 'withdraw-limit/ERROR'; 4 | -------------------------------------------------------------------------------- /src/modules/user/withdrawLimit/index.ts: -------------------------------------------------------------------------------- 1 | export * from './selectors'; 2 | export * from './actions'; 3 | export * from './reducer'; 4 | export * from './sagas'; 5 | export * from './types'; 6 | -------------------------------------------------------------------------------- /src/modules/user/withdrawLimit/sagas/index.ts: -------------------------------------------------------------------------------- 1 | import { takeLatest } from 'redux-saga/effects'; 2 | import { WITHDRAW_LIMIT_FETCH } from '../constants'; 3 | import { withdrawLimitSaga } from './withdrawLimitSaga'; 4 | 5 | export function* rootWithdrawLimitSaga() { 6 | yield takeLatest(WITHDRAW_LIMIT_FETCH, withdrawLimitSaga); 7 | } 8 | -------------------------------------------------------------------------------- /src/modules/user/withdrawLimit/types.ts: -------------------------------------------------------------------------------- 1 | export interface WithdrawLimit { 2 | limit: number | string; 3 | period: number; 4 | withdrawal_amount: number | string; 5 | currency: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/routes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Layout'; 2 | -------------------------------------------------------------------------------- /src/screens/ProfileTwoFactorAuthScreen/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/ChangeForgottenPassword.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`ChangeForgottenPasswordScreen test should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/ConfirmScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`ConfirmScreen test should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/EmailVerification.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`EmailVerificationScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/ForgotPassword.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`ForgotPasswordScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/History.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`HistoryScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/MaintenanceScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`MaintenanceScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/OrdersTabScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`OrdersTabScreen test should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/ProfileScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`ProfileScreen test should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/ProfileTwoFactorAuthScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`ProfileTwoFactorAuthScreen test should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/RestrictedScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`RestrictedScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/SignInScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`SignInScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/SignUpScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`SignUpScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/VerificationScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`VerificationScreen test should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/screens/tests/__snapshots__/WalletsScreen.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`WalletsScreen should render 1`] = `ShallowWrapper {}`; 4 | -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | import { configure } from 'enzyme'; 2 | import Adapter from 'enzyme-adapter-react-16'; 3 | 4 | configure({ adapter: new Adapter() }); 5 | -------------------------------------------------------------------------------- /src/styles/style.pcss: -------------------------------------------------------------------------------- 1 | @import "./themes/style.pcss"; 2 | @import "./customizationBarColors.pcss"; 3 | @import "./colors.pcss"; 4 | @import "./buttons.pcss"; 5 | @import "../routes/Layout/Layout.pcss"; 6 | @import "../screens/style.pcss"; 7 | @import "../containers/style.pcss"; 8 | @import "../components/style.pcss"; 9 | @import "../mobile/styles/style.pcss"; 10 | -------------------------------------------------------------------------------- /src/styles/themes/style.pcss: -------------------------------------------------------------------------------- 1 | @import "./dark.pcss"; 2 | @import "./light.pcss"; 3 | -------------------------------------------------------------------------------- /src/themes/templates/index.ts: -------------------------------------------------------------------------------- 1 | export * from './DarkBlue'; 2 | export * from './DarkRed'; 3 | export * from './Green'; 4 | export * from './Purple'; 5 | 6 | export interface ThemeColorInterface { 7 | key: string; 8 | value: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/translations/index.ts: -------------------------------------------------------------------------------- 1 | import { customLanguageMap } from '../custom/translations'; 2 | import { en as enCustom } from '../custom/translations/en'; 3 | import { en } from './en'; 4 | 5 | export type LangType = typeof en; 6 | 7 | export const languageMap = { 8 | default: en, 9 | en: { ...en, ...enCustom }, 10 | ...customLanguageMap, 11 | }; 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | tsconfig.prod.json --------------------------------------------------------------------------------