diff --git a/app/public/css/pages.css b/app/public/css/pages.css
index 20f6173..c359e4b 100644
--- a/app/public/css/pages.css
+++ b/app/public/css/pages.css
@@ -773,4 +773,15 @@ h1>.badge, h2>.badge, h3>.badge, h4>.badge,h5>.badge,h6>.badge {
.StripeElement--webkit-autofill {
background-color: #fefde5 !important;
+}
+.usDollar {
+ font-weight: lighter;
+ font-style: italic;
+ padding-left: 0.5em;
+ font-size: smaller;
+}
+.amount {
+ font-size: large;
+ font-weight: bold;
+ color: darkslategray;
}
\ No newline at end of file
diff --git a/app/public/scripts/home.js b/app/public/scripts/home.js
index f85a59c..9ff5dc1 100644
--- a/app/public/scripts/home.js
+++ b/app/public/scripts/home.js
@@ -344,7 +344,7 @@ const QTGateRegionsSetup = [
const nextExpirDate = (expire) => {
const now = new Date();
const _expire = new Date(expire);
- now.setHours(0, 0, 0, 0);
+ _expire.setHours(0, 0, 0, 0);
if (now.getTime() > _expire.getTime()) {
return _expire;
}
@@ -377,7 +377,7 @@ const infoDefine = [
paymentProblem: '您的当前所在区域看上去银行网关被和谐,您可以使用QTGate网关支付来完成支付',
QTGatePayRisk: '使用QTGate网关支付,您的个人信息有被泄漏的危险,如果非必要请使用Stript网关支付。',
CancelSuccess: (PlanExpire, isAnnual, returnAmount) => {
- return `中止订阅成功。您可以一直使用您的原订阅到${PlanExpire.toLocaleDateString()}为止。以后您将会自动成为QTGate免费用户可以继续使用QTGate的各项免费功能。${isAnnual ? `您的余款us$${returnAmount}会在5个工作日内退还到您的支付卡。` : '下月起QTGate系统不再自动扣款。'} 祝您网络冲浪愉快。`;
+ return `中止订阅成功。您可以一直使用您的原订阅到${new Date(PlanExpire).toLocaleDateString()}为止。以后您将会自动成为QTGate免费用户,可以继续使用QTGate的各项免费功能。${isAnnual ? `退款金额us$${returnAmount}会在5个工作日内退还到您的支付卡。` : '下月起QTGate系统不再自动扣款。'} 祝您网络冲浪愉快。`;
},
currentPlan: '当前订阅: ',
cardPaymentErrorMessage: ['输入的信用卡号有误,或支付系统不支持您的信用卡!', '输入的信用卡期限有误!', '输入的信用卡安全码有误!', '输入的信用卡持有人邮编有误!', '支付失败,支付无法完成请稍后再试', '支付数据存在错误', '您的付款被发卡行所拒绝'],
@@ -391,7 +391,8 @@ const infoDefine = [
currentAnnualPlan: ['月度订阅', '年度订阅'],
MonthBandwidthTitle: '月度代理服務器限额:',
dayBandwidthTitle: '毎日限额:',
- upgradeTitle: '升级账户选项',
+ upgradeTitle: '升级订阅',
+ accountOptionButton: '账户选项',
paymentProcessing: '正在通讯中...',
cantUpgradeMonthly: '年度计划不可降级为月度计划。请先终止您当前订阅的年度计划,再重新申请此月度订阅',
DowngradeTitle: '降级账户选项',
@@ -425,7 +426,7 @@ const infoDefine = [
downGradeMessage: '您正在操作降级您的订阅,如果操作成功您将从下月您的订阅之日起,实行新的订阅,如果您是。',
cancelPlanMessage: 'QTGate的订阅是以月为基本的单位。您的月订阅将在下月您的订阅起始日前被终止,您可以继续使用您的本月订阅计划,您将自动回到免费用户。如果您是每月自动扣款,则下月将不再扣款。如果您是年度订阅计划,您的退款将按普通每月订阅费,扣除您已经使用的月份后计算的差额,将自动返还您所支付的信用卡账号,如果您是使用促销码,或您是测试用户,您的终止订阅将不能被接受。',
cancelPlanMessage1: (planName, isAnnual, expire) => {
- return `您的订阅计划是${isAnnual ? `年度订阅,退还金额将按照您已付年订阅费 us$[${getPlanPrice(planName, true)}] - 您已使用月份原价 us$[${getPlanPrice(planName, false)}] X 已使用月数[${12 - getRemainingMonth(expire)}] = 余额 us$[${getCurrentPlanCancelBalance(expire, planName)}]将退还到您用来支付的信用卡。` : `月订阅,您的订阅将下次更新日${nextExpirDate(expire).toLocaleDateString()}时不再被自动扣款和更新。`}`;
+ return `您的订阅计划是${isAnnual ? `年度订阅,退还金额将按照您已付年订阅费 us$${getPlanPrice(planName, true)} - 该订阅原价 us$${getPlanPrice(planName, false)} X 已使用月数(包括本月) ${12 - getRemainingMonth(expire)} = 应该退还的金额 us$${getCurrentPlanCancelBalance(expire, planName)},将在7个工作日内,退还到您原来支付的信用卡账户。` : `月订阅,您的订阅将下次更新日${nextExpirDate(expire).toLocaleDateString()}时不再被自动扣款和更新。`}`;
}
},
QTGateDonate: {
@@ -876,7 +877,7 @@ const infoDefine = [
paymentProblem1: '支払い支障がある',
paymentProblem: 'あなた現在いる所在地ではバンク支払いがブラックされている模様です。QTGate経由でのお支払いをしてください。',
CancelSuccess: (PlanExpire, isAnnual, returnAmount) => {
- return `プランキャンセルしました。${PlanExpire.toLocaleDateString()}まで、元プランのままQTGateサービスが使えます。そのあとはQTGateのフリーユーザーと戻ります。${isAnnual ? `元プラン残りus$ ${returnAmount}は5日ウォキンデイ内お支払い使ったカードに戻ります` : `プラン代自動落しは中止されます`}。これからもよろしくお願い申し上げます。`;
+ return `プランキャンセルしました。${new Date(PlanExpire).toLocaleDateString()}まで、元プランのままQTGateサービスが使えます。そのあとはQTGateのフリーユーザーと戻ります。${isAnnual ? `元プラン残りus$ ${returnAmount}は5日ウォキンデイ内お支払い使ったカードに戻ります` : `プラン代自動落しは中止されます`}。これからもよろしくお願い申し上げます。`;
},
paymentSuccess: 'あなたのプランをアップグレードしました。これからもよろしくお願い申し上げます。',
qtgateTeam: 'QTGateチーム全員より',
@@ -902,7 +903,8 @@ const infoDefine = [
cantCancelInformation: 'あなたのプランはフリーユーザー、又はQTGateテストユーザーか、クーポンを使ったのためキャンセルすることはできません。',
monthResetDay: '月レセット日:',
dayBandwidthTitle: '日制限:',
- upgradeTitle: 'アップグレードオプション',
+ upgradeTitle: 'プランをアップグレード',
+ accountOptionButton: 'アカウトオプション',
DowngradeTitle: 'ダウングレードオプション',
cancelPlan: 'キャンセルプラン',
networkShareTitle: 'ゲットウェイ回線',
@@ -928,7 +930,7 @@ const infoDefine = [
maxmultigateway: ['最大二つ並列ゲットウェイ', '最大四つ並列ゲットウェイ*', '最大四つ並列ゲットウェイ'],
cancelPlanMessage: 'QTGateプランは月毎に計算し、来月のあなたの最初加入した日まで、今のプランのままご利用ですます。キャンセルした日から自動的にQTGateの無料ユーザーになります。おアカウトは(月)払いの場合は、来月の自動払いは中止となります。年払いの場合は、ご使った分に月普通料金と計算し控除してから、お支払いを使ったクレジットカードに戻ります。販促コードまたはテストユーザーにはキャンセルすることができません。',
cancelPlanMessage1: (planName, isAnnual, expire) => {
- return `あなたのプランは${isAnnual ? `一年契約です。キャンセルをした場合は、ご利用して頂いた月に普通料金と請求を計算されます。お返し金額はプラン年契約料金 us$[${getPlanPrice(planName, true)}] - プラン普通月料金 us$[${getPlanPrice(planName, false)}] X ご利用頂いた月[${12 - getRemainingMonth(expire)}] = 戻る金額 us$[${getCurrentPlanCancelBalance(expire, planName)}]となります。` : `月プランです。キャンセルにすると次の更新日[${nextExpirDate(expire).toLocaleDateString()}]に自動更新はしませんです。`}`;
+ return `あなたのプランは${isAnnual ? `一年契約です。キャンセルをした場合は、ご利用して頂いた月に普通料金と請求を計算されます。お返し金額は,お支払って頂いたプラン年契約料金 us$${getPlanPrice(planName, true)} - そのプランの普通月料金 us$${getPlanPrice(planName, false)} X ご利用して頂いた月(本月も含めて):${12 - getRemainingMonth(expire)} = 戻る金額 us$${getCurrentPlanCancelBalance(expire, planName)}とまります。7日内お支払って頂いたクレジットカードへ返金とします。` : `月プランです。キャンセルにすると次の更新日${nextExpirDate(expire).toLocaleDateString()}に自動更新はしませんです。`}`;
}
},
QTGateDonate: {
@@ -1395,9 +1397,9 @@ const infoDefine = [
qtgateTeam: 'The QTGate Team',
networkShareTitle: 'Bandwidth',
CancelSuccess: (PlanExpire, isAnnual, returnAmount) => {
- return `Your subscriptions was cancelled. You may keep use QTGate service with this plan until ${PlanExpire.toLocaleDateString()}. Restrictions apply to free accounts and accounts using promotions. ${isAnnual ? `us$${returnAmount} will return to your paid card in 5 working day.` : `Automatically canceled.`} `;
+ return `Your subscriptions was cancelled. You may keep use QTGate service with this plan until ${new Date(PlanExpire).toLocaleDateString()}. Restrictions apply to free accounts and accounts using promotions. ${isAnnual ? `Refund amount us$${returnAmount} will return to your paid card account in 5 working day.` : `Automatically canceled.`} `;
},
- currentPlanExpire: ['Plan expires at:', 'Renews at', 'monthly reset day '],
+ currentPlanExpire: ['Plan expires on: ', 'Renews at', 'monthly reset day '],
currentAnnualPlan: ['Monthly plan', 'Annual plan'],
cardPaymentErrorMessage: ['Error: card number or have an unsupported card type.', 'Error: expiration!', 'Error: Card Security Code', 'Error: Card owner postcode',
'Error: payment failed. Please try again late.',
@@ -1411,14 +1413,15 @@ const infoDefine = [
MonthBandwidthTitle: 'Gateway Bandwidth:',
dayBandwidthTitle: 'Day limited:',
bandwidthBalance: 'Bandwidth remaining: ',
- upgradeTitle: 'Upgrade Option',
+ upgradeTitle: 'Upgrade account plan',
+ accountOptionButton: 'Account option',
planPrice: 'Plan price:',
monthResetDay: 'Monthly reset day: ',
monthResetDayAfter: 'th',
cantUpgradeMonthly: 'Annual may not downgrade to monthly plan. Please cancel current plan, then select this one.',
DowngradeTitle: 'Downgrade Option',
cancelPlan: 'Cancel plan',
- cantCancelInformation: 'Your plan may not be cancelled, free user, plan was create via QTGate test program, used redeem code.',
+ cantCancelInformation: 'This subscription plan may not be cancelled. Free user plans, promotions, special codes and test program plans cannot be cancelled. ',
multiOpn: 'OPN multi-gateway technology',
MonthBandwidthTitle1: 'Bandwidth',
serverShare: 'Gateway',
@@ -1433,17 +1436,17 @@ const infoDefine = [
cvcNumber: 'Card Security Code',
annualPay: 'Annual per month only',
canadaCard: '*GST(BC) 5.0% will be applied automatically if your billing address located in Canada.',
- multiRegion: ['multi-gateway via simple region', 'multi-gateway via multi region', 'multi-gateway via multi region', 'multi-gateway via multi region'],
+ multiRegion: ['multi-gateway in single region', 'multi-gateway in multi-regions*', 'multi-gateway in multi-regions*', 'multi-gateway in multi-regions'],
continue: 'Next step',
- serverShareData: ['Share gateway', '1 dedicated gateway server*', '2 dedicated gateway server*', '4 dedicated gateway server'],
- internetShareData: ['Share high speed internet', 'Dedicated 1 high speed internet*', 'Dedicated 2 high speed internet*', 'Dedicated 4 high speed internet'],
- maxmultigateway: ['Max 2 multi-gateway', 'Max 4 multi-gateway*', 'Max 4 multi-gateway'],
+ serverShareData: ['Shared gateway', 'Dedicated gateway server*', 'Dedicated 2 gateway server*', 'Dedicated 4 gateway server'],
+ internetShareData: ['Shared High Speed Bandwidth', 'Dedicated High Speed Bandwidth*', 'Dedicated 2 High Speed Bandwidth*', 'Dedicated 4 High Speed Bandwidth'],
+ maxmultigateway: ['Max: 2 multi-gateway', 'Max: 4 multi-gateway*', 'Max: 4 multi-gateway'],
monthlyPay: 'Monthly pricing',
- aboutCancel: 'About cancel subscription',
- cancelPlanMessage: 'You may cancel your QTGate subscription at any time, and you will continue to have access to the QTGate services through the end of your paid period until all remaining subscription time in your account is used up. Restrictions apply to free accounts and accounts using promotions.',
+ aboutCancel: '*About Subscription cancellation',
+ cancelPlanMessage: 'You may cancel your QTGate subscription at any time from within the this app. You will continue to have access to the QTGate services through the end of your paid period until all remaining subscription time in your account is used up. Please refer to the Terms of Service for cancellation and refund policy. Restrictions may apply to free plans and promotional accounts.',
serverShareData1: 'Your dedicated server will be share ratio when you connected over your dedicated count via use Multi-gateway technology.',
cancelPlanMessage1: (planName, isAnnual, expire) => {
- return `Your plan is ${isAnnual ? `annual paid ${getPlanPrice(planName, true)}. The passed ${12 - getRemainingMonth(expire)} month will being normal price us$${getPlanPrice(planName, false)}, QTGate will refunds us$${getCurrentPlanCancelBalance(expire, planName)} to your paid card.` : `monthly, it will not be renew at ${nextExpirDate(expire).toLocaleDateString()} if you cancel this plan.`}`;
+ return `Your plan is ${isAnnual ? `annual paid us$${getPlanPrice(planName, true)}. The passed ${12 - getRemainingMonth(expire)} month ( included this month ) will being normal price about this plan as us$${getPlanPrice(planName, false)}, QTGate will refunds us$${getCurrentPlanCancelBalance(expire, planName)} to your paid card account in 7 working days.` : `monthly, it will not be renew at ${nextExpirDate(expire).toLocaleDateString()} if you cancel this plan.`}`;
}
},
QTGateDonate: {
@@ -1717,7 +1720,7 @@ const infoDefine = [
smtpServerInput: 'SMTP server name or IP address',
emailServerPassword: 'Email account password ( app password )',
Error_portNumber: 'Port number should be from 1 to 65535.',
- imapAccountConform: '
By clicking submit you are agreeing to this:This email is a temporary account for use with QTGate services. You agree QTGate may have full access to this account for transferring data between you and QTGate.',
+ imapAccountConform: 'By clicking submit you are agreeing to:This email is a temporary account for use with QTGate services. QTGate may have full access to this account in use of QTGate’s services.',
agree: `I understand and agree to continue.`,
imapOtherCheckError: 'Cannot connect to email server! Server name, IP address or Port number may have a mistake. Please check the details of your email setup!',
CertificateError: 'Certificate for this email server is not trusted. Please select "Keep connected even if certificate is not trusted" in settings if you still want to connect. Your email login information maybe leaked to this email server!',
@@ -1792,11 +1795,11 @@ const infoDefine = [
finishedDeleteKeyPair: 'Key pair deleted!',
offlineError: 'There is no internet connection detected. Please check your network and try again!',
imapErrorMessage: [
- 'QTGate did not respond your connection request. QTGate system may stopping service. Try do connection request late again. Or connect QTGate support please.',
+ 'There was an error in establishing connection to QTGate. Please try to connect again or try at a later time. If you continue to receive this error, please contact QTGate support. ',
'Data format error!',
'This computer does not detect an internet connection. Please check your network and try again!',
`Email server did respond to username or an error in password. You may need use APP password to pass this test if you did normal password. Or your app passwords need to be updated.`,
- `Can't connect to email server with the port. Please check the IMAP port number. This port may be filtered by a firewall in your network.`,
+ `Error in connecting to email server with the current IMAP port. Please check the email account to make sure IMAP is enabled and the IMAP port settings. The port may be filtered by a firewall on your network.`,
`There is a problem with this IMAP email server's security certificate!`,
`Error in email server’s address. Please check the email server’s domain.`,
'This email provider currently looks does not support QTGate’s @OPN technology, please try do test again, or change to another email provider.',
@@ -1808,8 +1811,8 @@ const infoDefine = [
emailConform: {
activeViewTitle: 'Active your keypair.',
emailTitle: 'Welcome to QTGate.',
- info1_1: 'Key pair verification is not complete. A verification email from QTGate has been sent. Please check your [',
- info1_2: '] mailbox. If you have one more then one mail from QTGate in your mailbox, please choose the newest one. If you not find the email, please double check your key pair email address! You may delete your key pair and generate a new key pair. ',
+ info1_1: 'Please complete key pair verification. A verification email from QTGate has been sent. Please check your [',
+ info1_2: '] mailbox. If you received more then one email from QTGate, please choose the newest email. If you not find the email, please double check your key pair email address! If you have an error, you may delete your key pair and generate a new key pair.',
info2: 'Copy all content from [-----BEGIN PGP MESSAGE-----] ... to [-----END PGP MESSAGE-----]. Paste into this text box.',
emailDetail1: 'Dear ',
emailDetail1_1: ' ,',
@@ -1817,7 +1820,7 @@ const infoDefine = [
bottom1_1: 'Best regards,',
bottom1_2: 'The QTGate team',
requestReturn: ['ERROR! QTGate system refuse your request, may be you did request repeatedly, please try again late.', 'Verification mail has been sent.'],
- conformButtom: 'Conform',
+ conformButtom: 'Confirm',
reSendRequest: 'Request another verification email',
formatError: [
'Format error! Copy all content from [-----BEGIN PGP MESSAGE-----] ... to [-----END PGP MESSAGE-----]. Paste into this text box.',
@@ -1857,8 +1860,8 @@ const infoDefine = [
''],
GlobalIpInfo: `Please note: When connecting to iOPN, your IP will be visible only to QTGate. Rest assured, your privacy is safe as QTGate does not log IP nor store any communications data. For stealth IP connection, please use @OPN. If [@OPN] option is not available, you may need to check your IMAP email account. (currently @OPN only supports iClould IMAP.)`,
cacheDatePlaceholder: 'Web cache freshness lifetime.',
- sendConnectRequestMail: ['QTGate connection maybe down. A connection request mail was sent to QTGate system. Please wait a moment.',
- 'Free user connection will be down when user has not used QTGate in the last 24 hours. QTGate system keeps connected for 1 month for paid users.'],
+ sendConnectRequestMail: ['QTGate connection maybe down. Please wait a moment, re-connecting to QTGate gateway.',
+ 'For users on a free plan, connection will reset after 24 hours of non use. Connection is kept open for 1 month for users on a paid plan.'],
cacheDatePlaceDate: [{ name: '1 hour', id: 1 }, { name: '12 hour', id: 12 }, { name: '1 day', id: 24 }, { name: '15 days', id: 360 }, { name: '1 month', id: 720 }, { name: '6 months', id: 4320 }, { name: 'forever', id: -1 }],
atQTGateDetail: [
`Recommended for full privacy. @OPN@ uses QTGate’s “Quiet” technology to create a obfuscated private network by refracting encrypted data packets thru email servers. @OPN provides stealth internet communications where your IP address is hidden to client or proxy servers. Gaming and video stream my not be supported due to stability and speeds affected by email server choice. Currently iCloud mail is only supported.`,
@@ -1894,10 +1897,10 @@ const infoDefine = [
disconnecting: 'Disconnecting'
},
qtGateView: {
- QTGateConnectResultWaiting: 'Please wait. It will take a few minutes to respond to your connection request to QTGate.',
+ QTGateConnectResultWaiting: 'Please wait. It will may take a few minutes to establish your connection to QTGate.',
title: 'QTGate connect',
mainImapAccount: 'Email account for communicating with QTGate',
- QTGateDisconnectInfo: 'Lost QTGate connect. Please select IMAP account to send email for request connect.',
+ QTGateDisconnectInfo: 'QTGate disconnected. Please select an IMAP account to use for connection request. ',
QTGateConnectStatus: 'Status of QTGate connection',
QTGateConnectResult: [
'QTGate disconnected, click to connect to QTGate.', 'Connecting to QTGate.', 'QTGate Connected.', 'Connection stopped with error! Please check IMAP account settings!',
@@ -1922,14 +1925,13 @@ const infoDefine = [
networkShareTitle: '代理伺服器網絡',
stripePayment: '銀行網關支付',
promoButton: '我有促銷碼',
- promoCode: 'XXXX-XXXX-XXXX-XXXX',
qtgatePayment: 'QTGate網關支付',
paymentProblem1: '支付遇到問題',
paymentProblem: '您目前的所在區域看上去銀行網關被和諧,您可以使用QTGate網關支付來完成支付',
title: '賬戶管理',
currentPlanExpire: ['訂閱截止日期:', '下一次自動續訂日', '每月數據重置日'],
CancelSuccess: (PlanExpire, isAnnual, returnAmount) => {
- return `中止訂閱成功。您可以一直使用您的原訂閱到${PlanExpire.toLocaleDateString()}為止。以後您將會自動成為QTGate免費用戶可以繼續使用QTGate的各項免費功能。 ${isAnnual ? `您的餘款us$${returnAmount}會在5個工作日內退還到您的支付卡。 ` : '下月起QTGate系統不再自動扣款。 '} 祝您網絡衝浪愉快。`;
+ return `中止訂閱成功。您可以一直使用您的原訂閱到${new Date(PlanExpire).toLocaleDateString()}為止。以後您將會自動成為QTGate免費用戶,可以繼續使用QTGate的各項免費功能。 ${isAnnual ? `退款金額us$${returnAmount}會在5個工作日內退還到您的支付卡。 ` : '下月起QTGate系統不再自動扣款。 '} 祝您網絡衝浪愉快。`;
},
currentAnnualPlan: ['月度訂閱', '年度訂閱'],
cardPaymentErrorMessage: ['輸入的信用卡號有誤!', '輸入的信用卡期限有誤!', '輸入的信用卡安全碼有誤!', '輸入的信用卡持有人郵編有誤!', '支付失敗,支付無法完成請稍後再試',
@@ -1946,7 +1948,8 @@ const infoDefine = [
planPrice: '訂閱價格:',
MonthBandwidthTitle: '月度代理伺服器限額:',
dayBandwidthTitle: '每日限額:',
- upgradeTitle: '升級賬戶選項',
+ upgradeTitle: '升級您的訂閱',
+ accountOptionButton: '賬戶選項',
paymentSuccess: '您的訂閱已經完成,數據流量限制已經被更新。祝您網絡衝浪愉快。',
qtgateTeam: 'QTGate開發團隊敬上',
paymentProcessing: '正在通訊中...',
@@ -1976,7 +1979,7 @@ const infoDefine = [
serverShareData1: 'OPN併發多代理技術,同時使用數大於獨占數時,會相應分享您所獨占的資源',
cancelPlanMessage: '可隨時終止您的訂閱,QTGate的訂閱是以月為基本的單位。您的月訂閱將在下月您的訂閱起始日前被終止,您可以繼續使用您的本月訂閱計劃,您將自動回到免費用戶。如果您是每月自動扣款,則下月將不再扣款。如果您是年度訂閱計劃,您的退款將按普通每月訂閱費,扣除您已經使用的月份後計算的差額,將自動返還您所支付的信用卡賬號,如果您是使用促銷碼,或您是測試用戶,您的終止訂閱將不能被接受。 ',
cancelPlanMessage1: (planName, isAnnual, expire) => {
- return `您的訂閱計劃是${isAnnual ? `年度訂閱,退還金額將按照您已付年訂閱費 us$[${getPlanPrice(planName, true)}] - 您已使用月份原價 us$[${getPlanPrice(planName, false)}] X 已使用月數[${12 - getRemainingMonth(expire)}] = 餘額 us$[${getCurrentPlanCancelBalance(expire, planName)}]將退還到您用來支付的信用卡。` : `月訂閱,您的訂閱將下次更新日${nextExpirDate(expire).toLocaleDateString()}時不再被自動扣款和更新。`}`;
+ return `您的訂閱計劃是${isAnnual ? `年度訂閱,退還金額將按照您已付年訂閱費us$${getPlanPrice(planName, true)} - 該訂閱原價 us$${getPlanPrice(planName, false)} X 已使用月數(包括本月) ${12 - getRemainingMonth(expire)} = 餘額 us$${getCurrentPlanCancelBalance(expire, planName)},將在7個工作日內,退還到您用來支付的信用卡帳戶。` : `月訂閱,您的訂閱將下次更新日${nextExpirDate(expire).toLocaleDateString()}時不再被自動扣款和更新。`}`;
}
},
QTGateDonate: {
@@ -3432,7 +3435,6 @@ var view_layout;
return null;
});
this.showCancelSuccess = ko.observable(false);
- this.cancel_PlanExpire = ko.observable(new Date());
this.cancel_Amount = ko.observable(0);
this.promoButton = ko.observable(false);
this.promoInput = ko.observable('');
@@ -4670,7 +4672,7 @@ var view_layout;
delimiter: ''
});
$('.CancelMessage').popup({
- position: 'center right',
+ position: 'right center',
on: 'click',
delay: {
show: 300,
diff --git a/app/public/scripts/home.ts b/app/public/scripts/home.ts
index b374140..7220ec0 100644
--- a/app/public/scripts/home.ts
+++ b/app/public/scripts/home.ts
@@ -394,7 +394,7 @@ const QTGateRegionsSetup: IQTGateRegionsSetup[] = [
const nextExpirDate = ( expire: string ) => {
const now = new Date ()
const _expire = new Date ( expire )
- now.setHours ( 0,0,0,0 )
+ _expire.setHours ( 0,0,0,0 )
if ( now.getTime() > _expire.getTime ()) {
return _expire
}
@@ -431,8 +431,8 @@ const infoDefine = [
paymentProblem1: '支付遇到问题',
paymentProblem:'您的当前所在区域看上去银行网关被和谐,您可以使用QTGate网关支付来完成支付',
QTGatePayRisk: '使用QTGate网关支付,您的个人信息有被泄漏的危险,如果非必要请使用Stript网关支付。',
- CancelSuccess: ( PlanExpire: Date, isAnnual: boolean, returnAmount: number ) => {
- return `中止订阅成功。您可以一直使用您的原订阅到${ PlanExpire.toLocaleDateString() }为止。以后您将会自动成为QTGate免费用户可以继续使用QTGate的各项免费功能。${ isAnnual ? `您的余款us$${ returnAmount }会在5个工作日内退还到您的支付卡。`: '下月起QTGate系统不再自动扣款。'} 祝您网络冲浪愉快。`
+ CancelSuccess: ( PlanExpire: string, isAnnual: boolean, returnAmount: number ) => {
+ return `中止订阅成功。您可以一直使用您的原订阅到${ new Date( PlanExpire) .toLocaleDateString() }为止。以后您将会自动成为QTGate免费用户,可以继续使用QTGate的各项免费功能。${ isAnnual ? `退款金额us$${ returnAmount }会在5个工作日内退还到您的支付卡。`: '下月起QTGate系统不再自动扣款。'} 祝您网络冲浪愉快。`
},
currentPlan:'当前订阅: ',
cardPaymentErrorMessage:['输入的信用卡号有误,或支付系统不支持您的信用卡!','输入的信用卡期限有误!','输入的信用卡安全码有误!','输入的信用卡持有人邮编有误!','支付失败,支付无法完成请稍后再试','支付数据存在错误','您的付款被发卡行所拒绝'],
@@ -447,7 +447,8 @@ const infoDefine = [
currentAnnualPlan: ['月度订阅','年度订阅'],
MonthBandwidthTitle:'月度代理服務器限额:',
dayBandwidthTitle:'毎日限额:',
- upgradeTitle:'升级账户选项',
+ upgradeTitle:'升级订阅',
+ accountOptionButton: '账户选项',
paymentProcessing:'正在通讯中...',
cantUpgradeMonthly: '年度计划不可降级为月度计划。请先终止您当前订阅的年度计划,再重新申请此月度订阅',
DowngradeTitle:'降级账户选项',
@@ -481,7 +482,7 @@ const infoDefine = [
downGradeMessage:'您正在操作降级您的订阅,如果操作成功您将从下月您的订阅之日起,实行新的订阅,如果您是。',
cancelPlanMessage:'QTGate的订阅是以月为基本的单位。您的月订阅将在下月您的订阅起始日前被终止,您可以继续使用您的本月订阅计划,您将自动回到免费用户。如果您是每月自动扣款,则下月将不再扣款。如果您是年度订阅计划,您的退款将按普通每月订阅费,扣除您已经使用的月份后计算的差额,将自动返还您所支付的信用卡账号,如果您是使用促销码,或您是测试用户,您的终止订阅将不能被接受。',
cancelPlanMessage1: ( planName: string, isAnnual: boolean, expire: string ) => {
- return `您的订阅计划是${ isAnnual ? `年度订阅,退还金额将按照您已付年订阅费 us$[${ getPlanPrice ( planName, true )}] - 您已使用月份原价 us$[${ getPlanPrice( planName, false )}] X 已使用月数[${ 12 - getRemainingMonth ( expire )}] = 余额 us$[${ getCurrentPlanCancelBalance ( expire, planName )}]将退还到您用来支付的信用卡。`: `月订阅,您的订阅将下次更新日${ nextExpirDate( expire ).toLocaleDateString() }时不再被自动扣款和更新。`}`
+ return `您的订阅计划是${ isAnnual ? `年度订阅,退还金额将按照您已付年订阅费 us$${ getPlanPrice ( planName, true )} - 该订阅原价 us$${ getPlanPrice( planName, false )} X 已使用月数(包括本月) ${ 12 - getRemainingMonth ( expire )} = 应该退还的金额 us$${ getCurrentPlanCancelBalance ( expire, planName )},将在7个工作日内,退还到您原来支付的信用卡账户。`: `月订阅,您的订阅将下次更新日${ nextExpirDate( expire ).toLocaleDateString() }时不再被自动扣款和更新。`}`
}
},
@@ -954,8 +955,8 @@ const infoDefine = [
QTGatePayRisk: 'QTGate経由でのお支払いは、あなたの個人情報漏洩の恐れがあります。必要でなければStripeでのお支払いをください。',
paymentProblem1:'支払い支障がある',
paymentProblem:'あなた現在いる所在地ではバンク支払いがブラックされている模様です。QTGate経由でのお支払いをしてください。',
- CancelSuccess:( PlanExpire: Date, isAnnual: boolean, returnAmount: number ) => {
- return `プランキャンセルしました。${ PlanExpire.toLocaleDateString() }まで、元プランのままQTGateサービスが使えます。そのあとはQTGateのフリーユーザーと戻ります。${ isAnnual? `元プラン残りus$ ${ returnAmount }は5日ウォキンデイ内お支払い使ったカードに戻ります`:`プラン代自動落しは中止されます`}。これからもよろしくお願い申し上げます。`
+ CancelSuccess:( PlanExpire: string, isAnnual: boolean, returnAmount: number ) => {
+ return `プランキャンセルしました。${ new Date (PlanExpire).toLocaleDateString() }まで、元プランのままQTGateサービスが使えます。そのあとはQTGateのフリーユーザーと戻ります。${ isAnnual? `元プラン残りus$ ${ returnAmount }は5日ウォキンデイ内お支払い使ったカードに戻ります`:`プラン代自動落しは中止されます`}。これからもよろしくお願い申し上げます。`
},
paymentSuccess:'あなたのプランをアップグレードしました。これからもよろしくお願い申し上げます。',
qtgateTeam: 'QTGateチーム全員より',
@@ -982,7 +983,8 @@ const infoDefine = [
monthResetDay:'月レセット日:',
dayBandwidthTitle:'日制限:',
- upgradeTitle:'アップグレードオプション',
+ upgradeTitle:'プランをアップグレード',
+ accountOptionButton: 'アカウトオプション',
DowngradeTitle:'ダウングレードオプション',
cancelPlan:'キャンセルプラン',
networkShareTitle:'ゲットウェイ回線',
@@ -1008,7 +1010,7 @@ const infoDefine = [
maxmultigateway: ['最大二つ並列ゲットウェイ','最大四つ並列ゲットウェイ*','最大四つ並列ゲットウェイ'],
cancelPlanMessage:'QTGateプランは月毎に計算し、来月のあなたの最初加入した日まで、今のプランのままご利用ですます。キャンセルした日から自動的にQTGateの無料ユーザーになります。おアカウトは(月)払いの場合は、来月の自動払いは中止となります。年払いの場合は、ご使った分に月普通料金と計算し控除してから、お支払いを使ったクレジットカードに戻ります。販促コードまたはテストユーザーにはキャンセルすることができません。',
cancelPlanMessage1: ( planName: string, isAnnual: boolean, expire: string ) => {
- return `あなたのプランは${ isAnnual ? `一年契約です。キャンセルをした場合は、ご利用して頂いた月に普通料金と請求を計算されます。お返し金額はプラン年契約料金 us$[${ getPlanPrice ( planName, true )}] - プラン普通月料金 us$[${ getPlanPrice( planName, false )}] X ご利用頂いた月[${ 12 - getRemainingMonth ( expire )}] = 戻る金額 us$[${ getCurrentPlanCancelBalance ( expire, planName )}]となります。`: `月プランです。キャンセルにすると次の更新日[${ nextExpirDate(expire).toLocaleDateString() }]に自動更新はしませんです。`}`
+ return `あなたのプランは${ isAnnual ? `一年契約です。キャンセルをした場合は、ご利用して頂いた月に普通料金と請求を計算されます。お返し金額は,お支払って頂いたプラン年契約料金 us$${ getPlanPrice ( planName, true )} - そのプランの普通月料金 us$${ getPlanPrice( planName, false )} X ご利用して頂いた月(本月も含めて):${ 12 - getRemainingMonth ( expire )} = 戻る金額 us$${ getCurrentPlanCancelBalance ( expire, planName )}とまります。7日内お支払って頂いたクレジットカードへ返金とします。`: `月プランです。キャンセルにすると次の更新日${ nextExpirDate( expire ).toLocaleDateString() }に自動更新はしませんです。`}`
}
},
@@ -1494,10 +1496,10 @@ const infoDefine = [
paymentSuccess:'Your plan has beed upgraded. Happy every day.',
qtgateTeam: 'The QTGate Team',
networkShareTitle:'Bandwidth',
- CancelSuccess: ( PlanExpire: Date, isAnnual: boolean, returnAmount: number ) => {
- return `Your subscriptions was cancelled. You may keep use QTGate service with this plan until ${ PlanExpire.toLocaleDateString() }. Restrictions apply to free accounts and accounts using promotions. ${ isAnnual ? `us$${ returnAmount } will return to your paid card in 5 working day.` : `Automatically canceled.` } `
+ CancelSuccess: ( PlanExpire: string, isAnnual: boolean, returnAmount: number ) => {
+ return `Your subscriptions was cancelled. You may keep use QTGate service with this plan until ${ new Date( PlanExpire ).toLocaleDateString() }. Restrictions apply to free accounts and accounts using promotions. ${ isAnnual ? `Refund amount us$${ returnAmount } will return to your paid card account in 5 working day.` : `Automatically canceled.` } `
},
- currentPlanExpire: ['Plan expires at:','Renews at','monthly reset day '],
+ currentPlanExpire: ['Plan expires on: ','Renews at','monthly reset day '],
currentAnnualPlan: ['Monthly plan','Annual plan'],
cardPaymentErrorMessage:['Error: card number or have an unsupported card type.','Error: expiration!','Error: Card Security Code','Error: Card owner postcode',
'Error: payment failed. Please try again late.',
@@ -1511,14 +1513,15 @@ const infoDefine = [
MonthBandwidthTitle:'Gateway Bandwidth:',
dayBandwidthTitle:'Day limited:',
bandwidthBalance:'Bandwidth remaining: ',
- upgradeTitle: 'Upgrade Option',
+ upgradeTitle: 'Upgrade account plan',
+ accountOptionButton: 'Account option',
planPrice: 'Plan price:',
monthResetDay:'Monthly reset day: ',
monthResetDayAfter:'th',
cantUpgradeMonthly: 'Annual may not downgrade to monthly plan. Please cancel current plan, then select this one.',
DowngradeTitle:'Downgrade Option',
cancelPlan:'Cancel plan',
- cantCancelInformation: 'Your plan may not be cancelled, free user, plan was create via QTGate test program, used redeem code.',
+ cantCancelInformation: 'This subscription plan may not be cancelled. Free user plans, promotions, special codes and test program plans cannot be cancelled. ',
multiOpn:'OPN multi-gateway technology',
MonthBandwidthTitle1:'Bandwidth',
serverShare:'Gateway',
@@ -1533,17 +1536,17 @@ const infoDefine = [
cvcNumber: 'Card Security Code',
annualPay:'Annual per month only',
canadaCard:'*GST(BC) 5.0% will be applied automatically if your billing address located in Canada.',
- multiRegion:['multi-gateway via simple region','multi-gateway via multi region','multi-gateway via multi region','multi-gateway via multi region'],
+ multiRegion:['multi-gateway in single region','multi-gateway in multi-regions*','multi-gateway in multi-regions*','multi-gateway in multi-regions'],
continue:'Next step',
- serverShareData:['Share gateway','1 dedicated gateway server*','2 dedicated gateway server*','4 dedicated gateway server'],
- internetShareData:['Share high speed internet','Dedicated 1 high speed internet*','Dedicated 2 high speed internet*','Dedicated 4 high speed internet'],
- maxmultigateway: ['Max 2 multi-gateway','Max 4 multi-gateway*','Max 4 multi-gateway'],
+ serverShareData:['Shared gateway','Dedicated gateway server*','Dedicated 2 gateway server*','Dedicated 4 gateway server'],
+ internetShareData:['Shared High Speed Bandwidth','Dedicated High Speed Bandwidth*','Dedicated 2 High Speed Bandwidth*','Dedicated 4 High Speed Bandwidth'],
+ maxmultigateway: ['Max: 2 multi-gateway','Max: 4 multi-gateway*','Max: 4 multi-gateway'],
monthlyPay:'Monthly pricing',
- aboutCancel: 'About cancel subscription',
- cancelPlanMessage: 'You may cancel your QTGate subscription at any time, and you will continue to have access to the QTGate services through the end of your paid period until all remaining subscription time in your account is used up. Restrictions apply to free accounts and accounts using promotions.',
+ aboutCancel: '*About Subscription cancellation',
+ cancelPlanMessage: 'You may cancel your QTGate subscription at any time from within the this app. You will continue to have access to the QTGate services through the end of your paid period until all remaining subscription time in your account is used up. Please refer to the Terms of Service for cancellation and refund policy. Restrictions may apply to free plans and promotional accounts.',
serverShareData1:'Your dedicated server will be share ratio when you connected over your dedicated count via use Multi-gateway technology.',
cancelPlanMessage1: ( planName: string, isAnnual: boolean, expire: string ) => {
- return `Your plan is ${ isAnnual ? `annual paid ${ getPlanPrice ( planName, true )}. The passed ${ 12 - getRemainingMonth ( expire )} month will being normal price us$${ getPlanPrice( planName, false )}, QTGate will refunds us$${ getCurrentPlanCancelBalance ( expire, planName )} to your paid card.`: `monthly, it will not be renew at ${ nextExpirDate (expire).toLocaleDateString() } if you cancel this plan.`}`
+ return `Your plan is ${ isAnnual ? `annual paid us$${ getPlanPrice ( planName, true )}. The passed ${ 12 - getRemainingMonth ( expire )} month ( included this month ) will being normal price about this plan as us$${ getPlanPrice( planName, false )}, QTGate will refunds us$${ getCurrentPlanCancelBalance ( expire, planName )} to your paid card account in 7 working days.`: `monthly, it will not be renew at ${ nextExpirDate (expire).toLocaleDateString() } if you cancel this plan.`}`
}
},
@@ -1842,7 +1845,7 @@ const infoDefine = [
smtpServerInput: 'SMTP server name or IP address',
emailServerPassword: 'Email account password ( app password )',
Error_portNumber: 'Port number should be from 1 to 65535.',
- imapAccountConform: 'By clicking submit you are agreeing to this:This email is a temporary account for use with QTGate services. You agree QTGate may have full access to this account for transferring data between you and QTGate.',
+ imapAccountConform: 'By clicking submit you are agreeing to:This email is a temporary account for use with QTGate services. QTGate may have full access to this account in use of QTGate’s services.',
agree: `I understand and agree to continue.`,
imapOtherCheckError: 'Cannot connect to email server! Server name, IP address or Port number may have a mistake. Please check the details of your email setup!',
CertificateError: 'Certificate for this email server is not trusted. Please select "Keep connected even if certificate is not trusted" in settings if you still want to connect. Your email login information maybe leaked to this email server!',
@@ -1922,11 +1925,11 @@ const infoDefine = [
finishedDeleteKeyPair: 'Key pair deleted!',
offlineError: 'There is no internet connection detected. Please check your network and try again!',
imapErrorMessage: [
- 'QTGate did not respond your connection request. QTGate system may stopping service. Try do connection request late again. Or connect QTGate support please.',
+ 'There was an error in establishing connection to QTGate. Please try to connect again or try at a later time. If you continue to receive this error, please contact QTGate support. ',
'Data format error!',
'This computer does not detect an internet connection. Please check your network and try again!',
`Email server did respond to username or an error in password. You may need use APP password to pass this test if you did normal password. Or your app passwords need to be updated.`,
- `Can't connect to email server with the port. Please check the IMAP port number. This port may be filtered by a firewall in your network.`,
+ `Error in connecting to email server with the current IMAP port. Please check the email account to make sure IMAP is enabled and the IMAP port settings. The port may be filtered by a firewall on your network.`,
`There is a problem with this IMAP email server's security certificate!`,
`Error in email server’s address. Please check the email server’s domain.`,
'This email provider currently looks does not support QTGate’s @OPN technology, please try do test again, or change to another email provider.',
@@ -1938,8 +1941,8 @@ const infoDefine = [
emailConform: {
activeViewTitle: 'Active your keypair.',
emailTitle: 'Welcome to QTGate.',
- info1_1: 'Key pair verification is not complete. A verification email from QTGate has been sent. Please check your [',
- info1_2: '] mailbox. If you have one more then one mail from QTGate in your mailbox, please choose the newest one. If you not find the email, please double check your key pair email address! You may delete your key pair and generate a new key pair. ',
+ info1_1: 'Please complete key pair verification. A verification email from QTGate has been sent. Please check your [',
+ info1_2: '] mailbox. If you received more then one email from QTGate, please choose the newest email. If you not find the email, please double check your key pair email address! If you have an error, you may delete your key pair and generate a new key pair.',
info2: 'Copy all content from [-----BEGIN PGP MESSAGE-----] ... to [-----END PGP MESSAGE-----]. Paste into this text box.',
emailDetail1: 'Dear ',
emailDetail1_1: ' ,',
@@ -1947,7 +1950,7 @@ const infoDefine = [
bottom1_1: 'Best regards,',
bottom1_2: 'The QTGate team',
requestReturn: ['ERROR! QTGate system refuse your request, may be you did request repeatedly, please try again late.','Verification mail has been sent.'],
- conformButtom: 'Conform',
+ conformButtom: 'Confirm',
reSendRequest:'Request another verification email',
formatError: [
'Format error! Copy all content from [-----BEGIN PGP MESSAGE-----] ... to [-----END PGP MESSAGE-----]. Paste into this text box.',
@@ -1989,8 +1992,8 @@ const infoDefine = [
''],
GlobalIpInfo: `Please note: When connecting to iOPN, your IP will be visible only to QTGate. Rest assured, your privacy is safe as QTGate does not log IP nor store any communications data. For stealth IP connection, please use @OPN. If [@OPN] option is not available, you may need to check your IMAP email account. (currently @OPN only supports iClould IMAP.)`,
cacheDatePlaceholder: 'Web cache freshness lifetime.',
- sendConnectRequestMail:['QTGate connection maybe down. A connection request mail was sent to QTGate system. Please wait a moment.',
- 'Free user connection will be down when user has not used QTGate in the last 24 hours. QTGate system keeps connected for 1 month for paid users.'],
+ sendConnectRequestMail:['QTGate connection maybe down. Please wait a moment, re-connecting to QTGate gateway.',
+ 'For users on a free plan, connection will reset after 24 hours of non use. Connection is kept open for 1 month for users on a paid plan.'],
cacheDatePlaceDate:[{ name:'1 hour', id: 1 }, { name:'12 hour', id: 12 },{ name:'1 day', id: 24 }, { name:'15 days', id: 360 }, { name:'1 month', id: 720 }, { name:'6 months', id: 4320 }, { name:'forever', id: -1 }],
atQTGateDetail: [
`Recommended for full privacy. @OPN@ uses QTGate’s “Quiet” technology to create a obfuscated private network by refracting encrypted data packets thru email servers. @OPN provides stealth internet communications where your IP address is hidden to client or proxy servers. Gaming and video stream my not be supported due to stability and speeds affected by email server choice. Currently iCloud mail is only supported.`,
@@ -2028,10 +2031,10 @@ const infoDefine = [
},
qtGateView: {
- QTGateConnectResultWaiting: 'Please wait. It will take a few minutes to respond to your connection request to QTGate.',
+ QTGateConnectResultWaiting: 'Please wait. It will may take a few minutes to establish your connection to QTGate.',
title: 'QTGate connect',
mainImapAccount: 'Email account for communicating with QTGate',
- QTGateDisconnectInfo: 'Lost QTGate connect. Please select IMAP account to send email for request connect.',
+ QTGateDisconnectInfo: 'QTGate disconnected. Please select an IMAP account to use for connection request. ',
QTGateConnectStatus: 'Status of QTGate connection',
QTGateConnectResult: [
'QTGate disconnected, click to connect to QTGate.','Connecting to QTGate.','QTGate Connected.','Connection stopped with error! Please check IMAP account settings!',
@@ -2058,14 +2061,13 @@ const infoDefine = [
networkShareTitle:'代理伺服器網絡',
stripePayment: '銀行網關支付',
promoButton: '我有促銷碼',
- promoCode: 'XXXX-XXXX-XXXX-XXXX',
qtgatePayment:'QTGate網關支付',
paymentProblem1:'支付遇到問題',
paymentProblem:'您目前的所在區域看上去銀行網關被和諧,您可以使用QTGate網關支付來完成支付',
title: '賬戶管理',
currentPlanExpire: ['訂閱截止日期:','下一次自動續訂日','每月數據重置日'],
- CancelSuccess: ( PlanExpire: Date, isAnnual: boolean, returnAmount: number ) => {
- return `中止訂閱成功。您可以一直使用您的原訂閱到${ PlanExpire.toLocaleDateString() }為止。以後您將會自動成為QTGate免費用戶可以繼續使用QTGate的各項免費功能。 ${ isAnnual ? `您的餘款us$${ returnAmount }會在5個工作日內退還到您的支付卡。 `: '下月起QTGate系統不再自動扣款。 '} 祝您網絡衝浪愉快。`
+ CancelSuccess: ( PlanExpire: string, isAnnual: boolean, returnAmount: number ) => {
+ return `中止訂閱成功。您可以一直使用您的原訂閱到${ new Date (PlanExpire).toLocaleDateString() }為止。以後您將會自動成為QTGate免費用戶,可以繼續使用QTGate的各項免費功能。 ${ isAnnual ? `退款金額us$${ returnAmount }會在5個工作日內退還到您的支付卡。 `: '下月起QTGate系統不再自動扣款。 '} 祝您網絡衝浪愉快。`
},
currentAnnualPlan: ['月度訂閱','年度訂閱'],
cardPaymentErrorMessage:['輸入的信用卡號有誤!','輸入的信用卡期限有誤!','輸入的信用卡安全碼有誤!','輸入的信用卡持有人郵編有誤!','支付失敗,支付無法完成請稍後再試',
@@ -2082,7 +2084,8 @@ const infoDefine = [
planPrice: '訂閱價格:',
MonthBandwidthTitle:'月度代理伺服器限額:',
dayBandwidthTitle:'每日限額:',
- upgradeTitle:'升級賬戶選項',
+ upgradeTitle:'升級您的訂閱',
+ accountOptionButton: '賬戶選項',
paymentSuccess:'您的訂閱已經完成,數據流量限制已經被更新。祝您網絡衝浪愉快。',
qtgateTeam: 'QTGate開發團隊敬上',
paymentProcessing:'正在通訊中...',
@@ -2091,7 +2094,7 @@ const infoDefine = [
cancelPlan:'終止當前訂閱',
cantCancelInformation: '您的賬戶可能是QTGate測試用戶,或使用優惠碼產生的訂閱用戶,此類賬戶可以升級但不能被中止',
MonthBandwidthTitle1:'傳送限額',
- monthlyAutoPay:'每月自動扣款',
+ monthlyAutoPay:() => { return '每月自動扣款'},
annualPay:'年付費每月只需',
expirationYear: '信用卡期限',
serverShare:'代理伺服器',
@@ -2112,7 +2115,7 @@ const infoDefine = [
serverShareData1:'OPN併發多代理技術,同時使用數大於獨占數時,會相應分享您所獨占的資源',
cancelPlanMessage:'可隨時終止您的訂閱,QTGate的訂閱是以月為基本的單位。您的月訂閱將在下月您的訂閱起始日前被終止,您可以繼續使用您的本月訂閱計劃,您將自動回到免費用戶。如果您是每月自動扣款,則下月將不再扣款。如果您是年度訂閱計劃,您的退款將按普通每月訂閱費,扣除您已經使用的月份後計算的差額,將自動返還您所支付的信用卡賬號,如果您是使用促銷碼,或您是測試用戶,您的終止訂閱將不能被接受。 ',
cancelPlanMessage1: ( planName: string, isAnnual: boolean, expire: string ) => {
- return `您的訂閱計劃是${ isAnnual ? `年度訂閱,退還金額將按照您已付年訂閱費 us$[${ getPlanPrice ( planName, true )}] - 您已使用月份原價 us$[${ getPlanPrice( planName, false )}] X 已使用月數[${ 12 - getRemainingMonth ( expire )}] = 餘額 us$[${ getCurrentPlanCancelBalance ( expire, planName )}]將退還到您用來支付的信用卡。`: `月訂閱,您的訂閱將下次更新日${ nextExpirDate (expire).toLocaleDateString() }時不再被自動扣款和更新。`}`
+ return `您的訂閱計劃是${ isAnnual ? `年度訂閱,退還金額將按照您已付年訂閱費us$${ getPlanPrice ( planName, true )} - 該訂閱原價 us$${ getPlanPrice( planName, false )} X 已使用月數(包括本月) ${ 12 - getRemainingMonth ( expire )} = 餘額 us$${ getCurrentPlanCancelBalance ( expire, planName )},將在7個工作日內,退還到您用來支付的信用卡帳戶。`: `月訂閱,您的訂閱將下次更新日${ nextExpirDate (expire).toLocaleDateString() }時不再被自動扣款和更新。`}`
}
},
@@ -5029,7 +5032,7 @@ module view_layout {
})
$('.CancelMessage').popup ({
- position: 'center right',
+ position: 'right center',
on: 'click',
delay: {
show: 300,
@@ -5250,7 +5253,6 @@ module view_layout {
}
public showCancelSuccess = ko.observable ( false )
- public cancel_PlanExpire = ko.observable (new Date())
public cancel_Amount = ko.observable (0)
public doCancelPlan () {
diff --git a/app/views/home/index.pug b/app/views/home/index.pug
index 0bdcf28..4a1db60 100644
--- a/app/views/home/index.pug
+++ b/app/views/home/index.pug
@@ -296,7 +296,7 @@ block jumbotron1
p( data-bind = " text: infoDefine[ languageIndex() ].Home_keyPairInfo_view.creatDate + keyPair().createDate" )
p( data-bind = " text: infoDefine[ languageIndex() ].Home_keyPairInfo_view.keyLength + keyPair().keyLength" )
p( data-bind = " text: infoDefine[ languageIndex() ].Home_keyPairInfo_view.keyID + keyPair().publicKeyID" )
- .ui.button.positive( data-bind = "visible: QTTransferData(),click: showUserDetail,text: infoDefine[ languageIndex() ].account.upgradeTitle")
+ .ui.button.positive( data-bind = "visible: QTTransferData(),click: showUserDetail,text: infoDefine[ languageIndex() ].account.accountOptionButton")
.ui.bottom.right.attached.label.background-clolr-white( data-bind = " click: () => { keyPair_delete_btn_view ( true ); showPasswordErrorMessage ( false ); showSystemError ( false )}, visible: ! keyPair_delete_btn_view()")
a
i.trash.outline.icon.large( style = " color: red;")
@@ -363,7 +363,7 @@ block jumbotron1
form.ui.form
.fields
.field( style = "width: 17em;")
- input.promoCodeInput( data-bind="value: promoInput, attr: { placeholder: infoDefine[ languageIndex() ].account.promoCode}")
+ input.promoCodeInput( data-bind="value: promoInput" placeholder ="XXXX-XXXX-XXXX-XXXX" type="text")
.field
.ui.buttons
.ui.button( data-bind="text: infoDefine[ languageIndex() ].home_index_view.cancel, click: ()=> {return promoButton(false)}")
@@ -373,9 +373,9 @@ block jumbotron1
.row( data-bind = "visible: cancelPlanButton()" style="padding: 0px;padding-top: 0.5em;")
i.link.remove.circle.big.icon( data-bind="click: () => { cancelPlanButton (false); return false;}, clickBubble: false" style="position: absolute;margin-left: 23.7em;z-index: 999;color: gray;")
.ui.olive.message.transition( data-bind="css: { hidden: !cancelPlanButton ()}")
- p( data-bind = "text: infoDefine[ languageIndex() ].account.cancelPlanMessage, visible: !showCancelSuccess()")
- p( data-bind = "text: QTTransferData() ? infoDefine[ languageIndex() ].account.cancelPlanMessage1 ( QTTransferData().productionPackage, QTTransferData().isAnnual, QTTransferData().expire ): null, visible: !showCancelSuccess()")
- p( data-bind="visible: showCancelSuccess(), text:infoDefine[ languageIndex() ].account.CancelSuccess( cancel_PlanExpire(), QTTransferData() ? QTTransferData().isAnnual: false, cancel_Amount())")
+ p( data-bind = "html: infoDefine[ languageIndex() ].account.cancelPlanMessage, visible: !showCancelSuccess()")
+ p( data-bind = "html: QTTransferData() ? infoDefine[ languageIndex() ].account.cancelPlanMessage1 ( QTTransferData().productionPackage, QTTransferData().isAnnual, QTTransferData().expire ): '', visible: !showCancelSuccess()" style="color: darkblue;")
+ p( data-bind="visible: showCancelSuccess(), text: QTTransferData() ? infoDefine[ languageIndex() ].account.CancelSuccess( QTTransferData().expire, QTTransferData().isAnnual, cancel_Amount()) : null")
p( data-bind="visible: showCancelSuccess(), text:infoDefine[ languageIndex() ].account.qtgateTeam")
button.ui.button.negative( data-bind = "visible: !showCancelSuccess(), text: infoDefine[ languageIndex() ].account.cancelPlanButton, click: doCancelPlan, css: { loading: doingPayment() } ")
.ui.raised.green.segment( data-bind = "visible: showSuccessPayment()")
@@ -448,7 +448,7 @@ block jumbotron1
span( data-bind = "visible: showStripeError()")
i.icon.warning.sign.red
.hidden.content
- img( src="/images/Stripe.svg" style="margin-top: -0.6em;width: 60%;")
+ img( src="/images/Stripe.svg" style="margin-top: -0.8em;width: 60%;")
//-.ui.animated.fade.basic.button( data-bind = " click: openStripeAlipay, css: { disabled: showStripeError() }")
.visible.content
img( src="/images/alipay.svg" style="height: 14px;")
@@ -479,62 +479,61 @@ block jumbotron1
script( data-bind = "attr: { 'data-amount': cardPayAmount()}" src = "https://checkout.stripe.com/checkout.js" class= "stripe-button" data-key = "pk_test_pSOYZa8ABXjatNN5jHb2UTdN" data-name = "QTGate Systems Inc" data-description = "Widget" data-locale = "auto" data-zip-code="true")
.ui.blue.segment.form( data-bind = "visible: UserPermentShapeDetail() && cardpay()")
- .ui.dividing.header
- .ui.grid
- .row( style="padding-bottom: 0px;")
- .eight.wide.column
- span( data-bind = "text: infoDefine[ $root.languageIndex() ].account.payAmountTitile")
- span( style="padding-left: 1em;padding-right: 0.2em;font-style: italic;font-weight: lighter;font-size: medium;") us$
- span( data-bind = "text: totalAmount()" style="color: darkolivegreen;font-size: larger;")
+ .ui.grid
+ .row( style="padding-bottom: 0px;")
+ .eight.wide.column
+ span( data-bind = "text: infoDefine[ $root.languageIndex() ].account.payAmountTitile")
+ span( style="padding-left: 1em;padding-right: 0.2em;font-style: italic;font-weight: lighter;font-size: medium;") us$
+ span( data-bind = "text: totalAmount()" style="color: darkolivegreen;font-size: larger;")
- .right.aligned.eight.wide.column( data-bind="style:{'padding-bottom': showCurrentPlanBalance() ? '0px;' : ''}" style="color: gray;")
- span.ui.mini.images
- img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='visa', showCardImage: cardType()==='visa' }" src="/images/visa.svg")
- img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='mastercard', showCardImage: cardType()==='mastercard' }" src="/images/mastercard.svg")
- img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='amex', showCardImage: cardType()==='amex' }" src="/images/amex.svg")
- img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='discover', showCardImage: cardType()==='discover' }" src="/images/discover.svg")
- img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='jcb', showCardImage: cardType()==='jcb' }" src="/images/jcb.svg")
- img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='diners', showCardImage: cardType()==='diners' }" src="/images/diners.svg")
- .sixteen.wide.column(data-bind = "visible: showCurrentPlanBalance()" style="font-size: small;padding-top: 0px;color: gray;font-weight: lighter;")
- span( data-bind= " text: infoDefine[ $root.languageIndex() ].account.planPrice")
- span( style="font-size: smaller;") us$
- span( data-bind=" text: selectPlanPrice()")
- span( style = "padding: 0.5em;") -
- spann( data-bind= " text: infoDefine[ $root.languageIndex() ].account.oldPlanBalance")
- span( style="font-size: smaller;") us$
- span( data-bind=" text: showCurrentPlanBalance()")
- span( style = "padding: 0.5em;") =
- span( data-bind= " text: infoDefine[ $root.languageIndex() ].account.needPay" )
- span( style="font-size: smaller;") us$
- span( data-bind = "text: selectPlanPrice() - showCurrentPlanBalance()")
- .row( data-bind = "visible: !doingPayment()" style = "padding-top: 0px;")
- .column
- p( data-bind = "text: infoDefine[ languageIndex() ].account.QTGatePayRisk" style="font-size: smaller;color: red;font-weight: lighter;")
- .field( data-bind = "visible: cardErrorMessage() > -1 && !doingPayment()")
- .ui.warning.message
- p( data-bind = "text: cardErrorMessage() > -1 ? infoDefine[ languageIndex() ].account.cardPaymentErrorMessage[cardErrorMessage()] : null")
- .fields( data-bind = "visible: !doingPayment()")
+ .right.aligned.eight.wide.column( data-bind="style:{'padding-bottom': showCurrentPlanBalance() ? '0px;' : ''}" style="color: gray;")
+ span.ui.mini.images
+ img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='visa', showCardImage: cardType()==='visa' }" src="/images/visa.svg")
+ img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='mastercard', showCardImage: cardType()==='mastercard' }" src="/images/mastercard.svg")
+ img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='amex', showCardImage: cardType()==='amex' }" src="/images/amex.svg")
+ img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='discover', showCardImage: cardType()==='discover' }" src="/images/discover.svg")
+ img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='jcb', showCardImage: cardType()==='jcb' }" src="/images/jcb.svg")
+ img.ui.image( data-bind="css:{ hideCardImage: cardType()!=='diners', showCardImage: cardType()==='diners' }" src="/images/diners.svg")
+ .sixteen.wide.column(data-bind = "visible: showCurrentPlanBalance()" style="font-size: small;padding-top: 0px;color: gray;font-weight: lighter;")
+ span( data-bind= " text: infoDefine[ $root.languageIndex() ].account.planPrice")
+ span( style="font-size: smaller;") us$
+ span( data-bind=" text: selectPlanPrice()")
+ span( style = "padding: 0.5em;") -
+ spann( data-bind= " text: infoDefine[ $root.languageIndex() ].account.oldPlanBalance")
+ span( style="font-size: smaller;") us$
+ span( data-bind=" text: showCurrentPlanBalance()")
+ span( style = "padding: 0.5em;") =
+ span( data-bind= " text: infoDefine[ $root.languageIndex() ].account.needPay" )
+ span( style="font-size: smaller;") us$
+ span( data-bind = "text: selectPlanPrice() - showCurrentPlanBalance()")
+ .row( data-bind = "visible: !doingPayment()" style = "padding-top: 0px;")
+ .column
+ p( data-bind = "text: infoDefine[ languageIndex() ].account.QTGatePayRisk" style="font-size: smaller;color: red;font-weight: lighter;")
+ .field( data-bind = "visible: cardErrorMessage() > -1 && !doingPayment()")
+ .ui.warning.message
+ p( data-bind = "text: cardErrorMessage() > -1 ? infoDefine[ languageIndex() ].account.cardPaymentErrorMessage[cardErrorMessage()] : null")
+ .fields( data-bind = "visible: !doingPayment()")
- .five.wide.field( data-bind = "css: { error: cardNumberFolder_Error()} ")
- label( data-bind = "text: infoDefine[ $root.languageIndex() ].account.cardNumber")
- input.paymaneCardNumber( data-bind = "value: cardNumber" )
- .three.wide.field( data-bind = "css: { error: cardExpirationYearFolder_Error()} ")
- label( data-bind = "text: infoDefine[ $root.languageIndex() ].account.expirationYear")
- input.paymaneExpiration( data-bind = "value: cardExpirationYear" placeholder = "MM/YYYY" )
- .four.wide.field( data-bind = "css: { error: cvcNumber_Error()} ")
- label( data-bind = " text: infoDefine[ $root.languageIndex() ].account.cvcNumber")
- input.paymaneCVC( data-bind = "value: cardcvc" placeholder="CVC")
- .four.wide.field( data-bind = "css: { error: postcode_Error()} ")
- label( data-bind = " text: infoDefine[ $root.languageIndex() ].account.postcodeTitle")
- input.paymaneCVC( data-bind = "value: cardPostcode" )
- .fields( data-bind = "visible: !doingPayment()")
- .five.wide.field
- .ui.buttons
- button.ui.button( data-bind="text: infoDefine[ $root.languageIndex() ].account.calcelPayment, click: () => { cardpay ( false ); paymentSelect(true)}" )
- .or
- button.ui.button.positive( data-bind="text: infoDefine[ $root.languageIndex() ].account.doPayment, click: doPayment ")
- .eleven.wide.field
- span( data-bind="text: infoDefine[ $root.languageIndex() ].account.canadaCard" style="font-size: small;color:gray;")
+ .five.wide.field( data-bind = "css: { error: cardNumberFolder_Error()} ")
+ label( data-bind = "text: infoDefine[ $root.languageIndex() ].account.cardNumber")
+ input.paymaneCardNumber( data-bind = "value: cardNumber" )
+ .three.wide.field( data-bind = "css: { error: cardExpirationYearFolder_Error()} ")
+ label( data-bind = "text: infoDefine[ $root.languageIndex() ].account.expirationYear")
+ input.paymaneExpiration( data-bind = "value: cardExpirationYear" placeholder = "MM/YYYY" )
+ .four.wide.field( data-bind = "css: { error: cvcNumber_Error()} ")
+ label( data-bind = " text: infoDefine[ $root.languageIndex() ].account.cvcNumber")
+ input.paymaneCVC( data-bind = "value: cardcvc" placeholder="CVC")
+ .four.wide.field( data-bind = "css: { error: postcode_Error()} ")
+ label( data-bind = " text: infoDefine[ $root.languageIndex() ].account.postcodeTitle")
+ input.paymaneCVC( data-bind = "value: cardPostcode" )
+ .fields( data-bind = "visible: !doingPayment()")
+ .five.wide.field
+ .ui.buttons
+ button.ui.button( data-bind="text: infoDefine[ $root.languageIndex() ].account.calcelPayment, click: () => { cardpay ( false ); paymentSelect(true)}" )
+ .or
+ button.ui.button.positive( data-bind="text: infoDefine[ $root.languageIndex() ].account.doPayment, click: doPayment ")
+ .eleven.wide.field
+ span( data-bind="text: infoDefine[ $root.languageIndex() ].account.canadaCard" style="font-size: small;color:gray;")
.ui.red.segment( data-bind = " visible: cardErrorMessage()")
.ui.negative.message
p( data-bind = "text: cardErrorMessage() ? infoDefine[ languageIndex() ].account.cardPaymentErrorMessage[ cardErrorMessage() ] : null")
diff --git a/index.js b/index.js
index 828c7dd..9626392 100644
--- a/index.js
+++ b/index.js
@@ -16,7 +16,7 @@
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
-const DEBUG = false;
+const DEBUG = true;
const Fs = require("fs");
const Os = require("os");
const path_1 = require("path");
@@ -418,7 +418,7 @@ const appReady = () => {
protocol: 'file:',
slashes: true
}));
- }, 2000);
+ }, 500);
});
}
else {
diff --git a/index.ts b/index.ts
index fba4820..113f27d 100644
--- a/index.ts
+++ b/index.ts
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-const DEBUG = false
+const DEBUG = true
import * as Fs from 'fs'
import * as Os from 'os'
@@ -478,7 +478,7 @@ const appReady = () => {
protocol: 'file:',
slashes: true
}))
- }, 2000 )
+ }, 500 )
})
} else {
saveLog ( `app.once ( 'ready') have localServer1 & createWindow()` )
diff --git a/package-lock.json b/package-lock.json
index 633f56e..72bf66f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,42 +1,9 @@
{
"name": "qtgate",
- "version": "1.1.5",
+ "version": "1.2.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
- "7zip-bin": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-2.2.7.tgz",
- "integrity": "sha512-+rr4OgeTNrLuJAf09o3USdttEYiXvZshWMkhD6wR9v1ieXH0JM1Q2yT41/cJuJcqiPpSXlM/g3aR+Y5MWQdr0Q==",
- "dev": true,
- "optional": true,
- "requires": {
- "7zip-bin-linux": "1.2.0",
- "7zip-bin-mac": "1.0.1",
- "7zip-bin-win": "2.1.1"
- }
- },
- "7zip-bin-linux": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/7zip-bin-linux/-/7zip-bin-linux-1.2.0.tgz",
- "integrity": "sha512-umB98LN18XBGKPw4EKET2zPDqVhEU1mxXA1Gx0BM+DoBt4hnlZPNkpSMNzmuNbQshi9SzLhqlTAyKcAgNrbV3Q==",
- "dev": true,
- "optional": true
- },
- "7zip-bin-mac": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/7zip-bin-mac/-/7zip-bin-mac-1.0.1.tgz",
- "integrity": "sha1-Pmh3i78JJq3GgVlCcHRQXUdVXAI=",
- "dev": true,
- "optional": true
- },
- "7zip-bin-win": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/7zip-bin-win/-/7zip-bin-win-2.1.1.tgz",
- "integrity": "sha512-6VGEW7PXGroTsoI2QW3b0ea95HJmbVBHvfANKLLMzSzFA1zKqVX5ybNuhmeGpf6vA0x8FJTt6twpprDANsY5WQ==",
- "dev": true,
- "optional": true
- },
"accepts": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
@@ -86,54 +53,6 @@
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
},
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "archiver": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.0.tgz",
- "integrity": "sha1-0t8ujVdzqCwdzOklzMQUUOqZmv0=",
- "dev": true,
- "requires": {
- "archiver-utils": "1.3.0",
- "async": "2.6.0",
- "buffer-crc32": "0.2.13",
- "glob": "7.1.2",
- "lodash": "4.17.4",
- "readable-stream": "2.3.3",
- "tar-stream": "1.5.5",
- "zip-stream": "1.2.0"
- }
- },
- "archiver-utils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
- "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
- "dev": true,
- "requires": {
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "lazystream": "1.0.0",
- "lodash": "4.17.4",
- "normalize-path": "2.1.1",
- "readable-stream": "2.3.3"
- }
- },
- "argparse": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
- "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
- "dev": true,
- "requires": {
- "sprintf-js": "1.0.3"
- }
- },
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -157,23 +76,11 @@
"lodash": "4.17.4"
}
},
- "async-exit-hook": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
- "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
- "dev": true
- },
"backo2": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
},
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
"base64-arraybuffer": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
@@ -192,15 +99,6 @@
"callsite": "1.0.0"
}
},
- "bl": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
- "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
- "dev": true,
- "requires": {
- "readable-stream": "2.3.3"
- }
- },
"blob": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
@@ -211,23 +109,6 @@
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
"integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE="
},
- "bluebird-lst": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.5.tgz",
- "integrity": "sha512-Ey0bDNys5qpYPhZ/oQ9vOEvD0TYQDTILMXWP2iGfvMg7rSDde+oV4aQQgqRH+CvBFNz2BSDQnPGMUl6LKBUUQA==",
- "dev": true,
- "requires": {
- "bluebird": "3.5.1"
- },
- "dependencies": {
- "bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
- "dev": true
- }
- }
- },
"body-parser": {
"version": "1.18.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
@@ -245,91 +126,6 @@
"type-is": "1.6.15"
}
},
- "brace-expansion": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
- "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
- "dev": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
- "dev": true
- },
- "builder-util": {
- "version": "3.4.4",
- "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-3.4.4.tgz",
- "integrity": "sha512-TFtm1yzFd3x34dR5dIs8hxAaDvH08ZiEY3QGvwI2lo+UZos+AIeQ4q/pxPU7lBZ+BMNWzVymG/LZcNu6N3g+vQ==",
- "dev": true,
- "requires": {
- "7zip-bin": "2.3.4",
- "bluebird-lst": "1.0.5",
- "builder-util-runtime": "3.4.1",
- "chalk": "2.3.0",
- "debug": "3.1.0",
- "fs-extra-p": "4.5.0",
- "ini": "1.3.5",
- "is-ci": "1.0.10",
- "js-yaml": "3.10.0",
- "lazy-val": "1.0.3",
- "node-emoji": "1.8.1",
- "semver": "5.4.1",
- "source-map-support": "0.5.0",
- "stat-mode": "0.2.2",
- "temp-file": "3.0.0",
- "tunnel-agent": "0.6.0"
- },
- "dependencies": {
- "7zip-bin": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-2.3.4.tgz",
- "integrity": "sha512-s2ZfgRWXeNUQTQE3O85CDDrU2Uo90pMlMkTxkz85wQOuzVxB8t4cubMPup3WlTPFKHQgb6lDkAHS3ljkUSFO6A==",
- "dev": true,
- "requires": {
- "7zip-bin-linux": "1.2.0",
- "7zip-bin-mac": "1.0.1",
- "7zip-bin-win": "2.1.1"
- }
- },
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "builder-util-runtime": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-3.4.1.tgz",
- "integrity": "sha512-I5fvn41z+vdjPvDZD6RigjyGyWQqjAh8Rs2IVbCI7HXlnEHkyT6Sl5fsS85eAjzs+huLzdbyABHz2CxGviPfWg==",
- "dev": true,
- "requires": {
- "bluebird-lst": "1.0.5",
- "debug": "3.1.0",
- "fs-extra-p": "4.5.0",
- "sax": "1.2.4"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -354,17 +150,6 @@
"lazy-cache": "1.0.4"
}
},
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
"character-parser": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
@@ -373,12 +158,6 @@
"is-regex": "1.0.4"
}
},
- "ci-info": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz",
- "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==",
- "dev": true
- },
"clean-css": {
"version": "3.4.28",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
@@ -413,21 +192,6 @@
"wordwrap": "0.0.2"
}
},
- "color-convert": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
- "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
"commander": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
@@ -448,24 +212,6 @@
"resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
"integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
},
- "compress-commons": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
- "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
- "dev": true,
- "requires": {
- "buffer-crc32": "0.2.13",
- "crc32-stream": "2.0.0",
- "normalize-path": "2.1.1",
- "readable-stream": "2.3.3"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
"constantinople": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.0.tgz",
@@ -504,28 +250,6 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "crc": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz",
- "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
- "dev": true
- },
- "crc32-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
- "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
- "dev": true,
- "requires": {
- "crc": "3.5.0",
- "readable-stream": "2.3.3"
- }
- },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -559,20 +283,6 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
- "electron-builder-squirrel-windows": {
- "version": "19.49.0",
- "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-19.49.0.tgz",
- "integrity": "sha512-9sElHyF4bVtBEH+rS0ADw5+ZFyvu+a2IuDxua380m2W47sGhUfolpAUx+SlmmSQK32GgYYpyZgQv/KiLtTT/ng==",
- "dev": true,
- "requires": {
- "7zip-bin": "2.2.7",
- "archiver": "2.1.0",
- "bluebird-lst": "1.0.5",
- "builder-util": "3.4.4",
- "fs-extra-p": "4.5.0",
- "sanitize-filename": "1.6.1"
- }
- },
"encodeurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
@@ -586,15 +296,6 @@
"iconv-lite": "0.4.19"
}
},
- "end-of-stream": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
- "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
- "dev": true,
- "requires": {
- "once": "1.4.0"
- }
- },
"engine.io": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.3.tgz",
@@ -655,18 +356,6 @@
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
- "dev": true
- },
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -733,52 +422,11 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
- "fs-extra": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
- "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "4.0.0",
- "universalify": "0.1.1"
- }
- },
- "fs-extra-p": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-4.5.0.tgz",
- "integrity": "sha512-V/sdZmV+Yx3+nfXmjRTdBP4mVWCt7hZ0+ZOv+IZo+6fdkBxafaGsI7mYeNv/J3rWyz+mIToCFQORFSwt1bZw8Q==",
- "dev": true,
- "requires": {
- "bluebird-lst": "1.0.5",
- "fs-extra": "5.0.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
},
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
@@ -810,12 +458,6 @@
"resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
"integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
},
- "has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
- "dev": true
- },
"http-errors": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
@@ -849,27 +491,11 @@
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
},
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
- },
"ipaddr.js": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz",
@@ -880,15 +506,6 @@
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
"integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw="
},
- "is-ci": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz",
- "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=",
- "dev": true,
- "requires": {
- "ci-info": "1.1.2"
- }
- },
"is-expression": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-expression/-/is-expression-2.1.0.tgz",
@@ -931,25 +548,6 @@
"resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
"integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds="
},
- "js-yaml": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
- "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
- "dev": true,
- "requires": {
- "argparse": "1.0.9",
- "esprima": "4.0.0"
- }
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11"
- }
- },
"jstransformer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
@@ -972,32 +570,11 @@
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
},
- "lazy-val": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.3.tgz",
- "integrity": "sha512-pjCf3BYk+uv3ZcPzEVM0BFvO9Uw58TmlrU0oG5tTrr9Kcid3+kdKxapH8CjdYmVa2nO5wOoZn2rdvZx2PKj/xg==",
- "dev": true
- },
- "lazystream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
- "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
- "dev": true,
- "requires": {
- "readable-stream": "2.3.3"
- }
- },
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
},
- "lodash.toarray": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
- "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=",
- "dev": true
- },
"longest": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
@@ -1036,15 +613,6 @@
"mime-db": "1.30.0"
}
},
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "1.1.8"
- }
- },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -1068,15 +636,6 @@
"raw-socket": "1.5.1"
}
},
- "node-emoji": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz",
- "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==",
- "dev": true,
- "requires": {
- "lodash.toarray": "4.4.0"
- }
- },
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
@@ -1104,15 +663,6 @@
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.4.1.tgz",
"integrity": "sha512-1bnszJJXatcHJhLpxQ1XMkLDjCjPKvGKMtRQ73FOsoNln3UQjddEQmz6fAwM3aj0GtQ3dQX9qtMHPelz63GU7A=="
},
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "1.1.0"
- }
- },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -1131,15 +681,6 @@
"ee-first": "1.1.1"
}
},
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1.0.2"
- }
- },
"openpgp": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/openpgp/-/openpgp-2.6.1.tgz",
@@ -1170,12 +711,6 @@
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
},
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
"path-parse": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
@@ -1196,12 +731,6 @@
"debug": "2.6.9"
}
},
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
- "dev": true
- },
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -1378,35 +907,6 @@
"nan": "2.3.5"
}
},
- "readable-stream": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
- "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- }
- }
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
@@ -1433,27 +933,6 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM="
},
- "sanitize-filename": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz",
- "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=",
- "dev": true,
- "requires": {
- "truncate-utf8-bytes": "1.0.2"
- }
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- },
- "semver": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
- "dev": true
- },
"send": {
"version": "0.16.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
@@ -1551,82 +1030,11 @@
"amdefine": "1.0.1"
}
},
- "source-map-support": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz",
- "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==",
- "dev": true,
- "requires": {
- "source-map": "0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "stat-mode": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
- "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
- "dev": true
- },
"statuses": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
},
- "string_decoder": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- },
- "tar-stream": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
- "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==",
- "dev": true,
- "requires": {
- "bl": "1.2.1",
- "end-of-stream": "1.4.0",
- "readable-stream": "2.3.3",
- "xtend": "4.0.1"
- }
- },
- "temp-file": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.0.0.tgz",
- "integrity": "sha512-WaSZQMckvo975nF1fSv05Nuya63AiLtyn0oYURF1xw1BF092CpIXgRv/Y0vQeocL5pv4ouVsBOnTCoK4kAK2uQ==",
- "dev": true,
- "requires": {
- "async-exit-hook": "2.0.1",
- "bluebird-lst": "1.0.5",
- "fs-extra-p": "4.5.0",
- "lazy-val": "1.0.3"
- }
- },
"to-array": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
@@ -1637,24 +1045,6 @@
"resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz",
"integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo="
},
- "truncate-utf8-bytes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
- "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
- "dev": true,
- "requires": {
- "utf8-byte-length": "1.0.4"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
"type-is": {
"version": "1.6.15",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
@@ -1692,29 +1082,11 @@
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz",
"integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ="
},
- "universalify": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
- "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
- "dev": true
- },
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
- "utf8-byte-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=",
- "dev": true
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -1755,12 +1127,6 @@
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
},
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
"write-file-atomic": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
@@ -1792,12 +1158,6 @@
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz",
"integrity": "sha1-BPVgkVcks4kIhxXMDteBPpZ3v1c="
},
- "xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
- "dev": true
- },
"yargs": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
@@ -1813,18 +1173,6 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
"integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
- },
- "zip-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
- "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
- "dev": true,
- "requires": {
- "archiver-utils": "1.3.0",
- "compress-commons": "1.2.2",
- "lodash": "4.17.4",
- "readable-stream": "2.3.3"
- }
}
}
}
diff --git a/package.json b/package.json
index 798f359..9cf9fb1 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
"engines": {
"node": ">=50.9"
},
- "build": {
+ "build": {
"squirrelWindows": {
"remoteReleases": "https://github.com/QTGate/atOPN/releases/download/0.2.0/"
},
@@ -52,9 +52,7 @@
"url": "https://github.com/QTGate/QTGate-Desktop-Client/issues"
},
"homepage": "https://www.qtgate.com",
- "devDependencies": {
- "electron-builder-squirrel-windows": "^19.49.0"
- },
+ "devDependencies": {},
"dependencies": {
"async": "^2.6.0",
"cleave.js": "^1.0.9",