diff --git a/README.MD b/README.MD index 6e060741a..33dfc36b0 100644 --- a/README.MD +++ b/README.MD @@ -1,12 +1,14 @@ -React App: -React Hooks are used for Authentication ONLY to ensure the correct web token is passed. +React App: + +Yarn Dependency Management: +To force upgrades for some packages: yarn upgrade-interactive --latest GraphQL API: -Hasura is hosted on another dyno. Several environmental variables are required, including disabling the console. -ALL CHANGES MUST BE MADE USING LOCAL CONSOLE TO ENSURE DATABASE MIGRATION FILES ARE CREATED. +Hasura is hosted on another dyno. Several environmental variables are required, including disabling the console. +ALL CHANGES MUST BE MADE USING LOCAL CONSOLE TO ENSURE DATABASE MIGRATION FILES ARE CREATED. To Start Hasura CLI: npx hasura console --admin-secret Dev-BodyShopAppBySnaptSoftware! -Migrating to Staging: -npx hasura migrate apply --up 10 --endpoint https://bodyshop-staging-db.herokuapp.com/ --admin-secret Staging-BodyShopAppBySnaptSoftware! \ No newline at end of file +Migrating to Staging: +npx hasura migrate apply --up 10 --endpoint https://bodyshop-staging-db.herokuapp.com/ --admin-secret Staging-BodyShopAppBySnaptSoftware! diff --git a/_business_logic/NewShopSetup.md b/_business_logic/NewShopSetup.md index ea98e6910..dc17f03f0 100644 --- a/_business_logic/NewShopSetup.md +++ b/_business_logic/NewShopSetup.md @@ -1,5 +1,51 @@ **Required items** - -Bodyshop Record --Counter Record - type: ronum \ No newline at end of file +..\*Include the statuses file in the format of: + +```json +{ + "statuses": [ + "Open", + "Scheduled", + "Arrived", + "Repair Plan", + "Parts", + "Body", + "Prep", + "Paint", + "Reassembly", + "Sublet", + "Detail", + "Completed", + "Delivered", + "Invoiced", + "Exported" + ], + "open_statuses": [ + "Open", + "Scheduled", + "Arrived", + "Repair Plan", + "Parts", + "Body", + "Prep", + "Paint", + "Reassembly", + "Sublet", + "Detail", + "Completed" + ], + "default_arrived": "Arrived", + "default_exported": "Exported", + "default_imported": "Open", + "default_invoiced": "Invoiced", + "default_completed": "Completed", + "default_delivered": "Delivered", + "default_scheduled": "Scheduled" +} + +``` + +--\* Set the region for the shop. +-Counter Record - type: ronum diff --git a/_reference/CiecaOpCodesReference.json b/_reference/CiecaOpCodesReference.json new file mode 100644 index 000000000..f9f50346c --- /dev/null +++ b/_reference/CiecaOpCodesReference.json @@ -0,0 +1,192 @@ +{ + "OP0": { + "desc": "REMOVE / REPLACE PARTIAL", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP1": { + "desc": "REFINISH / REPAIR", + "opcode": "OP1", + "partcode": "PAE" + }, + "OP10": { + "desc": "REPAIR , PARTIAL", + "opcode": "OP9", + "partcode": "PAE" + }, + "OP100": { + "desc": "REPLACE PRE-PRICED", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP101": { + "desc": "REMOVE/REPLACE RECYCLED PART", + "opcode": "OP11", + "partcode": "PAL" + }, + "OP103": { + "desc": "REMOVE / REPLACE PARTIAL", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP104": { + "desc": "REMOVE / REPLACE PARTIAL LABOUR", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP105": { + "desc": "!!ADJUST MANUALLY!!", + "opcode": "OP99", + "partcode": "PAE" + }, + "OP106": { + "desc": "REPAIR , PARTIAL", + "opcode": "OP9", + "partcode": "PAE" + }, + "OP107": { + "desc": "CHIPGUARD", + "opcode": "OP6", + "partcode": "PAE" + }, + "OP108": { + "desc": "MULTI TONE", + "opcode": "OP6", + "partcode": "PAE" + }, + "OP109": { + "desc": "REPLACE PRE-PRICED", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP11": { + "desc": "REMOVE / REPLACE", + "opcode": "OP11", + "partcode": "PAN" + }, + "OP110": { + "desc": "REFINISH / REPAIR", + "opcode": "OP1", + "partcode": "PAE" + }, + "OP111": { + "desc": "REMOVE / REPLACE", + "opcode": "OP11", + "partcode": "PAN" + }, + "OP112": { + "desc": "REMOVE / REPLACE", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP113": { + "desc": "REPLACE PRE-PRICED", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP114": { + "desc": "REPLACE PRE-PRICED", + "opcode": "OP11", + "partcode": "PAA" + }, + "OP12": { + "desc": "REMOVE / REPLACE PARTIAL", + "opcode": "OP11", + "partcode": "PAN" + }, + "OP120": { + "desc": "REPAIR , PARTIAL", + "opcode": "OP9", + "partcode": "PAE" + }, + "OP13": { + "desc": "ADDITIONAL COSTS", + "opcode": "OP13", + "partcode": "PAE" + }, + "OP14": { + "desc": "ADDITIONAL OPERATIONS", + "opcode": "OP14", + "partcode": "PAE" + }, + "OP15": { + "desc": "BLEND", + "opcode": "OP15", + "partcode": "PAE" + }, + "OP16": { + "desc": "SUBLET", + "opcode": "OP16", + "partcode": "PAS" + }, + "OP17": { + "desc": "POLICY LIMIT ADJUSTMENT", + "opcode": "OP9", + "partcode": "PAE" + }, + "OP18": { + "desc": "APPEAR ALLOWANCE", + "opcode": "OP7", + "partcode": "PAE" + }, + "OP2": { + "desc": "REMOVE / INSTALL", + "opcode": "OP2", + "partcode": "PAE" + }, + "OP24": { + "desc": "CHIPGUARD", + "opcode": "OP6", + "partcode": "PAE" + }, + "OP25": { + "desc": "TWO TONE", + "opcode": "OP6", + "partcode": "PAE" + }, + "OP26": { + "desc": "PAINTLESS DENT REPAIR", + "opcode": "OP16", + "partcode": "PAE" + }, + "OP260": { + "desc": "SUBLET", + "opcode": "OP16", + "partcode": "PAE" + }, + "OP3": { + "desc": "ADDITIONAL LABOR", + "opcode": "OP9", + "partcode": "PAE" + }, + "OP4": { + "desc": "ALIGNMENT", + "opcode": "OP4", + "partcode": "PAS" + }, + "OP5": { + "desc": "OVERHAUL", + "opcode": "OP5", + "partcode": "PAE" + }, + "OP6": { + "desc": "REFINISH", + "opcode": "OP6", + "partcode": "PAE" + }, + "OP7": { + "desc": "INSPECT", + "opcode": "OP7", + "partcode": "PAE" + }, + "OP8": { + "desc": "CHECK / ADJUST", + "opcode": "OP8", + "partcode": "PAE" + }, + "OP9": { + "desc": "REPAIR", + "opcode": "OP9", + "partcode": "PAE" + } +} diff --git a/_reference/DeploymentChecklist.md b/_reference/DeploymentChecklist.md index dd6c96e29..a1ea46e38 100644 --- a/_reference/DeploymentChecklist.md +++ b/_reference/DeploymentChecklist.md @@ -8,4 +8,7 @@ Bucket= __React Based__ REACT_APP_GRAPHQL_ENDPOINT -REACT_APP_GRAPHQL_ENDPOINT_WS \ No newline at end of file +REACT_APP_GRAPHQL_ENDPOINT_WS + +__MetaData__ +Region based OpCodes \ No newline at end of file diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 319a8d546..9831a14ef 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -1,4 +1,4 @@ - + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/unfolded_car.svg b/client/src/assets/unfolded_car.svg index 326293fd1..db3a4d87f 100644 --- a/client/src/assets/unfolded_car.svg +++ b/client/src/assets/unfolded_car.svg @@ -1,6 +1,4 @@ - - - - + id="svg166" + sodipodi:docname="unfolded_car.svg" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)"> + id="metadata172"> image/svg+xml - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x diff --git a/client/src/assets/unfolded_car_clean.svg b/client/src/assets/unfolded_car_clean.svg new file mode 100644 index 000000000..3eb1c2892 --- /dev/null +++ b/client/src/assets/unfolded_car_clean.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + diff --git a/client/src/components/_test/test.component.jsx b/client/src/components/_test/test.component.jsx new file mode 100644 index 000000000..033f0ed3f --- /dev/null +++ b/client/src/components/_test/test.component.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { setEmailOptions } from "../../redux/email/email.actions"; +import T from "../../emails/parts-order/parts-order.email"; +import { REPORT_QUERY_PARTS_ORDER_BY_PK } from "../../emails/parts-order/parts-order.query"; + +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + setEmailOptions: e => dispatch(setEmailOptions(e)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function Test({ setEmailOptions }) { + return ( + + ); +}); diff --git a/client/src/components/alert/alert.component.test.js b/client/src/components/alert/alert.component.test.js index 4e850158f..da5d57cb8 100644 --- a/client/src/components/alert/alert.component.test.js +++ b/client/src/components/alert/alert.component.test.js @@ -2,10 +2,12 @@ import React from "react"; import ReactDOM from "react-dom"; import Alert from "./alert.component"; import { MockedProvider } from "@apollo/react-testing"; -import { shallow } from "enzyme"; +import { shallow, mount } from "enzyme"; const div = document.createElement("div"); it("renders without crashing", () => { - shallow(); + const wrapper = mount(); + console.log("wrapper", wrapper); + // expect(wrapper.children()).to.have.lengthOf(1); }); diff --git a/client/src/components/allocations-assignment/allocations-assignment.component.jsx b/client/src/components/allocations-assignment/allocations-assignment.component.jsx new file mode 100644 index 000000000..f3f3a0a8a --- /dev/null +++ b/client/src/components/allocations-assignment/allocations-assignment.component.jsx @@ -0,0 +1,76 @@ +import { Select, Button, Popover, InputNumber } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export default connect( + mapStateToProps, + null +)(function AllocationsAssignmentComponent({ + bodyshop, + handleAssignment, + assignment, + setAssignment, + visibilityState, + maxHours +}) { + const { t } = useTranslation(); + + const onChange = e => { + console.log("e", e); + setAssignment({ ...assignment, employeeid: e }); + }; + + const [visibility, setVisibility] = visibilityState; + + const popContent = ( +
+ + setAssignment({ ...assignment, hours: e })} + /> + + + +
+ ); + + return ( + + + + ); +}); diff --git a/client/src/components/allocations-assignment/allocations-assignment.component.test.js b/client/src/components/allocations-assignment/allocations-assignment.component.test.js new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/components/allocations-assignment/allocations-assignment.container.jsx b/client/src/components/allocations-assignment/allocations-assignment.container.jsx new file mode 100644 index 000000000..461b06627 --- /dev/null +++ b/client/src/components/allocations-assignment/allocations-assignment.container.jsx @@ -0,0 +1,47 @@ +import React, { useState } from "react"; +import AllocationsAssignmentComponent from "./allocations-assignment.component"; +import { useMutation } from "react-apollo"; +import { INSERT_ALLOCATION } from "../../graphql/allocations.queries"; +import { useTranslation } from "react-i18next"; +import { notification } from "antd"; + +export default function AllocationsAssignmentContainer({ + jobLineId, + hours, + refetch +}) { + const visibilityState = useState(false); + const { t } = useTranslation(); + const [assignment, setAssignment] = useState({ + joblineid: jobLineId, + hours: parseFloat(hours), + employeeid: null + }); + const [insertAllocation] = useMutation(INSERT_ALLOCATION); + + const handleAssignment = () => { + insertAllocation({ variables: { alloc: { ...assignment } } }) + .then(r => { + notification["success"]({ + message: t("allocations.successes.save") + }); + visibilityState[1](false); + if (refetch) refetch(); + }) + .catch(error => { + notification["error"]({ + message: t("employees.errors.saving", { message: error.message }) + }); + }); + }; + + return ( + + ); +} diff --git a/client/src/components/allocations-assignment/allocations-assignment.container.test.jsx b/client/src/components/allocations-assignment/allocations-assignment.container.test.jsx new file mode 100644 index 000000000..87f6ff8eb --- /dev/null +++ b/client/src/components/allocations-assignment/allocations-assignment.container.test.jsx @@ -0,0 +1,20 @@ +import React from "react"; +import { shallow } from "enzyme"; +import AllocationsAssignmentContainer from "./allocations-assignment.container"; + +describe("LineAllocationsContainer", () => { + let mockRefetch; + let jobLineId; + let wrapper; + beforeEach(() => { + mockRefetch = jest.fn; + jobLineId = "b76e44a8-943f-4c67-b8f4-38d14db8b4b8"; + const mockProps = { + refetch: mockRefetch, + jobLineId, + hours: 5 + }; + + shallow(); + }); +}); diff --git a/client/src/components/allocations-bulk-assignment/allocations-bulk-assignment.component.jsx b/client/src/components/allocations-bulk-assignment/allocations-bulk-assignment.component.jsx new file mode 100644 index 000000000..4682320d2 --- /dev/null +++ b/client/src/components/allocations-bulk-assignment/allocations-bulk-assignment.component.jsx @@ -0,0 +1,67 @@ +import { Button, Popover, Select } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export default connect( + mapStateToProps, + null +)(function AllocationsBulkAssignmentComponent({ + disabled, + bodyshop, + handleAssignment, + assignment, + setAssignment, + visibilityState +}) { + const { t } = useTranslation(); + + const onChange = e => { + console.log("e", e); + setAssignment({ ...assignment, employeeid: e }); + }; + + const [visibility, setVisibility] = visibilityState; + + const popContent = ( +
+ + + + +
+ ); + + return ( + + + + ); +}); diff --git a/client/src/components/allocations-bulk-assignment/allocations-bulk-assignment.container.jsx b/client/src/components/allocations-bulk-assignment/allocations-bulk-assignment.container.jsx new file mode 100644 index 000000000..79d4540ea --- /dev/null +++ b/client/src/components/allocations-bulk-assignment/allocations-bulk-assignment.container.jsx @@ -0,0 +1,47 @@ +import React, { useState } from "react"; +import AllocationsBulkAssignment from "./allocations-bulk-assignment.component"; +import { useMutation } from "react-apollo"; +import { INSERT_ALLOCATION } from "../../graphql/allocations.queries"; +import { useTranslation } from "react-i18next"; +import { notification } from "antd"; + +export default function AllocationsBulkAssignmentContainer({ + jobLines, + refetch +}) { + const visibilityState = useState(false); + const { t } = useTranslation(); + const [assignment, setAssignment] = useState({ + employeeid: null + }); + const [insertAllocation] = useMutation(INSERT_ALLOCATION); + + const handleAssignment = () => { + const allocs = jobLines.reduce((acc, value) => { + acc.push({ + joblineid: value.id, + hours: parseFloat(value.mod_lb_hrs) || 0, + employeeid: assignment.employeeid + }); + return acc; + }, []); + + insertAllocation({ variables: { alloc: allocs } }).then(r => { + notification["success"]({ + message: t("employees.successes.save") + }); + visibilityState[1](false); + if (refetch) refetch(); + }); + }; + + return ( + 0 ? false : true} + handleAssignment={handleAssignment} + assignment={assignment} + setAssignment={setAssignment} + visibilityState={visibilityState} + /> + ); +} diff --git a/client/src/components/allocations-employee-label/allocations-employee-label.component.jsx b/client/src/components/allocations-employee-label/allocations-employee-label.component.jsx new file mode 100644 index 000000000..e67be1dcc --- /dev/null +++ b/client/src/components/allocations-employee-label/allocations-employee-label.component.jsx @@ -0,0 +1,19 @@ +import { Icon } from "antd"; +import React from "react"; +import { MdRemoveCircleOutline } from "react-icons/md"; + +export default function AllocationsLabelComponent({ allocation, handleClick }) { + return ( +
+ + {`${allocation.employee.first_name || ""} ${allocation.employee + .last_name || ""} (${allocation.hours || ""})`} + + +
+ ); +} diff --git a/client/src/components/allocations-employee-label/allocations-employee-label.container.jsx b/client/src/components/allocations-employee-label/allocations-employee-label.container.jsx new file mode 100644 index 000000000..bfd004a37 --- /dev/null +++ b/client/src/components/allocations-employee-label/allocations-employee-label.container.jsx @@ -0,0 +1,30 @@ +import React from "react"; +import { useMutation } from "react-apollo"; +import { DELETE_ALLOCATION } from "../../graphql/allocations.queries"; +import AllocationsLabelComponent from "./allocations-employee-label.component"; +import { notification } from "antd"; +import { useTranslation } from "react-i18next"; + +export default function AllocationsLabelContainer({ allocation, refetch }) { + const [deleteAllocation] = useMutation(DELETE_ALLOCATION); + const { t } = useTranslation(); + const handleClick = e => { + e.preventDefault(); + deleteAllocation({ variables: { id: allocation.id } }) + .then(r => { + notification["success"]({ + message: t("allocations.successes.deleted") + }); + if (refetch) refetch(); + }) + .catch(error => { + notification["error"]({ message: t("allocations.errors.deleting") }); + }); + }; + return ( + + ); +} diff --git a/client/src/components/barcode-popup/barcode-popup.component.jsx b/client/src/components/barcode-popup/barcode-popup.component.jsx new file mode 100644 index 000000000..7daceb4dc --- /dev/null +++ b/client/src/components/barcode-popup/barcode-popup.component.jsx @@ -0,0 +1,22 @@ +import { Tag, Popover } from "antd"; +import React from "react"; +import Barcode from "react-barcode"; +import { useTranslation } from "react-i18next"; +export default function BarcodePopupComponent({ value }) { + const { t } = useTranslation(); + return ( +
+ + } + > + {t("general.labels.barcode")} + +
+ ); +} diff --git a/client/src/components/chat-conversation/chat-conversation.component.jsx b/client/src/components/chat-conversation/chat-conversation.component.jsx new file mode 100644 index 000000000..5d7f095c6 --- /dev/null +++ b/client/src/components/chat-conversation/chat-conversation.component.jsx @@ -0,0 +1,120 @@ +import { Button, Card, Input, Icon } from "antd"; +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import twilio from "twilio"; +import { + closeConversation, + toggleConversationVisible +} from "../../redux/messaging/messaging.actions"; +import PhoneFormatter from "../../utils/PhoneFormatter"; +import "./chat-conversation.styles.scss"; //https://bootsnipp.com/snippets/exR5v +import { MdSend } from "react-icons/md"; +import { useTranslation } from "react-i18next"; + +const client = twilio( + "ACf1b1aaf0e04740828b49b6e58467d787", + "0bea5e29a6d77593183ab1caa01d23de" +); + +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + toggleConversationVisible: conversationId => + dispatch(toggleConversationVisible(conversationId)), + closeConversation: phone => dispatch(closeConversation(phone)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function ChatConversationComponent({ + conversation, + toggleConversationVisible, + closeConversation +}) { + const { t } = useTranslation(); + + const [messages, setMessages] = useState([]); + + useEffect(() => { + client.messages.list({ limit: 20 }, (error, items) => { + setMessages( + items.reduce((acc, value) => { + acc.push({ + sid: value.sid, + direction: value.direction, + body: value.body + }); + return acc; + }, []) + ); + }); + return () => {}; + }, [setMessages]); + return ( +
+ +
toggleConversationVisible(conversation.phone)} + > + {conversation.phone} +
+ +
+ ) : null + } + style={{ + width: conversation.open ? "400px" : "175px", + margin: "0px 10px" + }} + size="small" + > + {conversation.open ? ( +
+
+
    + {messages.map(item => ( +
  • +

    {item.body}

    +
  • + ))} +
+
+ } + /> +
+ ) : ( +
+
toggleConversationVisible(conversation.phone)}> + {conversation.phone} +
+ +
+ )} + + + ); +}); diff --git a/client/src/components/chat-conversation/chat-conversation.container.jsx b/client/src/components/chat-conversation/chat-conversation.container.jsx new file mode 100644 index 000000000..bce58d405 --- /dev/null +++ b/client/src/components/chat-conversation/chat-conversation.container.jsx @@ -0,0 +1,17 @@ +import React from "react"; +import ChatConversationComponent from "./chat-conversation.component"; + +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + //setUserLanguage: language => dispatch(setUserLanguage(language)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function ChatConversationContainer({ conversation }) { + return ; +}); diff --git a/client/src/components/chat-conversation/chat-conversation.styles.scss b/client/src/components/chat-conversation/chat-conversation.styles.scss new file mode 100644 index 000000000..a7e128649 --- /dev/null +++ b/client/src/components/chat-conversation/chat-conversation.styles.scss @@ -0,0 +1,127 @@ +.messages { + height: auto; + min-height: calc(100% - 93px); + max-height: calc(100% - 93px); + overflow-y: scroll; + overflow-x: hidden; +} +@media screen and (max-width: 735px) { + .messages { + max-height: calc(100% - 105px); + } +} +.messages::-webkit-scrollbar { + width: 8px; + background: transparent; +} +.messages::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.3); +} +.messages ul li { + display: inline-block; + clear: both; + //float: left; + margin: 5px 15px 5px 15px; + width: calc(100% - 25px); + font-size: 0.9em; +} +.messages ul li:nth-last-child(1) { + margin-bottom: 20px; +} +.messages ul li.sent img { + margin: 6px 8px 0 0; +} +.messages ul li.sent p { + background: #435f7a; + color: #f5f5f5; +} +.messages ul li.replies img { + float: right; + margin: 6px 0 0 8px; +} +.messages ul li.replies p { + background: #f5f5f5; + float: right; +} +.messages ul li img { + width: 22px; + border-radius: 50%; + float: left; +} +.messages ul li p { + display: inline-block; + padding: 10px 15px; + border-radius: 20px; + max-width: 205px; + line-height: 130%; +} +@media screen and (min-width: 735px) { + .messages ul li p { + max-width: 300px; + } +} +.message-input { + position: absolute; + bottom: 0; + width: 100%; + z-index: 99; +} +.message-input .wrap { + position: relative; +} +.message-input .wrap input { + font-family: "proxima-nova", "Source Sans Pro", sans-serif; + float: left; + border: none; + width: calc(100% - 90px); + padding: 11px 32px 10px 8px; + font-size: 0.8em; + color: #32465a; +} +@media screen and (max-width: 735px) { + .message-input .wrap input { + padding: 15px 32px 16px 8px; + } +} +.message-input .wrap input:focus { + outline: none; +} +.message-input .wrap .attachment { + position: absolute; + right: 60px; + z-index: 4; + margin-top: 10px; + font-size: 1.1em; + color: #435f7a; + opacity: 0.5; + cursor: pointer; +} +@media screen and (max-width: 735px) { + .message-input .wrap .attachment { + margin-top: 17px; + right: 65px; + } +} +.message-input .wrap .attachment:hover { + opacity: 1; +} +.message-input .wrap button { + float: right; + border: none; + width: 50px; + padding: 12px 0; + cursor: pointer; + background: #32465a; + color: #f5f5f5; +} +@media screen and (max-width: 735px) { + .message-input .wrap button { + padding: 16px 0; + } +} +.message-input .wrap button:hover { + background: #435f7a; +} +.message-input .wrap button:focus { + outline: none; +} diff --git a/client/src/components/chat-open-button/chat-open-button.component.jsx b/client/src/components/chat-open-button/chat-open-button.component.jsx new file mode 100644 index 000000000..bce620e7b --- /dev/null +++ b/client/src/components/chat-open-button/chat-open-button.component.jsx @@ -0,0 +1,23 @@ +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { openConversation } from "../../redux/messaging/messaging.actions"; +import { Icon } from "antd"; +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + openConversation: phone => dispatch(openConversation(phone)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function ChatOpenButton({ openConversation, phone }) { + return ( + openConversation(phone)} + /> + ); +}); diff --git a/client/src/components/chat-overlay/chat-overlay.component.jsx b/client/src/components/chat-overlay/chat-overlay.component.jsx new file mode 100644 index 000000000..396a57df6 --- /dev/null +++ b/client/src/components/chat-overlay/chat-overlay.component.jsx @@ -0,0 +1,36 @@ +import { Badge, Card, Icon } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +export default function ChatWindowComponent({ + chatVisible, + toggleChatVisible +}) { + const { t } = useTranslation(); + return ( +
+ + toggleChatVisible()} + style={{ + width: chatVisible ? "300px" : "125px", + margin: "0px 10px" + }} + size="small" + > + {chatVisible ? ( +
+ List of chats here. +
+ ) : ( +
+ + + {t("messaging.labels.messaging")} + +
+ )} +
+
+
+ ); +} diff --git a/client/src/components/chat-overlay/chat-overlay.container.jsx b/client/src/components/chat-overlay/chat-overlay.container.jsx new file mode 100644 index 000000000..6302bad0d --- /dev/null +++ b/client/src/components/chat-overlay/chat-overlay.container.jsx @@ -0,0 +1,48 @@ +import { Affix, Badge } from "antd"; +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { toggleChatVisible } from "../../redux/messaging/messaging.actions"; +import { + selectChatVisible, + selectConversations +} from "../../redux/messaging/messaging.selectors"; +import ChatConversationContainer from "../chat-conversation/chat-conversation.container"; +import ChatOverlayComponent from "./chat-overlay.component"; + +const mapStateToProps = createStructuredSelector({ + chatVisible: selectChatVisible, + conversations: selectConversations +}); + +const mapDispatchToProps = dispatch => ({ + toggleChatVisible: () => dispatch(toggleChatVisible()) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function ChatWindowContainer({ + chatVisible, + toggleChatVisible, + conversations +}) { + return ( + +
+ + + + {conversations + ? conversations.map((conversation, idx) => ( + + + + )) + : null} +
+
+ ); +}); diff --git a/client/src/components/chat-window/chat-window.component.jsx b/client/src/components/chat-window/chat-window.component.jsx deleted file mode 100644 index e4fd51848..000000000 --- a/client/src/components/chat-window/chat-window.component.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import React from "react"; - -export default function ChatWindowComponent() { - return
Chat Windows and more
; -} diff --git a/client/src/components/chat-window/chat-window.container.jsx b/client/src/components/chat-window/chat-window.container.jsx deleted file mode 100644 index cd70e1060..000000000 --- a/client/src/components/chat-window/chat-window.container.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React, { useState } from "react"; -import ChatWindowComponent from "./chat-window.component"; -import { Button } from "antd"; - -export default function ChatWindowContainer() { - const [visible, setVisible] = useState(false); - return ( -
- {visible ? : null} - -
- ); -} diff --git a/client/src/components/current-user-dropdown/current-user-dropdown.component.jsx b/client/src/components/current-user-dropdown/current-user-dropdown.component.jsx deleted file mode 100644 index 5f23bca64..000000000 --- a/client/src/components/current-user-dropdown/current-user-dropdown.component.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import { useApolloClient, useQuery } from "@apollo/react-hooks"; -import { Avatar, Col, Dropdown, Icon, Menu, Row } from "antd"; -import i18next from "i18next"; -import React from "react"; -import { useTranslation } from "react-i18next"; -import { Link } from "react-router-dom"; -import UserImage from "../../assets/User.svg"; -import { GET_CURRENT_USER } from "../../graphql/local.queries"; -import AlertComponent from "../alert/alert.component"; -import SignOut from "../sign-out/sign-out.component"; - -export default function CurrentUserDropdown() { - const { t } = useTranslation(); - const { loading, error, data } = useQuery(GET_CURRENT_USER); - const client = useApolloClient(); - - const handleMenuClick = e => { - if (e.item.props.actiontype === "lang-select") { - i18next.changeLanguage(e.key, (err, t) => { - if (err) - return console.log("Error encountered when changing languages.", err); - client.writeData({ data: { language: e.key } }); - }); - } - }; - const menu = ( - - - - - - {t("menus.currentuser.profile")} - - - - {t("menus.currentuser.languageselector")} - - }> - - {t("general.languages.english")} - - - {t("general.languages.french")} - - - {t("general.languages.spanish")} - - - - ); - - if (loading) return null; - if (error) return ; - - const { currentUser } = data; - - return ( - - - - - - - {currentUser.displayName || t("general.labels.unknown")} - - - - ); -} diff --git a/client/src/components/email-overlay/email-overlay.component.jsx b/client/src/components/email-overlay/email-overlay.component.jsx new file mode 100644 index 000000000..956ae7d69 --- /dev/null +++ b/client/src/components/email-overlay/email-overlay.component.jsx @@ -0,0 +1,39 @@ +import React from "react"; +import { Input } from "antd"; +import CKEditor from "@ckeditor/ckeditor5-react"; +import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; + +export default function SendEmailButtonComponent({ + messageOptions, + handleConfigChange, + handleHtmlChange +}) { + return ( +
+ + CC + + Subject + + { + handleHtmlChange(editor.getData()); + }} + /> +
+ ); +} diff --git a/client/src/components/email-overlay/email-overlay.container.jsx b/client/src/components/email-overlay/email-overlay.container.jsx new file mode 100644 index 000000000..264452077 --- /dev/null +++ b/client/src/components/email-overlay/email-overlay.container.jsx @@ -0,0 +1,104 @@ +import { Button, Modal, notification } from "antd"; +import axios from "axios"; +import React, { useEffect, useState } from "react"; +import { useLazyQuery } from "react-apollo"; +import ReactDOMServer from "react-dom/server"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { toggleEmailOverlayVisible } from "../../redux/email/email.actions"; +import { selectEmailConfig, selectEmailVisible } from "../../redux/email/email.selectors.js"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import EmailOverlayComponent from "./email-overlay.component"; + +const mapStateToProps = createStructuredSelector({ + modalVisible: selectEmailVisible, + emailConfig: selectEmailConfig +}); +const mapDispatchToProps = dispatch => ({ + toggleEmailOverlayVisible: () => dispatch(toggleEmailOverlayVisible()) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function SendEmail({ emailConfig, modalVisible, toggleEmailOverlayVisible }) { + const { t } = useTranslation(); + const [messageOptions, setMessageOptions] = useState( + emailConfig.messageOptions + ); + useEffect(() => { + setMessageOptions(emailConfig.messageOptions); + }, [setMessageOptions, emailConfig.messageOptions]); + + const [executeQuery, { called, loading, data }] = useLazyQuery( + emailConfig.queryConfig[0], + { + ...emailConfig.queryConfig[1], + fetchPolicy: "network-only" + } + ); + + if ( + emailConfig.queryConfig[0] && + emailConfig.queryConfig[1] && + modalVisible && + !called + ) { + executeQuery(); + } + + if (data && !messageOptions.html && emailConfig.template) { + setMessageOptions({ + ...messageOptions, + html: ReactDOMServer.renderToStaticMarkup( + + ) + //html: renderEmail() + }); + } + + const handleOk = () => { + //sendEmail(messageOptions); + axios + .post("/sendemail", messageOptions) + .then(response => { + console.log(JSON.stringify(response)); + notification["success"]({ message: t("emails.successes.sent") }); + toggleEmailOverlayVisible(); + }) + .catch(error => { + console.log(JSON.stringify(error)); + notification["error"]({ + message: t("emails.errors.notsent", { message: error.message }) + }); + }); + }; + const handleConfigChange = event => { + const { name, value } = event.target; + setMessageOptions({ ...messageOptions, [name]: value }); + }; + const handleHtmlChange = text => { + setMessageOptions({ ...messageOptions, html: text }); + }; + + return ( +
+ toggleEmailOverlayVisible()}> + + + + + + +
+ ); +}); diff --git a/client/src/components/footer/footer.component.jsx b/client/src/components/footer/footer.component.jsx index a8be82b23..491546987 100644 --- a/client/src/components/footer/footer.component.jsx +++ b/client/src/components/footer/footer.component.jsx @@ -4,7 +4,7 @@ import React from "react"; export default function FooterComponent() { return ( - + Copyright Snapt Software 2019. All rights reserved. diff --git a/client/src/components/form-items-formatted/email-form-item.component.jsx b/client/src/components/form-items-formatted/email-form-item.component.jsx index bb51094ca..c007b6bb3 100644 --- a/client/src/components/form-items-formatted/email-form-item.component.jsx +++ b/client/src/components/form-items-formatted/email-form-item.component.jsx @@ -5,9 +5,13 @@ function FormItemEmail(props, ref) { + props.email ? ( + + + + ) : ( - + ) } /> ); diff --git a/client/src/components/form-items-formatted/reset-form-item.component.jsx b/client/src/components/form-items-formatted/reset-form-item.component.jsx new file mode 100644 index 000000000..54ef8e357 --- /dev/null +++ b/client/src/components/form-items-formatted/reset-form-item.component.jsx @@ -0,0 +1,21 @@ +import { Button } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import AlertComponent from "../alert/alert.component"; + +export default function ResetForm({ resetFields }) { + const { t } = useTranslation(); + return ( + + {t("general.messages.unsavedchanges")} + + + } + closable + /> + ); +} diff --git a/client/src/components/global-search/global-search.component.jsx b/client/src/components/global-search/global-search.component.jsx deleted file mode 100644 index b537b5f11..000000000 --- a/client/src/components/global-search/global-search.component.jsx +++ /dev/null @@ -1,79 +0,0 @@ -import React from "react"; -// import { Icon, Button, Input, AutoComplete } from "antd"; - -// const { Option } = AutoComplete; - -// function onSelect(value) { -// console.log("onSelect", value); -// } - -// function getRandomInt(max, min = 0) { -// return Math.floor(Math.random() * (max - min + 1)) + min; // eslint-disable-line no-mixed-operators -// } - -// function searchResult(query) { -// return new Array(getRandomInt(5)) -// .join(".") -// .split(".") -// .map((item, idx) => ({ -// query, -// category: `${query}${idx}`, -// count: getRandomInt(200, 100) -// })); -// } - -// function renderOption(item) { -// return ( -// -// ); -// } - -export default class GlobalSearch extends React.Component { - state = { - dataSource: [] - }; - - // handleSearch = value => { - // this.setState({ - // dataSource: value ? searchResult(value) : [] - // }); - // }; - - render() { - return ( -
- //
- // - // - // - // - // } - // /> - // - //
- ); - } -} diff --git a/client/src/components/header/header.component.jsx b/client/src/components/header/header.component.jsx index 217977bee..fe0a4997c 100644 --- a/client/src/components/header/header.component.jsx +++ b/client/src/components/header/header.component.jsx @@ -1,73 +1,181 @@ -import { useApolloClient } from "@apollo/react-hooks"; -import { Col, Icon, Menu, Row } from "antd"; +import { Avatar, Col, Icon, Menu, Row } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; -import CurrentUserDropdown from "../current-user-dropdown/current-user-dropdown.component"; -import GlobalSearch from "../global-search/global-search.component"; +import UserImage from "../../assets/User.svg"; +import { signOutStart } from "../../redux/user/user.actions"; import ManageSignInButton from "../manage-sign-in-button/manage-sign-in-button.component"; -import "./header.styles.scss"; -export default ({ landingHeader, navItems, selectedNavItem }) => { - const apolloClient = useApolloClient(); +export default ({ + landingHeader, + selectedNavItem, + logo, + handleMenuClick, + currentUser +}) => { const { t } = useTranslation(); - const handleClick = e => { - apolloClient.writeData({ data: { selectedNavItem: e.key } }); - }; + //TODO Add + return ( - - - - - - + + {logo ? ( + + Shop Logo + + ) : null} + + {landingHeader ? ( + + - - - - {t("menus.header.home")} - - - - - - - {t("menus.header.activejobs")} + + + {currentUser.displayName || t("general.labels.unknown")} +
+ } + > + + {t("user.actions.signout")} + + + + {t("menus.currentuser.profile")} + + + + + {t("menus.currentuser.languageselector")} + + } + > + + {t("general.languages.english")} + + + {t("general.languages.french")} + + + {t("general.languages.spanish")} + + + + + ) : ( + + + + + {t("menus.header.home")} - - - - {t("menus.header.availablejobs")} - - - + + + + + {t("menus.header.schedule")} + + + + {t("menus.header.activejobs")} + + + + {t("menus.header.availablejobs")} + + + + + + + + {t("menus.header.owners")} + + + + + + {t("menus.header.vehicles")} + + + + + + {t("menus.header.shop_config")} + + + + {t("menus.header.shop_vendors")} + + + - { - // navItems.map(navItem => ( - // - // - // {navItem.icontype ? : null} - // {navItem.title} - // - // - // )) - } - - {!landingHeader ? null : ( - - - - )} - - - - {!landingHeader ? : null} + + + {currentUser.displayName || t("general.labels.unknown")} + + } + > + + {t("user.actions.signout")} + + + + {t("menus.currentuser.profile")} + + + + + {t("menus.currentuser.languageselector")} + + } + > + + {t("general.languages.english")} + + + {t("general.languages.french")} + + + {t("general.languages.spanish")} + + + + + )} ); diff --git a/client/src/components/header/header.container.jsx b/client/src/components/header/header.container.jsx index db3d0e9f2..77a5feb4c 100644 --- a/client/src/components/header/header.container.jsx +++ b/client/src/components/header/header.container.jsx @@ -1,46 +1,52 @@ import React from "react"; -import "./header.styles.scss"; -import { useQuery } from "react-apollo"; -// //import { -// GET_LANDING_NAV_ITEMS, -// GET_NAV_ITEMS -// } from "../../graphql/metadata.queries"; -import { GET_CURRENT_SELECTED_NAV_ITEM } from "../../graphql/local.queries"; -//import LoadingSpinner from "../loading-spinner/loading-spinner.component"; -//import AlertComponent from "../alert/alert.component"; import HeaderComponent from "./header.component"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import i18next from "i18next"; +import { setUserLanguage, signOutStart } from "../../redux/user/user.actions"; +import { + selectCurrentUser, + selectBodyshop +} from "../../redux/user/user.selectors"; -export default ({ landingHeader, signedIn }) => { - const hookSelectedNavItem = useQuery(GET_CURRENT_SELECTED_NAV_ITEM); +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, + bodyshop: selectBodyshop +}); - // let hookNavItems; - // if (landingHeader) { - // hookNavItems = useQuery(GET_LANDING_NAV_ITEMS, { - // fetchPolicy: "network-only" - // }); - // } else { - // hookNavItems = useQuery(GET_NAV_ITEMS, { - // fetchPolicy: "network-only" - // }); - // } +const mapDispatchToProps = dispatch => ({ + signOutStart: () => dispatch(signOutStart()), + setUserLanguage: language => dispatch(setUserLanguage(language)) +}); - // if (hookNavItems.loading || hookSelectedNavItem.loading) - // return ; - // if (hookNavItems.error) - // return ; - // if (hookSelectedNavItem.error) - // return console.log( - // "Unable to load Selected Navigation Item.", - // hookSelectedNavItem.error - // ); - - const { selectedNavItem } = hookSelectedNavItem.data; - // const navItems = JSON.parse(hookNavItems.data.masterdata_by_pk.value); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function HeaderContainer({ + landingHeader, + currentUser, + bodyshop, + signOutStart, + setUserLanguage +}) { + const handleMenuClick = e => { + if (e.item.props.actiontype === "lang-select") { + i18next.changeLanguage(e.key, (err, t) => { + if (err) + return console.log("Error encountered when changing languages.", err); + setUserLanguage(e.key); + }); + } + }; return ( ); -}; +}); diff --git a/client/src/components/header/header.styles.scss b/client/src/components/header/header.styles.scss deleted file mode 100644 index 3766e1b90..000000000 --- a/client/src/components/header/header.styles.scss +++ /dev/null @@ -1,4 +0,0 @@ -.header{ - text-align: center; - width: 100%; -} \ No newline at end of file diff --git a/client/src/components/invoice-enter-modal/invoice-enter-modal.component.jsx b/client/src/components/invoice-enter-modal/invoice-enter-modal.component.jsx new file mode 100644 index 000000000..387290e7f --- /dev/null +++ b/client/src/components/invoice-enter-modal/invoice-enter-modal.component.jsx @@ -0,0 +1,71 @@ +import { Modal, Form, Input, InputNumber } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import ResetForm from "../form-items-formatted/reset-form-item.component"; + +export default function InvoiceEnterModalComponent({ + visible, + invoice, + handleCancel, + handleSubmit, + form +}) { + const { t } = useTranslation(); + const { getFieldDecorator, isFieldsTouched, resetFields } = form; + + return ( + + {isFieldsTouched() ? : null} +
+ {JSON.stringify(invoice)} + { + // + // {getFieldDecorator("line_desc", { + // initialValue: jobLine.line_desc + // })()} + // + // + // {getFieldDecorator("oem_partno", { + // initialValue: jobLine.oem_partno + // })()} + // + // + // {getFieldDecorator("part_type", { + // initialValue: jobLine.part_type + // })()} + // + // + // {getFieldDecorator("mod_lbr_ty", { + // initialValue: jobLine.mod_lbr_ty + // })()} + // + // + // {getFieldDecorator("op_code_desc", { + // initialValue: jobLine.op_code_desc + // })()} + // + // + // {getFieldDecorator("mod_lb_hrs", { + // initialValue: jobLine.mod_lb_hrs + // })()} + // + // + // {getFieldDecorator("act_price", { + // initialValue: jobLine.act_price + // })()} + // + } +
+
+ ); +} diff --git a/client/src/components/invoice-enter-modal/invoice-enter-modal.container.jsx b/client/src/components/invoice-enter-modal/invoice-enter-modal.container.jsx new file mode 100644 index 000000000..5526af420 --- /dev/null +++ b/client/src/components/invoice-enter-modal/invoice-enter-modal.container.jsx @@ -0,0 +1,114 @@ +import { Form, notification } from "antd"; +import React from "react"; +import { useMutation } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { + INSERT_NEW_JOB_LINE, + UPDATE_JOB_LINE +} from "../../graphql/jobs-lines.queries"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; +import { selectInvoiceEnterModal } from "../../redux/modals/modals.selectors"; +import InvoiceEnterModalComponent from "./invoice-enter-modal.component"; + +const mapStateToProps = createStructuredSelector({ + invoiceEnterModal: selectInvoiceEnterModal +}); +const mapDispatchToProps = dispatch => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("invoiceEnter")) +}); + +function InvoiceEnterModalContainer({ + invoiceEnterModal, + toggleModalVisible, + form +}) { + const { t } = useTranslation(); + // const [insertJobLine] = useMutation(INSERT_NEW_JOB_LINE); + // const [updateJobLine] = useMutation(UPDATE_JOB_LINE); + + const handleSubmit = e => { + e.preventDefault(); + + form.validateFieldsAndScroll((err, values) => { + if (err) { + notification["error"]({ + message: t("invoices.errors.validation"), + description: err.message + }); + } + if (!err) { + alert("Closing this modal."); + toggleModalVisible(); + // if (!jobLineEditModal.context.id) { + // insertJobLine({ + // variables: { + // lineInput: [{ jobid: jobLineEditModal.context.jobid, ...values }] + // } + // }) + // .then(r => { + // if (jobLineEditModal.actions.refetch) + // jobLineEditModal.actions.refetch(); + // toggleModalVisible(); + // notification["success"]({ + // message: t("joblines.successes.created") + // }); + // }) + // .catch(error => { + // notification["error"]({ + // message: t("joblines.errors.creating", { + // message: error.message + // }) + // }); + // }); + // } else { + // updateJobLine({ + // variables: { + // lineId: jobLineEditModal.context.id, + // line: values + // } + // }) + // .then(r => { + // notification["success"]({ + // message: t("joblines.successes.updated") + // }); + // }) + // .catch(error => { + // notification["success"]({ + // message: t("joblines.errors.updating", { + // message: error.message + // }) + // }); + // }); + // if (jobLineEditModal.actions.refetch) + // jobLineEditModal.actions.refetch(); + // toggleModalVisible(); + // } + } + }); + }; + + const handleCancel = () => { + toggleModalVisible(); + }; + + return ( + + ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)( + Form.create({ name: "InvoiceEnterModalContainer" })( + InvoiceEnterModalContainer + ) +); diff --git a/client/src/components/job-damage-visual/job-damage-visual.component.jsx b/client/src/components/job-damage-visual/job-damage-visual.component.jsx new file mode 100644 index 000000000..3af1910ab --- /dev/null +++ b/client/src/components/job-damage-visual/job-damage-visual.component.jsx @@ -0,0 +1,735 @@ +import React from "react"; +export default ({ dmg1, dmg2 }) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + // + // x + // + } + + +); diff --git a/client/src/components/job-detail-cards/job-detail-cards.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.component.jsx index 5c900483d..910a02b1b 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.component.jsx @@ -17,8 +17,7 @@ import JobDetailCardsNotesComponent from "./job-detail-cards.notes.component"; import JobDetailCardsPartsComponent from "./job-detail-cards.parts.component"; import "./job-detail-cards.styles.scss"; import JobDetailCardsTotalsComponent from "./job-detail-cards.totals.component"; - - +import ScheduleJobModalContainer from "../schedule-job-modal/schedule-job-modal.container"; export default function JobDetailCards({ selectedJob }) { const { loading, error, data, refetch } = useQuery(QUERY_JOB_CARD_DETAILS, { @@ -27,6 +26,7 @@ export default function JobDetailCards({ selectedJob }) { skip: !selectedJob }); const [noteModalVisible, setNoteModalVisible] = useState(false); + const scheduleModalState = useState(false); const { t } = useTranslation(); if (!selectedJob) { @@ -43,13 +43,18 @@ export default function JobDetailCards({ selectedJob }) { changeVisibility={setNoteModalVisible} refetch={refetch} /> + window.history.back()} tags={ - {data.jobs_by_pk.job_status ? ( - {data.jobs_by_pk.job_status.name} + {data.jobs_by_pk.status ? ( + {data.jobs_by_pk.status} ) : null} } @@ -67,6 +72,14 @@ export default function JobDetailCards({ selectedJob }) { ) } extra={[ + , diff --git a/client/src/components/job-detail-cards/job-detail-cards.customer.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.customer.component.jsx index 2b8d778dd..5a8de6135 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.customer.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.customer.component.jsx @@ -14,7 +14,10 @@ export default function JobDetailCardsCustomerComponent({ loading, data }) { extraLink={data && data.owner ? `/manage/owners/${data.owner.id}` : null}> {data ? ( -
{`${data.ownr_fn || ""} ${data.ownr_ln || ""}`}
+
+ {`${data.ownr_fn || + ""} ${data.ownr_ln || ""}`} +
{t("jobs.fields.phoneshort")}: {`${data.ownr_ph1 || diff --git a/client/src/components/job-detail-cards/job-detail-cards.damage.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.damage.component.jsx index fea7c0ed0..ca274dcc7 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.damage.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.damage.component.jsx @@ -1,18 +1,14 @@ import React from "react"; import { useTranslation } from "react-i18next"; import CardTemplate from "./job-detail-cards.template.component"; -import UnfoldedCar from "../../assets/unfolded_car.svg"; +import Car from "../job-damage-visual/job-damage-visual.component"; export default function JobDetailCardsDamageComponent({ loading, data }) { const { t } = useTranslation(); - + const { area_of_damage } = data; return ( - {data ? ( - - Damaged Area - - ) : null} + ); } diff --git a/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx index a6c17e793..5c0b7fff8 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx @@ -1,8 +1,8 @@ +import { Timeline } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; +import { DateFormatter } from "../../utils/DateFormatter"; import CardTemplate from "./job-detail-cards.template.component"; -import Moment from "react-moment"; -import { Timeline } from "antd"; export default function JobDetailCardsDatesComponent({ loading, data }) { const { t } = useTranslation(); @@ -31,90 +31,84 @@ export default function JobDetailCardsDatesComponent({ loading, data }) { {data.actual_in ? ( {t("jobs.fields.actual_in")} - {data.actual_in || ""} + {data.actual_in} ) : null} {data.scheduled_completion ? ( - {t("jobs.fields.scheduled_completion")} - - {data.scheduled_completion || ""} - + {t("jobs.fields.scheduled_completion")} + {data.scheduled_completion} ) : null} {data.scheduled_in ? ( {t("jobs.fields.scheduled_in")} - {data.scheduled_in || ""} + {data.scheduled_in} ) : null} {data.actual_completion ? ( {t("jobs.fields.actual_completion")} - - {data.actual_completion || ""} - + {data.actual_completion} ) : null} {data.scheduled_delivery ? ( {t("jobs.fields.scheduled_delivery")} - - {data.scheduled_delivery || ""} - + {data.scheduled_delivery} ) : null} {data.actual_delivery ? ( {t("jobs.fields.actual_delivery")} - {data.actual_delivery || ""} + {data.actual_delivery} ) : null} {data.date_estimated ? ( {t("jobs.fields.date_estimated")} - {data.date_estimated || ""} + {data.date_estimated} ) : null} {data.date_open ? ( {t("jobs.fields.date_open")} - {data.date_open || ""} + {data.date_open} ) : null} {data.date_scheduled ? ( {t("jobs.fields.date_scheduled")} - {data.date_scheduled || ""} + {data.date_scheduled} ) : null} {data.date_invoiced ? ( {t("jobs.fields.date_invoiced")} - {data.date_invoiced || ""} + {data.date_invoiced} ) : null} {data.date_closed ? ( {t("jobs.fields.date_closed")} - {data.date_closed || ""} + {data.date_closed} ) : null} {data.date_exported ? ( {t("jobs.fields.date_exported")} - {data.date_exported || ""} + {data.date_exported} ) : null} diff --git a/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx index d6b57316f..5df1f41ed 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx @@ -18,13 +18,12 @@ export default function JobDetailCardsDocumentsComponent({ loading, data }) { - {data.documents.count > 0 ? ( + extraLink={`/manage/jobs/${data.id}#documents`} + > + {data.documents.length > 0 ? ( {data.documents.map(item => ( -
- {item.name} -
+ {item.name} ))}
) : ( diff --git a/client/src/components/job-detail-cards/job-detail-cards.documents.styles.scss b/client/src/components/job-detail-cards/job-detail-cards.documents.styles.scss index d6df79a10..18e96b32a 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.documents.styles.scss +++ b/client/src/components/job-detail-cards/job-detail-cards.documents.styles.scss @@ -1,11 +1,12 @@ .ant-carousel .slick-slide { - text-align: center; - height: 160px; - line-height: 160px; - background: #364d79; - overflow: hidden; - } - - .ant-carousel .slick-slide h3 { - color: #fff; - } \ No newline at end of file + text-align: center; + height: 50px; + width: 50px; + line-height: 50px; + background: #364d79; + overflow: hidden; +} + +.ant-carousel .slick-slide h3 { + color: #ccddaa; +} diff --git a/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx index 0e4cf4935..5e29e3fdb 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx @@ -10,45 +10,45 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) { {data ? ( -
{data?.ins_co_nm || t("general.labels.unknown")}
-
{data?.clm_no || t("general.labels.unknown")}
+
{data.ins_co_nm || t("general.labels.unknown")}
+
{data.clm_no || t("general.labels.unknown")}
{t("jobs.labels.cards.filehandler")} - {data?.ins_ea ? ( + {data.ins_ea ? ( -
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
+
{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}
) : ( -
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
+
{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}
)} - {data?.ins_ph1 ? ( - {data?.ins_ph1} + {data.ins_ph1 ? ( + {data.ins_ph1} ) : null}
{t("jobs.labels.cards.appraiser")} - {data?.est_ea ? ( + {data.est_ea ? ( -
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
+
{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}
) : ( -
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
+
{`${data.ins_ct_fn || ""} ${data.ins_ct_ln || ""}`}
)}
{t("jobs.labels.cards.estimator")} - {data?.est_ea ? ( + {data.est_ea ? ( -
{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}
+
{`${data.est_ct_fn || ""} ${data.est_ct_ln || ""}`}
) : ( -
{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}
+
{`${data.est_ct_fn || ""} ${data.est_ct_ln || ""}`}
)} - {data?.est_ph1 ? ( - {data?.est_ph1} - ) : null} + {data.est_ph1 ? ( + {data.est_ph1} + ) : null}
) : null} diff --git a/client/src/components/job-detail-cards/job-detail-cards.notes.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.notes.component.jsx index e9a6f79c6..f20a8ea13 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.notes.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.notes.component.jsx @@ -13,7 +13,7 @@ export default function JobDetailCardsNotesComponent({ loading, data }) { const { t } = useTranslation(); return ( - @@ -22,7 +22,7 @@ export default function JobDetailCardsNotesComponent({ loading, data }) { ( {item.critical ? ( diff --git a/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx index 3cf89b0ed..f32c57ea7 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx @@ -9,7 +9,7 @@ export default function JobDetailCardsVehicleComponent({ loading, data }) { {data ? ( diff --git a/client/src/components/job-detail-lines/job-lines-cell.component.jsx b/client/src/components/job-detail-lines/job-lines-cell.component.jsx deleted file mode 100644 index 1ea38f1b2..000000000 --- a/client/src/components/job-detail-lines/job-lines-cell.component.jsx +++ /dev/null @@ -1,52 +0,0 @@ -import React from "react"; -import { Form, Input, InputNumber } from "antd"; -import JobDetailFormContext from "../../pages/jobs-detail/jobs-detail.page.context"; - -export default class EditableCell extends React.Component { - getInput = () => { - if (this.props.inputType === "number") { - return ; - } - return ; - }; - - renderCell = ({ getFieldDecorator }) => { - const { - editing, - dataIndex, - title, - inputType, - record, - index, - children, - ...restProps - } = this.props; - return ( - - {editing ? ( - - {getFieldDecorator(dataIndex, { - rules: [ - { - required: true, - message: `Please Input ${title}!` - } - ], - initialValue: record[dataIndex] - })(this.getInput())} - - ) : ( - children - )} - - ); - }; - - render() { - return ( - - {this.renderCell} - - ); - } -} diff --git a/client/src/components/job-detail-lines/job-lines.component.jsx b/client/src/components/job-detail-lines/job-lines.component.jsx index 135dc6dea..c60a18208 100644 --- a/client/src/components/job-detail-lines/job-lines.component.jsx +++ b/client/src/components/job-detail-lines/job-lines.component.jsx @@ -1,62 +1,103 @@ -import { Table, Button } from "antd"; -import React, { useContext, useState } from "react"; +import { Button, Input, Table } from "antd"; +import React, { useState } from "react"; import { useTranslation } from "react-i18next"; -import JobDetailFormContext from "../../pages/jobs-detail/jobs-detail.page.context"; +import { Link } from "react-router-dom"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { alphaSort } from "../../utils/sorters"; -import EditableCell from "./job-lines-cell.component"; +import AllocationsAssignmentContainer from "../allocations-assignment/allocations-assignment.container"; +import AllocationsBulkAssignmentContainer from "../allocations-bulk-assignment/allocations-bulk-assignment.container"; +import AllocationsEmployeeLabelContainer from "../allocations-employee-label/allocations-employee-label.container"; +import PartsOrderModalContainer from "../parts-order-modal/parts-order-modal.container"; -export default function JobLinesComponent({ job }) { - //const form = useContext(JobDetailFormContext); - //const { getFieldDecorator } = form; +export default function JobLinesComponent({ + loading, + refetch, + jobLines, + setSearchText, + selectedLines, + setSelectedLines, + partsOrderModalVisible, + jobId, + setJobLineEditContext +}) { const [state, setState] = useState({ - sortedInfo: {}, - filteredInfo: { text: "" } + sortedInfo: {} }); - const [editingKey, setEditingKey] = useState(""); const { t } = useTranslation(); - + const setPartsModalVisible = partsOrderModalVisible[1]; const columns = [ { title: t("joblines.fields.unq_seq"), - dataIndex: "joblines.unq_seq", - key: "joblines.unq_seq", + dataIndex: "unq_seq", + key: "unq_seq", // onFilter: (value, record) => record.ro_number.includes(value), // filteredValue: state.filteredInfo.text || null, - sorter: (a, b) => alphaSort(a, b), + sorter: (a, b) => a.unq_seq - b.unq_seq, sortOrder: state.sortedInfo.columnKey === "unq_seq" && state.sortedInfo.order, //ellipsis: true, - editable: true + editable: true, + width: 75 }, { title: t("joblines.fields.line_desc"), dataIndex: "line_desc", - key: "joblines.line_desc", + key: "line_desc", sorter: (a, b) => alphaSort(a.line_desc, b.line_desc), sortOrder: state.sortedInfo.columnKey === "line_desc" && state.sortedInfo.order, ellipsis: true, - editable: true + editable: true, + width: "20%" + }, + { + title: t("joblines.fields.oem_partno"), + dataIndex: "oem_partno", + key: "oem_partno", + sorter: (a, b) => + alphaSort( + a.oem_partno ? a.oem_partno : a.op_code_desc, + b.oem_partno ? b.oem_partno : b.op_code_desc + ), + sortOrder: + state.sortedInfo.columnKey === "oem_partno" && state.sortedInfo.order, + ellipsis: true, + editable: true, + width: "10%", + render: (text, record) => ( + + {record.oem_partno ? record.oem_partno : record.op_code_desc} + + ) }, { title: t("joblines.fields.part_type"), dataIndex: "part_type", - key: "joblines.part_type", + key: "part_type", sorter: (a, b) => alphaSort(a.part_type, b.part_type), sortOrder: state.sortedInfo.columnKey === "part_type" && state.sortedInfo.order, ellipsis: true, - editable: true + editable: true, + width: "7%" + }, + { + title: t("joblines.fields.line_ind"), + dataIndex: "line_ind", + key: "line_ind", + sorter: (a, b) => alphaSort(a.line_ind, b.line_ind), + sortOrder: + state.sortedInfo.columnKey === "line_ind" && state.sortedInfo.order }, { title: t("joblines.fields.db_price"), dataIndex: "db_price", - key: "joblines.db_price", + key: "db_price", sorter: (a, b) => a.db_price - b.db_price, sortOrder: state.sortedInfo.columnKey === "db_price" && state.sortedInfo.order, ellipsis: true, + width: "8%", render: (text, record) => ( {record.db_price} ) @@ -64,22 +105,85 @@ export default function JobLinesComponent({ job }) { { title: t("joblines.fields.act_price"), dataIndex: "act_price", - key: "joblines.act_price", + key: "act_price", sorter: (a, b) => a.act_price - b.act_price, sortOrder: state.sortedInfo.columnKey === "act_price" && state.sortedInfo.order, ellipsis: true, + width: "8%", render: (text, record) => ( -
- {" "} - {record.act_price}{" "} + {record.act_price} + ) + }, + { + title: t("joblines.fields.mod_lb_hrs"), + dataIndex: "mod_lb_hrs", + key: "mod_lb_hrs", + sorter: (a, b) => a.mod_lb_hrs - b.mod_lb_hrs, + sortOrder: + state.sortedInfo.columnKey === "mod_lb_hrs" && state.sortedInfo.order + }, + { + title: t("joblines.fields.status"), + dataIndex: "status", + key: "status", + sorter: (a, b) => alphaSort(a.status, b.status), + sortOrder: + state.sortedInfo.columnKey === "status" && state.sortedInfo.order + }, + { + title: t("allocations.fields.employee"), + dataIndex: "employee", + key: "employee", + width: "10%", + sorter: (a, b) => + alphaSort( + a.allocations[0] && + a.allocations[0].employee.first_name + + a.allocations[0].employee.last_name, + b.allocations[0] && + b.allocations[0].employee.first_name + + b.allocations[0].employee.last_name + ), + sortOrder: + state.sortedInfo.columnKey === "employee" && state.sortedInfo.order, + render: (text, record) => ( + + {record.allocations && record.allocations.length > 0 + ? record.allocations.map(item => ( + + )) + : null} + + + ) + }, + { + title: t("general.labels.actions"), + dataIndex: "actions", + key: "actions", + render: (text, record) => ( + -
+
) } ]; @@ -88,37 +192,91 @@ export default function JobLinesComponent({ job }) { setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); }; - // const handleChange = event => { - // const { value } = event.target; - // setState({ ...state, filterinfo: { text: [value] } }); - // }; + const formItemLayout = { + labelCol: { + xs: { span: 12 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 12 } + } + }; + return ( - { - if (!col.editable) { - return col; - } - return { - ...col, - onCell: record => ({ - record, - inputType: col.dataIndex === "age" ? "number" : "text", - dataIndex: col.dataIndex, - title: col.title, - editing: editingKey === record.id - }) - }; - })} - components={{ - body: { - cell: EditableCell - } - }} - rowKey='id' - dataSource={job.joblines} - onChange={handleTableChange} - /> +
+ + +
{ + return ( +
+ { + e.preventDefault(); + setSearchText(e.target.value); + }} + /> + + + +
+ ); + }} + {...formItemLayout} + loading={loading} + size="small" + expandedRowRender={record => ( +
+ {t("parts_orders.labels.orderhistory")} + {record.parts_order_lines.map(item => ( +
+ {`${item.parts_order.order_number || ""} from `} + + {item.parts_order.vendor.name || ""} + + {` on ${item.parts_order.order_date || ""}`} +
+ ))} +
+ )} + pagination={{ position: "top", defaultPageSize: 25 }} + rowSelection={{ + // selectedRowKeys: selectedLines, + onSelectAll: (selected, selectedRows, changeRows) => { + setSelectedLines(selectedRows); + }, + onSelect: (record, selected, selectedRows, nativeEvent) => + setSelectedLines(selectedRows) + }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={jobLines} + onChange={handleTableChange} + /> + ); } diff --git a/client/src/components/job-detail-lines/job-lines.container.jsx b/client/src/components/job-detail-lines/job-lines.container.jsx index cf59100b2..5ff515c19 100644 --- a/client/src/components/job-detail-lines/job-lines.container.jsx +++ b/client/src/components/job-detail-lines/job-lines.container.jsx @@ -1,19 +1,72 @@ -import React from "react"; -import JobLinesComponent from "./job-lines.component"; import { useQuery } from "@apollo/react-hooks"; -import AlertComponent from "../alert/alert.component"; +import React, { useState } from "react"; import { GET_JOB_LINES_BY_PK } from "../../graphql/jobs-lines.queries"; +import AlertComponent from "../alert/alert.component"; +import JobLinesComponent from "./job-lines.component"; -export default function JobLinesContainer({ jobId }) { - - const { loading, error, data } = useQuery(GET_JOB_LINES_BY_PK, { +import { connect } from "react-redux"; +import { setModalContext } from "../../redux/modals/modals.actions"; +const mapDispatchToProps = dispatch => ({ + setJobLineEditContext: context => + dispatch(setModalContext({ context: context, modal: "jobLineEdit" })) +}); +export default connect( + null, + mapDispatchToProps +)(function JobLinesContainer({ jobId, setJobLineEditContext }) { + const { loading, error, data, refetch } = useQuery(GET_JOB_LINES_BY_PK, { variables: { id: jobId }, fetchPolicy: "network-only" }); + + const [searchText, setSearchText] = useState(""); + const [selectedLines, setSelectedLines] = useState([]); + const partsOrderModalVisible = useState(false); + if (error) return ; + return ( - + + (jl.unq_seq || "") + .toString() + .toLowerCase() + .includes(searchText.toLowerCase()) || + (jl.line_desc || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (jl.part_type || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (jl.oem_partno || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (jl.op_code_desc || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (jl.db_price || "") + .toString() + .includes(searchText.toLowerCase()) || + (jl.act_price || "") + .toString() + .includes(searchText.toLowerCase()) + ) + : data.joblines + : null + } + setSearchText={setSearchText} + selectedLines={selectedLines} + setSelectedLines={setSelectedLines} + partsOrderModalVisible={partsOrderModalVisible} + jobId={jobId} + setJobLineEditContext={setJobLineEditContext} + /> ); -} - \ No newline at end of file +}); diff --git a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx new file mode 100644 index 000000000..aa87ea5f4 --- /dev/null +++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx @@ -0,0 +1,69 @@ +import { Modal, Form, Input, InputNumber } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import ResetForm from "../form-items-formatted/reset-form-item.component"; + +export default function JobLinesUpsertModalComponent({ + visible, + jobLine, + handleOk, + handleCancel, + handleSubmit, + form +}) { + const { t } = useTranslation(); + const { getFieldDecorator, isFieldsTouched, resetFields } = form; + + return ( + + {isFieldsTouched() ? : null} +
+ + {getFieldDecorator("line_desc", { + initialValue: jobLine.line_desc + })()} + + + {getFieldDecorator("oem_partno", { + initialValue: jobLine.oem_partno + })()} + + + {getFieldDecorator("part_type", { + initialValue: jobLine.part_type + })()} + + + {getFieldDecorator("mod_lbr_ty", { + initialValue: jobLine.mod_lbr_ty + })()} + + + {getFieldDecorator("op_code_desc", { + initialValue: jobLine.op_code_desc + })()} + + + {getFieldDecorator("mod_lb_hrs", { + initialValue: jobLine.mod_lb_hrs + })()} + + + {getFieldDecorator("act_price", { + initialValue: jobLine.act_price + })()} + + +
+ ); +} diff --git a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx new file mode 100644 index 000000000..fa1b732db --- /dev/null +++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx @@ -0,0 +1,110 @@ +import { Form, notification } from "antd"; +import React from "react"; +import { useMutation } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { + INSERT_NEW_JOB_LINE, + UPDATE_JOB_LINE +} from "../../graphql/jobs-lines.queries"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; +import { selectJobLineEditModal } from "../../redux/modals/modals.selectors"; +import JobLinesUpdsertModal from "./job-lines-upsert-modal.component"; + +const mapStateToProps = createStructuredSelector({ + jobLineEditModal: selectJobLineEditModal +}); +const mapDispatchToProps = dispatch => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("jobLineEdit")) +}); + +function JobLinesUpsertModalContainer({ + jobLineEditModal, + toggleModalVisible, + form +}) { + const { t } = useTranslation(); + const [insertJobLine] = useMutation(INSERT_NEW_JOB_LINE); + const [updateJobLine] = useMutation(UPDATE_JOB_LINE); + + const handleSubmit = e => { + e.preventDefault(); + + form.validateFieldsAndScroll((err, values) => { + if (err) { + notification["error"]({ + message: t("joblines.errors.validation"), + description: err.message + }); + } + if (!err) { + if (!jobLineEditModal.context.id) { + insertJobLine({ + variables: { + lineInput: [{ jobid: jobLineEditModal.context.jobid, ...values }] + } + }) + .then(r => { + if (jobLineEditModal.actions.refetch) + jobLineEditModal.actions.refetch(); + toggleModalVisible(); + notification["success"]({ + message: t("joblines.successes.created") + }); + }) + .catch(error => { + notification["error"]({ + message: t("joblines.errors.creating", { + message: error.message + }) + }); + }); + } else { + updateJobLine({ + variables: { + lineId: jobLineEditModal.context.id, + line: values + } + }) + .then(r => { + notification["success"]({ + message: t("joblines.successes.updated") + }); + }) + .catch(error => { + notification["success"]({ + message: t("joblines.errors.updating", { + message: error.message + }) + }); + }); + if (jobLineEditModal.actions.refetch) + jobLineEditModal.actions.refetch(); + toggleModalVisible(); + } + } + }); + }; + + const handleCancel = () => { + toggleModalVisible(); + }; + + return ( + + ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)( + Form.create({ name: "JobsDetailPageContainer" })(JobLinesUpsertModalContainer) +); diff --git a/client/src/components/jobs-available-new/jobs-available-new.component.jsx b/client/src/components/jobs-available-new/jobs-available-new.component.jsx index b7dd1d880..e411a125c 100644 --- a/client/src/components/jobs-available-new/jobs-available-new.component.jsx +++ b/client/src/components/jobs-available-new/jobs-available-new.component.jsx @@ -4,6 +4,8 @@ import { useTranslation } from "react-i18next"; import { DateTimeFormatter } from "../../utils/DateFormatter"; import { alphaSort } from "../../utils/sorters"; import OwnerFindModalContainer from "../owner-find-modal/owner-find-modal.container"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; + export default function JobsAvailableComponent({ loading, data, @@ -77,7 +79,10 @@ export default function JobsAvailableComponent({ key: "clm_amt", sorter: (a, b) => a.clm_amt - b.clm_amt, sortOrder: - state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order + state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order, + render: (text, record) => ( + {record.clm_amt} + ) //width: "12%", //ellipsis: true }, @@ -141,7 +146,8 @@ export default function JobsAvailableComponent({ estData.data.available_jobs_by_pk && estData.data.available_jobs_by_pk.est_data && estData.data.available_jobs_by_pk.est_data.owner && - estData.data.available_jobs_by_pk.est_data.owner.data + estData.data.available_jobs_by_pk.est_data.owner.data && + !estData.data.available_jobs_by_pk.issupplement ? estData.data.available_jobs_by_pk.est_data.owner.data : null; @@ -164,7 +170,7 @@ export default function JobsAvailableComponent({ return (
{ console.log(value); }} diff --git a/client/src/components/jobs-available-new/jobs-available-new.container.jsx b/client/src/components/jobs-available-new/jobs-available-new.container.jsx index 7c1932d9d..e6fd1e37b 100644 --- a/client/src/components/jobs-available-new/jobs-available-new.container.jsx +++ b/client/src/components/jobs-available-new/jobs-available-new.container.jsx @@ -29,14 +29,7 @@ export default withRouter(function JobsAvailableContainer({ const onModalOk = () => { setModalVisible(false); - console.log("selectedOwner", selectedOwner); setInsertLoading(true); - console.log( - "logitest", - estData.data && - estData.data.available_jobs_by_pk && - estData.data.available_jobs_by_pk.est_data - ); if ( !( diff --git a/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx b/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx index a6c44f5df..aaf396f37 100644 --- a/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx +++ b/client/src/components/jobs-available-supplement/jobs-available-supplement.component.jsx @@ -3,13 +3,25 @@ import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { alphaSort } from "../../utils/sorters"; import { DateTimeFormatter } from "../../utils/DateFormatter"; +import JobsFindModalContainer from "../jobs-find-modal/jobs-find-modal.container"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; + export default function JobsAvailableSupplementComponent({ loading, data, refetch, deleteJob, + updateJob, + onModalOk, + onModalCancel, + modalVisible, + setModalVisible, + selectedJob, + setSelectedJob, deleteAllNewJobs, - estDataLazyLoad + loadEstData, + estData, + importOptionsState }) { const { t } = useTranslation(); @@ -81,7 +93,10 @@ export default function JobsAvailableSupplementComponent({ key: "clm_amt", sorter: (a, b) => a.clm_amt - b.clm_amt, sortOrder: - state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order + state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order, + render: (text, record) => ( + {record.clm_amt} + ) //width: "12%", //ellipsis: true }, @@ -127,7 +142,8 @@ export default function JobsAvailableSupplementComponent({
{ - return ( -
- { - console.log(value); - }} - enterButton - /> - -
{ + return ( +
+ { + console.log(value); + }} + enterButton + /> + + -
- ); - }} - size="small" - pagination={{ position: "top" }} - columns={columns.map(item => ({ ...item }))} - rowKey="id" - dataSource={data && data.available_jobs} - onChange={handleTableChange} - /> + }} + > + Delete All + + + ); + }} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={data && data.available_jobs} + onChange={handleTableChange} + /> + ); } diff --git a/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx b/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx index 306ba3a3d..5f0469cdb 100644 --- a/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx +++ b/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx @@ -1,12 +1,21 @@ -import React from "react"; +import { notification } from "antd"; +import React, { useState } from "react"; import { useMutation, useQuery } from "react-apollo"; -import { DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS, QUERY_AVAILABLE_SUPPLEMENT_JOBS } from "../../graphql/available-jobs.queries"; +import { useTranslation } from "react-i18next"; +import { withRouter } from "react-router-dom"; +import { + DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS, + QUERY_AVAILABLE_SUPPLEMENT_JOBS +} from "../../graphql/available-jobs.queries"; +import { UPDATE_JOB } from "../../graphql/jobs.queries"; import AlertComponent from "../alert/alert.component"; import JobsAvailableSupplementComponent from "./jobs-available-supplement.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; -export default function JobsAvailableSupplementContainer({ +export default withRouter(function JobsAvailableSupplementContainer({ deleteJob, - estDataLazyLoad + estDataLazyLoad, + history }) { const { loading, error, data, refetch } = useQuery( QUERY_AVAILABLE_SUPPLEMENT_JOBS, @@ -14,17 +23,107 @@ export default function JobsAvailableSupplementContainer({ fetchPolicy: "network-only" } ); + const { t } = useTranslation(); + const [deleteAllNewJobs] = useMutation(DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS); - if (error) return ; + const [modalVisible, setModalVisible] = useState(false); + const [selectedJob, setSelectedJob] = useState(null); + const [insertLoading, setInsertLoading] = useState(false); + const [updateJob] = useMutation(UPDATE_JOB); + const [loadEstData, estData] = estDataLazyLoad; + const importOptionsState = useState({ overrideHeaders: false }); + const importOptions = importOptionsState[0]; + const onModalOk = () => { + setModalVisible(false); + setInsertLoading(true); + + if ( + !( + estData.data && + estData.data.available_jobs_by_pk && + estData.data.available_jobs_by_pk.est_data + ) + ) { + //We don't have the right data. Error! + setInsertLoading(false); + notification["error"]({ + message: t("jobs.errors.creating", { error: "No job data present." }) + }); + } else { + //create upsert job + let supp = estData.data.available_jobs_by_pk.est_data; + delete supp.joblines; + //TODO How to update the estimate lines. + delete supp.owner; + delete supp.vehicle; + + if (!importOptions.overrideHeaders) { + delete supp["ins_ea"]; + //TODO Remove all required fields. + } + + updateJob({ + variables: { + jobId: selectedJob, + job: supp + } + }) + .then(r => { + notification["success"]({ + message: t("jobs.successes.supplemented"), + onClick: () => { + history.push( + `/manage/jobs/${r.data.update_jobs.returning[0].id}` + ); + } + }); + //Job has been inserted. Clean up the available jobs record. + deleteJob({ + variables: { id: estData.data.available_jobs_by_pk.id } + }).then(r => { + refetch(); + setInsertLoading(false); + }); + }) + .catch(r => { + //error while inserting + notification["error"]({ + message: t("jobs.errors.creating", { error: r.message }) + }); + refetch(); + setInsertLoading(false); + }); + } + }; + + const onModalCancel = () => { + setModalVisible(false); + setSelectedJob(null); + }; + + if (error) return ; return ( - + + + ); -} +}); diff --git a/client/src/components/jobs-detail-claims/jobs-detail-claims.component.jsx b/client/src/components/jobs-detail-claims/jobs-detail-claims.component.jsx index 9eb24798a..1c8323b4f 100644 --- a/client/src/components/jobs-detail-claims/jobs-detail-claims.component.jsx +++ b/client/src/components/jobs-detail-claims/jobs-detail-claims.component.jsx @@ -20,7 +20,7 @@ export default function JobsDetailClaims({ job }) { initialValue: job.loss_desc })()} - TODO: How to handle different taxes and marking them as exempt? + TODO How to handle different taxes and marking them as exempt? { // // {getFieldDecorator("exempt", { diff --git a/client/src/components/jobs-detail-dates/jobs-detail-dates.component.jsx b/client/src/components/jobs-detail-dates/jobs-detail-dates.component.jsx new file mode 100644 index 000000000..f33f6652e --- /dev/null +++ b/client/src/components/jobs-detail-dates/jobs-detail-dates.component.jsx @@ -0,0 +1,90 @@ +import { DatePicker, Form } from "antd"; +import moment from "moment"; +import React, { useContext } from "react"; +import { useTranslation } from "react-i18next"; +import JobDetailFormContext from "../../pages/jobs-detail/jobs-detail.page.context"; + +export default function JobsDetailDatesComponent({ job }) { + const form = useContext(JobDetailFormContext); + const { getFieldDecorator } = form; + const { t } = useTranslation(); + + return ( +
+ + {getFieldDecorator("loss_date", { + initialValue: job.loss_date ? moment(job.loss_date) : null + })()} + + DAMAGE {JSON.stringify(job.area_of_damage)} + CAA # seems not correct based on field mapping Class seems not correct + based on field mapping + + {getFieldDecorator("date_estimated", { + initialValue: job.date_estimated ? moment(job.date_estimated) : null + })()} + + + {getFieldDecorator("date_open", { + initialValue: job.date_open ? moment(job.date_open) : null + })()} + + + {getFieldDecorator("date_scheduled", { + initialValue: job.date_scheduled ? moment(job.date_scheduled) : null + })()} + + + {getFieldDecorator("scheduled_in", { + initialValue: job.scheduled_in ? moment(job.scheduled_in) : null + })()} + + + {getFieldDecorator("actual_in", { + initialValue: job.actual_in ? moment(job.actual_in) : null + })()} + + + {getFieldDecorator("scheduled_completion", { + initialValue: job.scheduled_completion + ? moment(job.scheduled_completion) + : null + })()} + + + {getFieldDecorator("actual_completion", { + initialValue: job.actual_completion + ? moment(job.actual_completion) + : null + })()} + + + {getFieldDecorator("scheduled_delivery", { + initialValue: job.scheduled_delivery + ? moment(job.scheduled_delivery) + : null + })()} + + + {getFieldDecorator("actual_delivery", { + initialValue: job.actual_delivery ? moment(job.actual_delivery) : null + })()} + + + {getFieldDecorator("date_invoiced", { + initialValue: job.date_invoiced ? moment(job.date_invoiced) : null + })()} + + + {getFieldDecorator("date_closed", { + initialValue: job.date_closed ? moment(job.date_closed) : null + })()} + + + {getFieldDecorator("date_exported", { + initialValue: job.date_exported ? moment(job.date_exported) : null + })()} + +
+ ); +} diff --git a/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx b/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx index 7954b133e..0bd919542 100644 --- a/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx +++ b/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx @@ -1,4 +1,4 @@ -import { Form, Input, InputNumber } from "antd"; +import { Form, Input, InputNumber, Divider } from "antd"; import React, { useContext } from "react"; import { useTranslation } from "react-i18next"; import JobDetailFormContext from "../../pages/jobs-detail/jobs-detail.page.context"; @@ -25,13 +25,13 @@ export default function JobsDetailFinancials({ job }) { initialValue: job.depreciation_taxes })()}
- TODO: This is equivalent of GST payable. + TODO This is equivalent of GST payable. {getFieldDecorator("federal_tax_payable", { initialValue: job.federal_tax_payable })()} - TODO: equivalent of other customer amount + TODO equivalent of other customer amount {getFieldDecorator("other_amount_payable", { initialValue: job.other_amount_payable @@ -52,6 +52,130 @@ export default function JobsDetailFinancials({ job }) { initialValue: job.adjustment_bottom_line })()} + + Totals Table + + {getFieldDecorator("labor_rate_desc", { + initialValue: job.labor_rate_desc + })()} + + + {getFieldDecorator("rate_lab", { + initialValue: job.rate_lab + })()} + + + {getFieldDecorator("rate_lad", { + initialValue: job.rate_lad + })()} + + + {getFieldDecorator("rate_lae", { + initialValue: job.rate_lae + })()} + + + {getFieldDecorator("rate_lar", { + initialValue: job.rate_lar + })()} + + + {getFieldDecorator("rate_las", { + initialValue: job.rate_las + })()} + + + {getFieldDecorator("rate_laf", { + initialValue: job.rate_laf + })()} + + + {getFieldDecorator("rate_lam", { + initialValue: job.rate_lam + })()} + + + {getFieldDecorator("rate_lag", { + initialValue: job.rate_lag + })()} + + Note //TODO Remove ATP rate? + + {getFieldDecorator("rate_atp", { + initialValue: job.rate_atp + })()} + + + {getFieldDecorator("rate_lau", { + initialValue: job.rate_lau + })()} + + + {getFieldDecorator("rate_la1", { + initialValue: job.rate_la1 + })()} + + + {getFieldDecorator("rate_la2", { + initialValue: job.rate_la2 + })()} + + + {getFieldDecorator("rate_la3", { + initialValue: job.rate_la3 + })()} + + + {getFieldDecorator("rate_la4", { + initialValue: job.rate_la4 + })()} + + + {getFieldDecorator("rate_mapa", { + initialValue: job.rate_mapa + })()} + + + {getFieldDecorator("rate_mash", { + initialValue: job.rate_mash + })()} + + + {getFieldDecorator("rate_mahw", { + initialValue: job.rate_mahw + })()} + + + {getFieldDecorator("rate_ma2s", { + initialValue: job.rate_ma2s + })()} + + + {getFieldDecorator("rate_ma3s", { + initialValue: job.rate_ma3s + })()} + + + {getFieldDecorator("rate_mabl", { + initialValue: job.rate_mabl + })()} + + + {getFieldDecorator("rate_macs", { + initialValue: job.rate_macs + })()} + + + {getFieldDecorator("rate_matd", { + initialValue: job.rate_matd + })()} + + +{getFieldDecorator("rate_laa", { +initialValue: job.rate_laa +})()} + + ); } diff --git a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx index b9da502d5..70417434b 100644 --- a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx +++ b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx @@ -1,8 +1,12 @@ import { Avatar, + Badge, Button, Checkbox, Descriptions, + Dropdown, + Icon, + Menu, notification, PageHeader, Tag @@ -10,57 +14,71 @@ import { import React from "react"; import { useTranslation } from "react-i18next"; import Moment from "react-moment"; +import { connect } from "react-redux"; import { Link } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; import CarImage from "../../assets/car.svg"; +import { selectBodyshop } from "../../redux/user/user.selectors"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; +import BarcodePopup from "../barcode-popup/barcode-popup.component"; -export default function JobsDetailHeader({ +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export default connect( + mapStateToProps, + null +)(function JobsDetailHeader({ job, mutationConvertJob, refetch, - getFieldDecorator + handleSubmit, + scheduleModalState, + bodyshop, + updateJobStatus }) { const { t } = useTranslation(); + const setscheduleModalVisible = scheduleModalState[1]; const tombstoneTitle = (
- + {`${t("jobs.fields.ro_number")} ${ job.ro_number ? job.ro_number : t("general.labels.na") }`}
); - const tombstoneSubtitle = ( -
- - {job.owner ? ( - - {`${job.ownr_co_nm || ""}${job.ownr_fn || ""} ${job.ownr_ln || ""}`} - - ) : ( - t("jobs.errors.noowner") - )} - - - - {job.vehicle ? ( - - {job.vehicle.v_model_yr || t("general.labels.na")}{" "} - {job.vehicle.v_make_desc || t("general.labels.na")}{" "} - {job.vehicle.v_model_desc || t("general.labels.na")} |{" "} - {job.vehicle.plate_no || t("general.labels.na")} |{" "} - {job.vehicle.v_vin || t("general.labels.na")} - - ) : null} - -
+ const statusmenu = ( + { + updateJobStatus(e.key); + }}> + {bodyshop.md_ro_statuses.statuses.map(item => ( + {item} + ))} + ); const menuExtra = [ + + + , + + + , , - ]; @@ -87,19 +108,38 @@ export default function JobsDetailHeader({ border: "1px solid rgb(235, 237, 240)" }} title={tombstoneTitle} - subTitle={tombstoneSubtitle} + //subTitle={tombstoneSubtitle} tags={ - - {job.job_status ? ( - {job.job_status.name} - ) : null} + + {job.status ? {job.status} : null} + + {job.owner ? ( + + {`${job.ownr_co_nm || ""}${job.ownr_fn || ""} ${job.ownr_ln || + ""}`} + + ) : ( + t("jobs.errors.noowner") + )} + + + {job.vehicle ? ( + + {job.vehicle.v_model_yr || t("general.labels.na")}{" "} + {job.vehicle.v_make_desc || t("general.labels.na")}{" "} + {job.vehicle.v_model_desc || t("general.labels.na")} |{" "} + {job.vehicle.plate_no || t("general.labels.na")} |{" "} + {job.vehicle.v_vin || t("general.labels.na")} + + ) : null} + + } - extra={menuExtra} - > - + extra={menuExtra}> + - {job.claim_total} + {job.clm_total} @@ -112,7 +152,7 @@ export default function JobsDetailHeader({ {job.scheduled_completion ? ( - {job.scheduled_completion} + {job.scheduled_completion} ) : null} @@ -122,4 +162,4 @@ export default function JobsDetailHeader({ ); -} +}); diff --git a/client/src/components/jobs-detail-insurance/jobs-detail-insurance.component.jsx b/client/src/components/jobs-detail-insurance/jobs-detail-insurance.component.jsx index f0178d6f1..4dc589973 100644 --- a/client/src/components/jobs-detail-insurance/jobs-detail-insurance.component.jsx +++ b/client/src/components/jobs-detail-insurance/jobs-detail-insurance.component.jsx @@ -11,8 +11,6 @@ export default function JobsDetailInsurance({ job }) { const { getFieldDecorator, getFieldValue } = form; const { t } = useTranslation(); - console.log("job.loss_date", job.loss_date); - return (
diff --git a/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx b/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx new file mode 100644 index 000000000..6dbe28a0a --- /dev/null +++ b/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx @@ -0,0 +1,41 @@ +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { + toggleModalVisible, + setModalContext +} from "../../redux/modals/modals.actions"; + +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("invoiceEnter")), + setInvoiceEnterContext: context => + dispatch(setModalContext({ context: context, modal: "invoiceEnter" })) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function JobsDetailPliComponent({ + toggleModalVisible, + setInvoiceEnterContext, + job +}) { + return ( +
+
{ + setInvoiceEnterContext({ + actions: { refetch: null }, + context: { + job + } + }); + }} + > + Enter Invoice +
+
+ ); +}); diff --git a/client/src/components/jobs-detail-pli/jobs-detail-pli.container.jsx b/client/src/components/jobs-detail-pli/jobs-detail-pli.container.jsx new file mode 100644 index 000000000..e6468ddcb --- /dev/null +++ b/client/src/components/jobs-detail-pli/jobs-detail-pli.container.jsx @@ -0,0 +1,7 @@ +import React from "react"; +import JobsDetailPliComponent from "./jobs-detail-pli.component"; + +export default function JobsDetailPliContainer({ job }) { + console.log("job", job); + return ; +} diff --git a/client/src/components/jobs-documents/jobs-documents.container.jsx b/client/src/components/jobs-documents/jobs-documents.container.jsx index 32aedb3f5..f0c9259f2 100644 --- a/client/src/components/jobs-documents/jobs-documents.container.jsx +++ b/client/src/components/jobs-documents/jobs-documents.container.jsx @@ -1,13 +1,22 @@ import React from "react"; import { useQuery } from "react-apollo"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; import { QUERY_SHOP_ID } from "../../graphql/bodyshop.queries"; import { GET_DOCUMENTS_BY_JOB } from "../../graphql/documents.queries"; +import { selectCurrentUser } from "../../redux/user/user.selectors"; import AlertComponent from "../alert/alert.component"; import LoadingSpinner from "../loading-spinner/loading-spinner.component"; import JobDocuments from "./jobs-documents.component"; -import { GET_CURRENT_USER } from "../../graphql/local.queries"; -export default function JobsDocumentsContainer({ jobId }) { +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser +}); + +export default connect( + mapStateToProps, + null +)(function JobsDocumentsContainer({ jobId, currentUser }) { const { loading, error, data } = useQuery(GET_DOCUMENTS_BY_JOB, { variables: { jobId: jobId }, fetchPolicy: "network-only" @@ -17,14 +26,12 @@ export default function JobsDocumentsContainer({ jobId }) { fetchPolicy: "network-only" }); - const user = useQuery(GET_CURRENT_USER); - - if (loading || shopData.loading || user.loading) return ; - if (error || shopData.error || user.error) + if (loading || shopData.loading) return ; + if (error || shopData.error) return ( ); @@ -32,12 +39,10 @@ export default function JobsDocumentsContainer({ jobId }) { ); -} +}); diff --git a/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx b/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx new file mode 100644 index 000000000..f284e5b15 --- /dev/null +++ b/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx @@ -0,0 +1,172 @@ +import { Checkbox, Divider, Table } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import PhoneFormatter from "../../utils/PhoneFormatter"; + +export default function JobsFindModalComponent({ + selectedJob, + setSelectedJob, + jobsList, + jobsListLoading, + importOptionsState +}) { + const { t } = useTranslation(); + + const [importOptions, setImportOptions] = importOptionsState; + + const columns = [ + { + title: t("jobs.fields.ro_number"), + dataIndex: "ro_number", + key: "ro_number", + width: "8%", + render: (text, record) => ( + + + {record.ro_number ? record.ro_number : "EST-" + record.est_number} + + + ) + }, + { + title: t("jobs.fields.owner"), + dataIndex: "owner", + key: "owner", + ellipsis: true, + + width: "25%", + + render: (text, record) => { + return record.owner ? ( + + {record.ownr_fn} {record.ownr_ln} + + ) : ( + // t("jobs.errors.noowner") + {`${record.ownr_fn} ${record.ownr_ln}`} + ); + } + }, + { + title: t("jobs.fields.ownr_ph1"), + dataIndex: "ownr_ph1", + key: "ownr_ph1", + width: "12%", + ellipsis: true, + render: (text, record) => { + return record.ownr_ph1 ? ( + {record.ownr_ph1} + ) : ( + t("general.labels.unknown") + ); + } + }, + { + title: t("jobs.fields.status"), + dataIndex: "status", + key: "status", + width: "10%", + ellipsis: true, + render: (text, record) => { + return record.status || t("general.labels.na"); + } + }, + + { + title: t("jobs.fields.vehicle"), + dataIndex: "vehicle", + key: "vehicle", + width: "15%", + ellipsis: true, + render: (text, record) => { + return record.vehicle ? ( + + {record.vehicle.v_model_yr} {record.vehicle.v_make_desc}{" "} + {record.vehicle.v_model_desc} + + ) : ( + t("jobs.errors.novehicle") + ); + } + }, + { + title: t("vehicles.fields.plate_no"), + dataIndex: "plate_no", + key: "plate_no", + width: "8%", + ellipsis: true, + render: (text, record) => { + return record.vehicle.plate_no ? ( + {record.vehicle.plate_no} + ) : ( + t("general.labels.unknown") + ); + } + }, + { + title: t("jobs.fields.clm_no"), + dataIndex: "clm_no", + key: "clm_no", + width: "12%", + ellipsis: true, + render: (text, record) => { + return record.clm_no ? ( + {record.clm_no} + ) : ( + t("general.labels.unknown") + ); + } + } + ]; + + const handleOnRowClick = record => { + if (record) { + if (record.id) { + setSelectedJob(record.id); + return; + } + } + setSelectedJob(null); + }; + + return ( +
+
t("jobs.labels.existing_jobs")} + size="small" + pagination={{ position: "bottom" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + loading={jobsListLoading} + dataSource={jobsList} + rowSelection={{ + onSelect: props => { + setSelectedJob(props.id); + }, + type: "radio", + selectedRowKeys: [selectedJob] + }} + onRow={(record, rowIndex) => { + return { + onClick: event => { + handleOnRowClick(record); + } + }; + }} + /> + + + setImportOptions({ + ...importOptions, + overrideHeader: e.target.checked + }) + } + > + {t("jobs.labels.override_header")} + + + ); +} diff --git a/client/src/components/jobs-find-modal/jobs-find-modal.container.jsx b/client/src/components/jobs-find-modal/jobs-find-modal.container.jsx new file mode 100644 index 000000000..58809f5a7 --- /dev/null +++ b/client/src/components/jobs-find-modal/jobs-find-modal.container.jsx @@ -0,0 +1,58 @@ +import { Modal } from "antd"; +import React from "react"; +import { useQuery } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { QUERY_ALL_ACTIVE_JOBS } from "../../graphql/jobs.queries"; +import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import JobsFindModalComponent from "./jobs-find-modal.component"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export default connect( + mapStateToProps, + null +)(function JobsFindModalContainer({ + bodyshop, + loading, + error, + selectedJob, + setSelectedJob, + importOptionsState, + ...modalProps +}) { + const { t } = useTranslation(); + + const jobsList = useQuery(QUERY_ALL_ACTIVE_JOBS, { + fetchPolicy: "network-only", + variables: { + statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"] + } + }); + + return ( + + {loading ? : null} + {error ? : null} + {true ? ( + + ) : null} + + ); +}); diff --git a/client/src/components/jobs-list/jobs-list.component.jsx b/client/src/components/jobs-list/jobs-list.component.jsx index 17635845d..1b1ddb888 100644 --- a/client/src/components/jobs-list/jobs-list.component.jsx +++ b/client/src/components/jobs-list/jobs-list.component.jsx @@ -1,12 +1,15 @@ -import { Input, Table, Icon } from "antd"; +import { Button, Icon, Input, Table } from "antd"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; -import { Link } from "react-router-dom"; +import { Link, withRouter } from "react-router-dom"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; import PhoneFormatter from "../../utils/PhoneFormatter"; import { alphaSort } from "../../utils/sorters"; -import { withRouter } from "react-router-dom"; +import StartChatButton from "../chat-open-button/chat-open-button.component"; export default withRouter(function JobsList({ + searchTextState, + refetch, loading, jobs, selectedJob, @@ -20,6 +23,7 @@ export default withRouter(function JobsList({ const { t } = useTranslation(); + const setSearchText = searchTextState[1]; const columns = [ { title: t("jobs.fields.ro_number"), @@ -28,7 +32,11 @@ export default withRouter(function JobsList({ width: "8%", // onFilter: (value, record) => record.ro_number.includes(value), // filteredValue: state.filteredInfo.text || null, - sorter: (a, b) => alphaSort(a, b), + sorter: (a, b) => + alphaSort( + a.ro_number ? a.ro_number : "EST-" + a.est_number, + b.ro_number ? b.ro_number : "EST-" + b.est_number + ), sortOrder: state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order, @@ -56,14 +64,12 @@ export default withRouter(function JobsList({ ) : ( // t("jobs.errors.noowner") - - {record.ownr_fn} {record.ownr_ln} - + {`${record.ownr_fn} ${record.ownr_ln}`} ); } }, { - title: t("jobs.fields.phone1"), + title: t("jobs.fields.ownr_ph1"), dataIndex: "ownr_ph1", key: "ownr_ph1", width: "12%", @@ -72,13 +78,7 @@ export default withRouter(function JobsList({ return record.ownr_ph1 ? ( {record.ownr_ph1} - { - alert("SMSing will happen here."); - }} - /> + ) : ( t("general.labels.unknown") @@ -91,11 +91,11 @@ export default withRouter(function JobsList({ key: "status", width: "10%", ellipsis: true, - sorter: (a, b) => alphaSort(a, b), + sorter: (a, b) => alphaSort(a.status, b.status), sortOrder: state.sortedInfo.columnKey === "status" && state.sortedInfo.order, render: (text, record) => { - return record.job_status?.name || t("general.labels.na"); + return record.status || t("general.labels.na"); } }, @@ -107,7 +107,7 @@ export default withRouter(function JobsList({ ellipsis: true, render: (text, record) => { return record.vehicle ? ( - + {record.vehicle.v_model_yr} {record.vehicle.v_make_desc}{" "} {record.vehicle.v_model_desc} @@ -122,11 +122,11 @@ export default withRouter(function JobsList({ key: "plate_no", width: "8%", ellipsis: true, - sorter: (a, b) => alphaSort(a, b), + sorter: (a, b) => alphaSort(a.vehicle.plate_no, b.vehicle.plate_no), sortOrder: state.sortedInfo.columnKey === "plate_no" && state.sortedInfo.order, render: (text, record) => { - return record.vehicle?.plate_no ? ( + return record.vehicle.plate_no ? ( {record.vehicle.plate_no} ) : ( t("general.labels.unknown") @@ -139,7 +139,7 @@ export default withRouter(function JobsList({ key: "clm_no", width: "12%", ellipsis: true, - sorter: (a, b) => alphaSort(a, b), + sorter: (a, b) => alphaSort(a.clm_no, b.clm_no), sortOrder: state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order, render: (text, record) => { @@ -154,15 +154,13 @@ export default withRouter(function JobsList({ title: t("jobs.fields.clm_total"), dataIndex: "clm_total", key: "clm_total", - width: "8%", - // sorter: (a, b) => { - // return a > b; - // }, - // sortOrder: - // state.sortedInfo.columnKey === "clm_total" && state.sortedInfo.order, + width: "10%", + sorter: (a, b) => a.clm_total - b.clm_total, + sortOrder: + state.sortedInfo.columnKey === "clm_total" && state.sortedInfo.order, render: (text, record) => { return record.clm_total ? ( - {record.clm_total} + {record.clm_total} ) : ( t("general.labels.unknown") ); @@ -196,7 +194,6 @@ export default withRouter(function JobsList({ if (record) { if (record.id) { setSelectedJob(record.id); - history.push(`#${record.id}`); return; } } @@ -209,19 +206,24 @@ export default withRouter(function JobsList({ loading={loading} title={() => { return ( - { - console.log(value); - }} - enterButton - /> +
+ + { + setSearchText(e.target.value); + }} + enterButton + /> +
); }} - size='small' + size="small" pagination={{ position: "top" }} columns={columns.map(item => ({ ...item }))} - rowKey='id' + rowKey="id" dataSource={jobs} rowSelection={{ selectedRowKeys: [selectedJob] }} onChange={handleTableChange} diff --git a/client/src/components/loading-skeleton/loading-skeleton.component.jsx b/client/src/components/loading-skeleton/loading-skeleton.component.jsx index ecfdec0d2..b4c306d6b 100644 --- a/client/src/components/loading-skeleton/loading-skeleton.component.jsx +++ b/client/src/components/loading-skeleton/loading-skeleton.component.jsx @@ -4,5 +4,5 @@ import "./loading-skeleton.styles.scss"; import { Skeleton } from "antd"; export default function LoadingSkeleton(props) { - return ; + return ; } diff --git a/client/src/components/loading-spinner/loading-spinner.component.jsx b/client/src/components/loading-spinner/loading-spinner.component.jsx index 98ab9e422..b37665fd8 100644 --- a/client/src/components/loading-spinner/loading-spinner.component.jsx +++ b/client/src/components/loading-spinner/loading-spinner.component.jsx @@ -8,7 +8,11 @@ export default function LoadingSpinner({ loading = true, message, ...props }) { spinning={loading} className="loading-spinner" size="large" - //delay="500" + style={{ + position: "relative", + alignContent: "center" + }} + delay={200} tip={message ? message : null} > {props.children} diff --git a/client/src/components/loading-spinner/loading-spinner.styles.scss b/client/src/components/loading-spinner/loading-spinner.styles.scss index d057f91ad..598a332cb 100644 --- a/client/src/components/loading-spinner/loading-spinner.styles.scss +++ b/client/src/components/loading-spinner/loading-spinner.styles.scss @@ -1,3 +1,2 @@ .loading-spinner { - text-align: center; } diff --git a/client/src/components/manage-sign-in-button/manage-sign-in-button.component.jsx b/client/src/components/manage-sign-in-button/manage-sign-in-button.component.jsx index f2ae7dd19..55ffe1281 100644 --- a/client/src/components/manage-sign-in-button/manage-sign-in-button.component.jsx +++ b/client/src/components/manage-sign-in-button/manage-sign-in-button.component.jsx @@ -1,34 +1,27 @@ -import React from "react"; -import { useQuery } from "react-apollo"; -import { Link } from "react-router-dom"; -import { GET_CURRENT_USER } from "../../graphql/local.queries"; import { Icon } from "antd"; -import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import React from "react"; +import { connect } from "react-redux"; +import { Link } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; +import { selectCurrentUser } from "../../redux/user/user.selectors"; -export default function ManageSignInButton() { - const { - loading, - error, - data: { currentUser } - } = useQuery(GET_CURRENT_USER); +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser +}); - if (loading) return ; - if (error) return error.message; - - return currentUser ? ( -
- {" "} - - - Manage - -
+export default connect( + mapStateToProps, + null +)(function ManageSignInButton({ currentUser }) { + return currentUser.authorized ? ( + + + Manage + ) : ( -
- - - Sign In - -
+ + + Sign In + ); -} +}); diff --git a/client/src/components/note-upsert-modal/note-upsert-modal.component.jsx b/client/src/components/note-upsert-modal/note-upsert-modal.component.jsx index 3570f09f0..ca71d8e52 100644 --- a/client/src/components/note-upsert-modal/note-upsert-modal.component.jsx +++ b/client/src/components/note-upsert-modal/note-upsert-modal.component.jsx @@ -14,7 +14,7 @@ export default function NoteUpsertModalComponent({ return ( { @@ -22,7 +22,8 @@ export default function NoteUpsertModalComponent({ }} onCancel={() => { changeVisibility(false); - }}> + }} + >
{t("notes.fields.critical")} { @@ -73,3 +81,4 @@ export default function NoteUpsertModalContainer({ /> ); } +); diff --git a/client/src/components/owner-detail-form/owner-detail-form.component.jsx b/client/src/components/owner-detail-form/owner-detail-form.component.jsx new file mode 100644 index 000000000..37eb40385 --- /dev/null +++ b/client/src/components/owner-detail-form/owner-detail-form.component.jsx @@ -0,0 +1,106 @@ +import { Button, Col, Form, Input, Row, Switch } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import FormItemEmail from "../form-items-formatted/email-form-item.component"; +import FormItemPhone from "../form-items-formatted/phone-form-item.component"; +import ResetForm from "../form-items-formatted/reset-form-item.component"; + +export default function OwnerDetailFormComponent({ form, owner }) { + const { t } = useTranslation(); + const { + isFieldsTouched, + resetFields, + getFieldDecorator, + getFieldValue + } = form; + + return ( +
+ {isFieldsTouched() ? : null} + + +
+ + {getFieldDecorator("ownr_ln", { + initialValue: owner.ownr_ln + })()} + + + {getFieldDecorator("ownr_fn", { + initialValue: owner.ownr_fn + })()} + + + {getFieldDecorator("allow_text_message", { + initialValue: owner.allow_text_message, + valuePropName: "checked" + })()} + + + {getFieldDecorator("ownr_addr1", { + initialValue: owner.ownr_addr1 + })()} + + + {getFieldDecorator("ownr_addr2", { + initialValue: owner.ownr_addr2 + })()} + + + {getFieldDecorator("ownr_city", { + initialValue: owner.ownr_city + })()} + + + {getFieldDecorator("ownr_ctry", { + initialValue: owner.ownr_ctry + })()} + + + + {" "} + + {getFieldDecorator("ownr_ea", { + initialValue: owner.ownr_ea, + rules: [ + { + type: "email", + message: "This is not a valid email address." + } + ] + })( + + )} + + + {getFieldDecorator("ownr_ph1", { + initialValue: owner.ownr_ph1 + })()} + + + {getFieldDecorator("ownr_st", { + initialValue: owner.ownr_st + })()} + + + {getFieldDecorator("ownr_zip", { + initialValue: owner.ownr_zip + })()} + + + {getFieldDecorator("preferred_contact", { + initialValue: owner.preferred_contact + })()} + + + {getFieldDecorator("ownr_title", { + initialValue: owner.ownr_title + })()} + + + + + ); +} diff --git a/client/src/components/owner-detail-form/owner-detail-form.container.jsx b/client/src/components/owner-detail-form/owner-detail-form.container.jsx new file mode 100644 index 000000000..375e78d4a --- /dev/null +++ b/client/src/components/owner-detail-form/owner-detail-form.container.jsx @@ -0,0 +1,46 @@ +import { Form, notification } from "antd"; +import React from "react"; +import { useMutation } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { UPDATE_OWNER } from "../../graphql/owners.queries"; +import OwnerDetailFormComponent from "./owner-detail-form.component"; + +function OwnerDetailFormContainer({ form, owner, refetch }) { + const { t } = useTranslation(); + + const [updateOwner] = useMutation(UPDATE_OWNER); + + const handleSubmit = e => { + e.preventDefault(); + + form.validateFieldsAndScroll((err, values) => { + if (err) { + notification["error"]({ + message: t("owners.errors.validationtitle"), + description: t("owners.errors.validation") + }); + } + if (!err) { + updateOwner({ + variables: { ownerId: owner.id, owner: values } + }).then(r => { + notification["success"]({ + message: t("owners.successes.save") + }); + //TODO Better way to reset the field decorators? + if (refetch) refetch().then(); + form.resetFields(); + }); + } + }); + }; + + return ( + + + + ); +} +export default Form.create({ name: "OwnerDetailFormContainer" })( + OwnerDetailFormContainer +); diff --git a/client/src/components/owner-detail-jobs/owner-detail-jobs.component.jsx b/client/src/components/owner-detail-jobs/owner-detail-jobs.component.jsx new file mode 100644 index 000000000..2f26506dd --- /dev/null +++ b/client/src/components/owner-detail-jobs/owner-detail-jobs.component.jsx @@ -0,0 +1,59 @@ +import React from "react"; +import { Table } from "antd"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +export default function OwnerDetailJobsComponent({ owner }) { + const { t } = useTranslation(); + const columns = [ + { + title: t("jobs.fields.ro_number"), + dataIndex: "ro_number", + key: "ro_number", + ellipsis: true, + render: (text, record) => ( + + {record.ro_number ? record.ro_number : `EST ${record.est_number}`} + + ) + }, + { + title: t("jobs.fields.vehicle"), + dataIndex: "owner", + key: "owner", + render: (text, record) => ( + + {`${record.vehicle.v_model_yr} ${record.vehicle.v_make_desc} ${record.vehicle.v_model_desc}`} + + ) + }, + { + title: t("jobs.fields.clm_no"), + dataIndex: "clm_no", + key: "clm_no" + }, + { + title: t("jobs.fields.status"), + dataIndex: "status", + key: "status" + }, + + { + title: t("jobs.fields.clm_total"), + dataIndex: "clm_total", + key: "clm_total", + render: (text, record) => ( + {record.clm_total} + ) + } + ]; + + return ( +
({ ...item }))} + rowKey="id" + dataSource={owner.jobs} + /> + ); +} diff --git a/client/src/components/owner-find-modal/owner-find-modal.component.jsx b/client/src/components/owner-find-modal/owner-find-modal.component.jsx index c9631e54b..49bbf385e 100644 --- a/client/src/components/owner-find-modal/owner-find-modal.component.jsx +++ b/client/src/components/owner-find-modal/owner-find-modal.component.jsx @@ -118,7 +118,8 @@ export default function OwnerFindModalComponent({ checked={selectedOwner ? false : true} onClick={() => setSelectedOwner(null)} > - Create a new Owner record for this job. + + {t("owners.labels.create_new")} ); diff --git a/client/src/components/owner-find-modal/owner-find-modal.container.jsx b/client/src/components/owner-find-modal/owner-find-modal.container.jsx index bd12e1559..e733e25bf 100644 --- a/client/src/components/owner-find-modal/owner-find-modal.container.jsx +++ b/client/src/components/owner-find-modal/owner-find-modal.container.jsx @@ -20,9 +20,7 @@ export default function OwnerFindModalContainer({ const ownersList = useQuery(QUERY_SEARCH_OWNER_BY_IDX, { variables: { - search: owner - ? `${owner.ownr_fn} ${owner.ownr_ln} ${owner.ownr_addr1} ${owner.ownr_city} ${owner.ownr_zip} ${owner.ownr_ea} ${owner.ownr_ph1} ${owner.ownr_ph2}` - : null + search: owner ? `${owner.ownr_fn || ""} ${owner.ownr_ln || ""}` : null }, skip: !owner, fetchPolicy: "network-only" @@ -32,18 +30,17 @@ export default function OwnerFindModalContainer({ + {...modalProps}> {loading ? : null} - {error ? : null} + {error ? : null} {owner ? ( diff --git a/client/src/components/owners-list/owners-list.component.jsx b/client/src/components/owners-list/owners-list.component.jsx new file mode 100644 index 000000000..beb3c3c1a --- /dev/null +++ b/client/src/components/owners-list/owners-list.component.jsx @@ -0,0 +1,89 @@ +import { Input, Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import PhoneFormatter from "../../utils/PhoneFormatter"; +import { alphaSort } from "../../utils/sorters"; + +export default function OwnersListComponent({ loading, owners, refetch }) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("owners.fields.name"), + dataIndex: "name", + key: "name", + // onFilter: (value, record) => record.ro_number.includes(value), + // filteredValue: state.filteredInfo.text || null, + sorter: (a, b) => alphaSort(a.ownr_ln, b.ownr_ln), + sortOrder: + state.sortedInfo.columnKey === "name" && state.sortedInfo.order, + + render: (text, record) => ( + + {`${record.ownr_fn} ${record.ownr_ln}`} + + ) + }, + { + title: t("owners.fields.ownr_ph1"), + dataIndex: "ownr_ph1", + key: "ownr_ph1", + sorter: (a, b) => alphaSort(a.ownr_ph1, b.ownr_ph1), + sortOrder: + state.sortedInfo.columnKey === "ownr_ph1" && state.sortedInfo.order, + render: (text, record) => { + return {record.ownr_ph1}; + } + }, + { + title: t("owners.fields.ownr_ea"), + dataIndex: "ownr_ea", + key: "ownr_ea" + }, + { + title: t("owners.fields.address"), + dataIndex: "address", + key: "address", + render: (text, record) => { + return ( +
{`${record.ownr_addr1 || ""} ${record.ownr_addr2 || + ""} ${record.ownr_city || ""} ${record.ownr_st || + ""} ${record.ownr_zip || ""}`}
+ ); + } + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; +//TODO Implement searching & pagination + return ( +
{ + return ( + { + console.log(value); + }} + enterButton + /> + ); + }} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={owners} + onChange={handleTableChange} + /> + ); +} diff --git a/client/src/components/owners-list/owners-list.container.jsx b/client/src/components/owners-list/owners-list.container.jsx new file mode 100644 index 000000000..2dd0110ec --- /dev/null +++ b/client/src/components/owners-list/owners-list.container.jsx @@ -0,0 +1,20 @@ +import React from "react"; +import { useQuery } from "react-apollo"; +import { QUERY_ALL_OWNERS } from "../../graphql/owners.queries"; +import AlertComponent from "../alert/alert.component"; +import OwnersListComponent from "./owners-list.component"; + +export default function OwnersListContainer() { + const { loading, error, data, refetch } = useQuery(QUERY_ALL_OWNERS, { + fetchPolicy: "network-only" + }); + + if (error) return ; + return ( + + ); +} diff --git a/client/src/components/parts-order-modal/parts-order-modal.component.jsx b/client/src/components/parts-order-modal/parts-order-modal.component.jsx new file mode 100644 index 000000000..29cb8252b --- /dev/null +++ b/client/src/components/parts-order-modal/parts-order-modal.component.jsx @@ -0,0 +1,90 @@ +import { AutoComplete, DatePicker, Icon, Input, List, Radio } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +export default function PartsOrderModalComponent({ + vendorList, + state, + sendTypeState, + orderLinesState +}) { + const [partsOrder, setPartsOrder] = state; + const [sendType, setSendType] = sendTypeState; + const orderLines = orderLinesState[0]; + const [vendorComplete, setVendorComplete] = useState(vendorList); + const { t } = useTranslation(); + + const handleSearch = value => { + if (value === "") setVendorComplete(vendorList); + else + setVendorComplete( + vendorList.filter(v => + v.name.toLowerCase().includes(value.toLowerCase()) + ) + ); + }; + + const handleSelect = (value, option) => { + setPartsOrder({ ...partsOrder, vendorid: option.key }); + }; + + return ( +
+ + {vendorComplete.map(v => ( + +
{v.name}
+
{v.favorite ? : null}
+
+ ))} +
+ {t("parts_orders.fields.deliver_by")} + { + setPartsOrder({ ...partsOrder, deliver_by: e }); + }} + /> + + {t("parts_orders.labels.inthisorder")} + + ( + + //TODO Editable table/adding line remarks to the order. + ]}> + { + // + // } + // title={{item.name.last}} + // description='Ant Design, a design language for background applications, is refined by Ant UED Team' + // /> + } +
{`${item.line_desc}${ + item.oem_partno ? " | " + item.oem_partno : "" + }`}
+
+ )} + /> + + setSendType(e.target.value)}> + {t("parts_orders.labels.email")} + {t("parts_orders.labels.print")} + +
+ ); +} diff --git a/client/src/components/parts-order-modal/parts-order-modal.container.jsx b/client/src/components/parts-order-modal/parts-order-modal.container.jsx new file mode 100644 index 000000000..24c991a2b --- /dev/null +++ b/client/src/components/parts-order-modal/parts-order-modal.container.jsx @@ -0,0 +1,188 @@ +import { Modal, notification } from "antd"; +import React, { useState, useEffect } from "react"; +import { useMutation, useQuery } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { INSERT_NEW_PARTS_ORDERS } from "../../graphql/parts-orders.queries"; +import { UPDATE_JOB_LINE_STATUS } from "../../graphql/jobs-lines.queries"; +import { QUERY_ALL_VENDORS_FOR_ORDER } from "../../graphql/vendors.queries"; +import { + selectBodyshop, + selectCurrentUser +} from "../../redux/user/user.selectors"; +import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import PartsOrderModalComponent from "./parts-order-modal.component"; +import { + setEmailOptions, + toggleEmailOverlayVisible +} from "../../redux/email/email.actions"; +import PartsOrderEmailTemplate from "../../emails/parts-order/parts-order.email"; +import { REPORT_QUERY_PARTS_ORDER_BY_PK } from "../../emails/parts-order/parts-order.query"; + +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, + bodyshop: selectBodyshop +}); +const mapDispatchToProps = dispatch => ({ + setEmailOptions: e => dispatch(setEmailOptions(e)), + toggleEmailOverlayVisible: () => dispatch(toggleEmailOverlayVisible()) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function PartsOrderModalContainer({ + partsOrderModalVisible, + linesToOrder, + jobId, + currentUser, + bodyshop, + refetch, + setEmailOptions, + toggleEmailOverlayVisible +}) { + const { t } = useTranslation(); + const [modalVisible, setModalVisible] = partsOrderModalVisible; + + //set order lines to be a version of the incoming lines. + const orderLinesState = useState( + linesToOrder.reduce((acc, value) => { + acc.push({ + line_desc: value.line_desc, + oem_partno: value.oem_partno, + db_price: value.db_price, + act_price: value.act_price, + line_remarks: "Alalala", + job_line_id: value.id, + status: bodyshop.md_order_statuses.default_ordered || "Ordered*" + }); + return acc; + }, []) + ); + const [orderLines, setOrderLinesState] = orderLinesState; + useEffect(() => { + if (modalVisible) + setOrderLinesState( + linesToOrder.reduce((acc, value) => { + acc.push({ + line_desc: value.line_desc, + oem_partno: value.oem_partno, + db_price: value.db_price, + act_price: value.act_price, + line_remarks: "Alalala", + job_line_id: value.id, + status: bodyshop.md_order_statuses.default_ordered || "Ordered*" + }); + return acc; + }, []) + ); + }, [ + modalVisible, + setOrderLinesState, + linesToOrder, + bodyshop.md_order_statuses.default_ordered + ]); + + const sendTypeState = useState("e"); + const sendType = sendTypeState[0]; + const partsOrderState = useState({ + vendorid: null, + jobid: jobId, + user_email: currentUser.email + }); + const partsOrder = partsOrderState[0]; + + const { loading, error, data } = useQuery(QUERY_ALL_VENDORS_FOR_ORDER, { + fetchPolicy: "network-only", + skip: !modalVisible + }); + const [insertPartOrder] = useMutation(INSERT_NEW_PARTS_ORDERS); + const [updateJobLines] = useMutation(UPDATE_JOB_LINE_STATUS); + + const handleOk = () => { + insertPartOrder({ + variables: { + po: [ + { + ...partsOrder, + status: bodyshop.md_order_statuses.default_ordered || "Ordered*", + parts_order_lines: { + data: orderLines + } + } + ] + } + }) + .then(r => { + updateJobLines({ + variables: { + ids: linesToOrder.map(item => item.id), + status: bodyshop.md_order_statuses.default_ordered || "Ordered*" + } + }) + .then(response => { + notification["success"]({ + message: t("parts_orders.successes.created") + }); + if (refetch) refetch(); + setModalVisible(false); + + if (sendType === "e") { + //Show the email modal and set the data. + + //TODO Remove some of the options below. + setEmailOptions({ + messageOptions: { + from: { + name: "Kavia Autobdoy", + address: "noreply@bodyshop.app" + }, + to: "patrickwf@gmail.com", + replyTo: "snaptsoft@gmail.com" + }, + template: PartsOrderEmailTemplate, + queryConfig: [ + REPORT_QUERY_PARTS_ORDER_BY_PK, + { + variables: { + id: r.data.insert_parts_orders.returning[0].id + } + } + ] + }); + toggleEmailOverlayVisible(); + } + }) + .catch(error => { + notification["error"]({ + message: t("parts_orders.errors.creating"), + description: error.message + }); + }); + }) + .catch(error => { + notification["error"]({ + message: t("parts_orders.errors.creating"), + description: error.message + }); + }); + }; + + return ( + setModalVisible(false)} + onOk={handleOk}> + {error ? : null} + + + + + ); +}); diff --git a/client/src/components/profile-content/profile-content.component.jsx b/client/src/components/profile-content/profile-content.component.jsx index f570c99c0..6854d4146 100644 --- a/client/src/components/profile-content/profile-content.component.jsx +++ b/client/src/components/profile-content/profile-content.component.jsx @@ -1,15 +1,17 @@ import React from "react"; import { useTranslation } from "react-i18next"; import AlertComponent from "../alert/alert.component"; +import ProfileMyComponent from "../profile-my/profile-my.component"; +import ProfileShopsContainer from "../profile-shops/profile-shops.container"; export default function ProfileContent({ sidebarSelection }) { const { t } = useTranslation(); switch (sidebarSelection.key) { case "profile": - return
Profile stuff
; - case "shop": - return
Shop stuff
; + return ; + case "shops": + return ; default: return ( diff --git a/client/src/components/profile-my/profile-my.component.jsx b/client/src/components/profile-my/profile-my.component.jsx new file mode 100644 index 000000000..1269ec3ec --- /dev/null +++ b/client/src/components/profile-my/profile-my.component.jsx @@ -0,0 +1,76 @@ +import { Button, Form, Input, notification } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { updateUserDetails } from "../../redux/user/user.actions"; +import { selectCurrentUser } from "../../redux/user/user.selectors"; +import ResetForm from "../form-items-formatted/reset-form-item.component"; + +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + updateUserDetails: userDetails => dispatch(updateUserDetails(userDetails)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)( + Form.create({ name: "ProfileMyComponentForm" })(function ProfileMyComponent({ + currentUser, + form, + updateUserDetails + }) { + const { isFieldsTouched, resetFields, getFieldDecorator } = form; + const { t } = useTranslation(); + + const handleSubmit = e => { + e.preventDefault(); + + form.validateFieldsAndScroll((err, values) => { + if (err) { + notification["error"]({ + message: t("jobs.errors.validationtitle"), + description: t("jobs.errors.validation") + }); + } + if (!err) { + console.log("values", values); + updateUserDetails({ + displayName: values.displayname, + photoURL: values.photoURL + }); + } + }); + }; + + return ( +
+ {isFieldsTouched() ? : null} + +
+ + {getFieldDecorator("displayname", { + initialValue: currentUser.displayName, + rules: [{ required: true }] + })()} + + + {getFieldDecorator("photoURL", { + initialValue: currentUser.photoURL + })()} + + + + +
+ ); + }) +); diff --git a/client/src/components/profile-shops/profile-shops.component.jsx b/client/src/components/profile-shops/profile-shops.component.jsx new file mode 100644 index 000000000..610aa25ee --- /dev/null +++ b/client/src/components/profile-shops/profile-shops.component.jsx @@ -0,0 +1,52 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Table, Button } from "antd"; +export default function ProfileShopsComponent({ + loading, + data, + updateActiveShop +}) { + const { t } = useTranslation(); + + const columns = [ + { + title: t("associations.fields.shopname"), + dataIndex: "shopname", + key: "shopname", + width: "25%", + render: (text, record) => {record.bodyshop.shopname} + }, + { + title: t("associations.fields.active"), + dataIndex: "active", + key: "active", + width: "25%", + render: (text, record) => {record.active ? "Yes" : "No"} + }, + { + title: t("associations.labels.actions"), + dataIndex: "actions", + key: "actions", + width: "25%", + render: (text, record) => ( + + {record.active ? null : ( + + )} + + ) + } + ]; + + return ( +
({ ...item }))} + rowKey="id" + dataSource={data} + /> + ); +} diff --git a/client/src/components/profile-shops/profile-shops.container.jsx b/client/src/components/profile-shops/profile-shops.container.jsx new file mode 100644 index 000000000..ca14aff01 --- /dev/null +++ b/client/src/components/profile-shops/profile-shops.container.jsx @@ -0,0 +1,34 @@ +import React from "react"; +import { useQuery, useMutation } from "react-apollo"; +import { + QUERY_ALL_ASSOCIATIONS, + UPDATE_ASSOCIATION +} from "../../graphql/associations.queries"; +import AlertComponent from "../alert/alert.component"; +import ProfileShopsComponent from "./profile-shops.component"; + +export default function ProfileShopsContainer() { + const { loading, error, data, refetch } = useQuery(QUERY_ALL_ASSOCIATIONS); + const [updateAssocation] = useMutation(UPDATE_ASSOCIATION); + + const updateActiveShop = activeShopId => { + data.associations.forEach(record => { + updateAssocation({ + variables: { + assocId: record.id, + assocActive: record.id === activeShopId ? true : false + } + }); + }); + refetch(); + }; + + if (error) return ; + return ( + + ); +} diff --git a/client/src/components/schedule-appointment-modal/schedule-appointment-modal.component.jsx b/client/src/components/schedule-appointment-modal/schedule-appointment-modal.component.jsx new file mode 100644 index 000000000..a4825e363 --- /dev/null +++ b/client/src/components/schedule-appointment-modal/schedule-appointment-modal.component.jsx @@ -0,0 +1,67 @@ +import { Checkbox, Col, DatePicker, Modal, Row, TimePicker, Input } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import ScheduleDayViewContainer from "../schedule-day-view/schedule-day-view.container"; + +export default function ScheduleJobModalComponent({ + appData, + setAppData, + formData, + setFormData, + ...props +}) { + const { t } = useTranslation(); + //TODO Existing appointments list only refreshes sometimes after modal close. May have to do with the container class. + return ( + + + + + Manual Job Selection Scheduled Time + { + setAppData({ ...appData, title: e.target.value }); + }} + /> + { + setAppData({ ...appData, start: e }); + }} + /> + { + setAppData({ ...appData, start: e }); + }} + /> + + + { + //TODO Build out notifications. + } + + setFormData({ ...formData, notifyCustomer: e.target.checked }) + } + > + {t("jobs.labels.appointmentconfirmation")} + + + + + + + + ); +} diff --git a/client/src/components/schedule-appointment-modal/schedule-appointment-modal.container.jsx b/client/src/components/schedule-appointment-modal/schedule-appointment-modal.container.jsx new file mode 100644 index 000000000..c82299afc --- /dev/null +++ b/client/src/components/schedule-appointment-modal/schedule-appointment-modal.container.jsx @@ -0,0 +1,74 @@ +import { notification } from "antd"; +import moment from "moment"; +import React, { useState } from "react"; +import { useMutation } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { INSERT_APPOINTMENT } from "../../graphql/appointments.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import ScheduleAppointmentModalComponent from "./schedule-appointment-modal.component"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export default connect( + mapStateToProps, + null +)(function ScheduleAppointmentModalContainer({ + scheduleModalState, + jobId, + bodyshop, + refetch +}) { + const [scheduleModalVisible, setscheduleModalVisible] = scheduleModalState; + const [appData, setAppData] = useState({ + jobid: jobId, + bodyshopid: bodyshop.id, + isintake: false, + start: null + }); + const [insertAppointment] = useMutation(INSERT_APPOINTMENT); + const [formData, setFormData] = useState({ notifyCustomer: false }); + const { t } = useTranslation(); + + return ( + setscheduleModalVisible(false)} + onOk={() => { + //TODO Customize the amount of minutes it will add. + insertAppointment({ + variables: { + app: { ...appData, end: moment(appData.start).add(60, "minutes") } + } + }) + .then(r => { + notification["success"]({ + message: t("appointments.successes.created") + }); + + if (formData.notifyCustomer) { + //TODO Implement customer reminder on scheduling. + alert("Chosed to notify the customer somehow!"); + } + setscheduleModalVisible(false); + if (refetch) refetch(); + }) + .catch(error => { + notification["error"]({ + message: t("appointments.errors.saving", { + message: error.message + }) + }); + }); + }} + /> + ); +}); diff --git a/client/src/components/schedule-calendar-wrapper/schedule-calendar.styles.scss b/client/src/components/schedule-calendar-wrapper/schedule-calendar.styles.scss new file mode 100644 index 000000000..059edf709 --- /dev/null +++ b/client/src/components/schedule-calendar-wrapper/schedule-calendar.styles.scss @@ -0,0 +1 @@ +@import 'react-big-calendar/lib/sass/styles'; diff --git a/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx new file mode 100644 index 000000000..e54dfd7ab --- /dev/null +++ b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx @@ -0,0 +1,34 @@ +import moment from "moment"; +import React from "react"; +import { Calendar, momentLocalizer } from "react-big-calendar"; +//import "react-big-calendar/lib/css/react-big-calendar.css"; +import "./schedule-calendar.styles.scss"; +import DateCellWrapper from "../schedule-datecellwrapper/schedule-datecellwrapper.component"; +import Event from "../schedule-event/schedule-event.container"; +const localizer = momentLocalizer(moment); + +export default function ScheduleCalendarWrapperComponent({ + data, + refetch, + defaultView, + ...otherProps +}) { + return ( + { + return Event({ event: e.event, refetch: refetch }); + }, + dateCellWrapper: DateCellWrapper + }} + {...otherProps} + /> + ); +} diff --git a/client/src/components/schedule-calendar/schedule-calendar.component.jsx b/client/src/components/schedule-calendar/schedule-calendar.component.jsx new file mode 100644 index 000000000..61c3ffe3e --- /dev/null +++ b/client/src/components/schedule-calendar/schedule-calendar.component.jsx @@ -0,0 +1,46 @@ +import React from "react"; +//import "react-big-calendar/lib/css/react-big-calendar.css"; +import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component"; +import { Button, Icon } from "antd"; +import { useTranslation } from "react-i18next"; +import ScheduleAppointmentModalContainer from "../schedule-appointment-modal/schedule-appointment-modal.container"; + +export default function ScheduleCalendarComponent({ + data, + refetch, + scheduleModalState +}) { + const { t } = useTranslation(); + + return ( +
+ + + + + + + +
+ ); +} diff --git a/client/src/components/schedule-calendar/schedule-calendar.container.jsx b/client/src/components/schedule-calendar/schedule-calendar.container.jsx new file mode 100644 index 000000000..7d5605044 --- /dev/null +++ b/client/src/components/schedule-calendar/schedule-calendar.container.jsx @@ -0,0 +1,36 @@ +import React, { useState } from "react"; +import { useQuery } from "react-apollo"; +import ScheduleCalendarComponent from "./schedule-calendar.component"; +import { QUERY_ALL_ACTIVE_APPOINTMENTS } from "../../graphql/appointments.queries"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import AlertComponent from "../alert/alert.component"; + +export default function ScheduleCalendarContainer() { + const { loading, error, data, refetch } = useQuery( + QUERY_ALL_ACTIVE_APPOINTMENTS, + { + fetchPolicy: "network-only" + } + ); + const scheduleModalState = useState(false); + + if (loading) return ; + if (error) return ; + let normalizedData = data.appointments.map(e => { + //Required becuase Hasura returns a string instead of a date object. + return Object.assign( + {}, + e, + { start: new Date(e.start) }, + { end: new Date(e.end) } + ); + }); + + return ( + + ); +} diff --git a/client/src/components/schedule-datecellwrapper/schedule-datecellwrapper.component.jsx b/client/src/components/schedule-datecellwrapper/schedule-datecellwrapper.component.jsx new file mode 100644 index 000000000..69d9e2f5d --- /dev/null +++ b/client/src/components/schedule-datecellwrapper/schedule-datecellwrapper.component.jsx @@ -0,0 +1,18 @@ +import React from "react"; + +export default function ScheduleDateCellWrapper(dateCellWrapperProps) { + // Show 'click me' text in arbitrary places by using the range prop + + const style = { + display: "flex", + flex: 1, + borderLeft: "1px solid #DDD", + backgroundColor: "#fff" + }; + return ( +
+ PLACEHOLDER:DATA + {dateCellWrapperProps.children} +
+ ); +} diff --git a/client/src/components/schedule-day-view/schedule-day-view.component.jsx b/client/src/components/schedule-day-view/schedule-day-view.component.jsx new file mode 100644 index 000000000..dd657fcdf --- /dev/null +++ b/client/src/components/schedule-day-view/schedule-day-view.component.jsx @@ -0,0 +1,21 @@ +import React from "react"; +import "react-big-calendar/lib/css/react-big-calendar.css"; +import { useTranslation } from "react-i18next"; +import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component"; + +export default function ScheduleDayViewComponent({ data, day }) { + const { t } = useTranslation(); + if (data) + //TODO Remove addtional calendar elements from day view. + return ( + console.log("e", e)} + /> + ); + else return
{t("appointments.labels.nodateselected")}
; +} diff --git a/client/src/components/schedule-day-view/schedule-day-view.container.jsx b/client/src/components/schedule-day-view/schedule-day-view.container.jsx new file mode 100644 index 000000000..e61b4c6f0 --- /dev/null +++ b/client/src/components/schedule-day-view/schedule-day-view.container.jsx @@ -0,0 +1,36 @@ +import React from "react"; +import ScheduleDayViewComponent from "./schedule-day-view.component"; +import { useQuery } from "react-apollo"; +import { QUERY_APPOINTMENT_BY_DATE } from "../../graphql/appointments.queries"; +import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component"; +import moment from "moment"; + +export default function ScheduleDayViewContainer({ day }) { + const { loading, error, data } = useQuery(QUERY_APPOINTMENT_BY_DATE, { + variables: { + start: moment(day).startOf("day"), + end: moment(day).endOf("day") + }, + skip: !day, + fetchPolicy: "network-only" + }); + + if (loading) return ; + if (error) return
{error.message}
; + let normalizedData; + if (data) { + normalizedData = data.appointments.map(e => { + //Required becuase Hasura returns a string instead of a date object. + return Object.assign( + {}, + e, + { start: new Date(e.start) }, + { end: new Date(e.end) } + ); + }); + } + + return ( + + ); +} diff --git a/client/src/components/schedule-event/schedule-event.component.jsx b/client/src/components/schedule-event/schedule-event.component.jsx new file mode 100644 index 000000000..6866dbf10 --- /dev/null +++ b/client/src/components/schedule-event/schedule-event.component.jsx @@ -0,0 +1,101 @@ +import React from "react"; +import { Popover, Button } from "antd"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +import PhoneFormatter from "../../utils/PhoneFormatter"; +import { Link } from "react-router-dom"; +import { useTranslation } from "react-i18next"; + +export default function ScheduleEventComponent({ event, handleCancel }) { + const { t } = useTranslation(); + const popoverContent = ( +
+ {!event.isintake ? ( + {event.title} + ) : ( +
+ {`${(event.job && event.job.ownr_fn) || ""} ${(event.job && + event.job.ownr_ln) || + ""}`} + + {`${(event.job && event.job.vehicle.v_model_yr) || + ""} ${(event.job && event.job.vehicle.v_make_desc) || + ""} ${(event.job && event.job.vehicle.v_model_desc) || ""}`} + +
+ )} + {event.job ? ( +
+
{`${t("jobs.fields.ro_number")}: ${(event.job && + event.job.ro_number) || + ""}`}
+
+ {t("jobs.fields.clm_total")}: + + {(event.job && event.job.clm_total) || ""} + +
+
{`${t("jobs.fields.clm_no")}: ${(event.job && + event.job.clm_no) || + ""}`}
+
+ {t("jobs.fields.ownr_ea")}:{(event.job && event.job.ownr_ea) || ""} +
+
+ {t("jobs.fields.ownr_ph1")}: + + {(event.job && event.job.ownr_ph1) || ""} + +
+
+ ) : null} + { + //TODO Add phone 1 MessagingActionTypes. + } + {event.job ? ( + + + + ) : null} + + + {event.isintake ? ( + + ) : null} +
+ ); + + return ( + +
+ {event.isintake ? ( +
+ {`${(event.job && event.job.ownr_fn) || ""} ${(event.job && + event.job.ownr_ln) || + ""}`} + + {`${(event.job && event.job.vehicle.v_model_yr) || + ""} ${(event.job && event.job.vehicle.v_make_desc) || + ""} ${(event.job && event.job.vehicle.v_model_desc) || ""}`} + +
+ ) : ( +
+ {`${event.title || ""}`} +
+ )} +
+
+ ); +} diff --git a/client/src/components/schedule-event/schedule-event.container.jsx b/client/src/components/schedule-event/schedule-event.container.jsx new file mode 100644 index 000000000..7761ab049 --- /dev/null +++ b/client/src/components/schedule-event/schedule-event.container.jsx @@ -0,0 +1,24 @@ +import React from "react"; +import { useMutation } from "react-apollo"; +import { CANCEL_APPOINTMENT_BY_ID } from "../../graphql/appointments.queries"; +import ScheduleEventComponent from "./schedule-event.component"; +import { notification } from "antd"; +import { useTranslation } from "react-i18next"; +export default function ScheduleEventContainer({ event, refetch }) { + const { t } = useTranslation(); + const [cancelAppointment] = useMutation(CANCEL_APPOINTMENT_BY_ID); + const handleCancel = id => { + cancelAppointment({ variables: { appid: event.id } }) + .then(r => { + notification["success"]({ + message: t("appointments.successes.canceled") + }); + if (refetch) refetch(); + }) + .catch(error => { + notification["error"]({ message: t("appointments.errors.canceling") }); + }); + }; + + return ; +} diff --git a/client/src/components/schedule-existing-appointments-list/schedule-existing-appointments-list.component.jsx b/client/src/components/schedule-existing-appointments-list/schedule-existing-appointments-list.component.jsx new file mode 100644 index 000000000..4435030d9 --- /dev/null +++ b/client/src/components/schedule-existing-appointments-list/schedule-existing-appointments-list.component.jsx @@ -0,0 +1,44 @@ +import React from "react"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import AlertComponent from "../alert/alert.component"; +import { Timeline } from "antd"; +import { useTranslation } from "react-i18next"; +import { DateTimeFormatter } from "../../utils/DateFormatter"; + +export default function ScheduleExistingAppointmentsList({ + existingAppointments +}) { + const { t } = useTranslation(); + if (existingAppointments.loading) return ; + if (existingAppointments.error) + return ( + + ); + + return ( +
+ {t("appointments.labels.priorappointments")} + + {existingAppointments.data.appointments.map(item => { + return ( + + {item.canceled + ? t("appointments.labels.cancelledappointment") + : item.arrived + ? t("appointments.labels.arrivedon") + : t("appointments.labels.scheduledfor")} + + {item.start} + + ); + })} + +
+ ); +} diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx new file mode 100644 index 000000000..a32e82f30 --- /dev/null +++ b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx @@ -0,0 +1,72 @@ +import { Checkbox, Col, DatePicker, Modal, Row, Tabs, TimePicker } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import ScheduleDayViewContainer from "../schedule-day-view/schedule-day-view.container"; +import ScheduleExistingAppointmentsList from "../schedule-existing-appointments-list/schedule-existing-appointments-list.component"; + +export default function ScheduleJobModalComponent({ + existingAppointments, + appData, + setAppData, + formData, + setFormData, + ...props +}) { + const { t } = useTranslation(); + //TODO Existing appointments list only refreshes sometimes after modal close. May have to do with the container class. + return ( + + +
+ + + Automatic Job Selection. + + + + Manual Job Selection Scheduled Time + { + setAppData({ ...appData, start: e }); + }} + /> + { + setAppData({ ...appData, start: e }); + }} + /> + + + + + { + //TODO Build out notifications. + } + + setFormData({ ...formData, notifyCustomer: e.target.checked }) + } + > + {t("jobs.labels.appointmentconfirmation")} + + + + + + + + ); +} diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx new file mode 100644 index 000000000..ac06b1b49 --- /dev/null +++ b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx @@ -0,0 +1,93 @@ +import React, { useState } from "react"; +import ScheduleJobModalComponent from "./schedule-job-modal.component"; +import { useMutation, useQuery } from "react-apollo"; +import { + INSERT_APPOINTMENT, + QUERY_APPOINTMENTS_BY_JOBID +} from "../../graphql/appointments.queries"; +import moment from "moment"; +import { notification } from "antd"; +import { useTranslation } from "react-i18next"; +import { UPDATE_JOB_STATUS } from "../../graphql/jobs.queries"; + +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export default connect( + mapStateToProps, + null +)(function ScheduleJobModalContainer({ + scheduleModalState, + jobId, + bodyshop, + refetch +}) { + const [scheduleModalVisible, setscheduleModalVisible] = scheduleModalState; + const [appData, setAppData] = useState({ + jobid: jobId, + start: null, + bodyshopid: bodyshop.id + }); + const [insertAppointment] = useMutation(INSERT_APPOINTMENT); + const [updateJobStatus] = useMutation(UPDATE_JOB_STATUS, { + variables: { + jobId: jobId, + status: bodyshop.md_ro_statuses.default_scheduled + } + }); + const [formData, setFormData] = useState({ notifyCustomer: false }); + const { t } = useTranslation(); + + const existingAppointments = useQuery(QUERY_APPOINTMENTS_BY_JOBID, { + variables: { jobid: jobId }, + fetchPolicy: "network-only", + skip: !scheduleModalVisible + }); + + return ( + setscheduleModalVisible(false)} + onOk={() => { + //TODO Customize the amount of minutes it will add. + insertAppointment({ + variables: { + app: { ...appData, end: moment(appData.start).add(60, "minutes") } + } + }) + .then(r => { + updateJobStatus().then(r => { + notification["success"]({ + message: t("appointments.successes.created") + }); + + if (formData.notifyCustomer) { + //TODO Implement customer reminder on scheduling. + alert("Chosed to notify the customer somehow!"); + } + setscheduleModalVisible(false); + if (refetch) refetch(); + }); + }) + .catch(error => { + notification["error"]({ + message: t("appointments.errors.saving", { + message: error.message + }) + }); + }); + }} + /> + ); +}); diff --git a/client/src/components/shop-employees/shop-employees-form.component.jsx b/client/src/components/shop-employees/shop-employees-form.component.jsx new file mode 100644 index 000000000..cf7abfab7 --- /dev/null +++ b/client/src/components/shop-employees/shop-employees-form.component.jsx @@ -0,0 +1,112 @@ +import { Button, DatePicker, Form, Input, InputNumber, Switch } from "antd"; +import moment from "moment"; +import React from "react"; +import { useTranslation } from "react-i18next"; + +export default function ShopEmployeesFormComponent({ + form, + selectedEmployee, + handleSubmit +}) { + const { t } = useTranslation(); + const { getFieldDecorator } = form; + if (!selectedEmployee) return "//TODO No employee selected."; + return ( +
+ + + + {getFieldDecorator("first_name", { + initialValue: selectedEmployee.first_name, + rules: [ + { + required: true, + message: t("general.validation.required") + } + ] + })()} + + + {getFieldDecorator("last_name", { + initialValue: selectedEmployee.last_name, + rules: [ + { + required: true, + message: t("general.validation.required") + } + ] + })()} + + + {getFieldDecorator("employee_number", { + initialValue: selectedEmployee.employee_number, + rules: [ + { + required: true, + message: t("general.validation.required") + } + ] + })()} + + + {getFieldDecorator("active", { + initialValue: selectedEmployee.active, + valuePropName: "checked" + })()} + + + {getFieldDecorator("flat_rate", { + initialValue: selectedEmployee.flat_rate, + valuePropName: "checked" + })()} + + + {getFieldDecorator("hire_date", { + initialValue: selectedEmployee.hire_date + ? moment(selectedEmployee.hire_date) + : null, + rules: [ + { + required: true, + message: t("general.validation.required") + } + ] + })()} + + + {getFieldDecorator("termination_date", { + initialValue: selectedEmployee.termination_date + ? moment(selectedEmployee.termination_date) + : null + })()} + + { + //TODO Make this a picklist. + } + + {getFieldDecorator("cost_center", { + initialValue: selectedEmployee.cost_center, + rules: [ + { + required: true, + message: t("general.validation.required") + } + ] + })()} + + + {getFieldDecorator("base_rate", { + initialValue: selectedEmployee.base_rate, + rules: [ + { + required: true, + message: t("general.validation.required") + } + ] + })()} + + + ); +} diff --git a/client/src/components/shop-employees/shop-employees-list.component.jsx b/client/src/components/shop-employees/shop-employees-list.component.jsx new file mode 100644 index 000000000..9984eacee --- /dev/null +++ b/client/src/components/shop-employees/shop-employees-list.component.jsx @@ -0,0 +1,52 @@ +import { Button, List } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +export default function ShopEmployeesListComponent({ + loading, + employees, + setSelectedEmployee, + handleDelete +}) { + const { t } = useTranslation(); + return ( +
+ + ( + setSelectedEmployee(item)}> + {t("general.actions.edit")} + , + + ]} + > + + {item.cost_center} @{" "} + {item.base_rate} + + } + /> + + )} + /> +
+ ); +} diff --git a/client/src/components/shop-employees/shop-employees.component.jsx b/client/src/components/shop-employees/shop-employees.component.jsx new file mode 100644 index 000000000..44fc6e531 --- /dev/null +++ b/client/src/components/shop-employees/shop-employees.component.jsx @@ -0,0 +1,34 @@ +import { Col, Row } from "antd"; +import React from "react"; +import ShopEmployeesFormComponent from "./shop-employees-form.component"; +import ShopEmployeesListComponent from "./shop-employees-list.component"; +export default function ShopEmployeeComponent({ + form, + loading, + employees, + employeeState, + handleSubmit, + handleDelete +}) { + const [selectedEmployee, setSelectedEmployee] = employeeState; + return ( + +
+ + + + + + + + ); +} diff --git a/client/src/components/shop-employees/shop-employees.container.jsx b/client/src/components/shop-employees/shop-employees.container.jsx new file mode 100644 index 000000000..fc65e05cb --- /dev/null +++ b/client/src/components/shop-employees/shop-employees.container.jsx @@ -0,0 +1,112 @@ +import { Form, notification } from "antd"; +import React, { useState } from "react"; +import { useMutation, useQuery } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { DELETE_EMPLOYEE, INSERT_EMPLOYEES, QUERY_EMPLOYEES, UPDATE_EMPLOYEE } from "../../graphql/employees.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import AlertComponent from "../alert/alert.component"; +import ShopEmployeeComponent from "./shop-employees.component"; + + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +function ShopEmployeesContainer({ form, bodyshop }) { + const { t } = useTranslation(); + const employeeState = useState(null); + const { loading, error, data, refetch } = useQuery(QUERY_EMPLOYEES, { + fetchPolicy: "network-only" + }); + + const [updateEmployee] = useMutation(UPDATE_EMPLOYEE); + const [insertEmployees] = useMutation(INSERT_EMPLOYEES); + const [deleteEmployee] = useMutation(DELETE_EMPLOYEE); + const handleDelete = id => { + deleteEmployee({ variables: { id: id } }) + .then(r => { + notification["success"]({ + message: t("employees.successes.delete") + }); + //TODO Better way to reset the field decorators? + employeeState[1](null); + refetch().then(r => form.resetFields()); + }) + .catch(error => { + notification["error"]({ + message: t("employees.errors.delete") + }); + }); + }; + + const handleSubmit = e => { + e.preventDefault(); + + form.validateFieldsAndScroll((err, values) => { + if (err) { + notification["error"]({ + message: t("employees.errors.validationtitle"), + description: t("employees.errors.validation") + }); + } + if (!err) { + if (employeeState[0].id) { + //Update a record. + updateEmployee({ + variables: { id: employeeState[0].id, employee: values } + }) + .then(r => { + notification["success"]({ + message: t("employees.successes.save") + }); + //TODO Better way to reset the field decorators? + employeeState[1](null); + refetch().then(r => form.resetFields()); + }) + .catch(error => { + notification["error"]({ + message: t("employees.errors.save") + }); + }); + } else { + //New record, insert it. + insertEmployees({ + variables: { employees: [{ ...values, shopid: bodyshop.id }] } + }).then(r => { + notification["success"]({ + message: t("employees.successes.save") + }); + //TODO Better way to reset the field decorators? + employeeState[1](null); + refetch() + .then(r => form.resetFields()) + .catch(error => { + notification["error"]({ + message: t("employees.errors.save") + }); + }); + }); + } + } + }); + }; + + if (error) return ; + + return ( + + ); +} +export default connect( + mapStateToProps, + null +)(Form.create({ name: "ShopEmployeesContainer" })(ShopEmployeesContainer)); diff --git a/client/src/components/sign-in-form/sign-in-form.component.jsx b/client/src/components/sign-in-form/sign-in-form.component.jsx index 2038e12d8..1a93c9a77 100644 --- a/client/src/components/sign-in-form/sign-in-form.component.jsx +++ b/client/src/components/sign-in-form/sign-in-form.component.jsx @@ -1,76 +1,112 @@ +import { Button, Form, Icon, Input } from "antd"; import React from "react"; -import { auth } from "../../firebase/firebase.utils"; -import { Form, Icon, Input, Button, Alert } from "antd"; +import { useApolloClient } from "react-apollo"; +import { connect } from "react-redux"; +import { Redirect } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; +import Logo from "../../assets/logo240.png"; +import { UPSERT_USER } from "../../graphql/user.queries"; +import { emailSignInStart } from "../../redux/user/user.actions"; +import { selectCurrentUser, selectSignInError } from "../../redux/user/user.selectors"; -class SignInForm extends React.Component { - constructor() { - super(); - this.state = { - errorMessage: null - }; - } +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, + signInError: selectSignInError +}); - handleSubmit = e => { - e.preventDefault(); +const mapDispatchToProps = dispatch => ({ + emailSignInStart: (email, password) => + dispatch(emailSignInStart({ email, password })) +}); - this.props.form.validateFields(async (err, values) => { - if (!err) { - const { email, password } = values; - try { - await auth.signInWithEmailAndPassword(email, password); +export default connect( + mapStateToProps, + mapDispatchToProps +)( + Form.create({ name: "sign_in" })(function SignInComponent({ + form, + emailSignInStart, + currentUser, + signInError + }) { + const apolloClient = useApolloClient(); - this.props.form.resetFields(); - } catch (error) { - this.setState({ ...this.state, errorMessage: error.message }); + const handleSubmit = e => { + e.preventDefault(); + form.validateFields(async (err, values) => { + if (!err) { + const { email, password } = values; + emailSignInStart(email, password); + //Try to do the login using a saga here. } - } - }); - }; + }); + }; - render() { - const { getFieldDecorator } = this.props.form; - const { errorMessage } = this.state; + if (currentUser.authorized === true) { + apolloClient + .mutate({ + mutation: UPSERT_USER, + variables: { + authEmail: currentUser.email, + authToken: currentUser.uid + } + }) + .then() + .catch(error => { + console.log("User login upsert error.", error); + }); + } + const { getFieldDecorator } = form; return ( -
- - {getFieldDecorator("email", { - rules: [ - { - type: "email", - message: "Please enter a valid email." - }, - { - required: true, - message: "Please your email." - } - ] - })()} - - - {getFieldDecorator("password", { - rules: [{ required: true, message: "Please enter your password." }] - })( - } - type="password" - placeholder="Password" - /> - )} - - -
Forgot password
- -
- {errorMessage ? : null} - +
+ {currentUser.authorized === true ? : null} + + Bodyshop.app + +
+ + {getFieldDecorator("email", { + rules: [ + { + type: "email", + message: "Please enter a valid email." + }, + { + required: true, + message: "Please your email." + } + ] + })()} + + + {getFieldDecorator("password", { + rules: [ + { required: true, message: "Please enter your password." } + ] + })( + + } + type="password" + placeholder="Password" + /> + )} + + +
Forgot password
+ +
+ {signInError ?
{signInError.message}
: null} + +
); - } -} -export default Form.create({ name: "sign_in" })(SignInForm); + }) +); diff --git a/client/src/components/sign-in-form/sign-in-form.container.jsx b/client/src/components/sign-in-form/sign-in-form.container.jsx deleted file mode 100644 index 85ca228d4..000000000 --- a/client/src/components/sign-in-form/sign-in-form.container.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from "react"; -import { ApolloConsumer } from "react-apollo"; -import SignInFormComponent from "./sign-in-form.component"; -import { Row, Col, Layout, Typography } from "antd"; -import FooterComponent from "../footer/footer.component"; -import Logo from "../../assets/logo240.png"; - -const { Content, Footer } = Layout; - -export default function SignInFormContainer() { - return ( - - {client => { - return ( - - - -
-
- Bodyshop.app -
- - - Bodyshop.app - - - - - - - - -
- -
- - ); - }} - - ); -} diff --git a/client/src/components/sign-out/sign-out.component.jsx b/client/src/components/sign-out/sign-out.component.jsx deleted file mode 100644 index 9e995d819..000000000 --- a/client/src/components/sign-out/sign-out.component.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; -import { useTranslation } from "react-i18next"; -import firebase from "../../firebase/firebase.utils"; - -export default function SignoutComponent() { - const signOut = async () => { - try { - await firebase.auth().signOut(); - // this.setState({ - // redirect: true - // }); - } catch (error) { - console.log(error); - } - }; - - const { t } = useTranslation(); - - return
{t("user.actions.signout")}
; -} diff --git a/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx b/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx new file mode 100644 index 000000000..8f5a369c7 --- /dev/null +++ b/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx @@ -0,0 +1,129 @@ +import { Button, DatePicker, Form, Input, Row, Col } from "antd"; +import moment from "moment"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import ResetForm from "../form-items-formatted/reset-form-item.component"; +export default function VehicleDetailFormComponent({ vehicle, form }) { + const { t } = useTranslation(); + const { isFieldsTouched, resetFields, getFieldDecorator } = form; + + return ( +
+ {isFieldsTouched() ? : null} + + +
+ + {getFieldDecorator("v_vin", { + initialValue: vehicle.v_vin + })()} + + + {getFieldDecorator("plate_no", { + initialValue: vehicle.plate_no + })()} + + + {getFieldDecorator("plate_st", { + initialValue: vehicle.plate_st + })()} + + + {getFieldDecorator("v_type", { + initialValue: vehicle.v_type + })()} + + + {getFieldDecorator("v_trimcode", { + initialValue: vehicle.v_trimcode + })()} + + + {getFieldDecorator("v_tone", { + initialValue: vehicle.v_tone + })()} + + + {getFieldDecorator("v_bstyle", { + initialValue: vehicle.v_bstyle + })()} + + + + + {getFieldDecorator("v_stage", { + initialValue: vehicle.v_stage + })()} + + + {getFieldDecorator("v_prod_dt", { + initialValue: vehicle.v_prod_dt ? moment(vehicle.v_prod_dt) : null + })()} + + { + //TODO Add handling for paint code json + } + + {getFieldDecorator("v_paint_codes", { + initialValue: JSON.stringify(vehicle.v_paint_codes) + })()} + + + {getFieldDecorator("v_options", { + initialValue: vehicle.v_options + })()} + + + {getFieldDecorator("v_model_yr", { + initialValue: vehicle.v_model_yr + })()} + + + {getFieldDecorator("v_model_desc", { + initialValue: vehicle.v_model_desc + })()} + + + {getFieldDecorator("trim_color", { + initialValue: vehicle.trim_color + })()} + + + + + {getFieldDecorator("v_mldgcode", { + initialValue: vehicle.v_mldgcode + })()} + + + {getFieldDecorator("v_makecode", { + initialValue: vehicle.v_makecode + })()} + + + {getFieldDecorator("v_make_desc", { + initialValue: vehicle.v_make_desc + })()} + + + {getFieldDecorator("v_engine", { + initialValue: vehicle.v_engine + })()} + + + {getFieldDecorator("v_cond", { + initialValue: vehicle.v_cond + })()} + + + {getFieldDecorator("v_color", { + initialValue: vehicle.v_color + })()} + + + + + ); +} diff --git a/client/src/components/vehicle-detail-form/vehicle-detail-form.container.jsx b/client/src/components/vehicle-detail-form/vehicle-detail-form.container.jsx new file mode 100644 index 000000000..ec0a7fb70 --- /dev/null +++ b/client/src/components/vehicle-detail-form/vehicle-detail-form.container.jsx @@ -0,0 +1,46 @@ +import React from "react"; +import { Form, notification } from "antd"; +import { useMutation } from "react-apollo"; +import VehicleDetailFormComponent from "./vehicle-detail-form.component"; +import { useTranslation } from "react-i18next"; +import { UPDATE_VEHICLE } from "../../graphql/vehicles.queries"; + +function VehicleDetailFormContainer({ form, vehicle, refetch }) { + const { t } = useTranslation(); + const [updateVehicle] = useMutation(UPDATE_VEHICLE); + + const handleSubmit = e => { + e.preventDefault(); + + form.validateFieldsAndScroll((err, values) => { + if (err) { + notification["error"]({ + message: t("vehicles.errors.validationtitle"), + description: t("vehicles.errors.validation") + }); + } + if (!err) { + updateVehicle({ + variables: { vehId: vehicle.id, vehicle: values } + }).then(r => { + notification["success"]({ + message: t("vehicles.successes.save") + }); + //TODO Better way to reset the field decorators? + if (refetch) refetch().then(); + form.resetFields(); + }); + } + }); + }; + + return ( + + + + ); +} + +export default Form.create({ name: "VehicleDetailFormContainer" })( + VehicleDetailFormContainer +); diff --git a/client/src/components/vehicle-detail-jobs/vehicle-detail-jobs.component.jsx b/client/src/components/vehicle-detail-jobs/vehicle-detail-jobs.component.jsx new file mode 100644 index 000000000..c4dfca2be --- /dev/null +++ b/client/src/components/vehicle-detail-jobs/vehicle-detail-jobs.component.jsx @@ -0,0 +1,59 @@ +import React from "react"; +import { Table } from "antd"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +export default function VehicleDetailJobsComponent({ vehicle }) { + const { t } = useTranslation(); + const columns = [ + { + title: t("jobs.fields.ro_number"), + dataIndex: "ro_number", + key: "ro_number", + ellipsis: true, + render: (text, record) => ( + + {record.ro_number ? record.ro_number : `EST ${record.est_number}`} + + ) + }, + { + title: t("jobs.fields.owner"), + dataIndex: "owner", + key: "owner", + render: (text, record) => ( + + {`${record.ownr_fn} ${record.ownr_ln}`} + + ) + }, + { + title: t("jobs.fields.clm_no"), + dataIndex: "clm_no", + key: "clm_no" + }, + { + title: t("jobs.fields.status"), + dataIndex: "status", + key: "status" + }, + + { + title: t("jobs.fields.clm_total"), + dataIndex: "clm_total", + key: "clm_total", + render: (text, record) => ( + {record.clm_total} + ) + } + ]; + + return ( +
({ ...item }))} + rowKey="id" + dataSource={vehicle.jobs} + /> + ); +} diff --git a/client/src/components/vehicles-list/vehicles-list.component.jsx b/client/src/components/vehicles-list/vehicles-list.component.jsx new file mode 100644 index 000000000..49362c74d --- /dev/null +++ b/client/src/components/vehicles-list/vehicles-list.component.jsx @@ -0,0 +1,76 @@ +import { Input, Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import { alphaSort } from "../../utils/sorters"; + +export default function VehiclesListComponent({ loading, vehicles, refetch }) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("vehicles.fields.v_vin"), + dataIndex: "v_vin", + key: "v_vin", + // onFilter: (value, record) => record.ro_number.includes(value), + // filteredValue: state.filteredInfo.text || null, + sorter: (a, b) => alphaSort(a.v_vin, b.v_vin), + sortOrder: + state.sortedInfo.columnKey === "v_vin" && state.sortedInfo.order, + + render: (text, record) => ( + {record.v_vin} + ) + }, + { + title: t("vehicles.fields.description"), + dataIndex: "description", + key: "description", + render: (text, record) => { + return ( + {`${record.v_model_yr} ${record.v_make_desc} ${record.v_model_desc} ${record.v_color}`} + ); + } + }, + { + title: t("vehicles.fields.plate_no"), + dataIndex: "plate", + key: "plate", + render: (text, record) => { + return {`${record.plate_st} | ${record.plate_no}`}; + } + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + //TODO Implement searching & pagination + return ( +
{ + return ( + { + console.log(value); + }} + enterButton + /> + ); + }} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={vehicles} + onChange={handleTableChange} + /> + ); +} diff --git a/client/src/components/vehicles-list/vehicles-list.container.jsx b/client/src/components/vehicles-list/vehicles-list.container.jsx new file mode 100644 index 000000000..97a982ed4 --- /dev/null +++ b/client/src/components/vehicles-list/vehicles-list.container.jsx @@ -0,0 +1,20 @@ +import React from "react"; +import VehiclesListComponent from "./vehicles-list.component"; +import { useQuery } from "react-apollo"; +import AlertComponent from "../alert/alert.component"; +import { QUERY_ALL_VEHICLES } from "../../graphql/vehicles.queries"; + +export default function VehiclesListContainer() { + const { loading, error, data, refetch } = useQuery(QUERY_ALL_VEHICLES, { + fetchPolicy: "network-only" + }); + + if (error) return ; + return ( + + ); +} diff --git a/client/src/components/vendors-form/vendors-form.component.jsx b/client/src/components/vendors-form/vendors-form.component.jsx new file mode 100644 index 000000000..bd076ac89 --- /dev/null +++ b/client/src/components/vendors-form/vendors-form.component.jsx @@ -0,0 +1,195 @@ +import { + Button, + Checkbox, + Col, + Form, + Icon, + Input, + InputNumber, + Row +} from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import FormItemEmail from "../form-items-formatted/email-form-item.component"; +import ResetForm from "../form-items-formatted/reset-form-item.component"; +let id = 0; + +export default function VendorsFormComponent({ form, vendor, handleDelete }) { + const { + getFieldDecorator, + isFieldsTouched, + getFieldValue, + resetFields + } = form; + + getFieldDecorator("keys", { + initialValue: Array.isArray(vendor.favorite) ? vendor.favorite : [] + }); + + const remove = k => { + // can use data-binding to get + const keys = form.getFieldValue("keys"); + console.log("keys", keys); + // We need at least one passenger + if (keys.length === 1) { + return; + } + // can use data-binding to set + form.setFieldsValue({ + keys: keys.filter(key => key !== k) + }); + }; + + const add = props => { + console.log("props", props); + // can use data-binding to get + const keys = form.getFieldValue("keys"); + console.log("keys", keys); + const nextKeys = keys.concat(id++); + // can use data-binding to set + // important! notify form to detect changes + form.setFieldsValue({ + keys: nextKeys + }); + }; + + const { t } = useTranslation(); + return ( +
+ {isFieldsTouched() ? : null} + + + + {getFieldValue("keys").map((k, index) => ( + + {getFieldDecorator(`favorite[${k}].make`, { + validateTrigger: ["onChange", "onBlur"] + })( + + )} + {getFieldValue("keys").length > 1 ? ( + remove(k)} + /> + ) : null} + + {getFieldDecorator(`favorite[${k}].type`, { + initialValue: null + })( + + +
+ OEM + + + LKQ + + + AM + + + + )} + + + ))} + + + + + + {getFieldDecorator("zip", { + initialValue: vendor.zip + })()} + + + {getFieldDecorator("terms", { + initialValue: vendor.terms + })()} + + + {getFieldDecorator("taxid", { + initialValue: vendor.taxid + })()} + + + {getFieldDecorator("street1", { + initialValue: vendor.street1 + })()} + + + {getFieldDecorator("street2", { + initialValue: vendor.street2 + })()} + + + {getFieldDecorator("state", { + initialValue: vendor.state + })()} + + + {getFieldDecorator("prompt_discount", { + initialValue: vendor.prompt_discount + })()} + + + {getFieldDecorator("name", { + initialValue: vendor.name + })()} + + + {getFieldDecorator("email", { + initialValue: vendor.email, + rules: [ + { + type: "email", + message: t("general.validation.invalidemail") + } + ] + })()} + + + {getFieldDecorator("due_date", { + initialValue: vendor.due_date + })()} + + + {getFieldDecorator("display_name", { + initialValue: vendor.display_name + })()} + + + {getFieldDecorator("discount", { + initialValue: vendor.discount + })()} + + + {getFieldDecorator("country", { + initialValue: vendor.country + })()} + + + {getFieldDecorator("cost_center", { + initialValue: vendor.cost_center, + rules: [{ required: true, message: t("general.validation.required") }] + })()} + + + {getFieldDecorator("city", { + initialValue: vendor.city + })()} + + + ); +} diff --git a/client/src/components/vendors-form/vendors-form.container.jsx b/client/src/components/vendors-form/vendors-form.container.jsx new file mode 100644 index 000000000..04a034dcc --- /dev/null +++ b/client/src/components/vendors-form/vendors-form.container.jsx @@ -0,0 +1,118 @@ +import { Form, notification } from "antd"; +import React from "react"; +import { useMutation, useQuery } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { + DELETE_VENDOR, + INSERT_NEW_VENDOR, + UPDATE_VENDOR, + QUERY_VENDOR_BY_ID +} from "../../graphql/vendors.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import VendorsFormComponent from "./vendors-form.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import AlertComponent from "../alert/alert.component"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +function VendorsFormContainer({ form, vendorId, refetch, bodyshop }) { + const { t } = useTranslation(); + const { loading, error, data } = useQuery(QUERY_VENDOR_BY_ID, { + variables: { id: vendorId }, + fetchPolicy: "network-only", + skip: !vendorId + }); + const [updateVendor] = useMutation(UPDATE_VENDOR); + const [insertvendor] = useMutation(INSERT_NEW_VENDOR); + const [deleteVendor] = useMutation(DELETE_VENDOR); + const handleDelete = () => { + deleteVendor({ variables: { id: vendorId } }) + .then(r => { + notification["success"]({ + message: t("vendors.successes.deleted") + }); + //TODO Better way to reset the field decorators? + if (refetch) refetch().then(r => form.resetFields()); + }) + .catch(error => { + notification["error"]({ + message: t("vendors.errors.deleting") + }); + }); + }; + + const handleSubmit = e => { + e.preventDefault(); + form.validateFieldsAndScroll((err, values) => { + if (err) { + notification["error"]({ + message: t("jobs.errors.validationtitle"), + description: t("jobs.errors.validation") + }); + } + if (!err) { + console.log("Received values of form: ", values); + delete values.keys; + if (vendorId) { + //It's a vendor to update. + updateVendor({ + variables: { id: vendorId, vendor: values } + }) + .then(r => { + notification["success"]({ + message: t("vendors.successes.saved") + }); + //TODO Better way to reset the field decorators? + if (refetch) refetch().then(r => form.resetFields()); + }) + .catch(error => { + notification["error"]({ + message: t("vendors.errors.saving") + }); + }); + } else { + //It's a new vendor to insert. + insertvendor({ + variables: { vendorInput: [{ ...values, bodyshopid: bodyshop.id }] } + }) + .then(r => { + notification["success"]({ + message: t("vendors.successes.saved") + }); + //TODO Better way to reset the field decorators? + if (refetch) refetch().then(r => form.resetFields()); + }) + .catch(error => { + notification["error"]({ + message: t("vendors.errors.saving") + }); + }); + } + } + }); + }; + + if (loading) return ; + if (error) return ; + return ( +
+ {data ? ( + + ) : ( + t("vendors.labels.noneselected") + )} + + ); +} +export default connect( + mapStateToProps, + null +)(Form.create({ name: "VendorsFormContainer" })(VendorsFormContainer)); diff --git a/client/src/components/vendors-list/vendors-list.component.jsx b/client/src/components/vendors-list/vendors-list.component.jsx new file mode 100644 index 000000000..6f3ef2452 --- /dev/null +++ b/client/src/components/vendors-list/vendors-list.component.jsx @@ -0,0 +1,102 @@ +import { Input, Table, Button } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { alphaSort } from "../../utils/sorters"; +export default function VendorsListComponent({ + selectedVendor, + setSelectedVendor, + handleNewVendor, + loading, + refetch, + handleOnRowClick, + vendors +}) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("vendors.fields.name"), + dataIndex: "name", + key: "name", + sorter: (a, b) => alphaSort(a.name, b.name), + sortOrder: state.sortedInfo.columnKey === "name" && state.sortedInfo.order + }, + { + title: t("vendors.fields.cost_center"), + dataIndex: "cost_center", + key: "cost_center", + sorter: (a, b) => alphaSort(a.cost_center, b.cost_center), + sortOrder: + state.sortedInfo.columnKey === "cost_center" && state.sortedInfo.order + }, + { + title: t("vendors.fields.street1"), + dataIndex: "street1", + key: "street1", + width: "10%", + sorter: (a, b) => alphaSort(a.street1, b.street1), + sortOrder: + state.sortedInfo.columnKey === "street1" && state.sortedInfo.order + }, + { + title: t("vendors.fields.city"), + dataIndex: "city", + key: "city" + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + //TODO Implement search + return ( +
+
{ + return ( +
+ {" "} + { + console.log(value); + }} + enterButton + /> + +
+ ); + }} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + onChange={handleTableChange} + dataSource={vendors} + rowSelection={{ + onSelect: record => { + setSelectedVendor(record); + }, + type: "radio", + selectedRowKeys: selectedVendor ? selectedVendor.id : null + }} + onRow={(record, rowIndex) => { + return { + onClick: event => { + handleOnRowClick(record); + } + }; + }} + /> + + ); +} diff --git a/client/src/components/vendors-list/vendors-list.container.jsx b/client/src/components/vendors-list/vendors-list.container.jsx new file mode 100644 index 000000000..c2a70bbee --- /dev/null +++ b/client/src/components/vendors-list/vendors-list.container.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import { useQuery } from "react-apollo"; +import AlertComponent from "../../components/alert/alert.component"; +import { QUERY_ALL_VENDORS } from "../../graphql/vendors.queries"; +import VendorsListComponent from "./vendors-list.component"; + +export default function VendorsListContainer({ selectedVendorState }) { + const [selectedVendor, setSelectedVendor] = selectedVendorState; + const { loading, error, data, refetch } = useQuery(QUERY_ALL_VENDORS, { + fetchPolicy: "network-only" + }); + + const handleNewVendor = () => { + setSelectedVendor({}); + }; + + const handleOnRowClick = record => { + if (record) { + setSelectedVendor(record); + return; + } + setSelectedVendor(null); + }; + + if (error) return ; + return ( + + ); +} diff --git a/client/src/components/white-board-card/white-board-card.component.jsx b/client/src/components/white-board-card/white-board-card.component.jsx deleted file mode 100644 index 393878f8f..000000000 --- a/client/src/components/white-board-card/white-board-card.component.jsx +++ /dev/null @@ -1,117 +0,0 @@ -import React from "react"; -import { Link } from "react-router-dom"; -import { Menu, Dropdown, Card, Icon, Avatar, Row, Col } from "antd"; -import { useTranslation } from "react-i18next"; -import styled from "styled-components"; -import Moment from "react-moment"; -import CarImage from "../../assets/car.svg"; - -//The following styled div is required because of a smooth-dnd style used by react-trello to prevent wrapping of columns. -const WrappedSpan = styled.span` - white-space: normal; -`; - -export default function WhiteBoardCard({ metadata }) { - // const { - // onClick, - // className, - // name, - // cardStyle, - // body, - // dueOn, - // cardColor, - // subTitle, - // tagStyle, - // escalationText, - // tags, - // showDeleteButton, - // onDelete - // } = this.props; - const { t } = useTranslation(); - - const menu = ( - - - - {t("jobs.actions.viewJobImages")} - - - - {t("jobs.actions.printCenter")} - - - - {t("jobs.actions.notes")} - - - - {t("jobs.actions.postInvoices")} - - - - {t("jobs.actions.receiveParts")} - - - - {t("jobs.actions.partStatus")} - - - ); - - - return ( -
- - - , - , - - - - ]}> - -
- - - - - - {metadata.vehicle?.v_model_yr || t("general.labels.na")}{" "} - {metadata.vehicle?.v_make_desc || t("general.labels.na")}{" "} - {metadata.vehicle?.v_model_desc || t("general.labels.na")} - - - {metadata.vehicle?.v_vin ? ( - - - VIN: {metadata.vehicle?.v_vin || t("general.labels.na")} - - - ) : null} - - - - - {t("general.labels.in")}: - {metadata.actual_in} - - - {t("general.labels.out")}: - {metadata.scheduled_completion} - - - - - ); -} diff --git a/client/src/components/white-board-kanban/white-board-kanban.component.jsx b/client/src/components/white-board-kanban/white-board-kanban.component.jsx deleted file mode 100644 index f249819e4..000000000 --- a/client/src/components/white-board-kanban/white-board-kanban.component.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -import Board from "react-trello"; -import WhiteBoardCard from "../white-board-card/white-board-card.component"; - -export default function WhiteBoardKanBan({ data, eventBus }) { - const setEventBus = handle => { - eventBus = handle; - }; - - return ( - - alert(`Card with id:${cardId} clicked. Has metadata.id: ${metadata.id}`) - } - /> - ); -} diff --git a/client/src/components/white-board-kanban/white-board-kanban.container.jsx b/client/src/components/white-board-kanban/white-board-kanban.container.jsx deleted file mode 100644 index ac444f7df..000000000 --- a/client/src/components/white-board-kanban/white-board-kanban.container.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from "react"; -import { useSubscription } from "@apollo/react-hooks"; -import { SUBSCRIPTION_JOBS_IN_PRODUCTION } from "../../graphql/jobs.queries"; -import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; -import Alert from "../../components/alert/alert.component"; -import WhiteBoardKanBan from "./white-board-kanban.component"; - -export default function WhiteBoardKanBanContainer() { - const { loading, error, data } = useSubscription( - SUBSCRIPTION_JOBS_IN_PRODUCTION, - { - fetchPolicy: "network-only" - } - ); - - if (loading) return ; - if (error) return ; - let eventBus; - - let i = data.job_status.reduce((acc, value) => { - //Create a lane object for each row. - let newLane = { - id: value.name, - title: value.name, - label: "0", - cards: value.jobs.reduce((acc, value) => { - acc.push({ - id: value.id, - title: value.ro_number, - description: value.est_number, - label: value.id, - metadata: value - }); - return acc; - }, []) - }; - acc.push(newLane); - return acc; - }, []); - - let laneData = { - lanes: i - }; - - return ; -} diff --git a/client/src/components/white-board-left-sider/white-board-left-sider.component.jsx b/client/src/components/white-board-left-sider/white-board-left-sider.component.jsx deleted file mode 100644 index a46ea91b8..000000000 --- a/client/src/components/white-board-left-sider/white-board-left-sider.component.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from "react"; -import { Menu, Icon } from "antd"; -export default function WhiteBoardLeftSiderComponent({visible}) { - return ( - - - - nav 1 - - - - nav 2 - - - - nav 3 - - - - nav 4 - - - ); -} diff --git a/client/src/components/white-board-left-sider/white-board-left-sider.container.jsx b/client/src/components/white-board-left-sider/white-board-left-sider.container.jsx deleted file mode 100644 index b23aad9b2..000000000 --- a/client/src/components/white-board-left-sider/white-board-left-sider.container.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; - -import WhiteBoardLeftSiderComponent from "./white-board-left-sider.component"; - -export default function WhiteBoardPageContainer() { - return ; -} diff --git a/client/src/components/with-inline-edit/with-inline-edit.component.jsx b/client/src/components/with-inline-edit/with-inline-edit.component.jsx deleted file mode 100644 index e995423ff..000000000 --- a/client/src/components/with-inline-edit/with-inline-edit.component.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useState } from "react"; - -export default WithInlineEdit = WrappedComponent => props => { - const [editing, setEditing] = useState(false); - const [modified, setModified] = useState(false); - const [originalValue, setOriginalValue] = useState(null); - - const toggleEdit = () => { - setEditing(!editing); - - if (editing) { - this.input.focus(); - } - }; - - return editing ? ( - - {form.getFieldDecorator(dataIndex, { - rules: [ - { - required: true, - message: `${title} is required.` - } - ], - initialValue: record[dataIndex] - })( - (this.input = node)} - onPressEnter={this.save} - onBlur={this.save} - /> - )} - - ) : ( -
- {children} -
- ); -}; - -export default WithInlineEdit; diff --git a/client/src/emails/components/grid/grid.component.jsx b/client/src/emails/components/grid/grid.component.jsx new file mode 100644 index 000000000..b21f70e54 --- /dev/null +++ b/client/src/emails/components/grid/grid.component.jsx @@ -0,0 +1,46 @@ +import React from "react"; + +function Column({ children }) { + return
; +} + +function Row({ children }) { + return ( + + {React.Children.map(children, el => { + if (el.type === Column) return el; + + return ; + })} + + ); +} + +function Grid({ children }) { + return ( +
{children}
{el}
+ + {React.Children.map(children, el => { + if (!el) return; + + if (el.type === Row) return el; + + if (el.type === Column) { + return {el}; + } + + return ( + + + + ); + })} + +
{el}
+ ); +} + +Grid.Row = Row; +Grid.Column = Column; + +export default Grid; diff --git a/client/src/emails/components/header/header.component.jsx b/client/src/emails/components/header/header.component.jsx new file mode 100644 index 000000000..8136aba6b --- /dev/null +++ b/client/src/emails/components/header/header.component.jsx @@ -0,0 +1,23 @@ +import React from "react"; + +export default function Header({ bodyshop }) { + return ( + + + + + +
+ + +
+ {`${bodyshop.shopname}`} +
+
{`${bodyshop.address1} ${bodyshop.address2} ${bodyshop.city} ${bodyshop.state} ${bodyshop.zip_post}`}
+
+ {bodyshop.email}{" "} + {` | ${bodyshop.ph1}`} +
+
+ ); +} diff --git a/client/src/emails/parts-order/parts-order.email.jsx b/client/src/emails/parts-order/parts-order.email.jsx new file mode 100644 index 000000000..91c5b5e91 --- /dev/null +++ b/client/src/emails/parts-order/parts-order.email.jsx @@ -0,0 +1,53 @@ +import React from "react"; +import styled from "styled-components"; +import Header from "../components/header/header.component"; + +const D = styled.div` + table { + font-family: arial, sans-serif; + border-collapse: collapse; + width: 100%; + } + + td, + th { + border: 1px solid #dddddd; + text-align: left; + padding: 8px; + } + + tr:nth-child(even) { + background-color: #dddddd; + } +`; + +export default function PartsOrderEmail({ data }) { + const order = data.parts_orders_by_pk; + return ( + +
+ + + + + +
{`Deliver By: ${order.deliver_by}`}{`Ordered By: ${order.user_email}`}
+ + + + + + + + {order.parts_order_lines.map(item => ( + + + + + + + ))} +
Line DescriptionPart #PriceLine Remarks
{item.line_desc}{item.oem_partno}{item.act_price}{item.line_remarks}
+ + ); +} diff --git a/client/src/emails/parts-order/parts-order.query.js b/client/src/emails/parts-order/parts-order.query.js new file mode 100644 index 000000000..77ca87c13 --- /dev/null +++ b/client/src/emails/parts-order/parts-order.query.js @@ -0,0 +1,45 @@ +import { gql } from "apollo-boost"; + +export const REPORT_QUERY_PARTS_ORDER_BY_PK = gql` + query REPORT_QUERY_PARTS_ORDER_BY_PK($id: uuid!) { + parts_orders_by_pk(id: $id) { + job { + id + vehicle { + id + v_model_desc + v_make_desc + v_model_yr + v_vin + } + ro_number + est_number + } + id + deliver_by + parts_order_lines { + id + db_price + act_price + line_desc + line_remarks + oem_partno + status + } + status + user_email + } + bodyshops(where: { associations: { active: { _eq: true } } }) { + id + address1 + address2 + city + email + federal_tax_id + state + shopname + zip_post + logo_img_path + } + } +`; diff --git a/client/src/firebase/firebase.utils.js b/client/src/firebase/firebase.utils.js index 4a2a8fae7..5d2d7eafe 100644 --- a/client/src/firebase/firebase.utils.js +++ b/client/src/firebase/firebase.utils.js @@ -34,10 +34,31 @@ export const createUserProfileDocument = async (userAuth, additionalData) => { }; export const auth = firebase.auth(); + export const firestore = firebase.firestore(); const provider = new firebase.auth.GoogleAuthProvider(); provider.setCustomParameters({ prompt: "select_account" }); -export const signInWithGoogle = () => auth.signInWithPopup(provider); export default firebase; + +export const getCurrentUser = () => { + return new Promise((resolve, reject) => { + const unsubscribe = auth.onAuthStateChanged(userAuth => { + unsubscribe(); + resolve(userAuth); + }, reject); + }); +}; + +export const updateCurrentUser = userDetails => { + return new Promise((resolve, reject) => { + const unsubscribe = auth.onAuthStateChanged(userAuth => { + console.log("userDetails", userDetails); + userAuth.updateProfile(userDetails).then(r => { + unsubscribe(); + resolve(userAuth); + }); + }, reject); + }); +}; diff --git a/client/src/graphql/allocations.queries.js b/client/src/graphql/allocations.queries.js new file mode 100644 index 000000000..5c4d8e169 --- /dev/null +++ b/client/src/graphql/allocations.queries.js @@ -0,0 +1,21 @@ +import { gql } from "apollo-boost"; + +export const INSERT_ALLOCATION = gql` + mutation INSERT_ALLOCATION($alloc: [allocations_insert_input!]!) { + insert_allocations(objects: $alloc) { + returning { + id + } + } + } +`; + +export const DELETE_ALLOCATION = gql` + mutation DELETE_ALLOCATION($id: uuid!) { + delete_allocations(where: { id: { _eq: $id } }) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/apollo-error-handling.js b/client/src/graphql/apollo-error-handling.js index c38c13d78..d6fdb1b7d 100644 --- a/client/src/graphql/apollo-error-handling.js +++ b/client/src/graphql/apollo-error-handling.js @@ -1,54 +1,60 @@ import { onError } from "apollo-link-error"; -import { Observable } from "apollo-link"; import { auth } from "../firebase/firebase.utils"; //https://stackoverflow.com/questions/57163454/refreshing-a-token-with-apollo-client-firebase-auth const errorLink = onError( ({ graphQLErrors, networkError, operation, forward }) => { - // console.log("graphQLErrors", graphQLErrors); - // console.log("networkError", networkError); - // console.log("operation", operation); - // console.log("forward", forward); + if (graphQLErrors) + graphQLErrors.forEach(({ message, locations, path }) => + console.log( + `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}` + ) + ); + if (networkError) console.log(`[Network error]: ${networkError}`); let expired = false; - if (graphQLErrors) { if (graphQLErrors[0].message.includes("JWTExpired")) { expired = true; } } if (networkError) { - if (networkError?.message.includes("JWTExpired")) { + if (networkError.message.includes("JWTExpired")) { expired = true; } } if (expired) { //User access token has expired - //props.history.push("/network-error"); - console.log("We need a new token!"); + console.log("Old Token", window.localStorage.getItem("token")); // Let's refresh token through async request auth.currentUser.getIdToken(true).then(token => { if (token) { console.log("Got the new token.", token); window.localStorage.setItem("token", token); - operation.setContext(({ headers = {} }) => ({ + + const oldHeaders = operation.getContext().headers; + operation.setContext({ headers: { - ...headers, + ...oldHeaders, authorization: token ? `Bearer ${token}` : "" } - })); - - return new Observable(observer => { - const subscriber = { - next: observer.next.bind(observer), - error: observer.error.bind(observer), - complete: observer.complete.bind(observer) - }; - console.log("About to resend the request."); - // Retry last failed request - forward(operation).subscribe(subscriber); }); + console.log(operation.getContext()); + // console.log("forward", forward); + // console.log("operation", operation); + return forward(operation); + + // return new Observable(observer => { + // const subscriber = { + // next: observer.next.bind(observer), + // error: observer.error.bind(observer), + // complete: observer.complete.bind(observer) + // }; + // console.log("About to resend the request."); + // // Retry last failed request + // forward(operation).subscribe(subscriber); + // }); } }); diff --git a/client/src/graphql/appointments.queries.js b/client/src/graphql/appointments.queries.js new file mode 100644 index 000000000..8a3fe571a --- /dev/null +++ b/client/src/graphql/appointments.queries.js @@ -0,0 +1,96 @@ +import { gql } from "apollo-boost"; + +export const QUERY_ALL_ACTIVE_APPOINTMENTS = gql` + query QUERY_ALL_ACTIVE_APPOINTMENTS { + appointments(where: { canceled: { _eq: false } }) { + start + id + end + title + isintake + job { + ro_number + ownr_ln + ownr_fn + ownr_ph1 + ownr_ea + clm_total + id + clm_no + vehicle { + id + v_model_yr + v_make_desc + v_model_desc + } + } + } + } +`; + +export const INSERT_APPOINTMENT = gql` + mutation INSERT_APPOINTMENT($app: [appointments_insert_input!]!) { + insert_appointments(objects: $app) { + returning { + id + } + } + } +`; + +export const QUERY_APPOINTMENT_BY_DATE = gql` + query QUERY_APPOINTMENT_BY_DATE($start: timestamptz, $end: timestamptz) { + appointments( + where: { start: { _lte: $end, _gte: $start }, canceled: { _eq: false } } + ) { + start + id + end + title + isintake + job { + ro_number + ownr_ln + ownr_fn + ownr_ph1 + ownr_ea + clm_total + id + clm_no + vehicle { + id + v_model_yr + v_make_desc + v_model_desc + } + } + } + } +`; + +export const CANCEL_APPOINTMENT_BY_ID = gql` + mutation CANCEL_APPOINTMENT_BY_ID($appid: uuid!) { + update_appointments( + where: { id: { _eq: $appid } } + _set: { canceled: true } + ) { + returning { + id + } + } + } +`; + +export const QUERY_APPOINTMENTS_BY_JOBID = gql` + query QUERY_APPOINTMENTS_BY_JOBID($jobid: uuid!) { + appointments(where: { jobid: { _eq: $jobid } }) { + start + id + end + isintake + arrived + canceled + created_at + } + } +`; diff --git a/client/src/graphql/associations.queries.js b/client/src/graphql/associations.queries.js new file mode 100644 index 000000000..b043e3c8a --- /dev/null +++ b/client/src/graphql/associations.queries.js @@ -0,0 +1,27 @@ +import { gql } from "apollo-boost"; + +export const QUERY_ALL_ASSOCIATIONS = gql` + query QUERY_ALL_ASSOCIATIONS { + associations { + id + active + bodyshop { + shopname + } + } + } +`; + +export const UPDATE_ASSOCIATION = gql` + mutation UPDATE_ASSOCIATION($assocId: uuid, $assocActive: Boolean) { + update_associations( + where: { id: { _eq: $assocId } } + _set: { active: $assocActive } + ) { + returning { + id + active + } + } + } +`; diff --git a/client/src/graphql/available-jobs.queries.js b/client/src/graphql/available-jobs.queries.js index cd23481fd..a35c45bce 100644 --- a/client/src/graphql/available-jobs.queries.js +++ b/client/src/graphql/available-jobs.queries.js @@ -75,6 +75,7 @@ export const QUERY_AVAILABLE_NEW_JOBS_EST_DATA_BY_PK = gql` query QUERY_AVAILABLE_NEW_JOBS_EST_DATA_BY_PK($id: uuid!) { available_jobs_by_pk(id: $id) { id + issupplement est_data } } diff --git a/client/src/graphql/bodyshop.queries.js b/client/src/graphql/bodyshop.queries.js index febac0b2f..8be8e0c19 100644 --- a/client/src/graphql/bodyshop.queries.js +++ b/client/src/graphql/bodyshop.queries.js @@ -14,11 +14,20 @@ export const QUERY_BODYSHOP = gql` insurance_vendor_id logo_img_path md_ro_statuses + md_order_statuses shopname state state_tax_id updated_at zip_post + region_config + employees { + id + first_name + last_name + employee_number + cost_center + } } } `; diff --git a/client/src/graphql/employees.queries.jsx b/client/src/graphql/employees.queries.jsx new file mode 100644 index 000000000..1fb7ed1d9 --- /dev/null +++ b/client/src/graphql/employees.queries.jsx @@ -0,0 +1,48 @@ +import { gql } from "apollo-boost"; + +export const QUERY_EMPLOYEES = gql` + query QUERY_EMPLOYEES { + employees { + last_name + id + first_name + employee_number + active + termination_date + hire_date + flat_rate + cost_center + base_rate + } + } +`; + +export const INSERT_EMPLOYEES = gql` + mutation INSERT_EMPLOYEES($employees: [employees_insert_input!]!) { + insert_employees(objects: $employees) { + returning { + id + } + } + } +`; + +export const UPDATE_EMPLOYEE = gql` + mutation UPDATE_EMPLOYEE($id: uuid!, $employee: employees_set_input) { + update_employees(where: { id: { _eq: $id } }, _set: $employee) { + returning { + id + } + } + } +`; + +export const DELETE_EMPLOYEE = gql` + mutation DELETE_EMPLOYEE($id: uuid!) { + delete_employees(where: { id: { _eq: $id } }) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/jobs-lines.queries.js b/client/src/graphql/jobs-lines.queries.js index 4203fdf06..197e4f6e6 100644 --- a/client/src/graphql/jobs-lines.queries.js +++ b/client/src/graphql/jobs-lines.queries.js @@ -2,10 +2,72 @@ import { gql } from "apollo-boost"; export const GET_JOB_LINES_BY_PK = gql` query GET_JOB_LINES_BY_PK($id: uuid!) { - joblines(where: { jobid: { _eq: $id } }) { + joblines(where: { jobid: { _eq: $id } }, order_by: { unq_seq: asc }) { id + unq_seq line_ind line_desc + part_type + oem_partno + db_price + act_price + part_qty + mod_lbr_ty + db_hrs + mod_lb_hrs + lbr_op + lbr_amt + op_code_desc + status + parts_order_lines { + id + parts_order { + id + order_number + order_date + user_email + vendor { + id + name + } + } + } + allocations { + id + hours + employee { + id + first_name + last_name + } + } + } + } +`; + +export const UPDATE_JOB_LINE_STATUS = gql` + mutation UPDATE_JOB_LINE_STATUS($ids: [uuid!]!, $status: String!) { + update_joblines(where: { id: { _in: $ids } }, _set: { status: $status }) { + affected_rows + } + } +`; +export const INSERT_NEW_JOB_LINE = gql` + mutation INSERT_NEW_JOB_LINE($lineInput: [joblines_insert_input!]!) { + insert_joblines(objects: $lineInput) { + returning { + id + } + } + } +`; + +export const UPDATE_JOB_LINE = gql` + mutation UPDATE_JOB_LINE($lineId: uuid!, $line: joblines_set_input!) { + update_joblines(where: { id: { _eq: $lineId } }, _set: $line) { + returning { + id + } } } `; diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index f90290794..ba32b39ab 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -1,8 +1,8 @@ import { gql } from "apollo-boost"; -export const QUERY_ALL_OPEN_JOBS = gql` - query QUERY_ALL_OPEN_JOBS { - jobs { +export const QUERY_ALL_ACTIVE_JOBS = gql` + query QUERY_ALL_ACTIVE_JOBS($statuses: [String!]!) { + jobs(where: { status: { _in: $statuses } }) { ownr_fn ownr_ln ownr_ph1 @@ -42,12 +42,8 @@ export const QUERY_ALL_OPEN_JOBS = gql` scheduled_completion scheduled_in scheduled_delivery - job_status { - id - name - } + status updated_at - claim_total ded_amt vehicle { id @@ -111,6 +107,7 @@ export const GET_JOB_BY_PK = gql` converted est_number ro_number + clm_total vehicle { id plate_no @@ -123,6 +120,7 @@ export const GET_JOB_BY_PK = gql` ins_co_id policy_no loss_date + clm_no area_of_damage ins_co_nm ins_addr1 @@ -154,13 +152,49 @@ export const GET_JOB_BY_PK = gql` adjustment_bottom_line ownr_fn ownr_ln - owner{ + owner { id ownr_fn ownr_ln } - - joblines{ + labor_rate_desc + rate_lab + rate_lad + rate_lae + rate_lar + rate_las + rate_laf + rate_lam + rate_lag + rate_atp + rate_lau + rate_la1 + rate_la2 + rate_la3 + rate_la4 + rate_mapa + rate_mash + rate_mahw + rate_ma2s + rate_ma3s + rate_mabl + rate_macs + rate_laa + rate_matd + actual_in + scheduled_completion + scheduled_in + actual_completion + scheduled_delivery + actual_delivery + date_estimated + date_open + date_scheduled + date_invoiced + date_closed + date_exported + status + joblines { id unq_seq line_ind @@ -175,6 +209,12 @@ export const GET_JOB_BY_PK = gql` mod_lb_hrs lbr_op lbr_amt + op_code_desc + } + appointments_aggregate { + aggregate { + count + } } } } @@ -216,6 +256,8 @@ export const QUERY_JOB_CARD_DETAILS = gql` est_ct_fn est_ct_ln clm_no + status + area_of_damage ro_number scheduled_completion scheduled_in @@ -227,12 +269,9 @@ export const QUERY_JOB_CARD_DETAILS = gql` private created_at } - job_status { - id - name - } + updated_at - claim_total + clm_total ded_amt documents(limit: 3, order_by: { created_at: desc }) { id @@ -284,3 +323,13 @@ export const INSERT_NEW_JOB = gql` } } `; + +export const UPDATE_JOB_STATUS = gql` + mutation UPDATE_JOB_STATUS($jobId: uuid!, $status: String!) { + update_jobs(where: { id: { _eq: $jobId } }, _set: { status: $status }) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/local.queries.js b/client/src/graphql/local.queries.js deleted file mode 100644 index 7611dfd32..000000000 --- a/client/src/graphql/local.queries.js +++ /dev/null @@ -1,25 +0,0 @@ -import { gql } from "apollo-boost"; - -export const GET_CURRENT_USER = gql` - query GET_CURRENT_USER { - currentUser @client { - email - displayName - token - uid - photoUrl - } - } -`; - -export const GET_CURRENT_SELECTED_NAV_ITEM = gql` - query GET_CURRENT_SELECTED_NAV_ITEM { - selectedNavItem @client - } -`; - -export const GET_LANGUAGE = gql` - query GET_USER_LANGUAGE { - language @client - } -`; diff --git a/client/src/graphql/owners.queries.js b/client/src/graphql/owners.queries.js index 0945e48b0..b236ebd44 100644 --- a/client/src/graphql/owners.queries.js +++ b/client/src/graphql/owners.queries.js @@ -2,7 +2,7 @@ import { gql } from "apollo-boost"; export const QUERY_SEARCH_OWNER_BY_IDX = gql` query QUERY_SEARCH_OWNER_BY_IDX($search: String!) { - search_owners(args: { search: $search }) { + search_owner(args: { search: $search }) { ownr_fn ownr_ln ownr_ph1 @@ -18,3 +18,75 @@ export const QUERY_SEARCH_OWNER_BY_IDX = gql` } } `; + +export const QUERY_OWNER_BY_ID = gql` + query QUERY_OWNER_BY_ID($id: uuid!) { + owners_by_pk(id: $id) { + id + allow_text_message + ownr_addr1 + ownr_addr2 + ownr_co_nm + ownr_city + ownr_ctry + ownr_ea + ownr_fn + ownr_ph1 + ownr_ln + ownr_ph2 + ownr_st + ownr_title + ownr_zip + preferred_contact + jobs { + id + ro_number + est_number + clm_no + status + clm_total + vehicle { + id + v_model_yr + v_model_desc + v_make_desc + } + } + } + } +`; + +export const UPDATE_OWNER = gql` + mutation UPDATE_OWNER($ownerId: uuid!, $owner: owners_set_input!) { + update_owners(where: { id: { _eq: $ownerId } }, _set: $owner) { + returning { + id + } + } + } +`; + +export const QUERY_ALL_OWNERS = gql` + query QUERY_ALL_OWNERS { + owners { + id + allow_text_message + created_at + ownr_addr1 + ownr_addr2 + ownr_co_nm + ownr_city + ownr_ctry + ownr_ea + ownr_fn + ownr_ph1 + ownr_ln + ownr_ph2 + ownr_st + ownr_title + ownr_zip + preferred_contact + updated_at + } + } +`; diff --git a/client/src/graphql/parts-orders.queries.js b/client/src/graphql/parts-orders.queries.js new file mode 100644 index 000000000..b2124383c --- /dev/null +++ b/client/src/graphql/parts-orders.queries.js @@ -0,0 +1,11 @@ +import { gql } from "apollo-boost"; + +export const INSERT_NEW_PARTS_ORDERS = gql` + mutation INSERT_NEW_PARTS_ORDERS($po: [parts_orders_insert_input!]!) { + insert_parts_orders(objects: $po) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/resolvers.js b/client/src/graphql/resolvers.js deleted file mode 100644 index b293bfd8b..000000000 --- a/client/src/graphql/resolvers.js +++ /dev/null @@ -1,31 +0,0 @@ -import { gql } from "apollo-boost"; -import { GET_CURRENT_USER } from "./local.queries"; - -export const typeDefs = gql` - extend type Mutation { - SetCurrentUser(user: User!): User! - } - - extend type User { - email: String! - displayName: String! - token: String! - } - - extend type Jobs { - id: uuid! - } -`; - -export const resolvers = { - Mutation: { - setCurrentUser: (_root, { user }, { cache }) => { - cache.writeQuery({ - query: GET_CURRENT_USER, - data: { currentUser: user } - }); - - return user; - } - } -}; diff --git a/client/src/graphql/vehicles.queries.js b/client/src/graphql/vehicles.queries.js new file mode 100644 index 000000000..5efbad1c9 --- /dev/null +++ b/client/src/graphql/vehicles.queries.js @@ -0,0 +1,72 @@ +import { gql } from "apollo-boost"; + +export const QUERY_VEHICLE_BY_ID = gql` + query QUERY_VEHICLE_BY_ID($id: uuid!) { + vehicles_by_pk(id: $id) { + created_at + db_v_code + id + plate_no + plate_st + v_vin + v_type + v_trimcode + v_tone + v_stage + v_prod_dt + v_paint_codes + v_options + v_model_yr + v_model_desc + v_mldgcode + v_makecode + v_make_desc + v_engine + v_cond + v_color + v_bstyle + updated_at + trim_color + jobs { + id + ro_number + ownr_fn + est_number + ownr_ln + owner { + id + } + clm_no + status + clm_total + } + } + } +`; + +export const UPDATE_VEHICLE = gql` + mutation UPDATE_VEHICLE($vehId: uuid!, $vehicle: vehicles_set_input!) { + update_vehicles(where: { id: { _eq: $vehId } }, _set: $vehicle) { + returning { + id + } + } + } +`; + +export const QUERY_ALL_VEHICLES = gql` + query QUERY_ALL_VEHICLES { + vehicles { + id + plate_no + plate_st + v_vin + v_model_yr + v_model_desc + v_make_desc + v_color + v_bstyle + updated_at + } + } +`; diff --git a/client/src/graphql/vendors.queries.js b/client/src/graphql/vendors.queries.js new file mode 100644 index 000000000..4cf45ebd6 --- /dev/null +++ b/client/src/graphql/vendors.queries.js @@ -0,0 +1,78 @@ +import { gql } from "apollo-boost"; + +export const QUERY_VENDOR_BY_ID = gql` + query QUERY_VENDOR_BY_ID($id: uuid!) { + vendors_by_pk(id: $id) { + zip + terms + taxid + street2 + state + prompt_discount + name + id + favorite + email + due_date + display_name + discount + country + cost_center + city + street1 + } + } +`; + +export const UPDATE_VENDOR = gql` + mutation UPDATE_VENDOR($id: uuid!, $vendor: vendors_set_input!) { + update_vendors(where: { id: { _eq: $id } }, _set: $vendor) { + returning { + id + } + } + } +`; + +export const QUERY_ALL_VENDORS = gql` + query QUERY_ALL_VENDORS { + vendors { + name + id + street1 + cost_center + city + } + } +`; + +export const INSERT_NEW_VENDOR = gql` + mutation INSERT_NEW_VENDOR($vendorInput: [vendors_insert_input!]!) { + insert_vendors(objects: $vendorInput) { + returning { + id + } + } + } +`; + +export const DELETE_VENDOR = gql` + mutation DELETE_VENDOR($id: uuid!) { + delete_vendors(where: { id: { _eq: $id } }) { + returning { + id + } + } + } +`; + +export const QUERY_ALL_VENDORS_FOR_ORDER = gql` + query QUERY_ALL_VENDORS_FOR_ORDER { + vendors(order_by: { favorite: desc }) { + name + cost_center + id + favorite + } + } +`; diff --git a/client/src/index.js b/client/src/index.js index b29d04ea2..8cb47c9a0 100644 --- a/client/src/index.js +++ b/client/src/index.js @@ -3,16 +3,26 @@ import ReactDOM from "react-dom"; import { BrowserRouter } from "react-router-dom"; import "./translations/i18n"; import * as serviceWorker from "./serviceWorker"; - -import "./index.css"; +import { Provider } from "react-redux"; +import { PersistGate } from "redux-persist/integration/react"; +import { store, persistor } from "./redux/store"; import AppContainer from "./App/App.container"; +import "./index.css"; +import LoadingSpinner from "./components/loading-spinner/loading-spinner.component"; require("dotenv").config(); ReactDOM.render( - - - , + + + } + persistor={persistor} + > + + + + , document.getElementById("root") ); diff --git a/client/src/logo.svg b/client/src/logo.svg deleted file mode 100644 index 2e5df0d3a..000000000 --- a/client/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/src/pages/jobs-available/jobs-available.page.component.jsx b/client/src/pages/jobs-available/jobs-available.page.component.jsx index b239bd1d3..79fcd8c1b 100644 --- a/client/src/pages/jobs-available/jobs-available.page.component.jsx +++ b/client/src/pages/jobs-available/jobs-available.page.component.jsx @@ -13,7 +13,7 @@ export default function JobsAvailablePageComponent({ deleteJob={deleteJob} estDataLazyLoad={estDataLazyLoad} /> - Available Supplements (//TODO: LOGIC HAS NOT YET BEEN COPIED FROM OTHER COMPONENT) + Available Supplements (//TODO LOGIC HAS NOT YET BEEN COPIED FROM OTHER COMPONENT) { + document.title = t("titles.jobsavailable"); + }, [t]); + return (
+ import("../../components/job-detail-lines/job-lines.container") +); +const JobsDetailClaims = lazy(() => + import("../../components/jobs-detail-claims/jobs-detail-claims.component") +); +const JobsDetailDatesComponent = lazy(() => + import("../../components/jobs-detail-dates/jobs-detail-dates.component") +); +const JobsDetailFinancials = lazy(() => + import( + "../../components/jobs-detail-financial/jobs-detail-financial.component" + ) +); +const JobsDetailHeader = lazy(() => + import("../../components/jobs-detail-header/jobs-detail-header.component") +); +const JobsDetailInsurance = lazy(() => + import( + "../../components/jobs-detail-insurance/jobs-detail-insurance.component" + ) +); +const JobsDocumentsContainer = lazy(() => + import("../../components/jobs-documents/jobs-documents.container") +); +const JobNotesContainer = lazy(() => + import("../../components/jobs-notes/jobs-notes.container") +); +const ScheduleJobModalContainer = lazy(() => + import("../../components/schedule-job-modal/schedule-job-modal.container") +); +const JobLineUpsertModalContainer = lazy(() => + import( + "../../components/job-lines-upsert-modal/job-lines-upsert-modal.container" + ) +); +const EnterInvoiceModalContainer = lazy(() => + import("../../components/invoice-enter-modal/invoice-enter-modal.container") +); export default function JobsDetailPage({ job, mutationUpdateJob, mutationConvertJob, handleSubmit, - refetch + refetch, + scheduleModalState, + updateJobStatus }) { const { t } = useTranslation(); @@ -39,135 +88,139 @@ export default function JobsDetailPage({ }; return ( -
- } + > + - {isFieldsTouched() ? ( - - {t("general.messages.unsavedchanges")} - -
- } - closable + + + + + - ) : null} - - - - {t("menus.jobsdetail.claimdetail")} - - } - key="claimdetail" - > - - + {isFieldsTouched() ? : null} - - - {t("menus.jobsdetail.insurance")} - - } - key="insurance" - > - - + + + + {t("menus.jobsdetail.claimdetail")} + + } + key="claimdetail" + > + + - - - {t("menus.jobsdetail.repairdata")} - - } - key="repairdata" - > - - + + + {t("menus.jobsdetail.insurance")} + + } + key="insurance" + > + + - - - {t("menus.jobsdetail.financials")} - - } - key="financials" - > - - + + + {t("menus.jobsdetail.repairdata")} + + } + key="repairdata" + > + + - - - {t("menus.jobsdetail.partssublet")} - - } - key="partssublet" - > - Partssublet - + + + {t("menus.jobsdetail.financials")} + + } + key="financials" + > + + - - - {t("menus.jobsdetail.labor")} - - } - key="labor" - > - Labor - + + + {t("menus.jobsdetail.partssublet")} + + } + key="partssublet" + > + + - - - {t("menus.jobsdetail.dates")} - - } - key="dates" - > - Dates - + + + {t("menus.jobsdetail.labor")} + + } + key="labor" + > + Labor + - - - {t("jobs.labels.documents")} - - } - key="#documents" - > - - - - - {t("jobs.labels.notes")} - - } - key="#notes" - > - - - - + + + {t("menus.jobsdetail.dates")} + + } + key="dates" + > + } + + + + + {t("jobs.labels.documents")} + + } + key="documents" + > + + + + + {t("jobs.labels.notes")} + + } + key="notes" + > + + + + + ); } diff --git a/client/src/pages/jobs-detail/jobs-detail.page.container.jsx b/client/src/pages/jobs-detail/jobs-detail.page.container.jsx index e0c49840b..b564728a0 100644 --- a/client/src/pages/jobs-detail/jobs-detail.page.container.jsx +++ b/client/src/pages/jobs-detail/jobs-detail.page.container.jsx @@ -1,10 +1,15 @@ import { Form, notification } from "antd"; -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import { useMutation, useQuery } from "react-apollo"; import { useTranslation } from "react-i18next"; import AlertComponent from "../../components/alert/alert.component"; import SpinComponent from "../../components/loading-spinner/loading-spinner.component"; -import { CONVERT_JOB_TO_RO, GET_JOB_BY_PK, UPDATE_JOB } from "../../graphql/jobs.queries"; +import { + CONVERT_JOB_TO_RO, + GET_JOB_BY_PK, + UPDATE_JOB, + UPDATE_JOB_STATUS +} from "../../graphql/jobs.queries"; import JobsDetailPage from "./jobs-detail.page.component"; import JobDetailFormContext from "./jobs-detail.page.context"; @@ -12,20 +17,38 @@ function JobsDetailPageContainer({ match, form }) { const { jobId } = match.params; const { t } = useTranslation(); + const scheduleModalState = useState(false); + const { loading, error, data, refetch } = useQuery(GET_JOB_BY_PK, { variables: { id: jobId }, fetchPolicy: "network-only" }); const [mutationUpdateJob] = useMutation(UPDATE_JOB); const [mutationConvertJob] = useMutation(CONVERT_JOB_TO_RO); + const [mutationUpdateJobstatus] = useMutation(UPDATE_JOB_STATUS); + + const updateJobStatus = status => { + mutationUpdateJobstatus({ + variables: { jobId: jobId, status: status } + }) + .then(r => { + notification["success"]({ message: t("jobs.successes.save") }); + refetch(); + }) + .catch(error => { + notification[error]({ message: t("jobs.errors.saving") }); + }); + }; useEffect(() => { document.title = loading - ? "..." + ? t("titles.app") : error ? t("titles.app") : t("titles.jobsdetail", { - ro_number: data.jobs_by_pk.ro_number + ro_number: data.jobs_by_pk.converted + ? data.jobs_by_pk.ro_number + : `EST ${data.jobs_by_pk.est_number}` }); }, [loading, data, t, error]); @@ -46,7 +69,6 @@ function JobsDetailPageContainer({ match, form }) { notification["success"]({ message: t("jobs.successes.savetitle") }); - //TODO: Better way to reset the field decorators? refetch().then(r => form.resetFields()); }); } @@ -65,6 +87,8 @@ function JobsDetailPageContainer({ match, form }) { handleSubmit={handleSubmit} getFieldDecorator={form.getFieldDecorator} refetch={refetch} + scheduleModalState={scheduleModalState} + updateJobStatus={updateJobStatus} /> ) : ( diff --git a/client/src/pages/jobs/jobs.page.jsx b/client/src/pages/jobs/jobs.page.jsx index 13c2e116c..41b9cfa15 100644 --- a/client/src/pages/jobs/jobs.page.jsx +++ b/client/src/pages/jobs/jobs.page.jsx @@ -1,16 +1,28 @@ -import React, { useEffect, useState } from "react"; import { useQuery } from "@apollo/react-hooks"; -import AlertComponent from "../../components/alert/alert.component"; -import { Col } from "antd"; -import { QUERY_ALL_OPEN_JOBS } from "../../graphql/jobs.queries"; +import React, { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import JobsList from "../../components/jobs-list/jobs-list.component"; +import AlertComponent from "../../components/alert/alert.component"; import JobDetailCards from "../../components/job-detail-cards/job-detail-cards.component"; +import JobsList from "../../components/jobs-list/jobs-list.component"; +import { QUERY_ALL_ACTIVE_JOBS } from "../../graphql/jobs.queries"; -//TODO: Implement pagination for this. -export default function JobsPage({ match, location }) { - const { loading, error, data } = useQuery(QUERY_ALL_OPEN_JOBS, { - fetchPolicy: "network-only" +import { selectBodyshop } from "../../redux/user/user.selectors"; + +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export default connect( + mapStateToProps, + null +)(function JobsPage({ match, location, bodyshop }) { + const { loading, error, data, refetch } = useQuery(QUERY_ALL_ACTIVE_JOBS, { + fetchPolicy: "network-only", + variables: { + statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"] + } }); const { t } = useTranslation(); @@ -20,17 +32,51 @@ export default function JobsPage({ match, location }) { const { hash } = location; const [selectedJob, setSelectedJob] = useState(hash ? hash.substr(1) : null); + const searchTextState = useState(""); + const searchText = searchTextState[0]; + if (error) return ; - if (error) return ; return ( - +
+ (j.ro_number || "") + .toString() + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.ownr_fn || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.ownr_ln || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.clm_no || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.vehicle.plate_no || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.vehicle.v_model_desc || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.vehicle.v_make_desc || "") + .toLowerCase() + .includes(searchText.toLowerCase()) + ) + : null + } /> - +
); -} +}); diff --git a/client/src/pages/landing/landing.page.jsx b/client/src/pages/landing/landing.page.jsx index b9363db1a..c565e4f58 100644 --- a/client/src/pages/landing/landing.page.jsx +++ b/client/src/pages/landing/landing.page.jsx @@ -1,13 +1,19 @@ import React from "react"; -import { Typography } from "antd"; +import { Typography, Layout } from "antd"; import HeaderContainer from "../../components/header/header.container"; export default function LandingPage() { + const { Header, Content } = Layout; return ( -
- - Welcome to bodyshop.app. -
+ +
+ +
+ + + Welcome to bodyshop.app. + +
); } diff --git a/client/src/pages/manage-root/manage-root.page.component.jsx b/client/src/pages/manage-root/manage-root.page.component.jsx new file mode 100644 index 000000000..164ca51dd --- /dev/null +++ b/client/src/pages/manage-root/manage-root.page.component.jsx @@ -0,0 +1,28 @@ +import React from "react"; + +export default function ManageRootPageComponent() { + //const client = useApolloClient(); + return ( +
+ { + // + // Send an Email in new Window + // + } +
+ ); +} diff --git a/client/src/pages/manage-root/manage-root.page.container.jsx b/client/src/pages/manage-root/manage-root.page.container.jsx new file mode 100644 index 000000000..ffab7ffd0 --- /dev/null +++ b/client/src/pages/manage-root/manage-root.page.container.jsx @@ -0,0 +1,11 @@ +import React, { useEffect } from "react"; +import ManageRootPageComponent from "./manage-root.page.component"; +import { useTranslation } from "react-i18next"; +export default function ManageRootPageContainer() { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.manageroot"); + }, [t]); + + return ; +} diff --git a/client/src/pages/manage/manage.page.container.jsx b/client/src/pages/manage/manage.page.container.jsx index 4df3c41b6..0280e0282 100644 --- a/client/src/pages/manage/manage.page.container.jsx +++ b/client/src/pages/manage/manage.page.container.jsx @@ -1,6 +1,45 @@ -import React from "react"; +import { notification } from "antd"; +import React, { useEffect } from "react"; +import { useQuery } from "react-apollo"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; +import { QUERY_BODYSHOP } from "../../graphql/bodyshop.queries"; +import { setBodyshop } from "../../redux/user/user.actions"; +import { + selectBodyshop, + selectCurrentUser +} from "../../redux/user/user.selectors"; import ManagePage from "./manage.page"; -export default function ManagePageContainer() { - return ; -} +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, + bodyshop: selectBodyshop +}); + +const mapDispatchToProps = dispatch => ({ + setBodyshop: bs => dispatch(setBodyshop(bs)) +}); + +export default connect( + mapStateToProps, + mapDispatchToProps +)(function ManagePageContainer({ match, setBodyshop, bodyshop }) { + const { error, data } = useQuery(QUERY_BODYSHOP, { + fetchPolicy: "network-only" + }); + const { t } = useTranslation(); + if (error) { + notification["error"]({ message: t("bodyshop.errors.loading") }); + } + + useEffect(() => { + if (data) setBodyshop(data.bodyshops[0]); + return () => {}; + }, [data, setBodyshop]); + + if (!bodyshop) + return ; + return ; +}); diff --git a/client/src/pages/manage/manage.page.jsx b/client/src/pages/manage/manage.page.jsx index 93245792f..a25bd34bc 100644 --- a/client/src/pages/manage/manage.page.jsx +++ b/client/src/pages/manage/manage.page.jsx @@ -1,17 +1,18 @@ +import { BackTop, Layout } from "antd"; import React, { lazy, Suspense, useEffect } from "react"; -import { Route } from "react-router"; -import { Layout, BackTop } from "antd"; import { useTranslation } from "react-i18next"; - +import { Route } from "react-router"; +import ErrorBoundary from "../../components/error-boundary/error-boundary.component"; +import FooterComponent from "../../components/footer/footer.component"; //Component Imports import HeaderContainer from "../../components/header/header.container"; -import FooterComponent from "../../components/footer/footer.component"; -import ErrorBoundary from "../../components/error-boundary/error-boundary.component"; - +import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; import "./manage.page.styles.scss"; -import ChatWindowContainer from "../../components/chat-window/chat-window.container"; +import Test from "../../components/_test/test.component"; -const WhiteBoardPage = lazy(() => import("../white-board/white-board.page")); +const ManageRootPage = lazy(() => + import("../manage-root/manage-root.page.container") +); const JobsPage = lazy(() => import("../jobs/jobs.page")); const JobsDetailPage = lazy(() => import("../jobs-detail/jobs-detail.page.container") @@ -23,9 +24,33 @@ const JobsDocumentsPage = lazy(() => const JobsAvailablePage = lazy(() => import("../jobs-available/jobs-available.page.container") ); +const ChatWindowContainer = lazy(() => + import("../../components/chat-overlay/chat-overlay.container") +); +const ScheduleContainer = lazy(() => + import("../schedule/schedule.page.container") +); +const VehiclesContainer = lazy(() => + import("../vehicles/vehicles.page.container") +); +const VehiclesDetailContainer = lazy(() => + import("../vehicles-detail/vehicles-detail.page.container") +); +const OwnersContainer = lazy(() => import("../owners/owners.page.container")); +const OwnersDetailContainer = lazy(() => + import("../owners-detail/owners-detail.page.container") +); +const ShopPage = lazy(() => import("../shop/shop.page.component")); +const ShopVendorPageContainer = lazy(() => + import("../shop-vendor/shop-vendor.page.container") +); + +const EmailOverlayContainer = lazy(() => + import("../../components/email-overlay/email-overlay.container.jsx") +); const { Header, Content, Footer } = Layout; -//This page will handle all routing for the entire application. + export default function Manage({ match }) { const { t } = useTranslation(); @@ -34,48 +59,85 @@ export default function Manage({ match }) { }, [t]); return ( - +
- - - - TODO: Suspended Loading in Manage Page...
}> - - - - - - - - - - - - - + + + + + } + > + DELETE THIS + + + + + + + + + + + + + + + + + + +
-
+ ); diff --git a/client/src/pages/owners-detail/owners-detail.page.component.jsx b/client/src/pages/owners-detail/owners-detail.page.component.jsx new file mode 100644 index 000000000..89c274134 --- /dev/null +++ b/client/src/pages/owners-detail/owners-detail.page.component.jsx @@ -0,0 +1,11 @@ +import React from "react"; +import OwnerDetailForm from "../../components/owner-detail-form/owner-detail-form.container"; +import OwnerDetailJobsComponent from "../../components/owner-detail-jobs/owner-detail-jobs.component"; +export default function OwnersDetailComponent({ owner, refetch }) { + return ( +
+ + +
+ ); +} diff --git a/client/src/pages/owners-detail/owners-detail.page.container.jsx b/client/src/pages/owners-detail/owners-detail.page.container.jsx new file mode 100644 index 000000000..f2adcb24a --- /dev/null +++ b/client/src/pages/owners-detail/owners-detail.page.container.jsx @@ -0,0 +1,28 @@ +import React from "react"; +import OwnersDetailComponent from "./owners-detail.page.component"; +import { useTranslation } from "react-i18next"; +import { useQuery } from "react-apollo"; +import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; +import AlertComponent from "../../components/alert/alert.component"; +import { QUERY_OWNER_BY_ID } from "../../graphql/owners.queries"; +export default function OwnersDetailContainer({ match }) { + const { ownerId } = match.params; + const { t } = useTranslation(); + + const { loading, data, error, refetch } = useQuery(QUERY_OWNER_BY_ID, { + variables: { id: ownerId }, + fetchPolicy: "network-only" + }); + + if (loading) return ; + if (error) return ; + + if (data.owners_by_pk) + return ( + + ); + else + return ( + + ); +} diff --git a/client/src/pages/owners/owners.page.component.jsx b/client/src/pages/owners/owners.page.component.jsx new file mode 100644 index 000000000..2a975c373 --- /dev/null +++ b/client/src/pages/owners/owners.page.component.jsx @@ -0,0 +1,6 @@ +import React from "react"; +import OwnersListContainer from "../../components/owners-list/owners-list.container"; + +export default function OwnersPageComponent() { + return ; +} diff --git a/client/src/pages/owners/owners.page.container.jsx b/client/src/pages/owners/owners.page.container.jsx new file mode 100644 index 000000000..172918110 --- /dev/null +++ b/client/src/pages/owners/owners.page.container.jsx @@ -0,0 +1,12 @@ +import React, { useEffect } from "react"; +import OwnersPageComponent from "./owners.page.component"; +import { useTranslation } from "react-i18next"; + +export default function OwnersPageContainer() { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.owners"); + }, [t]); + + return ; +} diff --git a/client/src/pages/profile/profile.container.page.jsx b/client/src/pages/profile/profile.container.page.jsx index 4acf9c486..a2d7ece13 100644 --- a/client/src/pages/profile/profile.container.page.jsx +++ b/client/src/pages/profile/profile.container.page.jsx @@ -1,6 +1,11 @@ -import React from "react"; +import React, { useEffect } from "react"; import ProfilePage from "./profile.page"; - +import { useTranslation } from "react-i18next"; export default function ProfileContainerPage() { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.profile"); + }, [t]); + return ; } diff --git a/client/src/pages/profile/profile.page.jsx b/client/src/pages/profile/profile.page.jsx index 29f3b7410..5138c062b 100644 --- a/client/src/pages/profile/profile.page.jsx +++ b/client/src/pages/profile/profile.page.jsx @@ -1,16 +1,9 @@ -import React, { useEffect, useState } from "react"; -import { useTranslation } from "react-i18next"; import { Layout } from "antd"; -import ProfileSideBar from "../../components/profile-sidebar/profile-sidebar.component"; +import React, { useState } from "react"; import ProfileContent from "../../components/profile-content/profile-content.component"; +import ProfileSideBar from "../../components/profile-sidebar/profile-sidebar.component"; export default function ProfilePage() { - const { t } = useTranslation(); - - useEffect(() => { - document.title = t("titles.profile"); - }, [t]); - const [sidebarSelection, setSidebarSelection] = useState({ key: "profile" }); return ( diff --git a/client/src/pages/schedule/schedule.page.component.jsx b/client/src/pages/schedule/schedule.page.component.jsx new file mode 100644 index 000000000..3be49895f --- /dev/null +++ b/client/src/pages/schedule/schedule.page.component.jsx @@ -0,0 +1,6 @@ +import React from "react"; +import ScheduleCalendarContainer from "../../components/schedule-calendar/schedule-calendar.container"; + +export default function SchedulePageComponent() { + return ; +} diff --git a/client/src/pages/schedule/schedule.page.container.jsx b/client/src/pages/schedule/schedule.page.container.jsx new file mode 100644 index 000000000..8a21042cd --- /dev/null +++ b/client/src/pages/schedule/schedule.page.container.jsx @@ -0,0 +1,12 @@ +import React, { useEffect } from "react"; +import SchedulePageComponent from "./schedule.page.component"; +import { useTranslation } from "react-i18next"; +export default function SchedulePageContainer() { + const { t } = useTranslation(); + + useEffect(() => { + document.title = t("titles.schedule"); + }, [t]); + + return ; +} diff --git a/client/src/pages/shop-vendor/shop-vendor.page.component.jsx b/client/src/pages/shop-vendor/shop-vendor.page.component.jsx new file mode 100644 index 000000000..551657fa8 --- /dev/null +++ b/client/src/pages/shop-vendor/shop-vendor.page.component.jsx @@ -0,0 +1,15 @@ +import React from "react"; +import VendorsListContainer from "../../components/vendors-list/vendors-list.container"; +import VendorsFormContainer from "../../components/vendors-form/vendors-form.container"; + +export default function ShopVendorPageComponent({ selectedVendorState }) { + //TODO Figure out how to handle the refresh list when saving form + return ( +
+ + +
+ ); +} diff --git a/client/src/pages/shop-vendor/shop-vendor.page.container.jsx b/client/src/pages/shop-vendor/shop-vendor.page.container.jsx new file mode 100644 index 000000000..9f9e5bfb6 --- /dev/null +++ b/client/src/pages/shop-vendor/shop-vendor.page.container.jsx @@ -0,0 +1,17 @@ +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import ShopVendorPageComponent from "./shop-vendor.page.component"; + +export default function ShopVendorPageContainer() { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.shop_vendors"); + }, [t]); + + const selectedVendorState = useState(); + return ( +
+ +
+ ); +} diff --git a/client/src/pages/shop/shop.page.component.jsx b/client/src/pages/shop/shop.page.component.jsx new file mode 100644 index 000000000..86e5acfe6 --- /dev/null +++ b/client/src/pages/shop/shop.page.component.jsx @@ -0,0 +1,25 @@ +import { Tabs } from "antd"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import ShopEmployeesContainer from "../../components/shop-employees/shop-employees.container"; + +export default function ShopPage() { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.shop"); + }, [t]); + + return ( + + + Shop INfo + + + + + + Licensing + + + ); +} diff --git a/client/src/pages/sign-in/sign-in.page.jsx b/client/src/pages/sign-in/sign-in.page.jsx index 2de375129..15f6566a2 100644 --- a/client/src/pages/sign-in/sign-in.page.jsx +++ b/client/src/pages/sign-in/sign-in.page.jsx @@ -1,6 +1,6 @@ import React from "react"; -import SignInContainer from "../../components/sign-in-form/sign-in-form.container"; +import SignIn from "../../components/sign-in-form/sign-in-form.component"; export default () => { - return ; + return ; }; diff --git a/client/src/pages/vehicles-detail/vehicles-detail.page.component.jsx b/client/src/pages/vehicles-detail/vehicles-detail.page.component.jsx new file mode 100644 index 000000000..3cc260675 --- /dev/null +++ b/client/src/pages/vehicles-detail/vehicles-detail.page.component.jsx @@ -0,0 +1,12 @@ +import React from "react"; +import VehicleDetailFormContainer from "../../components/vehicle-detail-form/vehicle-detail-form.container"; +import VehicleDetailJobsComponent from "../../components/vehicle-detail-jobs/vehicle-detail-jobs.component"; + +export default function VehicleDetailComponent({ vehicle, refetch }) { + return ( +
+ + +
+ ); +} diff --git a/client/src/pages/vehicles-detail/vehicles-detail.page.container.jsx b/client/src/pages/vehicles-detail/vehicles-detail.page.container.jsx new file mode 100644 index 000000000..a2a7b2ca3 --- /dev/null +++ b/client/src/pages/vehicles-detail/vehicles-detail.page.container.jsx @@ -0,0 +1,37 @@ +import React, { useEffect } from "react"; +import VehicleDetailComponent from "./vehicles-detail.page.component"; +import { useQuery } from "react-apollo"; +import { QUERY_VEHICLE_BY_ID } from "../../graphql/vehicles.queries"; +import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; +import AlertComponent from "../../components/alert/alert.component"; +import { useTranslation } from "react-i18next"; + +export default function VehicleDetailContainer({ match }) { + const { vehId } = match.params; + const { t } = useTranslation(); + const { loading, data, error, refetch } = useQuery(QUERY_VEHICLE_BY_ID, { + variables: { id: vehId }, + fetchPolicy: "network-only" + }); + + useEffect(() => { + document.title = t("titles.vehicledetail", { + vehicle: + data && data.vehicles_by_pk + ? `${data.vehicles_by_pk.v_model_yr} ${data.vehicles_by_pk.v_make_desc} ${data.vehicles_by_pk.v_model_desc}` + : "" + }); + }, [t, data]); + + if (loading) return ; + if (error) return ; + + if (data.vehicles_by_pk) + return ( + + ); + else + return ( + + ); +} diff --git a/client/src/pages/vehicles/vehicles.page.component.jsx b/client/src/pages/vehicles/vehicles.page.component.jsx new file mode 100644 index 000000000..706a37a13 --- /dev/null +++ b/client/src/pages/vehicles/vehicles.page.component.jsx @@ -0,0 +1,6 @@ +import React from "react"; +import VehiclesListContainer from "../../components/vehicles-list/vehicles-list.container"; + +export default function VehiclesPageComponent() { + return ; +} diff --git a/client/src/pages/vehicles/vehicles.page.container.jsx b/client/src/pages/vehicles/vehicles.page.container.jsx new file mode 100644 index 000000000..086998bde --- /dev/null +++ b/client/src/pages/vehicles/vehicles.page.container.jsx @@ -0,0 +1,10 @@ +import React, { useEffect } from "react"; +import VehiclesPageComponent from "./vehicles.page.component"; +import { useTranslation } from "react-i18next"; +export default function VehiclesPageContainer() { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.vehicles"); + }, [t]); + return ; +} diff --git a/client/src/pages/white-board/white-board.page.jsx b/client/src/pages/white-board/white-board.page.jsx deleted file mode 100644 index 0da18f3b8..000000000 --- a/client/src/pages/white-board/white-board.page.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from "react"; - -import WhiteBoardLeftSiderContainer from "../../components/white-board-left-sider/white-board-left-sider.container"; -import WhiteBoardKanBanContainer from "../../components/white-board-kanban/white-board-kanban.container"; -import { Layout } from "antd"; - -export default function WhiteBoardPage({ whiteBoardLeftSiderVisible }) { - const { Sider, Content } = Layout; - return ( - - { - //console.log(broken); - }} - onCollapse={(collapsed, type) => { - //console.log(collapsed, type); - }} - > - - - - - - - - ); -} diff --git a/client/src/redux/email/email.actions.js b/client/src/redux/email/email.actions.js new file mode 100644 index 000000000..1aaf9a097 --- /dev/null +++ b/client/src/redux/email/email.actions.js @@ -0,0 +1,24 @@ +import EmailActionTypes from "./email.types"; + +export const toggleEmailOverlayVisible = () => ({ + type: EmailActionTypes.TOGGLE_EMAIL_OVERLAY_VISIBLE +}); + +export const setEmailOptions = options => ({ + type: EmailActionTypes.SET_EMAIL_OPTIONS, + payload: options +}); + +export const sendEmail = email => ({ + type: EmailActionTypes.SEND_EMAIL, + payload: email +}); + +export const sendEmailSuccess = options => ({ + type: EmailActionTypes.SEND_EMAIL_SUCCESS +}); + +export const sendEmailFailure = error => ({ + type: EmailActionTypes.SEND_EMAIL_FAILURE, + payload: error +}); diff --git a/client/src/redux/email/email.reducer.js b/client/src/redux/email/email.reducer.js new file mode 100644 index 000000000..7a39c94cc --- /dev/null +++ b/client/src/redux/email/email.reducer.js @@ -0,0 +1,35 @@ +import EmailActionTypes from "./email.types"; + +const INITIAL_STATE = { + emailConfig: { + messageOptions: { + from: { name: "ShopName", address: "noreply@bodyshop.app" }, + to: null, + replyTo: null + }, + template: null, + queryConfig: [null, { variables: null }] + }, + + visible: false, + error: null +}; + +const emailReducer = (state = INITIAL_STATE, action) => { + switch (action.type) { + case EmailActionTypes.TOGGLE_EMAIL_OVERLAY_VISIBLE: + return { + ...state, + visible: !state.visible + }; + case EmailActionTypes.SET_EMAIL_OPTIONS: + return { + ...state, + emailConfig: { ...action.payload } + }; + default: + return state; + } +}; + +export default emailReducer; diff --git a/client/src/redux/email/email.sagas.js b/client/src/redux/email/email.sagas.js new file mode 100644 index 000000000..a7b562d48 --- /dev/null +++ b/client/src/redux/email/email.sagas.js @@ -0,0 +1,51 @@ +import { all, call, put, takeLatest } from "redux-saga/effects"; +import { sendEmailFailure, sendEmailSuccess } from "./email.actions"; +import EmailActionTypes from "./email.types"; +import axios from "axios"; + +export function* onSendEmail() { + yield takeLatest(EmailActionTypes.SEND_EMAIL, sendEmail); +} +export function* sendEmail(payload) { + try { + console.log("Sending thta email", payload); + axios.post("/sendemail", payload).then(response => { + console.log(JSON.stringify(response)); + put(sendEmailSuccess()); + }); + } catch (error) { + console.log("Error in sendEmail saga."); + yield put(sendEmailFailure(error.message)); + } +} + +export function* onSendEmailSuccess() { + yield takeLatest(EmailActionTypes.SEND_EMAIL_SUCCESS, sendEmailSuccessSaga); +} +export function* sendEmailSuccessSaga() { + try { + console.log("Send email success."); + } catch (error) { + console.log("Error in sendEmailSuccess saga."); + yield put(sendEmailFailure(error.message)); + } +} + +export function* onSendEmailFailure() { + yield takeLatest(EmailActionTypes.SEND_EMAIL_FAILURE, sendEmailFailureSaga); +} +export function* sendEmailFailureSaga(error) { + try { + yield console.log(error); + } catch (error) { + console.log("Error in sendEmailFailure saga.", error.message); + } +} + +export function* emailSagas() { + yield all([ + call(onSendEmail), + call(onSendEmailFailure), + call(onSendEmailSuccess) + ]); +} diff --git a/client/src/redux/email/email.selectors.js b/client/src/redux/email/email.selectors.js new file mode 100644 index 000000000..3a0299aa4 --- /dev/null +++ b/client/src/redux/email/email.selectors.js @@ -0,0 +1,25 @@ +import { createSelector } from "reselect"; + +const selectEmail = state => state.email; +const selectEmailConfigMessageOptions = state => + state.email.emailConfig.messageOptions; +const selectEmailConfigTemplate = state => state.email.emailConfig.template; +const selectEmailConfigQuery = state => state.email.emailConfig.queryConfig; + +export const selectEmailVisible = createSelector( + [selectEmail], + email => email.visible +); + +export const selectEmailConfig = createSelector( + [ + selectEmailConfigMessageOptions, + selectEmailConfigTemplate, + selectEmailConfigQuery + ], + (messageOptions, template, queryConfig) => ({ + messageOptions, + template, + queryConfig + }) +); diff --git a/client/src/redux/email/email.types.js b/client/src/redux/email/email.types.js new file mode 100644 index 000000000..b7e1ef876 --- /dev/null +++ b/client/src/redux/email/email.types.js @@ -0,0 +1,8 @@ +const EmailActionTypes = { + TOGGLE_EMAIL_OVERLAY_VISIBLE: "TOGGLE_EMAIL_OVERLAY_VISIBLE", + SET_EMAIL_OPTIONS: "SET_EMAIL_OPTIONS", + SEND_EMAIL: "SEND_EMAIL", + SEND_EMAIL_SUCCESS: "SEND_EMAIL_SUCCESS", + SEND_EMAIL_FAILURE: "SEND_EMAIL_FAILURE" +}; +export default EmailActionTypes; diff --git a/client/src/redux/messaging/messaging.actions.js b/client/src/redux/messaging/messaging.actions.js new file mode 100644 index 000000000..b89ab0ebb --- /dev/null +++ b/client/src/redux/messaging/messaging.actions.js @@ -0,0 +1,21 @@ +import MessagingActionTypes from "./messaging.types"; + +export const toggleChatVisible = () => ({ + type: MessagingActionTypes.TOGGLE_CHAT_VISIBLE + //payload: user +}); + +export const toggleConversationVisible = conversationId => ({ + type: MessagingActionTypes.TOGGLE_CONVERSATION_VISIBLE, + payload: conversationId +}); + +export const openConversation = phone => ({ + type: MessagingActionTypes.OPEN_CONVERSATION, + payload: phone +}); + +export const closeConversation = phone => ({ + type: MessagingActionTypes.CLOSE_CONVERSATION, + payload: phone +}); diff --git a/client/src/redux/messaging/messaging.reducer.js b/client/src/redux/messaging/messaging.reducer.js new file mode 100644 index 000000000..f9acdf08e --- /dev/null +++ b/client/src/redux/messaging/messaging.reducer.js @@ -0,0 +1,58 @@ +import MessagingActionTypes from "./messaging.types"; + +const INITIAL_STATE = { + visible: false, + conversations: [ + { phone: "6049992002", open: false }, + { phone: "6049992991", open: false } + ] +}; + +const messagingReducer = (state = INITIAL_STATE, action) => { + switch (action.type) { + case MessagingActionTypes.TOGGLE_CHAT_VISIBLE: + return { + ...state, + visible: !state.visible + }; + case MessagingActionTypes.SET_CHAT_VISIBLE: + return { + ...state, + visible: true + }; + case MessagingActionTypes.OPEN_CONVERSATION: + if (state.conversations.find(c => c.phone === action.payload)) + return { + ...state, + conversations: state.conversations.map(c => + c.phone === action.payload ? { ...c, open: true } : c + ) + }; + else + return { + ...state, + conversations: [ + ...state.conversations, + { phone: action.payload, open: true } + ] + }; + case MessagingActionTypes.CLOSE_CONVERSATION: + return { + ...state, + conversations: state.conversations.filter( + c => c.phone !== action.payload + ) + }; + case MessagingActionTypes.TOGGLE_CONVERSATION_VISIBLE: + return { + ...state, + conversations: state.conversations.map(c => + c.phone === action.payload ? { ...c, open: !c.open } : c + ) + }; + default: + return state; + } +}; + +export default messagingReducer; diff --git a/client/src/redux/messaging/messaging.sagas.js b/client/src/redux/messaging/messaging.sagas.js new file mode 100644 index 000000000..b897fedf5 --- /dev/null +++ b/client/src/redux/messaging/messaging.sagas.js @@ -0,0 +1,90 @@ +import { + all + // call, put, takeLatest +} from "redux-saga/effects"; +//import { auth, getCurrentUser } from "../../firebase/firebase.utils"; + +// import { toggleChatVisible } from "./messaging.actions"; +// import MessagingActionTypes from "./messaging.types"; + +// export function* getSnapshotFromUserAuth(userAuth) { +// try { +// const userRef = yield call(createUserProfileDocument, userAuth); +// //const userSnapshot = yield userRef.get(); +// } catch (error) { +// yield put(signInFailure(error)); +// } +// } + +// export function* signInWithEmail({ payload: { email, password } }) { +// try { +// const { user } = yield auth.signInWithEmailAndPassword(email, password); +// yield put( +// signInSuccess({ +// uid: user.uid, +// email: user.email, +// displayName: user.displayName, +// authorized: true +// }) +// ); +// } catch (error) { +// yield put(signInFailure(error)); +// } +// } +// //This is the listener fo rthe call, and when it finds it, it triggers somethign else. +// export function* onEmailSignInStart() { +// yield takeLatest(UserActionTypes.EMAIL_SIGN_IN_START, signInWithEmail); +// } + +// export function* isUserAuthenticated() { +// try { +// const user = yield getCurrentUser(); +// if (!user) { +// yield put(unauthorizedUser()); +// return; +// } +// let token = yield user.getIdToken(); +// localStorage.setItem("token", token); +// window.sessionStorage.setItem(`lastTokenRefreshTime`, new Date()); + +// yield put( +// signInSuccess({ +// uid: user.uid, +// email: user.email, +// displayName: user.displayName, +// authorized: true +// }) +// ); +// } catch (error) { +// yield put(signInFailure(error)); +// } +// } + +// export function* onCheckUserSession() { +// yield takeLatest(UserActionTypes.CHECK_USER_SESSION, isUserAuthenticated); +// } + +// export function* signOutStart() { +// try { +// yield auth.signOut(); +// yield put(signOutSuccess()); +// localStorage.removeItem("token"); +// } catch (error) { +// yield put(signOutFailure(error.message)); +// } +// } + +// export function* onSignOutStart() { +// yield takeLatest(UserActionTypes.SIGN_OUT_START, signOutStart); +// } + +export function* messagingSagas() { + yield all([ + // call(onGoogleSignInStart), + // call(onEmailSignInStart), + // call(onCheckUserSession), + // call(onSignOutStart) + // call(onEmailSignUpStart), + // call(onEmailSignUpSuccess) + ]); +} diff --git a/client/src/redux/messaging/messaging.selectors.js b/client/src/redux/messaging/messaging.selectors.js new file mode 100644 index 000000000..b47f6743c --- /dev/null +++ b/client/src/redux/messaging/messaging.selectors.js @@ -0,0 +1,13 @@ +import { createSelector } from "reselect"; + +const selectMessaging = state => state.messaging; + +export const selectChatVisible = createSelector( + [selectMessaging], + messaging => messaging.visible +); + +export const selectConversations = createSelector( + [selectMessaging], + messaging => messaging.conversations +); diff --git a/client/src/redux/messaging/messaging.types.js b/client/src/redux/messaging/messaging.types.js new file mode 100644 index 000000000..462e7efb3 --- /dev/null +++ b/client/src/redux/messaging/messaging.types.js @@ -0,0 +1,9 @@ +const MessagingActionTypes = { + TOGGLE_CHAT_VISIBLE: "TOGGLE_CHAT_VISIBLE", + SET_CHAT_VISIBLE: "SET_CHAT_VISIBLE", + OPEN_CONVERSATION: "OPEN_CONVERSATION", + CLOSE_CONVERSATION: "CLOSE_CONVERSATION", + TOGGLE_CONVERSATION_VISIBLE: "TOGGLE_CONVERSATION_VISIBLE", + SEND_MESSAGE: "SEND_MESSAGE" +}; +export default MessagingActionTypes; diff --git a/client/src/redux/modals/modals.actions.js b/client/src/redux/modals/modals.actions.js new file mode 100644 index 000000000..b11db8881 --- /dev/null +++ b/client/src/redux/modals/modals.actions.js @@ -0,0 +1,12 @@ +import ModalsActionTypes from "./modals.types"; + +export const toggleModalVisible = modalName => ({ + type: ModalsActionTypes.TOGGLE_MODAL_VISIBLE, + payload: modalName +}); + +//Modal Context: {context (context object), modal(name of modal)} +export const setModalContext = modalContext => ({ + type: ModalsActionTypes.SET_MODAL_CONTEXT, + payload: modalContext +}); diff --git a/client/src/redux/modals/modals.reducer.js b/client/src/redux/modals/modals.reducer.js new file mode 100644 index 000000000..7e79e844b --- /dev/null +++ b/client/src/redux/modals/modals.reducer.js @@ -0,0 +1,40 @@ +import ModalsActionTypes from "./modals.types"; + +const baseModal = { + visible: false, + context: {}, + actions: { + refetch: null + } +}; + +const INITIAL_STATE = { + jobLineEdit: { ...baseModal }, + invoiceEnter: { ...baseModal } +}; + +const modalsReducer = (state = INITIAL_STATE, action) => { + switch (action.type) { + case ModalsActionTypes.TOGGLE_MODAL_VISIBLE: + return { + ...state, + [action.payload]: { + ...state[action.payload], + visible: !state[action.payload].visible + } + }; + case ModalsActionTypes.SET_MODAL_CONTEXT: + return { + ...state, + [action.payload.modal]: { + ...state[action.payload.modal], + ...action.payload.context, + visible: true + } + }; + default: + return state; + } +}; + +export default modalsReducer; diff --git a/client/src/redux/modals/modals.sagas.js b/client/src/redux/modals/modals.sagas.js new file mode 100644 index 000000000..7cf750062 --- /dev/null +++ b/client/src/redux/modals/modals.sagas.js @@ -0,0 +1,24 @@ +import { all } from "redux-saga/effects"; + +// export function* onSendEmail() { +// yield takeLatest(EmailActionTypes.SEND_EMAIL, sendEmail); +// } +// export function* sendEmail(payload) { +// try { +// console.log("Sending thta email", payload); +// axios.post("/sendemail", payload).then(response => { +// console.log(JSON.stringify(response)); +// put(sendEmailSuccess()); +// }); +// } catch (error) { +// console.log("Error in sendEmail saga."); +// yield put(sendEmailFailure(error.message)); +// } +// } + + +export function* modalsSagas() { + yield all([ + //call(onSendEmail), + ]); +} diff --git a/client/src/redux/modals/modals.selectors.js b/client/src/redux/modals/modals.selectors.js new file mode 100644 index 000000000..7634faf2b --- /dev/null +++ b/client/src/redux/modals/modals.selectors.js @@ -0,0 +1,14 @@ +import { createSelector } from "reselect"; + +const selectModals = state => state.modals; + +export const selectJobLineEditModal = createSelector( + [selectModals], + modals => modals.jobLineEdit +); + +export const selectInvoiceEnterModal = createSelector( + [selectModals], + modals => modals.invoiceEnter +); + diff --git a/client/src/redux/modals/modals.types.js b/client/src/redux/modals/modals.types.js new file mode 100644 index 000000000..01ea4c793 --- /dev/null +++ b/client/src/redux/modals/modals.types.js @@ -0,0 +1,5 @@ +const ModalActionTypes = { + TOGGLE_MODAL_VISIBLE: "TOGGLE_MODAL_VISIBLE", + SET_MODAL_CONTEXT: "SET_JOBLINEEDIT_CONTEXT" +}; +export default ModalActionTypes; diff --git a/client/src/redux/root.reducer.js b/client/src/redux/root.reducer.js new file mode 100644 index 000000000..091bd39fe --- /dev/null +++ b/client/src/redux/root.reducer.js @@ -0,0 +1,23 @@ +import { combineReducers } from "redux"; +import { persistReducer } from "redux-persist"; +import storage from "redux-persist/lib/storage"; + +import userReducer from "./user/user.reducer"; +import messagingReducer from "./messaging/messaging.reducer"; +import emailReducer from "./email/email.reducer"; +import modalsReducer from './modals/modals.reducer' +const persistConfig = { + key: "root", + storage, + //whitelist: ["user"] + blacklist: ["user", "email", "messaging", "modals"] +}; + +const rootReducer = combineReducers({ + user: userReducer, + messaging: messagingReducer, + email: emailReducer, + modals: modalsReducer +}); + +export default persistReducer(persistConfig, rootReducer); diff --git a/client/src/redux/root.saga.js b/client/src/redux/root.saga.js new file mode 100644 index 000000000..ce288b568 --- /dev/null +++ b/client/src/redux/root.saga.js @@ -0,0 +1,10 @@ +import { all, call } from "redux-saga/effects"; + +import { userSagas } from "./user/user.sagas"; +import { messagingSagas } from "./messaging/messaging.sagas"; +import { emailSagas } from "./email/email.sagas"; +import { modalsSagas } from "./modals/modals.sagas"; +export default function* rootSaga() { + yield all([call(userSagas), call(messagingSagas), call(emailSagas), + call(modalsSagas)]); +} diff --git a/client/src/redux/store.js b/client/src/redux/store.js new file mode 100644 index 000000000..7a5034e60 --- /dev/null +++ b/client/src/redux/store.js @@ -0,0 +1,19 @@ +import { createStore, applyMiddleware } from "redux"; +import { persistStore } from "redux-persist"; +import { createLogger } from "redux-logger"; +import createSagaMiddleware from "redux-saga"; +import rootReducer from "./root.reducer"; +import rootSaga from "./root.saga"; + +const sagaMiddleWare = createSagaMiddleware(); +const middlewares = [sagaMiddleWare]; +if (process.env.NODE_ENV === "development") { + middlewares.push(createLogger({ collapsed: true, diff: true })); +} + +export const store = createStore(rootReducer, applyMiddleware(...middlewares)); +sagaMiddleWare.run(rootSaga); + +export const persistor = persistStore(store); + +export default { store, persistStore }; diff --git a/client/src/redux/user/user.actions.js b/client/src/redux/user/user.actions.js new file mode 100644 index 000000000..2d6989122 --- /dev/null +++ b/client/src/redux/user/user.actions.js @@ -0,0 +1,55 @@ +import UserActionTypes from "./user.types"; + +export const signInSuccess = user => ({ + type: UserActionTypes.SIGN_IN_SUCCESS, + payload: user +}); +export const signInFailure = errorMsg => ({ + type: UserActionTypes.SIGN_IN_FAILURE, + payload: errorMsg +}); + +export const emailSignInStart = emailAndPassword => ({ + type: UserActionTypes.EMAIL_SIGN_IN_START, + payload: emailAndPassword +}); + +export const checkUserSession = () => ({ + type: UserActionTypes.CHECK_USER_SESSION +}); + +export const signOutStart = () => ({ + type: UserActionTypes.SIGN_OUT_START +}); +export const signOutSuccess = () => ({ + type: UserActionTypes.SIGN_OUT_SUCCESS +}); + +export const signOutFailure = error => ({ + type: UserActionTypes.SIGN_OUT_FAILURE, + payload: error +}); + +export const unauthorizedUser = () => ({ + type: UserActionTypes.UNAUTHORIZED_USER +}); + +export const setUserLanguage = language => ({ + type: UserActionTypes.SET_USER_LANGUAGE, + payload: language +}); + +export const updateUserDetails = userDetails => ({ + type: UserActionTypes.UPDATE_USER_DETAILS, + payload: userDetails +}); + +export const updateUserDetailsSuccess = userDetails => ({ + type: UserActionTypes.UPDATE_USER_DETAILS_SUCCESS, + payload: userDetails +}); + +export const setBodyshop = bodyshop => ({ + type: UserActionTypes.SET_SHOP_DETAILS, + payload: bodyshop +}); diff --git a/client/src/redux/user/user.reducer.js b/client/src/redux/user/user.reducer.js new file mode 100644 index 000000000..4b3897443 --- /dev/null +++ b/client/src/redux/user/user.reducer.js @@ -0,0 +1,60 @@ +import UserActionTypes from "./user.types"; + +const INITIAL_STATE = { + currentUser: { + authorized: null, + language: "en_us" + }, + bodyshop: null, + error: null +}; + +const userReducer = (state = INITIAL_STATE, action) => { + switch (action.type) { + case UserActionTypes.SIGN_IN_SUCCESS: + return { + ...state, + currentUser: action.payload, + error: null + }; + case UserActionTypes.SIGN_OUT_SUCCESS: + return { + ...state, + currentUser: { authorized: false }, + error: null + }; + case UserActionTypes.UNAUTHORIZED_USER: + return { + ...state, + error: null, + currentUser: { authorized: false } + }; + case UserActionTypes.SET_USER_LANGUAGE: + return { + ...state, + language: action.payload + }; + case UserActionTypes.UPDATE_USER_DETAILS_SUCCESS: + return { + ...state, + currentUser: { + ...state.currentUser, + ...action.payload //Spread current user details in. + } + }; + + case UserActionTypes.SET_SHOP_DETAILS: + return { ...state, bodyshop: action.payload }; + case UserActionTypes.SIGN_IN_FAILURE: + case UserActionTypes.SIGN_OUT_FAILURE: + case UserActionTypes.EMAIL_SIGN_UP_FAILURE: + return { + ...state, + error: action.payload + }; + default: + return state; + } +}; + +export default userReducer; diff --git a/client/src/redux/user/user.sagas.js b/client/src/redux/user/user.sagas.js new file mode 100644 index 000000000..e0f24767b --- /dev/null +++ b/client/src/redux/user/user.sagas.js @@ -0,0 +1,113 @@ +import { all, call, put, takeLatest } from "redux-saga/effects"; +import { + auth, + getCurrentUser, + updateCurrentUser +} from "../../firebase/firebase.utils"; +import { + signInFailure, + signInSuccess, + signOutFailure, + signOutSuccess, + unauthorizedUser, + updateUserDetailsSuccess +} from "./user.actions"; +import UserActionTypes from "./user.types"; + +// export function* getSnapshotFromUserAuth(userAuth) { +// try { +// const userRef = yield call(createUserProfileDocument, userAuth); +// //const userSnapshot = yield userRef.get(); +// } catch (error) { +// yield put(signInFailure(error)); +// } +// } + +export function* signInWithEmail({ payload: { email, password } }) { + try { + const { user } = yield auth.signInWithEmailAndPassword(email, password); + let token = yield user.getIdToken(); + localStorage.setItem("token", token); + window.sessionStorage.setItem(`lastTokenRefreshTime`, new Date()); + yield put( + signInSuccess({ + uid: user.uid, + email: user.email, + displayName: user.displayName, + photoURL: user.photoURL, + authorized: true + }) + ); + } catch (error) { + yield put(signInFailure(error)); + } +} +//This is the listener fo rthe call, and when it finds it, it triggers somethign else. +export function* onEmailSignInStart() { + yield takeLatest(UserActionTypes.EMAIL_SIGN_IN_START, signInWithEmail); +} + +export function* isUserAuthenticated() { + try { + const user = yield getCurrentUser(); + if (!user) { + yield put(unauthorizedUser()); + return; + } + let token = yield user.getIdToken(); + localStorage.setItem("token", token); + window.sessionStorage.setItem(`lastTokenRefreshTime`, new Date()); + + yield put( + signInSuccess({ + uid: user.uid, + email: user.email, + displayName: user.displayName, + photoURL: user.photoURL, + authorized: true + }) + ); + } catch (error) { + yield put(signInFailure(error)); + } +} + +export function* onCheckUserSession() { + yield takeLatest(UserActionTypes.CHECK_USER_SESSION, isUserAuthenticated); +} + +export function* signOutStart() { + try { + yield auth.signOut(); + yield put(signOutSuccess()); + localStorage.removeItem("token"); + } catch (error) { + yield put(signOutFailure(error.message)); + } +} + +export function* onSignOutStart() { + yield takeLatest(UserActionTypes.SIGN_OUT_START, signOutStart); +} + +export function* onUpdateUserDetails() { + yield takeLatest(UserActionTypes.UPDATE_USER_DETAILS, updateUserDetails); +} +export function* updateUserDetails(userDetails) { + try { + yield updateCurrentUser(userDetails.payload); + yield put(updateUserDetailsSuccess(userDetails.payload)); + } catch (error) { + //yield put(signOutFailure(error.message)); + //TODO error handling + } +} + +export function* userSagas() { + yield all([ + call(onEmailSignInStart), + call(onCheckUserSession), + call(onSignOutStart), + call(onUpdateUserDetails) + ]); +} diff --git a/client/src/redux/user/user.selectors.js b/client/src/redux/user/user.selectors.js new file mode 100644 index 000000000..4384f7ed6 --- /dev/null +++ b/client/src/redux/user/user.selectors.js @@ -0,0 +1,18 @@ +import { createSelector } from "reselect"; + +const selectUser = state => state.user; + +export const selectCurrentUser = createSelector( + [selectUser], + user => user.currentUser +); + +export const selectSignInError = createSelector( + [selectUser], + user => user.error +); + +export const selectBodyshop = createSelector( + [selectUser], + user => user.bodyshop +); diff --git a/client/src/redux/user/user.types.js b/client/src/redux/user/user.types.js new file mode 100644 index 000000000..febfe5eab --- /dev/null +++ b/client/src/redux/user/user.types.js @@ -0,0 +1,20 @@ +const UserActionTypes = { + SET_CURRENT_USER: "SET_CURRENT_USER", + GOOGLE_SIGN_IN_START: "GOOGLE_SIGN_IN_START", + SIGN_IN_SUCCESS: "SIGN_IN_SUCCESS", + SIGN_IN_FAILURE: "SIGN_IN_FAILURE", + EMAIL_SIGN_IN_START: "EMAIL_SIGN_IN_START", + CHECK_USER_SESSION: "CHECK_USER_SESSION", + SIGN_OUT_START: "SIGN_OUT_START", + SIGN_OUT_SUCCESS: "SIGN_OUT_SUCCESS", + SIGN_OUT_FAILURE: "SIGN_OUT_FAILURE", + EMAIL_SIGN_UP_START: "EMAIL_SIGN_UP_START", + EMAIL_SIGN_UP_SUCCESS: "EMAIL_SIGN_UP_SUCCESS", + EMAIL_SIGN_UP_FAILURE: "EMAIL_SIGN_UP_FAILURE", + UNAUTHORIZED_USER: "UNAUTHORIZED_USER", + SET_USER_LANGUAGE: "SET_USER_LANGUAGE", + UPDATE_USER_DETAILS: "UPDATE_USER_DETAILS", + UPDATE_USER_DETAILS_SUCCESS: "UPDATE_USER_DETAILS_SUCCESS", + SET_SHOP_DETAILS: "SET_SHOP_DETAILS" +}; +export default UserActionTypes; diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 8de53dc4b..abee6521b 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -1,5 +1,66 @@ { "translation": { + "allocations": { + "actions": { + "assign": "Assign" + }, + "errors": { + "deleting": "Error encountered while deleting allocation. {{message}}", + "saving": "Error while allocating. {{message}}", + "validation": "Please ensure all fields are entered correctly. " + }, + "fields": { + "employee": "Allocated To" + }, + "successes": { + "deleted": "Allocation deleted successfully.", + "save": "Allocated successfully. " + } + }, + "appointments": { + "actions": { + "cancel": "Cancel", + "intake": "Intake", + "new": "New Appointment", + "reschedule": "Reschedule", + "viewjob": "View Job" + }, + "errors": { + "canceling": "Error canceling appointment.", + "saving": "Error scheduling appointment. {{message}}" + }, + "fields": { + "title": "Title" + }, + "labels": { + "arrivedon": "Arrived on: ", + "cancelledappointment": "Canceled appointment for: ", + "nodateselected": "No date has been selected.", + "priorappointments": "Previous Appointments", + "scheduledfor": "Scheduled appointment for: " + }, + "successes": { + "canceled": "Appointment canceled successfully.", + "created": "Appointment scheduled successfully." + } + }, + "associations": { + "actions": { + "activate": "Activate" + }, + "fields": { + "active": "Active?", + "shopname": "Shop Name" + }, + "labels": { + "actions": "Actions" + } + }, + "bodyshop": { + "errors": { + "loading": "Unable to load shop details. Please call technical support." + } + }, "documents": { "errors": { "deletes3": "Error deleting document from storage. ", @@ -15,17 +76,59 @@ "insert": "Uploaded document successfully. " } }, + "emails": { + "errors": { + "notsent": "Email not sent. Error encountered while sending {{message}}" + }, + "successes": { + "sent": "Email sent successfully." + } + }, + "employees": { + "actions": { + "new": "New Employee" + }, + "errors": { + "delete": "Error encountered while deleting employee.", + "save": "Error encountered saving employee.", + "validation": "Please check all fields.", + "validationtitle": "Unable to save employee." + }, + "fields": { + "active": "Active?", + "base_rate": "Base Rate", + "cost_center": "Cost Center", + "employee_number": "Employee Number", + "first_name": "First Name", + "flat_rate": "Flat Rate (Disabled is Straight Time)", + "hire_date": "Hire Date", + "last_name": "Last Name", + "termination_date": "Termination Date" + }, + "successes": { + "delete": "Employee deleted successfully.", + "save": "Employee saved successfully." + } + }, "general": { "actions": { - "reset": "Reset to original." + "delete": "Delete", + "edit": "Edit", + "reset": "Reset to original.", + "save": "Save" }, "labels": { "actions": "Actions", + "barcode": "Barcode", "in": "In", "loading": "Loading...", + "loadingapp": "Loading Bodyshop.app", + "loadingshop": "Loading shop data...", + "loggingin": "Logging you in...", "na": "N/A", "out": "Out", "save": "Save", + "search": "Search...", "unknown": "Unknown" }, "languages": { @@ -35,24 +138,51 @@ }, "messages": { "unsavedchanges": "You have unsaved changes." + }, + "validation": { + "invalidemail": "Please enter a valid email.", + "required": "This field is required. " } }, "joblines": { + "actions": { + "new": "New Line" + }, + "errors": { + "creating": "Error encountered while creating job line. {{message}}", + "updating": "Error encountered updating job line. {{message}}" + }, "fields": { "act_price": "Actual Price", "db_price": "Database Price", "line_desc": "Line Description", + "line_ind": "S#", + "mod_lb_hrs": "Labor Hours", + "mod_lbr_ty": "Labor Type", + "oem_partno": "OEM Part #", + "op_code_desc": "Operation Code Description", "part_type": "Part Type", + "status": "Status", "unq_seq": "Seq #" + }, + "labels": { + "edit": "Edit Line", + "new": "New Line" + }, + "successes": { + "created": "Job line created successfully.", + "updated": "Job line updated successfully." } }, "jobs": { "actions": { "addDocuments": "Add Job Documents", "addNote": "Add Note", + "changestatus": "Change Status", "convert": "Convert", "postInvoices": "Post Invoices", - "printCenter": "Print Center" + "printCenter": "Print Center", + "schedule": "Schedule" }, "errors": { "creating": "Error encountered while creating job. {{error}}", @@ -104,17 +234,41 @@ "ins_ph1": "File Handler Phone #", "kmin": "Mileage In", "kmout": "Mileage Out", + "labor_rate_desc": "Labor Rate Name", "loss_date": "Loss Date", "loss_desc": "Loss of Use", "other_amount_payable": "Other Amount Payable", "owner": "Owner", "owner_owing": "Cust. Owes", "ownr_ea": "Email", + "ownr_ph1": "Phone 1", "pay_date": "Inspection Date", - "phone1": "Phone 1", "phoneshort": "PH", "policy_no": "Policy #", "ponumber": "PO Number", + "rate_atp": "ATP", + "rate_la1": "LA1 Rate", + "rate_la2": "LA2 Rate", + "rate_la3": "LA3 Rate", + "rate_la4": "LA4 Rate", + "rate_laa": "Aluminum Rate", + "rate_lab": "Labor Rate", + "rate_lad": "Diagnostic Rate", + "rate_lae": "Electrical Rate", + "rate_laf": "Frame Rate", + "rate_lag": "Glass Rate", + "rate_lam": "Mechanical Rate", + "rate_lar": "Refinish Rate", + "rate_las": "Sublet Rate", + "rate_lau": "Aluminum Rate", + "rate_ma2s": "2 Stage Paint Rate", + "rate_ma3s": "3 Stage Paint Rate", + "rate_mabl": "MABL??", + "rate_macs": "MACS??", + "rate_mahw": "Hazardous Waste Rate", + "rate_mapa": "Paint Materials Rate", + "rate_mash": "Shop Material Rate", + "rate_matd": "Tire Disposal Rate", "referralsource": "Referral Source", "regie_number": "Registration #", "repairtotal": "Repair Total", @@ -137,6 +291,7 @@ "vehicle": "Vehicle" }, "labels": { + "appointmentconfirmation": "Send confirmation to customer?", "available_new_jobs": "", "cards": { "appraiser": "Appraiser", @@ -154,8 +309,10 @@ }, "creating_new_job": "Creating new job...", "documents": "Documents", + "existing_jobs": "Existing Jobs", "lines": "Estimate Lines", "notes": "Notes", + "override_header": "Override estimate header on import?", "parts": "Parts", "rates": "Rates", "vehicle_info": "Vehicle" @@ -165,8 +322,9 @@ "converted": "Job converted successfully.", "created": "Job created successfully. Click to view.", "deleted": "Job deleted successfully.", - "save": "Record Saved", - "savetitle": "Record saved successfully." + "save": "Job saved successfully.", + "savetitle": "Record saved successfully.", + "supplemented": "Job supplemented successfully. " } }, "menus": { @@ -177,8 +335,15 @@ "header": { "activejobs": "Active Jobs", "availablejobs": "Available Jobs", + "customers": "Customers", "home": "Home", - "jobs": "Jobs" + "jobs": "Jobs", + "owners": "Owners", + "schedule": "Schedule", + "shop": "My Shop", + "shop_config": "Configuration", + "shop_vendors": "Vendors", + "vehicles": "Vehicles" }, "jobsdetail": { "claimdetail": "Claim Details", @@ -194,6 +359,12 @@ "shops": "My Shops" } }, + "messaging": { + "labels": { + "messaging": "Messaging", + "typeamessage": "Send a message..." + } + }, "notes": { "actions": { "actions": "Actions", @@ -218,16 +389,55 @@ } }, "owners": { + "errors": { + "noaccess": "The record does not exist or you do not have access to it. " + }, "fields": { + "address": "Address", + "allow_text_message": "Permission to Text?", + "name": "Name", "ownr_addr1": "Address", + "ownr_addr2": "Address 2", "ownr_city": "City", + "ownr_ctry": "Country", "ownr_ea": "Email", "ownr_fn": "First Name", "ownr_ln": "Last Name", - "ownr_ph1": "Phone 1" + "ownr_ph1": "Phone 1", + "ownr_st": "State/Province", + "ownr_title": "Title", + "ownr_zip": "Zip/Postal Code", + "preferred_contact": "Preferred Contact Method" }, "labels": { + "create_new": "Create a new owner record.", "existing_owners": "Existing Owners" + }, + "successes": { + "save": "Owner saved successfully." + } + }, + "parts": { + "actions": { + "order": "Order Parts" + } + }, + "parts_orders": { + "errors": { + "creating": "Error encountered when creating parts order. " + }, + "fields": { + "deliver_by": "Deliver By", + "lineremarks": "Line Remarks" + }, + "labels": { + "email": "Send by Email", + "inthisorder": "Parts in this Order", + "orderhistory": "Order History", + "print": "Show Printed Form" + }, + "successes": { + "created": "Parts order created successfully. " } }, "profile": { @@ -238,18 +448,94 @@ "titles": { "app": "Bodyshop by ImEX Systems", "jobs": "All Jobs | $t(titles.app)", + "jobsavailable": "Available Jobs | $t(titles.app)", "jobsdetail": "Job {{ro_number}} | $t(titles.app)", "jobsdocuments": "Job Documents {{ro_number}} | $t(titles.app)", - "profile": "My Profile | $t(titles.app)" + "manageroot": "Home | $t(titles.app)", + "owners": "All Owners | $t(titles.app)", + "profile": "My Profile | $t(titles.app)", + "schedule": "Schedule | $t(titles.app)", + "shop": "My Shop | $t(titles.app)", + "shop_vendors": "Vendors | $t(titles.app)", + "vehicledetail": "Vehicle Details {{vehicle}} | $t(titles.app)", + "vehicles": "All Vehicles | $t(titles.app)" }, "user": { "actions": { - "signout": "Sign Out" + "signout": "Sign Out", + "updateprofile": "Update Profile" + }, + "fields": { + "displayname": "Display Name", + "photourl": "Avatar URL" } }, "vehicles": { + "errors": { + "noaccess": "The vehicle does not exist or you do not have access to it.", + "validation": "Please ensure all fields are entered correctly.", + "validationtitle": "Validation Error" + }, "fields": { - "plate_no": "License Plate" + "description": "Vehicle Description", + "plate_no": "License Plate", + "plate_st": "Plate Jurisdiction", + "trim_color": "Trim Color", + "v_bstyle": "Body Style", + "v_color": "Color", + "v_cond": "Condition", + "v_engine": "Engine", + "v_make_desc": "Make", + "v_makecode": "Make Code", + "v_mldgcode": "Molding Code", + "v_model_desc": "Model", + "v_model_yr": "Year", + "v_options": "Options", + "v_paint_codes": "Paint Codes", + "v_prod_dt": "Production Date", + "v_stage": "Stage", + "v_tone": "Tone", + "v_trimcode": "Trim Code", + "v_type": "Type", + "v_vin": "Vehicle Identification Number" + }, + "successes": { + "save": "Vehicle saved successfully." + } + }, + "vendors": { + "actions": { + "new": "New Vendor" + }, + "errors": { + "deleting": "Error encountered while deleting vendor. ", + "saving": "Error encountered while saving vendor. " + }, + "fields": { + "city": "City", + "cost_center": "Cost Center", + "country": "Country", + "discount": "Discount %", + "display_name": "Display Name", + "due_date": "Payment Due Date", + "email": "Contact Email", + "favorite": "Favorite?", + "name": "Vendor Name", + "prompt_discount": "Prompt Discount %", + "state": "State/Province", + "street1": "Street", + "street2": "Address 2", + "taxid": "Tax ID", + "terms": "Payment Terms", + "zip": "Zip/Postal Code" + }, + "labels": { + "noneselected": "No vendor is selected.", + "search": "Type a Vendor's Name" + }, + "successes": { + "deleted": "Vendor deleted successfully. ", + "saved": "Vendor saved successfully." } } } diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index b45b9e15c..b5a22f871 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -1,5 +1,66 @@ { "translation": { + "allocations": { + "actions": { + "assign": "Asignar" + }, + "errors": { + "deleting": "", + "saving": "", + "validation": "" + }, + "fields": { + "employee": "Asignado a" + }, + "successes": { + "deleted": "", + "save": "" + } + }, + "appointments": { + "actions": { + "cancel": "Cancelar", + "intake": "Consumo", + "new": "Nueva cita", + "reschedule": "Reprogramar", + "viewjob": "Ver trabajo" + }, + "errors": { + "canceling": "Error al cancelar la cita.", + "saving": "Error al programar la cita. {{message}}" + }, + "fields": { + "title": "Título" + }, + "labels": { + "arrivedon": "Llegado el:", + "cancelledappointment": "Cita cancelada para:", + "nodateselected": "No se ha seleccionado ninguna fecha.", + "priorappointments": "Nombramientos previos", + "scheduledfor": "Cita programada para:" + }, + "successes": { + "canceled": "Cita cancelada con éxito.", + "created": "Cita programada con éxito." + } + }, + "associations": { + "actions": { + "activate": "Activar" + }, + "fields": { + "active": "¿Activo?", + "shopname": "Nombre de tienda" + }, + "labels": { + "actions": "Comportamiento" + } + }, + "bodyshop": { + "errors": { + "loading": "No se pueden cargar los detalles de la tienda. Por favor llame al soporte técnico." + } + }, "documents": { "errors": { "deletes3": "Error al eliminar el documento del almacenamiento.", @@ -15,17 +76,59 @@ "insert": "Documento cargado con éxito." } }, + "emails": { + "errors": { + "notsent": "Correo electrónico no enviado Se encontró un error al enviar {{message}}" + }, + "successes": { + "sent": "Correo electrónico enviado con éxito." + } + }, + "employees": { + "actions": { + "new": "Nuevo empleado" + }, + "errors": { + "delete": "Se encontró un error al eliminar al empleado.", + "save": "Se encontró un error al salvar al empleado.", + "validation": "Por favor verifique todos los campos.", + "validationtitle": "No se puede salvar al empleado." + }, + "fields": { + "active": "¿Activo?", + "base_rate": "Tasa básica", + "cost_center": "Centro de costos", + "employee_number": "Numero de empleado", + "first_name": "Nombre de pila", + "flat_rate": "Tarifa plana (deshabilitado es tiempo recto)", + "hire_date": "Fecha de contratación", + "last_name": "Apellido", + "termination_date": "Fecha de conclusión" + }, + "successes": { + "delete": "Empleado eliminado con éxito.", + "save": "Empleado guardado con éxito." + } + }, "general": { "actions": { - "reset": "Restablecer a original." + "delete": "Borrar", + "edit": "Editar", + "reset": "Restablecer a original.", + "save": "Salvar" }, "labels": { "actions": "Comportamiento", + "barcode": "código de barras", "in": "en", "loading": "Cargando...", + "loadingapp": "Cargando Bodyshop.app", + "loadingshop": "Cargando datos de la tienda ...", + "loggingin": "Iniciando sesión ...", "na": "N / A", "out": "Afuera", "save": "Salvar", + "search": "Buscar...", "unknown": "Desconocido" }, "languages": { @@ -35,24 +138,51 @@ }, "messages": { "unsavedchanges": "Usted tiene cambios no guardados." + }, + "validation": { + "invalidemail": "Por favor introduzca una dirección de correo electrónico válida.", + "required": "Este campo es requerido." } }, "joblines": { + "actions": { + "new": "" + }, + "errors": { + "creating": "", + "updating": "" + }, "fields": { "act_price": "Precio actual", "db_price": "Precio de base de datos", "line_desc": "Descripción de línea", + "line_ind": "S#", + "mod_lb_hrs": "Horas laborales", + "mod_lbr_ty": "Tipo de trabajo", + "oem_partno": "OEM parte #", + "op_code_desc": "", "part_type": "Tipo de parte", + "status": "Estado", "unq_seq": "Seq #" + }, + "labels": { + "edit": "Línea de edición", + "new": "Nueva línea" + }, + "successes": { + "created": "", + "updated": "" } }, "jobs": { "actions": { "addDocuments": "Agregar documentos de trabajo", "addNote": "Añadir la nota", + "changestatus": "Cambiar Estado", "convert": "Convertir", "postInvoices": "Contabilizar facturas", - "printCenter": "Centro de impresión" + "printCenter": "Centro de impresión", + "schedule": "Programar" }, "errors": { "creating": "", @@ -104,17 +234,41 @@ "ins_ph1": "File Handler Phone #", "kmin": "Kilometraje en", "kmout": "Kilometraje", + "labor_rate_desc": "Nombre de la tasa laboral", "loss_date": "Fecha de pérdida", "loss_desc": "Perdida de uso", "other_amount_payable": "Otra cantidad a pagar", "owner": "Propietario", "owner_owing": "Cust. Debe", "ownr_ea": "Email", + "ownr_ph1": "Teléfono 1", "pay_date": "Fecha de inspección", - "phone1": "Teléfono 1", "phoneshort": "PH", "policy_no": "Política #", "ponumber": "numero postal", + "rate_atp": "ATP", + "rate_la1": "Tarifa LA1", + "rate_la2": "Tarifa LA2", + "rate_la3": "Tarifa LA3", + "rate_la4": "Tarifa LA4", + "rate_laa": "Tasa de aluminio", + "rate_lab": "Tasa de trabajo", + "rate_lad": "Tasa de diagnóstico", + "rate_lae": "tarifa eléctrica", + "rate_laf": "Cuadros por segundo", + "rate_lag": "Tasa de vidrio", + "rate_lam": "Tasa mecánica", + "rate_lar": "Tasa de acabado", + "rate_las": "Tasa de subarriendo", + "rate_lau": "Tasa de aluminio", + "rate_ma2s": "Velocidad de pintura de 2 etapas", + "rate_ma3s": "Tasa de pintura de 3 etapas", + "rate_mabl": "MABL ??", + "rate_macs": "MACS ??", + "rate_mahw": "Tasa de residuos peligrosos", + "rate_mapa": "Tasa de materiales de pintura", + "rate_mash": "Comprar material de tarifa", + "rate_matd": "Tasa de eliminación de neumáticos", "referralsource": "Fuente de referencia", "regie_number": "N. ° de registro", "repairtotal": "Reparación total", @@ -137,6 +291,7 @@ "vehicle": "Vehículo" }, "labels": { + "appointmentconfirmation": "¿Enviar confirmación al cliente?", "available_new_jobs": "", "cards": { "appraiser": "Tasador", @@ -154,8 +309,10 @@ }, "creating_new_job": "Creando nuevo trabajo ...", "documents": "documentos", + "existing_jobs": "Empleos existentes", "lines": "Líneas estimadas", "notes": "Notas", + "override_header": "¿Anular encabezado estimado al importar?", "parts": "Partes", "rates": "Tarifas", "vehicle_info": "Vehículo" @@ -165,8 +322,9 @@ "converted": "Trabajo convertido con éxito.", "created": "Trabajo creado con éxito. Click para ver.", "deleted": "Trabajo eliminado con éxito.", - "save": "Registro guardado", - "savetitle": "Registro guardado con éxito." + "save": "Trabajo guardado con éxito.", + "savetitle": "Registro guardado con éxito.", + "supplemented": "Trabajo complementado con éxito." } }, "menus": { @@ -177,8 +335,15 @@ "header": { "activejobs": "Empleos activos", "availablejobs": "Trabajos disponibles", + "customers": "Clientes", "home": "Casa", - "jobs": "Trabajos" + "jobs": "Trabajos", + "owners": "propietarios", + "schedule": "Programar", + "shop": "Mi tienda", + "shop_config": "Configuración", + "shop_vendors": "Vendedores", + "vehicles": "Vehículos" }, "jobsdetail": { "claimdetail": "Detalles de la reclamación", @@ -194,6 +359,12 @@ "shops": "Mis tiendas" } }, + "messaging": { + "labels": { + "messaging": "Mensajería", + "typeamessage": "Enviar un mensaje..." + } + }, "notes": { "actions": { "actions": "Comportamiento", @@ -218,16 +389,55 @@ } }, "owners": { + "errors": { + "noaccess": "El registro no existe o no tiene acceso a él." + }, "fields": { + "address": "Dirección", + "allow_text_message": "Permiso de texto?", + "name": "Nombre", "ownr_addr1": "Dirección", + "ownr_addr2": "Dirección 2", "ownr_city": "ciudad", + "ownr_ctry": "País", "ownr_ea": "Email", "ownr_fn": "Nombre de pila", "ownr_ln": "Apellido", - "ownr_ph1": "" + "ownr_ph1": "Teléfono 1", + "ownr_st": "Provincia del estado", + "ownr_title": "Título", + "ownr_zip": "código postal", + "preferred_contact": "Método de Contacto Preferido" }, "labels": { + "create_new": "Crea un nuevo registro de propietario.", "existing_owners": "Propietarios existentes" + }, + "successes": { + "save": "Propietario guardado con éxito." + } + }, + "parts": { + "actions": { + "order": "Pedido de piezas" + } + }, + "parts_orders": { + "errors": { + "creating": "Se encontró un error al crear el pedido de piezas." + }, + "fields": { + "deliver_by": "Entregado por", + "lineremarks": "Comentarios de línea" + }, + "labels": { + "email": "Enviar por correo electrónico", + "inthisorder": "Partes en este pedido", + "orderhistory": "Historial de pedidos", + "print": "Mostrar formulario impreso" + }, + "successes": { + "created": "Pedido de piezas creado con éxito." } }, "profile": { @@ -238,18 +448,94 @@ "titles": { "app": "Carrocería de ImEX Systems", "jobs": "Todos los trabajos | $t(titles.app)", + "jobsavailable": "Empleos disponibles | $t(titles.app)", "jobsdetail": "Trabajo {{ro_number}} | $t(titles.app)", "jobsdocuments": "Documentos de trabajo {{ro_number}} | $ t (títulos.app)", - "profile": "Mi perfil | $t(titles.app)" + "manageroot": "Casa | $t(titles.app)", + "owners": "Todos los propietarios | $t(titles.app)", + "profile": "Mi perfil | $t(titles.app)", + "schedule": "Horario | $t(titles.app)", + "shop": "Mi tienda | $t(titles.app)", + "shop_vendors": "Vendedores | $t(titles.app)", + "vehicledetail": "Detalles del vehículo {{vehicle}} | $t(titles.app)", + "vehicles": "Todos los vehiculos | $t(titles.app)" }, "user": { "actions": { - "signout": "desconectar" + "signout": "desconectar", + "updateprofile": "Actualización del perfil" + }, + "fields": { + "displayname": "Nombre para mostrar", + "photourl": "URL de avatar" } }, "vehicles": { + "errors": { + "noaccess": "El vehículo no existe o usted no tiene acceso a él.", + "validation": "Asegúrese de que todos los campos se ingresen correctamente.", + "validationtitle": "Error de validacion" + }, "fields": { - "plate_no": "Placa" + "description": "Descripcion del vehiculo", + "plate_no": "Placa", + "plate_st": "Jurisdicción de placas", + "trim_color": "Recortar color", + "v_bstyle": "Tipo de cuerpo", + "v_color": "Color", + "v_cond": "condición", + "v_engine": "Motor", + "v_make_desc": "Hacer", + "v_makecode": "Hacer código", + "v_mldgcode": "Código de moldeo", + "v_model_desc": "Modelo", + "v_model_yr": "año", + "v_options": "Opciones", + "v_paint_codes": "Códigos de pintura", + "v_prod_dt": "Fecha de producción", + "v_stage": "Escenario", + "v_tone": "Tono", + "v_trimcode": "Código de recorte", + "v_type": "Tipo", + "v_vin": "Número de identificación del vehículo" + }, + "successes": { + "save": "Vehículo guardado con éxito." + } + }, + "vendors": { + "actions": { + "new": "Nuevo vendedor" + }, + "errors": { + "deleting": "Se encontró un error al eliminar el proveedor.", + "saving": "Se encontró un error al guardar el proveedor." + }, + "fields": { + "city": "ciudad", + "cost_center": "Centro de costos", + "country": "País", + "discount": "% De descuento", + "display_name": "Nombre para mostrar", + "due_date": "Fecha de vencimiento del pago", + "email": "Email de contacto", + "favorite": "¿Favorito?", + "name": "Nombre del vendedor", + "prompt_discount": "Descuento pronto", + "state": "Provincia del estado", + "street1": "calle", + "street2": "Dirección 2", + "taxid": "Identificación del impuesto", + "terms": "Términos de pago", + "zip": "código postal" + }, + "labels": { + "noneselected": "Ningún vendedor está seleccionado.", + "search": "Escriba el nombre de un proveedor" + }, + "successes": { + "deleted": "Proveedor eliminado correctamente.", + "saved": "Proveedor guardado con éxito." } } } diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 676a09487..df942272d 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -1,5 +1,66 @@ { "translation": { + "allocations": { + "actions": { + "assign": "Attribuer" + }, + "errors": { + "deleting": "", + "saving": "", + "validation": "" + }, + "fields": { + "employee": "Alloué à" + }, + "successes": { + "deleted": "", + "save": "" + } + }, + "appointments": { + "actions": { + "cancel": "annuler", + "intake": "Admission", + "new": "Nouveau rendez-vous", + "reschedule": "Replanifier", + "viewjob": "Voir le travail" + }, + "errors": { + "canceling": "Erreur lors de l'annulation du rendez-vous.", + "saving": "Erreur lors de la planification du rendez-vous. {{message}}" + }, + "fields": { + "title": "Titre" + }, + "labels": { + "arrivedon": "Arrivé le:", + "cancelledappointment": "Rendez-vous annulé pour:", + "nodateselected": "Aucune date n'a été sélectionnée.", + "priorappointments": "Rendez-vous précédents", + "scheduledfor": "Rendez-vous prévu pour:" + }, + "successes": { + "canceled": "Rendez-vous annulé avec succès.", + "created": "Rendez-vous planifié avec succès." + } + }, + "associations": { + "actions": { + "activate": "Activer" + }, + "fields": { + "active": "Actif?", + "shopname": "nom de la boutique" + }, + "labels": { + "actions": "actes" + } + }, + "bodyshop": { + "errors": { + "loading": "Impossible de charger les détails de la boutique. Veuillez appeler le support technique." + } + }, "documents": { "errors": { "deletes3": "Erreur lors de la suppression du document du stockage.", @@ -15,17 +76,59 @@ "insert": "Document téléchargé avec succès." } }, + "emails": { + "errors": { + "notsent": "Courriel non envoyé. Erreur rencontrée lors de l'envoi de {{message}}" + }, + "successes": { + "sent": "E-mail envoyé avec succès." + } + }, + "employees": { + "actions": { + "new": "Nouvel employé" + }, + "errors": { + "delete": "Erreur rencontrée lors de la suppression de l'employé.", + "save": "Une erreur s'est produite lors de l'enregistrement de l'employé.", + "validation": "Veuillez cocher tous les champs.", + "validationtitle": "Impossible d'enregistrer l'employé." + }, + "fields": { + "active": "Actif?", + "base_rate": "Taux de base", + "cost_center": "Centre de coûts", + "employee_number": "Numéro d'employé", + "first_name": "Prénom", + "flat_rate": "Taux fixe (désactivé est le temps normal)", + "hire_date": "Date d'embauche", + "last_name": "Nom de famille", + "termination_date": "Date de résiliation" + }, + "successes": { + "delete": "L'employé a bien été supprimé.", + "save": "L'employé a enregistré avec succès." + } + }, "general": { "actions": { - "reset": "Rétablir l'original." + "delete": "Effacer", + "edit": "modifier", + "reset": "Rétablir l'original.", + "save": "sauvegarder" }, "labels": { "actions": "actes", + "barcode": "code à barre", "in": "dans", "loading": "Chargement...", + "loadingapp": "Chargement de Bodyshop.app", + "loadingshop": "Chargement des données de la boutique ...", + "loggingin": "Vous connecter ...", "na": "N / A", "out": "En dehors", "save": "sauvegarder", + "search": "Chercher...", "unknown": "Inconnu" }, "languages": { @@ -35,24 +138,51 @@ }, "messages": { "unsavedchanges": "Vous avez des changements non enregistrés." + }, + "validation": { + "invalidemail": "S'il vous plaît entrer un email valide.", + "required": "Ce champ est requis." } }, "joblines": { + "actions": { + "new": "" + }, + "errors": { + "creating": "", + "updating": "" + }, "fields": { "act_price": "Prix actuel", "db_price": "Prix de la base de données", "line_desc": "Description de la ligne", + "line_ind": "S#", + "mod_lb_hrs": "Heures de travail", + "mod_lbr_ty": "Type de travail", + "oem_partno": "Pièce OEM #", + "op_code_desc": "", "part_type": "Type de pièce", + "status": "Statut", "unq_seq": "Seq #" + }, + "labels": { + "edit": "Ligne d'édition", + "new": "Nouvelle ligne" + }, + "successes": { + "created": "", + "updated": "" } }, "jobs": { "actions": { "addDocuments": "Ajouter des documents de travail", "addNote": "Ajouter une note", + "changestatus": "Changer le statut", "convert": "Convertir", "postInvoices": "Poster des factures", - "printCenter": "Centre d'impression" + "printCenter": "Centre d'impression", + "schedule": "Programme" }, "errors": { "creating": "", @@ -104,17 +234,41 @@ "ins_ph1": "Numéro de téléphone du gestionnaire de fichiers", "kmin": "Kilométrage en", "kmout": "Kilométrage hors", + "labor_rate_desc": "Nom du taux de main-d'œuvre", "loss_date": "Date de perte", "loss_desc": "Perte d'usage", "other_amount_payable": "Autre montant à payer", "owner": "Propriétaire", "owner_owing": "Cust. Owes", "ownr_ea": "Email", + "ownr_ph1": "Téléphone 1", "pay_date": "Date d'inspection", - "phone1": "Téléphone 1", "phoneshort": "PH", "policy_no": "Politique #", "ponumber": "Numéro de bon de commande", + "rate_atp": "ATP", + "rate_la1": "Taux LA1", + "rate_la2": "Taux LA2", + "rate_la3": "Taux LA3", + "rate_la4": "Taux LA4", + "rate_laa": "Taux d'aluminium", + "rate_lab": "Taux de la main-d'œuvre", + "rate_lad": "Taux de diagnostic", + "rate_lae": "Tarif électrique", + "rate_laf": "Taux de trame", + "rate_lag": "Taux de verre", + "rate_lam": "Taux mécanique", + "rate_lar": "Taux de finition", + "rate_las": "Taux de sous-location", + "rate_lau": "Taux d'aluminium", + "rate_ma2s": "Taux de peinture en 2 étapes", + "rate_ma3s": "Taux de peinture en 3 étapes", + "rate_mabl": "MABL ??", + "rate_macs": "MACS ??", + "rate_mahw": "Taux de déchets dangereux", + "rate_mapa": "Taux de matériaux de peinture", + "rate_mash": "Tarif du matériel de la boutique", + "rate_matd": "Taux d'élimination des pneus", "referralsource": "Source de référence", "regie_number": "Enregistrement #", "repairtotal": "Réparation totale", @@ -137,6 +291,7 @@ "vehicle": "Véhicule" }, "labels": { + "appointmentconfirmation": "Envoyer une confirmation au client?", "available_new_jobs": "", "cards": { "appraiser": "Expert", @@ -154,8 +309,10 @@ }, "creating_new_job": "Création d'un nouvel emploi ...", "documents": "Les documents", + "existing_jobs": "Emplois existants", "lines": "Estimer les lignes", "notes": "Remarques", + "override_header": "Remplacer l'en-tête d'estimation à l'importation?", "parts": "les pièces", "rates": "Les taux", "vehicle_info": "Véhicule" @@ -165,8 +322,9 @@ "converted": "Travail converti avec succès.", "created": "Le travail a été créé avec succès. Clique pour voir.", "deleted": "Le travail a bien été supprimé.", - "save": "Enregistrement enregistré", - "savetitle": "Enregistrement enregistré avec succès." + "save": "Le travail a été enregistré avec succès.", + "savetitle": "Enregistrement enregistré avec succès.", + "supplemented": "Travail complété avec succès." } }, "menus": { @@ -177,8 +335,15 @@ "header": { "activejobs": "Emplois actifs", "availablejobs": "Emplois disponibles", + "customers": "Les clients", "home": "Accueil", - "jobs": "Emplois" + "jobs": "Emplois", + "owners": "Propriétaires", + "schedule": "Programme", + "shop": "Mon magasin", + "shop_config": "Configuration", + "shop_vendors": "Vendeurs", + "vehicles": "Véhicules" }, "jobsdetail": { "claimdetail": "Détails de la réclamation", @@ -194,6 +359,12 @@ "shops": "Mes boutiques" } }, + "messaging": { + "labels": { + "messaging": "Messagerie", + "typeamessage": "Envoyer un message..." + } + }, "notes": { "actions": { "actions": "actes", @@ -218,16 +389,55 @@ } }, "owners": { + "errors": { + "noaccess": "L'enregistrement n'existe pas ou vous n'y avez pas accès." + }, "fields": { + "address": "Adresse", + "allow_text_message": "Autorisation de texte?", + "name": "Prénom", "ownr_addr1": "Adresse", + "ownr_addr2": "Adresse 2 ", "ownr_city": "Ville", + "ownr_ctry": "Pays", "ownr_ea": "Email", "ownr_fn": "Prénom", "ownr_ln": "Nom de famille", - "ownr_ph1": "" + "ownr_ph1": "Téléphone 1", + "ownr_st": "Etat / Province", + "ownr_title": "Titre", + "ownr_zip": "Zip / code postal", + "preferred_contact": "Méthode de contact préférée" }, "labels": { + "create_new": "Créez un nouvel enregistrement de propriétaire.", "existing_owners": "Propriétaires existants" + }, + "successes": { + "save": "Le propriétaire a bien enregistré." + } + }, + "parts": { + "actions": { + "order": "Commander des pièces" + } + }, + "parts_orders": { + "errors": { + "creating": "Erreur rencontrée lors de la création de la commande de pièces." + }, + "fields": { + "deliver_by": "Livrer par", + "lineremarks": "Remarques sur la ligne" + }, + "labels": { + "email": "Envoyé par email", + "inthisorder": "Pièces dans cette commande", + "orderhistory": "Historique des commandes", + "print": "Afficher le formulaire imprimé" + }, + "successes": { + "created": "Commande de pièces créée avec succès." } }, "profile": { @@ -238,18 +448,94 @@ "titles": { "app": "Carrosserie par ImEX Systems", "jobs": "Tous les emplois | $t(titles.app)", + "jobsavailable": "Emplois disponibles | $t(titles.app)", "jobsdetail": "Travail {{ro_number}} | $t(titles.app)", "jobsdocuments": "Documents de travail {{ro_number}} | $ t (titres.app)", - "profile": "Mon profil | $t(titles.app)" + "manageroot": "Accueil | $t(titles.app)", + "owners": "Tous les propriétaires | $t(titles.app)", + "profile": "Mon profil | $t(titles.app)", + "schedule": "Horaire | $t(titles.app)", + "shop": "Mon magasin | $t(titles.app)", + "shop_vendors": "Vendeurs | $t(titles.app)", + "vehicledetail": "Détails du véhicule {{vehicle} | $t(titles.app)", + "vehicles": "Tous les véhicules | $t(titles.app)" }, "user": { "actions": { - "signout": "Déconnexion" + "signout": "Déconnexion", + "updateprofile": "Mettre à jour le profil" + }, + "fields": { + "displayname": "Afficher un nom", + "photourl": "URL de l'avatar" } }, "vehicles": { + "errors": { + "noaccess": "Le véhicule n'existe pas ou vous n'y avez pas accès.", + "validation": "Veuillez vous assurer que tous les champs sont correctement entrés.", + "validationtitle": "Erreur de validation" + }, "fields": { - "plate_no": "Plaque d'immatriculation" + "description": "Description du véhicule", + "plate_no": "Plaque d'immatriculation", + "plate_st": "Juridiction de la plaque", + "trim_color": "Couleur de garniture", + "v_bstyle": "Style corporel", + "v_color": "Couleur", + "v_cond": "Etat", + "v_engine": "moteur", + "v_make_desc": "Faire", + "v_makecode": "Faire du code", + "v_mldgcode": "Code de moulage", + "v_model_desc": "Modèle", + "v_model_yr": "année", + "v_options": "Les options", + "v_paint_codes": "Codes de peinture", + "v_prod_dt": "Date de production", + "v_stage": "Étape", + "v_tone": "ton", + "v_trimcode": "Code de coupe", + "v_type": "Type", + "v_vin": "Plaque d'immatriculation" + }, + "successes": { + "save": "Le véhicule a été enregistré avec succès." + } + }, + "vendors": { + "actions": { + "new": "Nouveau vendeur" + }, + "errors": { + "deleting": "Erreur rencontrée lors de la suppression du fournisseur.", + "saving": "Erreur rencontrée lors de l'enregistrement du fournisseur." + }, + "fields": { + "city": "Ville", + "cost_center": "Centre de coûts", + "country": "Pays", + "discount": "Remise %", + "display_name": "Afficher un nom", + "due_date": "Date limite de paiement", + "email": "Email du contact", + "favorite": "Préféré?", + "name": "Nom du vendeur", + "prompt_discount": "Remise rapide%", + "state": "Etat / Province", + "street1": "rue", + "street2": "Adresse 2 ", + "taxid": "Identifiant de taxe", + "terms": "Modalités de paiement", + "zip": "Zip / code postal" + }, + "labels": { + "noneselected": "Aucun fournisseur n'est sélectionné.", + "search": "Tapez le nom d'un vendeur" + }, + "successes": { + "deleted": "Le fournisseur a bien été supprimé.", + "saved": "Le fournisseur a bien enregistré." } } } diff --git a/client/src/utils/CurrencyFormatter.jsx b/client/src/utils/CurrencyFormatter.jsx index 083c2cf70..babb6cc85 100644 --- a/client/src/utils/CurrencyFormatter.jsx +++ b/client/src/utils/CurrencyFormatter.jsx @@ -5,6 +5,8 @@ export default function CurrencyFormatter(props) { return ( {props.children || ""}; + return {props.children || null}; } export function DateTimeFormatter(props) { diff --git a/client/src/utils/dates.js b/client/src/utils/dates.js new file mode 100644 index 000000000..60d0c25ef --- /dev/null +++ b/client/src/utils/dates.js @@ -0,0 +1,170 @@ +/* eslint no-fallthrough: off */ +import * as dates from "date-arithmetic"; + +export { + milliseconds, + seconds, + minutes, + hours, + month, + startOf, + endOf, + add, + eq, + gte, + gt, + lte, + lt, + inRange, + min, + max +} from "date-arithmetic"; + +const MILLI = { + seconds: 1000, + minutes: 1000 * 60, + hours: 1000 * 60 * 60, + day: 1000 * 60 * 60 * 24 +}; + +const MONTHS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; + +export function monthsInYear(year) { + let date = new Date(year, 0, 1); + + return MONTHS.map(i => dates.month(date, i)); +} + +export function firstVisibleDay(date, localizer) { + let firstOfMonth = dates.startOf(date, "month"); + + return dates.startOf(firstOfMonth, "week", localizer.startOfWeek()); +} + +export function lastVisibleDay(date, localizer) { + let endOfMonth = dates.endOf(date, "month"); + + return dates.endOf(endOfMonth, "week", localizer.startOfWeek()); +} + +export function visibleDays(date, localizer) { + let current = firstVisibleDay(date, localizer), + last = lastVisibleDay(date, localizer), + days = []; + + while (dates.lte(current, last, "day")) { + days.push(current); + current = dates.add(current, 1, "day"); + } + + return days; +} + +export function ceil(date, unit) { + let floor = dates.startOf(date, unit); + + return dates.eq(floor, date) ? floor : dates.add(floor, 1, unit); +} + +export function range(start, end, unit = "day") { + let current = start, + days = []; + + while (dates.lte(current, end, unit)) { + days.push(current); + current = dates.add(current, 1, unit); + } + + return days; +} + +export function merge(date, time) { + if (time == null && date == null) return null; + + if (time == null) time = new Date(); + if (date == null) date = new Date(); + + date = dates.startOf(date, "day"); + date = dates.hours(date, dates.hours(time)); + date = dates.minutes(date, dates.minutes(time)); + date = dates.seconds(date, dates.seconds(time)); + return dates.milliseconds(date, dates.milliseconds(time)); +} + +export function eqTime(dateA, dateB) { + return ( + dates.hours(dateA) === dates.hours(dateB) && + dates.minutes(dateA) === dates.minutes(dateB) && + dates.seconds(dateA) === dates.seconds(dateB) + ); +} + +export function isJustDate(date) { + return ( + dates.hours(date) === 0 && + dates.minutes(date) === 0 && + dates.seconds(date) === 0 && + dates.milliseconds(date) === 0 + ); +} + +export function duration(start, end, unit, firstOfWeek) { + if (unit === "day") unit = "date"; + return Math.abs( + dates[unit](start, undefined, firstOfWeek) - + dates[unit](end, undefined, firstOfWeek) + ); +} + +export function diff(dateA, dateB, unit) { + if (!unit || unit === "milliseconds") return Math.abs(+dateA - +dateB); + + // the .round() handles an edge case + // with DST where the total won't be exact + // since one day in the range may be shorter/longer by an hour + return Math.round( + Math.abs( + +dates.startOf(dateA, unit) / MILLI[unit] - + +dates.startOf(dateB, unit) / MILLI[unit] + ) + ); +} + +export function total(date, unit) { + let ms = date.getTime(), + div = 1; + + switch (unit) { + case "week": + div *= 7; + case "day": + div *= 24; + case "hours": + div *= 60; + case "minutes": + div *= 60; + case "seconds": + div *= 1000; + } + + return ms / div; +} + +export function week(date) { + var d = new Date(date); + d.setHours(0, 0, 0); + d.setDate(d.getDate() + 4 - (d.getDay() || 7)); + return Math.ceil(((d - new Date(d.getFullYear(), 0, 1)) / 8.64e7 + 1) / 7); +} + +export function today() { + return dates.startOf(new Date(), "day"); +} + +export function yesterday() { + return dates.add(dates.startOf(new Date(), "day"), -1, "day"); +} + +export function tomorrow() { + return dates.add(dates.startOf(new Date(), "day"), 1, "day"); +} diff --git a/client/src/utils/sorters.js b/client/src/utils/sorters.js index 6010a29a7..7064167d7 100644 --- a/client/src/utils/sorters.js +++ b/client/src/utils/sorters.js @@ -1,9 +1,11 @@ export function alphaSort(a, b) { - if (a > b) { - return false; - } - if (b > a) { - return true; - } - return true; + let A; + let B; + A = a ? a.toLowerCase() : ""; + B = b ? b.toLowerCase() : ""; + if (A < B) + //sort string ascending + return -1; + if (A > B) return 1; + return 0; //default return value (no sorting) } diff --git a/client/yarn.lock b/client/yarn.lock index d73e081cd..6c2f02c81 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -88,977 +88,897 @@ fast-json-stable-stringify "^2.0.0" tslib "^1.10.0" -"@babel/code-frame@7.5.5", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.8.3" -"@babel/core@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" - integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== +"@babel/compat-data@^7.8.4": + version "7.8.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.5.tgz#d28ce872778c23551cbb9432fc68d28495b613b9" + integrity sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg== dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" - "@babel/helpers" "^7.6.0" - "@babel/parser" "^7.6.0" - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" - "@babel/types" "^7.6.0" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" + browserslist "^4.8.5" + invariant "^2.2.4" + semver "^5.5.0" -"@babel/core@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab" - integrity sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ== +"@babel/core@7.8.4", "@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" + integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" convert-source-map "^1.7.0" debug "^4.1.0" + gensync "^1.0.0-beta.1" json5 "^2.1.0" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.4.5": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" - integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== +"@babel/generator@^7.4.0", "@babel/generator@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" + integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.7" - "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.7" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.4.0", "@babel/generator@^7.6.0", "@babel/generator@^7.7.4", "@babel/generator@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" - integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== - dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" - integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" - integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz#da188d247508b65375b2c30cf59de187be6b0c66" - integrity sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA== +"@babel/helper-builder-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz#dee98d7d79cc1f003d80b76fe01c7f8945665ff6" + integrity sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" - integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== +"@babel/helper-call-delegate@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" + integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-create-class-features-plugin@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d" - integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA== +"@babel/helper-compilation-targets@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz#03d7ecd454b7ebe19a254f76617e61770aed2c88" + integrity sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-member-expression-to-functions" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/compat-data" "^7.8.4" + browserslist "^4.8.5" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" -"@babel/helper-create-regexp-features-plugin@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" - integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" + integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== dependencies: - "@babel/helper-regex" "^7.4.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" + integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== + dependencies: + "@babel/helper-regex" "^7.8.3" regexpu-core "^4.6.0" -"@babel/helper-define-map@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" - integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" - integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== dependencies: - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" - integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== dependencies: - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-get-function-arity@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" - integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-hoist-variables@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" - integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-member-expression-to-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74" - integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw== +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" - integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" - integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== +"@babel/helper-module-transforms@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" + integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-simple-access" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2" - integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg== +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" - integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" - integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-wrap-function" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-replace-supers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2" - integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg== +"@babel/helper-replace-supers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" + integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-simple-access@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" - integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== dependencies: - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-split-export-declaration@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" - integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-wrap-function@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" - integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helpers@^7.6.0", "@babel/helpers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" - integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== dependencies: - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.7.4", "@babel/parser@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" - integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" + integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== -"@babel/plugin-proposal-async-generator-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" - integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" - "@babel/plugin-syntax-async-generators" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba" - integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw== +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-decorators@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.4.tgz#58c1e21d21ea12f9f5f0a757e46e687b94a7ab2b" - integrity sha512-GftcVDcLCwVdzKmwOBDjATd548+IE+mBo7ttgatqNDR7VG7GqIuZPtRWlMLHbhTXhcnFZiGER8iIYl1n/imtsg== +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.7.4" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" -"@babel/plugin-proposal-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" - integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" - integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz#7db302c83bc30caa89e38fee935635ef6bd11c28" - integrity sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.7.4.tgz#7819a17445f4197bb9575e5750ed349776da858a" - integrity sha512-CG605v7lLpVgVldSY6kxsN9ui1DxFOyepBfuX2AzU2TNriMAYApoU55mrGw9Jr4TlrTzPCG10CL8YXyi+E/iPw== +"@babel/plugin-proposal-numeric-separator@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-numeric-separator" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-object-rest-spread@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz#cc57849894a5c774214178c8ab64f6334ec8af71" - integrity sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ== +"@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.7.4", "@babel/plugin-proposal-object-rest-spread@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz#9f27075004ab99be08c5c1bd653a2985813cb370" - integrity sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ== +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" - integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz#3f04c2de1a942cbd3008324df8144b9cbc0ca0ba" - integrity sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A== +"@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" + integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.7.4" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-unicode-property-regex@^7.7.4", "@babel/plugin-proposal-unicode-property-regex@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz#433fa9dac64f953c12578b29633f456b68831c4e" - integrity sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w== +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-async-generators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" - integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-decorators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.7.4.tgz#3c91cfee2a111663ff3ac21b851140f5a52a4e0b" - integrity sha512-0oNLWNH4k5ZbBVfAwiTU53rKFWIeTh6ZlaWOXWJc4ywxs0tjz5fc3uZ6jKAnZSxN98eXVgg7bJIuzjX+3SXY+A== +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@7.7.4", "@babel/plugin-syntax-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" - integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz#6d91b59e1a0e4c17f36af2e10dd64ef220919d7b" - integrity sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw== +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" - integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-jsx@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz#dab2b56a36fb6c3c222a1fbc71f7bf97f327a9ec" - integrity sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz#e53b751d0c3061b1ba3089242524b65a7a9da12b" - integrity sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw== +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-numeric-separator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.7.4.tgz#39818f8042a09d4c6248d85d82555369da4da5c4" - integrity sha512-vmlUUBlLuFnbpaR+1kKIdo62xQEN+THWbtAHSEilo+0rHl2dKKCn6GLUVKpI848wL/T0ZPQgAy8asRJ9yYEjog== +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" - integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" - integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901" - integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA== +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-top-level-await@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" - integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-typescript@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b" - integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ== +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-arrow-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" - integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" -"@babel/plugin-transform-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" - integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-block-scoped-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" - integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoping@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" - integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" - integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== +"@babel/plugin-transform-classes@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" + integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-define-map" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" - integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@7.7.4", "@babel/plugin-transform-destructuring@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" - integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" + integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.7.4", "@babel/plugin-transform-dotall-regex@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz#3e9713f1b69f339e87fa796b097d73ded16b937b" - integrity sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg== +"@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-duplicate-keys@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" - integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" - integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a" - integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA== +"@babel/plugin-transform-flow-strip-types@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz#da705a655466b2a9b36046b57bf0cbcd53551bd4" + integrity sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-for-of@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" - integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== +"@babel/plugin-transform-for-of@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" + integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" - integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" - integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-member-expression-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" - integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.7.4", "@babel/plugin-transform-modules-amd@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" - integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== +"@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.7.4", "@babel/plugin-transform-modules-commonjs@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" - integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== +"@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.7.4" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" - integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== +"@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" - integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== +"@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== dependencies: - "@babel/helper-module-transforms" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" - integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" -"@babel/plugin-transform-new-target@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" - integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-object-super@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" - integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.7.4", "@babel/plugin-transform-parameters@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz#7a884b2460164dc5f194f668332736584c760007" - integrity sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew== +"@babel/plugin-transform-parameters@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" + integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== dependencies: - "@babel/helper-call-delegate" "^7.7.4" - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" - integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.7.4.tgz#499cf732a21ffd62cc4b0016e27c3906097f8982" - integrity sha512-U6XkHZ8RnmeEb8jBUOpeo6oFka5RhLgxAVvK4/fBbwoYlsHQYLb8I37ymTPDVsrWjqb94+hueuWQA/1OAA4rAQ== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz#784c25294bddaad2323eb4ff0c9f4a3f6c87d6bc" + integrity sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-display-name@7.7.4", "@babel/plugin-transform-react-display-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd" - integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw== +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-jsx-self@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.7.4.tgz#81b8fbfd14b2215e8f1c2c3adfba266127b0231c" - integrity sha512-PWYjSfqrO273mc1pKCRTIJXyqfc9vWYBax88yIhQb+bpw3XChVC7VWS4VwRVs63wFHKxizvGSd00XEr+YB9Q2A== +"@babel/plugin-transform-react-jsx-self@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz#c4f178b2aa588ecfa8d077ea80d4194ee77ed702" + integrity sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx-source@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz#8994b1bf6014b133f5a46d3b7d1ee5f5e3e72c10" - integrity sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg== +"@babel/plugin-transform-react-jsx-source@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz#951e75a8af47f9f120db731be095d2b2c34920e0" + integrity sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.7.tgz#5cbaa7445b4a09f774029f3cc7bb448ff3122a5d" - integrity sha512-SlPjWPbva2+7/ZJbGcoqjl4LsQaLpKEzxW9hcxU7675s24JmdotJOSJ4cgAbV82W3FcZpHIGmRZIlUL8ayMvjw== +"@babel/plugin-transform-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz#4220349c0390fdefa505365f68c103562ab2fc4a" + integrity sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g== dependencies: - "@babel/helper-builder-react-jsx" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/helper-builder-react-jsx" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.7.4", "@babel/plugin-transform-regenerator@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" - integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== +"@babel/plugin-transform-regenerator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" + integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== dependencies: regenerator-transform "^0.14.0" -"@babel/plugin-transform-reserved-words@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" - integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-runtime@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.4.tgz#51fe458c1c1fa98a8b07934f4ed38b6cd62177a6" - integrity sha512-O8kSkS5fP74Ad/8pfsCMGa8sBRdLxYoSReaARRNSz3FbFQj3z/QUvoUmJ28gn9BO93YfnXc3j+Xyaqe8cKDNBQ== +"@babel/plugin-transform-runtime@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" + integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" - integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" - integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-sticky-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" - integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" -"@babel/plugin-transform-template-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" - integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" - integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typescript@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz#2974fd05f4e85c695acaf497f432342de9fc0636" - integrity sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg== +"@babel/plugin-transform-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917" + integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.7.4" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" -"@babel/plugin-transform-unicode-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" - integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.4.tgz#ccaf309ae8d1ee2409c85a4e2b5e280ceee830f8" - integrity sha512-Dg+ciGJjwvC1NIe/DGblMbcGq1HOtKbw8RLl4nIjlfcILKEOkWT/vRqPpumswABEBVudii6dnVwrBtzD7ibm4g== +"@babel/preset-env@7.8.4", "@babel/preset-env@^7.4.5": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz#9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e" + integrity sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.7.4" - "@babel/plugin-proposal-dynamic-import" "^7.7.4" - "@babel/plugin-proposal-json-strings" "^7.7.4" - "@babel/plugin-proposal-object-rest-spread" "^7.7.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.7.4" - "@babel/plugin-syntax-async-generators" "^7.7.4" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" - "@babel/plugin-syntax-json-strings" "^7.7.4" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" - "@babel/plugin-syntax-top-level-await" "^7.7.4" - "@babel/plugin-transform-arrow-functions" "^7.7.4" - "@babel/plugin-transform-async-to-generator" "^7.7.4" - "@babel/plugin-transform-block-scoped-functions" "^7.7.4" - "@babel/plugin-transform-block-scoping" "^7.7.4" - "@babel/plugin-transform-classes" "^7.7.4" - "@babel/plugin-transform-computed-properties" "^7.7.4" - "@babel/plugin-transform-destructuring" "^7.7.4" - "@babel/plugin-transform-dotall-regex" "^7.7.4" - "@babel/plugin-transform-duplicate-keys" "^7.7.4" - "@babel/plugin-transform-exponentiation-operator" "^7.7.4" - "@babel/plugin-transform-for-of" "^7.7.4" - "@babel/plugin-transform-function-name" "^7.7.4" - "@babel/plugin-transform-literals" "^7.7.4" - "@babel/plugin-transform-member-expression-literals" "^7.7.4" - "@babel/plugin-transform-modules-amd" "^7.7.4" - "@babel/plugin-transform-modules-commonjs" "^7.7.4" - "@babel/plugin-transform-modules-systemjs" "^7.7.4" - "@babel/plugin-transform-modules-umd" "^7.7.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" - "@babel/plugin-transform-new-target" "^7.7.4" - "@babel/plugin-transform-object-super" "^7.7.4" - "@babel/plugin-transform-parameters" "^7.7.4" - "@babel/plugin-transform-property-literals" "^7.7.4" - "@babel/plugin-transform-regenerator" "^7.7.4" - "@babel/plugin-transform-reserved-words" "^7.7.4" - "@babel/plugin-transform-shorthand-properties" "^7.7.4" - "@babel/plugin-transform-spread" "^7.7.4" - "@babel/plugin-transform-sticky-regex" "^7.7.4" - "@babel/plugin-transform-template-literals" "^7.7.4" - "@babel/plugin-transform-typeof-symbol" "^7.7.4" - "@babel/plugin-transform-unicode-regex" "^7.7.4" - "@babel/types" "^7.7.4" - browserslist "^4.6.0" - core-js-compat "^3.1.1" + "@babel/compat-data" "^7.8.4" + "@babel/helper-compilation-targets" "^7.8.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.4" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.3" + browserslist "^4.8.5" + core-js-compat "^3.6.2" invariant "^2.2.2" - js-levenshtein "^1.1.3" + levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-env@^7.4.5": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.7.tgz#c294167b91e53e7e36d820e943ece8d0c7fe46ac" - integrity sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg== +"@babel/preset-react@7.8.3", "@babel/preset-react@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.3.tgz#23dc63f1b5b0751283e04252e78cf1d6589273d2" + integrity sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.7.4" - "@babel/plugin-proposal-dynamic-import" "^7.7.4" - "@babel/plugin-proposal-json-strings" "^7.7.4" - "@babel/plugin-proposal-object-rest-spread" "^7.7.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.7.7" - "@babel/plugin-syntax-async-generators" "^7.7.4" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" - "@babel/plugin-syntax-json-strings" "^7.7.4" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" - "@babel/plugin-syntax-top-level-await" "^7.7.4" - "@babel/plugin-transform-arrow-functions" "^7.7.4" - "@babel/plugin-transform-async-to-generator" "^7.7.4" - "@babel/plugin-transform-block-scoped-functions" "^7.7.4" - "@babel/plugin-transform-block-scoping" "^7.7.4" - "@babel/plugin-transform-classes" "^7.7.4" - "@babel/plugin-transform-computed-properties" "^7.7.4" - "@babel/plugin-transform-destructuring" "^7.7.4" - "@babel/plugin-transform-dotall-regex" "^7.7.7" - "@babel/plugin-transform-duplicate-keys" "^7.7.4" - "@babel/plugin-transform-exponentiation-operator" "^7.7.4" - "@babel/plugin-transform-for-of" "^7.7.4" - "@babel/plugin-transform-function-name" "^7.7.4" - "@babel/plugin-transform-literals" "^7.7.4" - "@babel/plugin-transform-member-expression-literals" "^7.7.4" - "@babel/plugin-transform-modules-amd" "^7.7.5" - "@babel/plugin-transform-modules-commonjs" "^7.7.5" - "@babel/plugin-transform-modules-systemjs" "^7.7.4" - "@babel/plugin-transform-modules-umd" "^7.7.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" - "@babel/plugin-transform-new-target" "^7.7.4" - "@babel/plugin-transform-object-super" "^7.7.4" - "@babel/plugin-transform-parameters" "^7.7.7" - "@babel/plugin-transform-property-literals" "^7.7.4" - "@babel/plugin-transform-regenerator" "^7.7.5" - "@babel/plugin-transform-reserved-words" "^7.7.4" - "@babel/plugin-transform-shorthand-properties" "^7.7.4" - "@babel/plugin-transform-spread" "^7.7.4" - "@babel/plugin-transform-sticky-regex" "^7.7.4" - "@babel/plugin-transform-template-literals" "^7.7.4" - "@babel/plugin-transform-typeof-symbol" "^7.7.4" - "@babel/plugin-transform-unicode-regex" "^7.7.4" - "@babel/types" "^7.7.4" - browserslist "^4.6.0" - core-js-compat "^3.6.0" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.8.3" + "@babel/plugin-transform-react-jsx-self" "^7.8.3" + "@babel/plugin-transform-react-jsx-source" "^7.8.3" -"@babel/preset-react@7.7.4", "@babel/preset-react@^7.0.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.7.4.tgz#3fe2ea698d8fb536d8e7881a592c3c1ee8bf5707" - integrity sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g== +"@babel/preset-typescript@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.8.3.tgz#90af8690121beecd9a75d0cc26c6be39d1595d13" + integrity sha512-qee5LgPGui9zQ0jR1TeU5/fP9L+ovoArklEqY12ek8P/wV5ZeM/VYSQYwICeoT6FfpJTekG9Ilay5PhwsOpMHA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.7.4" - "@babel/plugin-transform-react-jsx" "^7.7.4" - "@babel/plugin-transform-react-jsx-self" "^7.7.4" - "@babel/plugin-transform-react-jsx-source" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.8.3" -"@babel/preset-typescript@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.7.4.tgz#780059a78e6fa7f7a4c87f027292a86b31ce080a" - integrity sha512-rqrjxfdiHPsnuPur0jKrIIGQCIgoTWMTjlbWE69G4QJ6TIOVnnRnIJhUxNTL/VwDmEAVX08Tq3B1nirer5341w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.7.4" - -"@babel/runtime-corejs3@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.7.7.tgz#78fcbd472daec13abc42678bfc319e58a62235a3" - integrity sha512-kr3W3Fw8mB/CTru2M5zIRQZZgC/9zOxNSoJ/tVCzjPt3H1/p5uuGbz6WwmaQy/TLQcW31rUhUUWKY28sXFRelA== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.2" - -"@babel/runtime@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" - integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw== +"@babel/runtime@7.8.4", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.1.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" - integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== +"@babel/template@^7.4.0", "@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== dependencies: - regenerator-runtime "^0.13.2" + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/template@^7.4.0", "@babel/template@^7.6.0", "@babel/template@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" - integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" + integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.6.0", "@babel/traverse@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" - integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.4" + "@babel/types" "^7.8.3" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.0", "@babel/types@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" - integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== dependencies: esutils "^2.0.2" lodash "^4.17.13" to-fast-properties "^2.0.0" +"@ckeditor/ckeditor5-build-classic@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-16.0.0.tgz#9141e94ea6765eda4925aaf062448507410bbe70" + integrity sha512-gBfZqWg3hmCvhq6/wX5UJp4qwl6gB+NJPpOkya2Y3jWKA0HKf3UdlhIvaHq7dRaqhi4unmqaJZVEk5VpZ1vDOg== + +"@ckeditor/ckeditor5-react@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-react/-/ckeditor5-react-2.1.0.tgz#f612546a5a328899a436d71b72ffd632600049e8" + integrity sha512-rlHjRKhwP9tNK0Yj2UJShL14mRfxLPgJ+Pv6zTv/Mvmd4wrwGnJf+5ybOAGK92S02hP1cXH+9km+PRO1b4V+ng== + dependencies: + prop-types "^15.6.1" + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -1072,12 +992,12 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/normalize.css@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" - integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== -"@emotion/is-prop-valid@^0.8.1": +"@emotion/is-prop-valid@^0.8.3": version "0.8.6" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.6.tgz#4757646f0a58e9dec614c47c838e7147d88c263c" integrity sha512-mnZMho3Sq8BfzkYYRVc8ilQTnc8U02Ytp6J1AwM6taQStZ3AhsEJBX2LzhA/LJirNCwM2VtHL3VFIZ+sNJUgUQ== @@ -1089,231 +1009,237 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/unitless@^0.7.0": +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@firebase/analytics-types@0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.2.5.tgz#18f4400482a445504b69d6b64c7d98f11fd3ea5e" - integrity sha512-aa746gTiILMn9TPBJXaYhYqnCL4CQwd4aYTAZseI9RZ/hf117xJTNy9/ZTmG5gl2AqxV0LgtdHYqKAjRlNqPIQ== +"@firebase/analytics-types@0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.2.6.tgz#c8f4102c2c6492f563a53381a0db620dd6ac1711" + integrity sha512-G4wGsWCxVibT4vHHTzFXi0uXk91upPUMYQyKnVEq4E9Qr491+EyyT3xH/6k+Hxj4/bGeK0lhJ4czMd1R5cOWwg== -"@firebase/analytics@0.2.9": - version "0.2.9" - resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.2.9.tgz#8a74d966a0e57528282073283dc9003cf65ac8dd" - integrity sha512-ejKZp5+YDL5CAbuId3vtqwtvVbQfdDmP9ushwtEswrKKfNpdJV8djRpFpolj/AtNn5XIk5a80xmPWKnDaVWk/A== +"@firebase/analytics@0.2.13": + version "0.2.13" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.2.13.tgz#55faa9d7a87fa08b764c08d3e026da71da77577a" + integrity sha512-FAvpVS3dmfeCcYdxl7msz3Fr9OOLp/EYfDAx4T1yKi3dfTOXALH6pJK1hNjWjmGMq0qAWPmOFfAdpzd13Q0Uag== dependencies: - "@firebase/analytics-types" "0.2.5" - "@firebase/component" "0.1.1" - "@firebase/installations" "0.3.8" - "@firebase/util" "0.2.36" + "@firebase/analytics-types" "0.2.6" + "@firebase/component" "0.1.5" + "@firebase/installations" "0.4.2" + "@firebase/util" "0.2.40" tslib "1.10.0" -"@firebase/app-types@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.5.0.tgz#b9b51a37956ec166debc8784a2fb30b5ffc9e921" - integrity sha512-8j+vCXTpAkYGcFk86mPZ90V6HMFmn196RIEW9Opi0PN+VrPFC1l/eW0gptM8v7VXaQhECOxws3TN2g+dDaeSYA== +"@firebase/app-types@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.5.1.tgz#8add41d10c533759a80a376d09d24af0a1009343" + integrity sha512-fhe4KxEoRLD596tuIkvBXVHedVByI5ALzf5nMraOXsnBxLY0gKcMSXQGwwPxZyeUt/S1VM8DRVXOg9shegEO7g== -"@firebase/app@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.5.0.tgz#e09319441bad1527b0f1b1fd6c60eb9804e4259b" - integrity sha512-n1aT4qQlFJaf0Poo5AoU4HGWVfvZCr2WpohpvNYlfbXhbSbEidwVbQKxNHN0wujFCtnggf3XGcYoF+FPQxESKw== +"@firebase/app@0.5.4": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.5.4.tgz#3c23eabd0f3b2f48daa3530f6c6b18eeb96a8ec2" + integrity sha512-a+Z13FB/Om3JAv6wTUUW/X8ikRmK66fvbLCGPUKoUtqKow1zxeUelznyKNhF4/WA2wxpo3w5OXzp0G9U09Lecw== dependencies: - "@firebase/app-types" "0.5.0" - "@firebase/component" "0.1.1" - "@firebase/logger" "0.1.33" - "@firebase/util" "0.2.36" + "@firebase/app-types" "0.5.1" + "@firebase/component" "0.1.5" + "@firebase/logger" "0.1.35" + "@firebase/util" "0.2.40" dom-storage "2.1.0" tslib "1.10.0" xmlhttprequest "1.8.0" -"@firebase/auth-interop-types@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.1.tgz#b3e1bc5ea8b2df1c376b5fc14aae8a3572dbcace" - integrity sha512-rNpCOyCspZvNDoQVQLQQgWAGBMB2ClCWKN1c8cEFgLNFgnMJrjVB+tcL7KW2q2UjKa7l8Mxgwys7szTiEDAcvA== +"@firebase/auth-interop-types@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.2.tgz#2f76aba39b4f22c52bb4b2eb7f31beb6ec312b33" + integrity sha512-FW4wNZbGSBpA8SgJy8EFdx0lPGm8a25zojI48kbV+QNn4EizJ1jbLPGtmBeEJJPFI4Ij+9EuCbsV1iwelZzDaA== -"@firebase/auth-types@0.9.3": - version "0.9.3" - resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.9.3.tgz#c2e719a9911486177c31fb0c25a857e82c455e0d" - integrity sha512-eS9BEuZ1XxBQReUhG6lbus9ScOgHwqYPT7a645PKa/tBb1BWsgivwRFzH0BATPGLP+JTtRvy5JqEsQ25S7J4ig== +"@firebase/auth-types@0.9.5": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.9.5.tgz#16d6ec2ca02591528088840f826ca66e394fc4fd" + integrity sha512-nXruvfY/S3q2PhKR/vMfWGkn/zZY0JTT07R/aEdClYRDV7AZDhmgCi3m5HZmj+bMPz7PeZT/w1tUuNLjUqJV2A== -"@firebase/auth@0.13.3": - version "0.13.3" - resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.13.3.tgz#ef07d09952ecb561ae5117850cf37581ece78c48" - integrity sha512-Ks+6PdLzuxrlkbnSbrMKpOdCbvrfJEBwXe2/GfHCDuJWsxUEx2qFcda+g04pgXnlf1qCjPeNEJM8U0WzTvGHyA== +"@firebase/auth@0.13.5": + version "0.13.5" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.13.5.tgz#2fc0aec89744463d3e14608bf6fe286f23418da3" + integrity sha512-0s/ULeqstzQ/Xi0ZgJnasYXH4WtTRaa9LztPv9gXHjwmOt/GtFnRUeW0RqDCmF4A2uikanMFm5+wtm80BkfpTg== dependencies: - "@firebase/auth-types" "0.9.3" + "@firebase/auth-types" "0.9.5" -"@firebase/component@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.1.tgz#03fa3d47a258b9cecc075cb7674db12d3327f84b" - integrity sha512-e9MrCYH10+CvGyJsuntdqH+Gtkbvm33GBEPprKClq9Qh36gXZxtvlUPwXACJfaD34tqxFB2V0pGi7i8iJUA+AA== +"@firebase/component@0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.5.tgz#57836339073ebebad5cbfc81d83d0507b3630ca6" + integrity sha512-oxRmOEIW3YbJVchLZKXiP4nJlKDCNLCQRdFdcO23IfJnaWePZofh4v5nT3XSJ6ouWlGIpENLZgoXjv2QrGFXfg== dependencies: - "@firebase/util" "0.2.36" + "@firebase/util" "0.2.40" tslib "1.10.0" -"@firebase/database-types@0.4.10": - version "0.4.10" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.4.10.tgz#baa10bc78cfb57dd6159e0264b8305994a8e24d0" - integrity sha512-66puLsckt5HASgRN3CfhLn2iuGrgCjfH3u17OL0f5MtEweYLx+yW2QW5d539Wx30xD4B+INEdaRetw6xEa9t7g== +"@firebase/database-types@0.4.11": + version "0.4.11" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.4.11.tgz#f76a1e668e7215a2855ded2a074601a0911d6bdb" + integrity sha512-+SiBjnufVhRSJg078feQWH7yHQncRjX+23NUgvBCRFXNBwUVvmPenNXYhCpF8XbhSOrC7BvfcRZTGqeI7+ZUdg== dependencies: - "@firebase/app-types" "0.5.0" + "@firebase/app-types" "0.5.1" -"@firebase/database@0.5.17": - version "0.5.17" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.5.17.tgz#67631f57b1f809bea4c5c528cd951e8a502882f6" - integrity sha512-nufRBK1p2adTEDvUQ1lEfa0nd2BvBe6tlDbO0q9zMQaTMg9dDjTomKRsc3byyRDhhTwDNwX4oUCFCTNTOHoKaA== +"@firebase/database@0.5.21": + version "0.5.21" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.5.21.tgz#2544399a9e018bab4241559932ccae6a9ae1cb35" + integrity sha512-NlndeAr88Rfi6LbeHF0/YaTkapns6K6bLGVu2w22oivHjZxLfR4aoyN2172yzhPpwEPN7iYhkkz/ZQi11CzL4g== dependencies: - "@firebase/auth-interop-types" "0.1.1" - "@firebase/component" "0.1.1" - "@firebase/database-types" "0.4.10" - "@firebase/logger" "0.1.33" - "@firebase/util" "0.2.36" + "@firebase/auth-interop-types" "0.1.2" + "@firebase/component" "0.1.5" + "@firebase/database-types" "0.4.11" + "@firebase/logger" "0.1.35" + "@firebase/util" "0.2.40" faye-websocket "0.11.3" tslib "1.10.0" -"@firebase/firestore-types@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.9.0.tgz#078ebb2728eb7d3d87ff5785b1fbcda07a183d39" - integrity sha512-UOtneGMUTLr58P56Y0GT/c4ZyC39vOoRAzgwad4PIsyc7HlKShbHKJpyys/LdlUYIsQdy/2El3Qy1veiBQ+ZJg== - -"@firebase/firestore@1.9.1": +"@firebase/firestore-types@1.9.1": version "1.9.1" - resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.9.1.tgz#bef0f8617aed7416de5ac842583a2ffafea07eeb" - integrity sha512-b3MsfyXxE65HirKdR9R/EI++1esyU4Mg8UN5LA+3Kbov7qMAPqHpXdrZy1v4Ng3+ZA2NC7Y08boaIgudr98sGA== + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.9.1.tgz#2a5372b3f314901186edbfd44b898f9120cf3a48" + integrity sha512-w3pT+RMQOORS8Tvf6wCaW8sq8hklPS4FkWSGCyo/gIbATP7pG8rvQDihN1x6D3if1jILWiZ/uPyl0eazm+MGzw== + +"@firebase/firestore@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.10.1.tgz#d00ccf1f6f356e2ba0bafee71a09646cebbfa86f" + integrity sha512-104SkNefcasRWwHZPUx0LLAhiOdb2ZG9c28hJIiUTKoehZKS/FvdSA2fXMsWvXshuUS3RJO70/eCtbqMKJU9/w== dependencies: - "@firebase/component" "0.1.1" - "@firebase/firestore-types" "1.9.0" - "@firebase/logger" "0.1.33" - "@firebase/util" "0.2.36" - "@firebase/webchannel-wrapper" "0.2.34" + "@firebase/component" "0.1.5" + "@firebase/firestore-types" "1.9.1" + "@firebase/logger" "0.1.35" + "@firebase/util" "0.2.40" + "@firebase/webchannel-wrapper" "0.2.35" "@grpc/proto-loader" "^0.5.0" grpc "1.24.2" tslib "1.10.0" -"@firebase/functions-types@0.3.13": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.3.13.tgz#f8fd6a3423abb32e2be1496268a514b500a547d1" - integrity sha512-wD075tCmZo+t/GHs5xMhi3irwjbc6SWnjXAIHjuNhVDKic5gQNkHH5QnxX930WPrPhD0RV9wuSP15fy9T1mvjw== +"@firebase/functions-types@0.3.14": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.3.14.tgz#6abdebfe26c0896e0176edfd17502011b68c3259" + integrity sha512-G7wq6fahQuXbiSf/PbffWnWXNaYKsT9ECvps/2hTKXevZfeWEhDju40c/XFIDI2dcSnTfOYiKoRP8Mp7hi7/CQ== -"@firebase/functions@0.4.28": - version "0.4.28" - resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.4.28.tgz#82cc70ab5878a0f67508db6a945be37aacab7a7f" - integrity sha512-XrmMNtgnYj7ftekt6StBErZ1J6ltXaR8z/fY1AW1BZ/XqfX1x/piTSvFlWy/XbHI7UyCTjQGhIQlZgutMjWNRw== +"@firebase/functions@0.4.32": + version "0.4.32" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.4.32.tgz#1d73ba066b6e21a48e1b249e088311194e289451" + integrity sha512-0v8YkEElryo7Apx1S+eTUBR/yz/Gatj064hy37AWNN9n5oUjRyrkwl40/YywFPw15AZPB8ItoEx+wJBnyFjgUw== dependencies: - "@firebase/component" "0.1.1" - "@firebase/functions-types" "0.3.13" - "@firebase/messaging-types" "0.4.0" + "@firebase/component" "0.1.5" + "@firebase/functions-types" "0.3.14" + "@firebase/messaging-types" "0.4.2" isomorphic-fetch "2.2.1" tslib "1.10.0" -"@firebase/installations-types@0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.2.4.tgz#cb899efc58b9603bf62fd33739209f9c61b4cf82" - integrity sha512-rqObJmVk/JgPNafohoJL10UCbrk8nc5oMIfXWX+jnLKF5Ig3Tynp+9ZKV3VRtCI4N7633449WIkt+dUpgAtPeg== +"@firebase/installations-types@0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.1.tgz#f9f9264168081060ef8007d1a02b5a25317c3176" + integrity sha512-VU2Ssgy+rZx1LLra3e3CtYQ6cyZHMsg8zO6HVK3sf83qEOWMmWFPxLgjmyrCx+YDSY4A0TwmwFi2I7Mh98WY7w== -"@firebase/installations@0.3.8": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.3.8.tgz#159ebdb8c2550962fda56885eef5b7db10ae256a" - integrity sha512-Dg1NOjyBOBV2uQrI30naSj05SuW9ByvP17tB+0uBxNf1ADJC/sG06SX2RSgV/YWnSI6+GPcE1BhGlm556pvZbQ== +"@firebase/installations@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.2.tgz#471a6c936b029aa15e2505dc79257e29474675d4" + integrity sha512-g8GDRRikxY7U1rUe9xdAKShCz2/S5CdlYOnYP4Qm+kaJDbfQvAZRRRhpo4sIg7cpoxZ5dSVbl64YyEZzVS7XtA== dependencies: - "@firebase/component" "0.1.1" - "@firebase/installations-types" "0.2.4" - "@firebase/util" "0.2.36" + "@firebase/component" "0.1.5" + "@firebase/installations-types" "0.3.1" + "@firebase/util" "0.2.40" idb "3.0.2" tslib "1.10.0" -"@firebase/logger@0.1.33": - version "0.1.33" - resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.1.33.tgz#cfb49e836fada9190dbb90e9053dd3876772c1bb" - integrity sha512-EiewY1by3mYanihTa5Wsl2/gseFzmRmZr61YtVgQN5TXpX1OlQtqds6cCoR8Hh8VueeZJg6lTV9VLVQqu6iqHw== +"@firebase/logger@0.1.35": + version "0.1.35" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.1.35.tgz#e9938eca5d81b72b581b9a4c9031ffebdb31e56d" + integrity sha512-T7I/0+IQrlPAm/uUw6xeyJH5Msi8P6in/0LUtz2XQn2+LVBqyatlr+Nod9AldDCZehwLySEAFhXlqhb3BrI5GA== -"@firebase/messaging-types@0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.4.0.tgz#59a1f2734e7576b22563d105c1daf4e8a405fe94" - integrity sha512-szzmMLo1xn0RHGpnvsgFwDY0H7uAPc+V/mlw2jIlBUtZq0mAYspPwM8J9KkvdAMPTfsm/sgJb9r6DzbGNffDNg== +"@firebase/messaging-types@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.4.2.tgz#7cd8489fbcce17c1f35537641c417883269fad02" + integrity sha512-Yb6pJ31tyDWP+4/8uXUO4cNP4oBdfauNuPT0SVqQ92SKlp4n2lHtH68IHa1outxJj6CFzFgj/Z2YZMviUWCM0Q== -"@firebase/messaging@0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.6.0.tgz#236f6498a74ccf377ca1da626afe6cebdd316596" - integrity sha512-eVPzdmnSXk3hdTRbo8/9epAOAgUdnc5cHJaKMR9bpGeihk3tgNxgWIydgaGXQZKTmnTa5ZikyNfu5kyxtwFV/A== +"@firebase/messaging@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.6.4.tgz#60b6537c3eae6d09b9f1678c5e2feced9dbcdb28" + integrity sha512-QKoK5gskZ9cECOa5nnp2oXoP3vmVOyzrEj3x0vHu1HsZhCg6EgRiJ9yO4LeTwoVcwFKDMkuNNPJZ8USOy2fdtw== dependencies: - "@firebase/component" "0.1.1" - "@firebase/installations" "0.3.8" - "@firebase/messaging-types" "0.4.0" - "@firebase/util" "0.2.36" + "@firebase/component" "0.1.5" + "@firebase/installations" "0.4.2" + "@firebase/messaging-types" "0.4.2" + "@firebase/util" "0.2.40" + idb "3.0.2" tslib "1.10.0" -"@firebase/performance-types@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.8.tgz#2ed5510dd06d2cb5650382106272b6597187f5b4" - integrity sha512-3RK15Bct9PRdr0YBdbZV2KTi5yrPzscJVEsdnsLHuwXBntqlQaouQqwlCNFn25dtCMY0cgV/yiaFmuo13mbJ8A== +"@firebase/performance-types@0.0.9": + version "0.0.9" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.9.tgz#27227b91149cf57c3f5b15fc1a234fdc791a65ae" + integrity sha512-kOVFW2OY5qObjSrq3OczLuEIKGtnVw/R7qw/wTtgPbyQUhMp7o2tnfTcMWlKSEifgcJDEY3kMTda3fjAuXgzSw== -"@firebase/performance@0.2.28": - version "0.2.28" - resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.2.28.tgz#8152639cc8a557914fe07a9c2ac4ce343fa9b6bf" - integrity sha512-A9hCz4MFvs081atOfvtAu6YV2MMrx758DzNZrHaMHJCeLPQFPy1zRQ+zZzdV/bsktVNYhUatVo/1G8jLscBUQQ== +"@firebase/performance@0.2.32": + version "0.2.32" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.2.32.tgz#0f85540f7fe616d2249ea6050471f0b3fac98598" + integrity sha512-e18mVGU7Er13nG1IT/BrONxvoKhd2MK7IUWMvxGv1NDQ0gs/AiK1qKzCRI1oBtyna5b/I+pYI8UvaffWRQXKBw== dependencies: - "@firebase/component" "0.1.1" - "@firebase/installations" "0.3.8" - "@firebase/logger" "0.1.33" - "@firebase/performance-types" "0.0.8" - "@firebase/util" "0.2.36" + "@firebase/component" "0.1.5" + "@firebase/installations" "0.4.2" + "@firebase/logger" "0.1.35" + "@firebase/performance-types" "0.0.9" + "@firebase/util" "0.2.40" tslib "1.10.0" -"@firebase/polyfill@0.3.30": - version "0.3.30" - resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.30.tgz#c6c041abed7c8ff117a2596a450d1cca7a999e23" - integrity sha512-ewYLN+CWiLTsLj0LFXLvdEKIaM1PJtoot2FoQ8VSYqYXbwahHCRwcmLRtgvHpR7bvIYPs9HYx8aBK0GrMP3bNg== +"@firebase/polyfill@0.3.31": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.31.tgz#e22c51b6e48195ad7886ebef25a900deb08660e4" + integrity sha512-7XItMz50tdba57tCOTCSH8REvHYbrTU7MBOksnNZ3td/J9W/RkCPcLVSSnFWNmn0Jv1aufpUevryX1J4DZ/oiw== dependencies: - core-js "3.4.8" + core-js "3.6.2" promise-polyfill "8.1.3" whatwg-fetch "2.0.4" -"@firebase/remote-config-types@0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.5.tgz#5f01f4d73a2c5869042316ef973fa6fa80e38d47" - integrity sha512-1JR0XGVN0dNKJlu5sMYh0qL0jC85xNgXfUquUGNHhy9lH3++t1gD91MeiDBgxI73oFQR7PEPeu+CTeDS0g8lWQ== +"@firebase/remote-config-types@0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.6.tgz#9f81e5edee67b1c2a258cf609c7c5514a0575e86" + integrity sha512-t8Q3GOq7mGqy8SwgnMHQZYqADEc4fj3rdA8U+ZFPWEISMrGQQfaCm/5QaS7HFmSoKaJx+/tSBBKVjVqvSoOH6Q== -"@firebase/remote-config@0.1.9": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.9.tgz#9dd937cf10c746ce835643b7a2bc5b00b7e0ab69" - integrity sha512-s51iqMkmietpi8eSWuP6RKNdi3pDfIV3QFOgGQIe/0yCqGYQJTKpB5ZhigT3x7Goy/yXfU8GexJV0r8sNrkWQg== +"@firebase/remote-config@0.1.13": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.13.tgz#4ae29abf24e13fc67329d09a08e07fa66486dd92" + integrity sha512-VpqUZ5NRbWtoWkKsro2cqGRQh5eqTD6Fw/qETUmYk2jp1vdkyIzn8Mb4yAdejwC6W/fuib3R2XzIjHeHtAJNRA== dependencies: - "@firebase/component" "0.1.1" - "@firebase/installations" "0.3.8" - "@firebase/logger" "0.1.33" - "@firebase/remote-config-types" "0.1.5" - "@firebase/util" "0.2.36" + "@firebase/component" "0.1.5" + "@firebase/installations" "0.4.2" + "@firebase/logger" "0.1.35" + "@firebase/remote-config-types" "0.1.6" + "@firebase/util" "0.2.40" tslib "1.10.0" -"@firebase/storage-types@0.3.8": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.8.tgz#3b5e16c9ae8b50f5cd4e7320fa5fc0933150e7d2" - integrity sha512-F0ED2WZaGjhjEdOk85c/1ikDQdWM1NiATFuTmRsaGYZyoERiwh/Mr6FnjqnLIeiJZqa6v2hk/aUgKosXjMWH/Q== +"@firebase/storage-types@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.9.tgz#0e8f6531c80c6110df800b60d4c30137544400b0" + integrity sha512-az7GZ9zpLAh8vvbOKGwsRy/pB7bI654PzGPvAdK4E35NDBjLMTVBn8yqeDZd/5OjY3dgYit0twIDo1ljx1O6QA== -"@firebase/storage@0.3.22": - version "0.3.22" - resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.3.22.tgz#ff4f228302fb579057e5ed018f09ae93b3c151b1" - integrity sha512-Xy4TOzWlQVEoucv/8SPoKKq/qnYOuB54AisYqkoZs2DqjBQn3Wsdo56mkLikNVr6/fnmWs8jlmjtbcP2baUkOg== +"@firebase/storage@0.3.26": + version "0.3.26" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.3.26.tgz#4068209281e569f182fc8a304a0cc13601195bbe" + integrity sha512-oSzQsDVUL5YuL7+7bkoA111rID0y1OZpAWKZlKtLktTqWN8GUloQIqArdwg1POt0wV+B1hfBytJuYZlI17hGgg== dependencies: - "@firebase/component" "0.1.1" - "@firebase/storage-types" "0.3.8" - "@firebase/util" "0.2.36" + "@firebase/component" "0.1.5" + "@firebase/storage-types" "0.3.9" + "@firebase/util" "0.2.40" tslib "1.10.0" -"@firebase/util@0.2.36": - version "0.2.36" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.2.36.tgz#0c4edb3573f567f407b76dd767691fe72819acf2" - integrity sha512-AqrXca+8rMbPyp7zMO9BoZrdbb8wsT5kmqwge9QW4ZBxTTSQrvBs7VylGx5Ede4VbhqRJvkmo7G73/dp2L+wbA== +"@firebase/util@0.2.40": + version "0.2.40" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.2.40.tgz#b8c33437c63e08749c4c872025d70721d690aa69" + integrity sha512-ViuceN8F6eeN/8QaA7FbOX7KlypQAFrXHBnTEicxwED4n1SdgGFapaS/ggScq1MMwq0RjGinNbigtc1Rqy8yVA== dependencies: tslib "1.10.0" -"@firebase/webchannel-wrapper@0.2.34": - version "0.2.34" - resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.34.tgz#be93617e92dd6f9cb505f459c8afe972ede86075" - integrity sha512-XCADVD5kirtoFtqZbsPMAvXdDg1gJJgzQufOt7g93YaEDIZoyKOi0dupmSzf0iQ1yzdTY1ntQz3Si0i9eac8WQ== +"@firebase/webchannel-wrapper@0.2.35": + version "0.2.35" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.35.tgz#232e857698efb30cdda98b6f6a7a31a905d16147" + integrity sha512-7njiGBbFW0HCnuKNEJLcQt9EjfOzG8EJiXlFJwA3XfgiFxPVHmXrcF4d5yold2wfiwCwrXpeNTGZ854oRr6Hcw== "@grpc/proto-loader@^0.5.0": version "0.5.3" @@ -1334,9 +1260,9 @@ integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== "@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.0.tgz#2f9ce301c8898e1c3248b0a8564696b24d1a9a5a" - integrity sha512-7XYT10CZfPsH7j9F1Jmg1+d0ezOux2oM2GfArAzLwWe4mE2Dr3hVjsAL6+TFY49RRJlCdJDMw3nJsLFroTc8Kw== + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== "@hapi/joi@^15.0.0": version "15.1.1" @@ -1398,7 +1324,7 @@ slash "^2.0.0" strip-ansi "^5.0.0" -"@jest/environment@^24.9.0": +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== @@ -1408,7 +1334,7 @@ "@jest/types" "^24.9.0" jest-mock "^24.9.0" -"@jest/fake-timers@^24.9.0": +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== @@ -1494,7 +1420,7 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/types@^24.9.0": +"@jest/types@^24.3.0", "@jest/types@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== @@ -1569,6 +1495,55 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@redux-saga/core@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.1.3.tgz#3085097b57a4ea8db5528d58673f20ce0950f6a4" + integrity sha512-8tInBftak8TPzE6X13ABmEtRJGjtK17w7VUs7qV17S8hCO5S3+aUTWZ/DBsBJPdE8Z5jOPwYALyvofgq1Ws+kg== + dependencies: + "@babel/runtime" "^7.6.3" + "@redux-saga/deferred" "^1.1.2" + "@redux-saga/delay-p" "^1.1.2" + "@redux-saga/is" "^1.1.2" + "@redux-saga/symbols" "^1.1.2" + "@redux-saga/types" "^1.1.0" + redux "^4.0.4" + typescript-tuple "^2.2.1" + +"@redux-saga/deferred@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.1.2.tgz#59937a0eba71fff289f1310233bc518117a71888" + integrity sha512-908rDLHFN2UUzt2jb4uOzj6afpjgJe3MjICaUNO3bvkV/kN/cNeI9PMr8BsFXB/MR8WTAZQq/PlTq8Kww3TBSQ== + +"@redux-saga/delay-p@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.1.2.tgz#8f515f4b009b05b02a37a7c3d0ca9ddc157bb355" + integrity sha512-ojc+1IoC6OP65Ts5+ZHbEYdrohmIw1j9P7HS9MOJezqMYtCDgpkoqB5enAAZrNtnbSL6gVCWPHaoaTY5KeO0/g== + dependencies: + "@redux-saga/symbols" "^1.1.2" + +"@redux-saga/is@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.1.2.tgz#ae6c8421f58fcba80faf7cadb7d65b303b97e58e" + integrity sha512-OLbunKVsCVNTKEf2cH4TYyNbbPgvmZ52iaxBD4I1fTif4+MTXMa4/Z07L83zW/hTCXwpSZvXogqMqLfex2Tg6w== + dependencies: + "@redux-saga/symbols" "^1.1.2" + "@redux-saga/types" "^1.1.0" + +"@redux-saga/symbols@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.1.2.tgz#216a672a487fc256872b8034835afc22a2d0595d" + integrity sha512-EfdGnF423glv3uMwLsGAtE6bg+R9MdqlHEzExnfagXPrIiuxwr3bdiAwz3gi+PsrQ3yBlaBpfGLtDG8rf3LgQQ== + +"@redux-saga/types@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.1.0.tgz#0e81ce56b4883b4b2a3001ebe1ab298b84237204" + integrity sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg== + +"@restart/hooks@^0.3.12": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.3.20.tgz#e7179ab41e5f346b2feca091261fbdad77e8bc19" + integrity sha512-Q1eeEqcxHQ4oqty7C5Me8/hzWwdCRR643nR/6EHxv8BVxLVYHe4IoWAHg8MIGkE4VtSm3/JnNhkoLJhCkLx5aw== + "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" @@ -1623,7 +1598,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" "@svgr/babel-plugin-transform-svg-component" "^4.2.0" -"@svgr/core@^4.3.2": +"@svgr/core@^4.3.3": version "4.3.3" resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== @@ -1639,7 +1614,7 @@ dependencies: "@babel/types" "^7.4.4" -"@svgr/plugin-jsx@^4.3.2", "@svgr/plugin-jsx@^4.3.3": +"@svgr/plugin-jsx@^4.3.3": version "4.3.3" resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== @@ -1658,17 +1633,17 @@ merge-deep "^3.0.2" svgo "^1.2.2" -"@svgr/webpack@4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.2.tgz#319d4471c8f3d5c3af35059274834d9b5b8fb956" - integrity sha512-F3VE5OvyOWBEd2bF7BdtFRyI6E9it3mN7teDw0JQTlVtc4HZEYiiLSl+Uf9Uub6IYHVGc+qIrxxDyeedkQru2w== +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== dependencies: "@babel/core" "^7.4.5" "@babel/plugin-transform-react-constant-elements" "^7.0.0" "@babel/preset-env" "^7.4.5" "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.2" - "@svgr/plugin-jsx" "^4.3.2" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" "@svgr/plugin-svgo" "^4.3.1" loader-utils "^1.2.3" @@ -1705,6 +1680,14 @@ dependencies: "@babel/types" "^7.3.0" +"@types/body-parser@*": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + "@types/bytebuffer@^5.0.40": version "5.0.40" resolved "https://registry.yarnpkg.com/@types/bytebuffer/-/bytebuffer-5.0.40.tgz#d6faac40dcfb09cd856cdc4c01d3690ba536d3ee" @@ -1713,20 +1696,63 @@ "@types/long" "*" "@types/node" "*" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/connect@*": + version "3.4.33" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + dependencies: + "@types/node" "*" + "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/express-serve-static-core@*": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf" + integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg== + dependencies: + "@types/node" "*" + "@types/range-parser" "*" + +"@types/express@^4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c" + integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== "@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" - integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" @@ -1744,19 +1770,29 @@ integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== "@types/long@*", "@types/long@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" - integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" + integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== + +"@types/mime@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" + integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*", "@types/node@>=6": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.2.tgz#fe94285bf5e0782e1a9e5a8c482b1c34465fa385" - integrity sha512-B8emQA1qeKerqd1dmIsQYnXi+mmAzTB7flExjmy5X1aVAKFNNNDubkavwR13kR6JnpeLp3aLoJhwn9trWPAyFQ== + version "13.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.0.tgz#b417deda18cf8400f278733499ad5547ed1abec4" + integrity sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ== "@types/node@^10.1.0": - version "10.17.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" - integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== + version "10.17.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.14.tgz#b6c60ebf2fb5e4229fdd751ff9ddfae0f5f31541" + integrity sha512-G0UmX5uKEmW+ZAhmZ6PLTQ5eu/VPaT+d/tdLd5IFsKRPcbe6lPxocBtcYBFSaLaCW8O60AX90e91Nsp8lVHCNw== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1773,6 +1809,11 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + "@types/react-slick@^0.23.4": version "0.23.4" resolved "https://registry.yarnpkg.com/@types/react-slick/-/react-slick-0.23.4.tgz#c97e2a9e7e3d1933c68593b8e82752fab1e8ce53" @@ -1780,28 +1821,36 @@ dependencies: "@types/react" "*" -"@types/react@*": - version "16.9.17" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.17.tgz#58f0cc0e9ec2425d1441dd7b623421a867aa253e" - integrity sha512-UP27In4fp4sWF5JgyV6pwVPAQM83Fj76JOcg02X5BZcpSu5Wx+fP9RMqc2v0ssBoQIFvD5JdKY41gjJJKmw6Bg== +"@types/react@*", "@types/react@^16.9.11": + version "16.9.19" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.19.tgz#c842aa83ea490007d29938146ff2e4d9e4360c40" + integrity sha512-LJV97//H+zqKWMms0kvxaKYJDG05U2TtQB3chRLF8MPNs+MQh/H1aGlyDUxjaHvu08EAGerdX2z4LTBc7ns77A== dependencies: "@types/prop-types" "*" csstype "^2.2.0" +"@types/serve-static@*": + version "1.13.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" + integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== + dependencies: + "@types/express-serve-static-core" "*" + "@types/mime" "*" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/yargs-parser@*": - version "13.1.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" - integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^13.0.0": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.4.tgz#53d231cebe1a540e7e13727fc1f0d13ad4a9ba3b" - integrity sha512-Ke1WmBbIkVM8bpvsNEcGgQM70XcEh/nbpxQhW7FhrsbCsXSY9BmLB1+LHtD7r9zrsOcFlLiF+a/UeJsdfw3C5A== + version "13.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" + integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== dependencies: "@types/yargs-parser" "*" @@ -1810,46 +1859,46 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== -"@typescript-eslint/eslint-plugin@^2.2.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.14.0.tgz#c74447400537d4eb7aae1e31879ab43e6c662a8a" - integrity sha512-sneOJ3Hu0m5whJiVIxGBZZZMxMJ7c0LhAJzeMJgHo+n5wFs+/6rSR/gl7crkdR2kNwfOOSdzdc0gMvatG4dX2Q== +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.19.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.2.tgz#e279aaae5d5c1f2547b4cff99204e1250bc7a058" + integrity sha512-HX2qOq2GOV04HNrmKnTpSIpHjfl7iwdXe3u/Nvt+/cpmdvzYvY0NHSiTkYN257jHnq4OM/yo+OsFgati+7LqJA== dependencies: - "@typescript-eslint/experimental-utils" "2.14.0" + "@typescript-eslint/experimental-utils" "2.19.2" eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.14.0.tgz#e9179fa3c44e00b3106b85d7b69342901fb43e3b" - integrity sha512-KcyKS7G6IWnIgl3ZpyxyBCxhkBPV+0a5Jjy2g5HxlrbG2ZLQNFeneIBVXdaBCYOVjvGmGGFKom1kgiAY75SDeQ== +"@typescript-eslint/experimental-utils@2.19.2": + version "2.19.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.2.tgz#4611d44cf0f0cb460c26aa7676fc0a787281e233" + integrity sha512-B88QuwT1wMJR750YvTJBNjMZwmiPpbmKYLm1yI7PCc3x0NariqPwqaPsoJRwU9DmUi0cd9dkhz1IqEnwfD+P1A== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.14.0" + "@typescript-eslint/typescript-estree" "2.19.2" eslint-scope "^5.0.0" -"@typescript-eslint/parser@^2.2.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.14.0.tgz#30fa0523d86d74172a5e32274558404ba4262cd6" - integrity sha512-haS+8D35fUydIs+zdSf4BxpOartb/DjrZ2IxQ5sR8zyGfd77uT9ZJZYF8+I0WPhzqHmfafUBx8MYpcp8pfaoSA== +"@typescript-eslint/parser@^2.10.0": + version "2.19.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.19.2.tgz#21f42c0694846367e7d6a907feb08ab2f89c0879" + integrity sha512-8uwnYGKqX9wWHGPGdLB9sk9+12sjcdqEEYKGgbS8A0IvYX59h01o8os5qXUHMq2na8vpDRaV0suTLM7S8wraTA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.14.0" - "@typescript-eslint/typescript-estree" "2.14.0" + "@typescript-eslint/experimental-utils" "2.19.2" + "@typescript-eslint/typescript-estree" "2.19.2" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.14.0.tgz#c67698acdc14547f095eeefe908958d93e1a648d" - integrity sha512-pnLpUcMNG7GfFFfNQbEX6f1aPa5fMnH2G9By+A1yovYI4VIOK2DzkaRuUlIkbagpAcrxQHLqovI1YWqEcXyRnA== +"@typescript-eslint/typescript-estree@2.19.2": + version "2.19.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.2.tgz#67485b00172f400474d243c6c0be27581a579350" + integrity sha512-Xu/qa0MDk6upQWqE4Qy2X16Xg8Vi32tQS2PR0AvnT/ZYS4YGDvtn2MStOh5y8Zy2mg4NuL06KUHlvCh95j9C6Q== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" - lodash.unescape "4.0.1" + lodash "^4.17.15" semver "^6.3.0" tsutils "^3.17.1" @@ -2098,6 +2147,14 @@ adjust-sourcemap-loader@2.0.0: object-path "0.11.4" regex-parser "2.2.10" +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + airbnb-prop-types@^2.15.0: version "2.15.0" resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.15.0.tgz#5287820043af1eb469f5b0af0d6f70da6c52aaef" @@ -2125,11 +2182,11 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + version "6.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" + integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" @@ -2149,7 +2206,7 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -2198,10 +2255,18 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -antd@^3.26.0: - version "3.26.5" - resolved "https://registry.yarnpkg.com/antd/-/antd-3.26.5.tgz#83e96a5c3f5fdf27bcf6daeffce78c2e88e9d555" - integrity sha512-vD45SKnPq6GDwP+vdv5LIFTztPBGp2uJPuYdu8vUCl4iFSdljYldfsNAzMfRygk7QHRb22vX1Vo/KoH+I7wVMA== +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +antd@^3.26.8: + version "3.26.9" + resolved "https://registry.yarnpkg.com/antd/-/antd-3.26.9.tgz#233c9d090c44146997984966d3b3657c9426bac1" + integrity sha512-youf+hBJHB4nuhV7yEbm2VQSMtX9RxrNQvjlc+iIPj4FeJsuTQXIfSSAc5GhwDeVAI4+nuapCv7XLFIQ+f2ZFg== dependencies: "@ant-design/create-react-context" "^0.2.4" "@ant-design/icons" "~2.1.1" @@ -2266,6 +2331,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + apollo-boost@^0.4.4: version "0.4.7" resolved "https://registry.yarnpkg.com/apollo-boost/-/apollo-boost-0.4.7.tgz#b0680ab0893e3f8b1ab1058dcfa2b00cb6440d79" @@ -2455,7 +2528,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3: +array-includes@^3.0.3, array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== @@ -2494,7 +2567,7 @@ array.prototype.find@^2.1.0: define-properties "^1.1.3" es-abstract "^1.13.0" -array.prototype.flat@^1.2.3: +array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== @@ -2507,7 +2580,7 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.3, asap@~2.0.6: +asap@^2.0.0, asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -2609,47 +2682,39 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.6.1: - version "9.7.3" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" - integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: - browserslist "^4.8.0" - caniuse-lite "^1.0.30001012" + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.23" + postcss "^7.0.26" postcss-value-parser "^4.0.2" -autosize@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/autosize/-/autosize-4.0.2.tgz#073cfd07c8bf45da4b9fd153437f5bafbba1e4c9" - integrity sha512-jnSyH2d+qdfPGpWlcuhGiHmqBJ6g3X+8T+iRwFrHPLVcdoGJE/x6Qicm6aDHfTsbgZKxyV8UU/YB2p4cjKDRRA== - 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.9.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" - integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== -axios@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.1.tgz#8a6a04eed23dfe72747e1dd43c604b8f1677b5aa" - integrity sha512-Yl+7nfreYKaLRvAvjNPkvfjnQHJM1yLBY3zhqAwcJSwR/6ETkanUgylgtIvkvz0xJ+p/vZuNw8X7Hnb7Whsbpw== +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== dependencies: follow-redirects "1.5.10" axobject-query@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.1.tgz#2a3b1271ec722d48a4cd4b3fcc20c853326a49a7" - integrity sha512-lF98xa/yvy6j3fBHAgQXIYl+J4eZadOSqsPojemUqClzNbBV38wWGpUbQbVEyf4eUF5yF7eHmGgGA2JiHyjeqw== - dependencies: - "@babel/runtime" "^7.7.4" - "@babel/runtime-corejs3" "^7.7.4" + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== babel-code-frame@^6.22.0: version "6.26.0" @@ -2702,7 +2767,7 @@ babel-loader@8.0.6: mkdirp "^0.5.1" pify "^4.0.1" -babel-plugin-dynamic-import-node@2.3.0, babel-plugin-dynamic-import-node@^2.3.0: +babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== @@ -2726,24 +2791,24 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.7.1.tgz#ee294383c1a38f9d6535be3d89734824cb3ed415" - integrity sha512-HNM284amlKSQ6FddI4jLXD+XTqF0cTYOe5uemOIZxHJHnamC+OhFQ57rMF9sgnYhkJQptVl9U1SKVZsV9/GLQQ== +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: "@babel/runtime" "^7.7.2" cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-named-asset-import@^0.3.4: - version "0.3.5" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.5.tgz#d3fa1a7f1f4babd4ed0785b75e2f926df0d70d0d" - integrity sha512-sGhfINU+AuMw9oFAdIn/nD5sem3pn/WgxAfDZ//Q3CnF+5uaho7C7shh2rKLk6sKE/XkfmyibghocwKdVjLIKg== +babel-plugin-named-asset-import@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" + integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA== "babel-plugin-styled-components@>= 1": - version "1.10.6" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.6.tgz#f8782953751115faf09a9f92431436912c34006b" - integrity sha512-gyQj/Zf1kQti66100PhrCRjI5ldjaze9O0M3emXRPAN80Zsf8+e1thpTpaXJXVHXtaM4/+dJEgZHyS9Its+8SA== + version "1.10.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz#3494e77914e9989b33cc2d7b3b29527a949d635c" + integrity sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-module-imports" "^7.0.0" @@ -2781,29 +2846,23 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-preset-react-app@^9.0.2: - version "9.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.0.tgz#74c644d809f098d4b131646730c7bed0696084ca" - integrity sha512-0qMOv/pCcCQWxX1eNyKD9GlzZTdzZIK/Pq3O6TGe65tZSJTSplw1pFlaPujm0GjBj4g3GeCQbP08vvzlH7OGHg== +babel-preset-react-app@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.1.tgz#d1ceb47cbe48b285fdd5c562c54c432ed5a41e0e" + integrity sha512-YkWP2UwY//TLltNlEBRngDOrYhvSLb+CA330G7T9M5UhGEMWe+JK/8IXJc5p2fDTSfSiETf+PY0+PYXFMix81Q== dependencies: - "@babel/core" "7.7.4" - "@babel/plugin-proposal-class-properties" "7.7.4" - "@babel/plugin-proposal-decorators" "7.7.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.7.4" - "@babel/plugin-proposal-numeric-separator" "7.7.4" - "@babel/plugin-proposal-object-rest-spread" "7.7.4" - "@babel/plugin-proposal-optional-chaining" "7.7.4" - "@babel/plugin-syntax-dynamic-import" "7.7.4" - "@babel/plugin-transform-destructuring" "7.7.4" - "@babel/plugin-transform-flow-strip-types" "7.7.4" - "@babel/plugin-transform-react-display-name" "7.7.4" - "@babel/plugin-transform-runtime" "7.7.4" - "@babel/preset-env" "7.7.4" - "@babel/preset-react" "7.7.4" - "@babel/preset-typescript" "7.7.4" - "@babel/runtime" "7.7.4" - babel-plugin-dynamic-import-node "2.3.0" - babel-plugin-macros "2.7.1" + "@babel/core" "7.8.4" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-transform-flow-strip-types" "7.8.3" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.8.3" + "@babel/preset-env" "7.8.4" + "@babel/preset-react" "7.8.3" + "@babel/preset-typescript" "7.8.3" + "@babel/runtime" "7.8.4" + babel-plugin-macros "2.8.0" babel-plugin-transform-react-remove-prop-types "0.4.24" babel-runtime@6.x, babel-runtime@^6.23.0, babel-runtime@^6.26.0: @@ -2869,6 +2928,11 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -2950,6 +3014,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -3026,23 +3097,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" - integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== +browserslist@4.8.6, browserslist@^4.0.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5: + version "4.8.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e" + integrity sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg== dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" - -browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6.0, browserslist@^4.6.4, browserslist@^4.8.0, browserslist@^4.8.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" - integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== - dependencies: - caniuse-lite "^1.0.30001015" - electron-to-chromium "^1.3.322" - node-releases "^1.1.42" + caniuse-lite "^1.0.30001023" + electron-to-chromium "^1.3.341" + node-releases "^1.1.47" bser@2.1.1: version "2.1.1" @@ -3051,6 +3113,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -3118,6 +3185,30 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3162,7 +3253,7 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@3.0.x: +camel-case@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= @@ -3183,6 +3274,11 @@ camelcase@5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + camelcase@^2.0.0, camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -3193,16 +3289,6 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -3218,10 +3304,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: - version "1.0.30001017" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" - integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023: + version "1.0.30001027" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001027.tgz#283e2ef17d94889cc216a22c6f85303d78ca852d" + integrity sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg== capture-exit@^2.0.0: version "2.0.0" @@ -3230,24 +3316,23 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -case-sensitive-paths-webpack-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e" - integrity sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g== +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== 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.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +chalk@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" @@ -3260,6 +3345,15 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -3300,7 +3394,7 @@ cheerio@^1.0.0-rc.3: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: +chokidar@^2.0.2, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -3319,7 +3413,22 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: +chokidar@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== @@ -3354,24 +3463,22 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.x, "classnames@>= 2.0", classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@~2.2.6: +classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@~2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -clean-css@4.2.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== +clean-css@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@^3.1.0: version "3.1.0" @@ -3432,6 +3539,11 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clsx@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702" + integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3466,12 +3578,19 @@ color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -3504,20 +3623,15 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.3: +commander@^2.11.0, commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== common-tags@^1.8.0: version "1.8.0" @@ -3554,13 +3668,13 @@ compose-function@3.0.3: arity-n "^1.0.4" compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" -compression@^1.5.2: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -3593,7 +3707,7 @@ confusing-browser-globals@^1.0.9: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -connect-history-api-fallback@^1.3.0: +connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== @@ -3630,10 +3744,10 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -3642,13 +3756,6 @@ convert-source-map@^0.3.3: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -3677,29 +3784,24 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-to-clipboard@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz#d2724a3ccbfed89706fac8a894872c979ac74467" - integrity sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w== + version "3.2.1" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.2.1.tgz#b1a1137100e5665d5a96015cb579e30e90e07c44" + integrity sha512-btru1Q6RD9wbonIvEU5EfnhIRGHLo//BGXQ1hNAD2avIs/nBZlpbOeKtv3mhoUByN4DB9Cb6/vXBymj1S43KmA== dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.1.1, core-js-compat@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.1.tgz#39638c935c83c93a793abb628b252ec43e85783a" - integrity sha512-2Tl1EuxZo94QS2VeH28Ebf5g3xbPZG/hj/N5HDDy4XMP/ImR0JIer/nggQRiMN91Q54JVkGbytf42wO29oXVHg== +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== dependencies: - browserslist "^4.8.2" + browserslist "^4.8.3" semver "7.0.0" -core-js-pure@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.1.tgz#59acfb71caf2fb495aae4c1a0b2a7f2c1b65267e" - integrity sha512-yKiUdvQWq66xUc408duxUCxFHuDfz5trF5V4xnQzb8C7P/5v2gFUdyNWQoevyAeGYB1hl1X/pzGZ20R3WxZQBA== - -core-js@3.4.8: - version "3.4.8" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.8.tgz#e0fc0c61f2ef90cbc10c531dbffaa46dfb7152dd" - integrity sha512-b+BBmCZmVgho8KnBUOXpvlqEMguko+0P+kXCwD4vIprsXC6ht1qgPxtb1OK6XgSlrySF71wkwBQ0Hv695bk9gQ== +core-js@3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.2.tgz#2799ea1a59050f0acf50dfe89b916d6503b16caa" + integrity sha512-hIE5dXkRzRvnZ5vhkRfQxUvDxQZmD9oueA08jDYRBKJHx+VIl/Pne/e0A4x9LObEEthC/TqiZybUoNM4tRgnKg== core-js@^1.0.0: version "1.2.7" @@ -3711,10 +3813,10 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== -core-js@^3.4.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.1.tgz#39d5e2e346258cc01eb7d44345b1c3c014ca3f05" - integrity sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ== +core-js@^3.5.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -3782,7 +3884,24 @@ create-react-class@^15.5.3: loose-envify "^1.3.1" object-assign "^4.1.1" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -3793,14 +3912,6 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -3859,22 +3970,23 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.14" + postcss "^7.0.23" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" css-prefers-color-scheme@^3.1.1: version "3.1.1" @@ -3908,14 +4020,14 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" -css-to-react-native@^2.2.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.2.tgz#e75e2f8f7aa385b4c3611c52b074b70a002f2e7d" - integrity sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw== +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== dependencies: camelize "^1.0.0" css-color-keywords "^1.0.0" - postcss-value-parser "^3.3.0" + postcss-value-parser "^4.0.2" css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" @@ -4052,7 +4164,7 @@ cssstyle@^1.0.0, cssstyle@^1.1.1: dependencies: cssom "0.3.x" -csstype@^2.2.0: +csstype@^2.2.0, csstype@^2.6.7: version "2.6.8" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.8.tgz#0fb6fc2417ffd2816a418c9336da74d7f07db431" integrity sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA== @@ -4078,9 +4190,9 @@ d@1, d@^1.0.1: type "^1.0.1" damerau-levenshtein@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" - integrity sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA== + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== dashdash@^1.12.0: version "1.14.1" @@ -4098,6 +4210,16 @@ data-urls@^1.0.0, data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" +date-arithmetic@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/date-arithmetic/-/date-arithmetic-4.1.0.tgz#e5d6434e9deb71f79760a37b729e4a515e730ddf" + integrity sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg== + +dayjs@^1.8.20: + version "1.8.20" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.20.tgz#724a5cb6ad1f6fc066b0bd9a800dedcc7886f19e" + integrity sha512-mH0MCDxw6UCGJYxVN78h8ugWycZAO8thkj3bW6vApL5tS0hQplIDdAQcmbvl7n35H0AKdCJQaArTrIQw2xt4Qg== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -4131,13 +4253,6 @@ decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -4207,17 +4322,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: + "@types/glob" "^7.1.1" globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" delayed-stream@~1.0.0: version "1.0.0" @@ -4340,9 +4456,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-align@^1.7.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.10.2.tgz#540ea1c9e20462bd11b9fc28c561dc8351ece4c6" - integrity sha512-AYZUzLepy05E9bCY4ExoqHrrIlM49PEak9oF93JEFoibqKL0F7w5DLM70/rosLOawerWZ3MlepQcl+EmHskOyw== + version "1.10.4" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.10.4.tgz#862ae4de0d11d6495c1c8ee1b195427e7caa727d" + integrity sha512-wytDzaru67AmqFOY4B9GUb/hrwWagezoYYK97D/vpK+ezg+cnuZO0Q2gltUPa7KfNmIqfRIYVCF8UhRDEHAmgQ== dom-closest@^0.2.0: version "0.2.0" @@ -4358,6 +4474,14 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-helpers@^5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.3.tgz#7233248eb3a2d1f74aafca31e52c5299cc8ce821" + integrity sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw== + dependencies: + "@babel/runtime" "^7.6.3" + csstype "^2.6.7" + dom-matches@>=1.0.1: version "2.0.0" resolved "https://registry.yarnpkg.com/dom-matches/-/dom-matches-2.0.0.tgz#d2728b416a87533980eb089b848d253cf23a758c" @@ -4446,12 +4570,7 @@ dotenv-expand@5.1.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== - -dotenv@^8.2.0: +dotenv@8.2.0, dotenv@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== @@ -4488,15 +4607,22 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +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" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== +electron-to-chromium@^1.3.341: + version "1.3.346" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.346.tgz#b08becbfbd64a42061195afd3a4923d0416c5d46" + integrity sha512-Yy4jF5hJd57BWmGPt0KjaXc25AmWZeQK75kdr4zIzksWVtiT6DwaNtvTb9dt+LkQKwUpvBfCyyPsXXtbY/5GYw== elliptic@^6.0.0: version "6.5.2" @@ -4646,10 +4772,10 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.13.0, es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" - integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== +es-abstract@^1.13.0, es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" @@ -4703,80 +4829,86 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.11.0, escodegen@^1.9.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== dependencies: - esprima "^3.1.3" + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" -eslint-config-react-app@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.1.0.tgz#a37b3f2d4f56f856f93277281ef52bd791273e63" - integrity sha512-hBaxisHC6HXRVvxX+/t1n8mOdmCVIKgkXsf2WoUkJi7upHJTwYTsdCmx01QPOjKNT34QMQQ9sL0tVBlbiMFjxA== +eslint-config-react-app@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.0.tgz#135110ba56a9e378f7acfe5f36e2ae76a2317899" + integrity sha512-WrHjoGpKr1kLLiWDD81tme9jMM0hk5cMxasLSdyno6DdPt+IfLOrDJBVo6jN7tn4y1nzhs43TmUaZWO6Sf0blw== dependencies: confusing-browser-globals "^1.0.9" eslint-import-resolver-node@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== dependencies: debug "^2.6.9" - resolve "^1.5.0" + resolve "^1.13.1" -eslint-loader@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.2.tgz#5a627316a51d6f41d357b9f6f0554e91506cdd6e" - integrity sha512-S5VnD+UpVY1PyYRqeBd/4pgsmkvSokbHqTXAQMpvCyRr3XN2tvSLo9spm2nEpqQqh9dezw3os/0zWihLeOg2Rw== +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== dependencies: fs-extra "^8.1.0" loader-fs-cache "^1.0.2" loader-utils "^1.2.3" - object-hash "^1.3.1" - schema-utils "^2.2.0" + object-hash "^2.0.1" + schema-utils "^2.6.1" -eslint-module-utils@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.0.tgz#cdf0b40d623032274ccd2abd7e64c4e524d6e19c" - integrity sha512-kCo8pZaNz2dsAW7nCUjuVoI11EBXXpIzfNxmaoLhXoRDOnqXLC4iSGVRdZPhOitfbdEfMEfKOiENaK6wDPZEGw== +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== dependencies: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-flowtype@3.13.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" - integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== dependencies: lodash "^4.17.15" -eslint-plugin-import@2.18.2: - version "2.18.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" - integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== +eslint-plugin-import@2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz#d749a7263fb6c29980def8e960d380a6aa6aecaa" + integrity sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ== dependencies: array-includes "^3.0.3" + array.prototype.flat "^1.2.1" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" + eslint-module-utils "^2.4.1" has "^1.0.3" minimatch "^3.0.4" object.values "^1.1.0" read-pkg-up "^2.0.0" - resolve "^1.11.0" + resolve "^1.12.0" eslint-plugin-jsx-a11y@6.2.3: version "6.2.3" @@ -4798,20 +4930,20 @@ eslint-plugin-react-hooks@^1.6.1: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== -eslint-plugin-react@7.14.3: - version "7.14.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" - integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== +eslint-plugin-react@7.18.0: + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz#2317831284d005b30aff8afb7c4e906f13fa8e7e" + integrity sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.1.0" - object.entries "^1.1.0" - object.fromentries "^2.0.0" - object.values "^1.1.0" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.10.1" + resolve "^1.14.2" eslint-scope@^4.0.3: version "4.0.3" @@ -4841,7 +4973,7 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.1.0: +eslint@^6.6.0: version "6.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== @@ -4893,12 +5025,7 @@ espree@^6.1.2: acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -4948,9 +5075,9 @@ eventlistener@0.0.1: integrity sha1-7Suqu4UiJ68rz4iRUscsY8pTLrg= events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== eventsource@^1.0.7: version "1.0.7" @@ -5015,7 +5142,7 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -express@^4.16.2: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -5111,10 +5238,10 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== fast-glob@^2.0.2: version "2.2.7" @@ -5177,13 +5304,6 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - figures@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" @@ -5198,23 +5318,23 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.5.0" file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filesize@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== fill-range@^4.0.0: version "4.0.0" @@ -5226,6 +5346,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -5257,12 +5384,22 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-cache-dir@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" + integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== dependencies: - locate-path "^3.0.0" + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" find-up@^1.0.0: version "1.1.2" @@ -5279,25 +5416,32 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -firebase@^7.5.0: - version "7.6.1" - resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.6.1.tgz#ef9bf74d9d0d9fc2b3ac5945769c3d62ca076458" - integrity sha512-rrKp2cWmrH3gdxr+3t97t6eGye4VJTOYo6U98jvGi+OA4ZSKTSrCMXN6nZkAVOkSCvn/fgw//oHV+7VsJskB/Q== +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - "@firebase/analytics" "0.2.9" - "@firebase/app" "0.5.0" - "@firebase/app-types" "0.5.0" - "@firebase/auth" "0.13.3" - "@firebase/database" "0.5.17" - "@firebase/firestore" "1.9.1" - "@firebase/functions" "0.4.28" - "@firebase/installations" "0.3.8" - "@firebase/messaging" "0.6.0" - "@firebase/performance" "0.2.28" - "@firebase/polyfill" "0.3.30" - "@firebase/remote-config" "0.1.9" - "@firebase/storage" "0.3.22" - "@firebase/util" "0.2.36" + locate-path "^3.0.0" + +firebase@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.8.1.tgz#1f2a1771d89acf1aac1a36fb35d5870a4da4d953" + integrity sha512-Ji1/21pNvxW3gbBo/iTtXFJsTTWzcDoMeCRx+NJ7/uUVYvmX91WjhnwO84OusHIo9WMs54kosoOWL0i6PZyWwg== + dependencies: + "@firebase/analytics" "0.2.13" + "@firebase/app" "0.5.4" + "@firebase/app-types" "0.5.1" + "@firebase/auth" "0.13.5" + "@firebase/database" "0.5.21" + "@firebase/firestore" "1.10.1" + "@firebase/functions" "0.4.32" + "@firebase/installations" "0.4.2" + "@firebase/messaging" "0.6.4" + "@firebase/performance" "0.2.32" + "@firebase/polyfill" "0.3.31" + "@firebase/remote-config" "0.1.13" + "@firebase/storage" "0.3.26" + "@firebase/util" "0.2.40" flat-cache@^2.0.1: version "2.0.1" @@ -5334,9 +5478,9 @@ follow-redirects@1.5.10: debug "=3.1.0" follow-redirects@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" - integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== dependencies: debug "^3.0.0" @@ -5362,14 +5506,14 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" - integrity sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA== +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" - chokidar "^2.0.4" + chokidar "^3.3.0" micromatch "^3.1.10" minimatch "^3.0.4" semver "^5.6.0" @@ -5410,19 +5554,19 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@7.0.1, fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -5444,6 +5588,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -5459,10 +5610,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" - integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== +fsevents@2.1.2, fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== fsevents@^1.2.7: version "1.2.11" @@ -5502,9 +5653,9 @@ functional-red-black-tree@^1.0.1: integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= functions-have-names@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.0.tgz#83da7583e4ea0c9ac5ff530f73394b033e0bf77d" - integrity sha512-zKXyzksTeaCSw5wIX79iCA40YAa6CJMJgNg9wdkU/ERBrIdPSimPICYiLp65lRbSBqtiHql/HZfS2DyI/AH6tQ== + version "1.2.1" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" + integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== gauge@~2.7.3: version "2.7.4" @@ -5527,6 +5678,11 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -5574,7 +5730,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -5659,20 +5815,20 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== graphql-tag@^2.4.2: - version "2.10.1" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02" - integrity sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg== + version "2.10.3" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.3.tgz#ea1baba5eb8fc6339e4c4cf049dabe522b0edf03" + integrity sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA== -graphql@^14.5.8: - version "14.5.8" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.8.tgz#504f3d3114cb9a0a3f359bbbcf38d9e5bf6a6b3c" - integrity sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg== +graphql@^14.6.0: + version "14.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.6.0.tgz#57822297111e874ea12f5cd4419616930cd83e49" + integrity sha512-VKzfvHEKybTKjQVpTFrA5yUq2S9ihcZvfJAtsDBBCuV6wauPu1xl/f9ehgVf0FcEJJs4vz6ysb/ZMkGigQZseg== dependencies: iterall "^1.2.2" @@ -5716,23 +5872,12 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.2: - version "4.5.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" - integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - 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: +har-validator@~5.1.0, har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -5757,6 +5902,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -5821,7 +5971,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.2.x: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -5857,10 +6007,10 @@ hoist-non-react-statics@^2.3.1: resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#101685d3aff3b23ea213163f6e8e12f4f111e19f" - integrity sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw== +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" @@ -5908,23 +6058,28 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.0: +html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -html-minifier@^3.5.20: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + +html-minifier-terser@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.3.tgz#b33549b57be7f0357be0d0b892995aaed1ed90f8" + integrity sha512-It4No3H1V3Dhd/O0MePFdo0oX/M6u6YZTMw4My/010mT6vxdbqge7+0RoxGAmeSbKok6gjYZoP0p4rpZ2+J2yw== dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" + camel-case "^3.0.0" + clean-css "^4.2.1" + commander "^4.0.0" + he "^1.2.0" + param-case "^2.1.1" + relateurl "^0.2.7" + terser "^4.3.9" html-parse-stringify2@2.0.1: version "2.0.1" @@ -5933,16 +6088,16 @@ html-parse-stringify2@2.0.1: dependencies: void-elements "^2.0.1" -html-webpack-plugin@4.0.0-beta.5: - version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz#2c53083c1151bfec20479b1f8aaf0039e77b5513" - integrity sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ== +html-webpack-plugin@4.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== dependencies: - html-minifier "^3.5.20" - loader-utils "^1.1.0" - lodash "^4.17.11" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" pretty-error "^2.1.1" - tapable "^1.1.0" + tapable "^1.1.3" util.promisify "1.0.0" htmlparser2@^3.3.0, htmlparser2@^3.9.1: @@ -5999,7 +6154,7 @@ http-errors@~1.7.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-middleware@^0.19.1: +http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== @@ -6032,10 +6187,10 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -i18next@^19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.0.2.tgz#d72502ef031403572703f2e9f013cae005265444" - integrity sha512-fBa43Ann2udP1CQAz3IQpOZ1dGAkmi3mMfzisOhH17igneSRbvZ7P2RNbL+L1iRYKMufBmVwnC7G3gqcyviZ9g== +i18next@^19.1.0: + version "19.1.0" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.1.0.tgz#fe1a1da3d208872946307c7d2d115da45d46159f" + integrity sha512-ISbmukX4L6Dz0QoH9+EW1AnBw7j+NRLoMu9uLPMaNSSTP9Eie9/oUL0dOyWX15baB3gYOpkHJpGZRHOqcnl0ew== dependencies: "@babel/runtime" "^7.3.1" @@ -6046,12 +6201,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^4.1.0: +icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -6102,13 +6252,6 @@ immer@1.10.0: resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== -immutability-helper@^2.8.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.9.1.tgz#71c423ba387e67b6c6ceba0650572f2a2a6727df" - integrity sha512-r/RmRG8xO06s/k+PIaif2r5rGc3j4Yhc01jSBfwPCXDLYZwp/yxralI37Df1mwmuzcCsen/E/ITKcTEvc1PQmQ== - dependencies: - invariant "^2.2.0" - immutable@^3.7.4: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" @@ -6174,12 +6317,17 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -infer-owner@^1.0.3: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -6212,29 +6360,10 @@ ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.1.tgz#13f7980eedc73c689feff3994b109c4e799c6ebb" - integrity sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw== +inquirer@7.0.4, inquirer@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.2" @@ -6250,7 +6379,7 @@ inquirer@^7.0.0: strip-ansi "^5.1.0" through "^2.3.6" -internal-ip@^4.2.0: +internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== @@ -6258,7 +6387,7 @@ internal-ip@^4.2.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6300,6 +6429,11 @@ is-absolute-url@^2.0.0: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -6336,6 +6470,13 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-boolean-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" @@ -6430,11 +6571,9 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -6465,7 +6604,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -6473,9 +6612,9 @@ is-glob@^4.0.0, is-glob@^4.0.1: is-extglob "^2.1.1" is-mobile@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.1.0.tgz#4c0cab72f3358dd9986007389b30729fae80da0b" - integrity sha512-M5OhlZwh+aTlmRUvDg0Wq3uWVNa+w4DyZ2SjbrS+BhSLu9Po+JXHendC305ZEu+Hh7lywb19Zu4kYXu3L1Oo8A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.0.tgz#72b19ab033deb0fd15a2d00a23b9b1003f8fa5d9" + integrity sha512-K0DmUqaZqYl6M8ej536uJYAQaBkx+qWph7xl1KRBr31UiGUT0MoFWUoqnIxzXnIeolnK8bkxtKXkZNL6HfSHhQ== is-number-object@^1.0.4: version "1.0.4" @@ -6489,29 +6628,34 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: - is-path-inside "^1.0.0" + is-path-inside "^2.1.0" -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== dependencies: - path-is-inside "^1.0.1" + path-is-inside "^1.0.2" is-plain-obj@^1.0.0: version "1.1.0" @@ -6591,11 +6735,6 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-what@^3.3.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.5.0.tgz#c50b0e8f3021e0b39410c159bea43a5510d99027" - integrity sha512-00pwt/Jf7IaRh5m2Dp93Iw8LG2cd3OpDj3NrD1XPNUpAWVxPvBP296p4IiGmIU4Ur0f3f56IoIM+fS2pFYF+tQ== - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -6685,16 +6824,16 @@ istanbul-lib-source-maps@^3.0.1: source-map "^0.6.1" istanbul-reports@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== dependencies: - handlebars "^4.1.2" + html-escaper "^2.0.0" iterall@^1.2.1, iterall@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" - integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== jest-changed-files@^24.9.0: version "24.9.0" @@ -6775,14 +6914,17 @@ jest-each@^24.9.0: jest-util "^24.9.0" pretty-format "^24.9.0" -jest-environment-jsdom-fourteen@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz#aad6393a9d4b565b69a609109bf469f62bf18ccc" - integrity sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA== +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== dependencies: - jest-mock "^24.5.0" - jest-util "^24.5.0" - jsdom "^14.0.0" + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" jest-environment-jsdom@^24.9.0: version "24.9.0" @@ -6885,7 +7027,7 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^24.5.0, jest-mock@^24.9.0: +jest-mock@^24.0.0, jest-mock@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== @@ -7000,7 +7142,7 @@ jest-snapshot@^24.9.0: pretty-format "^24.9.0" semver "^6.2.0" -jest-util@^24.5.0, jest-util@^24.9.0: +jest-util@^24.0.0, jest-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== @@ -7030,13 +7172,14 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-watch-typeahead@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.0.tgz#4d5356839a85421588ce452d2440bf0d25308397" - integrity sha512-bJR/HPNgOQnkmttg1OkBIrYFAYuxFxExtgQh67N2qPvaWGVC8TCkedRNPKBfmZfVXFD3u2sCH+9OuS5ApBfCgA== +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.1" + jest-regex-util "^24.9.0" jest-watcher "^24.3.0" slash "^3.0.0" string-length "^3.1.0" @@ -7063,6 +7206,14 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" +jest-worker@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" + integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest@24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" @@ -7076,11 +7227,6 @@ js-base64@^2.1.8: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -7099,6 +7245,11 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsbarcode@^3.8.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/jsbarcode/-/jsbarcode-3.11.0.tgz#20623e008b101ef45d0cce9c8022cdf49be28547" + integrity sha512-/ozCd7wsa+VIHo9sUc03HneVEQrH7cVWfJolUT/WOW1m8mJ2e3iYZje6C9X3LFHdczlesqFHRpxLtbVsNtjyow== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -7136,7 +7287,7 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsdom@^14.0.0: +jsdom@^14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== @@ -7248,6 +7399,22 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonwebtoken@^8.5.1: + version "8.5.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + 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" @@ -7258,7 +7425,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== @@ -7266,12 +7433,24 @@ jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: array-includes "^3.0.3" object.assign "^4.1.0" -just-curry-it@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/just-curry-it/-/just-curry-it-3.1.0.tgz#ab59daed308a58b847ada166edd0a2d40766fbc5" - integrity sha512-mjzgSOFzlrurlURaHVjnQodyPNvrHrf1TbQP2XU9NSqBtHQPuHZ+Eb6TAJP7ASeJN9h9K0KXoRTs8u6ouHBKvg== +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" -killable@^1.0.0: +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== @@ -7303,9 +7482,9 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" @@ -7354,6 +7533,13 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -7411,7 +7597,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -7436,6 +7622,18 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash-es@^4.17.11: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" + integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -7466,16 +7664,51 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -7501,25 +7734,20 @@ lodash.throttle@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.5, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.5, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -loglevel@^1.4.1: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== +loglevel@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== long@^4.0.0: version "4.0.0" @@ -7574,6 +7802,13 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" + integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + dependencies: + semver "^6.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -7638,10 +7873,10 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memoize-one@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" - integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== +memoize-one@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" + integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== memory-fs@^0.4.1: version "0.4.1" @@ -7675,13 +7910,6 @@ meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -merge-anything@^2.2.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-2.4.4.tgz#6226b2ac3d3d3fc5fb9e8d23aa400df25f98fdf0" - integrity sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ== - dependencies: - is-what "^3.3.1" - merge-deep@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" @@ -7743,17 +7971,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.42.0" + mime-db "1.43.0" mime@1.6.0: version "1.6.0" @@ -7765,11 +7993,6 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -7784,10 +8007,10 @@ mini-create-react-context@^0.3.0: gud "^1.0.0" tiny-warning "^1.0.2" -mini-css-extract-plugin@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1" - integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw== +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== dependencies: loader-utils "^1.1.0" normalize-url "1.9.1" @@ -7831,10 +8054,26 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" @@ -7844,6 +8083,13 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -7895,10 +8141,10 @@ moment@2.x, moment@^2.10.2, moment@^2.24.0: resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== -moo@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" - integrity sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw== +moo@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== move-concurrently@^1.0.1: version "1.0.1" @@ -7945,11 +8191,6 @@ mutationobserver-shim@^0.3.2: resolved "https://registry.yarnpkg.com/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#65869630bc89d7bf8c9cd9cb82188cd955aacd2b" integrity sha512-gciOLNN8Vsf7YzcqRjKzlAJ6y7e+B86u7i3KXes0xfxx/nfLmozlW1Vn+Sc9x3tPIePFgc1AeIFhtRgkqTjzDQ== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -7983,20 +8224,20 @@ natural-compare@^1.4.0: integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nearley@^2.7.10: - version "2.19.0" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.0.tgz#37717781d0fd0f2bfc95e233ebd75678ca4bda46" - integrity sha512-2v52FTw7RPqieZr3Gth1luAXZR7Je6q3KaDHY5bjl/paDUdMu35fZ8ICNgiYJRr3tf3NMvIQQR1r27AvEr9CRA== + version "2.19.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.1.tgz#4af4006e16645ff800e9f993c3af039857d9dbdc" + integrity sha512-xq47GIUGXxU9vQg7g/y1o1xuKnkO7ev4nRWqftmQrLkfnE/FjRqDaGOUakM8XHPn/6pW3bGjU2wgoJyId90rqg== dependencies: commander "^2.19.0" - moo "^0.4.3" + moo "^0.5.0" railroad-diagrams "^1.0.0" randexp "0.4.6" semver "^5.4.1" needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + version "2.3.2" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528" + integrity sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w== dependencies: debug "^3.2.6" iconv-lite "^0.4.4" @@ -8007,7 +8248,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== @@ -8126,17 +8367,17 @@ node-pre-gyp@^0.14.0: semver "^5.3.0" tar "^4.4.2" -node-releases@^1.1.29, node-releases@^1.1.42: - version "1.1.44" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" - integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== +node-releases@^1.1.47: + version "1.1.48" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.48.tgz#7f647f0c453a0495bcd64cbd4778c26035c2f03a" + integrity sha512-Hr8BbmUl1ujAST0K0snItzEA5zkJTQup8VNTKNfT6Zw8vTJkIiagUPNfxHmgDOyfFYNfKAul40sD0UEYTvwebw== dependencies: semver "^6.3.0" -node-sass@^4.13.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.0.tgz#b647288babdd6a1cb726de4545516b31f90da066" - integrity sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA== +node-sass@^4.13.1: + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -8188,7 +8429,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -8226,12 +8467,13 @@ npm-normalize-package-bin@^1.0.1: integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-packlist@^1.1.6: - version "1.4.7" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" - integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" npm-run-path@^2.0.0: version "2.0.2" @@ -8291,10 +8533,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== +object-hash@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.2.tgz#f7b2212dbe07d07e340ccd6004c59504fc4015cf" + integrity sha512-b+2AKjAf6uQlxxv8ChHdM+VT4eeX+ZSwv+pk2xIXZWbo+yxn4/En1iC+GHe/OFYa9on0AhFF2PvuAcFHoiiHaA== object-inspect@^1.7.0: version "1.7.0" @@ -8343,7 +8585,7 @@ object.entries@^1.1.0, object.entries@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0, object.fromentries@^2.0.2: +object.fromentries@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== @@ -8353,7 +8595,7 @@ object.fromentries@^2.0.0, object.fromentries@^2.0.2: function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== @@ -8409,13 +8651,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -8423,14 +8658,14 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^6.3.0: +open@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== dependencies: is-wsl "^1.1.0" -opn@^5.1.0: +opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== @@ -8444,14 +8679,6 @@ optimism@^0.10.0: dependencies: "@wry/context" "^0.4.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optimize-css-assets-webpack-plugin@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" @@ -8552,10 +8779,10 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" @@ -8573,16 +8800,37 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -8594,9 +8842,9 @@ p-try@^2.0.0: integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" @@ -8607,7 +8855,7 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: +param-case@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= @@ -8707,12 +8955,17 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -8722,6 +8975,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -8783,6 +9041,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4, picomatch@^2.0.7: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -8838,26 +9101,43 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-up@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - find-up "^2.1.0" + find-up "^4.0.0" + +pkg-up@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -pnp-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" - integrity sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg== +pnp-webpack-plugin@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.0.tgz#d5c068013a2fdc82224ca50ed179c8fba9036a8e" + integrity sha512-ZcMGn/xF/fCOq+9kWMP9vVVxjIkMCja72oy3lziR7UHy0hHFZ57iVpQ71OtveVbmzeCmphBg8pxNdk/hlK99aQ== dependencies: ts-pnp "^1.1.2" -portfinder@^1.0.9: +pop-iterate@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pop-iterate/-/pop-iterate-1.0.1.tgz#ceacfdab4abf353d7a0f2aaa2c1fc7b3f9413ba3" + integrity sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M= + +popper.js@^1.15.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +portfinder@^1.0.25: version "1.0.25" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== @@ -8872,19 +9152,19 @@ posix-character-classes@^0.1.0: integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-attribute-case-insensitive@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz#b2a721a0d279c2f9103a36331c88981526428cc7" - integrity sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A== + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: postcss "^7.0.2" - postcss-selector-parser "^5.0.0" + postcss-selector-parser "^6.0.2" -postcss-browser-comments@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-2.0.0.tgz#dc48d6a8ddbff188a80a000b7393436cb18aed88" - integrity sha512-xGG0UvoxwBc4Yx4JX3gc0RuDl1kc4bVihCzzk6UC72YPfq5fu3c717Nu8Un3nvnq1BJ31gBnFXIG/OaUTnpHgA== +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - postcss "^7.0.2" + postcss "^7" postcss-calc@^7.0.1: version "7.0.1" @@ -9193,16 +9473,17 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" -postcss-modules-scope@^2.1.0: +postcss-modules-scope@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== @@ -9210,12 +9491,12 @@ postcss-modules-scope@^2.1.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - icss-replace-symbols "^1.1.0" + icss-utils "^4.0.0" postcss "^7.0.6" postcss-nesting@^7.0.0: @@ -9306,15 +9587,16 @@ postcss-normalize-whitespace@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-7.0.1.tgz#eb51568d962b8aa61a8318383c8bb7e54332282e" - integrity sha512-NOp1fwrG+6kVXWo7P9SizCHX6QvioxFD/hZcI2MLxPmVnFJFC0j0DDpIuNw2tUDeCFMni59gCVgeJ1/hYhj2OQ== +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== dependencies: - "@csstools/normalize.css" "^9.0.1" - browserslist "^4.1.1" - postcss "^7.0.2" - postcss-browser-comments "^2.0.0" + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" postcss-ordered-values@^4.1.2: version "4.1.2" @@ -9457,7 +9739,7 @@ postcss-selector-parser@^3.0.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== @@ -9466,7 +9748,7 @@ postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-sel indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -9494,12 +9776,12 @@ postcss-unique-selectors@^4.0.1: postcss "^7.0.0" uniqs "^2.0.0" -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== @@ -9513,19 +9795,19 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@7.0.14: - version "7.0.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" - integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.25" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" - integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -9738,6 +10020,15 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@2.0.x: + version "2.0.3" + resolved "https://registry.yarnpkg.com/q/-/q-2.0.3.tgz#75b8db0255a1a5af82f58c3f3aaa1efec7d0d134" + integrity sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ= + dependencies: + asap "^2.0.0" + pop-iterate "^1.0.1" + weak-map "^1.0.5" + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -9922,11 +10213,10 @@ rc-dialog@~7.6.0: rc-util "^4.16.1" rc-drawer@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-3.1.1.tgz#25389488f3516b2af1f053eaf2574e3135ea265a" - integrity sha512-gx3W2KaeZHeZVKBwpZiHWgOR12CmER8VRGLeiTQq1E0hmKGNUXMvwV3DPulPTqOaOtcdFPCE3Dlf6mZfq6ANlQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-3.1.3.tgz#cbcb04d4c07f0b66f2ece11d847f4a1bd80ea0b7" + integrity sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg== dependencies: - babel-runtime "^6.26.0" classnames "^2.2.6" rc-util "^4.16.1" react-lifecycles-compat "^3.0.4" @@ -10016,9 +10306,9 @@ rc-mentions@~0.4.0: react-lifecycles-compat "^3.0.4" rc-menu@^7.3.0, rc-menu@^7.4.22, rc-menu@~7.5.1: - version "7.5.3" - resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-7.5.3.tgz#0bdb71ef1f0b4608a25eb9848fa9f673f5353579" - integrity sha512-H/jUyGbJxZI/iuVdC6Iu9KHfz7tucoqK0Vn8ahDnv+ppc1PnKb4SkBbXn5LrmUyaj7thCBiaktBxVnUXSmNE2g== + version "7.5.5" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-7.5.5.tgz#78cdc817d86fc353a1430b864d3d96c7489600ca" + integrity sha512-4YJXJgrpUGEA1rMftXN7bDhrV5rPB8oBJoHqT+GVXtIWCanfQxEnM3fmhHQhatL59JoAFMZhJaNzhJIk4FUWCQ== dependencies: classnames "2.x" dom-scroll-into-view "1.x" @@ -10042,9 +10332,9 @@ rc-notification@~3.3.1: rc-util "^4.0.4" rc-pagination@~1.20.11: - version "1.20.12" - resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-1.20.12.tgz#1ac7928f7a9d303d22e324c0c9a6e691756cf40c" - integrity sha512-V1pL0d4nTW00+8b0qS8t12jawmaP14RKT+jFdc32SD76MO3N2kBE/B/zZWPnJHjHTcs0EVhgQC4b2Vgiyy1OJA== + version "1.20.13" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-1.20.13.tgz#aca9dc020e475f77c5335659f7fe5d7cca2f2592" + integrity sha512-oocyyzx0pye957e3iARFg377hafdUc3oC13faGgmopGX/A8rn7tXCdOwVIJthhI6dHVfAcFLgnYQAlcpGXh+Uw== dependencies: babel-runtime "6.x" classnames "^2.2.6" @@ -10060,9 +10350,9 @@ rc-progress@~2.5.0: prop-types "^15.5.8" rc-rate@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.5.0.tgz#72d4984a03d0a7a0e6779c7a79efcea27626abf6" - integrity sha512-aXX5klRqbVZxvLghcKnLqqo7LvLVCHswEDteWsm5Gb7NBIPa1YKTcAbvb5SZ4Z4i4EeRoZaPwygRAWsQgGtbKw== + version "2.5.1" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.5.1.tgz#55fc5fd23ea9dcc72250b9a889803479f4842961" + integrity sha512-3iJkNJT8xlHklPCdeZtUZmJmRVUbr6AHRlfSsztfYTXVlHrv2TcPn3XkHsH+12j812WVB7gvilS2j3+ffjUHXg== dependencies: classnames "^2.2.5" prop-types "^15.5.8" @@ -10079,9 +10369,9 @@ rc-resize-observer@^0.1.0: resize-observer-polyfill "^1.5.1" rc-select@~9.2.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-9.2.2.tgz#c21b3b9c74aad4ef78bf7841ca47f3be2d0ab28d" - integrity sha512-+NXatBt/wrT03L2e6hDEQfvMG4ihrQymuMtbDVi9+99Qlq2Ip7rASE/5XUYR2bOak7Ce9xXUckfKwhN3Jpp4MA== + version "9.2.3" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-9.2.3.tgz#64340e2d6ef64e8bc3cfc6f468ffd28625589ac2" + integrity sha512-WhswxOMWiNnkXRbxyrj0kiIvyCfo/BaRPaYbsDetSIAU2yEDwKHF798blCP5u86KLOBKBvtxWLFCkSsQw1so5w== dependencies: babel-runtime "^6.23.0" classnames "2.x" @@ -10130,9 +10420,9 @@ rc-switch@~1.9.0: react-lifecycles-compat "^3.0.4" rc-table@~6.10.5: - version "6.10.10" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-6.10.10.tgz#952cb1c7afb8e2e4505019307d36cf3dea316cff" - integrity sha512-xEVkw2nf+UNOJL3VLSCqa+v4IM8l2O1EtR6GLSztWokq6D2t8ntac7e0ImBjcg29yPQwMHm+2YIiC3fvRiSE1A== + version "6.10.11" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-6.10.11.tgz#fffe9c1b56de49f04d75bab3e28458e8c7a22f33" + integrity sha512-YcTlpO4RKlcM7Mio2FjcUOqRUyGU4edtOBG4x5kwZNHwZdfBm7m6VQuyQ/i6qec5S67EP86wiFbmKU54Z2HtFQ== dependencies: classnames "^2.2.5" component-classes "^1.2.6" @@ -10248,9 +10538,9 @@ rc-upload@~2.9.1: warning "4.x" rc-util@^4.0.4, rc-util@^4.1.1, rc-util@^4.13.0, rc-util@^4.15.3, rc-util@^4.15.7, rc-util@^4.16.1, rc-util@^4.3.0, rc-util@^4.4.0, rc-util@^4.5.0, rc-util@^4.5.1, rc-util@^4.6.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.18.1.tgz#5a6312503cd5366ef0bede021dce42d373f404a8" - integrity sha512-3aRHG32ZvqBymtJUGoQnbZS+XANzO6XTiFEFAYI3BfuxESEazopAy0kBwcAI6BlLHsW1oLiy3ysE9uYwylh2ag== + version "4.19.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.19.0.tgz#f3b5e3a02cc0a667d127784068e1236c095dbcbf" + integrity sha512-mptALlLwpeczS3nrv83DbwJNeupolbuvlIEjcvimSiWI8NUBjpF0HgG3kWp1RymiuiRCNm9yhaXqDz0a99dpgQ== dependencies: add-dom-event-listener "^1.1.0" babel-runtime "6.x" @@ -10279,62 +10569,83 @@ react-apollo@^3.1.3: "@apollo/react-hooks" "^3.1.3" "@apollo/react-ssr" "^3.1.3" -react-app-polyfill@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.5.tgz#59c7377a0b9ed25692eeaca7ad9b12ef2d064709" - integrity sha512-RcbV6+msbvZJZUIK/LX3UafPtoaDSJgUWu4sqBxHKTVmBsnlU2QWCKJRBRmgjxu+ivW/GPINbPWRM4Ppa6Lbgw== +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== dependencies: - core-js "^3.4.1" + core-js "^3.5.0" object-assign "^4.1.1" promise "^8.0.3" raf "^3.4.1" regenerator-runtime "^0.13.3" whatwg-fetch "^3.0.0" -react-chartjs-2@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-2.8.0.tgz#1c24de91fb3755f8c4302675de7d66fdda339759" - integrity sha512-BPpC+qfnh37DkcXvxRwA1rdD9rX/0AQrwru4VZTLofCCuZBwRsc7PbfxjilvoB6YlHhorwZu40YDWEQkoz7xfQ== +react-barcode@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/react-barcode/-/react-barcode-1.4.0.tgz#ebc85ff1b8b49ac4b947b7f3745d684c6c363902" + integrity sha512-xDxIc9WUTQPMcwc3kbCVsjh03WiPyynms9OSdsNSh2AAgB6XqMiy9hYWkCNHgdNdvurkvKB6hm25AZHXyQfvlQ== + dependencies: + jsbarcode "^3.8.0" + prop-types "^15.6.2" + +react-big-calendar@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/react-big-calendar/-/react-big-calendar-0.23.0.tgz#cc780481548fcefabb04cea05dd1a08456702a67" + integrity sha512-f/v1J/oqvEJqXcT5clJ5wzFIWKRNUeMCvLLzH6PYszcR15mUgqQb31HH+2Ev+YZHVW3YSStcZn2HWEhmvFr9ew== + dependencies: + "@babel/runtime" "^7.1.5" + clsx "^1.0.4" + date-arithmetic "^4.0.1" + dom-helpers "^5.1.0" + invariant "^2.2.4" + lodash "^4.17.11" + lodash-es "^4.17.11" + memoize-one "^4.0.3" + prop-types "^15.6.2" + react-overlays "^2.0.0-0" + uncontrollable "^7.0.0" + warning "^4.0.2" + +react-chartjs-2@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-2.9.0.tgz#d054dbdd763fbe9a76296a4ae0752ea549b76d9e" + integrity sha512-IYwqUUnQRAJ9SNA978vxulHJTcUFTJk2LDVfbAyk0TnJFZZG7+6U/2flsE4MCw6WCbBjTTypy8T82Ch7XrPtRw== dependencies: lodash "^4.17.4" prop-types "^15.5.8" -react-click-outside@tj/react-click-outside: - version "1.1.1" - resolved "https://codeload.github.com/tj/react-click-outside/tar.gz/a833ddc5be47490307f9fcc6ed09d8c353108510" - -react-dev-utils@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" - integrity sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg== +react-dev-utils@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.1.0.tgz#ccf82135f6dc2fc91969bc729ce57a69d8e86025" + integrity sha512-KmZChqxY6l+ed28IHetGrY8J9yZSvzlAHyFXduEIhQ42EBGtqftlbqQZ+dDTaC7CwNW2tuXN+66bRKE5h2HgrQ== dependencies: - "@babel/code-frame" "7.5.5" + "@babel/code-frame" "7.8.3" address "1.1.2" - browserslist "4.7.0" - chalk "2.4.2" - cross-spawn "6.0.5" + browserslist "4.8.6" + chalk "3.0.0" + cross-spawn "7.0.1" detect-port-alt "1.1.6" - escape-string-regexp "1.0.5" - filesize "3.6.1" - find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.5.0" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" global-modules "2.0.0" globby "8.0.2" gzip-size "5.1.1" immer "1.10.0" - inquirer "6.5.0" + inquirer "7.0.4" is-root "2.1.0" loader-utils "1.2.3" - open "^6.3.0" - pkg-up "2.0.0" - react-error-overlay "^6.0.3" + open "^6.4.0" + pkg-up "3.1.0" + react-error-overlay "^6.0.5" recursive-readdir "2.2.2" shell-quote "1.7.2" - sockjs-client "1.4.0" - strip-ansi "5.2.0" + strip-ansi "6.0.0" text-table "0.2.0" -"react-dom@>= 16.3", react-dom@^16.12.0: +react-dom@^16.12.0: version "16.12.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== @@ -10344,23 +10655,30 @@ react-dev-utils@^9.1.0: prop-types "^15.6.2" scheduler "^0.18.0" -react-error-overlay@^6.0.3: - version "6.0.4" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.4.tgz#0d165d6d27488e660bc08e57bdabaad741366f7a" - integrity sha512-ueZzLmHltszTshDMwyfELDq8zOA803wQ1ZuzCccXa1m57k1PxSHfflPD5W9YIiTXLs0JTLzoj6o1LuM5N6zzNA== +react-error-overlay@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.5.tgz#55d59c2a3810e8b41922e0b4e5f85dcf239bd533" + integrity sha512-+DMR2k5c6BqMDSMF8hLH0vYKtKTeikiFW+fj0LClN+XZg4N9b8QUAdHC62CGWNLTi/gnuuemNcNcTFrCvK1f+A== -react-i18next@^11.2.7: - version "11.2.7" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.2.7.tgz#d0dd61ae6127589e316c6293fc948fe413c63580" - integrity sha512-BBm6/ch6jgvpIBwyitNd0G7Z49+wNeyJ6x0rZFcXX6NPrla2GuDGH+oKSjmYRg8IqtL6aG9CwWb06YJCrXbk6w== +react-html-email@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-html-email/-/react-html-email-3.0.0.tgz#a5a51b78271a33daf9b14638e9e4c5df93f691aa" + integrity sha512-eIBmZjqoS1SLAOi/QYTHLnZSmBM5AhP/cScJGhVDHlBJFtMyiR4qBUQYQDCqRtNPDKHWGMbbS/+XHSgD+C2hng== + dependencies: + prop-types "^15.5.10" + +react-i18next@^11.3.1: + version "11.3.1" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.3.1.tgz#9269282c3f566015f0bdf8fdbf46782bbe50f5a7" + integrity sha512-S/CWHcnew1lXo8HeniGhBU5kTmPhZ4w4rtA4m/gDN07soCtKKYSAcLNm7zhwjI2OSR4Skd0vOtzNp/FzEEjxIw== dependencies: "@babel/runtime" "^7.3.1" html-parse-stringify2 "2.0.1" -react-icons@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-3.8.0.tgz#229de5904809696c9f46932bd9b6126b2522866e" - integrity sha512-rA/8GRKjPulft8BSBSMsHkE1AGPqJ7LjNsyk0BE7XjG70Iz62zOled2SJk7LDo8x9z86a3xOstDlKlMZ4pAy7A== +react-icons@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-3.9.0.tgz#89a00f20a0e02e6bfd899977eaf46eb4624239d5" + integrity sha512-gKbYKR+4QsD3PmIHLAM9TDDpnaTsr3XZeK1NTAb6WQQ+gxEdJ0xuCgLq0pxXdS7Utg2AIpcVhM1ut/jlDhcyNg== dependencies: camelcase "^5.0.0" @@ -10384,7 +10702,7 @@ react-lazy-load@^3.0.13: lodash.throttle "^4.0.0" prop-types "^15.5.8" -react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: +react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== @@ -10401,29 +10719,30 @@ react-number-format@^4.3.1: dependencies: prop-types "^15.7.2" -react-popopo@^2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/react-popopo/-/react-popopo-2.1.9.tgz#d93f70a8fb68227907d00c0cea4d8f5d321053ea" - integrity sha512-zXOpcLSpaLZmBxhdtenJzQPLjY81XknVS/tXH4Kv5BBrnYIUPHvVdGmS7+o9s7DjCzzdK7AdVwtG+FVSO0cZ8g== +react-overlays@^2.0.0-0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-2.1.1.tgz#ffe2090c4a10da6b8947a1c7b1a67d0457648a0d" + integrity sha512-gaQJwmb8Ij2IGVt4D1HmLtl4A0mDVYxlsv/8i0dHWK7Mw0kNat6ORelbbEWzaXTK1TqMeQtJw/jraL3WOADz3w== dependencies: - classnames ">= 2.0" + "@babel/runtime" "^7.4.5" + "@restart/hooks" "^0.3.12" + dom-helpers "^5.1.0" + popper.js "^1.15.0" prop-types "^15.7.2" - react ">= 16.3" - react-dom ">= 16.3" - styled-components ">= 4.0" + uncontrollable "^7.0.0" + warning "^4.0.3" -react-redux@^5.0.7: - version "5.1.2" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.2.tgz#b19cf9e21d694422727bf798e934a916c4080f57" - integrity sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q== +react-redux@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.3.tgz#717a3d7bbe3a1b2d535c94885ce04cdc5a33fc79" + integrity sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w== dependencies: - "@babel/runtime" "^7.1.2" + "@babel/runtime" "^7.5.5" hoist-non-react-statics "^3.3.0" invariant "^2.2.4" - loose-envify "^1.1.0" - prop-types "^15.6.1" - react-is "^16.6.0" - react-lifecycles-compat "^3.0.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.9.0" react-router-dom@^5.1.2: version "5.1.2" @@ -10454,66 +10773,65 @@ react-router@5.1.2: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-scripts@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.2.0.tgz#58ccd6b4ffa27f1b4d2986cbdcaa916660e9e33c" - integrity sha512-6LzuKbE2B4eFQG6i1FnTScn9HDcWBfXXnOwW9xKFPJ/E3rK8i1ufbOZ0ocKyRPxJAKdN7iqg3i7lt0+oxkSVOA== +react-scripts@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.3.1.tgz#dee7962045dbee5b02b1d47569815e62f7a546b5" + integrity sha512-DHvc+/QN0IsLvmnPQqd+H70ol+gdFD3p/SS2tX8M6z1ysjtRGvOwLWy72co1nphYGpq1NqV/Ti5dviU8SCAXpA== dependencies: - "@babel/core" "7.6.0" - "@svgr/webpack" "4.3.2" - "@typescript-eslint/eslint-plugin" "^2.2.0" - "@typescript-eslint/parser" "^2.2.0" + "@babel/core" "7.8.4" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" babel-eslint "10.0.3" babel-jest "^24.9.0" babel-loader "8.0.6" - babel-plugin-named-asset-import "^0.3.4" - babel-preset-react-app "^9.0.2" - camelcase "^5.2.0" - case-sensitive-paths-webpack-plugin "2.2.0" - css-loader "2.1.1" - dotenv "6.2.0" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.1" + camelcase "^5.3.1" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "3.4.2" + dotenv "8.2.0" dotenv-expand "5.1.0" - eslint "^6.1.0" - eslint-config-react-app "^5.0.2" - eslint-loader "3.0.2" - eslint-plugin-flowtype "3.13.0" - eslint-plugin-import "2.18.2" + eslint "^6.6.0" + eslint-config-react-app "^5.2.0" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.0" eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.14.3" + eslint-plugin-react "7.18.0" eslint-plugin-react-hooks "^1.6.1" - file-loader "3.0.1" - fs-extra "7.0.1" - html-webpack-plugin "4.0.0-beta.5" + file-loader "4.3.0" + fs-extra "^8.1.0" + html-webpack-plugin "4.0.0-beta.11" identity-obj-proxy "3.0.0" - is-wsl "^1.1.0" jest "24.9.0" - jest-environment-jsdom-fourteen "0.1.0" + jest-environment-jsdom-fourteen "1.0.1" jest-resolve "24.9.0" - jest-watch-typeahead "0.4.0" - mini-css-extract-plugin "0.8.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.9.0" optimize-css-assets-webpack-plugin "5.0.3" - pnp-webpack-plugin "1.5.0" + pnp-webpack-plugin "1.6.0" postcss-flexbugs-fixes "4.1.0" postcss-loader "3.0.0" - postcss-normalize "7.0.1" + postcss-normalize "8.0.1" postcss-preset-env "6.7.0" postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.4" - react-dev-utils "^9.1.0" - resolve "1.12.0" - resolve-url-loader "3.1.0" - sass-loader "7.2.0" + react-app-polyfill "^1.0.6" + react-dev-utils "^10.1.0" + resolve "1.15.0" + resolve-url-loader "3.1.1" + sass-loader "8.0.2" semver "6.3.0" - style-loader "1.0.0" - terser-webpack-plugin "1.4.1" - ts-pnp "1.1.4" - url-loader "2.1.0" - webpack "4.41.0" - webpack-dev-server "3.2.1" - webpack-manifest-plugin "2.1.1" + style-loader "1.1.3" + terser-webpack-plugin "2.3.4" + ts-pnp "1.1.5" + url-loader "2.3.0" + webpack "4.41.5" + webpack-dev-server "3.10.1" + webpack-manifest-plugin "2.2.0" workbox-webpack-plugin "4.3.1" optionalDependencies: - fsevents "2.0.7" + fsevents "2.1.2" react-slick@~0.25.2: version "0.25.2" @@ -10536,26 +10854,7 @@ react-test-renderer@^16.0.0-0: react-is "^16.8.6" scheduler "^0.18.0" -react-trello@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/react-trello/-/react-trello-2.2.3.tgz#a8018c3b4812902b6030dc1ef3b8123c270ace5c" - integrity sha512-eB2BT3EJl7A30/+GcgKFnvhydSjMgzmvjPpx7MHgc5gmUuK2sbEzpNXtx9p7/eQC5dd10T7pnQa2muURp6ESCg== - dependencies: - autosize "^4.0.2" - classnames "^2.2.6" - immutability-helper "^2.8.1" - lodash "^4.17.11" - prop-types "^15.7.2" - react-click-outside tj/react-click-outside - react-popopo "^2.1.9" - react-redux "^5.0.7" - redux "^4.0.0" - redux-actions "^2.6.1" - redux-logger "^3.0.6" - smooth-dnd "https://github.com/rcdexta/smooth-dnd" - uuid "^3.3.2" - -"react@>= 16.3", react@^16.12.0: +react@^16.12.0: version "16.12.0" resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== @@ -10616,9 +10915,9 @@ read-pkg@^3.0.0: path-type "^3.0.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -10629,9 +10928,9 @@ read-pkg@^3.0.0: util-deprecate "~1.0.1" readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + version "3.5.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.5.0.tgz#465d70e6d1087f6162d079cd0b5db7fbebfd1606" + integrity sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -10646,6 +10945,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -10668,22 +10974,6 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -reduce-reducers@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.4.3.tgz#8e052618801cd8fc2714b4915adaa8937eb6d66c" - integrity sha512-+CNMnI8QhgVMtAt54uQs3kUxC3Sybpa7Y63HR14uGLgI9/QR5ggHvpxwhGGe3wmx5V91YwqQIblN9k5lspAmGw== - -redux-actions@^2.6.1: - version "2.6.5" - resolved "https://registry.yarnpkg.com/redux-actions/-/redux-actions-2.6.5.tgz#bdca548768ee99832a63910c276def85e821a27e" - integrity sha512-pFhEcWFTYNk7DhQgxMGnbsB1H2glqhQJRQrtPb96kD3hWiZRzXHwwmFPswg6V2MjraXRXWNmuP9P84tvdLAJmw== - dependencies: - invariant "^2.2.4" - just-curry-it "^3.1.0" - loose-envify "^1.4.0" - reduce-reducers "^0.4.3" - to-camel-case "^1.0.0" - redux-logger@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf" @@ -10691,7 +10981,19 @@ redux-logger@^3.0.6: dependencies: deep-diff "^0.3.5" -redux@^4.0.0: +redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== + +redux-saga@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.1.3.tgz#9f3e6aebd3c994bbc0f6901a625f9a42b51d1112" + integrity sha512-RkSn/z0mwaSa5/xH/hQLo8gNf4tlvT18qXDNvedihLcfzh+jMchDgaariQoehCpgRltEm4zHKJyINEz6aqswTw== + dependencies: + "@redux-saga/core" "^1.1.3" + +redux@^4.0.4, redux@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== @@ -10788,7 +11090,7 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" -relateurl@0.2.x: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -10868,6 +11170,32 @@ request@^2.87.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + 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.3" + 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.5.0" + 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" @@ -10888,6 +11216,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== + resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" @@ -10915,18 +11248,18 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve-url-loader@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.0.tgz#54d8181d33cd1b66a59544d05cadf8e4aa7d37cc" - integrity sha512-2QcrA+2QgVqsMJ1Hn5NnJXIGCX1clQ1F6QJTqOeiaDw9ACo1G2k+8/shq3mtqne03HOFyskAClqfxKyFBriXZg== +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== dependencies: adjust-sourcemap-loader "2.0.0" - camelcase "5.0.0" + camelcase "5.3.1" compose-function "3.0.3" - convert-source-map "1.6.0" + convert-source-map "1.7.0" es6-iterator "2.0.3" loader-utils "1.2.3" - postcss "7.0.14" + postcss "7.0.21" rework "1.0.1" rework-visit "1.0.0" source-map "0.6.1" @@ -10941,28 +11274,20 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" - integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.8.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -10976,6 +11301,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + rework-visit@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" @@ -10999,7 +11329,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -11029,6 +11359,11 @@ rmc-feedback@^2.0.0: babel-runtime "6.x" classnames "^2.2.5" +rootpath@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/rootpath/-/rootpath-0.1.2.tgz#5b379a87dca906e9b91d690a599439bef267ea6b" + integrity sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms= + rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" @@ -11056,12 +11391,10 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0, rxjs@^6.5.3: +rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== - dependencies: - tslib "^1.9.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -11100,6 +11433,11 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" @@ -11110,16 +11448,16 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.2.0.tgz#e34115239309d15b2527cb62b5dfefb62a96ff7f" - integrity sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA== +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== dependencies: clone-deep "^4.0.1" - loader-utils "^1.0.1" - neo-async "^2.5.0" - pify "^4.0.1" - semver "^5.5.0" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" sax@^1.2.4, sax@~1.2.4: version "1.2.4" @@ -11150,14 +11488,19 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" - integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.4.tgz#a27efbf6e4e78689d91872ee3ccfa57d7bdd0f53" + integrity sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ== dependencies: ajv "^6.10.2" ajv-keywords "^3.4.1" +scmp@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" + integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q== + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -11171,7 +11514,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.9.1: +selfsigned@^1.10.7: version "1.10.7" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== @@ -11217,17 +11560,12 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.7.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" - integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== - serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serve-index@^1.7.2: +serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -11322,11 +11660,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" @@ -11378,10 +11728,6 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -"smooth-dnd@https://github.com/rcdexta/smooth-dnd": - version "0.6.3" - resolved "https://github.com/rcdexta/smooth-dnd#f13924c67bf6ffe4613d97bb1ee83f11d364eb1e" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -11412,18 +11758,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -11535,7 +11869,7 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.0: +spdy@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== @@ -11580,6 +11914,14 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -11682,7 +12024,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -11756,12 +12098,12 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - ansi-regex "^4.1.0" + ansi-regex "^5.0.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -11777,12 +12119,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^4.1.0" strip-bom@^2.0.0: version "2.0.0" @@ -11826,31 +12168,28 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" - integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== +style-loader@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" + integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== dependencies: loader-utils "^1.2.3" - schema-utils "^2.0.1" + schema-utils "^2.6.4" -"styled-components@>= 4.0", styled-components@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.4.1.tgz#e0631e889f01db67df4de576fedaca463f05c2f2" - integrity sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g== +styled-components@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.0.1.tgz#57782a6471031abefb2db5820a1876ae853bc619" + integrity sha512-E0xKTRIjTs4DyvC1MHu/EcCXIj6+ENCP8hP01koyoADF++WdBUOrSGwU1scJRw7/YaYOhDvvoad6VlMG+0j53A== dependencies: "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@emotion/is-prop-valid" "^0.8.1" - "@emotion/unitless" "^0.7.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.3" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" babel-plugin-styled-components ">= 1" - css-to-react-native "^2.2.2" - memoize-one "^5.0.0" - merge-anything "^2.2.4" - prop-types "^15.5.4" - react-is "^16.6.0" - stylis "^3.5.0" - stylis-rule-sheet "^0.0.10" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" supports-color "^5.5.0" stylehacks@^4.0.0: @@ -11862,16 +12201,6 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylis-rule-sheet@^0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" - integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== - -stylis@^3.5.0: - version "3.5.4" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" - integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== - subscriptions-transport-ws@^0.9.16: version "0.9.16" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.16.tgz#90a422f0771d9c32069294c08608af2d47f596ec" @@ -11902,10 +12231,17 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + svg-parser@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.2.tgz#d134cc396fa2681dc64f518330784e98bd801ec8" - integrity sha512-1gtApepKFweigFZj3sGO8KT8LvVZK8io146EzXrpVuWCDAbISz/yMucco3hWTkpZNoPabM+dnMOpy6Swue68Zg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.3.tgz#a38f2e4e5442986f7ecb554c11f1411cfcf8c2b9" + integrity sha512-fnCWiifNhK8i2Z7b9R5tbNahpxrRdAaQbnoxKlT2KrSCj9Kq/yBSgulCRgBJRhy1dPnSY5slg5ehPUnzpEcHlg== svgo@^1.0.0, svgo@^1.2.2: version "1.3.2" @@ -11946,7 +12282,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.0, tapable@^1.1.3: +tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -11973,22 +12309,22 @@ tar@^4.4.2: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" - integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== +terser-webpack-plugin@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz#ac045703bd8da0936ce910d8fb6350d0e1dee5fe" + integrity sha512-Nv96Nws2R2nrFOpbzF6IxRDpIkkIfmhvOws+IqMvYdFLO7o6wAILWFKONFgaYy8+T4LVz77DQW0f7wOeDEAjrg== dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + cacache "^13.0.1" + find-cache-dir "^3.2.0" + jest-worker "^25.1.0" + p-limit "^2.2.2" + schema-utils "^2.6.4" + serialize-javascript "^2.1.2" source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + terser "^4.4.3" + webpack-sources "^1.4.3" -terser-webpack-plugin@^1.4.1: +terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== @@ -12003,10 +12339,10 @@ terser-webpack-plugin@^1.4.1: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" - integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== +terser@^4.1.2, terser@^4.3.9, terser@^4.4.3: + version "4.6.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" + integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -12063,9 +12399,9 @@ timsort@^0.3.0: integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-invariant@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" - integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== tiny-warning@^1.0.0, tiny-warning@^1.0.2: version "1.0.3" @@ -12094,23 +12430,11 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-camel-case@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" - integrity sha1-GlYFSy+daWKYzmamCJcyK29CPkY= - dependencies: - to-space-case "^1.0.0" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-no-case@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" - integrity sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo= - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -12126,6 +12450,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -12136,13 +12467,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-space-case@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" - integrity sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc= - dependencies: - to-no-case "^1.0.0" - toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" @@ -12153,7 +12477,7 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -12195,12 +12519,7 @@ ts-invariant@^0.4.0, ts-invariant@^0.4.4: dependencies: tslib "^1.9.3" -ts-pnp@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.4.tgz#ae27126960ebaefb874c6d7fa4729729ab200d90" - integrity sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw== - -ts-pnp@^1.1.2: +ts-pnp@1.1.5, ts-pnp@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec" integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA== @@ -12234,6 +12553,22 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +twilio@^3.39.5: + version "3.39.5" + resolved "https://registry.yarnpkg.com/twilio/-/twilio-3.39.5.tgz#1512ae1de83441609acf7328a75442c439e6c3af" + integrity sha512-IuiHFRuq7e+rXMNRDqwXo16ITefPsPh1reI/rRKFVbvRNRY88LnnN5Qdjyw90UWqWxqMwGqYXt253tAvt1pI3g== + dependencies: + "@types/express" "^4.17.2" + dayjs "^1.8.20" + jsonwebtoken "^8.5.1" + lodash "^4.17.15" + q "2.0.x" + request "^2.88.2" + rootpath "^0.1.2" + scmp "^2.1.0" + url-parse "^1.4.7" + xmlbuilder "^13.0.2" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -12269,26 +12604,39 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript-compare@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" + integrity sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA== + dependencies: + typescript-logic "^0.0.0" + +typescript-logic@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" + integrity sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q== + +typescript-tuple@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" + integrity sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q== + dependencies: + typescript-compare "^0.0.2" + ua-parser-js@^0.7.18: version "0.7.21" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== +uncontrollable@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-7.1.1.tgz#f67fed3ef93637126571809746323a9db815d556" + integrity sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q== dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -uglify-js@^3.1.4: - version "3.7.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.3.tgz#f918fce9182f466d5140f24bb0ff35c2d32dcc6a" - integrity sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg== - dependencies: - commander "~2.20.3" - source-map "~0.6.1" + "@babel/runtime" "^7.6.3" + "@types/react" "^16.9.11" + invariant "^2.2.4" + react-lifecycles-compat "^3.0.4" unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" @@ -12392,16 +12740,16 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.1.0.tgz#bcc1ecabbd197e913eca23f5e0378e24b4412961" - integrity sha512-kVrp/8VfEm5fUt+fl2E0FQyrpmOYgMEkBsv8+UDP1wFhszECq5JyGF33I7cajlVY90zRZ6MyfgKXngLvHYZX8A== +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== dependencies: loader-utils "^1.2.3" mime "^2.4.4" - schema-utils "^2.0.0" + schema-utils "^2.5.0" -url-parse@^1.4.3: +url-parse@^1.4.3, url-parse@^1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== @@ -12427,7 +12775,7 @@ 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.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -12435,6 +12783,16 @@ util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -12460,9 +12818,9 @@ utils-merge@1.0.1: integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= uuid@^3.0.1, uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@^2.0.3: version "2.1.0" @@ -12488,9 +12846,9 @@ vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vendors@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" - integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== verror@1.10.0: version "1.10.0" @@ -12557,12 +12915,17 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +weak-map@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.5.tgz#79691584d98607f5070bd3b70a40e6bb22e401eb" + integrity sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes= + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-dev-middleware@^3.5.1: +webpack-dev-middleware@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== @@ -12573,41 +12936,44 @@ webpack-dev-middleware@^3.5.1: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e" - integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw== +webpack-dev-server@3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" + integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.0.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" debug "^4.1.1" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" - http-proxy-middleware "^0.19.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" import-local "^2.0.0" - internal-ip "^4.2.0" + internal-ip "^4.3.0" ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.6" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" schema-utils "^1.0.0" - selfsigned "^1.9.1" - semver "^5.6.0" - serve-index "^1.7.2" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.0" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.5.1" + webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" - yargs "12.0.2" + ws "^6.2.1" + yargs "12.0.5" webpack-log@^2.0.0: version "2.0.0" @@ -12617,17 +12983,17 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.1.1.tgz#6b3e280327815b83152c79f42d0ca13b665773c4" - integrity sha512-2zqJ6mvc3yoiqfDjghAIpljhLSDh/G7vqGrzYcYqqRCd/ZZZCAuc/YPE5xG0LGpLgDJRhUNV1H+znyyhIxahzA== +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== dependencies: fs-extra "^7.0.0" lodash ">=3.5 <5" object.entries "^1.1.0" tapable "^1.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12635,10 +13001,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b" - integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g== +webpack@4.41.5: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -12660,7 +13026,7 @@ webpack@4.41.0: node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" - terser-webpack-plugin "^1.4.1" + terser-webpack-plugin "^1.4.3" watchpack "^1.6.0" webpack-sources "^1.4.1" @@ -12735,6 +13101,13 @@ which@1, which@^1.2.9, which@^1.3.0, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -12752,11 +13125,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - workbox-background-sync@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" @@ -12951,7 +13319,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.2: +ws@^6.1.2, ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== @@ -12963,6 +13331,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xmlbuilder@^13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7" + integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ== + xmlchars@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" @@ -12973,11 +13346,6 @@ xmlhttprequest@1.8.0: resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -13003,6 +13371,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" @@ -13010,12 +13383,13 @@ yaml@^1.7.2: dependencies: "@babel/runtime" "^7.6.3" -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^13.1.1: version "13.1.1" @@ -13032,13 +13406,13 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" - decamelize "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -13048,7 +13422,7 @@ yargs@12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + yargs-parser "^11.1.1" yargs@^13.3.0: version "13.3.0" diff --git a/firebase/functions/index.js b/firebase/functions/index.js index 50cd1ede2..3583ca696 100644 --- a/firebase/functions/index.js +++ b/firebase/functions/index.js @@ -2,7 +2,7 @@ const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(functions.config().firebase); -//Todo: Move this to an environment parameter. +//TODO Move this to an environment parameter. const GRAPHQL_ENDPOINT = functions.config().auth.graphql_endpoint; const HASURA_SECRET_ADMIN_KEY = functions.config().auth.hasura_secret_admin_key; const UPSERT_USER = ` diff --git a/hasura/migrations/1580424750331_jobs_fields/down.yaml b/hasura/migrations/1580424750331_jobs_fields/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1580424750331_jobs_fields/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1580424750331_jobs_fields/up.yaml b/hasura/migrations/1580424750331_jobs_fields/up.yaml new file mode 100644 index 000000000..4faaad5d3 --- /dev/null +++ b/hasura/migrations/1580424750331_jobs_fields/up.yaml @@ -0,0 +1,7 @@ +- args: + cascade: true + sql: "alter table jobs\r\nadd column tax_prethr numeric,\r\nadd column tax_thramt + numeric,\r\nadd column tax_str_rt numeric,\r\nadd column tax_lbr_rt numeric,\r\nadd + column adj_g_disc numeric,\r\nadd column adj_towdis numeric,\r\nadd column + adj_strdis numeric,\r\nadd column tax_predis numeric" + type: run_sql diff --git a/hasura/migrations/1580424775529_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580424775529_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..c78859077 --- /dev/null +++ b/hasura/migrations/1580424775529_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,235 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - claim_total + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580424775529_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580424775529_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..c60b5b21b --- /dev/null +++ b/hasura/migrations/1580424775529_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - claim_total + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580424780619_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580424780619_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..6b5aa011f --- /dev/null +++ b/hasura/migrations/1580424780619_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,233 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_levies_rt + - tax_paint_mat_rt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580424780619_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580424780619_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..5312d6320 --- /dev/null +++ b/hasura/migrations/1580424780619_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,241 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580424785911_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580424785911_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..7d2fcd6cc --- /dev/null +++ b/hasura/migrations/1580424785911_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,235 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_levies_rt + - tax_paint_mat_rt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580424785911_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580424785911_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4d5d66b53 --- /dev/null +++ b/hasura/migrations/1580424785911_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425245598_run_sql_migration/down.yaml b/hasura/migrations/1580425245598_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1580425245598_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1580425245598_run_sql_migration/up.yaml b/hasura/migrations/1580425245598_run_sql_migration/up.yaml new file mode 100644 index 000000000..338b11bb7 --- /dev/null +++ b/hasura/migrations/1580425245598_run_sql_migration/up.yaml @@ -0,0 +1,13 @@ +- args: + cascade: true + sql: "alter table joblines\r\n\r\nadd column glass_flag bool,\r\nadd column price_inc + bool,\r\nadd column alt_part_i bool,\r\nadd column price_j bool,\r\nadd column + cert_part bool,\r\nadd column alt_co_id text,\r\nadd column alt_overrd bool,\r\nadd + column alt_partm text,\r\nadd column prt_dsmk_p numeric,\r\nadd column prt_dsmk_m + numeric,\r\nadd column lbr_inc bool,\r\n\r\nadd column lbr_hrs_j bool,\r\nadd + column lbr_typ_j bool,\r\nadd column lbr_op_j bool,\r\nadd column paint_stg + integer,\r\nadd column paint_tone integer,\r\nadd column lbr_tax bool,\r\n\r\nadd + column misc_amt numeric,\r\nadd column misc_sublt bool,\r\nadd column misc_tax + bool,\r\nadd column bett_type text,\r\nadd column bett_pctg numeric,\r\nadd + column bett_amt numeric,\r\nadd column bett_tax bool" + type: run_sql diff --git a/hasura/migrations/1580425277537_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1580425277537_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..d7b2de7cd --- /dev/null +++ b/hasura/migrations/1580425277537_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,50 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580425277537_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1580425277537_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..dc213864d --- /dev/null +++ b/hasura/migrations/1580425277537_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,74 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + - glass_flag + - price_inc + - alt_part_i + - price_j + - cert_part + - alt_co_id + - alt_overrd + - alt_partm + - prt_dsmk_p + - prt_dsmk_m + - lbr_inc + - lbr_hrs_j + - lbr_typ_j + - lbr_op_j + - paint_stg + - paint_tone + - lbr_tax + - misc_amt + - misc_sublt + - misc_tax + - bett_type + - bett_pctg + - bett_amt + - bett_tax + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580425285636_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1580425285636_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..7c4eb1024 --- /dev/null +++ b/hasura/migrations/1580425285636_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,48 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - tax_part + - est_seq + - part_qty + - unq_seq + - act_price + - db_hrs + - db_price + - lbr_amt + - mod_lb_hrs + - alt_partno + - db_ref + - lbr_op + - line_desc + - line_ind + - line_ref + - mod_lbr_ty + - oem_partno + - part_type + - created_at + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580425285636_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1580425285636_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..b143512d8 --- /dev/null +++ b/hasura/migrations/1580425285636_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,72 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + - glass_flag + - price_inc + - alt_part_i + - price_j + - cert_part + - alt_co_id + - alt_overrd + - alt_partm + - prt_dsmk_p + - prt_dsmk_m + - lbr_inc + - lbr_hrs_j + - lbr_typ_j + - lbr_op_j + - paint_stg + - paint_tone + - lbr_tax + - misc_amt + - misc_sublt + - misc_tax + - bett_type + - bett_pctg + - bett_amt + - bett_tax + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580425296863_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1580425296863_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..ca3225d6b --- /dev/null +++ b/hasura/migrations/1580425296863_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,50 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - tax_part + - est_seq + - part_qty + - unq_seq + - act_price + - db_hrs + - db_price + - lbr_amt + - mod_lb_hrs + - alt_partno + - db_ref + - lbr_op + - line_desc + - line_ind + - line_ref + - mod_lbr_ty + - oem_partno + - part_type + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425296863_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1580425296863_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..6d1063cc8 --- /dev/null +++ b/hasura/migrations/1580425296863_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,74 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - part_type + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425460879_alter_table_public_jobs_add_column_rate_laa/down.yaml b/hasura/migrations/1580425460879_alter_table_public_jobs_add_column_rate_laa/down.yaml new file mode 100644 index 000000000..785d08ad2 --- /dev/null +++ b/hasura/migrations/1580425460879_alter_table_public_jobs_add_column_rate_laa/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "rate_laa"; + type: run_sql diff --git a/hasura/migrations/1580425460879_alter_table_public_jobs_add_column_rate_laa/up.yaml b/hasura/migrations/1580425460879_alter_table_public_jobs_add_column_rate_laa/up.yaml new file mode 100644 index 000000000..d7b745111 --- /dev/null +++ b/hasura/migrations/1580425460879_alter_table_public_jobs_add_column_rate_laa/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "rate_laa" numeric NULL; + type: run_sql diff --git a/hasura/migrations/1580425481308_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580425481308_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..c60b5b21b --- /dev/null +++ b/hasura/migrations/1580425481308_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - claim_total + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580425481308_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580425481308_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..a1e5cbdde --- /dev/null +++ b/hasura/migrations/1580425481308_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - claim_total + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + - rate_laa + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580425487863_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580425487863_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..5312d6320 --- /dev/null +++ b/hasura/migrations/1580425487863_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,241 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580425487863_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580425487863_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..57466d6e6 --- /dev/null +++ b/hasura/migrations/1580425487863_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,242 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580425491775_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580425491775_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..4d5d66b53 --- /dev/null +++ b/hasura/migrations/1580425491775_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425491775_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580425491775_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4d5d66b53 --- /dev/null +++ b/hasura/migrations/1580425491775_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425495615_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580425495615_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..4d5d66b53 --- /dev/null +++ b/hasura/migrations/1580425495615_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425495615_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580425495615_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4371eaab0 --- /dev/null +++ b/hasura/migrations/1580425495615_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425498865_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580425498865_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..4d5d66b53 --- /dev/null +++ b/hasura/migrations/1580425498865_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580425498865_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580425498865_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4371eaab0 --- /dev/null +++ b/hasura/migrations/1580425498865_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580427566710_alter_table_public_bodyshops_add_column_region_config/down.yaml b/hasura/migrations/1580427566710_alter_table_public_bodyshops_add_column_region_config/down.yaml new file mode 100644 index 000000000..6b1476237 --- /dev/null +++ b/hasura/migrations/1580427566710_alter_table_public_bodyshops_add_column_region_config/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "region_config"; + type: run_sql diff --git a/hasura/migrations/1580427566710_alter_table_public_bodyshops_add_column_region_config/up.yaml b/hasura/migrations/1580427566710_alter_table_public_bodyshops_add_column_region_config/up.yaml new file mode 100644 index 000000000..b9a0e7e8e --- /dev/null +++ b/hasura/migrations/1580427566710_alter_table_public_bodyshops_add_column_region_config/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "region_config" text NOT NULL + DEFAULT 'CA_BC'; + type: run_sql diff --git a/hasura/migrations/1580427579544_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1580427579544_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..80ca70d5d --- /dev/null +++ b/hasura/migrations/1580427579544_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - id + - insurance_vendor_id + - logo_img_path + - md_ro_statuses + - shopname + - state + - state_tax_id + - updated_at + - zip_post + computed_fields: [] + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580427579544_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1580427579544_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..0575c9859 --- /dev/null +++ b/hasura/migrations/1580427579544_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - id + - insurance_vendor_id + - logo_img_path + - md_ro_statuses + - region_config + - shopname + - state + - state_tax_id + - updated_at + - zip_post + computed_fields: [] + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580428867144_alter_table_public_joblines_add_column_op_code_desc/down.yaml b/hasura/migrations/1580428867144_alter_table_public_joblines_add_column_op_code_desc/down.yaml new file mode 100644 index 000000000..8b33d277c --- /dev/null +++ b/hasura/migrations/1580428867144_alter_table_public_joblines_add_column_op_code_desc/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."joblines" DROP COLUMN "op_code_desc"; + type: run_sql diff --git a/hasura/migrations/1580428867144_alter_table_public_joblines_add_column_op_code_desc/up.yaml b/hasura/migrations/1580428867144_alter_table_public_joblines_add_column_op_code_desc/up.yaml new file mode 100644 index 000000000..f70b7a310 --- /dev/null +++ b/hasura/migrations/1580428867144_alter_table_public_joblines_add_column_op_code_desc/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."joblines" ADD COLUMN "op_code_desc" text NULL; + type: run_sql diff --git a/hasura/migrations/1580428876888_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1580428876888_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..dc213864d --- /dev/null +++ b/hasura/migrations/1580428876888_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,74 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + - glass_flag + - price_inc + - alt_part_i + - price_j + - cert_part + - alt_co_id + - alt_overrd + - alt_partm + - prt_dsmk_p + - prt_dsmk_m + - lbr_inc + - lbr_hrs_j + - lbr_typ_j + - lbr_op_j + - paint_stg + - paint_tone + - lbr_tax + - misc_amt + - misc_sublt + - misc_tax + - bett_type + - bett_pctg + - bett_amt + - bett_tax + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580428876888_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1580428876888_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..3d0722715 --- /dev/null +++ b/hasura/migrations/1580428876888_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,75 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + - glass_flag + - price_inc + - alt_part_i + - price_j + - cert_part + - alt_co_id + - alt_overrd + - alt_partm + - prt_dsmk_p + - prt_dsmk_m + - lbr_inc + - lbr_hrs_j + - lbr_typ_j + - lbr_op_j + - paint_stg + - paint_tone + - lbr_tax + - misc_amt + - misc_sublt + - misc_tax + - bett_type + - bett_pctg + - bett_amt + - bett_tax + - op_code_desc + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580428884075_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1580428884075_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..b143512d8 --- /dev/null +++ b/hasura/migrations/1580428884075_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,72 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + - glass_flag + - price_inc + - alt_part_i + - price_j + - cert_part + - alt_co_id + - alt_overrd + - alt_partm + - prt_dsmk_p + - prt_dsmk_m + - lbr_inc + - lbr_hrs_j + - lbr_typ_j + - lbr_op_j + - paint_stg + - paint_tone + - lbr_tax + - misc_amt + - misc_sublt + - misc_tax + - bett_type + - bett_pctg + - bett_amt + - bett_tax + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580428884075_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1580428884075_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..32c4e42a2 --- /dev/null +++ b/hasura/migrations/1580428884075_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,73 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - op_code_desc + - part_type + - created_at + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580428891595_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1580428891595_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..6d1063cc8 --- /dev/null +++ b/hasura/migrations/1580428891595_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,74 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - part_type + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580428891595_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1580428891595_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..befcc2bb7 --- /dev/null +++ b/hasura/migrations/1580428891595_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,75 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - op_code_desc + - part_type + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580845008791_create_table_public_employees/down.yaml b/hasura/migrations/1580845008791_create_table_public_employees/down.yaml new file mode 100644 index 000000000..a02ec7b09 --- /dev/null +++ b/hasura/migrations/1580845008791_create_table_public_employees/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: DROP TABLE "public"."employees" + type: run_sql diff --git a/hasura/migrations/1580845008791_create_table_public_employees/up.yaml b/hasura/migrations/1580845008791_create_table_public_employees/up.yaml new file mode 100644 index 000000000..938539268 --- /dev/null +++ b/hasura/migrations/1580845008791_create_table_public_employees/up.yaml @@ -0,0 +1,21 @@ +- args: + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + sql: "CREATE TABLE \"public\".\"employees\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"first_name\" text NOT NULL, \"last_name\" text NOT + NULL, \"employee_number\" text, \"shopid\" uuid NOT NULL, \"active\" boolean + NOT NULL DEFAULT true, PRIMARY KEY (\"id\") , FOREIGN KEY (\"shopid\") REFERENCES + \"public\".\"bodyshops\"(\"id\") ON UPDATE cascade ON DELETE cascade);\nCREATE + OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_employees_updated_at\"\nBEFORE + UPDATE ON \"public\".\"employees\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_employees_updated_at\" ON \"public\".\"employees\" \nIS + 'trigger to set value of column \"updated_at\" to current timestamp on row update';\n" + type: run_sql +- args: + name: employees + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1580845024748_track_all_relationships/down.yaml b/hasura/migrations/1580845024748_track_all_relationships/down.yaml new file mode 100644 index 000000000..603fdf200 --- /dev/null +++ b/hasura/migrations/1580845024748_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: employees + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: employees + schema: public + type: drop_relationship diff --git a/hasura/migrations/1580845024748_track_all_relationships/up.yaml b/hasura/migrations/1580845024748_track_all_relationships/up.yaml new file mode 100644 index 000000000..02e5b8af4 --- /dev/null +++ b/hasura/migrations/1580845024748_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: employees + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: shopid + table: + name: employees + schema: public + type: create_array_relationship +- args: + name: bodyshop + table: + name: employees + schema: public + using: + foreign_key_constraint_on: shopid + type: create_object_relationship diff --git a/hasura/migrations/1580845064503_update_permission_user_public_table_employees/down.yaml b/hasura/migrations/1580845064503_update_permission_user_public_table_employees/down.yaml new file mode 100644 index 000000000..8ce6d7380 --- /dev/null +++ b/hasura/migrations/1580845064503_update_permission_user_public_table_employees/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1580845064503_update_permission_user_public_table_employees/up.yaml b/hasura/migrations/1580845064503_update_permission_user_public_table_employees/up.yaml new file mode 100644 index 000000000..6c9cf3410 --- /dev/null +++ b/hasura/migrations/1580845064503_update_permission_user_public_table_employees/up.yaml @@ -0,0 +1,30 @@ +- args: + permission: + allow_upsert: true + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - active + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: employees + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580845070982_update_permission_user_public_table_employees/down.yaml b/hasura/migrations/1580845070982_update_permission_user_public_table_employees/down.yaml new file mode 100644 index 000000000..c044718f0 --- /dev/null +++ b/hasura/migrations/1580845070982_update_permission_user_public_table_employees/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1580845070982_update_permission_user_public_table_employees/up.yaml b/hasura/migrations/1580845070982_update_permission_user_public_table_employees/up.yaml new file mode 100644 index 000000000..d891ef226 --- /dev/null +++ b/hasura/migrations/1580845070982_update_permission_user_public_table_employees/up.yaml @@ -0,0 +1,27 @@ +- args: + permission: + allow_aggregations: false + columns: + - active + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: employees + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580845078647_update_permission_user_public_table_employees/down.yaml b/hasura/migrations/1580845078647_update_permission_user_public_table_employees/down.yaml new file mode 100644 index 000000000..c3a42c539 --- /dev/null +++ b/hasura/migrations/1580845078647_update_permission_user_public_table_employees/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1580845078647_update_permission_user_public_table_employees/up.yaml b/hasura/migrations/1580845078647_update_permission_user_public_table_employees/up.yaml new file mode 100644 index 000000000..962c508c1 --- /dev/null +++ b/hasura/migrations/1580845078647_update_permission_user_public_table_employees/up.yaml @@ -0,0 +1,29 @@ +- args: + permission: + columns: + - active + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: employees + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580845085318_update_permission_user_public_table_employees/down.yaml b/hasura/migrations/1580845085318_update_permission_user_public_table_employees/down.yaml new file mode 100644 index 000000000..6a7312d7e --- /dev/null +++ b/hasura/migrations/1580845085318_update_permission_user_public_table_employees/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1580845085318_update_permission_user_public_table_employees/up.yaml b/hasura/migrations/1580845085318_update_permission_user_public_table_employees/up.yaml new file mode 100644 index 000000000..a8d773013 --- /dev/null +++ b/hasura/migrations/1580845085318_update_permission_user_public_table_employees/up.yaml @@ -0,0 +1,16 @@ +- args: + permission: + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: employees + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1580924578754_create_table_public_appointments/down.yaml b/hasura/migrations/1580924578754_create_table_public_appointments/down.yaml new file mode 100644 index 000000000..df54499c7 --- /dev/null +++ b/hasura/migrations/1580924578754_create_table_public_appointments/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: DROP TABLE "public"."appointments" + type: run_sql diff --git a/hasura/migrations/1580924578754_create_table_public_appointments/up.yaml b/hasura/migrations/1580924578754_create_table_public_appointments/up.yaml new file mode 100644 index 000000000..f3de9b6bb --- /dev/null +++ b/hasura/migrations/1580924578754_create_table_public_appointments/up.yaml @@ -0,0 +1,21 @@ +- args: + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + sql: "CREATE TABLE \"public\".\"appointments\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"jobid\" uuid NOT NULL, \"start\" timestamptz NOT NULL, + \"end\" timestamptz NOT NULL, PRIMARY KEY (\"id\") , FOREIGN KEY (\"jobid\") + REFERENCES \"public\".\"jobs\"(\"id\") ON UPDATE cascade ON DELETE cascade);\nCREATE + OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_appointments_updated_at\"\nBEFORE + UPDATE ON \"public\".\"appointments\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_appointments_updated_at\" ON \"public\".\"appointments\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';\n" + type: run_sql +- args: + name: appointments + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1580924597777_track_all_relationships/down.yaml b/hasura/migrations/1580924597777_track_all_relationships/down.yaml new file mode 100644 index 000000000..40a2859e9 --- /dev/null +++ b/hasura/migrations/1580924597777_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: job + table: + name: appointments + schema: public + type: drop_relationship +- args: + relationship: appointments + table: + name: jobs + schema: public + type: drop_relationship diff --git a/hasura/migrations/1580924597777_track_all_relationships/up.yaml b/hasura/migrations/1580924597777_track_all_relationships/up.yaml new file mode 100644 index 000000000..a42e807b4 --- /dev/null +++ b/hasura/migrations/1580924597777_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: job + table: + name: appointments + schema: public + using: + foreign_key_constraint_on: jobid + type: create_object_relationship +- args: + name: appointments + table: + name: jobs + schema: public + using: + foreign_key_constraint_on: + column: jobid + table: + name: appointments + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1580924636108_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1580924636108_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..360bed4cf --- /dev/null +++ b/hasura/migrations/1580924636108_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1580924636108_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1580924636108_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..0b2e1b916 --- /dev/null +++ b/hasura/migrations/1580924636108_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,29 @@ +- args: + permission: + allow_upsert: true + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - created_at + - end + - start + - updated_at + - id + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580924643897_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1580924643897_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..cb1497747 --- /dev/null +++ b/hasura/migrations/1580924643897_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1580924643897_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1580924643897_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..00c8ca764 --- /dev/null +++ b/hasura/migrations/1580924643897_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,26 @@ +- args: + permission: + allow_aggregations: false + columns: + - created_at + - end + - start + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580924650229_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1580924650229_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..9e035c24f --- /dev/null +++ b/hasura/migrations/1580924650229_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1580924650229_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1580924650229_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..f4adc60da --- /dev/null +++ b/hasura/migrations/1580924650229_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,28 @@ +- args: + permission: + columns: + - created_at + - end + - start + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580924654728_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1580924654728_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..58bced28e --- /dev/null +++ b/hasura/migrations/1580924654728_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1580924654728_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1580924654728_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..119e09bbc --- /dev/null +++ b/hasura/migrations/1580924654728_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,17 @@ +- args: + permission: + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1580931183725_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580931183725_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..a1e5cbdde --- /dev/null +++ b/hasura/migrations/1580931183725_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - claim_total + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + - rate_laa + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580931183725_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580931183725_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..50eccd57f --- /dev/null +++ b/hasura/migrations/1580931183725_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1580931192674_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580931192674_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..57466d6e6 --- /dev/null +++ b/hasura/migrations/1580931192674_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,242 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580931192674_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580931192674_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..79e220620 --- /dev/null +++ b/hasura/migrations/1580931192674_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,241 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1580931206615_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1580931206615_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..4371eaab0 --- /dev/null +++ b/hasura/migrations/1580931206615_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - claim_total + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580931206615_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1580931206615_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..e25202215 --- /dev/null +++ b/hasura/migrations/1580931206615_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1580931212931_alter_table_public_jobs_drop_column_claim_total/down.yaml b/hasura/migrations/1580931212931_alter_table_public_jobs_drop_column_claim_total/down.yaml new file mode 100644 index 000000000..93fb7a1c5 --- /dev/null +++ b/hasura/migrations/1580931212931_alter_table_public_jobs_drop_column_claim_total/down.yaml @@ -0,0 +1,9 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "claim_total" numeric + type: run_sql +- args: + sql: ALTER TABLE "public"."jobs" ALTER COLUMN "claim_total" DROP NOT NULL + type: run_sql +- args: + sql: ALTER TABLE "public"."jobs" ALTER COLUMN "claim_total" SET DEFAULT 0 + type: run_sql diff --git a/hasura/migrations/1580931212931_alter_table_public_jobs_drop_column_claim_total/up.yaml b/hasura/migrations/1580931212931_alter_table_public_jobs_drop_column_claim_total/up.yaml new file mode 100644 index 000000000..cbb44e742 --- /dev/null +++ b/hasura/migrations/1580931212931_alter_table_public_jobs_drop_column_claim_total/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "claim_total" CASCADE + type: run_sql diff --git a/hasura/migrations/1580931234225_alter_table_public_jobs_alter_column_clm_total/down.yaml b/hasura/migrations/1580931234225_alter_table_public_jobs_alter_column_clm_total/down.yaml new file mode 100644 index 000000000..323a4f792 --- /dev/null +++ b/hasura/migrations/1580931234225_alter_table_public_jobs_alter_column_clm_total/down.yaml @@ -0,0 +1,6 @@ +- args: + sql: ALTER TABLE ONLY "public"."jobs" ALTER COLUMN "clm_total" SET DEFAULT 0; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."jobs"."clm_total" IS E'null' + type: run_sql diff --git a/hasura/migrations/1580931234225_alter_table_public_jobs_alter_column_clm_total/up.yaml b/hasura/migrations/1580931234225_alter_table_public_jobs_alter_column_clm_total/up.yaml new file mode 100644 index 000000000..dfcd0015d --- /dev/null +++ b/hasura/migrations/1580931234225_alter_table_public_jobs_alter_column_clm_total/up.yaml @@ -0,0 +1,6 @@ +- args: + sql: ALTER TABLE ONLY "public"."jobs" ALTER COLUMN "clm_total" SET DEFAULT 0; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."jobs"."clm_total" IS E'' + type: run_sql diff --git a/hasura/migrations/1580935279972_update_permission_anonymous_public_table_users/down.yaml b/hasura/migrations/1580935279972_update_permission_anonymous_public_table_users/down.yaml new file mode 100644 index 000000000..56426a31b --- /dev/null +++ b/hasura/migrations/1580935279972_update_permission_anonymous_public_table_users/down.yaml @@ -0,0 +1,6 @@ +- args: + role: anonymous + table: + name: users + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1580935279972_update_permission_anonymous_public_table_users/up.yaml b/hasura/migrations/1580935279972_update_permission_anonymous_public_table_users/up.yaml new file mode 100644 index 000000000..80a2f24bf --- /dev/null +++ b/hasura/migrations/1580935279972_update_permission_anonymous_public_table_users/up.yaml @@ -0,0 +1,12 @@ +- args: + permission: + allow_aggregations: false + columns: + - authid + filter: {} + limit: null + role: anonymous + table: + name: users + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581011347492_delete_permission_anonymous_public_table_users/down.yaml b/hasura/migrations/1581011347492_delete_permission_anonymous_public_table_users/down.yaml new file mode 100644 index 000000000..2ed833fbd --- /dev/null +++ b/hasura/migrations/1581011347492_delete_permission_anonymous_public_table_users/down.yaml @@ -0,0 +1,17 @@ +- args: + permission: + columns: + - authid + - email + - created_at + - updated_at + filter: {} + localPresets: + - key: "" + value: "" + set: {} + role: anonymous + table: + name: users + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581011347492_delete_permission_anonymous_public_table_users/up.yaml b/hasura/migrations/1581011347492_delete_permission_anonymous_public_table_users/up.yaml new file mode 100644 index 000000000..adfb8ed02 --- /dev/null +++ b/hasura/migrations/1581011347492_delete_permission_anonymous_public_table_users/up.yaml @@ -0,0 +1,6 @@ +- args: + role: anonymous + table: + name: users + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1581011354989_delete_permission_anonymous_public_table_users/down.yaml b/hasura/migrations/1581011354989_delete_permission_anonymous_public_table_users/down.yaml new file mode 100644 index 000000000..5b6a124be --- /dev/null +++ b/hasura/migrations/1581011354989_delete_permission_anonymous_public_table_users/down.yaml @@ -0,0 +1,17 @@ +- args: + permission: + check: {} + columns: + - authid + - created_at + - email + - updated_at + localPresets: + - key: "" + value: "" + set: {} + role: anonymous + table: + name: users + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581011354989_delete_permission_anonymous_public_table_users/up.yaml b/hasura/migrations/1581011354989_delete_permission_anonymous_public_table_users/up.yaml new file mode 100644 index 000000000..8d7fedcea --- /dev/null +++ b/hasura/migrations/1581011354989_delete_permission_anonymous_public_table_users/up.yaml @@ -0,0 +1,6 @@ +- args: + role: anonymous + table: + name: users + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1581011359698_delete_permission_anonymous_public_table_users/down.yaml b/hasura/migrations/1581011359698_delete_permission_anonymous_public_table_users/down.yaml new file mode 100644 index 000000000..6da8f77e4 --- /dev/null +++ b/hasura/migrations/1581011359698_delete_permission_anonymous_public_table_users/down.yaml @@ -0,0 +1,12 @@ +- args: + permission: + allow_aggregations: false + columns: + - authid + computed_fields: [] + filter: {} + role: anonymous + table: + name: users + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581011359698_delete_permission_anonymous_public_table_users/up.yaml b/hasura/migrations/1581011359698_delete_permission_anonymous_public_table_users/up.yaml new file mode 100644 index 000000000..56426a31b --- /dev/null +++ b/hasura/migrations/1581011359698_delete_permission_anonymous_public_table_users/up.yaml @@ -0,0 +1,6 @@ +- args: + role: anonymous + table: + name: users + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1581022739131_alter_table_public_appointments_add_column_canceled/down.yaml b/hasura/migrations/1581022739131_alter_table_public_appointments_add_column_canceled/down.yaml new file mode 100644 index 000000000..dfcf08d41 --- /dev/null +++ b/hasura/migrations/1581022739131_alter_table_public_appointments_add_column_canceled/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."appointments" DROP COLUMN "canceled"; + type: run_sql diff --git a/hasura/migrations/1581022739131_alter_table_public_appointments_add_column_canceled/up.yaml b/hasura/migrations/1581022739131_alter_table_public_appointments_add_column_canceled/up.yaml new file mode 100644 index 000000000..04e88be2f --- /dev/null +++ b/hasura/migrations/1581022739131_alter_table_public_appointments_add_column_canceled/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."appointments" ADD COLUMN "canceled" boolean NOT NULL + DEFAULT false; + type: run_sql diff --git a/hasura/migrations/1581022751236_alter_table_public_appointments_add_column_arrived/down.yaml b/hasura/migrations/1581022751236_alter_table_public_appointments_add_column_arrived/down.yaml new file mode 100644 index 000000000..fe4587381 --- /dev/null +++ b/hasura/migrations/1581022751236_alter_table_public_appointments_add_column_arrived/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."appointments" DROP COLUMN "arrived"; + type: run_sql diff --git a/hasura/migrations/1581022751236_alter_table_public_appointments_add_column_arrived/up.yaml b/hasura/migrations/1581022751236_alter_table_public_appointments_add_column_arrived/up.yaml new file mode 100644 index 000000000..b3d4fe679 --- /dev/null +++ b/hasura/migrations/1581022751236_alter_table_public_appointments_add_column_arrived/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."appointments" ADD COLUMN "arrived" boolean NOT NULL + DEFAULT false; + type: run_sql diff --git a/hasura/migrations/1581022758869_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581022758869_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..b56eb5bbf --- /dev/null +++ b/hasura/migrations/1581022758869_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - created_at + - end + - start + - updated_at + - id + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581022758869_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581022758869_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..34cf4841b --- /dev/null +++ b/hasura/migrations/1581022758869_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581022764017_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581022764017_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..69c1cdc57 --- /dev/null +++ b/hasura/migrations/1581022764017_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,32 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - end + - start + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581022764017_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581022764017_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..d71784d2e --- /dev/null +++ b/hasura/migrations/1581022764017_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581022771283_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581022771283_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..c44b9394c --- /dev/null +++ b/hasura/migrations/1581022771283_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - created_at + - end + - start + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581022771283_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581022771283_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..1644cd131 --- /dev/null +++ b/hasura/migrations/1581022771283_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581028719187_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581028719187_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..d71784d2e --- /dev/null +++ b/hasura/migrations/1581028719187_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581028719187_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581028719187_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..7c6811bf8 --- /dev/null +++ b/hasura/migrations/1581028719187_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581029855396_alter_table_public_jobs_add_column_status/down.yaml b/hasura/migrations/1581029855396_alter_table_public_jobs_add_column_status/down.yaml new file mode 100644 index 000000000..043b6ce61 --- /dev/null +++ b/hasura/migrations/1581029855396_alter_table_public_jobs_add_column_status/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "status"; + type: run_sql diff --git a/hasura/migrations/1581029855396_alter_table_public_jobs_add_column_status/up.yaml b/hasura/migrations/1581029855396_alter_table_public_jobs_add_column_status/up.yaml new file mode 100644 index 000000000..262633fb7 --- /dev/null +++ b/hasura/migrations/1581029855396_alter_table_public_jobs_add_column_status/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "status" text NOT NULL DEFAULT 'Open'; + type: run_sql diff --git a/hasura/migrations/1581029864710_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581029864710_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..50eccd57f --- /dev/null +++ b/hasura/migrations/1581029864710_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581029864710_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581029864710_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..488ed01e7 --- /dev/null +++ b/hasura/migrations/1581029864710_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + - rate_laa + - status + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581029870003_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581029870003_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..79e220620 --- /dev/null +++ b/hasura/migrations/1581029870003_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,241 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581029870003_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581029870003_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..a6ed6c817 --- /dev/null +++ b/hasura/migrations/1581029870003_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,242 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581029875101_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581029875101_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..e25202215 --- /dev/null +++ b/hasura/migrations/1581029875101_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581029875101_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581029875101_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..973b2115c --- /dev/null +++ b/hasura/migrations/1581029875101_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581029890395_delete_permission_user_public_table_job_status/down.yaml b/hasura/migrations/1581029890395_delete_permission_user_public_table_job_status/down.yaml new file mode 100644 index 000000000..d09f1309a --- /dev/null +++ b/hasura/migrations/1581029890395_delete_permission_user_public_table_job_status/down.yaml @@ -0,0 +1,28 @@ +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - name + - isproductionstatus + - order + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: job_status + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581029890395_delete_permission_user_public_table_job_status/up.yaml b/hasura/migrations/1581029890395_delete_permission_user_public_table_job_status/up.yaml new file mode 100644 index 000000000..3c01a272c --- /dev/null +++ b/hasura/migrations/1581029890395_delete_permission_user_public_table_job_status/up.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_status + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1581029895198_delete_permission_user_public_table_job_status/down.yaml b/hasura/migrations/1581029895198_delete_permission_user_public_table_job_status/down.yaml new file mode 100644 index 000000000..646e591b4 --- /dev/null +++ b/hasura/migrations/1581029895198_delete_permission_user_public_table_job_status/down.yaml @@ -0,0 +1,26 @@ +- args: + permission: + allow_aggregations: false + columns: + - isproductionstatus + - order + - name + - created_at + - updated_at + - id + - shopid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: job_status + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581029895198_delete_permission_user_public_table_job_status/up.yaml b/hasura/migrations/1581029895198_delete_permission_user_public_table_job_status/up.yaml new file mode 100644 index 000000000..85d7d08dd --- /dev/null +++ b/hasura/migrations/1581029895198_delete_permission_user_public_table_job_status/up.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_status + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1581029899124_delete_permission_user_public_table_job_status/down.yaml b/hasura/migrations/1581029899124_delete_permission_user_public_table_job_status/down.yaml new file mode 100644 index 000000000..31c3a7b89 --- /dev/null +++ b/hasura/migrations/1581029899124_delete_permission_user_public_table_job_status/down.yaml @@ -0,0 +1,28 @@ +- args: + permission: + columns: + - isproductionstatus + - order + - name + - created_at + - updated_at + - id + - shopid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: job_status + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581029899124_delete_permission_user_public_table_job_status/up.yaml b/hasura/migrations/1581029899124_delete_permission_user_public_table_job_status/up.yaml new file mode 100644 index 000000000..42b51ea3e --- /dev/null +++ b/hasura/migrations/1581029899124_delete_permission_user_public_table_job_status/up.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_status + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1581029904239_delete_permission_user_public_table_job_status/down.yaml b/hasura/migrations/1581029904239_delete_permission_user_public_table_job_status/down.yaml new file mode 100644 index 000000000..e26a5a3ac --- /dev/null +++ b/hasura/migrations/1581029904239_delete_permission_user_public_table_job_status/down.yaml @@ -0,0 +1,16 @@ +- args: + permission: + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: job_status + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1581029904239_delete_permission_user_public_table_job_status/up.yaml b/hasura/migrations/1581029904239_delete_permission_user_public_table_job_status/up.yaml new file mode 100644 index 000000000..05f10e122 --- /dev/null +++ b/hasura/migrations/1581029904239_delete_permission_user_public_table_job_status/up.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_status + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1581030454318_drop_relationship_job_status_public_table_jobs/down.yaml b/hasura/migrations/1581030454318_drop_relationship_job_status_public_table_jobs/down.yaml new file mode 100644 index 000000000..387fc3707 --- /dev/null +++ b/hasura/migrations/1581030454318_drop_relationship_job_status_public_table_jobs/down.yaml @@ -0,0 +1,8 @@ +- args: + name: job_status + table: + name: jobs + schema: public + using: + foreign_key_constraint_on: statusid + type: create_object_relationship diff --git a/hasura/migrations/1581030454318_drop_relationship_job_status_public_table_jobs/up.yaml b/hasura/migrations/1581030454318_drop_relationship_job_status_public_table_jobs/up.yaml new file mode 100644 index 000000000..38bcae868 --- /dev/null +++ b/hasura/migrations/1581030454318_drop_relationship_job_status_public_table_jobs/up.yaml @@ -0,0 +1,6 @@ +- args: + relationship: job_status + table: + name: jobs + schema: public + type: drop_relationship diff --git a/hasura/migrations/1581030528307_drop_relationship_bodyshop_public_table_job_status/down.yaml b/hasura/migrations/1581030528307_drop_relationship_bodyshop_public_table_job_status/down.yaml new file mode 100644 index 000000000..4df64ab21 --- /dev/null +++ b/hasura/migrations/1581030528307_drop_relationship_bodyshop_public_table_job_status/down.yaml @@ -0,0 +1,8 @@ +- args: + name: bodyshop + table: + name: job_status + schema: public + using: + foreign_key_constraint_on: shopid + type: create_object_relationship diff --git a/hasura/migrations/1581030528307_drop_relationship_bodyshop_public_table_job_status/up.yaml b/hasura/migrations/1581030528307_drop_relationship_bodyshop_public_table_job_status/up.yaml new file mode 100644 index 000000000..be19077ec --- /dev/null +++ b/hasura/migrations/1581030528307_drop_relationship_bodyshop_public_table_job_status/up.yaml @@ -0,0 +1,6 @@ +- args: + relationship: bodyshop + table: + name: job_status + schema: public + type: drop_relationship diff --git a/hasura/migrations/1581030535781_drop_relationship_jobs_public_table_job_status/down.yaml b/hasura/migrations/1581030535781_drop_relationship_jobs_public_table_job_status/down.yaml new file mode 100644 index 000000000..e72f3596e --- /dev/null +++ b/hasura/migrations/1581030535781_drop_relationship_jobs_public_table_job_status/down.yaml @@ -0,0 +1,12 @@ +- args: + name: jobs + table: + name: job_status + schema: public + using: + foreign_key_constraint_on: + column: statusid + table: + name: jobs + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1581030535781_drop_relationship_jobs_public_table_job_status/up.yaml b/hasura/migrations/1581030535781_drop_relationship_jobs_public_table_job_status/up.yaml new file mode 100644 index 000000000..9a632ffbb --- /dev/null +++ b/hasura/migrations/1581030535781_drop_relationship_jobs_public_table_job_status/up.yaml @@ -0,0 +1,6 @@ +- args: + relationship: jobs + table: + name: job_status + schema: public + type: drop_relationship diff --git a/hasura/migrations/1581030563884_drop_relationship_job_statuses_public_table_bodyshops/down.yaml b/hasura/migrations/1581030563884_drop_relationship_job_statuses_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..5fd010060 --- /dev/null +++ b/hasura/migrations/1581030563884_drop_relationship_job_statuses_public_table_bodyshops/down.yaml @@ -0,0 +1,12 @@ +- args: + name: job_statuses + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: shopid + table: + name: job_status + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1581030563884_drop_relationship_job_statuses_public_table_bodyshops/up.yaml b/hasura/migrations/1581030563884_drop_relationship_job_statuses_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..bfe177786 --- /dev/null +++ b/hasura/migrations/1581030563884_drop_relationship_job_statuses_public_table_bodyshops/up.yaml @@ -0,0 +1,6 @@ +- args: + relationship: job_statuses + table: + name: bodyshops + schema: public + type: drop_relationship diff --git a/hasura/migrations/1581030601347_delete_fk_public_job_status_job_status_shopid_fkey/down.yaml b/hasura/migrations/1581030601347_delete_fk_public_job_status_job_status_shopid_fkey/down.yaml new file mode 100644 index 000000000..78a66f549 --- /dev/null +++ b/hasura/migrations/1581030601347_delete_fk_public_job_status_job_status_shopid_fkey/down.yaml @@ -0,0 +1,4 @@ +- args: + sql: alter table "public"."job_status" add foreign key ("shopid") references "public"."bodyshops"("id") + on update cascade on delete cascade; + type: run_sql diff --git a/hasura/migrations/1581030601347_delete_fk_public_job_status_job_status_shopid_fkey/up.yaml b/hasura/migrations/1581030601347_delete_fk_public_job_status_job_status_shopid_fkey/up.yaml new file mode 100644 index 000000000..07c07d3a1 --- /dev/null +++ b/hasura/migrations/1581030601347_delete_fk_public_job_status_job_status_shopid_fkey/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: alter table "public"."job_status" drop constraint "job_status_shopid_fkey"; + type: run_sql diff --git a/hasura/migrations/1581030654272_delete_fk_public_jobs_jobs_statusid_fkey/down.yaml b/hasura/migrations/1581030654272_delete_fk_public_jobs_jobs_statusid_fkey/down.yaml new file mode 100644 index 000000000..d52b04302 --- /dev/null +++ b/hasura/migrations/1581030654272_delete_fk_public_jobs_jobs_statusid_fkey/down.yaml @@ -0,0 +1,4 @@ +- args: + sql: alter table "public"."jobs" add foreign key ("statusid") references "public"."job_status"("id") + on update restrict on delete restrict; + type: run_sql diff --git a/hasura/migrations/1581030654272_delete_fk_public_jobs_jobs_statusid_fkey/up.yaml b/hasura/migrations/1581030654272_delete_fk_public_jobs_jobs_statusid_fkey/up.yaml new file mode 100644 index 000000000..24aec4d0b --- /dev/null +++ b/hasura/migrations/1581030654272_delete_fk_public_jobs_jobs_statusid_fkey/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: alter table "public"."jobs" drop constraint "jobs_statusid_fkey"; + type: run_sql diff --git a/hasura/migrations/1581030663585_drop_table_public_job_status/down.yaml b/hasura/migrations/1581030663585_drop_table_public_job_status/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1581030663585_drop_table_public_job_status/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1581030663585_drop_table_public_job_status/up.yaml b/hasura/migrations/1581030663585_drop_table_public_job_status/up.yaml new file mode 100644 index 000000000..d10304097 --- /dev/null +++ b/hasura/migrations/1581030663585_drop_table_public_job_status/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: DROP TABLE "public"."job_status" + type: run_sql diff --git a/hasura/migrations/1581357049913_alter_table_public_employees_add_column_hire_date/down.yaml b/hasura/migrations/1581357049913_alter_table_public_employees_add_column_hire_date/down.yaml new file mode 100644 index 000000000..abfa592ca --- /dev/null +++ b/hasura/migrations/1581357049913_alter_table_public_employees_add_column_hire_date/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" DROP COLUMN "hire_date"; + type: run_sql diff --git a/hasura/migrations/1581357049913_alter_table_public_employees_add_column_hire_date/up.yaml b/hasura/migrations/1581357049913_alter_table_public_employees_add_column_hire_date/up.yaml new file mode 100644 index 000000000..1005ffd15 --- /dev/null +++ b/hasura/migrations/1581357049913_alter_table_public_employees_add_column_hire_date/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" ADD COLUMN "hire_date" date NULL; + type: run_sql diff --git a/hasura/migrations/1581357057407_alter_table_public_employees_add_column_termination_date/down.yaml b/hasura/migrations/1581357057407_alter_table_public_employees_add_column_termination_date/down.yaml new file mode 100644 index 000000000..d93fb1e04 --- /dev/null +++ b/hasura/migrations/1581357057407_alter_table_public_employees_add_column_termination_date/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" DROP COLUMN "termination_date"; + type: run_sql diff --git a/hasura/migrations/1581357057407_alter_table_public_employees_add_column_termination_date/up.yaml b/hasura/migrations/1581357057407_alter_table_public_employees_add_column_termination_date/up.yaml new file mode 100644 index 000000000..44c8b84a2 --- /dev/null +++ b/hasura/migrations/1581357057407_alter_table_public_employees_add_column_termination_date/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" ADD COLUMN "termination_date" date NULL; + type: run_sql diff --git a/hasura/migrations/1581357072694_alter_table_public_employees_add_column_base_rate/down.yaml b/hasura/migrations/1581357072694_alter_table_public_employees_add_column_base_rate/down.yaml new file mode 100644 index 000000000..bbe0e2124 --- /dev/null +++ b/hasura/migrations/1581357072694_alter_table_public_employees_add_column_base_rate/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" DROP COLUMN "base_rate"; + type: run_sql diff --git a/hasura/migrations/1581357072694_alter_table_public_employees_add_column_base_rate/up.yaml b/hasura/migrations/1581357072694_alter_table_public_employees_add_column_base_rate/up.yaml new file mode 100644 index 000000000..b0aee872f --- /dev/null +++ b/hasura/migrations/1581357072694_alter_table_public_employees_add_column_base_rate/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" ADD COLUMN "base_rate" numeric NULL; + type: run_sql diff --git a/hasura/migrations/1581357170091_alter_table_public_employees_add_column_cost_center/down.yaml b/hasura/migrations/1581357170091_alter_table_public_employees_add_column_cost_center/down.yaml new file mode 100644 index 000000000..01fa47327 --- /dev/null +++ b/hasura/migrations/1581357170091_alter_table_public_employees_add_column_cost_center/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" DROP COLUMN "cost_center"; + type: run_sql diff --git a/hasura/migrations/1581357170091_alter_table_public_employees_add_column_cost_center/up.yaml b/hasura/migrations/1581357170091_alter_table_public_employees_add_column_cost_center/up.yaml new file mode 100644 index 000000000..8067de290 --- /dev/null +++ b/hasura/migrations/1581357170091_alter_table_public_employees_add_column_cost_center/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" ADD COLUMN "cost_center" text NOT NULL; + type: run_sql diff --git a/hasura/migrations/1581357179730_alter_table_public_employees_alter_column_base_rate/down.yaml b/hasura/migrations/1581357179730_alter_table_public_employees_alter_column_base_rate/down.yaml new file mode 100644 index 000000000..d510666fa --- /dev/null +++ b/hasura/migrations/1581357179730_alter_table_public_employees_alter_column_base_rate/down.yaml @@ -0,0 +1,10 @@ +- args: + sql: ALTER TABLE ONLY "public"."employees" ALTER COLUMN "base_rate" SET DEFAULT + 0; + type: run_sql +- args: + sql: ALTER TABLE "public"."employees" ALTER COLUMN "base_rate" DROP NOT NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."employees"."base_rate" IS E'null' + type: run_sql diff --git a/hasura/migrations/1581357179730_alter_table_public_employees_alter_column_base_rate/up.yaml b/hasura/migrations/1581357179730_alter_table_public_employees_alter_column_base_rate/up.yaml new file mode 100644 index 000000000..0fb29a6fe --- /dev/null +++ b/hasura/migrations/1581357179730_alter_table_public_employees_alter_column_base_rate/up.yaml @@ -0,0 +1,10 @@ +- args: + sql: ALTER TABLE ONLY "public"."employees" ALTER COLUMN "base_rate" SET DEFAULT + 0; + type: run_sql +- args: + sql: ALTER TABLE "public"."employees" ALTER COLUMN "base_rate" SET NOT NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."employees"."base_rate" IS E'' + type: run_sql diff --git a/hasura/migrations/1581357246577_alter_table_public_employees_add_column_pay_type/down.yaml b/hasura/migrations/1581357246577_alter_table_public_employees_add_column_pay_type/down.yaml new file mode 100644 index 000000000..185cc9a8b --- /dev/null +++ b/hasura/migrations/1581357246577_alter_table_public_employees_add_column_pay_type/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" DROP COLUMN "pay_type"; + type: run_sql diff --git a/hasura/migrations/1581357246577_alter_table_public_employees_add_column_pay_type/up.yaml b/hasura/migrations/1581357246577_alter_table_public_employees_add_column_pay_type/up.yaml new file mode 100644 index 000000000..784b99b23 --- /dev/null +++ b/hasura/migrations/1581357246577_alter_table_public_employees_add_column_pay_type/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."employees" ADD COLUMN "pay_type" integer NOT NULL DEFAULT + 0; + type: run_sql diff --git a/hasura/migrations/1581357269779_alter_table_public_employees_drop_column_pay_type/down.yaml b/hasura/migrations/1581357269779_alter_table_public_employees_drop_column_pay_type/down.yaml new file mode 100644 index 000000000..c1bc66684 --- /dev/null +++ b/hasura/migrations/1581357269779_alter_table_public_employees_drop_column_pay_type/down.yaml @@ -0,0 +1,9 @@ +- args: + sql: ALTER TABLE "public"."employees" ADD COLUMN "pay_type" int4 + type: run_sql +- args: + sql: ALTER TABLE "public"."employees" ALTER COLUMN "pay_type" DROP NOT NULL + type: run_sql +- args: + sql: ALTER TABLE "public"."employees" ALTER COLUMN "pay_type" SET DEFAULT 0 + type: run_sql diff --git a/hasura/migrations/1581357269779_alter_table_public_employees_drop_column_pay_type/up.yaml b/hasura/migrations/1581357269779_alter_table_public_employees_drop_column_pay_type/up.yaml new file mode 100644 index 000000000..bbbe455f0 --- /dev/null +++ b/hasura/migrations/1581357269779_alter_table_public_employees_drop_column_pay_type/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" DROP COLUMN "pay_type" CASCADE + type: run_sql diff --git a/hasura/migrations/1581357292599_alter_table_public_employees_add_column_flat_rate/down.yaml b/hasura/migrations/1581357292599_alter_table_public_employees_add_column_flat_rate/down.yaml new file mode 100644 index 000000000..11c760bb8 --- /dev/null +++ b/hasura/migrations/1581357292599_alter_table_public_employees_add_column_flat_rate/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."employees" DROP COLUMN "flat_rate"; + type: run_sql diff --git a/hasura/migrations/1581357292599_alter_table_public_employees_add_column_flat_rate/up.yaml b/hasura/migrations/1581357292599_alter_table_public_employees_add_column_flat_rate/up.yaml new file mode 100644 index 000000000..1c81a7a12 --- /dev/null +++ b/hasura/migrations/1581357292599_alter_table_public_employees_add_column_flat_rate/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."employees" ADD COLUMN "flat_rate" boolean NOT NULL + DEFAULT false; + type: run_sql diff --git a/hasura/migrations/1581357336859_update_permission_user_public_table_employees/down.yaml b/hasura/migrations/1581357336859_update_permission_user_public_table_employees/down.yaml new file mode 100644 index 000000000..d366a9964 --- /dev/null +++ b/hasura/migrations/1581357336859_update_permission_user_public_table_employees/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - active + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: employees + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581357336859_update_permission_user_public_table_employees/up.yaml b/hasura/migrations/1581357336859_update_permission_user_public_table_employees/up.yaml new file mode 100644 index 000000000..0165fb887 --- /dev/null +++ b/hasura/migrations/1581357336859_update_permission_user_public_table_employees/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - first_name + - last_name + - employee_number + - shopid + - active + - hire_date + - termination_date + - base_rate + - cost_center + - flat_rate + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: employees + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581357342062_update_permission_user_public_table_employees/down.yaml b/hasura/migrations/1581357342062_update_permission_user_public_table_employees/down.yaml new file mode 100644 index 000000000..976c2df48 --- /dev/null +++ b/hasura/migrations/1581357342062_update_permission_user_public_table_employees/down.yaml @@ -0,0 +1,33 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - active + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: employees + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581357342062_update_permission_user_public_table_employees/up.yaml b/hasura/migrations/1581357342062_update_permission_user_public_table_employees/up.yaml new file mode 100644 index 000000000..56719d451 --- /dev/null +++ b/hasura/migrations/1581357342062_update_permission_user_public_table_employees/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - active + - flat_rate + - hire_date + - termination_date + - base_rate + - cost_center + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: employees + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581357346836_update_permission_user_public_table_employees/down.yaml b/hasura/migrations/1581357346836_update_permission_user_public_table_employees/down.yaml new file mode 100644 index 000000000..379b183ce --- /dev/null +++ b/hasura/migrations/1581357346836_update_permission_user_public_table_employees/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_update_permission +- args: + permission: + columns: + - active + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: employees + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581357346836_update_permission_user_public_table_employees/up.yaml b/hasura/migrations/1581357346836_update_permission_user_public_table_employees/up.yaml new file mode 100644 index 000000000..491b1073b --- /dev/null +++ b/hasura/migrations/1581357346836_update_permission_user_public_table_employees/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: employees + schema: public + type: drop_update_permission +- args: + permission: + columns: + - active + - flat_rate + - hire_date + - termination_date + - base_rate + - cost_center + - employee_number + - first_name + - last_name + - created_at + - updated_at + - id + - shopid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: employees + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581377678620_create_table_public_allocations/down.yaml b/hasura/migrations/1581377678620_create_table_public_allocations/down.yaml new file mode 100644 index 000000000..f4b507c6a --- /dev/null +++ b/hasura/migrations/1581377678620_create_table_public_allocations/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: DROP TABLE "public"."allocations" + type: run_sql diff --git a/hasura/migrations/1581377678620_create_table_public_allocations/up.yaml b/hasura/migrations/1581377678620_create_table_public_allocations/up.yaml new file mode 100644 index 000000000..9d1eab3eb --- /dev/null +++ b/hasura/migrations/1581377678620_create_table_public_allocations/up.yaml @@ -0,0 +1,22 @@ +- args: + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + sql: "CREATE TABLE \"public\".\"allocations\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"joblineid\" uuid NOT NULL, \"employeeid\" uuid NOT + NULL, \"hours\" numeric NOT NULL DEFAULT 0, PRIMARY KEY (\"id\") , FOREIGN KEY + (\"joblineid\") REFERENCES \"public\".\"joblines\"(\"id\") ON UPDATE cascade + ON DELETE cascade, FOREIGN KEY (\"employeeid\") REFERENCES \"public\".\"employees\"(\"id\") + ON UPDATE cascade ON DELETE cascade);\nCREATE OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_allocations_updated_at\"\nBEFORE + UPDATE ON \"public\".\"allocations\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_allocations_updated_at\" ON \"public\".\"allocations\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';\n" + type: run_sql +- args: + name: allocations + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1581377762602_track_all_relationships/down.yaml b/hasura/migrations/1581377762602_track_all_relationships/down.yaml new file mode 100644 index 000000000..861a6656b --- /dev/null +++ b/hasura/migrations/1581377762602_track_all_relationships/down.yaml @@ -0,0 +1,24 @@ +- args: + relationship: employee + table: + name: allocations + schema: public + type: drop_relationship +- args: + relationship: jobline + table: + name: allocations + schema: public + type: drop_relationship +- args: + relationship: allocations + table: + name: employees + schema: public + type: drop_relationship +- args: + relationship: allocations + table: + name: joblines + schema: public + type: drop_relationship diff --git a/hasura/migrations/1581377762602_track_all_relationships/up.yaml b/hasura/migrations/1581377762602_track_all_relationships/up.yaml new file mode 100644 index 000000000..8db552fb1 --- /dev/null +++ b/hasura/migrations/1581377762602_track_all_relationships/up.yaml @@ -0,0 +1,40 @@ +- args: + name: employee + table: + name: allocations + schema: public + using: + foreign_key_constraint_on: employeeid + type: create_object_relationship +- args: + name: jobline + table: + name: allocations + schema: public + using: + foreign_key_constraint_on: joblineid + type: create_object_relationship +- args: + name: allocations + table: + name: employees + schema: public + using: + foreign_key_constraint_on: + column: employeeid + table: + name: allocations + schema: public + type: create_array_relationship +- args: + name: allocations + table: + name: joblines + schema: public + using: + foreign_key_constraint_on: + column: joblineid + table: + name: allocations + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1581377891854_update_permission_user_public_table_allocations/down.yaml b/hasura/migrations/1581377891854_update_permission_user_public_table_allocations/down.yaml new file mode 100644 index 000000000..a2e882f60 --- /dev/null +++ b/hasura/migrations/1581377891854_update_permission_user_public_table_allocations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: allocations + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1581377891854_update_permission_user_public_table_allocations/up.yaml b/hasura/migrations/1581377891854_update_permission_user_public_table_allocations/up.yaml new file mode 100644 index 000000000..e980d01b1 --- /dev/null +++ b/hasura/migrations/1581377891854_update_permission_user_public_table_allocations/up.yaml @@ -0,0 +1,30 @@ +- args: + permission: + allow_upsert: true + check: + jobline: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - hours + - created_at + - updated_at + - employeeid + - id + - joblineid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: allocations + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581377911733_update_permission_user_public_table_allocations/down.yaml b/hasura/migrations/1581377911733_update_permission_user_public_table_allocations/down.yaml new file mode 100644 index 000000000..8f88611f4 --- /dev/null +++ b/hasura/migrations/1581377911733_update_permission_user_public_table_allocations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: allocations + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1581377911733_update_permission_user_public_table_allocations/up.yaml b/hasura/migrations/1581377911733_update_permission_user_public_table_allocations/up.yaml new file mode 100644 index 000000000..4135b17a3 --- /dev/null +++ b/hasura/migrations/1581377911733_update_permission_user_public_table_allocations/up.yaml @@ -0,0 +1,27 @@ +- args: + permission: + allow_aggregations: false + columns: + - hours + - created_at + - updated_at + - employeeid + - id + - joblineid + filter: + jobline: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: allocations + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581377928527_update_permission_user_public_table_allocations/down.yaml b/hasura/migrations/1581377928527_update_permission_user_public_table_allocations/down.yaml new file mode 100644 index 000000000..86985cb7e --- /dev/null +++ b/hasura/migrations/1581377928527_update_permission_user_public_table_allocations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: allocations + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1581377928527_update_permission_user_public_table_allocations/up.yaml b/hasura/migrations/1581377928527_update_permission_user_public_table_allocations/up.yaml new file mode 100644 index 000000000..0156cbb97 --- /dev/null +++ b/hasura/migrations/1581377928527_update_permission_user_public_table_allocations/up.yaml @@ -0,0 +1,29 @@ +- args: + permission: + columns: + - hours + - created_at + - updated_at + - employeeid + - id + - joblineid + filter: + jobline: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: allocations + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581377943700_update_permission_user_public_table_allocations/down.yaml b/hasura/migrations/1581377943700_update_permission_user_public_table_allocations/down.yaml new file mode 100644 index 000000000..7027008cb --- /dev/null +++ b/hasura/migrations/1581377943700_update_permission_user_public_table_allocations/down.yaml @@ -0,0 +1,12 @@ +- args: + role: user + table: + name: allocations + schema: public + type: drop_update_permission +- args: + role: user + table: + name: allocations + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581377943700_update_permission_user_public_table_allocations/up.yaml b/hasura/migrations/1581377943700_update_permission_user_public_table_allocations/up.yaml new file mode 100644 index 000000000..ed61f4bd9 --- /dev/null +++ b/hasura/migrations/1581377943700_update_permission_user_public_table_allocations/up.yaml @@ -0,0 +1,29 @@ +- args: + role: user + table: + name: allocations + schema: public + type: drop_update_permission +- args: + permission: + columns: [] + filter: + jobline: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: allocations + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581378054962_update_permission_user_public_table_allocations/down.yaml b/hasura/migrations/1581378054962_update_permission_user_public_table_allocations/down.yaml new file mode 100644 index 000000000..99ab508be --- /dev/null +++ b/hasura/migrations/1581378054962_update_permission_user_public_table_allocations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: allocations + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1581378054962_update_permission_user_public_table_allocations/up.yaml b/hasura/migrations/1581378054962_update_permission_user_public_table_allocations/up.yaml new file mode 100644 index 000000000..6f33b6d84 --- /dev/null +++ b/hasura/migrations/1581378054962_update_permission_user_public_table_allocations/up.yaml @@ -0,0 +1,18 @@ +- args: + permission: + filter: + jobline: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: allocations + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1581527154709_alter_table_public_jobs_add_column_cieca_stl/down.yaml b/hasura/migrations/1581527154709_alter_table_public_jobs_add_column_cieca_stl/down.yaml new file mode 100644 index 000000000..3c799734a --- /dev/null +++ b/hasura/migrations/1581527154709_alter_table_public_jobs_add_column_cieca_stl/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "cieca_stl"; + type: run_sql diff --git a/hasura/migrations/1581527154709_alter_table_public_jobs_add_column_cieca_stl/up.yaml b/hasura/migrations/1581527154709_alter_table_public_jobs_add_column_cieca_stl/up.yaml new file mode 100644 index 000000000..f7c4980a9 --- /dev/null +++ b/hasura/migrations/1581527154709_alter_table_public_jobs_add_column_cieca_stl/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "cieca_stl" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1581528231712_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581528231712_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..488ed01e7 --- /dev/null +++ b/hasura/migrations/1581528231712_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + - rate_laa + - status + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581528231712_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581528231712_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..df87d525d --- /dev/null +++ b/hasura/migrations/1581528231712_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,245 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + - rate_laa + - status + - cieca_stl + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581528238817_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581528238817_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..a6ed6c817 --- /dev/null +++ b/hasura/migrations/1581528238817_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,242 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581528238817_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581528238817_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..877c16c63 --- /dev/null +++ b/hasura/migrations/1581528238817_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - cieca_stl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581528245337_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581528245337_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..973b2115c --- /dev/null +++ b/hasura/migrations/1581528245337_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581528245337_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581528245337_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..bbee90d97 --- /dev/null +++ b/hasura/migrations/1581528245337_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,245 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - cieca_stl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581528309153_alter_table_public_jobs_add_column_g_bett_amt/down.yaml b/hasura/migrations/1581528309153_alter_table_public_jobs_add_column_g_bett_amt/down.yaml new file mode 100644 index 000000000..d2ad3b020 --- /dev/null +++ b/hasura/migrations/1581528309153_alter_table_public_jobs_add_column_g_bett_amt/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "g_bett_amt"; + type: run_sql diff --git a/hasura/migrations/1581528309153_alter_table_public_jobs_add_column_g_bett_amt/up.yaml b/hasura/migrations/1581528309153_alter_table_public_jobs_add_column_g_bett_amt/up.yaml new file mode 100644 index 000000000..01322d071 --- /dev/null +++ b/hasura/migrations/1581528309153_alter_table_public_jobs_add_column_g_bett_amt/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "g_bett_amt" numeric NULL DEFAULT + 0; + type: run_sql diff --git a/hasura/migrations/1581528565073_alter_table_public_jobs_add_column_cieca_ttl/down.yaml b/hasura/migrations/1581528565073_alter_table_public_jobs_add_column_cieca_ttl/down.yaml new file mode 100644 index 000000000..20466624d --- /dev/null +++ b/hasura/migrations/1581528565073_alter_table_public_jobs_add_column_cieca_ttl/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "cieca_ttl"; + type: run_sql diff --git a/hasura/migrations/1581528565073_alter_table_public_jobs_add_column_cieca_ttl/up.yaml b/hasura/migrations/1581528565073_alter_table_public_jobs_add_column_cieca_ttl/up.yaml new file mode 100644 index 000000000..4edc58e27 --- /dev/null +++ b/hasura/migrations/1581528565073_alter_table_public_jobs_add_column_cieca_ttl/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "cieca_ttl" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1581529463377_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581529463377_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..df87d525d --- /dev/null +++ b/hasura/migrations/1581529463377_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,245 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - shopid + - ro_number + - ownerid + - vehicleid + - labor_rate_id + - labor_rate_desc + - rate_lab + - rate_lad + - rate_lae + - rate_lar + - rate_las + - rate_laf + - rate_lam + - rate_lag + - rate_atp + - rate_lau + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_mapa + - rate_mash + - rate_mahw + - rate_ma2s + - rate_ma3s + - rate_ma2t + - rate_mabl + - rate_macs + - rate_matd + - federal_tax_rate + - state_tax_rate + - local_tax_rate + - est_co_nm + - est_addr1 + - est_addr2 + - est_city + - est_st + - est_zip + - est_ctry + - est_ph1 + - est_ea + - est_ct_ln + - est_ct_fn + - scheduled_in + - actual_in + - scheduled_completion + - actual_completion + - scheduled_delivery + - actual_delivery + - regie_number + - invoice_date + - deductible + - inproduction + - statusid + - ins_co_id + - ins_co_nm + - ins_addr1 + - ins_addr2 + - ins_city + - ins_st + - ins_zip + - ins_ctry + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_fax + - ins_faxx + - ins_ct_ln + - ins_ct_fn + - ins_title + - ins_ct_ph + - ins_ct_phx + - ins_ea + - ins_memo + - policy_no + - ded_amt + - ded_status + - asgn_no + - asgn_date + - asgn_type + - clm_no + - clm_ofc_id + - date_estimated + - date_open + - date_scheduled + - date_invoiced + - date_closed + - date_exported + - clm_total + - owner_owing + - converted + - ciecaid + - loss_date + - clm_ofc_nm + - clm_addr1 + - clm_addr2 + - clm_city + - clm_st + - clm_zip + - clm_ctry + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_fax + - clm_faxx + - clm_ct_ln + - clm_ct_fn + - clm_title + - clm_ct_ph + - clm_ct_phx + - clm_ea + - payee_nms + - pay_type + - pay_date + - pay_chknm + - pay_amt + - agt_co_id + - agt_co_nm + - agt_addr1 + - agt_addr2 + - agt_city + - agt_st + - agt_zip + - agt_ctry + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_fax + - agt_faxx + - agt_ct_ln + - agt_ct_fn + - agt_ct_ph + - agt_ct_phx + - agt_ea + - agt_lic_no + - loss_type + - loss_desc + - theft_ind + - cat_no + - tlos_ind + - cust_pr + - insd_ln + - insd_fn + - insd_title + - insd_co_nm + - insd_addr1 + - insd_addr2 + - insd_city + - insd_st + - insd_zip + - insd_ctry + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_fax + - insd_faxx + - insd_ea + - ownr_ln + - ownr_fn + - ownr_title + - ownr_co_nm + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_st + - ownr_zip + - ownr_ctry + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_fax + - ownr_faxx + - ownr_ea + - area_of_damage + - loss_cat + - est_number + - service_car + - special_coverage_policy + - csr + - po_number + - unit_number + - kmin + - kmout + - referral_source + - selling_dealer + - servicing_dealer + - servicing_dealer_contact + - selling_dealer_contact + - depreciation_taxes + - federal_tax_payable + - other_amount_payable + - towing_payable + - storage_payable + - adjustment_bottom_line + - tax_pstthr + - tax_tow_rt + - tax_sub_rt + - tax_paint_mat_rt + - tax_levies_rt + - tax_prethr + - tax_thramt + - tax_str_rt + - tax_lbr_rt + - adj_g_disc + - adj_towdis + - adj_strdis + - tax_predis + - rate_laa + - status + - cieca_stl + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581529463377_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581529463377_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..de3be1a36 --- /dev/null +++ b/hasura/migrations/1581529463377_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,246 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - cieca_stl + - cieca_ttl + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - g_bett_amt + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - status + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581529471244_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581529471244_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..877c16c63 --- /dev/null +++ b/hasura/migrations/1581529471244_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,243 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - cieca_stl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581529471244_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581529471244_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..16d2b6fb7 --- /dev/null +++ b/hasura/migrations/1581529471244_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,244 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - cieca_stl + - cieca_ttl + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - g_bett_amt + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - status + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581529480083_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1581529480083_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..bbee90d97 --- /dev/null +++ b/hasura/migrations/1581529480083_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,245 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - special_coverage_policy + - theft_ind + - tlos_ind + - asgn_date + - invoice_date + - loss_date + - pay_date + - kmin + - kmout + - est_number + - area_of_damage + - cieca_stl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - deductible + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - local_tax_rate + - other_amount_payable + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_str_rt + - tax_thramt + - towing_payable + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - csr + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - po_number + - referral_source + - regie_number + - ro_number + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - status + - unit_number + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + - tax_pstthr + - tax_sub_rt + - tax_tow_rt + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581529480083_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1581529480083_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..90840138f --- /dev/null +++ b/hasura/migrations/1581529480083_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,246 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_completion + - actual_delivery + - actual_in + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - cieca_stl + - cieca_ttl + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - csr + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - depreciation_taxes + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_payable + - federal_tax_rate + - g_bett_amt + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - kmin + - kmout + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - other_amount_payable + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - po_number + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_laa + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - referral_source + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - selling_dealer + - selling_dealer_contact + - service_car + - servicing_dealer + - servicing_dealer_contact + - shopid + - special_coverage_policy + - state_tax_rate + - status + - statusid + - storage_payable + - tax_lbr_rt + - tax_levies_rt + - tax_paint_mat_rt + - tax_predis + - tax_prethr + - tax_pstthr + - tax_str_rt + - tax_sub_rt + - tax_thramt + - tax_tow_rt + - theft_ind + - tlos_ind + - towing_payable + - unit_number + - updated_at + - vehicleid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581529492693_alter_table_public_jobs_drop_column_deductible/down.yaml b/hasura/migrations/1581529492693_alter_table_public_jobs_drop_column_deductible/down.yaml new file mode 100644 index 000000000..723e71438 --- /dev/null +++ b/hasura/migrations/1581529492693_alter_table_public_jobs_drop_column_deductible/down.yaml @@ -0,0 +1,9 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "deductible" numeric + type: run_sql +- args: + sql: ALTER TABLE "public"."jobs" ALTER COLUMN "deductible" DROP NOT NULL + type: run_sql +- args: + sql: ALTER TABLE "public"."jobs" ALTER COLUMN "deductible" SET DEFAULT 0 + type: run_sql diff --git a/hasura/migrations/1581529492693_alter_table_public_jobs_drop_column_deductible/up.yaml b/hasura/migrations/1581529492693_alter_table_public_jobs_drop_column_deductible/up.yaml new file mode 100644 index 000000000..396306235 --- /dev/null +++ b/hasura/migrations/1581529492693_alter_table_public_jobs_drop_column_deductible/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "deductible" CASCADE + type: run_sql diff --git a/hasura/migrations/1581530616257_alter_table_public_appointments_add_column_isintake/down.yaml b/hasura/migrations/1581530616257_alter_table_public_appointments_add_column_isintake/down.yaml new file mode 100644 index 000000000..e02cfe92d --- /dev/null +++ b/hasura/migrations/1581530616257_alter_table_public_appointments_add_column_isintake/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."appointments" DROP COLUMN "isintake"; + type: run_sql diff --git a/hasura/migrations/1581530616257_alter_table_public_appointments_add_column_isintake/up.yaml b/hasura/migrations/1581530616257_alter_table_public_appointments_add_column_isintake/up.yaml new file mode 100644 index 000000000..62dbfbfac --- /dev/null +++ b/hasura/migrations/1581530616257_alter_table_public_appointments_add_column_isintake/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."appointments" ADD COLUMN "isintake" boolean NOT NULL + DEFAULT true; + type: run_sql diff --git a/hasura/migrations/1581530623178_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581530623178_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..34cf4841b --- /dev/null +++ b/hasura/migrations/1581530623178_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581530623178_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581530623178_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..2d7c6806a --- /dev/null +++ b/hasura/migrations/1581530623178_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - start + - end + - canceled + - arrived + - isintake + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581530628660_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581530628660_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..7c6811bf8 --- /dev/null +++ b/hasura/migrations/1581530628660_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581530628660_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581530628660_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..9b8f53a5b --- /dev/null +++ b/hasura/migrations/1581530628660_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581530632721_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581530632721_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..1644cd131 --- /dev/null +++ b/hasura/migrations/1581530632721_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - arrived + - canceled + - created_at + - end + - start + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581530632721_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581530632721_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..bd68314eb --- /dev/null +++ b/hasura/migrations/1581530632721_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581533010996_alter_table_public_appointments_add_column_bodyshopid/down.yaml b/hasura/migrations/1581533010996_alter_table_public_appointments_add_column_bodyshopid/down.yaml new file mode 100644 index 000000000..a215f8049 --- /dev/null +++ b/hasura/migrations/1581533010996_alter_table_public_appointments_add_column_bodyshopid/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."appointments" DROP COLUMN "bodyshopid"; + type: run_sql diff --git a/hasura/migrations/1581533010996_alter_table_public_appointments_add_column_bodyshopid/up.yaml b/hasura/migrations/1581533010996_alter_table_public_appointments_add_column_bodyshopid/up.yaml new file mode 100644 index 000000000..3a62d703c --- /dev/null +++ b/hasura/migrations/1581533010996_alter_table_public_appointments_add_column_bodyshopid/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."appointments" ADD COLUMN "bodyshopid" uuid NOT NULL; + type: run_sql diff --git a/hasura/migrations/1581533025791_set_fk_public_appointments_bodyshopid/down.yaml b/hasura/migrations/1581533025791_set_fk_public_appointments_bodyshopid/down.yaml new file mode 100644 index 000000000..d2b5e6acf --- /dev/null +++ b/hasura/migrations/1581533025791_set_fk_public_appointments_bodyshopid/down.yaml @@ -0,0 +1,4 @@ +- args: + sql: "\n alter table \"public\".\"appointments\" drop constraint \"appointments_bodyshopid_fkey\"\n + \ " + type: run_sql diff --git a/hasura/migrations/1581533025791_set_fk_public_appointments_bodyshopid/up.yaml b/hasura/migrations/1581533025791_set_fk_public_appointments_bodyshopid/up.yaml new file mode 100644 index 000000000..1eddc1d61 --- /dev/null +++ b/hasura/migrations/1581533025791_set_fk_public_appointments_bodyshopid/up.yaml @@ -0,0 +1,6 @@ +- args: + sql: "\n alter table \"public\".\"appointments\"\n add constraint + \"appointments_bodyshopid_fkey\"\n foreign key (\"bodyshopid\")\n + \ references \"public\".\"bodyshops\"\n (\"id\") on update + cascade on delete cascade;\n " + type: run_sql diff --git a/hasura/migrations/1581533035763_alter_table_public_appointments_alter_column_jobid/down.yaml b/hasura/migrations/1581533035763_alter_table_public_appointments_alter_column_jobid/down.yaml new file mode 100644 index 000000000..670a8a99f --- /dev/null +++ b/hasura/migrations/1581533035763_alter_table_public_appointments_alter_column_jobid/down.yaml @@ -0,0 +1,6 @@ +- args: + sql: ALTER TABLE "public"."appointments" ALTER COLUMN "jobid" SET NOT NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."appointments"."jobid" IS E'null' + type: run_sql diff --git a/hasura/migrations/1581533035763_alter_table_public_appointments_alter_column_jobid/up.yaml b/hasura/migrations/1581533035763_alter_table_public_appointments_alter_column_jobid/up.yaml new file mode 100644 index 000000000..2b5118988 --- /dev/null +++ b/hasura/migrations/1581533035763_alter_table_public_appointments_alter_column_jobid/up.yaml @@ -0,0 +1,6 @@ +- args: + sql: ALTER TABLE "public"."appointments" ALTER COLUMN "jobid" DROP NOT NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."appointments"."jobid" IS E'' + type: run_sql diff --git a/hasura/migrations/1581533044908_track_all_relationships/down.yaml b/hasura/migrations/1581533044908_track_all_relationships/down.yaml new file mode 100644 index 000000000..9e9c5e1f4 --- /dev/null +++ b/hasura/migrations/1581533044908_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: bodyshop + table: + name: appointments + schema: public + type: drop_relationship +- args: + relationship: appointments + table: + name: bodyshops + schema: public + type: drop_relationship diff --git a/hasura/migrations/1581533044908_track_all_relationships/up.yaml b/hasura/migrations/1581533044908_track_all_relationships/up.yaml new file mode 100644 index 000000000..4489d60cd --- /dev/null +++ b/hasura/migrations/1581533044908_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: bodyshop + table: + name: appointments + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship +- args: + name: appointments + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: appointments + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1581533078439_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581533078439_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..2d7c6806a --- /dev/null +++ b/hasura/migrations/1581533078439_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - start + - end + - canceled + - arrived + - isintake + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581533078439_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581533078439_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..80392f155 --- /dev/null +++ b/hasura/migrations/1581533078439_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - start + - end + - canceled + - arrived + - isintake + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581533085254_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581533085254_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..80392f155 --- /dev/null +++ b/hasura/migrations/1581533085254_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - start + - end + - canceled + - arrived + - isintake + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581533085254_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581533085254_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..b6a96cd37 --- /dev/null +++ b/hasura/migrations/1581533085254_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581533092537_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581533092537_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..9b8f53a5b --- /dev/null +++ b/hasura/migrations/1581533092537_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581533092537_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581533092537_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..ea389149c --- /dev/null +++ b/hasura/migrations/1581533092537_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581533100559_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581533100559_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..bd68314eb --- /dev/null +++ b/hasura/migrations/1581533100559_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581533100559_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581533100559_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..eed14f2a7 --- /dev/null +++ b/hasura/migrations/1581533100559_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581533106127_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581533106127_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..e40aecd89 --- /dev/null +++ b/hasura/migrations/1581533106127_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,23 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_delete_permission +- args: + permission: + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1581533106127_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581533106127_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..c70956bf0 --- /dev/null +++ b/hasura/migrations/1581533106127_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,22 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_delete_permission +- args: + permission: + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1581536337667_alter_table_public_appointments_add_column_title/down.yaml b/hasura/migrations/1581536337667_alter_table_public_appointments_add_column_title/down.yaml new file mode 100644 index 000000000..7dcc18afa --- /dev/null +++ b/hasura/migrations/1581536337667_alter_table_public_appointments_add_column_title/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."appointments" DROP COLUMN "title"; + type: run_sql diff --git a/hasura/migrations/1581536337667_alter_table_public_appointments_add_column_title/up.yaml b/hasura/migrations/1581536337667_alter_table_public_appointments_add_column_title/up.yaml new file mode 100644 index 000000000..e12992c92 --- /dev/null +++ b/hasura/migrations/1581536337667_alter_table_public_appointments_add_column_title/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."appointments" ADD COLUMN "title" text NULL; + type: run_sql diff --git a/hasura/migrations/1581536568049_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581536568049_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..b6a96cd37 --- /dev/null +++ b/hasura/migrations/1581536568049_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581536568049_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581536568049_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..116c67c2d --- /dev/null +++ b/hasura/migrations/1581536568049_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - start + - end + - canceled + - arrived + - isintake + - bodyshopid + - title + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581536573614_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581536573614_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..ea389149c --- /dev/null +++ b/hasura/migrations/1581536573614_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581536573614_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581536573614_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..1c74631cf --- /dev/null +++ b/hasura/migrations/1581536573614_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - arrived + - canceled + - isintake + - title + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: appointments + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581536577315_update_permission_user_public_table_appointments/down.yaml b/hasura/migrations/1581536577315_update_permission_user_public_table_appointments/down.yaml new file mode 100644 index 000000000..eed14f2a7 --- /dev/null +++ b/hasura/migrations/1581536577315_update_permission_user_public_table_appointments/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - arrived + - canceled + - isintake + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581536577315_update_permission_user_public_table_appointments/up.yaml b/hasura/migrations/1581536577315_update_permission_user_public_table_appointments/up.yaml new file mode 100644 index 000000000..264408ea3 --- /dev/null +++ b/hasura/migrations/1581536577315_update_permission_user_public_table_appointments/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: appointments + schema: public + type: drop_update_permission +- args: + permission: + columns: + - arrived + - canceled + - isintake + - title + - created_at + - end + - start + - updated_at + - bodyshopid + - id + - jobid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: appointments + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581626650166_alter_table_public_vendors_add_column_cost_center/down.yaml b/hasura/migrations/1581626650166_alter_table_public_vendors_add_column_cost_center/down.yaml new file mode 100644 index 000000000..4dfd3d0c2 --- /dev/null +++ b/hasura/migrations/1581626650166_alter_table_public_vendors_add_column_cost_center/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."vendors" DROP COLUMN "cost_center"; + type: run_sql diff --git a/hasura/migrations/1581626650166_alter_table_public_vendors_add_column_cost_center/up.yaml b/hasura/migrations/1581626650166_alter_table_public_vendors_add_column_cost_center/up.yaml new file mode 100644 index 000000000..820cc3acf --- /dev/null +++ b/hasura/migrations/1581626650166_alter_table_public_vendors_add_column_cost_center/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."vendors" ADD COLUMN "cost_center" text NOT NULL; + type: run_sql diff --git a/hasura/migrations/1581626683086_alter_table_public_vendors_add_column_favorite/down.yaml b/hasura/migrations/1581626683086_alter_table_public_vendors_add_column_favorite/down.yaml new file mode 100644 index 000000000..09a6eda1f --- /dev/null +++ b/hasura/migrations/1581626683086_alter_table_public_vendors_add_column_favorite/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."vendors" DROP COLUMN "favorite"; + type: run_sql diff --git a/hasura/migrations/1581626683086_alter_table_public_vendors_add_column_favorite/up.yaml b/hasura/migrations/1581626683086_alter_table_public_vendors_add_column_favorite/up.yaml new file mode 100644 index 000000000..768e11f52 --- /dev/null +++ b/hasura/migrations/1581626683086_alter_table_public_vendors_add_column_favorite/up.yaml @@ -0,0 +1,4 @@ +- args: + sql: ALTER TABLE "public"."vendors" ADD COLUMN "favorite" boolean NOT NULL DEFAULT + false; + type: run_sql diff --git a/hasura/migrations/1581630600157_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581630600157_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..6551fb338 --- /dev/null +++ b/hasura/migrations/1581630600157_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - due_date + - discount + - prompt_discount + - city + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581630600157_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581630600157_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..d9f4efe71 --- /dev/null +++ b/hasura/migrations/1581630600157_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - bodyshopid + - name + - street1 + - street2 + - city + - state + - zip + - country + - email + - taxid + - discount + - prompt_discount + - due_date + - terms + - display_name + - cost_center + - favorite + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581630604954_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581630604954_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..942a75880 --- /dev/null +++ b/hasura/migrations/1581630604954_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,43 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - due_date + - discount + - prompt_discount + - city + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581630604954_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581630604954_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..48f129b36 --- /dev/null +++ b/hasura/migrations/1581630604954_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - favorite + - due_date + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581630611638_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581630611638_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..069ef986f --- /dev/null +++ b/hasura/migrations/1581630611638_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - due_date + - discount + - prompt_discount + - city + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581630611638_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581630611638_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..50a77d8ce --- /dev/null +++ b/hasura/migrations/1581630611638_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - favorite + - due_date + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581709302822_alter_table_public_vendors_alter_column_favorite/down.yaml b/hasura/migrations/1581709302822_alter_table_public_vendors_alter_column_favorite/down.yaml new file mode 100644 index 000000000..8a5cf3c4e --- /dev/null +++ b/hasura/migrations/1581709302822_alter_table_public_vendors_alter_column_favorite/down.yaml @@ -0,0 +1,9 @@ +- args: + sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" TYPE boolean; + type: run_sql +- args: + sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" SET NOT NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."vendors"."favorite" IS E'null' + type: run_sql diff --git a/hasura/migrations/1581709302822_alter_table_public_vendors_alter_column_favorite/up.yaml b/hasura/migrations/1581709302822_alter_table_public_vendors_alter_column_favorite/up.yaml new file mode 100644 index 000000000..906eaaded --- /dev/null +++ b/hasura/migrations/1581709302822_alter_table_public_vendors_alter_column_favorite/up.yaml @@ -0,0 +1,9 @@ +- args: + sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" TYPE bool; + type: run_sql +- args: + sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" DROP NOT NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."vendors"."favorite" IS E'' + type: run_sql diff --git a/hasura/migrations/1581709971205_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581709971205_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..d9f4efe71 --- /dev/null +++ b/hasura/migrations/1581709971205_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - bodyshopid + - name + - street1 + - street2 + - city + - state + - zip + - country + - email + - taxid + - discount + - prompt_discount + - due_date + - terms + - display_name + - cost_center + - favorite + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581709971205_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581709971205_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..556607894 --- /dev/null +++ b/hasura/migrations/1581709971205_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,46 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581709974750_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581709974750_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..48f129b36 --- /dev/null +++ b/hasura/migrations/1581709974750_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - favorite + - due_date + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581709974750_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581709974750_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..d83868cce --- /dev/null +++ b/hasura/migrations/1581709974750_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,44 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581709977611_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581709977611_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..50a77d8ce --- /dev/null +++ b/hasura/migrations/1581709977611_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - favorite + - due_date + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581709977611_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581709977611_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..d202a5ce4 --- /dev/null +++ b/hasura/migrations/1581709977611_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,46 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581709987588_alter_table_public_vendors_drop_column_favorite/down.yaml b/hasura/migrations/1581709987588_alter_table_public_vendors_drop_column_favorite/down.yaml new file mode 100644 index 000000000..b47bc0a1a --- /dev/null +++ b/hasura/migrations/1581709987588_alter_table_public_vendors_drop_column_favorite/down.yaml @@ -0,0 +1,9 @@ +- args: + sql: ALTER TABLE "public"."vendors" ADD COLUMN "favorite" bool + type: run_sql +- args: + sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" DROP NOT NULL + type: run_sql +- args: + sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" SET DEFAULT false + type: run_sql diff --git a/hasura/migrations/1581709987588_alter_table_public_vendors_drop_column_favorite/up.yaml b/hasura/migrations/1581709987588_alter_table_public_vendors_drop_column_favorite/up.yaml new file mode 100644 index 000000000..3d0e308e7 --- /dev/null +++ b/hasura/migrations/1581709987588_alter_table_public_vendors_drop_column_favorite/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."vendors" DROP COLUMN "favorite" CASCADE + type: run_sql diff --git a/hasura/migrations/1581710140783_alter_table_public_vendors_add_column_favorite/down.yaml b/hasura/migrations/1581710140783_alter_table_public_vendors_add_column_favorite/down.yaml new file mode 100644 index 000000000..09a6eda1f --- /dev/null +++ b/hasura/migrations/1581710140783_alter_table_public_vendors_add_column_favorite/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."vendors" DROP COLUMN "favorite"; + type: run_sql diff --git a/hasura/migrations/1581710140783_alter_table_public_vendors_add_column_favorite/up.yaml b/hasura/migrations/1581710140783_alter_table_public_vendors_add_column_favorite/up.yaml new file mode 100644 index 000000000..d8f51f437 --- /dev/null +++ b/hasura/migrations/1581710140783_alter_table_public_vendors_add_column_favorite/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."vendors" ADD COLUMN "favorite" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1581710237559_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581710237559_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..556607894 --- /dev/null +++ b/hasura/migrations/1581710237559_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,46 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581710237559_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581710237559_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..03e3a58fd --- /dev/null +++ b/hasura/migrations/1581710237559_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - due_date + - favorite + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581710252861_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581710252861_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..d83868cce --- /dev/null +++ b/hasura/migrations/1581710252861_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,44 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581710252861_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581710252861_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..326b62d07 --- /dev/null +++ b/hasura/migrations/1581710252861_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - due_date + - favorite + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581710255645_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581710255645_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..d202a5ce4 --- /dev/null +++ b/hasura/migrations/1581710255645_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,46 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581710255645_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581710255645_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..323704732 --- /dev/null +++ b/hasura/migrations/1581710255645_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - due_date + - favorite + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581710270792_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581710270792_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..556607894 --- /dev/null +++ b/hasura/migrations/1581710270792_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,46 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581710270792_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581710270792_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..03e3a58fd --- /dev/null +++ b/hasura/migrations/1581710270792_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - due_date + - favorite + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1581710283854_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581710283854_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..d83868cce --- /dev/null +++ b/hasura/migrations/1581710283854_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,44 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581710283854_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581710283854_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..326b62d07 --- /dev/null +++ b/hasura/migrations/1581710283854_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - due_date + - favorite + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: vendors + schema: public + type: create_select_permission diff --git a/hasura/migrations/1581710297623_update_permission_user_public_table_vendors/down.yaml b/hasura/migrations/1581710297623_update_permission_user_public_table_vendors/down.yaml new file mode 100644 index 000000000..d202a5ce4 --- /dev/null +++ b/hasura/migrations/1581710297623_update_permission_user_public_table_vendors/down.yaml @@ -0,0 +1,46 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - bodyshopid + - city + - cost_center + - country + - created_at + - discount + - display_name + - due_date + - email + - id + - name + - prompt_discount + - state + - street1 + - street2 + - taxid + - terms + - updated_at + - zip + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1581710297623_update_permission_user_public_table_vendors/up.yaml b/hasura/migrations/1581710297623_update_permission_user_public_table_vendors/up.yaml new file mode 100644 index 000000000..323704732 --- /dev/null +++ b/hasura/migrations/1581710297623_update_permission_user_public_table_vendors/up.yaml @@ -0,0 +1,47 @@ +- args: + role: user + table: + name: vendors + schema: public + type: drop_update_permission +- args: + permission: + columns: + - due_date + - favorite + - discount + - prompt_discount + - city + - cost_center + - country + - display_name + - email + - name + - state + - street1 + - street2 + - taxid + - terms + - zip + - created_at + - updated_at + - bodyshopid + - id + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: vendors + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582043706822_alter_table_public_parts_order_alter_column_ordered_by_user_id/down.yaml b/hasura/migrations/1582043706822_alter_table_public_parts_order_alter_column_ordered_by_user_id/down.yaml new file mode 100644 index 000000000..993afdbab --- /dev/null +++ b/hasura/migrations/1582043706822_alter_table_public_parts_order_alter_column_ordered_by_user_id/down.yaml @@ -0,0 +1,6 @@ +- args: + sql: COMMENT ON COLUMN "public"."parts_order"."ordered_by_user_id" IS E'null' + type: run_sql +- args: + sql: alter table "public"."parts_order" rename column "user_email" to "ordered_by_user_id"; + type: run_sql diff --git a/hasura/migrations/1582043706822_alter_table_public_parts_order_alter_column_ordered_by_user_id/up.yaml b/hasura/migrations/1582043706822_alter_table_public_parts_order_alter_column_ordered_by_user_id/up.yaml new file mode 100644 index 000000000..56e2ab5fa --- /dev/null +++ b/hasura/migrations/1582043706822_alter_table_public_parts_order_alter_column_ordered_by_user_id/up.yaml @@ -0,0 +1,7 @@ +- args: + sql: COMMENT ON COLUMN "public"."parts_order"."ordered_by_user_id" IS E'' + type: run_sql +- args: + sql: alter table "public"."parts_order" rename column "ordered_by_user_id" to + "user_email"; + type: run_sql diff --git a/hasura/migrations/1582045721224_update_permission_user_public_table_parts_order/down.yaml b/hasura/migrations/1582045721224_update_permission_user_public_table_parts_order/down.yaml new file mode 100644 index 000000000..a28b92df7 --- /dev/null +++ b/hasura/migrations/1582045721224_update_permission_user_public_table_parts_order/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - deliver_by + - order_date + - user_email + - order_number + - status + - created_at + - updated_at + - id + - jobid + - vendorid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582045721224_update_permission_user_public_table_parts_order/up.yaml b/hasura/migrations/1582045721224_update_permission_user_public_table_parts_order/up.yaml new file mode 100644 index 000000000..0e8a84cb5 --- /dev/null +++ b/hasura/migrations/1582045721224_update_permission_user_public_table_parts_order/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - created_at + - deliver_by + - id + - jobid + - order_date + - status + - updated_at + - user_email + - vendorid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582045728861_update_permission_user_public_table_parts_order/down.yaml b/hasura/migrations/1582045728861_update_permission_user_public_table_parts_order/down.yaml new file mode 100644 index 000000000..ac3a2a0d6 --- /dev/null +++ b/hasura/migrations/1582045728861_update_permission_user_public_table_parts_order/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - deliver_by + - order_date + - user_email + - order_number + - status + - created_at + - updated_at + - id + - jobid + - vendorid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: parts_order + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582045728861_update_permission_user_public_table_parts_order/up.yaml b/hasura/migrations/1582045728861_update_permission_user_public_table_parts_order/up.yaml new file mode 100644 index 000000000..08e9c221f --- /dev/null +++ b/hasura/migrations/1582045728861_update_permission_user_public_table_parts_order/up.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - deliver_by + - id + - jobid + - order_date + - status + - updated_at + - user_email + - vendorid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: parts_order + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582045737366_update_permission_user_public_table_parts_order/down.yaml b/hasura/migrations/1582045737366_update_permission_user_public_table_parts_order/down.yaml new file mode 100644 index 000000000..f7b5ecfc5 --- /dev/null +++ b/hasura/migrations/1582045737366_update_permission_user_public_table_parts_order/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_update_permission +- args: + permission: + columns: + - deliver_by + - order_date + - user_email + - order_number + - status + - created_at + - updated_at + - id + - jobid + - vendorid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582045737366_update_permission_user_public_table_parts_order/up.yaml b/hasura/migrations/1582045737366_update_permission_user_public_table_parts_order/up.yaml new file mode 100644 index 000000000..b26b97e7b --- /dev/null +++ b/hasura/migrations/1582045737366_update_permission_user_public_table_parts_order/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_update_permission +- args: + permission: + columns: + - created_at + - deliver_by + - id + - jobid + - order_date + - status + - updated_at + - user_email + - vendorid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582045749742_alter_table_public_parts_order_drop_column_order_number/down.yaml b/hasura/migrations/1582045749742_alter_table_public_parts_order_drop_column_order_number/down.yaml new file mode 100644 index 000000000..b4ba58652 --- /dev/null +++ b/hasura/migrations/1582045749742_alter_table_public_parts_order_drop_column_order_number/down.yaml @@ -0,0 +1,6 @@ +- args: + sql: ALTER TABLE "public"."parts_order" ADD COLUMN "order_number" text + type: run_sql +- args: + sql: ALTER TABLE "public"."parts_order" ALTER COLUMN "order_number" DROP NOT NULL + type: run_sql diff --git a/hasura/migrations/1582045749742_alter_table_public_parts_order_drop_column_order_number/up.yaml b/hasura/migrations/1582045749742_alter_table_public_parts_order_drop_column_order_number/up.yaml new file mode 100644 index 000000000..b9189571b --- /dev/null +++ b/hasura/migrations/1582045749742_alter_table_public_parts_order_drop_column_order_number/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."parts_order" DROP COLUMN "order_number" CASCADE + type: run_sql diff --git a/hasura/migrations/1582045770954_alter_table_public_parts_order_add_column_order_number/down.yaml b/hasura/migrations/1582045770954_alter_table_public_parts_order_add_column_order_number/down.yaml new file mode 100644 index 000000000..f8a565df2 --- /dev/null +++ b/hasura/migrations/1582045770954_alter_table_public_parts_order_add_column_order_number/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."parts_order" DROP COLUMN "order_number"; + type: run_sql diff --git a/hasura/migrations/1582045770954_alter_table_public_parts_order_add_column_order_number/up.yaml b/hasura/migrations/1582045770954_alter_table_public_parts_order_add_column_order_number/up.yaml new file mode 100644 index 000000000..dd95799dd --- /dev/null +++ b/hasura/migrations/1582045770954_alter_table_public_parts_order_add_column_order_number/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."parts_order" ADD COLUMN "order_number" serial NOT NULL; + type: run_sql diff --git a/hasura/migrations/1582045780806_update_permission_user_public_table_parts_order/down.yaml b/hasura/migrations/1582045780806_update_permission_user_public_table_parts_order/down.yaml new file mode 100644 index 000000000..0e8a84cb5 --- /dev/null +++ b/hasura/migrations/1582045780806_update_permission_user_public_table_parts_order/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - created_at + - deliver_by + - id + - jobid + - order_date + - status + - updated_at + - user_email + - vendorid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582045780806_update_permission_user_public_table_parts_order/up.yaml b/hasura/migrations/1582045780806_update_permission_user_public_table_parts_order/up.yaml new file mode 100644 index 000000000..a4b6e5785 --- /dev/null +++ b/hasura/migrations/1582045780806_update_permission_user_public_table_parts_order/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - deliver_by + - order_date + - order_number + - status + - user_email + - created_at + - updated_at + - id + - jobid + - vendorid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582045788161_update_permission_user_public_table_parts_order/down.yaml b/hasura/migrations/1582045788161_update_permission_user_public_table_parts_order/down.yaml new file mode 100644 index 000000000..08e9c221f --- /dev/null +++ b/hasura/migrations/1582045788161_update_permission_user_public_table_parts_order/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - deliver_by + - id + - jobid + - order_date + - status + - updated_at + - user_email + - vendorid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: parts_order + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582045788161_update_permission_user_public_table_parts_order/up.yaml b/hasura/migrations/1582045788161_update_permission_user_public_table_parts_order/up.yaml new file mode 100644 index 000000000..046b734a6 --- /dev/null +++ b/hasura/migrations/1582045788161_update_permission_user_public_table_parts_order/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - deliver_by + - order_date + - order_number + - status + - user_email + - created_at + - updated_at + - id + - jobid + - vendorid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: parts_order + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582045795840_update_permission_user_public_table_parts_order/down.yaml b/hasura/migrations/1582045795840_update_permission_user_public_table_parts_order/down.yaml new file mode 100644 index 000000000..b26b97e7b --- /dev/null +++ b/hasura/migrations/1582045795840_update_permission_user_public_table_parts_order/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_update_permission +- args: + permission: + columns: + - created_at + - deliver_by + - id + - jobid + - order_date + - status + - updated_at + - user_email + - vendorid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582045795840_update_permission_user_public_table_parts_order/up.yaml b/hasura/migrations/1582045795840_update_permission_user_public_table_parts_order/up.yaml new file mode 100644 index 000000000..e947dcbf3 --- /dev/null +++ b/hasura/migrations/1582045795840_update_permission_user_public_table_parts_order/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: parts_order + schema: public + type: drop_update_permission +- args: + permission: + columns: + - deliver_by + - order_date + - order_number + - status + - user_email + - created_at + - updated_at + - id + - jobid + - vendorid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: parts_order + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582046821601_rename_table_public_parts_order/down.yaml b/hasura/migrations/1582046821601_rename_table_public_parts_order/down.yaml new file mode 100644 index 000000000..f514d42a4 --- /dev/null +++ b/hasura/migrations/1582046821601_rename_table_public_parts_order/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: alter table "public"."parts_orders" rename to "parts_order"; + type: run_sql diff --git a/hasura/migrations/1582046821601_rename_table_public_parts_order/up.yaml b/hasura/migrations/1582046821601_rename_table_public_parts_order/up.yaml new file mode 100644 index 000000000..b53dd0ca0 --- /dev/null +++ b/hasura/migrations/1582046821601_rename_table_public_parts_order/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: alter table "public"."parts_order" rename to "parts_orders"; + type: run_sql diff --git a/hasura/migrations/1582047255981_alter_table_public_parts_order_lines_alter_column_line_desc/down.yaml b/hasura/migrations/1582047255981_alter_table_public_parts_order_lines_alter_column_line_desc/down.yaml new file mode 100644 index 000000000..bbc7d5da9 --- /dev/null +++ b/hasura/migrations/1582047255981_alter_table_public_parts_order_lines_alter_column_line_desc/down.yaml @@ -0,0 +1,7 @@ +- args: + sql: ALTER TABLE "public"."parts_order_lines" ALTER COLUMN "line_desc" SET NOT + NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."parts_order_lines"."line_desc" IS E'null' + type: run_sql diff --git a/hasura/migrations/1582047255981_alter_table_public_parts_order_lines_alter_column_line_desc/up.yaml b/hasura/migrations/1582047255981_alter_table_public_parts_order_lines_alter_column_line_desc/up.yaml new file mode 100644 index 000000000..387d827fb --- /dev/null +++ b/hasura/migrations/1582047255981_alter_table_public_parts_order_lines_alter_column_line_desc/up.yaml @@ -0,0 +1,7 @@ +- args: + sql: ALTER TABLE "public"."parts_order_lines" ALTER COLUMN "line_desc" DROP NOT + NULL; + type: run_sql +- args: + sql: COMMENT ON COLUMN "public"."parts_order_lines"."line_desc" IS E'' + type: run_sql diff --git a/hasura/migrations/1582047550643_alter_table_public_bodyshops_add_column_md_order_statuses/down.yaml b/hasura/migrations/1582047550643_alter_table_public_bodyshops_add_column_md_order_statuses/down.yaml new file mode 100644 index 000000000..dcbbe420b --- /dev/null +++ b/hasura/migrations/1582047550643_alter_table_public_bodyshops_add_column_md_order_statuses/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "md_order_statuses"; + type: run_sql diff --git a/hasura/migrations/1582047550643_alter_table_public_bodyshops_add_column_md_order_statuses/up.yaml b/hasura/migrations/1582047550643_alter_table_public_bodyshops_add_column_md_order_statuses/up.yaml new file mode 100644 index 000000000..138c6a957 --- /dev/null +++ b/hasura/migrations/1582047550643_alter_table_public_bodyshops_add_column_md_order_statuses/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "md_order_statuses" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1582047561858_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1582047561858_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..0575c9859 --- /dev/null +++ b/hasura/migrations/1582047561858_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - id + - insurance_vendor_id + - logo_img_path + - md_ro_statuses + - region_config + - shopname + - state + - state_tax_id + - updated_at + - zip_post + computed_fields: [] + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582047561858_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1582047561858_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..f9e53c75e --- /dev/null +++ b/hasura/migrations/1582047561858_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - id + - shopname + - created_at + - updated_at + - address1 + - address2 + - city + - state + - zip_post + - country + - email + - federal_tax_id + - insurance_vendor_id + - state_tax_id + - logo_img_path + - md_ro_statuses + - region_config + - md_order_statuses + computed_fields: [] + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582047570605_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1582047570605_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..0c9193996 --- /dev/null +++ b/hasura/migrations/1582047570605_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - insurance_vendor_id + - logo_img_path + - md_ro_statuses + - shopname + - state + - state_tax_id + - updated_at + - zip_post + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: bodyshops + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582047570605_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1582047570605_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..455dce879 --- /dev/null +++ b/hasura/migrations/1582047570605_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,43 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - md_order_statuses + - md_ro_statuses + - address1 + - address2 + - city + - country + - email + - federal_tax_id + - insurance_vendor_id + - logo_img_path + - region_config + - shopname + - state + - state_tax_id + - zip_post + - created_at + - updated_at + - id + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: bodyshops + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582151001705_drop_function_public_search_owners/down.yaml b/hasura/migrations/1582151001705_drop_function_public_search_owners/down.yaml new file mode 100644 index 000000000..7db16d05c --- /dev/null +++ b/hasura/migrations/1582151001705_drop_function_public_search_owners/down.yaml @@ -0,0 +1,10 @@ +- args: + sql: "CREATE OR REPLACE FUNCTION public.search_owners(search text)\n RETURNS SETOF + owners\n LANGUAGE sql\n STABLE\nAS $function$\r\n SELECT *\r\n FROM owners\r\n + \ WHERE\r\n search <% (ownr_fn || ' ' || ownr_ln || ' ' || ownr_addr1 + \ || ' ' || ownr_city || ' ' || ownr_zip || ' ' || ownr_ea || ' ' || ownr_ph1 + || ' ' || ownr_ph2)\r\n ORDER BY\r\n similarity(search, (ownr_fn || + ' ' || ownr_ln || ' ' || ownr_addr1 || ' ' || ownr_city || ' ' || ownr_zip + \ || ' ' || ownr_ea || ' ' || ownr_ph1 || ' ' || ownr_ph2)) DESC\r\n LIMIT + 20;\r\n$function$\n" + type: run_sql diff --git a/hasura/migrations/1582151001705_drop_function_public_search_owners/up.yaml b/hasura/migrations/1582151001705_drop_function_public_search_owners/up.yaml new file mode 100644 index 000000000..8069a913e --- /dev/null +++ b/hasura/migrations/1582151001705_drop_function_public_search_owners/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: DROP FUNCTION "public"."search_owners"("pg_catalog"."text") + type: run_sql diff --git a/hasura/migrations/1582151051596_run_sql_migration/down.yaml b/hasura/migrations/1582151051596_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1582151051596_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1582151051596_run_sql_migration/up.yaml b/hasura/migrations/1582151051596_run_sql_migration/up.yaml new file mode 100644 index 000000000..6660126ad --- /dev/null +++ b/hasura/migrations/1582151051596_run_sql_migration/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: true + sql: | + drop index owner_gin_idx + type: run_sql diff --git a/hasura/migrations/1582151260638_run_sql_migration/down.yaml b/hasura/migrations/1582151260638_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1582151260638_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1582151260638_run_sql_migration/up.yaml b/hasura/migrations/1582151260638_run_sql_migration/up.yaml new file mode 100644 index 000000000..9601b443c --- /dev/null +++ b/hasura/migrations/1582151260638_run_sql_migration/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: true + sql: "CREATE INDEX idx_owner_name ON owners\r\nUSING GIN ((ownr_fn || ' ' || ownr_ln) + gin_trgm_ops);" + type: run_sql diff --git a/hasura/migrations/1582151340160_run_sql_migration/down.yaml b/hasura/migrations/1582151340160_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1582151340160_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1582151340160_run_sql_migration/up.yaml b/hasura/migrations/1582151340160_run_sql_migration/up.yaml new file mode 100644 index 000000000..06bb94faf --- /dev/null +++ b/hasura/migrations/1582151340160_run_sql_migration/up.yaml @@ -0,0 +1,11 @@ +- args: + cascade: true + sql: "CREATE FUNCTION search_owner(search text)\r\nRETURNS SETOF owners AS $$\r\n + \ SELECT *\r\n FROM owners\r\n WHERE\r\n search <% (ownr_fn || + ' ' || ownr_ln)\r\n ORDER BY\r\n similarity(search, (ownr_fn || ' ' + || ownr_ln)) DESC\r\n LIMIT 5;\r\n$$ LANGUAGE sql STABLE;" + type: run_sql +- args: + name: search_owner + schema: public + type: track_function diff --git a/hasura/migrations/1582224710136_alter_table_public_joblines_add_column_status/down.yaml b/hasura/migrations/1582224710136_alter_table_public_joblines_add_column_status/down.yaml new file mode 100644 index 000000000..2c4cd87c3 --- /dev/null +++ b/hasura/migrations/1582224710136_alter_table_public_joblines_add_column_status/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" DROP COLUMN "status"; + type: run_sql diff --git a/hasura/migrations/1582224710136_alter_table_public_joblines_add_column_status/up.yaml b/hasura/migrations/1582224710136_alter_table_public_joblines_add_column_status/up.yaml new file mode 100644 index 000000000..428023a4c --- /dev/null +++ b/hasura/migrations/1582224710136_alter_table_public_joblines_add_column_status/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."joblines" ADD COLUMN "status" text NULL; + type: run_sql diff --git a/hasura/migrations/1582224725146_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1582224725146_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..3d0722715 --- /dev/null +++ b/hasura/migrations/1582224725146_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,75 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + - glass_flag + - price_inc + - alt_part_i + - price_j + - cert_part + - alt_co_id + - alt_overrd + - alt_partm + - prt_dsmk_p + - prt_dsmk_m + - lbr_inc + - lbr_hrs_j + - lbr_typ_j + - lbr_op_j + - paint_stg + - paint_tone + - lbr_tax + - misc_amt + - misc_sublt + - misc_tax + - bett_type + - bett_pctg + - bett_amt + - bett_tax + - op_code_desc + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582224725146_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1582224725146_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..df8b59464 --- /dev/null +++ b/hasura/migrations/1582224725146_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,76 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - unq_seq + - line_ind + - line_desc + - part_type + - oem_partno + - est_seq + - db_ref + - line_ref + - tax_part + - db_price + - act_price + - part_qty + - alt_partno + - mod_lbr_ty + - db_hrs + - mod_lb_hrs + - lbr_op + - lbr_amt + - glass_flag + - price_inc + - alt_part_i + - price_j + - cert_part + - alt_co_id + - alt_overrd + - alt_partm + - prt_dsmk_p + - prt_dsmk_m + - lbr_inc + - lbr_hrs_j + - lbr_typ_j + - lbr_op_j + - paint_stg + - paint_tone + - lbr_tax + - misc_amt + - misc_sublt + - misc_tax + - bett_type + - bett_pctg + - bett_amt + - bett_tax + - op_code_desc + - status + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582224730652_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1582224730652_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..32c4e42a2 --- /dev/null +++ b/hasura/migrations/1582224730652_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,73 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - op_code_desc + - part_type + - created_at + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582224730652_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1582224730652_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..c639e07f8 --- /dev/null +++ b/hasura/migrations/1582224730652_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,74 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - op_code_desc + - part_type + - status + - created_at + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: joblines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582224737046_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1582224737046_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..befcc2bb7 --- /dev/null +++ b/hasura/migrations/1582224737046_update_permission_user_public_table_joblines/down.yaml @@ -0,0 +1,75 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - op_code_desc + - part_type + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582224737046_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1582224737046_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..a04baffe3 --- /dev/null +++ b/hasura/migrations/1582224737046_update_permission_user_public_table_joblines/up.yaml @@ -0,0 +1,76 @@ +- args: + role: user + table: + name: joblines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - alt_overrd + - alt_part_i + - bett_tax + - cert_part + - glass_flag + - lbr_hrs_j + - lbr_inc + - lbr_op_j + - lbr_tax + - lbr_typ_j + - misc_sublt + - misc_tax + - price_inc + - price_j + - tax_part + - est_seq + - paint_stg + - paint_tone + - part_qty + - unq_seq + - act_price + - bett_amt + - bett_pctg + - db_hrs + - db_price + - lbr_amt + - line_ref + - misc_amt + - mod_lb_hrs + - prt_dsmk_m + - prt_dsmk_p + - alt_co_id + - alt_partm + - alt_partno + - bett_type + - db_ref + - lbr_op + - line_desc + - line_ind + - mod_lbr_ty + - oem_partno + - op_code_desc + - part_type + - status + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: joblines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582587971597_create_table_public_invoices/down.yaml b/hasura/migrations/1582587971597_create_table_public_invoices/down.yaml new file mode 100644 index 000000000..78d023a7a --- /dev/null +++ b/hasura/migrations/1582587971597_create_table_public_invoices/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."invoices"; + type: run_sql diff --git a/hasura/migrations/1582587971597_create_table_public_invoices/up.yaml b/hasura/migrations/1582587971597_create_table_public_invoices/up.yaml new file mode 100644 index 000000000..55008cf33 --- /dev/null +++ b/hasura/migrations/1582587971597_create_table_public_invoices/up.yaml @@ -0,0 +1,28 @@ +- args: + cascade: false + read_only: false + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + cascade: false + read_only: false + sql: "CREATE TABLE \"public\".\"invoices\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"vendorid\" uuid NOT NULL, \"jobid\" uuid NOT NULL, + \"date\" date NOT NULL DEFAULT now(), \"due_date\" date, \"exported\" boolean + NOT NULL DEFAULT false, \"exported_at\" timestamptz, \"is_credit_memo\" boolean + NOT NULL DEFAULT false, \"total\" numeric NOT NULL DEFAULT 0, \"invoice_number\" + text NOT NULL, PRIMARY KEY (\"id\") , FOREIGN KEY (\"jobid\") REFERENCES \"public\".\"jobs\"(\"id\") + ON UPDATE restrict ON DELETE cascade, FOREIGN KEY (\"vendorid\") REFERENCES + \"public\".\"vendors\"(\"id\") ON UPDATE restrict ON DELETE restrict, UNIQUE + (\"jobid\"));\nCREATE OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_invoices_updated_at\"\nBEFORE + UPDATE ON \"public\".\"invoices\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_invoices_updated_at\" ON \"public\".\"invoices\" \nIS + 'trigger to set value of column \"updated_at\" to current timestamp on row update';" + type: run_sql +- args: + name: invoices + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1582587989233_track_all_relationships/down.yaml b/hasura/migrations/1582587989233_track_all_relationships/down.yaml new file mode 100644 index 000000000..3c27d1b54 --- /dev/null +++ b/hasura/migrations/1582587989233_track_all_relationships/down.yaml @@ -0,0 +1,24 @@ +- args: + relationship: job + table: + name: invoices + schema: public + type: drop_relationship +- args: + relationship: vendor + table: + name: invoices + schema: public + type: drop_relationship +- args: + relationship: invoice + table: + name: jobs + schema: public + type: drop_relationship +- args: + relationship: invoices + table: + name: vendors + schema: public + type: drop_relationship diff --git a/hasura/migrations/1582587989233_track_all_relationships/up.yaml b/hasura/migrations/1582587989233_track_all_relationships/up.yaml new file mode 100644 index 000000000..266395edb --- /dev/null +++ b/hasura/migrations/1582587989233_track_all_relationships/up.yaml @@ -0,0 +1,41 @@ +- args: + name: job + table: + name: invoices + schema: public + using: + foreign_key_constraint_on: jobid + type: create_object_relationship +- args: + name: vendor + table: + name: invoices + schema: public + using: + foreign_key_constraint_on: vendorid + type: create_object_relationship +- args: + name: invoice + table: + name: jobs + schema: public + using: + manual_configuration: + column_mapping: + id: jobid + remote_table: + name: invoices + schema: public + type: create_object_relationship +- args: + name: invoices + table: + name: vendors + schema: public + using: + foreign_key_constraint_on: + column: vendorid + table: + name: invoices + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1582588052326_update_permission_user_public_table_invoices/down.yaml b/hasura/migrations/1582588052326_update_permission_user_public_table_invoices/down.yaml new file mode 100644 index 000000000..dadeb8ce0 --- /dev/null +++ b/hasura/migrations/1582588052326_update_permission_user_public_table_invoices/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: invoices + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1582588052326_update_permission_user_public_table_invoices/up.yaml b/hasura/migrations/1582588052326_update_permission_user_public_table_invoices/up.yaml new file mode 100644 index 000000000..33a70c629 --- /dev/null +++ b/hasura/migrations/1582588052326_update_permission_user_public_table_invoices/up.yaml @@ -0,0 +1,35 @@ +- args: + permission: + allow_upsert: true + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - vendorid + - jobid + - date + - due_date + - exported + - exported_at + - is_credit_memo + - total + - invoice_number + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoices + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582588061657_update_permission_user_public_table_invoices/down.yaml b/hasura/migrations/1582588061657_update_permission_user_public_table_invoices/down.yaml new file mode 100644 index 000000000..9ce2f6b37 --- /dev/null +++ b/hasura/migrations/1582588061657_update_permission_user_public_table_invoices/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: invoices + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1582588061657_update_permission_user_public_table_invoices/up.yaml b/hasura/migrations/1582588061657_update_permission_user_public_table_invoices/up.yaml new file mode 100644 index 000000000..393b945c5 --- /dev/null +++ b/hasura/migrations/1582588061657_update_permission_user_public_table_invoices/up.yaml @@ -0,0 +1,33 @@ +- args: + permission: + allow_aggregations: false + columns: + - exported + - is_credit_memo + - date + - due_date + - total + - invoice_number + - created_at + - exported_at + - updated_at + - id + - jobid + - vendorid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: invoices + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582588071369_update_permission_user_public_table_invoices/down.yaml b/hasura/migrations/1582588071369_update_permission_user_public_table_invoices/down.yaml new file mode 100644 index 000000000..f221ea65f --- /dev/null +++ b/hasura/migrations/1582588071369_update_permission_user_public_table_invoices/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: invoices + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1582588071369_update_permission_user_public_table_invoices/up.yaml b/hasura/migrations/1582588071369_update_permission_user_public_table_invoices/up.yaml new file mode 100644 index 000000000..add508bd2 --- /dev/null +++ b/hasura/migrations/1582588071369_update_permission_user_public_table_invoices/up.yaml @@ -0,0 +1,34 @@ +- args: + permission: + columns: + - exported + - is_credit_memo + - date + - due_date + - total + - invoice_number + - created_at + - exported_at + - updated_at + - id + - jobid + - vendorid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoices + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582588465637_create_table_public_invoicelines/down.yaml b/hasura/migrations/1582588465637_create_table_public_invoicelines/down.yaml new file mode 100644 index 000000000..3c7b9280f --- /dev/null +++ b/hasura/migrations/1582588465637_create_table_public_invoicelines/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."invoicelines"; + type: run_sql diff --git a/hasura/migrations/1582588465637_create_table_public_invoicelines/up.yaml b/hasura/migrations/1582588465637_create_table_public_invoicelines/up.yaml new file mode 100644 index 000000000..cc2bed198 --- /dev/null +++ b/hasura/migrations/1582588465637_create_table_public_invoicelines/up.yaml @@ -0,0 +1,26 @@ +- args: + cascade: false + read_only: false + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + cascade: false + read_only: false + sql: "CREATE TABLE \"public\".\"invoicelines\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"invoiceid\" uuid NOT NULL, \"line_desc\" text, \"actual_price\" + numeric NOT NULL DEFAULT 0, \"actual_cost\" numeric NOT NULL DEFAULT 0, \"cost_center\" + text NOT NULL, \"estlindid\" uuid, PRIMARY KEY (\"id\") , FOREIGN KEY (\"invoiceid\") + REFERENCES \"public\".\"invoices\"(\"id\") ON UPDATE restrict ON DELETE cascade);\nCREATE + OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_invoicelines_updated_at\"\nBEFORE + UPDATE ON \"public\".\"invoicelines\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_invoicelines_updated_at\" ON \"public\".\"invoicelines\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: invoicelines + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1582588478430_track_all_relationships/down.yaml b/hasura/migrations/1582588478430_track_all_relationships/down.yaml new file mode 100644 index 000000000..b87036054 --- /dev/null +++ b/hasura/migrations/1582588478430_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: invoice + table: + name: invoicelines + schema: public + type: drop_relationship +- args: + relationship: invoicelines + table: + name: invoices + schema: public + type: drop_relationship diff --git a/hasura/migrations/1582588478430_track_all_relationships/up.yaml b/hasura/migrations/1582588478430_track_all_relationships/up.yaml new file mode 100644 index 000000000..c2420cefb --- /dev/null +++ b/hasura/migrations/1582588478430_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: invoice + table: + name: invoicelines + schema: public + using: + foreign_key_constraint_on: invoiceid + type: create_object_relationship +- args: + name: invoicelines + table: + name: invoices + schema: public + using: + foreign_key_constraint_on: + column: invoiceid + table: + name: invoicelines + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1582588520891_update_permission_user_public_table_invoicelines/down.yaml b/hasura/migrations/1582588520891_update_permission_user_public_table_invoicelines/down.yaml new file mode 100644 index 000000000..8c11bf4b6 --- /dev/null +++ b/hasura/migrations/1582588520891_update_permission_user_public_table_invoicelines/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1582588520891_update_permission_user_public_table_invoicelines/up.yaml b/hasura/migrations/1582588520891_update_permission_user_public_table_invoicelines/up.yaml new file mode 100644 index 000000000..e174b2077 --- /dev/null +++ b/hasura/migrations/1582588520891_update_permission_user_public_table_invoicelines/up.yaml @@ -0,0 +1,33 @@ +- args: + permission: + allow_upsert: true + check: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - invoiceid + - line_desc + - actual_price + - actual_cost + - cost_center + - estlindid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoicelines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1582588525612_update_permission_user_public_table_invoicelines/down.yaml b/hasura/migrations/1582588525612_update_permission_user_public_table_invoicelines/down.yaml new file mode 100644 index 000000000..cf0af8966 --- /dev/null +++ b/hasura/migrations/1582588525612_update_permission_user_public_table_invoicelines/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1582588525612_update_permission_user_public_table_invoicelines/up.yaml b/hasura/migrations/1582588525612_update_permission_user_public_table_invoicelines/up.yaml new file mode 100644 index 000000000..14f825a78 --- /dev/null +++ b/hasura/migrations/1582588525612_update_permission_user_public_table_invoicelines/up.yaml @@ -0,0 +1,31 @@ +- args: + permission: + allow_aggregations: false + columns: + - actual_cost + - actual_price + - cost_center + - line_desc + - created_at + - updated_at + - estlindid + - id + - invoiceid + computed_fields: [] + filter: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: invoicelines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1582588530315_update_permission_user_public_table_invoicelines/down.yaml b/hasura/migrations/1582588530315_update_permission_user_public_table_invoicelines/down.yaml new file mode 100644 index 000000000..5df677663 --- /dev/null +++ b/hasura/migrations/1582588530315_update_permission_user_public_table_invoicelines/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1582588530315_update_permission_user_public_table_invoicelines/up.yaml b/hasura/migrations/1582588530315_update_permission_user_public_table_invoicelines/up.yaml new file mode 100644 index 000000000..756147e8f --- /dev/null +++ b/hasura/migrations/1582588530315_update_permission_user_public_table_invoicelines/up.yaml @@ -0,0 +1,32 @@ +- args: + permission: + columns: + - actual_cost + - actual_price + - cost_center + - line_desc + - created_at + - updated_at + - estlindid + - id + - invoiceid + filter: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoicelines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1582588553560_update_permission_user_public_table_invoicelines/down.yaml b/hasura/migrations/1582588553560_update_permission_user_public_table_invoicelines/down.yaml new file mode 100644 index 000000000..f5bb498ae --- /dev/null +++ b/hasura/migrations/1582588553560_update_permission_user_public_table_invoicelines/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1582588553560_update_permission_user_public_table_invoicelines/up.yaml b/hasura/migrations/1582588553560_update_permission_user_public_table_invoicelines/up.yaml new file mode 100644 index 000000000..174807864 --- /dev/null +++ b/hasura/migrations/1582588553560_update_permission_user_public_table_invoicelines/up.yaml @@ -0,0 +1,18 @@ +- args: + permission: + filter: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: invoicelines + schema: public + type: create_delete_permission diff --git a/package.json b/package.json index b1de34629..0c7a238fa 100644 --- a/package.json +++ b/package.json @@ -17,19 +17,20 @@ }, "dependencies": { "apollo-cache-persist": "^0.1.1", - "aws-sdk": "^2.603.0", + "aws-sdk": "^2.613.0", "body-parser": "^1.18.3", "compression": "^1.7.4", "cors": "2.8.5", - "dotenv": "7.0.0", + "dotenv": "8.2.0", "express": "^4.16.4", "express-sslify": "^1.2.0", - "firebase-tools": "^7.9.0" + "firebase-tools": "^7.12.1", + "nodemailer": "^6.4.2" }, "devDependencies": { "concurrently": "^4.0.1", "eslint": "^6.7.2", "eslint-plugin-promise": "^4.2.1", - "hasura-cli": "^1.0.0-beta.10" + "hasura-cli": "^1.1.0" } } diff --git a/sendemail.js b/sendemail.js new file mode 100644 index 000000000..868c6b65b --- /dev/null +++ b/sendemail.js @@ -0,0 +1,45 @@ +var nodemailer = require("nodemailer"); +require("dotenv").config(); + +var transporter = nodemailer.createTransport({ + host: process.env.email_server, + port: 465, + secure: true, // upgrade later with STARTTLS + auth: { + user: process.env.email_api, + pass: process.env.email_secret + } +}); + +// verify connection configuration +transporter.verify(function(error, success) { + if (error) { + console.log(error); + } else { + console.log("[EMAIL] Succesfully connected to SMTP server."); + } +}); + +exports.sendEmail = (req, res) => { + if (process.env.NODE_ENV !== "production") { + console.log("[EMAIL] Incoming Message Body", req.body); + } + transporter.sendMail( + { + ...req.body, + from: { + name: req.body.from.name || "No Reply @ Bodyshop.app", + address: "noreply@bodyshop.app" + } + }, + function(error, info) { + if (error) { + console.log("[EMAIL] Email send failed. ", error); + res.json({ success: false, error: error }); + } else { + console.log("[EMAIL] Email sent: " + info.response); + res.json({ success: true, response: info.response }); + } + } + ); +}; diff --git a/server.js b/server.js index 7acc0a49d..258d70662 100644 --- a/server.js +++ b/server.js @@ -23,6 +23,8 @@ app.post("/sign_s3", s3upload.sign_s3); app.get("/sign_s3", s3upload.get_s3); app.post("/delete_s3", s3upload.delete_s3); +var sendEmail = require("./sendemail.js"); +app.post("/sendemail", sendEmail.sendEmail); // app.get("/test", function(req, res) { // res.json({ success: true }); // }); diff --git a/yarn.lock b/yarn.lock index ee298a6d4..6f36c5799 100644 --- a/yarn.lock +++ b/yarn.lock @@ -386,10 +386,10 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -aws-sdk@^2.603.0: - version "2.603.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.603.0.tgz#0920756d2666f4fcfa7233841ef35cd04da81348" - integrity sha512-+VlskUDLZLQDDlaVa0Tb02aEFEWcKkTfTew1SGYwce9hUrKcR33IX4e9kM6MyI7UeLQAl0v8dagTniP67UrTQw== +aws-sdk@^2.613.0: + version "2.613.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.613.0.tgz#f0d4c99f0df7ee8227d331dde19d5251b31a5da7" + integrity sha512-FYLaVtC/AlrcnjsPw1JhAsKd6yapr918Mk0jAcw3yFZp1sI2V0Um+2pmijLFsV+nNRxFlCVJRhhFWB5GK6yALA== dependencies: buffer "4.9.1" events "1.1.1" @@ -1092,10 +1092,10 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dotenv@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== dotenv@^6.1.0: version "6.2.0" @@ -1548,10 +1548,10 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -firebase-tools@^7.9.0: - version "7.9.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.9.0.tgz#32661980943f5ebbb2d82c126762c468ae0cff9c" - integrity sha512-dYxuFflaPAkic2KQyPJ6spox8KzlQRb4Xyk6oVDorBV0YmBIJ3VQhJYbwSZwwDlbCmiPiMXNBM26JUifp09Qfw== +firebase-tools@^7.12.1: + version "7.12.1" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.12.1.tgz#af78bbc446ae46d722938bd8009c351d52ec01f3" + integrity sha512-4cfHltsfUzKyt03OH9JUYrCPsq0OIZ9i54IzJRjJgs68NJDLrhUislBipw5Am0QgF8QDYpzz8wLTH56fNgmx8g== dependencies: "@google-cloud/pubsub" "^1.1.5" JSONStream "^1.2.1" @@ -1574,6 +1574,7 @@ firebase-tools@^7.9.0: fs-extra "^0.23.1" glob "^7.1.2" google-auto-auth "^0.7.2" + google-gax "~1.12.0" inquirer "~6.3.1" jsonschema "^1.0.2" jsonwebtoken "^8.2.1" @@ -1587,7 +1588,7 @@ firebase-tools@^7.9.0: portfinder "^1.0.23" progress "^2.0.3" request "^2.87.0" - semver "^5.0.3" + semver "^5.7.1" superstatic "^6.0.1" tar "^4.3.0" tcp-port-used "^1.0.1" @@ -1843,7 +1844,7 @@ google-auto-auth@^0.7.2: google-auth-library "^0.10.0" request "^2.79.0" -google-gax@^1.7.5: +google-gax@^1.7.5, google-gax@~1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.12.0.tgz#f926f7e6abda245db38ecbebbbf58daaf3a8f687" integrity sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg== @@ -1949,10 +1950,10 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -hasura-cli@^1.0.0-beta.10: - version "1.0.0-rc.1" - resolved "https://registry.yarnpkg.com/hasura-cli/-/hasura-cli-1.0.0-rc.1.tgz#481453f88e7624f468f329c75a88fbbde3407f00" - integrity sha512-w6DGAhJZ6l7U89SD6QIxYetP3/dDxJc4jEVzjMAYsueeYWQKDeGgtZBFBW1sdgAlUtRmtIa5wbiFLXuagB6JqA== +hasura-cli@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hasura-cli/-/hasura-cli-1.1.0.tgz#a095e94c654d30354d8979602b8c0047c7b8a9e1" + integrity sha512-D1qXoYydx9Mgq7VQdCmOOvTlYhd1RcjQtn4s7pN1wb5w1ORIcDFLm1rS3w97bsx7wPRotIl0reyhc3+FDq+FFg== dependencies: axios "^0.19.0" chalk "^2.4.2" @@ -2871,6 +2872,11 @@ node-forge@^0.9.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== +nodemailer@^6.4.2: + version "6.4.2" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.2.tgz#7147550e32cdc37453380ab78d2074533966090a" + integrity sha512-g0n4nH1ONGvqYo1v72uSWvF/MRNnnq1LzmSzXb/6EPF3LFb51akOhgG3K2+aETAsJx90/Q5eFNTntu4vBCwyQQ== + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -3508,7 +3514,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==