diff --git a/client/package.json b/client/package.json
index 0d29b64f0..6da9bfd73 100644
--- a/client/package.json
+++ b/client/package.json
@@ -45,6 +45,7 @@
"react": "^17.0.1",
"react-big-calendar": "^0.33.2",
"react-color": "^2.19.3",
+ "react-cookie": "^4.1.1",
"react-dom": "^17.0.1",
"react-drag-listview": "^0.1.8",
"react-grid-gallery": "^0.5.5",
diff --git a/client/src/components/_test/test.component.jsx b/client/src/components/_test/test.component.jsx
index d554e405b..b6b02b7c0 100644
--- a/client/src/components/_test/test.component.jsx
+++ b/client/src/components/_test/test.component.jsx
@@ -1,25 +1,9 @@
-import Axios from "axios";
import React from "react";
+import QboAuthorizeComponent from "../qbo-authorize/qbo-authorize.component";
export default function Test() {
- const handleQbSignIn = async () => {
- const result = await Axios.post("/qbo/authorize", { userId: "1234" });
- console.log("handleQbSignIn -> result", result.data);
- // window.open(result.data, "_blank", "toolbar=0,location=0,menubar=0");
-
- var parameters = "location=1,width=800,height=650";
- parameters +=
- ",left=" +
- (window.screen.width - 800) / 2 +
- ",top=" +
- (window.screen.height - 650) / 2;
-
- // Launch Popup
- window.open(result.data, "connectPopup", parameters);
- };
-
return (
-
+
);
}
diff --git a/client/src/components/qbo-authorize/qbo-authorize.component.jsx b/client/src/components/qbo-authorize/qbo-authorize.component.jsx
new file mode 100644
index 000000000..a6010ae0d
--- /dev/null
+++ b/client/src/components/qbo-authorize/qbo-authorize.component.jsx
@@ -0,0 +1,81 @@
+import { Button, Space } from "antd";
+import Axios from "axios";
+import React, { useEffect } from "react";
+import QboImg from "./qbo_signin.png";
+import queryString from "query-string";
+import { useLocation } from "react-router-dom";
+import { useCookies } from "react-cookie";
+
+export default function QboAuthorizeComponent() {
+ const location = useLocation();
+
+ const [cookies, setCookie] = useCookies(["access_token", "refresh_token"]);
+
+ const handleQbSignIn = async () => {
+ const result = await Axios.post("/qbo/authorize");
+ console.log("pushing to history", result.data);
+ window.location.href = result.data;
+ };
+
+ useEffect(() => {
+ const ExchangeForAccessToken = async () => {
+ const response = await Axios.get(`/qbo/callback${location.search}`);
+
+ let expires = new Date();
+ expires.setTime(expires.getTime() + response.data.expires_in * 1000);
+ setCookie("qbo_access_token", response.data.access_token, {
+ path: "/",
+ expires,
+ });
+ expires = new Date();
+ expires.setTime(
+ expires.getTime() + response.data.x_refresh_token_expires_in * 1000
+ );
+ setCookie("qbo_refresh_token", response.data.refresh_token, {
+ path: "/",
+ expires,
+ });
+ };
+ const qs = queryString.parse(location.search);
+ const { code, state, realmId } = qs;
+ const hasBeenCalledBack = code && realmId && state;
+
+ if (hasBeenCalledBack) {
+ setCookie("qbo_code", code, { path: "/" });
+ setCookie("qbo_state", state, { path: "/" });
+
+ let expires = new Date();
+ expires.setTime(expires.getTime() + 8726400 * 1000);
+
+ setCookie("qbo_realmId", realmId, {
+ path: "/",
+ expires,
+ });
+ ExchangeForAccessToken();
+ }
+ }, [location, setCookie]);
+
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/client/src/components/qbo-authorize/qbo_signin.png b/client/src/components/qbo-authorize/qbo_signin.png
new file mode 100644
index 000000000..215d25a2b
Binary files /dev/null and b/client/src/components/qbo-authorize/qbo_signin.png differ
diff --git a/client/src/pages/accounting-qbo/accounting-qbo.page.jsx b/client/src/pages/accounting-qbo/accounting-qbo.page.jsx
new file mode 100644
index 000000000..d48b24aee
--- /dev/null
+++ b/client/src/pages/accounting-qbo/accounting-qbo.page.jsx
@@ -0,0 +1,47 @@
+import React, { useEffect } from "react";
+import { useTranslation } from "react-i18next";
+import { connect } from "react-redux";
+import { createStructuredSelector } from "reselect";
+import QboAuthorizeComponent from "../../components/qbo-authorize/qbo-authorize.component";
+import {
+ setBreadcrumbs,
+ setSelectedHeader,
+} from "../../redux/application/application.actions";
+import { selectBodyshop } from "../../redux/user/user.selectors";
+
+const mapStateToProps = createStructuredSelector({
+ bodyshop: selectBodyshop,
+});
+
+const mapDispatchToProps = (dispatch) => ({
+ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
+ setSelectedHeader: (key) => dispatch(setSelectedHeader(key)),
+});
+export function AccountingReceivablesContainer({
+ bodyshop,
+ setBreadcrumbs,
+ setSelectedHeader,
+}) {
+ const { t } = useTranslation();
+
+ useEffect(() => {
+ document.title = t("titles.accounting-qbo");
+ setSelectedHeader("qbo");
+ setBreadcrumbs([
+ {
+ link: "/manage/accounting/qbo",
+ label: t("titles.bc.accounting-qbo"),
+ },
+ ]);
+ }, [t, setBreadcrumbs, setSelectedHeader]);
+
+ return (
+
+
+
+ );
+}
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(AccountingReceivablesContainer);
diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx
index 55b51544a..c0cb38568 100644
--- a/client/src/pages/manage/manage.page.component.jsx
+++ b/client/src/pages/manage/manage.page.component.jsx
@@ -116,6 +116,9 @@ const JobChecklistView = lazy(() =>
const JobDeliver = lazy(() =>
import("../jobs-deliver/jobs-delivery.page.container")
);
+const AccountingQboCallback = lazy(() =>
+ import("../accounting-qbo/accounting-qbo.page")
+);
const AccountingReceivables = lazy(() =>
import("../accounting-receivables/accounting-receivables.container")
);
@@ -333,6 +336,13 @@ export function Manage({ match, conflict, bodyshop }) {
path={`${match.path}/shop/csi`}
component={ShopCsiPageContainer}
/>
+
+
+
Promise.reject(error)
diff --git a/client/yarn.lock b/client/yarn.lock
index 3bb88df30..b70f43dc9 100644
--- a/client/yarn.lock
+++ b/client/yarn.lock
@@ -2338,6 +2338,11 @@
resolved "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz"
integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==
+"@types/cookie@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803"
+ integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==
+
"@types/d3-path@^1":
version "1.0.9"
resolved "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.9.tgz"
@@ -2395,7 +2400,7 @@
dependencies:
"@types/node" "*"
-"@types/hoist-non-react-statics@^3.3.0":
+"@types/hoist-non-react-statics@^3.0.1", "@types/hoist-non-react-statics@^3.3.0":
version "3.3.1"
resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz"
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
@@ -4395,6 +4400,11 @@ cookie@0.4.0:
resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+cookie@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
+ integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
+
copy-anything@^2.0.1:
version "2.0.3"
resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz"
@@ -11048,6 +11058,15 @@ react-color@^2.19.3:
reactcss "^1.2.0"
tinycolor2 "^1.4.1"
+react-cookie@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/react-cookie/-/react-cookie-4.1.1.tgz#832e134ad720e0de3e03deaceaab179c4061a19d"
+ integrity sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==
+ dependencies:
+ "@types/hoist-non-react-statics" "^3.0.1"
+ hoist-non-react-statics "^3.0.0"
+ universal-cookie "^4.0.0"
+
react-dev-utils@^11.0.3:
version "11.0.4"
resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz"
@@ -13410,6 +13429,14 @@ unique-string@^1.0.0:
dependencies:
crypto-random-string "^1.0.0"
+universal-cookie@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-4.0.4.tgz#06e8b3625bf9af049569ef97109b4bb226ad798d"
+ integrity sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==
+ dependencies:
+ "@types/cookie" "^0.3.3"
+ cookie "^0.4.0"
+
universalify@^0.1.0, universalify@^0.1.2:
version "0.1.2"
resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz"
diff --git a/logs/oAuthClient-log.log b/logs/oAuthClient-log.log
new file mode 100644
index 000000000..a3039f8bf
--- /dev/null
+++ b/logs/oAuthClient-log.log
@@ -0,0 +1,53 @@
+2021-08-26T20:38:24.914Z error: Create Token () threw an exception : {
+ "authResponse": {
+ "token": {
+ "realmId": "4620816365180784050",
+ "token_type": "",
+ "access_token": "",
+ "refresh_token": "",
+ "expires_in": 0,
+ "x_refresh_token_expires_in": 0,
+ "id_token": "",
+ "latency": 60000,
+ "createdAt": 1630010301927,
+ "state": "hNJ8ADptDHQBDEqsB8QMYTjiDnf1"
+ },
+ "response": {
+ "url": "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",
+ "headers": {
+ "date": "Thu, 26 Aug 2021 20:38:21 GMT",
+ "content-type": "application/json;charset=utf-8",
+ "content-length": "61",
+ "connection": "close",
+ "intuit_tid": "1-6127fbbd-32c335dd6983b392613115ce",
+ "x-spanid": [
+ "caa54c06-1321-4fef-bc80-52c70bc12a63",
+ "94b4e4af-6fef-4836-9859-3d7a2c3a432a:1"
+ ],
+ "x-amzn-trace-id": [
+ "Root=1-6127fbbd-32c335dd6983b392613115ce",
+ "Self=1-6127fbbd-063fdead269ac6bf7361c025;Root=1-6127fbbd-32c335dd6983b392613115ce"
+ ],
+ "x-content-type-options": "nosniff",
+ "server": "envoy",
+ "cache-control": "no-cache, no-store",
+ "pragma": "no-cache",
+ "x-envoy-upstream-service-time": "7",
+ "strict-transport-security": "max-age=31536000"
+ },
+ "body": "{\"error_description\":\"Token invalid\",\"error\":\"invalid_grant\"}",
+ "status": 400,
+ "statusText": "Bad Request"
+ },
+ "body": "{\"error_description\":\"Token invalid\",\"error\":\"invalid_grant\"}",
+ "json": {
+ "error_description": "Token invalid",
+ "error": "invalid_grant"
+ },
+ "intuit_tid": "1-6127fbbd-32c335dd6983b392613115ce"
+ },
+ "originalMessage": "Response has an Error",
+ "error": "invalid_grant",
+ "error_description": "Token invalid",
+ "intuit_tid": "1-6127fbbd-32c335dd6983b392613115ce"
+}
diff --git a/package.json b/package.json
index 3911ab40a..d503f5a21 100644
--- a/package.json
+++ b/package.json
@@ -18,9 +18,11 @@
},
"dependencies": {
"aws-sdk": "^2.951.0",
+ "bluebird": "^3.7.2",
"body-parser": "^1.18.3",
"cloudinary": "^1.26.2",
"compression": "^1.7.4",
+ "cookie-parser": "^1.4.5",
"cors": "2.8.5",
"csrf": "^3.1.0",
"dinero.js": "^1.9.0",
@@ -36,6 +38,7 @@
"moment": "^2.29.1",
"node-fetch": "^2.6.1",
"node-mailjet": "^3.3.4",
+ "node-quickbooks": "^2.0.39",
"nodemailer": "^6.6.3",
"phone": "^3.1.2",
"soap": "^0.40.0",
diff --git a/server.js b/server.js
index e3beaa86f..18a1099c4 100644
--- a/server.js
+++ b/server.js
@@ -7,6 +7,7 @@ const twilio = require("twilio");
const logger = require("./server/utils/logger");
global.fetch = require("node-fetch");
var fb = require("./server/firebase/firebase-handler");
+var cookieParser = require("cookie-parser");
//var enforce = require("express-sslify");
@@ -40,6 +41,7 @@ require("./server/web-sockets/web-socket");
//app.use(fb.validateFirebaseIdToken);
app.use(compression());
+app.use(cookieParser());
app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
//app.use(enforce.HTTPS({ trustProtoHeader: true }));
@@ -144,8 +146,10 @@ var utils = require("./server/utils/utils");
app.post("/utils/time", utils.servertime);
var qbo = require("./server/accounting/qbo/qbo");
-app.post("/qbo/authorize", qbo.authorize);
+app.post("/qbo/authorize", fb.validateFirebaseIdToken, qbo.authorize);
app.get("/qbo/callback", qbo.callback);
+app.get("/qbo/refresh", fb.validateFirebaseIdToken, qbo.refresh);
+app.post("/qbo/receivables", fb.validateFirebaseIdToken, qbo.receivables);
var data = require("./server/data/data");
app.post("/data/ah", data.autohouse);
diff --git a/server/accounting/qbo/qbo-authorize.js b/server/accounting/qbo/qbo-authorize.js
index 045ccca7a..f4d573f51 100644
--- a/server/accounting/qbo/qbo-authorize.js
+++ b/server/accounting/qbo/qbo-authorize.js
@@ -6,26 +6,25 @@ require("dotenv").config({
),
});
const OAuthClient = require("intuit-oauth");
-var Tokens = require("csrf");
-var tokens = new Tokens();
+
const oauthClient = new OAuthClient({
- clientId: process.env.QB_ONLINE_CLIENT_ID,
- clientSecret: process.env.QB_ONLINE_SECRET,
- environment: "sandbox", //process.env.NODE_ENV === "production" ? "production" : "sandbox",
- redirectUri: process.env.QB_ONLINE_REDIRECT_URI,
+ clientId: process.env.QBO_CLIENT_ID,
+ clientSecret: process.env.QBO_SECRET,
+ environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
+ redirectUri: process.env.QBO_REDIRECT_URI,
});
exports.default = async (req, res) => {
- console.log("QBO Authorize Called");
- const { userId } = req.body;
- console.log("exports.default -> userId", userId);
- // AuthorizationUri
-
- const authUri = oauthClient.authorizeUri({
- scope: [OAuthClient.scopes.Accounting, OAuthClient.scopes.OpenId],
- state: tokens.create(userId),
- }); // can be an array of multiple scopes ex : {scope:[OAuthClient.scopes.Accounting,OAuthClient.scopes.OpenId]}
- console.log("authUri", authUri);
- // Redirect the authUri
- res.send(authUri);
+ try {
+ const authUri = oauthClient.authorizeUri({
+ scope: [OAuthClient.scopes.Accounting, OAuthClient.scopes.OpenId],
+ state: req.user.uid,
+ }); // can be an array of multiple scopes ex : {scope:[OAuthClient.scopes.Accounting,OAuthClient.scopes.OpenId]}
+ // Redirect the authUri
+ res.send(authUri);
+ } catch (error) {
+ console.log(error);
+ res.sendStatus(500);
+ }
};
+
diff --git a/server/accounting/qbo/qbo-callback.js b/server/accounting/qbo/qbo-callback.js
index 109e65ccd..d1171d2ac 100644
--- a/server/accounting/qbo/qbo-callback.js
+++ b/server/accounting/qbo/qbo-callback.js
@@ -6,31 +6,64 @@ require("dotenv").config({
),
});
const OAuthClient = require("intuit-oauth");
-var Tokens = require("csrf");
+
+var QuickBooks = require("node-quickbooks");
+const Promise = require("bluebird");
+const QuickBooksPromise = Promise.promisifyAll(QuickBooks.prototype);
const oauthClient = new OAuthClient({
- clientId: process.env.QB_ONLINE_CLIENT_ID,
- clientSecret: process.env.QB_ONLINE_SECRET,
- environment: "sandbox", //process.env.NODE_ENV === "production" ? "production" : "sandbox",
- redirectUri: process.env.QB_ONLINE_REDIRECT_URI,
+ clientId: process.env.QBO_CLIENT_ID,
+ clientSecret: process.env.QBO_SECRET,
+ environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
+ redirectUri: process.env.QBO_REDIRECT_URI,
+ logging: true,
});
exports.default = async (req, res) => {
// Parse the redirect URL for authCode and exchange them for tokens
- const parseRedirect = req.url;
- const { code, state, realmId } = req.query;
- console.log("exports.default -> state", state);
- // Exchange the auth code retrieved from the **req.url** on the redirectUri
- oauthClient
- .createToken(parseRedirect)
- .then(function (authResponse) {
- console.log("The Token is " + JSON.stringify(authResponse.getJson()));
- const { access_token, refresh_token } = authResponse.getJson();
- console.log("exports.default -> refresh_token", refresh_token);
- console.log("exports.default -> access_token", access_token);
- })
- .catch(function (e) {
- console.error("The error message is :" + e.originalMessage);
- console.error(e.intuit_tid);
- });
+
+ try {
+ // Exchange the auth code retrieved from the **req.url** on the redirectUri
+ const authResponse = await oauthClient.createToken(req.url);
+
+ const { access_token, refresh_token } = authResponse.json;
+
+ //store this information against the assocation record.
+
+ //Send a redirect back to the imex online application
+ res.json(authResponse.json);
+
+ // var qbo = new QuickBooks(
+ // process.env.QBO_CLIENT_ID,
+ // process.env.QBO_SECRET,
+ // access_token,
+ // false, // no token secret for oAuth 2.0
+ // realmId,
+ // process.env.NODE_ENV !== "production", // use the sandbox?, // use the sandbox?
+ // true, // enable debugging?
+ // null, // set minorversion, or null for the latest version
+ // "2.0", //oAuth version
+ // refresh_token
+ // );
+
+ // qbo.findInvoices({ fetchAll: true }, (errors, invoices) =>
+ // console.log(errors, invoices)
+ // );
+ } catch (e) {
+ console.error("The error message is :" + JSON.stringify(e, null, 2));
+ console.error(e.intuit_tid);
+ res.status(500).json(e);
+ }
+};
+
+exports.refresh = async (req, res) => {
+ try {
+ oauthClient.setToken(req.cookies.qbo_access_token);
+ const authResponse = oauthClient.refreshUsingToken(
+ req.cookies.qbo_refresh_token
+ );
+ res.json(authResponse.json);
+ } catch (error) {
+ res.status(500).json(error);
+ }
};
diff --git a/server/accounting/qbo/qbo-receivables.js b/server/accounting/qbo/qbo-receivables.js
new file mode 100644
index 000000000..caa5769b2
--- /dev/null
+++ b/server/accounting/qbo/qbo-receivables.js
@@ -0,0 +1,43 @@
+const path = require("path");
+require("dotenv").config({
+ path: path.resolve(
+ process.cwd(),
+ `.env.${process.env.NODE_ENV || "development"}`
+ ),
+});
+const OAuthClient = require("intuit-oauth");
+
+const oauthClient = new OAuthClient({
+ clientId: process.env.QBO_CLIENT_ID,
+ clientSecret: process.env.QBO_SECRET,
+ environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
+ redirectUri: process.env.QBO_REDIRECT_URI,
+});
+
+exports.default = async (req, res) => {
+ try {
+ oauthClient.setToken(req.cookies.qbo_access_token);
+
+ var qbo = new QuickBooks(
+ process.env.QBO_CLIENT_ID,
+ process.env.QBO_SECRET,
+ req.cookies.qbo_access_token,
+ false, // no token secret for oAuth 2.0
+ req.cookies.qbo_realmId,
+ process.env.NODE_ENV !== "production", // use the sandbox?, // use the sandbox?
+ true, // enable debugging?
+ null, // set minorversion, or null for the latest version
+ "2.0", //oAuth version
+ req.cookies.qbo_refresh_token
+ );
+
+ qbo.findInvoices({ fetchAll: true }, (errors, invoices) =>
+ console.log(errors, invoices)
+ );
+
+ res.send({});
+ } catch (error) {
+ console.log(error);
+ res.sendStatus(500);
+ }
+};
diff --git a/server/accounting/qbo/qbo.js b/server/accounting/qbo/qbo.js
index d68708d51..3a2d3e2c6 100644
--- a/server/accounting/qbo/qbo.js
+++ b/server/accounting/qbo/qbo.js
@@ -1,5 +1,7 @@
exports.callback = require("./qbo-callback").default;
exports.authorize = require("./qbo-authorize").default;
+exports.refresh = require("./qbo-callback").refresh;
+exports.receivables = require("./qbo-receivables");
const OAuthClient = require("intuit-oauth");
const path = require("path");
diff --git a/yarn.lock b/yarn.lock
index 37643b4f2..99f273b46 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -460,7 +460,7 @@ agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2:
dependencies:
debug "4"
-ajv@^6.10.0, ajv@^6.12.4:
+ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -526,13 +526,18 @@ asap@^2.0.0:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
-asn1@^0.2.4:
+asn1@^0.2.4, asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
dependencies:
safer-buffer "~2.1.0"
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
ast-types@^0.13.2:
version "0.13.4"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782"
@@ -587,6 +592,16 @@ aws-sdk@^2.951.0:
uuid "3.3.2"
xml2js "0.4.19"
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
+
+aws4@^1.8.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
+ integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
+
axios-ntlm@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/axios-ntlm/-/axios-ntlm-1.1.6.tgz#242971c9b8ee1e548e8507b22c37e15ae3f798ab"
@@ -626,7 +641,7 @@ batch@^0.6.1:
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-bcrypt-pbkdf@^1.0.2:
+bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
@@ -638,7 +653,12 @@ bignumber.js@^9.0.0:
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5"
integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==
-bluebird@^3.5.0:
+bluebird@3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.3.4.tgz#f780fe43e1a7a6510f67abd7d0d79533a40ddde6"
+ integrity sha1-94D+Q+GnplEPZ6vX0NeVM6QN3eY=
+
+bluebird@^3.5.0, bluebird@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
@@ -719,6 +739,11 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+
chalk@^2.0.0, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@@ -835,7 +860,7 @@ colorspace@1.1.x:
color "3.0.x"
text-hex "1.0.x"
-combined-stream@^1.0.6, combined-stream@^1.0.8:
+combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@@ -938,6 +963,14 @@ convert-source-map@^1.7.0:
dependencies:
safe-buffer "~5.1.1"
+cookie-parser@^1.4.5:
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49"
+ integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==
+ dependencies:
+ cookie "0.4.0"
+ cookie-signature "1.0.6"
+
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
@@ -963,7 +996,7 @@ core-js@3.6.5:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
-core-util-is@~1.0.0:
+core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
@@ -1040,6 +1073,13 @@ cssom@^0.4.4:
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
data-uri-to-buffer@3:
version "3.0.1"
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636"
@@ -1050,7 +1090,7 @@ date-and-time@^2.0.0:
resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.0.0.tgz#99f5fb6b6c7bcd4d1f6dcbeb37553dc0ff797b65"
integrity sha512-HJSzj25iPm8E01nt+rSmCIlwjsmjvKfUivG/kXBglpymcHF1FolWAqWwTEV4FvN1Lx5UjPf0J1W4H8yQsVBfFg==
-date-fns@^2.16.1:
+date-fns@^2.16.1, date-fns@^2.9.0:
version "2.23.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.23.0.tgz#4e886c941659af0cf7b30fafdd1eaa37e88788a9"
integrity sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==
@@ -1210,6 +1250,14 @@ duplexify@^4.0.0, duplexify@^4.1.1:
readable-stream "^3.1.1"
stream-shift "^1.0.0"
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
@@ -1507,7 +1555,7 @@ express@^4.16.4:
utils-merge "1.0.1"
vary "~1.1.2"
-extend@^3.0.2:
+extend@^3.0.2, extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
@@ -1527,6 +1575,16 @@ extract-files@^9.0.0:
resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a"
integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+ integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -1645,6 +1703,11 @@ follow-redirects@^1.10.0:
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.2.tgz#cecb825047c00f5e66b142f90fed4f515dec789b"
integrity sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
form-data@^2.0.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
@@ -1663,6 +1726,15 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
formidable@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9"
@@ -1773,6 +1845,13 @@ get-uri@3:
fs-extra "^8.1.0"
ftp "^0.3.10"
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
+ dependencies:
+ assert-plus "^1.0.0"
+
glob-parent@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -1880,6 +1959,19 @@ gzip-size@^6.0.0:
dependencies:
duplexer "^0.1.2"
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
+
+har-validator@~5.1.0:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -1967,6 +2059,15 @@ http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1:
agent-base "6"
debug "4"
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
https-proxy-agent@5, https-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
@@ -2023,6 +2124,11 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, i
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
inherits@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
@@ -2118,7 +2224,7 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
-is-typedarray@^1.0.0:
+is-typedarray@^1.0.0, is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
@@ -2145,6 +2251,11 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
jake@^10.6.1:
version "10.8.2"
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b"
@@ -2188,6 +2299,11 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+
json-bigint@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
@@ -2210,11 +2326,21 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -2238,6 +2364,16 @@ jsonwebtoken@^8.3.0, jsonwebtoken@^8.5.1:
ms "^2.1.1"
semver "^5.6.0"
+jsprim@^1.2.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+ integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.2.3"
+ verror "1.10.0"
+
jwa@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
@@ -2283,6 +2419,13 @@ jws@^4.0.0:
jwa "^2.0.0"
safe-buffer "^5.0.1"
+jxon@^2.0.0-beta.5:
+ version "2.0.0-beta.5"
+ resolved "https://registry.yarnpkg.com/jxon/-/jxon-2.0.0-beta.5.tgz#3b6a94104f9801ee682fd056645ff5473d9b343e"
+ integrity sha1-O2qUEE+YAe5oL9BWZF/1Rz2bND4=
+ dependencies:
+ xmldom "^0.1.21"
+
kuler@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
@@ -2529,7 +2672,7 @@ mime-db@1.49.0, "mime-db@>= 1.43.0 < 2":
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
-mime-types@^2.0.8, mime-types@^2.1.12, mime-types@~2.1.24:
+mime-types@^2.0.8, mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.32"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
@@ -2636,6 +2779,21 @@ node-mailjet@^3.3.4:
superagent "^6.1.0"
superagent-proxy "^2.1.0"
+node-quickbooks@^2.0.39:
+ version "2.0.39"
+ resolved "https://registry.yarnpkg.com/node-quickbooks/-/node-quickbooks-2.0.39.tgz#a2534d24063e8a0cea5bb80c66b0727c1c942081"
+ integrity sha512-HFC5okMoK+DYaXvfU7CLkp5JAuLZ/KxGIn900bjbxiDf/XNhV7BhNFP3v73HbVlEKJTwwabNY5SF/pEJw5+nOA==
+ dependencies:
+ bluebird "3.3.4"
+ date-fns "^2.9.0"
+ jxon "^2.0.0-beta.5"
+ querystring "0.2.0"
+ request "2.88.0"
+ request-debug "0.2.0"
+ underscore "1.12.1"
+ util "0.10.3"
+ uuid "^3.1.0"
+
nodemailer@^6.6.3:
version "6.6.3"
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.3.tgz#31fb53dd4d8ae16fc088a65cb9ffa8d928a69b48"
@@ -2658,6 +2816,11 @@ nth-check@~1.0.1:
dependencies:
boolbase "~1.0.0"
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
object-assign@^4:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -2811,6 +2974,11 @@ path-to-regexp@0.1.7:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
phone@^3.1.2:
version "3.1.5"
resolved "https://registry.yarnpkg.com/phone/-/phone-3.1.5.tgz#94b4c029bbb05594602b2c859acfbf22f8ee41c6"
@@ -2926,7 +3094,7 @@ pseudomap@^1.0.1:
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-psl@^1.1.28:
+psl@^1.1.24, psl@^1.1.28:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
@@ -2953,6 +3121,11 @@ punycode@1.3.2:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
@@ -2984,6 +3157,11 @@ qs@^6.5.0, qs@^6.6.0, qs@^6.9.4:
dependencies:
side-channel "^1.0.4"
+qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
query-string@^6.12.1:
version "6.14.1"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a"
@@ -3090,6 +3268,39 @@ remote-content@^2.0.0:
superagent "^6.1.0"
superagent-proxy "^2.1.0"
+request-debug@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/request-debug/-/request-debug-0.2.0.tgz#fc054ec817181b04ca41a052c136f61c48abaf78"
+ integrity sha1-/AVOyBcYGwTKQaBSwTb2HEirr3g=
+ dependencies:
+ stringify-clone "^1.0.0"
+
+request@2.88.0:
+ version "2.88.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
+ integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.0"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.4.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -3177,12 +3388,12 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@~5.2.0:
+safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@~2.1.0:
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -3465,6 +3676,21 @@ ssh2@^1.2.0:
cpu-features "0.0.2"
nan "^2.15.0"
+sshpk@^1.7.0:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
stack-trace@0.0.x:
version "0.0.10"
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
@@ -3525,6 +3751,11 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringify-clone@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stringify-clone/-/stringify-clone-1.1.1.tgz#309a235fb4ecfccd7d388dbe18ba904facaf433b"
+ integrity sha1-MJojX7Ts/M19OI2+GLqQT6yvQzs=
+
strip-ansi@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
@@ -3664,6 +3895,14 @@ tough-cookie@^2.0.0:
psl "^1.1.28"
punycode "^2.1.1"
+tough-cookie@~2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
+ integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
+ dependencies:
+ psl "^1.1.24"
+ punycode "^1.4.1"
+
tree-kill@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
@@ -3689,7 +3928,14 @@ tsscmp@1.0.6:
resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==
-tweetnacl@^0.14.3:
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
@@ -3762,6 +4008,11 @@ uid-safe@2.1.5:
dependencies:
random-bytes "~1.0.0"
+underscore@1.12.1:
+ version "1.12.1"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e"
+ integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==
+
unique-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
@@ -3807,6 +4058,13 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
@@ -3817,6 +4075,11 @@ uuid@3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+uuid@^3.1.0, uuid@^3.3.2:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
uuid@^8.0.0, uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
@@ -3840,6 +4103,15 @@ vary@^1, vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
weak-map@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.5.tgz#79691584d98607f5070bd3b70a40e6bb22e401eb"
@@ -3965,6 +4237,11 @@ xmlbuilder@~9.0.1:
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
+xmldom@^0.1.21:
+ version "0.1.31"
+ resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff"
+ integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==
+
xmldom@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.6.0.tgz#43a96ecb8beece991cef382c08397d82d4d0c46f"