diff --git a/.ebextensions/00_cleanup.config b/.ebextensions/00_cleanup.config new file mode 100644 index 000000000..ede6b116b --- /dev/null +++ b/.ebextensions/00_cleanup.config @@ -0,0 +1,5 @@ +commands: + 10_cleanup: + command: | + sudo rm -f /opt/elasticbeanstalk/hooks/configdeploy/post/* + sudo rm -f /etc/nginx/conf.d/* \ No newline at end of file diff --git a/.ebextensions/01_setup.config b/.ebextensions/01_setup.config new file mode 100644 index 000000000..e3214f8fe --- /dev/null +++ b/.ebextensions/01_setup.config @@ -0,0 +1,13 @@ +Resources: + sslSecurityGroupIngress: + Type: AWS::EC2::SecurityGroupIngress + Properties: + GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} + IpProtocol: tcp + ToPort: 443 + FromPort: 443 + CidrIp: 0.0.0.0/0 + +packages: + yum: + epel-release: [] \ No newline at end of file diff --git a/.ebextensions/02_nginx.config b/.ebextensions/02_nginx.config new file mode 100644 index 000000000..b93ea16e5 --- /dev/null +++ b/.ebextensions/02_nginx.config @@ -0,0 +1,105 @@ +files: + "/etc/nginx/nginx.pre": + mode: "000644" + owner: root + group: root + content: | + user nginx; + worker_processes auto; + error_log /var/log/nginx/error.log; + pid /var/run/nginx.pid; + + events { + worker_connections 1024; + } + + http { + port_in_redirect off; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + log_format healthd '$msec"$uri"$status"$request_time"$upstream_response_time"$http_x_forwarded_for'; + + access_log /var/log/nginx/access.log main; + sendfile on; + keepalive_timeout 65; + + include /etc/nginx/mime.types; + include /etc/nginx/conf.d/*.conf; + } + + "/etc/nginx/conf.d/http_custom.conf": + mode: "000644" + owner: root + group: root + content: | + server { + listen 8080; + + location ~ /.well-known/ { + root /var/www/letsencrypt/; + } + + location / { + return 301 https://$host$request_uri; + } + } + + "/etc/nginx/conf.d/https_custom.pre": + mode: "000644" + owner: root + group: root + content: | + upstream nodejs { + server 127.0.0.1:5000; + keepalive 256; + } + server { + listen 443 ssl default; + server_name localhost; + error_page 497 https://$host$request_uri; + + if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { + set $year $1; + set $month $2; + set $day $3; + set $hour $4; + } + + access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; + access_log /var/log/nginx/access.log main; + + location / { + proxy_pass http://nodejs; + proxy_set_header Connection ""; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + gzip on; + gzip_comp_level 4; + gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; + + ssl_certificate /etc/letsencrypt/live/ebcert/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/ebcert/privkey.pem; + ssl_session_timeout 5m; + ssl_protocols TLSv1.1 TLSv1.2; + ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; + ssl_prefer_server_ciphers on; + + if ($host ~* ^www\.(.*)) { + set $host_without_www $1; + rewrite ^(.*) https://$host_without_www$1 permanent; + } + + if ($ssl_protocol = "") { + rewrite ^ https://$host$request_uri? permanent; + } + } \ No newline at end of file diff --git a/.ebextensions/03_container_commands.config b/.ebextensions/03_container_commands.config new file mode 100644 index 000000000..ef2b69451 --- /dev/null +++ b/.ebextensions/03_container_commands.config @@ -0,0 +1,45 @@ +container_commands: + 10_setup_nginx: + command: | + sudo rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf + sudo rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf + + sudo rm -f /tmp/deployment/config/#etc#nginx#nginx.conf + sudo rm -f /etc/nginx/nginx.conf + + sudo mv /etc/nginx/nginx.pre /etc/nginx/nginx.conf + + sudo service nginx stop + sudo service nginx start + 20_install_certbot: + command: | + wget https://dl.eff.org/certbot-auto + mv certbot-auto /usr/local/bin/certbot-auto + chown root /usr/local/bin/certbot-auto + chmod 0755 /usr/local/bin/certbot-auto + 30_create_webroot_path: + command: | + sudo rm -rf /var/www/letsencrypt/ + sudo mkdir /var/www/letsencrypt/ + 40_configure_cert: + command: | + certbot_command="/usr/local/bin/certbot-auto certonly --webroot --webroot-path /var/www/letsencrypt --debug --non-interactive --email ${LETSENCRYPT_EMAIL} --agree-tos --expand --keep-until-expiring" + for domain in $(echo ${LETSENCRYPT_DOMAIN} | sed "s/,/ /g") + do + certbot_command="$certbot_command --domains $domain" + done + eval $certbot_command + 50_link_cert: + command: | + domain="$( cut -d ',' -f 1 <<< "${LETSENCRYPT_DOMAIN}" )"; + if [ -d /etc/letsencrypt/live ]; then + domain_folder_name="$(ls /etc/letsencrypt/live | sort -n | grep $domain | head -1)"; + if [ -d /etc/letsencrypt/live/${domain_folder_name} ]; then + ln -sfn /etc/letsencrypt/live/${domain_folder_name} /etc/letsencrypt/live/ebcert + fi + fi + 60_enable_https_config: + command: | + sudo mv /etc/nginx/conf.d/https_custom.pre /etc/nginx/conf.d/https_custom.conf + sudo service nginx stop + sudo service nginx start \ No newline at end of file diff --git a/.ebextensions/04_configdeploy_post_hooks.config b/.ebextensions/04_configdeploy_post_hooks.config new file mode 100644 index 000000000..1574f6ee3 --- /dev/null +++ b/.ebextensions/04_configdeploy_post_hooks.config @@ -0,0 +1,11 @@ +files: + # Elastic Beanstalk recreates the default configuration during every configuration deployment + "/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh": + mode: "000755" + owner: root + group: root + content: | + #!/bin/bash -xe + rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf + service nginx stop + service nginx start \ No newline at end of file diff --git a/.ebextensions/05_cron.config b/.ebextensions/05_cron.config new file mode 100644 index 000000000..1c049b8ed --- /dev/null +++ b/.ebextensions/05_cron.config @@ -0,0 +1,8 @@ +files: + # Cron to renew cert + "/etc/cron.d/certbot_renew": + mode: "000644" + owner: root + group: root + content: | + @weekly root /usr/local/bin/certbot-auto renew \ No newline at end of file diff --git a/.elasticbeanstalk/config.yml b/.elasticbeanstalk/config.yml new file mode 100644 index 000000000..1359694b7 --- /dev/null +++ b/.elasticbeanstalk/config.yml @@ -0,0 +1,9 @@ +branch-defaults: + master: + environment: Bodyshop-prod +global: + application_name: bodyshop + default_ec2_keyname: e-yqpq3yupbk + default_platform: Node.js running on 64bit Amazon Linux/4.14.1 + default_region: ca-central-1 + sc: git \ No newline at end of file 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/AuditTriggerFunctions.sql b/_reference/AuditTriggerFunctions.sql new file mode 100644 index 000000000..639c06e42 --- /dev/null +++ b/_reference/AuditTriggerFunctions.sql @@ -0,0 +1,92 @@ + + +CREATE SCHEMA audit; + +CREATE TABLE audit_trail ( + + id serial PRIMARY KEY, + + tstamp timestamp DEFAULT now(), + + schemaname text, + + tabname text, + + operation text, + recordid uuid, + + -- who text DEFAULT current_user, + + new_val json, + + old_val json, + useremail text, + bodyshopid uuid + +); + +-- More as an example than anything else, I wanted a function that would take two JSONB objects in PostgreSQL, and return how the left-hand side differs from the right-hand side. This means any key that is in the left but not in the right would be returned, along with any key whose value on the left is different from the right. + +-- Here’s a quick example of how to do this in a single SELECT. In real life, you probably want more error checking, but it shows how nice the built-in primitives are: +CREATE OR REPLACE FUNCTION json_diff(l JSONB, r JSONB) RETURNS JSONB AS +$json_diff$ + SELECT jsonb_object_agg(a.key, a.value) FROM + ( SELECT key, value FROM jsonb_each(l) ) a LEFT OUTER JOIN + ( SELECT key, value FROM jsonb_each(r) ) b ON a.key = b.key + WHERE a.value != b.value OR b.key IS NULL; +$json_diff$ + LANGUAGE sql; + + +CREATE OR REPLACE FUNCTION audit_trigger() RETURNS trigger AS $$ + + DECLARE + shopid text ; + email text; + + BEGIN + + select b.id, u.email INTO shopid, email from users u join associations a on u.email = a.useremail join bodyshops b on b.id = a.shopid where u.authid = current_setting('hasura.user', 't')::jsonb->>'x-hasura-user-id' and a.active = true; + + IF TG_OP = 'INSERT' + + THEN + + INSERT INTO public.audit_trail (tabname, schemaname, operation, new_val, recordid, bodyshopid, useremail) + + VALUES (TG_RELNAME, TG_TABLE_SCHEMA, TG_OP, row_to_json(NEW), NEW.id, shopid, email); + + RETURN NEW; + + ELSIF TG_OP = 'UPDATE' + + THEN + + INSERT INTO public.audit_trail (tabname, schemaname, operation, old_val, new_val, recordid, bodyshopid, useremail) + + VALUES (TG_RELNAME, TG_TABLE_SCHEMA, TG_OP, + + json_diff(to_jsonb(OLD), to_jsonb(NEW)) , json_diff(to_jsonb(NEW), to_jsonb(OLD)), OLD.id, shopid, email); + + RETURN NEW; + + ELSIF TG_OP = 'DELETE' + + THEN + + INSERT INTO public.audit_trail (tabname, schemaname, operation, old_val, recordid, bodyshopid, useremail) + + VALUES (TG_RELNAME, TG_TABLE_SCHEMA, TG_OP, row_to_json(OLD), OLD.ID, shopid, email); + + RETURN OLD; + + END IF; + + END; + +$$ LANGUAGE 'plpgsql' SECURITY DEFINER; + + + +CREATE TRIGGER audit_trigger_users AFTER INSERT OR UPDATE OR DELETE ON users + FOR EACH ROW EXECUTE PROCEDURE audit_trigger(); \ No newline at end of file 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/apollo.config.js b/apollo.config.js deleted file mode 100644 index e949522fb..000000000 --- a/apollo.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - client: { - service: { - name: "Dev", - url: "https://bodyshop-dev-db.herokuapp.com/v1/graphql", - headers: { - "x-hasura-admin-secret": "Dev-BodyShopAppBySnaptSoftware!" - } - } - } -}; diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 319a8d546..47baf336f 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..60f72bb3c --- /dev/null +++ b/client/src/components/_test/test.component.jsx @@ -0,0 +1,150 @@ +import { Editor } from "@tinymce/tinymce-react"; +import axios from "axios"; +import React, { useState } from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { EmailSettings } from "../../emails/constants"; +import { + endLoading, + startLoading, +} from "../../redux/application/application.actions"; +import { setEmailOptions } from "../../redux/email/email.actions"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + setEmailOptions: (e) => dispatch(setEmailOptions(e)), + load: () => dispatch(startLoading()), + endload: () => dispatch(endLoading()), +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function Test({ setEmailOptions, load, endload, bodyshop }) { + const [state, setState] = useState(temp); + + const handleEditorChange = (content, editor) => { + setState(content); + }; + + return ( +
+ + + + + +
+ ); +}); + +const temp = `
+

This is a full-featured editor demo. Please explore! ←

+

 

+

TinyMCE is the world's most customizable, and flexible, rich text editor.

+

A featherweight download, TinyMCE can handle any challenge you throw at it.

+

 

+

 

+ + + + + + + + + + + + + + + + + + + + + +
🛠 50+ Plugins💡 Premium Support🖍 Custom Skins⚙ Full API Access
{{#each people}}
{{this}}{{this}}{{this}}{{this}}
{{/each}}
+
`; diff --git a/client/src/components/alert/__snapshots__/alert.component.test.js.snap b/client/src/components/alert/__snapshots__/alert.component.test.js.snap new file mode 100644 index 000000000..b872ff7b9 --- /dev/null +++ b/client/src/components/alert/__snapshots__/alert.component.test.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Alert component should render Alert component 1`] = `ShallowWrapper {}`; diff --git a/client/src/components/alert/alert.component.test.js b/client/src/components/alert/alert.component.test.js index 4e850158f..74e75f337 100644 --- a/client/src/components/alert/alert.component.test.js +++ b/client/src/components/alert/alert.component.test.js @@ -2,10 +2,22 @@ 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(); +describe("Alert component", () => { + let wrapper; + beforeEach(() => { + const mockProps = { + type: "error", + message: "Test error message." + }; + + wrapper = shallow(); + }); + + it("should render Alert component", () => { + expect(wrapper).toMatchSnapshot(); + }); }); diff --git a/client/src/components/allocations-assignment/__snapshots__/allocations-assignment.component.test.js.snap b/client/src/components/allocations-assignment/__snapshots__/allocations-assignment.component.test.js.snap new file mode 100644 index 000000000..c0b9ed61d --- /dev/null +++ b/client/src/components/allocations-assignment/__snapshots__/allocations-assignment.component.test.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AllocationsAssignmentComponent component should create an allocation on save 1`] = `ReactWrapper {}`; + +exports[`AllocationsAssignmentComponent component should render AllocationsAssignmentComponent component 1`] = `ReactWrapper {}`; 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..bc6273bdb --- /dev/null +++ b/client/src/components/allocations-assignment/allocations-assignment.component.jsx @@ -0,0 +1,72 @@ +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 function AllocationsAssignmentComponent({ + bodyshop, + handleAssignment, + assignment, + setAssignment, + visibilityState, + maxHours +}) { + const { t } = useTranslation(); + + const onChange = e => { + setAssignment({ ...assignment, employeeid: e }); + }; + + const [visibility, setVisibility] = visibilityState; + + const popContent = ( +
+ + setAssignment({ ...assignment, hours: e })} + /> + + + +
+ ); + + return ( + + + + ); +} + +export default connect(mapStateToProps, null)(AllocationsAssignmentComponent); 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..abb5aa466 --- /dev/null +++ b/client/src/components/allocations-assignment/allocations-assignment.component.test.js @@ -0,0 +1,38 @@ +import { mount, shallow } from "enzyme"; +import React from "react"; +import { AllocationsAssignmentComponent } from "./allocations-assignment.component"; +import { MockBodyshop } from "../../utils/TestingHelpers"; +import { Select } from "antd"; +const div = document.createElement("div"); + +describe("AllocationsAssignmentComponent component", () => { + let wrapper; + + beforeEach(() => { + const mockProps = { + bodyshop: MockBodyshop, + handleAssignment: jest.fn(), + assignment: {}, + setAssignment: jest.fn(), + visibilityState: [false, jest.fn()], + maxHours: 4 + }; + + wrapper = mount(); + }); + + it("should render AllocationsAssignmentComponent component", () => { + expect(wrapper).toMatchSnapshot(); + }); + + it("should render a list of employees", () => { + const empList = wrapper.find("#employeeSelector"); + console.log(empList.debug()); + expect(empList.children()).to.have.lengthOf(2); + }); + + it("should create an allocation on save", () => { + wrapper.find("Button").simulate("click"); + expect(wrapper).toMatchSnapshot(); + }); +}); 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..6d81feca0 --- /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 "@apollo/react-hooks"; +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-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..58426c5ec --- /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 "@apollo/react-hooks"; +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..427c2a2b9 --- /dev/null +++ b/client/src/components/allocations-employee-label/allocations-employee-label.component.jsx @@ -0,0 +1,19 @@ +import Icon from "@ant-design/icons"; +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..d581f76a6 --- /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 "@apollo/react-hooks"; +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/audit-trail-list/audit-trail-list.component.jsx b/client/src/components/audit-trail-list/audit-trail-list.component.jsx new file mode 100644 index 000000000..c897a18db --- /dev/null +++ b/client/src/components/audit-trail-list/audit-trail-list.component.jsx @@ -0,0 +1,85 @@ +import React, { useState } from "react"; +import { Table } from "antd"; +import { alphaSort } from "../../utils/sorters"; +import { DateTimeFormatter } from "../../utils/DateFormatter"; +import { useTranslation } from "react-i18next"; +import AuditTrailValuesComponent from "../audit-trail-values/audit-trail-values.component"; + +export default function AuditTrailListComponent({ loading, data }) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: {} + }); + const { t } = useTranslation(); + const columns = [ + { + title: t("audit.fields.created"), + dataIndex: " created", + key: " created", + width: "10%", + render: (text, record) => ( + {record.created} + ), + sorter: (a, b) => a.created - b.created, + sortOrder: + state.sortedInfo.columnKey === "created" && state.sortedInfo.order + }, + { + title: t("audit.fields.operation"), + dataIndex: "operation", + key: "operation", + width: "10%", + sorter: (a, b) => alphaSort(a.operation, b.operation), + sortOrder: + state.sortedInfo.columnKey === "operation" && state.sortedInfo.order + }, + { + title: t("audit.fields.values"), + dataIndex: " old_val", + key: " old_val", + width: "10%", + render: (text, record) => ( + + ) + }, + { + title: t("audit.fields.useremail"), + dataIndex: "useremail", + key: "useremail", + width: "10%", + sorter: (a, b) => alphaSort(a.useremail, b.useremail), + sortOrder: + state.sortedInfo.columnKey === "useremail" && state.sortedInfo.order + } + ]; + + const formItemLayout = { + labelCol: { + xs: { span: 12 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 12 } + } + }; + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + return ( + ({ ...item }))} + rowKey="id" + dataSource={data} + onChange={handleTableChange} + /> + ); +} diff --git a/client/src/components/audit-trail-list/audit-trail-list.container.jsx b/client/src/components/audit-trail-list/audit-trail-list.container.jsx new file mode 100644 index 000000000..e80559f2a --- /dev/null +++ b/client/src/components/audit-trail-list/audit-trail-list.container.jsx @@ -0,0 +1,24 @@ +import React from "react"; +import AuditTrailListComponent from "./audit-trail-list.component"; +import { useQuery } from "@apollo/react-hooks"; +import { QUERY_AUDIT_TRAIL } from "../../graphql/audit_trail.queries"; +import AlertComponent from "../alert/alert.component"; + +export default function AuditTrailListContainer({ recordId }) { + const { loading, error, data } = useQuery(QUERY_AUDIT_TRAIL, { + variables: { id: recordId }, + fetchPolicy: "network-only" + }); + return ( +
+ {error ? ( + + ) : ( + + )} +
+ ); +} diff --git a/client/src/components/audit-trail-values/audit-trail-values.component.jsx b/client/src/components/audit-trail-values/audit-trail-values.component.jsx new file mode 100644 index 000000000..d9a9854eb --- /dev/null +++ b/client/src/components/audit-trail-values/audit-trail-values.component.jsx @@ -0,0 +1,29 @@ +import React from "react"; +import { List } from "antd"; +import Icon from "@ant-design/icons"; +import { FaArrowRight } from "react-icons/fa"; +export default function AuditTrailValuesComponent({ oldV, newV }) { + if (!oldV && !newV) return
; + + if (!oldV && newV) + return ( + + {Object.keys(newV).map((key, idx) => ( + + {key}: {JSON.stringify(newV[key])} + + ))} + + ); + + return ( + + {Object.keys(oldV).map((key, idx) => ( + + {key}: {oldV[key]} + {JSON.stringify(newV[key])} + + ))} + + ); +} 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/breadcrumbs/breadcrumbs.component.jsx b/client/src/components/breadcrumbs/breadcrumbs.component.jsx new file mode 100644 index 000000000..62ebb2b5a --- /dev/null +++ b/client/src/components/breadcrumbs/breadcrumbs.component.jsx @@ -0,0 +1,28 @@ +import React from "react"; +import { Breadcrumb } from "antd"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBreadcrumbs } from "../../redux/application/application.selectors"; +import { Link } from "react-router-dom"; + +const mapStateToProps = createStructuredSelector({ + breadcrumbs: selectBreadcrumbs, +}); + +export function BreadCrumbs({ breadcrumbs }) { + return ( + + Home + {breadcrumbs.map((item) => + item.link ? ( + + {item.label} + + ) : ( + {item.label} + ) + )} + + ); +} +export default connect(mapStateToProps, null)(BreadCrumbs); diff --git a/client/src/components/chat-conversation-list/chat-conversation-list.component.jsx b/client/src/components/chat-conversation-list/chat-conversation-list.component.jsx new file mode 100644 index 000000000..5b76a552f --- /dev/null +++ b/client/src/components/chat-conversation-list/chat-conversation-list.component.jsx @@ -0,0 +1,41 @@ +import { ShrinkOutlined } from "@ant-design/icons"; +import { Badge } from "antd"; +import React from "react"; +import { connect } from "react-redux"; +import { + openConversation, + toggleChatVisible +} from "../../redux/messaging/messaging.actions"; +import PhoneNumberFormatter from "../../utils/PhoneFormatter"; + +const mapDispatchToProps = dispatch => ({ + toggleChatVisible: () => dispatch(toggleChatVisible()), + openConversation: number => dispatch(openConversation(number)) +}); + +export function ChatConversationListComponent({ + toggleChatVisible, + conversationList, + openConversation +}) { + return ( +
+ toggleChatVisible()} /> + {conversationList.map(item => ( + +
+ openConversation({ phone_num: item.phone_num, id: item.id }) + }> +
+ {item.phone_num} +
+
+
+ ))} +
+ ); +} +export default connect(null, mapDispatchToProps)(ChatConversationListComponent); diff --git a/client/src/components/chat-conversation/chat-conversation.closed.component.jsx b/client/src/components/chat-conversation/chat-conversation.closed.component.jsx new file mode 100644 index 000000000..ea6ccce1b --- /dev/null +++ b/client/src/components/chat-conversation/chat-conversation.closed.component.jsx @@ -0,0 +1,38 @@ +import { CloseCircleFilled } from "@ant-design/icons"; +import React from "react"; +import { connect } from "react-redux"; +import { + closeConversation, + sendMessage, + toggleConversationVisible +} from "../../redux/messaging/messaging.actions"; +import PhoneFormatter from "../../utils/PhoneFormatter"; + +const mapDispatchToProps = dispatch => ({ + toggleConversationVisible: conversationId => + dispatch(toggleConversationVisible(conversationId)), + closeConversation: phone => dispatch(closeConversation(phone)), + sendMessage: message => dispatch(sendMessage(message)) +}); + +function ChatConversationClosedComponent({ + conversation, + toggleConversationVisible, + closeConversation +}) { + return ( +
toggleConversationVisible(conversation.id)}> + {conversation.phone_num} + closeConversation(conversation.phone_num)} + /> +
+ ); +} + +export default connect( + null, + mapDispatchToProps +)(ChatConversationClosedComponent); 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..b017f6d19 --- /dev/null +++ b/client/src/components/chat-conversation/chat-conversation.component.jsx @@ -0,0 +1,29 @@ +import { Badge, Card } from "antd"; +import React from "react"; +import ChatConversationClosedComponent from "./chat-conversation.closed.component"; +import ChatConversationOpenComponent from "./chat-conversation.open.component"; + +export default function ChatConversationComponent({ + conversation, + messages, + subState, + unreadCount +}) { + return ( +
+ + + {conversation.open ? ( + + ) : ( + + )} + + +
+ ); +} 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..90d0ae032 --- /dev/null +++ b/client/src/components/chat-conversation/chat-conversation.container.jsx @@ -0,0 +1,34 @@ +import { useSubscription } from "@apollo/react-hooks"; +import React from "react"; +import { CONVERSATION_SUBSCRIPTION_BY_PK } from "../../graphql/conversations.queries"; +import ChatConversationComponent from "./chat-conversation.component"; + +export default function ChatConversationContainer({ conversation }) { + const { loading, error, data } = useSubscription( + CONVERSATION_SUBSCRIPTION_BY_PK, + { + variables: { conversationId: conversation.id } + } + ); + + return ( + + ); +} diff --git a/client/src/components/chat-conversation/chat-conversation.open.component.jsx b/client/src/components/chat-conversation/chat-conversation.open.component.jsx new file mode 100644 index 000000000..7296458a0 --- /dev/null +++ b/client/src/components/chat-conversation/chat-conversation.open.component.jsx @@ -0,0 +1,36 @@ +import React from "react"; +import { connect } from "react-redux"; +import { toggleConversationVisible } from "../../redux/messaging/messaging.actions"; +import AlertComponent from "../alert/alert.component"; +import ChatMessageListComponent from "../chat-messages-list/chat-message-list.component"; +import ChatSendMessage from "../chat-send-message/chat-send-message.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import { ShrinkOutlined } from "@ant-design/icons"; + +const mapDispatchToProps = dispatch => ({ + toggleConversationVisible: conversation => + dispatch(toggleConversationVisible(conversation)) +}); + +export function ChatConversationOpenComponent({ + conversation, + messages, + subState, + toggleConversationVisible +}) { + const [loading, error] = subState; + + if (loading) return ; + if (error) return ; + + return ( +
+ toggleConversationVisible(conversation.id)} + /> + + +
+ ); +} +export default connect(null, mapDispatchToProps)(ChatConversationOpenComponent); diff --git a/client/src/components/chat-dock/chat-dock.container.jsx b/client/src/components/chat-dock/chat-dock.container.jsx new file mode 100644 index 000000000..8357a149c --- /dev/null +++ b/client/src/components/chat-dock/chat-dock.container.jsx @@ -0,0 +1,32 @@ +import { Affix } from "antd"; +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectConversations } from "../../redux/messaging/messaging.selectors"; +import ChatConversationContainer from "../chat-conversation/chat-conversation.container"; +import ChatMessagesButtonContainer from "../chat-messages-button/chat-messages-button.container"; +import "./chat-dock.styles.scss"; + +const mapStateToProps = createStructuredSelector({ + activeConversations: selectConversations +}); + +export function ChatOverlayContainer({ activeConversations }) { + return ( + +
+ + {activeConversations + ? activeConversations.map(conversation => ( + + )) + : null} +
+
+ ); +} + +export default connect(mapStateToProps, null)(ChatOverlayContainer); diff --git a/client/src/components/chat-dock/chat-dock.styles.scss b/client/src/components/chat-dock/chat-dock.styles.scss new file mode 100644 index 000000000..97ab7395c --- /dev/null +++ b/client/src/components/chat-dock/chat-dock.styles.scss @@ -0,0 +1,188 @@ +.chat-dock { + z-index: 5; + //overflow-x: scroll; + // overflow-y: hidden; + width: 100%; + display: flex; + align-items: baseline; +} + +.chat-conversation { + margin: 2em 1em 0em 1em; +} + +.chat-conversation-open { + height: 500px; +} +// .chat-messages { +// height: 80%; +// overflow-x: hidden; +// overflow-y: scroll; +// flex-grow: 1; + +// ul { +// list-style: none; +// margin: 0; +// padding: 0; +// } + +// ul li { +// display: inline-block; +// clear: both; +// padding: 3px 10px; +// border-radius: 30px; +// margin-bottom: 2px; +// } + +// .inbound { +// background: #eee; +// float: left; +// } + +// .outbound { +// float: right; +// background: #0084ff; +// color: #fff; +// } + +// .inbound + .outbound { +// border-bottom-right-radius: 5px; +// } + +// .outbound + .outbound { +// border-top-right-radius: 5px; +// border-bottom-right-radius: 5px; +// } + +// .outbound:last-of-type { +// border-bottom-right-radius: 30px; +// } +// } + +.messages { + height: auto; + min-height: calc(100% - 10px); + 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; + 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-messages-button/chat-messages-button.component.jsx b/client/src/components/chat-messages-button/chat-messages-button.component.jsx new file mode 100644 index 000000000..8b95eb12b --- /dev/null +++ b/client/src/components/chat-messages-button/chat-messages-button.component.jsx @@ -0,0 +1,47 @@ +import { MessageFilled } from "@ant-design/icons"; +import { Badge, Card } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { toggleChatVisible } from "../../redux/messaging/messaging.actions"; +import { selectChatVisible } from "../../redux/messaging/messaging.selectors"; +import ChatConversationListComponent from "../chat-conversation-list/chat-conversation-list.component"; + +const mapStateToProps = createStructuredSelector({ + chatVisible: selectChatVisible +}); +const mapDispatchToProps = dispatch => ({ + toggleChatVisible: () => dispatch(toggleChatVisible()) +}); + +export function ChatWindowComponent({ + chatVisible, + toggleChatVisible, + conversationList, + unreadCount +}) { + const { t } = useTranslation(); + return ( +
+ + + {chatVisible ? ( + + ) : ( +
toggleChatVisible()}> + + {t("messaging.labels.messaging")} +
+ )} +
+
+
+ ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(ChatWindowComponent); diff --git a/client/src/components/chat-messages-button/chat-messages-button.container.jsx b/client/src/components/chat-messages-button/chat-messages-button.container.jsx new file mode 100644 index 000000000..a8f3ffe88 --- /dev/null +++ b/client/src/components/chat-messages-button/chat-messages-button.container.jsx @@ -0,0 +1,27 @@ +import { useSubscription } from "@apollo/react-hooks"; +import React from "react"; +import { CONVERSATION_LIST_SUBSCRIPTION } from "../../graphql/conversations.queries"; +import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import ChatMessagesButtonComponent from "./chat-messages-button.component"; + +export default function ChatMessagesButtonContainer() { + const { loading, error, data } = useSubscription( + CONVERSATION_LIST_SUBSCRIPTION + ); + if (loading) return ; + if (error) return ; + + return ( + { + return (acc = acc + val.messages_aggregate.aggregate.count); + }, 0)) || + 0 + } + /> + ); +} diff --git a/client/src/components/chat-messages-list/chat-message-list.component.jsx b/client/src/components/chat-messages-list/chat-message-list.component.jsx new file mode 100644 index 000000000..9e69d7af4 --- /dev/null +++ b/client/src/components/chat-messages-list/chat-message-list.component.jsx @@ -0,0 +1,44 @@ +import { CheckCircleOutlined, CheckOutlined } from "@ant-design/icons"; +import React, { useEffect, useRef } from "react"; + +export default function ChatMessageListComponent({ messages }) { + const messagesEndRef = useRef(null); + + const scrollToBottom = () => { + console.log("use"); + !!messagesEndRef.current && + messagesEndRef.current.scrollIntoView({ behavior: "smooth" }); + }; + + useEffect(scrollToBottom, [messages]); + const StatusRender = status => { + switch (status) { + case "sent": + return ; + case "delivered": + return ( + + ); + default: + return null; + } + }; + + return ( +
+
    + {messages.map(item => ( +
  • +

    + {item.text} + {StatusRender(item.status)} +

    +
  • + ))} +
  • +
+
+ ); +} 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..236be79ed --- /dev/null +++ b/client/src/components/chat-open-button/chat-open-button.component.jsx @@ -0,0 +1,22 @@ +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { openConversation } from "../../redux/messaging/messaging.actions"; +import { MessageFilled } from "@ant-design/icons"; +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-send-message/chat-send-message.component.jsx b/client/src/components/chat-send-message/chat-send-message.component.jsx new file mode 100644 index 000000000..940de722f --- /dev/null +++ b/client/src/components/chat-send-message/chat-send-message.component.jsx @@ -0,0 +1,69 @@ +import { Input, Spin } from "antd"; +import { LoadingOutlined } from "@ant-design/icons"; +import React, { useState, useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { sendMessage } from "../../redux/messaging/messaging.actions"; +import { selectBodyshop } from "../../redux/user/user.selectors"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); +const mapDispatchToProps = dispatch => ({ + sendMessage: message => dispatch(sendMessage(message)) +}); + +function ChatSendMessageComponent({ conversation, bodyshop, sendMessage }) { + const [message, setMessage] = useState(""); + + useEffect(() => { + if (conversation.isSending === false) { + setMessage(""); + } + }, [conversation, setMessage]); + const { t } = useTranslation(); + + const handleEnter = () => { + sendMessage({ + to: conversation.phone_num, + body: message, + messagingServiceSid: bodyshop.messagingservicesid, + conversationid: conversation.id + }); + }; + + return ( +
+ a} + autoSize={{ minRows: 1, maxRows: 4 }} + value={message} + disabled={conversation.isSending} + placeholder={t("messaging.labels.typeamessage")} + onChange={e => setMessage(e.target.value)} + onPressEnter={event => { + event.preventDefault(); + if (!!!event.shiftKey) handleEnter(); + }} + /> + + } + /> +
+ ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(ChatSendMessageComponent); 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/contract-cars/contract-cars.component.jsx b/client/src/components/contract-cars/contract-cars.component.jsx new file mode 100644 index 000000000..7b4d01041 --- /dev/null +++ b/client/src/components/contract-cars/contract-cars.component.jsx @@ -0,0 +1,119 @@ +import { Input, Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { alphaSort } from "../../utils/sorters"; + +export default function ContractsCarsComponent({ + loading, + data, + selectedCar, + handleSelect +}) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" }, + search: "" + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("courtesycars.fields.fleetnumber"), + dataIndex: "fleetnumber", + key: "fleetnumber", + sorter: (a, b) => alphaSort(a.fleetnumber, b.fleetnumber), + sortOrder: + state.sortedInfo.columnKey === "fleetnumber" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.status"), + dataIndex: "status", + key: "status", + sorter: (a, b) => alphaSort(a.status, b.status), + sortOrder: + state.sortedInfo.columnKey === "status" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.year"), + dataIndex: "year", + key: "year", + sorter: (a, b) => alphaSort(a.year, b.year), + sortOrder: state.sortedInfo.columnKey === "year" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.make"), + dataIndex: "make", + key: "make", + sorter: (a, b) => alphaSort(a.make, b.make), + sortOrder: state.sortedInfo.columnKey === "make" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.model"), + dataIndex: "model", + key: "model", + sorter: (a, b) => alphaSort(a.model, b.model), + sortOrder: + state.sortedInfo.columnKey === "model" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.plate"), + dataIndex: "plate", + key: "plate", + sorter: (a, b) => alphaSort(a.plate, b.plate), + sortOrder: + state.sortedInfo.columnKey === "plate" && state.sortedInfo.order + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + const filteredData = + state.search === "" + ? data + : data.filter( + cc => + (cc.fleetnumber || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (cc.status || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (cc.year || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (cc.make || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (cc.model || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (cc.plate || "").toLowerCase().includes(state.search.toLowerCase()) + ); + + return ( +
( + setState({ ...state, search: e.target.value })} + /> + )} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={filteredData} + onChange={handleTableChange} + rowSelection={{ + onSelect: handleSelect, + type: "radio", + selectedRowKeys: [selectedCar] + }} + /> + ); +} diff --git a/client/src/components/contract-cars/contract-cars.container.jsx b/client/src/components/contract-cars/contract-cars.container.jsx new file mode 100644 index 000000000..b9198eb6d --- /dev/null +++ b/client/src/components/contract-cars/contract-cars.container.jsx @@ -0,0 +1,29 @@ +import { useQuery } from "@apollo/react-hooks"; +import React from "react"; +import { QUERY_AVAILABLE_CC } from "../../graphql/courtesy-car.queries"; +import AlertComponent from "../alert/alert.component"; +import ContractCarsComponent from "./contract-cars.component"; + + + +export default function ContractCarsContainer({ selectedCarState, bodyshop }) { + const { loading, error, data } = useQuery(QUERY_AVAILABLE_CC); + + const [selectedCar, setSelectedCar] = selectedCarState; + + const handleSelect = record => { + setSelectedCar(record.id); + }; + + if (error) return ; + return ( +
+ +
+ ); +} diff --git a/client/src/components/contract-courtesy-car-block/contract-courtesy-car-block.component.jsx b/client/src/components/contract-courtesy-car-block/contract-courtesy-car-block.component.jsx new file mode 100644 index 000000000..a3738832c --- /dev/null +++ b/client/src/components/contract-courtesy-car-block/contract-courtesy-car-block.component.jsx @@ -0,0 +1,26 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Descriptions, Card } from "antd"; +import { Link } from "react-router-dom"; +export default function ContractCourtesyCarBlock({ courtesyCar }) { + const { t } = useTranslation(); + return ( + + + + + {(courtesyCar && courtesyCar.fleetnumber) || ""} + + + {(courtesyCar && courtesyCar.plate) || ""} + + + {`${(courtesyCar && courtesyCar.year) || ""} ${(courtesyCar && + courtesyCar.make) || + ""} ${(courtesyCar && courtesyCar.model) || ""}`} + + + + + ); +} diff --git a/client/src/components/contract-form/contract-form.component.jsx b/client/src/components/contract-form/contract-form.component.jsx new file mode 100644 index 000000000..6097abe93 --- /dev/null +++ b/client/src/components/contract-form/contract-form.component.jsx @@ -0,0 +1,264 @@ +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Form, Input, DatePicker, InputNumber, Button } from "antd"; +import aamva from "aamva"; +import InputPhone from "../form-items-formatted/phone-form-item.component"; +import ContractStatusSelector from "../contract-status-select/contract-status-select.component"; + +export default function ContractFormComponent() { + const [state, setState] = useState(""); + const { t } = useTranslation(); + return ( +
+
+ TEST AREA + setState(e.target.value)} /> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/client/src/components/contract-job-block/contract-job-block.component.jsx b/client/src/components/contract-job-block/contract-job-block.component.jsx new file mode 100644 index 000000000..075a75779 --- /dev/null +++ b/client/src/components/contract-job-block/contract-job-block.component.jsx @@ -0,0 +1,27 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Descriptions, Card } from "antd"; +import { Link } from "react-router-dom"; + +export default function ContractJobBlock({ job }) { + const { t } = useTranslation(); + return ( + + + + + {(job && job.ro_number) || ""} + + + {`${(job && job.v_model_yr) || ""} ${(job && job.v_make_desc) || + ""} ${(job && job.v_model_desc) || ""}`} + + + {`${(job && job.ownr_fn) || ""} ${(job && job.ownr_ln) || + ""} ${(job && job.ownr_co_nm) || ""}`} + + + + + ); +} diff --git a/client/src/components/contract-jobs/contract-jobs.component.jsx b/client/src/components/contract-jobs/contract-jobs.component.jsx new file mode 100644 index 000000000..1d970317c --- /dev/null +++ b/client/src/components/contract-jobs/contract-jobs.component.jsx @@ -0,0 +1,187 @@ +import { Table, Input } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { alphaSort } from "../../utils/sorters"; + +export default function ContractsJobsComponent({ + loading, + data, + selectedJob, + handleSelect +}) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" }, + search: "" + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("jobs.fields.ro_number"), + dataIndex: "ro_number", + key: "ro_number", + width: "8%", + 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, + + render: (text, record) => ( + + {record.ro_number ? record.ro_number : "EST-" + record.est_number} + + ) + }, + { + title: t("jobs.fields.owner"), + dataIndex: "owner", + key: "owner", + ellipsis: true, + sorter: (a, b) => alphaSort(a.ownr_ln, b.ownr_ln), + width: "25%", + sortOrder: + state.sortedInfo.columnKey === "owner" && state.sortedInfo.order, + render: (text, record) => { + return record.owner ? ( + + {record.ownr_fn} {record.ownr_ln} + + ) : ( + {`${record.ownr_fn} ${record.ownr_ln}`} + ); + } + }, + { + title: t("jobs.fields.status"), + dataIndex: "status", + key: "status", + width: "10%", + ellipsis: true, + sorter: (a, b) => alphaSort(a.status, b.status), + sortOrder: + state.sortedInfo.columnKey === "status" && state.sortedInfo.order, + 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.vehicleid ? ( + + {`${record.v_model_yr || ""} ${record.v_make_desc || + ""} ${record.v_model_desc || ""}`} + + ) : ( + t("jobs.errors.novehicle") + ); + } + }, + { + title: t("vehicles.fields.plate_no"), + dataIndex: "plate_no", + key: "plate_no", + width: "8%", + ellipsis: true, + sorter: (a, b) => alphaSort(a.plate_no, b.plate_no), + sortOrder: + state.sortedInfo.columnKey === "plate_no" && state.sortedInfo.order, + render: (text, record) => { + return record.plate_no ? ( + {record.plate_no} + ) : ( + t("general.labels.unknown") + ); + } + }, + { + title: t("jobs.fields.clm_no"), + dataIndex: "clm_no", + key: "clm_no", + width: "12%", + ellipsis: true, + sorter: (a, b) => alphaSort(a.clm_no, b.clm_no), + sortOrder: + state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order, + render: (text, record) => { + return record.clm_no ? ( + {record.clm_no} + ) : ( + t("general.labels.unknown") + ); + } + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + const filteredData = + state.search === "" + ? data + : data.filter( + j => + (j.est_number || "") + .toString() + .toLowerCase() + .includes(state.search.toLowerCase()) || + (j.ro_number || "") + .toString() + .toLowerCase() + .includes(state.search.toLowerCase()) || + (j.ownr_fn || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (j.ownr_ln || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (j.clm_no || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (j.v_make_desc || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (j.v_model_desc || "") + .toLowerCase() + .includes(state.search.toLowerCase()) || + (j.plate_no || "") + .toLowerCase() + .includes(state.search.toLowerCase()) + ); + + + return ( +
( + setState({ ...state, search: e.target.value })} + /> + )} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={filteredData} + onChange={handleTableChange} + rowSelection={{ + onSelect: handleSelect, + type: "radio", + selectedRowKeys: [selectedJob] + }} + /> + ); +} diff --git a/client/src/components/contract-jobs/contract-jobs.container.jsx b/client/src/components/contract-jobs/contract-jobs.container.jsx new file mode 100644 index 000000000..cd626e75a --- /dev/null +++ b/client/src/components/contract-jobs/contract-jobs.container.jsx @@ -0,0 +1,38 @@ +import { useQuery } from "@apollo/react-hooks"; +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import AlertComponent from "../alert/alert.component"; +import ContractJobsComponent from "./contract-jobs.component"; +import { QUERY_ALL_ACTIVE_JOBS } from "../../graphql/jobs.queries"; + +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser + bodyshop: selectBodyshop +}); +export function ContractJobsContainer({ selectedJobState, bodyshop }) { + const { loading, error, data } = useQuery(QUERY_ALL_ACTIVE_JOBS, { + variables: { + statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"] + } + }); + const [selectedJob, setSelectedJob] = selectedJobState; + + const handleSelect = record => { + setSelectedJob(record.id); + }; + + if (error) return ; + return ( +
+ +
+ ); +} +export default connect(mapStateToProps, null)(ContractJobsContainer); diff --git a/client/src/components/contract-status-select/contract-status-select.component.jsx b/client/src/components/contract-status-select/contract-status-select.component.jsx new file mode 100644 index 000000000..f622dafd0 --- /dev/null +++ b/client/src/components/contract-status-select/contract-status-select.component.jsx @@ -0,0 +1,35 @@ +import React, { useState, useEffect } from "react"; +import { Select } from "antd"; +import { useTranslation } from "react-i18next"; +const { Option } = Select; + +const ContractStatusComponent = ({ + value = "contracts.status.new", + onChange +}) => { + const [option, setOption] = useState(value); + const { t } = useTranslation(); + + useEffect(() => { + if (onChange) { + onChange(option); + } + }, [option, onChange]); + + return ( + + ); +}; +export default ContractStatusComponent; diff --git a/client/src/components/contracts-list/contracts-list.component.jsx b/client/src/components/contracts-list/contracts-list.component.jsx new file mode 100644 index 000000000..3a0ee8eaf --- /dev/null +++ b/client/src/components/contracts-list/contracts-list.component.jsx @@ -0,0 +1,102 @@ +import { Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import { alphaSort } from "../../utils/sorters"; +import { DateFormatter } from "../../utils/DateFormatter"; + +export default function ContractsList({ loading, contracts }) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("contracts.fields.agreementnumber"), + dataIndex: "agreementnumber", + key: "agreementnumber", + sorter: (a, b) => a.agreementnumber - b.agreementnumber, + sortOrder: + state.sortedInfo.columnKey === "agreementnumber" && + state.sortedInfo.order, + render: (text, record) => ( + + {record.agreementnumber || ""} + + ) + }, + { + title: t("jobs.fields.ro_number"), + dataIndex: "job.ro_number", + key: "job.ro_number", + sorter: (a, b) => alphaSort(a.job.ro_number, b.job.ro_number), + sortOrder: + state.sortedInfo.columnKey === "job.ro_number" && + state.sortedInfo.order, + render: (text, record) => ( + + {record.job.ro_number || ""} + + ) + }, + { + title: t("contracts.fields.driver"), + dataIndex: "driver_ln", + key: "driver_ln", + sorter: (a, b) => alphaSort(a.driver_ln, b.driver_ln), + sortOrder: + state.sortedInfo.columnKey === "driver_ln" && state.sortedInfo.order, + render: (text, record) => + `${record.driver_fn || ""} ${record.driver_ln || ""}` + }, + { + title: t("contracts.fields.status"), + dataIndex: "status", + key: "status", + sorter: (a, b) => alphaSort(a.status, b.status), + sortOrder: + state.sortedInfo.columnKey === "status" && state.sortedInfo.order, + render: (text, record) => t(record.status) + }, + { + title: t("contracts.fields.start"), + dataIndex: "start", + key: "start", + sorter: (a, b) => alphaSort(a.start, b.start), + sortOrder: + state.sortedInfo.columnKey === "start" && state.sortedInfo.order, + render: (text, record) => {record.start} + }, + { + title: t("contracts.fields.scheduledreturn"), + dataIndex: "scheduledreturn", + key: "scheduledreturn", + sorter: (a, b) => alphaSort(a.scheduledreturn, b.scheduledreturn), + sortOrder: + state.sortedInfo.columnKey === "scheduledreturn" && + state.sortedInfo.order, + render: (text, record) => ( + {record.scheduledreturn} + ) + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + return ( +
({ ...item }))} + rowKey="id" + dataSource={contracts} + onChange={handleTableChange} + /> + ); +} diff --git a/client/src/components/courtesy-car-contract-list/courtesy-car-contract-list.component.jsx b/client/src/components/courtesy-car-contract-list/courtesy-car-contract-list.component.jsx new file mode 100644 index 000000000..c3f499686 --- /dev/null +++ b/client/src/components/courtesy-car-contract-list/courtesy-car-contract-list.component.jsx @@ -0,0 +1,100 @@ +import { Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import { alphaSort } from "../../utils/sorters"; +import { DateFormatter } from "../../utils/DateFormatter"; + +export default function CourtesyCarContractListComponent({ contracts }) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("contracts.fields.agreementnumber"), + dataIndex: "agreementnumber", + key: "agreementnumber", + sorter: (a, b) => a.agreementnumber - b.agreementnumber, + sortOrder: + state.sortedInfo.columnKey === "agreementnumber" && + state.sortedInfo.order, + render: (text, record) => ( + + {record.agreementnumber || ""} + + ) + }, + { + title: t("jobs.fields.ro_number"), + dataIndex: "job.ro_number", + key: "job.ro_number", + sorter: (a, b) => alphaSort(a.job.ro_number, b.job.ro_number), + sortOrder: + state.sortedInfo.columnKey === "job.ro_number" && + state.sortedInfo.order, + render: (text, record) => ( + + {record.job.ro_number || ""} + + ) + }, + { + title: t("contracts.fields.driver"), + dataIndex: "driver_ln", + key: "driver_ln", + sorter: (a, b) => alphaSort(a.driver_ln, b.driver_ln), + sortOrder: + state.sortedInfo.columnKey === "driver_ln" && state.sortedInfo.order, + render: (text, record) => + `${record.driver_fn || ""} ${record.driver_ln || ""}` + }, + { + title: t("contracts.fields.status"), + dataIndex: "status", + key: "status", + sorter: (a, b) => alphaSort(a.status, b.status), + sortOrder: + state.sortedInfo.columnKey === "status" && state.sortedInfo.order, + render: (text, record) => t(record.status) + }, + { + title: t("contracts.fields.start"), + dataIndex: "start", + key: "start", + sorter: (a, b) => alphaSort(a.start, b.start), + sortOrder: + state.sortedInfo.columnKey === "start" && state.sortedInfo.order, + render: (text, record) => {record.start} + }, + { + title: t("contracts.fields.scheduledreturn"), + dataIndex: "scheduledreturn", + key: "scheduledreturn", + sorter: (a, b) => a.scheduledreturn - b.scheduledreturn, + sortOrder: + state.sortedInfo.columnKey === "scheduledreturn" && + state.sortedInfo.order, + render: (text, record) => ( + {record.scheduledreturn} + ) + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + return ( +
({ ...item }))} + rowKey="id" + dataSource={contracts} + onChange={handleTableChange} + /> + ); +} diff --git a/client/src/components/courtesy-car-form/courtesy-car-form.component.jsx b/client/src/components/courtesy-car-form/courtesy-car-form.component.jsx new file mode 100644 index 000000000..5542fb26c --- /dev/null +++ b/client/src/components/courtesy-car-form/courtesy-car-form.component.jsx @@ -0,0 +1,200 @@ +import React from "react"; +import { Form, Input, InputNumber, DatePicker, Button } from "antd"; +import { useTranslation } from "react-i18next"; +import CurrencyInput from "../form-items-formatted/currency-form-item.component"; +import CourtesyCarStatus from "../courtesy-car-status-select/courtesy-car-status-select.component"; +import CourtesyCarFuelSlider from "../courtesy-car-fuel-select/courtesy-car-fuel-select.component"; + +export default function CourtesyCarCreateFormComponent() { + const { t } = useTranslation(); + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/client/src/components/courtesy-car-fuel-select/courtesy-car-fuel-select.component.jsx b/client/src/components/courtesy-car-fuel-select/courtesy-car-fuel-select.component.jsx new file mode 100644 index 000000000..45241dea5 --- /dev/null +++ b/client/src/components/courtesy-car-fuel-select/courtesy-car-fuel-select.component.jsx @@ -0,0 +1,46 @@ +import { Slider } from "antd"; +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; + +const CourtesyCarFuelComponent = ({ value = 100, onChange }) => { + const [option, setOption] = useState(value); + const { t } = useTranslation(); + + useEffect(() => { + if (onChange) { + onChange(option); + } + }, [option, onChange]); + + const marks = { + 0: { + style: { + color: "#f50" + }, + label: t("courtesycars.labels.fuel.empty") + }, + 13: t("courtesycars.labels.fuel.18"), + 25: t("courtesycars.labels.fuel.14"), + 38: t("courtesycars.labels.fuel.38"), + 50: t("courtesycars.labels.fuel.12"), + 63: t("courtesycars.labels.fuel.58"), + 75: t("courtesycars.labels.fuel.34"), + 88: t("courtesycars.labels.fuel.78"), + 100: { + style: { + color: "#008000" + }, + label: {t("courtesycars.labels.fuel.full")} + } + }; + + return ( + + ); +}; +export default CourtesyCarFuelComponent; diff --git a/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.component.jsx b/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.component.jsx new file mode 100644 index 000000000..1a516a9ad --- /dev/null +++ b/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.component.jsx @@ -0,0 +1,49 @@ +import { Form, DatePicker, InputNumber } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import CourtesyCarFuelSlider from "../courtesy-car-fuel-select/courtesy-car-fuel-select.component"; + +export default function CourtesyCarReturnModalComponent() { + const { t } = useTranslation(); + + return ( +
+ + + + + + + + + +
+ ); +} diff --git a/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.container.jsx b/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.container.jsx new file mode 100644 index 000000000..587205ad6 --- /dev/null +++ b/client/src/components/courtesy-car-return-modal/courtesy-car-return-modal.container.jsx @@ -0,0 +1,84 @@ +import { Form, Modal, notification } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; +import { selectCourtesyCarReturn } from "../../redux/modals/modals.selectors"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import CourtesyCarReturnModalComponent from "./courtesy-car-return-modal.component"; +import moment from "moment"; +import { RETURN_CONTRACT } from "../../graphql/cccontracts.queries"; +import { useMutation } from "@apollo/react-hooks"; + +const mapStateToProps = createStructuredSelector({ + courtesyCarReturnModal: selectCourtesyCarReturn, + bodyshop: selectBodyshop +}); + +const mapDispatchToProps = dispatch => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("courtesyCarReturn")) +}); + +export function InvoiceEnterModalContainer({ + courtesyCarReturnModal, + toggleModalVisible, + bodyshop +}) { + const { visible, context, actions } = courtesyCarReturnModal; + const { t } = useTranslation(); + const [form] = Form.useForm(); + const [updateContract] = useMutation(RETURN_CONTRACT); + const handleFinish = values => { + updateContract({ + variables: { + contractId: context.contractId, + cccontract: { + kmend: values.kmend, + actualreturn: values.actualreturn, + status: "contracts.status.returned" + }, + courtesycarid: context.courtesyCarId, + courtesycar: { + status: "courtesycars.status.in", + fuel: values.fuel, + mileage: values.kmend + } + } + }) + .then(r => { + if (actions.refetch) actions.refetch(); + toggleModalVisible(); + }) + .catch(error => { + notification["error"]({ + message: t("contracts.errors.returning", { error: error }) + }); + }); + }; + + return ( + toggleModalVisible()} + width={"90%"} + okText={t("general.actions.save")} + onOk={() => form.submit()} + okButtonProps={{ htmlType: "submit" }} + > +
+ + +
+ ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(InvoiceEnterModalContainer); diff --git a/client/src/components/courtesy-car-status-select/courtesy-car-status-select.component.jsx b/client/src/components/courtesy-car-status-select/courtesy-car-status-select.component.jsx new file mode 100644 index 000000000..b60ca64cc --- /dev/null +++ b/client/src/components/courtesy-car-status-select/courtesy-car-status-select.component.jsx @@ -0,0 +1,39 @@ +import React, { useState, useEffect } from "react"; +import { Select } from "antd"; +import { useTranslation } from "react-i18next"; +const { Option } = Select; + +const CourtesyCarStatusComponent = ({ + value = "courtesycars.status.in", + onChange +}) => { + const [option, setOption] = useState(value); + const { t } = useTranslation(); + + useEffect(() => { + if (onChange) { + onChange(option); + } + }, [option, onChange]); + + return ( + + ); +}; +export default CourtesyCarStatusComponent; diff --git a/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx new file mode 100644 index 000000000..5fa6e003e --- /dev/null +++ b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx @@ -0,0 +1,82 @@ +import { 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 CourtesyCarsList({ loading, courtesycars }) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("courtesycars.fields.fleetnumber"), + dataIndex: "fleetnumber", + key: "fleetnumber", + sorter: (a, b) => alphaSort(a.fleetnumber, b.fleetnumber), + sortOrder: + state.sortedInfo.columnKey === "fleetnumber" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.vin"), + dataIndex: "vin", + key: "vin", + sorter: (a, b) => alphaSort(a.vin, b.vin), + sortOrder: state.sortedInfo.columnKey === "vin" && state.sortedInfo.order, + render: (text, record) => ( + {record.vin} + ) + }, + { + title: t("courtesycars.fields.status"), + dataIndex: "status", + key: "status", + sorter: (a, b) => alphaSort(a.status, b.status), + sortOrder: + state.sortedInfo.columnKey === "status" && state.sortedInfo.order, + render: (text, record) => t(record.status) + }, + { + title: t("courtesycars.fields.year"), + dataIndex: "year", + key: "year", + sorter: (a, b) => alphaSort(a.year, b.year), + sortOrder: state.sortedInfo.columnKey === "year" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.make"), + dataIndex: "make", + key: "make", + sorter: (a, b) => alphaSort(a.make, b.make), + sortOrder: state.sortedInfo.columnKey === "make" && state.sortedInfo.order + }, + { + title: t("courtesycars.fields.model"), + dataIndex: "model", + key: "model", + sorter: (a, b) => alphaSort(a.model, b.model), + sortOrder: + state.sortedInfo.columnKey === "model" && state.sortedInfo.order + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + return ( +
({ ...item }))} + rowKey="id" + dataSource={courtesycars} + onChange={handleTableChange} + /> + ); +} 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/dashboard-grid/dashboard-grid.component.jsx b/client/src/components/dashboard-grid/dashboard-grid.component.jsx new file mode 100644 index 000000000..353799588 --- /dev/null +++ b/client/src/components/dashboard-grid/dashboard-grid.component.jsx @@ -0,0 +1,64 @@ +import { Card } from "antd"; +import React, { useState } from "react"; +import { Responsive, WidthProvider } from "react-grid-layout"; +import styled from "styled-components"; +//Combination of the following: +// /node_modules/react-grid-layout/css/styles.css +// /node_modules/react-resizable/css/styles.css +import "./dashboard-grid.styles.css"; + +const Sdiv = styled.div` + position: absolute; + height: 80%; + width: 80%; + top: 10%; + left: 10%; + // background-color: #ffcc00; +`; + +const ResponsiveReactGridLayout = WidthProvider(Responsive); + +export default function DashboardGridComponent() { + const [state, setState] = useState({ + layout: [ + { i: "1", x: 0, y: 0, w: 2, h: 2 }, + { i: "2", x: 2, y: 0, w: 2, h: 2 }, + { i: "3", x: 4, y: 0, w: 2, h: 2 } + ] + }); + + const defaultProps = { + className: "layout", + breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 } + // cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }, + // rowHeight: 100 + }; + + // We're using the cols coming back from this to calculate where to add new items. + const onBreakpointChange = (breakpoint, cols) => { + console.log("breakpoint, cols", breakpoint, cols); + // setState({ ...state, breakpoint: breakpoint, cols: cols }); + }; + if (true) return null; + return ( + + The Grid. + { + console.log("layout", layout); + setState({ ...state, layout }); + }}> + {state.layout.map((item, index) => { + return ( + + A Card {index} + + ); + })} + + + ); +} diff --git a/client/src/components/dashboard-grid/dashboard-grid.styles.css b/client/src/components/dashboard-grid/dashboard-grid.styles.css new file mode 100644 index 000000000..10969c599 --- /dev/null +++ b/client/src/components/dashboard-grid/dashboard-grid.styles.css @@ -0,0 +1,126 @@ +.react-resizable { + position: relative; +} +.react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + background-repeat: no-repeat; + background-origin: content-box; + box-sizing: border-box; + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+"); + background-position: bottom right; + padding: 0 3px 3px 0; +} +.react-resizable-handle-sw { + bottom: 0; + left: 0; + cursor: sw-resize; + transform: rotate(90deg); +} +.react-resizable-handle-se { + bottom: 0; + right: 0; + cursor: se-resize; +} +.react-resizable-handle-nw { + top: 0; + left: 0; + cursor: nw-resize; + transform: rotate(180deg); +} +.react-resizable-handle-ne { + top: 0; + right: 0; + cursor: ne-resize; + transform: rotate(270deg); +} +.react-resizable-handle-w, +.react-resizable-handle-e { + top: 50%; + margin-top: -10px; + cursor: ew-resize; +} +.react-resizable-handle-w { + left: 0; + transform: rotate(135deg); +} +.react-resizable-handle-e { + right: 0; + transform: rotate(315deg); +} +.react-resizable-handle-n, +.react-resizable-handle-s { + left: 50%; + margin-left: -10px; + cursor: ns-resize; +} +.react-resizable-handle-n { + top: 0; + transform: rotate(225deg); +} +.react-resizable-handle-s { + bottom: 0; + transform: rotate(45deg); +} +.react-grid-layout { + position: relative; + transition: height 200ms ease; +} +.react-grid-item { + transition: all 200ms ease; + transition-property: left, top; +} +.react-grid-item.cssTransforms { + transition-property: transform; +} +.react-grid-item.resizing { + z-index: 1; + will-change: width, height; +} + +.react-grid-item.react-draggable-dragging { + transition: none; + z-index: 3; + will-change: transform; +} + +.react-grid-item.dropping { + visibility: hidden; +} + +.react-grid-item.react-grid-placeholder { + background: red; + opacity: 0.2; + transition-duration: 100ms; + z-index: 2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.react-grid-item > .react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + bottom: 0; + right: 0; + cursor: se-resize; +} + +.react-grid-item > .react-resizable-handle::after { + content: ""; + position: absolute; + right: 3px; + bottom: 3px; + width: 5px; + height: 5px; + border-right: 2px solid rgba(0, 0, 0, 0.4); + border-bottom: 2px solid rgba(0, 0, 0, 0.4); +} + +.react-resizable-hide > .react-resizable-handle { + display: none; +} diff --git a/client/src/components/documents-upload/documents-upload.component.jsx b/client/src/components/documents-upload/documents-upload.component.jsx new file mode 100644 index 000000000..287866f00 --- /dev/null +++ b/client/src/components/documents-upload/documents-upload.component.jsx @@ -0,0 +1,20 @@ +import { UploadOutlined } from "@ant-design/icons"; +import { Button, Upload } from "antd"; +import React from "react"; + +export default function DocumentsUploadComponent({ handleUpload, UploadRef }) { + return ( +
+ + + +
+ ); +} diff --git a/client/src/components/documents-upload/documents-upload.container.jsx b/client/src/components/documents-upload/documents-upload.container.jsx new file mode 100644 index 000000000..0b0fe4615 --- /dev/null +++ b/client/src/components/documents-upload/documents-upload.container.jsx @@ -0,0 +1,165 @@ +import { useMutation } from "@apollo/react-hooks"; +import { notification } from "antd"; +import axios from "axios"; +import React, { useRef } from "react"; +import { useTranslation } from "react-i18next"; +import Resizer from "react-image-file-resizer"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { INSERT_NEW_DOCUMENT } from "../../graphql/documents.queries"; +import { + selectBodyshop, + selectCurrentUser, +} from "../../redux/user/user.selectors"; +import DocumentsUploadComponent from "./documents-upload.component"; + +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, + bodyshop: selectBodyshop, +}); + +export function DocumentsUploadContainer({ + jobId, + tagsArray, + invoiceId, + currentUser, + bodyshop, + callbackAfterUpload, + onChange, +}) { + const { t } = useTranslation(); + const [insertNewDocument] = useMutation(INSERT_NEW_DOCUMENT); + const UploadRef = useRef(null); + + const handleUpload = (ev) => { + const { onError, onSuccess, onProgress } = ev; + //If PDF, upload directly. + //If JPEG, resize and upload. + //TODO If this is just an invoice job? Where to put it? + let key = `${bodyshop.id}/${jobId}/${ev.file.name}`; + if (ev.file.type.includes("image")) { + Resizer.imageFileResizer( + ev.file, + 2500, + 2500, + "JPEG", + 75, + 0, + (uri) => { + let file = new File([uri], ev.file.name, {}); + file.uid = ev.file.uid; + uploadToS3(key, file.type, file, onError, onSuccess, onProgress); + }, + "blob" + ); + } else { + uploadToS3(key, ev.file.type, ev.file, onError, onSuccess, onProgress); + } + }; + + const uploadToS3 = ( + fileName, + fileType, + file, + onError, + onSuccess, + onProgress + ) => { + let timestamp = Math.floor(Date.now() / 1000); + let public_id = fileName; + let tags = `${bodyshop.textid},${ + tagsArray ? tagsArray.map((tag) => `${tag},`) : "" + }`; + let eager = "w_200,h_200,c_thumb"; + axios + .post("/media/sign", { + eager: eager, + public_id: public_id, + tags: tags, + timestamp: timestamp, + }) + .then((response) => { + var signature = response.data; + var options = { + headers: { "X-Requested-With": "XMLHttpRequest" }, + onUploadProgress: (e) => { + onProgress({ percent: (e.loaded / e.total) * 100 }); + }, + }; + const formData = new FormData(); + formData.append("file", file); + formData.append("eager", eager); + formData.append("api_key", process.env.REACT_APP_CLOUDINARY_API_KEY); + formData.append("public_id", public_id); + formData.append("tags", tags); + formData.append("timestamp", timestamp); + formData.append("signature", signature); + + axios + .post( + `${process.env.REACT_APP_CLOUDINARY_ENDPOINT}/upload`, + formData, + options + ) + .then((response) => { + console.log("response", response); + + insertNewDocument({ + variables: { + docInput: [ + { + jobid: jobId, + uploaded_by: currentUser.email, + key: fileName, + invoiceid: invoiceId, + type: fileType, + }, + ], + }, + }).then((r) => { + onSuccess({ + uid: r.data.insert_documents.returning[0].id, + name: r.data.insert_documents.returning[0].name, + status: "done", + key: r.data.insert_documents.returning[0].key, + }); + notification["success"]({ + message: t("documents.successes.insert"), + }); + if (callbackAfterUpload) { + callbackAfterUpload(); + } + if (onChange) { + //Used in a form. + onChange(UploadRef.current.state.fileList); + } + }); + }) + .catch((error) => { + onError(error); + notification["error"]({ + message: t("documents.errors.insert", { + message: JSON.stringify(error), + }), + }); + }); + }) + .catch((error) => { + console.log("error", error); + notification["error"]({ + message: t("documents.errors.getpresignurl", { + message: JSON.stringify(error), + }), + }); + }); + }; + + return ( + + ); +} + +export default connect(mapStateToProps, null)(DocumentsUploadContainer); 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..7cf5f393a --- /dev/null +++ b/client/src/components/email-overlay/email-overlay.component.jsx @@ -0,0 +1,49 @@ +import { Editor } from "@tinymce/tinymce-react"; +import { Input } from "antd"; +import React from "react"; +export default function EmailOverlayComponent({ + messageOptions, + handleConfigChange, + handleHtmlChange, +}) { + return ( +
+ + CC + + Subject + + +
+ ); +} 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..3048bcad4 --- /dev/null +++ b/client/src/components/email-overlay/email-overlay.container.jsx @@ -0,0 +1,145 @@ +import { useApolloClient } from "@apollo/react-hooks"; +import { Modal, notification } from "antd"; +import { gql } from "apollo-boost"; +import axios from "axios"; +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { QUERY_TEMPLATES_BY_NAME } from "../../graphql/templates.queries"; +import { toggleEmailOverlayVisible } from "../../redux/email/email.actions"; +import { + selectEmailConfig, + selectEmailVisible, +} from "../../redux/email/email.selectors.js"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import EmailOverlayComponent from "./email-overlay.component"; + +const mapStateToProps = createStructuredSelector({ + modalVisible: selectEmailVisible, + emailConfig: selectEmailConfig, + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + toggleEmailOverlayVisible: () => dispatch(toggleEmailOverlayVisible()), +}); +export function EmailOverlayContainer({ + emailConfig, + modalVisible, + toggleEmailOverlayVisible, + bodyshop, +}) { + const { t } = useTranslation(); + + const [messageOptions, setMessageOptions] = useState( + emailConfig.messageOptions + ); + const client = useApolloClient(); + + const renderEmail = () => { + client + .query({ + query: QUERY_TEMPLATES_BY_NAME, + variables: { name: emailConfig.template.name }, + fetchPolicy: "network-only", + }) + .then(({ data: templateRecords }) => { + let templateToUse; + if (templateRecords.templates.length === 1) { + console.log("Only 1 Template found."); + templateToUse = templateRecords.templates[0]; + } else if (templateRecords.templates.length === 2) { + console.log("2 Templates found.."); + templateToUse = templateRecords.templates.filter( + (t) => !!t.bodyshopid + ); + } else { + //No template found.Uh oh. + alert("Templating Error!"); + } + + client + .query({ + query: gql(templateToUse.query), + variables: { ...emailConfig.template.variables }, + fetchPolicy: "network-only", + }) + .then(({ data: contextData }) => { + handleRender(contextData, templateToUse.html); + }); + }); + }; + + const handleRender = (contextData, html) => { + axios + .post("/render", { + view: html, + context: { ...contextData, bodyshop: bodyshop }, + }) + .then((r) => { + setMessageOptions({ ...messageOptions, html: r.data }); + }); + }; + + 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 }); + }; + + useEffect(() => { + if (modalVisible) renderEmail(); + }, [modalVisible]); // eslint-disable-line react-hooks/exhaustive-deps + + return ( + { + toggleEmailOverlayVisible(); + }} + > + + + + + + ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(EmailOverlayContainer); diff --git a/client/src/components/email-overlay/email-setup.md b/client/src/components/email-overlay/email-setup.md new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/components/employee-search-select/employee-search-select.component.jsx b/client/src/components/employee-search-select/employee-search-select.component.jsx new file mode 100644 index 000000000..58fdbdd22 --- /dev/null +++ b/client/src/components/employee-search-select/employee-search-select.component.jsx @@ -0,0 +1,61 @@ +import { Select, Tag } from "antd"; +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +const { Option } = Select; +//To be used as a form element only. + +const EmployeeSearchSelect = ({ + value, + onChange, + options, + onSelect, + onBlur, +}) => { + const [option, setOption] = useState(value); + const { t } = useTranslation(); + useEffect(() => { + if (onChange) { + onChange(option); + } + }, [option, onChange]); + + return ( + + ); +}; +export default EmployeeSearchSelect; 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/currency-form-item.component.jsx b/client/src/components/form-items-formatted/currency-form-item.component.jsx new file mode 100644 index 000000000..0c24be519 --- /dev/null +++ b/client/src/components/form-items-formatted/currency-form-item.component.jsx @@ -0,0 +1,14 @@ +import { InputNumber } from "antd"; +import React, { forwardRef } from "react"; +function FormItemCurrency(props, ref) { + return ( + `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")} + // parser={value => value.replace(/\$\s?|(,*)/g, "")} + precision={2} + /> + ); +} + +export default forwardRef(FormItemCurrency); 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..f3d211a1a 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 @@ -1,13 +1,18 @@ -import { Icon, Input } from "antd"; +import { Input } from "antd"; +import { MailFilled } from "@ant-design/icons"; import React, { forwardRef } from "react"; function FormItemEmail(props, ref) { return ( - - + 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-loading-bar/global-loading-bar.component.jsx b/client/src/components/global-loading-bar/global-loading-bar.component.jsx new file mode 100644 index 000000000..89ebcb372 --- /dev/null +++ b/client/src/components/global-loading-bar/global-loading-bar.component.jsx @@ -0,0 +1,54 @@ +//import { useNProgress } from "@tanem/react-nprogress"; +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectLoading } from "../../redux/application/application.selectors"; + +const mapStateToProps = createStructuredSelector({ + loading: selectLoading, +}); + +export default connect(mapStateToProps, null)(GlobalLoadingHeader); + +function GlobalLoadingHeader({ loading }) { + return ; + // const { animationDuration, isFinished, progress } = useNProgress({ + // isAnimating: loading, + // }); + // return ( + //
+ //
+ //
+ //
+ //
+ // ); +} 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..d7d158480 100644 --- a/client/src/components/header/header.component.jsx +++ b/client/src/components/header/header.component.jsx @@ -1,74 +1,280 @@ -import { useApolloClient } from "@apollo/react-hooks"; -import { Col, Icon, Menu, Row } from "antd"; +import Icon, { + CarFilled, + FileAddFilled, + FileFilled, + GlobalOutlined, + HomeFilled, + TeamOutlined, + DollarCircleFilled, +} from "@ant-design/icons"; +import { Avatar, Col, Menu, Row } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; +import { FaCalendarAlt, FaCarCrash } from "react-icons/fa"; 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 ManageSignInButton from "../manage-sign-in-button/manage-sign-in-button.component"; -import "./header.styles.scss"; -export default ({ landingHeader, navItems, selectedNavItem }) => { - const apolloClient = useApolloClient(); +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { setModalContext } from "../../redux/modals/modals.actions"; +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = (dispatch) => ({ + setInvoiceEnterContext: (context) => + dispatch(setModalContext({ context: context, modal: "invoiceEnter" })), + setTimeTicketContext: (context) => + dispatch(setModalContext({ context: context, modal: "timeTicket" })), +}); + +function Header({ + landingHeader, + selectedNavItem, + logo, + handleMenuClick, + currentUser, + signOutStart, + setInvoiceEnterContext, + setTimeTicketContext, +}) { 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")} + + } + > + signOutStart()}> + {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.jobs")} + + } + > + + + + {t("menus.header.schedule")} + + + + {t("menus.header.activejobs")} + + + + {t("menus.header.availablejobs")} + + + + + + + + {t("menus.header.owners")} + + + + + + {t("menus.header.vehicles")} + + + - { - // navItems.map(navItem => ( - // - // - // {navItem.icontype ? : null} - // {navItem.title} - // - // - // )) - } + + + {t("menus.header.courtesycars")} + + } + > + + + + {t("menus.header.courtesycars-all")} + + + + + + {t("menus.header.courtesycars-contracts")} + + + + + + {t("menus.header.courtesycars-newcontract")} + + + - {!landingHeader ? null : ( - - - - )} - - - - {!landingHeader ? : null} + + + {t("menus.header.accounting")} + + } + > + { + setInvoiceEnterContext({ + actions: {}, + context: {}, + }); + }} + > + {t("menus.header.enterinvoices")} + + + {t("menus.header.invoices")} + + { + setTimeTicketContext({ + actions: {}, + context: {}, + }); + }} + > + {t("menus.header.entertimeticket")} + + + + + + {t("menus.header.shop_config")} + + + + {t("menus.header.shop_vendors")} + + + + + + + {currentUser.displayName || t("general.labels.unknown")} + + } + > + signOutStart()}> + {t("user.actions.signout")} + + + + {t("menus.currentuser.profile")} + + + + + {t("menus.currentuser.languageselector")} + + } + > + + {t("general.languages.english")} + + + {t("general.languages.french")} + + + {t("general.languages.spanish")} + + + + + )} ); -}; +} + +export default connect(mapStateToProps, mapDispatchToProps)(Header); 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-add-line-button/invoice-add-line-button.component.jsx b/client/src/components/invoice-add-line-button/invoice-add-line-button.component.jsx new file mode 100644 index 000000000..18f4680c1 --- /dev/null +++ b/client/src/components/invoice-add-line-button/invoice-add-line-button.component.jsx @@ -0,0 +1,36 @@ +import React, { useState } from "react"; +import { Button, Popover, Input, InputNumber, Form } from "antd"; +import { SelectOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; + +export default function InvoiceAddLineButton({ jobLine, discount, disabled }) { + const [visibility, setVisibility] = useState(false); + const { t } = useTranslation(); + + const popContent = ( +
+ + + + + + + + + + + + + DISC: {discount} + +
+ ); + + return ( + + + + ); +} 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..d8999845e --- /dev/null +++ b/client/src/components/invoice-enter-modal/invoice-enter-modal.component.jsx @@ -0,0 +1,131 @@ +import { DatePicker, Form, Input, Switch } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import CurrencyInput from "../form-items-formatted/currency-form-item.component"; +import JobSearchSelect from "../job-search-select/job-search-select.component"; +import VendorSearchSelect from "../vendor-search-select/vendor-search-select.component"; +import InvoiceEnterModalLinesComponent from "./invoice-enter-modal.lines.component"; +import DocumentsUploadContainer from "../documents-upload/documents-upload.container"; + +export default function InvoiceEnterModalComponent({ + form, + roAutoCompleteOptions, + vendorAutoCompleteOptions, + lineData, + responsibilityCenters, + loadLines, +}) { + const { t } = useTranslation(); + + const [discount, setDiscount] = useState(0); + + const handleVendorSelect = (props, opt) => { + setDiscount(opt.discount); + }; + + return ( +
+
+ + { + if (form.getFieldValue("jobid") !== null) { + loadLines({ variables: { id: form.getFieldValue("jobid") } }); + } + }} + /> + + + + +
+
+ + + + + + + + + + + + +
+ + + + + + +
+ ); +} 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..54ca1008d --- /dev/null +++ b/client/src/components/invoice-enter-modal/invoice-enter-modal.container.jsx @@ -0,0 +1,167 @@ +import { useLazyQuery, useMutation, useQuery } from "@apollo/react-hooks"; +import { Form, Modal, notification, Button } from "antd"; +import React, { useState, useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { INSERT_NEW_INVOICE } from "../../graphql/invoices.queries"; +import { GET_JOB_LINES_TO_ENTER_INVOICE } from "../../graphql/jobs-lines.queries"; +import { ACTIVE_JOBS_FOR_AUTOCOMPLETE } from "../../graphql/jobs.queries"; +import { SEARCH_VENDOR_AUTOCOMPLETE } from "../../graphql/vendors.queries"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; +import { selectInvoiceEnterModal } from "../../redux/modals/modals.selectors"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import InvoiceEnterModalComponent from "./invoice-enter-modal.component"; +import { setModalContext } from "../../redux/modals/modals.actions"; + +const mapStateToProps = createStructuredSelector({ + invoiceEnterModal: selectInvoiceEnterModal, + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("invoiceEnter")), + setInvoiceEnterContext: (context) => + dispatch(setModalContext({ context: context, modal: "invoiceEnter" })), +}); + +function InvoiceEnterModalContainer({ + invoiceEnterModal, + toggleModalVisible, + bodyshop, + setInvoiceEnterContext, +}) { + const [form] = Form.useForm(); + const { t } = useTranslation(); + const [enterAgain, setEnterAgain] = useState(false); + const [insertInvoice] = useMutation(INSERT_NEW_INVOICE); + + const { data: RoAutoCompleteData } = useQuery(ACTIVE_JOBS_FOR_AUTOCOMPLETE, { + fetchPolicy: "network-only", + variables: { statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"] }, + skip: !invoiceEnterModal.visible, + }); + + const { data: VendorAutoCompleteData } = useQuery( + SEARCH_VENDOR_AUTOCOMPLETE, + { + fetchPolicy: "network-only", + skip: !invoiceEnterModal.visible, + } + ); + + const [loadLines, { data: lineData }] = useLazyQuery( + GET_JOB_LINES_TO_ENTER_INVOICE, + { + fetchPolicy: "network-only", + } + ); + + const handleFinish = (values) => { + insertInvoice({ + variables: { + invoice: [ + Object.assign({}, values, { + invoicelines: { data: values.invoicelines }, + }), + ], + }, + }) + .then((r) => { + notification["success"]({ + message: t("invoices.successes.created"), + }); + if (invoiceEnterModal.actions.refetch) + invoiceEnterModal.actions.refetch(); + + if (enterAgain) { + form.resetFields(); + } else { + toggleModalVisible(); + } + setEnterAgain(false); + }) + .catch((error) => { + setEnterAgain(false); + notification["error"]({ + message: t("invoices.errors.creating", { + message: JSON.stringify(error), + }), + }); + }); + }; + + const handleCancel = () => { + toggleModalVisible(); + }; + + useEffect(() => { + if (enterAgain) form.submit(); + }, [enterAgain, form]); + + return ( + form.submit()} + onCancel={handleCancel} + afterClose={() => form.resetFields()} + footer={ + + + + {invoiceEnterModal.context && invoiceEnterModal.context.id ? null : ( + + )} + + } + destroyOnClose + > +
{ + setEnterAgain(false); + console.log("Finish failed"); + }} + initialValues={{ + jobid: + (invoiceEnterModal.context.job && + invoiceEnterModal.context.job.id) || + null, + }} + > + + +
+ ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(InvoiceEnterModalContainer); diff --git a/client/src/components/invoice-enter-modal/invoice-enter-modal.lines.component.jsx b/client/src/components/invoice-enter-modal/invoice-enter-modal.lines.component.jsx new file mode 100644 index 000000000..5558979ee --- /dev/null +++ b/client/src/components/invoice-enter-modal/invoice-enter-modal.lines.component.jsx @@ -0,0 +1,245 @@ +import { DeleteFilled } from "@ant-design/icons"; +import { Button, Col, Form, Input, Row, Select, Tag } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +import CurrencyInput from "../form-items-formatted/currency-form-item.component"; + +export default function InvoiceEnterModalLinesComponent({ + lineData, + discount, + form, + responsibilityCenters +}) { + const { t } = useTranslation(); + const { setFieldsValue, getFieldsValue } = form; + + const [amounts, setAmounts] = useState({ invoiceTotal: 0, enteredAmount: 0 }); + + const calculateTotals = () => { + setAmounts({ + invoiceTotal: getFieldsValue().total, + enteredTotal: getFieldsValue("invoicelines").invoicelines + ? getFieldsValue("invoicelines").invoicelines.reduce( + (acc, value) => + acc + (value && value.actual_cost ? value.actual_cost : 0), + 0 + ) + : 0 + }); + }; + + return ( +
+ + {(fields, { add, remove }) => { + return ( +
+ {fields.map((field, index) => ( + +
+ + + + {getFieldsValue("invoicelines").invoicelines[index] && + getFieldsValue("invoicelines").invoicelines[index] + .joblinename && + !getFieldsValue("invoicelines").invoicelines[index] + .joblineid ? ( + + + + ) : null} + + + { + setFieldsValue({ + invoicelines: getFieldsValue( + "invoicelines" + ).invoicelines.map((item, idx) => { + if (idx === index) { + return { + ...item, + actual_cost: !!item.actual_cost + ? item.actual_cost + : parseFloat(e.target.value) * + (1 - discount) + }; + } + return item; + }) + }); + }} + /> + + + calculateTotals()} /> + + + + + + { + remove(field.name); + calculateTotals(); + }} + /> +
+
+ ))} + + + +
+ ); + }} +
+ +
+ {t("invoicelines.labels.entered")} + {amounts.enteredTotal || 0} + + + + {amounts.invoiceTotal - amounts.enteredTotal === 0 ? ( + {t("invoicelines.labels.reconciled")} + ) : ( + + {t("invoicelines.labels.unreconciled")}: + + {amounts.invoiceTotal - amounts.enteredTotal} + + + )} + + + + ); +} diff --git a/client/src/components/invoices-list-table/invoices-list-table.component.jsx b/client/src/components/invoices-list-table/invoices-list-table.component.jsx new file mode 100644 index 000000000..6f3cdebb6 --- /dev/null +++ b/client/src/components/invoices-list-table/invoices-list-table.component.jsx @@ -0,0 +1,181 @@ +import { Button, Descriptions, Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +import { DateFormatter } from "../../utils/DateFormatter"; +import { alphaSort } from "../../utils/sorters"; + +export default function InvoicesListTableComponent({ + loading, + invoices, + selectedInvoice, + handleOnRowClick, +}) { + const { t } = useTranslation(); + + const [state, setState] = useState({ + sortedInfo: {}, + }); + + const columns = [ + { + title: t("invoices.fields.vendorname"), + dataIndex: "vendorname", + key: "vendorname", + sorter: (a, b) => alphaSort(a.vendor.name, b.vendor.name), + sortOrder: + state.sortedInfo.columnKey === "vendorname" && state.sortedInfo.order, + render: (text, record) => {record.vendor.name}, + }, + { + title: t("invoices.fields.invoice_number"), + dataIndex: "invoice_number", + key: "invoice_number", + sorter: (a, b) => alphaSort(a.invoice_number, b.invoice_number), + sortOrder: + state.sortedInfo.columnKey === "invoice_number" && + state.sortedInfo.order, + }, + { + title: t("invoices.fields.date"), + dataIndex: "date", + key: "date", + + sorter: (a, b) => a.date - b.date, + sortOrder: + state.sortedInfo.columnKey === "date" && state.sortedInfo.order, + render: (text, record) => {record.date}, + }, + { + title: t("invoices.fields.total"), + dataIndex: "total", + key: "total", + + sorter: (a, b) => a.total - b.total, + sortOrder: + state.sortedInfo.columnKey === "total" && state.sortedInfo.order, + render: (text, record) => ( + {record.total} + ), + }, + { + title: t("general.labels.actions"), + dataIndex: "actions", + key: "actions", + render: (text, record) => ( + + + + ), + }, + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + const rowExpander = (record) => { + const columns = [ + { + title: t("invoicelines.fields.line_desc"), + dataIndex: "line_desc", + key: "line_desc", + sorter: (a, b) => alphaSort(a.line_desc, b.line_desc), + sortOrder: + state.sortedInfo.columnKey === "line_desc" && state.sortedInfo.order, + }, + { + title: t("invoicelines.fields.retail"), + dataIndex: "actual_price", + key: "actual_price", + sorter: (a, b) => a.actual_price - b.actual_price, + sortOrder: + state.sortedInfo.columnKey === "actual_price" && + state.sortedInfo.order, + render: (text, record) => ( + {record.actual_price} + ), + }, + { + title: t("invoicelines.fields.actual_cost"), + dataIndex: "actual_cost", + key: "actual_cost", + sorter: (a, b) => a.actual_cost - b.actual_cost, + sortOrder: + state.sortedInfo.columnKey === "actual_cost" && + state.sortedInfo.order, + render: (text, record) => ( + {record.actual_cost} + ), + }, + { + title: t("invoicelines.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, + }, + ]; + + return ( +
+ + Zhou Maomao + 1810000000 + Hangzhou, Zhejiang + empty + + No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China + + +
({ ...item }))} + rowKey="id" + dataSource={record.invoicelines} + /> + + ); + }; + + return ( +
({ ...item }))} + rowKey="id" + dataSource={invoices} + onChange={handleTableChange} + expandable={{ + expandedRowKeys: [selectedInvoice], + onExpand: (expanded, record) => { + handleOnRowClick(expanded ? record : null); + }, + }} + rowSelection={{ + onSelect: (record) => { + handleOnRowClick(record); + }, + selectedRowKeys: [selectedInvoice], + type: "radio", + }} + onRow={(record, rowIndex) => { + return { + onClick: (event) => { + handleOnRowClick(record); + }, // click row + onDoubleClick: (event) => {}, // double click row + onContextMenu: (event) => {}, // right button click row + onMouseEnter: (event) => {}, // mouse enter row + onMouseLeave: (event) => {}, // mouse leave row + }; + }} + /> + ); +} 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..d6a9cef70 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 @@ -1,13 +1,21 @@ +import { + EditFilled, + FileImageFilled, + PrinterFilled, + ShoppingFilled +} from "@ant-design/icons"; import { useQuery } from "@apollo/react-hooks"; -import { Button, Icon, PageHeader, Tag } from "antd"; +import { Button, PageHeader, Tag } from "antd"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; import { Link } from "react-router-dom"; import { QUERY_JOB_CARD_DETAILS } from "../../graphql/jobs.queries"; +import { setModalContext } from "../../redux/modals/modals.actions"; import AlertComponent from "../alert/alert.component"; import LoadingSpinner from "../loading-spinner/loading-spinner.component"; import NoteUpsertModal from "../note-upsert-modal/note-upsert-modal.container"; -//import JobDetailCardsHeaderComponent from "./job-detail-cards.header.component"; +import ScheduleJobModalContainer from "../schedule-job-modal/schedule-job-modal.container"; import JobDetailCardsCustomerComponent from "./job-detail-cards.customer.component"; import JobDetailCardsDamageComponent from "./job-detail-cards.damage.component"; import JobDetailCardsDatesComponent from "./job-detail-cards.dates.component"; @@ -18,38 +26,46 @@ import JobDetailCardsPartsComponent from "./job-detail-cards.parts.component"; import "./job-detail-cards.styles.scss"; import JobDetailCardsTotalsComponent from "./job-detail-cards.totals.component"; +const mapDispatchToProps = dispatch => ({ + setInvoiceEnterContext: context => + dispatch(setModalContext({ context: context, modal: "invoiceEnter" })), + setNoteUpsertContext: context => + dispatch(setModalContext({ context: context, modal: "noteUpsert" })) +}); - -export default function JobDetailCards({ selectedJob }) { +export function JobDetailCards({ + selectedJob, + setInvoiceEnterContext, + setNoteUpsertContext +}) { const { loading, error, data, refetch } = useQuery(QUERY_JOB_CARD_DETAILS, { fetchPolicy: "network-only", variables: { id: selectedJob }, skip: !selectedJob }); - const [noteModalVisible, setNoteModalVisible] = useState(false); + const scheduleModalState = useState(false); const { t } = useTranslation(); if (!selectedJob) { return
{t("jobs.errors.nojobselected")}
; } if (loading) return ; - if (error) return ; + if (error) return ; return ( -
- + + 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} } @@ -62,37 +78,64 @@ export default function JobDetailCards({ selectedJob }) { ? `${t("jobs.fields.ro_number")} ${data.jobs_by_pk.ro_number}` : `${t("jobs.fields.est_number")} ${ data.jobs_by_pk.est_number - }`}{" "} + }`} ) } extra={[ + , + key="documents" + to={`/manage/jobs/${data.jobs_by_pk.id}?documents`} + > , - , , - - ]}> + ]} + > { // loading ? ( // @@ -113,7 +156,7 @@ export default function JobDetailCards({ selectedJob }) { // ) } -
+
); } +export default connect(null, mapDispatchToProps)(JobDetailCards); 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..76acbb7c3 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 @@ -11,10 +11,14 @@ 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 || @@ -31,14 +35,22 @@ export default function JobDetailCardsCustomerComponent({ loading, data }) { )}
{`${(data.owner && data.owner.preferred_contact) || ""}`}
- {data.vehicle ? ( - - {`${data.vehicle.v_model_yr || ""} ${data.vehicle.v_make_desc || - ""} ${data.vehicle.v_model_desc || ""}`} - - ) : ( - {t("jobs.errors.novehicle")} - )} +
+ {data.vehicle ? ( + + {`${data.v_model_yr || ""} ${data.v_make_desc || + ""} ${data.v_model_desc || ""}`} + a + + ) : ( + + {`${data.v_model_yr || ""} ${data.v_make_desc || + ""} ${data.v_model_desc || ""}`} + b + + )} + e +
) : null}
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..86a95f94f 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,19 @@ 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} + {area_of_damage ? ( + + ) : t("jobs.errors.nodamage")} ); } 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..5c3713097 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..832f58489 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 @@ -1,4 +1,5 @@ -import { List, Icon } from "antd"; +import { List } from "antd"; +import { WarningFilled, EyeInvisibleFilled } from "@ant-design/icons"; import React from "react"; import { useTranslation } from "react-i18next"; import CardTemplate from "./job-detail-cards.template.component"; @@ -16,21 +17,20 @@ export default function JobDetailCardsNotesComponent({ loading, data }) { + extraLink={`/manage/jobs/${data.id}?notes`} + > {data ? ( ( {item.critical ? ( - - ) : null} - {item.private ? ( - + ) : null} + {item.private ? : null} {item.text} )} diff --git a/client/src/components/job-detail-cards/job-detail-cards.parts.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.parts.component.jsx index e90237dc2..de1aa7882 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.parts.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.parts.component.jsx @@ -1,41 +1,61 @@ import React from "react"; import { useTranslation } from "react-i18next"; import CardTemplate from "./job-detail-cards.template.component"; -import { Pie } from "react-chartjs-2"; - +import { Pie } from "@nivo/pie"; export default function JobDetailCardsPartsComponent({ loading, data }) { const { t } = useTranslation(); - const p = { - labels: ["Not Ordered", "Ordered", "Received", "Backordered"], - datasets: [ - { - data: [5, 15, 10, 2], - backgroundColor: [ - "rgba(255, 99, 132, 0.2)", - "rgba(54, 162, 235, 0.2)", - "rgba(255, 206, 86, 0.2)", - "rgba(75, 192, 192, 0.2)", - "rgba(153, 102, 255, 0.2)", - "rgba(255, 159, 64, 0.2)" - ], - borderColor: [ - "rgba(255, 99, 132, 1)", - "rgba(54, 162, 235, 1)", - "rgba(255, 206, 86, 1)", - "rgba(75, 192, 192, 1)", - "rgba(153, 102, 255, 1)", - "rgba(255, 159, 64, 1)" - ], - borderWidth: 1 - } - ] + const commonProperties = { + width: 225, + height: 225, + margin: { top: 20, right: 30, bottom: 20, left: 30 }, + animate: true }; + const cdata = [ + { + id: "elixir", + label: "elixir", + value: 558, + color: "hsl(21, 70%, 50%)" + }, + { + id: "erlang", + label: "erlang", + value: 443, + color: "hsl(91, 70%, 50%)" + }, + { + id: "css", + label: "css", + value: 161, + color: "hsl(271, 70%, 50%)" + }, + { + id: "python", + label: "python", + value: 305, + color: "hsl(33, 70%, 50%)" + }, + { + id: "php", + label: "php", + value: 360, + color: "hsl(296, 70%, 50%)" + } + ]; + return (
- {data ? : null} +
); 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..3a3f2388e 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,13 +9,13 @@ export default function JobDetailCardsVehicleComponent({ loading, data }) { {data ? ( - {data.vehicle?.v_model_yr || t("general.labels.na")}{" "} - {data.vehicle?.v_make_desc || t("general.labels.na")}{" "} - {data.vehicle?.v_model_desc || t("general.labels.na")} + {` ${data.vehicle?.v_model_yr || t("general.labels.na")} ${ + data.vehicle?.v_make_desc || t("general.labels.na") + } ${data.vehicle?.v_model_desc || t("general.labels.na")}`} ) : null} 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 ( -
- ); - }; - - 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..e62b0d97d 100644 --- a/client/src/components/job-detail-lines/job-lines.component.jsx +++ b/client/src/components/job-detail-lines/job-lines.component.jsx @@ -1,124 +1,286 @@ -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 { connect } from "react-redux"; +import { Link } from "react-router-dom"; +import { setModalContext } from "../../redux/modals/modals.actions"; 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; +const mapDispatchToProps = (dispatch) => ({ + setPartsOrderContext: (context) => + dispatch(setModalContext({ context: context, modal: "partsOrder" })), +}); + +export function JobLinesComponent({ + setPartsOrderContext, + loading, + refetch, + jobLines, + setSearchText, + selectedLines, + setSelectedLines, + jobId, + setJobLineEditContext, +}) { const [state, setState] = useState({ sortedInfo: {}, - filteredInfo: { text: "" } }); - const [editingKey, setEditingKey] = useState(""); const { t } = useTranslation(); 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, + }, + { + 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, + + 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, }, { - title: t("joblines.fields.db_price"), - dataIndex: "db_price", - key: "joblines.db_price", - sorter: (a, b) => a.db_price - b.db_price, + 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 === "db_price" && state.sortedInfo.order, - ellipsis: true, - render: (text, record) => ( - {record.db_price} - ) + state.sortedInfo.columnKey === "line_ind" && state.sortedInfo.order, }, { 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, + render: (text, record) => ( -
- {" "} - {record.act_price}{" "} + {record.act_price} + ), + }, + { + title: t("joblines.fields.part_qty"), + dataIndex: "part_qty", + key: "part_qty", + ellipsis: true, + }, + { + title: t("joblines.fields.total"), + dataIndex: "total", + key: "total", + sorter: (a, b) => a.act_price * a.part_qty - b.act_price * b.part_qty, + sortOrder: + state.sortedInfo.columnKey === "act_price" && state.sortedInfo.order, + ellipsis: true, + + render: (text, record) => ( + + {record.act_price * record.part_qty} + + ), + }, + { + 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", + + 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) => ( + -
- ) - } + + ), + }, ]; const handleTableChange = (pagination, filters, sorter) => { setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); }; - // const handleChange = event => { - // const { value } = event.target; - // setState({ ...state, filterinfo: { text: [value] } }); - // }; return ( -
- {editing ? ( - - {getFieldDecorator(dataIndex, { - rules: [ - { - required: true, - message: `Please Input ${title}!` - } - ], - initialValue: record[dataIndex] - })(this.getInput())} - - ) : ( - children - )} -
{ - 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); + }} + /> + + + +
+ ); + }} + 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} + /> + ); } +export default connect(null, mapDispatchToProps)(JobLinesComponent); 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..2988929cc 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,70 @@ -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 }) { +import { connect } from "react-redux"; +import { setModalContext } from "../../redux/modals/modals.actions"; +const mapDispatchToProps = dispatch => ({ + setJobLineEditContext: context => + dispatch(setModalContext({ context: context, modal: "jobLineEdit" })) +}); - const { loading, error, data } = useQuery(GET_JOB_LINES_BY_PK, { +export 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([]); + 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} + jobId={jobId} + setJobLineEditContext={setJobLineEditContext} + /> ); } - \ No newline at end of file + +export default connect(null, mapDispatchToProps)(JobLinesContainer); 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..338d5d8bf --- /dev/null +++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx @@ -0,0 +1,73 @@ +import { Form, Input, Modal } from "antd"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import InputCurrency from "../form-items-formatted/currency-form-item.component"; + +export default function JobLinesUpsertModalComponent({ + visible, + jobLine, + handleCancel, + handleFinish +}) { + const { t } = useTranslation(); + const [form] = Form.useForm(); + + useEffect(() => { + form.resetFields(); + }, [visible, form]); + + return ( +
+ form.submit()} + onCancel={handleCancel} + > + + + + + + + + + + + + + + + + + + + + + + + + ); +} 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..e3e47a6b2 --- /dev/null +++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx @@ -0,0 +1,90 @@ +import { notification } from "antd"; +import React from "react"; +import { useMutation } from "@apollo/react-hooks"; +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 +}) { + const { t } = useTranslation(); + const [insertJobLine] = useMutation(INSERT_NEW_JOB_LINE); + const [updateJobLine] = useMutation(UPDATE_JOB_LINE); + + const handleFinish = values => { + 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 +)(JobLinesUpsertModalContainer); diff --git a/client/src/components/job-search-select/job-search-select.component.jsx b/client/src/components/job-search-select/job-search-select.component.jsx new file mode 100644 index 000000000..a3801f15e --- /dev/null +++ b/client/src/components/job-search-select/job-search-select.component.jsx @@ -0,0 +1,40 @@ +import { Select } from "antd"; +import React, { useEffect, useState } from "react"; +const { Option } = Select; + +//To be used as a form element only. + +const JobSearchSelect = ({ value, onChange, options, onBlur }) => { + const [option, setOption] = useState(value); + + useEffect(() => { + if (onChange) { + onChange(option); + } + }, [option, onChange]); + + return ( + + ); +}; +export default JobSearchSelect; diff --git a/client/src/components/job-totals-table/job-totals-table.component.jsx b/client/src/components/job-totals-table/job-totals-table.component.jsx new file mode 100644 index 000000000..17e189d6f --- /dev/null +++ b/client/src/components/job-totals-table/job-totals-table.component.jsx @@ -0,0 +1,53 @@ +import { Col, List, Row } from "antd"; +import React from "react"; +export default function JobsTotalsTableComponent({ totals }) { + //const { t } = useTranslation(); + if (!!!totals) return null; + + return ( + +
+ Rates + + {`rate_laa - ${totals.rates.rate_laa.total} (${totals.rates.rate_laa.hours} @ ${totals.rates.rate_laa.rate})`} + {`LAB - ${totals.rates.rate_lab.total} (${totals.rates.rate_lab.hours} @ ${totals.rates.rate_lab.rate})`} + {`rate_lad - ${totals.rates.rate_lad.total} (${totals.rates.rate_lad.hours} @ ${totals.rates.rate_lad.rate})`} + {`rate_lae - ${totals.rates.rate_lae.total} (${totals.rates.rate_lae.hours} @ ${totals.rates.rate_lae.rate})`} + {`rate_laf - ${totals.rates.rate_laf.total} (${totals.rates.rate_laf.hours} @ ${totals.rates.rate_laf.rate})`} + {`rate_lag - ${totals.rates.rate_lag.total} (${totals.rates.rate_lag.hours} @ ${totals.rates.rate_lag.rate})`} + {`rate_lam - ${totals.rates.rate_lam.total} (${totals.rates.rate_lam.hours} @ ${totals.rates.rate_lam.rate})`} + {`rate_lar - ${totals.rates.rate_lar.total} (${totals.rates.rate_lar.hours} @ ${totals.rates.rate_lar.rate})`} + {`rate_las - ${totals.rates.rate_las.total} (${totals.rates.rate_las.hours} @ ${totals.rates.rate_las.rate})`} + {`rate_lau - ${totals.rates.rate_lau.total} (${totals.rates.rate_lau.hours} @ ${totals.rates.rate_lau.rate})`} + {`LA1 - ${totals.rates.rate_la1.total} (${totals.rates.rate_la1.hours} @ ${totals.rates.rate_la1.rate})`} + {`LA2 - ${totals.rates.rate_la2.total} (${totals.rates.rate_la2.hours} @ ${totals.rates.rate_la2.rate})`} + {`LA3 - ${totals.rates.rate_la3.total} (${totals.rates.rate_la3.hours} @ ${totals.rates.rate_la3.rate})`} + {`rate_la4 - ${totals.rates.rate_la4.total} (${totals.rates.rate_la4.hours} @ ${totals.rates.rate_la4.rate})`} + {`paint_mat - ${totals.rates.paint_mat.total} (${totals.rates.paint_mat.hours} @ ${totals.rates.paint_mat.rate})`} + {`shop_mat - ${totals.rates.shop_mat.total} (${totals.rates.shop_mat.hours} @ ${totals.rates.shop_mat.rate})`} + {`rate_atp - ${totals.rates.rate_atp.total} (${totals.rates.rate_atp.hours} @ ${totals.rates.rate_atp.rate})`} + + {`Subtotal: ${totals.rates.subtotal}`} + + + Parts & Sublet + + {`Parts - ${totals.parts.parts.total} (${totals.parts.parts.subtotal} +- ${totals.parts.parts.adjustments})`} + {`Sublet - ${totals.parts.sublets.total} (${totals.parts.sublets.subtotal} +- ${totals.parts.sublets.adjustments})`} + + + + + Totals + + {`Subtotal - ${totals.totals.subtotal}`} + {`GST - ${totals.totals.federal_tax}`} + {`PST - ${totals.totals.state_tax}`} + {`Local - ${totals.totals.local_tax}`} + {`Total Payable - ${totals.totals.total_repairs}`} + {`Net Repairs - ${totals.totals.net_repairs}`} + + + + ); +} diff --git a/client/src/components/job-totals-table/job-totals.utility.js b/client/src/components/job-totals-table/job-totals.utility.js new file mode 100644 index 000000000..3b31eb11c --- /dev/null +++ b/client/src/components/job-totals-table/job-totals.utility.js @@ -0,0 +1,272 @@ +export function CalculateJob(job, shoprates) { + let ret = { + parts: CalculatePartsTotals(job.joblines), + rates: CalculateRatesTotals(job, shoprates), + custPayable: CalculateCustPayable(job), + }; + + ret.totals = CalculateTaxesTotals(job, ret); + + return ret; +} + +function CalculateTaxesTotals(job, otherTotals) { + const subtotal = + otherTotals.parts.parts.subtotal + + otherTotals.parts.sublets.subtotal + + otherTotals.rates.subtotal + + (job.towing_payable || 0) + + (job.storage_payable || 0); //Levies should be included?? + + const statePartsTax = job.joblines.reduce((acc, val) => { + if (!!!val.tax_part) return acc; + if (!!job.parts_tax_rates[val.part_type]) { + return ( + acc + + val.act_price * + val.part_qty * + (job.parts_tax_rates[val.part_type].prt_tax_rt || 0) + ); + } else { + return acc; + } + }, 0); + + // console.log("otherTotals", otherTotals); + // console.log("job", job); + // console.log("parts pst", statePartsTax); + // console.log( + // "pst on labor", + // otherTotals.rates.rates_subtotal * (job.tax_lbr_rt || 0) + // ); + // console.log( + // "pst on mat", + // (otherTotals.rates.paint_mat.total + otherTotals.rates.shop_mat.total) * + // (job.tax_paint_mat_rt || 0) + // ); + + let ret = { + subtotal: subtotal, + federal_tax: subtotal * (job.federal_tax_rate || 0), + statePartsTax, + state_tax: + statePartsTax + + otherTotals.rates.rates_subtotal * (job.tax_lbr_rt || 0) + + ((job.towing_payable || 0) * job.tax_tow_rt || 0) + + ((job.storage_payable || 0) * job.tax_str_rt || 0) + + (otherTotals.rates.paint_mat.total + otherTotals.rates.shop_mat.total) * + (job.tax_paint_mat_rt || 0), + local_tax: subtotal * (job.local_tax_rate || 0), + }; + + ret.total_repairs = + ret.subtotal + ret.federal_tax + ret.state_tax + ret.local_tax; + ret.net_repairs = ret.total_repairs - otherTotals.custPayable.total; + + return ret; +} + +function CalculateRatesTotals(ratesList, shoprates) { + const jobLines = ratesList.joblines; + + let ret = { + rate_la1: { + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LA1") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + rate: ratesList.rate_la1 || 0, + }, + rate_la2: { + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LA2") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + rate: ratesList.rate_la2 || 0, + }, + rate_la3: { + rate: ratesList.rate_la3 || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LA3") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_la4: { + rate: ratesList.rate_la4 || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LA4") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_laa: { + rate: ratesList.rate_laa || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAA") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_lab: { + rate: ratesList.rate_lab || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAB") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_lad: { + rate: ratesList.rate_lad || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAD") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_lae: { + rate: ratesList.rate_lae || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAE") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_laf: { + rate: ratesList.rate_laf || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAF") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_lag: { + rate: ratesList.rate_lag || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAG") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_lam: { + rate: ratesList.rate_lam || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAM") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_lar: { + rate: ratesList.rate_lar || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAR") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_las: { + rate: ratesList.rate_las || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAS") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_lau: { + rate: ratesList.rate_lau || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAU") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + rate_atp: { + rate: shoprates.rate_atp || 0, + hours: + jobLines.filter((item) => item.line_desc.includes("ATS Amount")) + .length > 0 + ? jobLines + .filter( + (item) => + item.mod_lbr_ty !== "LA1" && + item.mod_lbr_ty !== "LA2" && + item.mod_lbr_ty !== "LA3" && + item.mod_lbr_ty !== "LA4" && + item.mod_lbr_ty !== "LAU" && + item.mod_lbr_ty !== "LAG" && + item.mod_lbr_ty !== "LAS" && + item.mod_lbr_ty !== "LAA" + ) + .reduce((acc, value) => acc + value.mod_lb_hrs, 0) + : 0, + }, + paint_mat: { + rate: ratesList.rate_mapa || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty === "LAR") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + shop_mat: { + rate: ratesList.rate_mash || 0, + hours: jobLines + .filter((item) => item.mod_lbr_ty !== "LAR") + .reduce((acc, value) => acc + value.mod_lb_hrs, 0), + }, + }; + + let subtotal = 0; + let rates_subtotal = 0; + for (const property in ret) { + ret[property].total = ret[property].hours * ret[property].rate; + subtotal = subtotal + ret[property].hours * ret[property].rate; + if ( + property !== "paint_mat" && + property !== "shop_mat" + //&& property !== "rate_atp" + ) + rates_subtotal = + rates_subtotal + ret[property].hours * ret[property].rate; + } + ret.subtotal = subtotal; + ret.rates_subtotal = rates_subtotal; + return ret; +} + +function CalculatePartsTotals(jobLines) { + const ret = jobLines.reduce( + (acc, value) => { + switch (value.part_type) { + case "PAA": + case "PAC": + case "PAG": + case "PAL": + case "PAM": + case "PAN": + case "PAO": + case "PAP": + case "PAR": + return { + ...acc, + parts: { + ...acc.parts, + subtotal: acc.parts.subtotal + value.act_price * value.part_qty, + //TODO Add Adjustments in + }, + }; + case "PAS": + case "PASL": + return { + ...acc, + sublets: { + ...acc.sublets, + subtotal: acc.sublets.subtotal + value.act_price, + //TODO Add Adjustments in + }, + }; + default: + return acc; + } + }, + { + parts: { subtotal: 0, adjustments: 0, total: 0 }, + sublets: { subtotal: 0, adjustments: 0, total: 0 }, + } + ); + + return { + parts: { ...ret.parts, total: ret.parts.subtotal + ret.parts.adjustments }, + sublets: { + ...ret.sublets, + total: ret.sublets.subtotal + ret.sublets.adjustments, + }, + }; +} + +function CalculateCustPayable(job) { + return { + deductible: job.ded_amt || 0, + federal_tax: job.federal_tax_payable || 0, //TODO Should this be renamed to make it more clear this is customer GST? + other_customer_amount: job.other_amount_payable || 0, + dep_taxes: job.depreciation_taxes || 0, + total: + job.ded_amt || + 0 + job.federal_tax_payable || + 0 + job.other_amount_payable || + 0 + job.depreciation_taxes || + 0, + }; +} 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..7a91e4555 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 @@ -1,9 +1,12 @@ -import { Button, Icon, Input, notification, Table } from "antd"; +import { DeleteFilled, PlusCircleFilled, SyncOutlined } from "@ant-design/icons"; +import { Button, notification, Table } from "antd"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { DateTimeFormatter } from "../../utils/DateFormatter"; import { alphaSort } from "../../utils/sorters"; import OwnerFindModalContainer from "../owner-find-modal/owner-find-modal.container"; + export default function JobsAvailableComponent({ loading, data, @@ -77,7 +80,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 }, @@ -119,7 +125,7 @@ export default function JobsAvailableComponent({ }); }} > - + ) @@ -141,7 +147,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; @@ -163,19 +170,13 @@ export default function JobsAvailableComponent({ title={() => { return (
- { - console.log(value); - }} - enterButton - /> + {t("jobs.labels.availablenew")} ) @@ -140,54 +157,60 @@ export default function JobsAvailableSupplementComponent({ ]; return ( -
{ - return ( -
- { - console.log(value); - }} - enterButton - /> - -
{ + return ( +
+ {t("jobs.labels.availablesupplements")} + + -
- ); - }} - 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..a341f920f 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,30 +1,152 @@ -import React from "react"; -import { useMutation, useQuery } from "react-apollo"; +import { useMutation, useQuery } from "@apollo/react-hooks"; +import { notification } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { useHistory } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; +import { CalculateJob } from "../../components/job-totals-table/job-totals.utility"; import { DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS, QUERY_AVAILABLE_SUPPLEMENT_JOBS } from "../../graphql/available-jobs.queries"; +import { UPDATE_JOB } from "../../graphql/jobs.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; import JobsAvailableSupplementComponent from "./jobs-available-supplement.component"; +import HeaderFields from "./jobs-available-supplement.headerfields"; -export default function JobsAvailableSupplementContainer({ +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +export function JobsAvailableSupplementContainer({ deleteJob, - estDataLazyLoad + estDataLazyLoad, + bodyshop, }) { const { loading, error, data, refetch } = useQuery( QUERY_AVAILABLE_SUPPLEMENT_JOBS, { - fetchPolicy: "network-only" + fetchPolicy: "network-only", } ); + const { t } = useTranslation(); + const history = useHistory(); const [deleteAllNewJobs] = useMutation(DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS); + 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; + console.log("supp before", supp); + + //TODO How to update the estimate lines. + delete supp.owner; + delete supp.vehicle; + + if (importOptions.overrideHeaders) { + HeaderFields.forEach((item) => delete supp[item]); + } + + const newTotals = CalculateJob( + { + ...estData.data.available_jobs_by_pk.est_data, + joblines: estData.data.available_jobs_by_pk.est_data.joblines.data, + }, + bodyshop.shoprates + ); + + console.log('newTotals', newTotals) + delete supp.joblines; + updateJob({ + variables: { + jobId: selectedJob, + job: { + ...supp, + clm_total: newTotals.totals.total_repairs, + owner_owing: newTotals.custPayable.total, + job_totals: newTotals, + }, + }, + }) + .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 ( - + + + ); } +export default connect(mapStateToProps, null)(JobsAvailableSupplementContainer); diff --git a/client/src/components/jobs-available-supplement/jobs-available-supplement.headerfields.js b/client/src/components/jobs-available-supplement/jobs-available-supplement.headerfields.js new file mode 100644 index 000000000..3085f16c4 --- /dev/null +++ b/client/src/components/jobs-available-supplement/jobs-available-supplement.headerfields.js @@ -0,0 +1,225 @@ +const headerFields = [ + //AD1 + "ins_co_id", + "ins_co_nm", + "ins_addr1", + "ins_addr2", + "ins_city", + "ins_st", + "ins_zip", + "ins_ctry", + "ins_ea", + "policy_no", + "ded_amt", + "ded_status", + "asgn_no", + "asgn_date", + "asgn_type", + "clm_no", + "clm_ofc_id", + "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_date", + "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", + "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", + "loss_cat", + //ad2 + "clmt_ln", + "clmt_fn", + "clmt_title", + "clmt_co_nm", + "clmt_addr1", + "clmt_addr2", + "clmt_city", + "clmt_st", + "clmt_zip", + "clmt_ctry", + "clmt_ph1", + "clmt_ph1x", + "clmt_ph2", + "clmt_ph2x", + "clmt_fax", + "clmt_faxx", + "clmt_ea", + "est_co_id", + "est_co_nm", + "est_addr1", + "est_addr2", + "est_city", + "est_st", + "est_zip", + "est_ctry", + "est_ph1", + "est_ph1x", + "est_ph2", + "est_ph2x", + "est_fax", + "est_faxx", + "est_ct_ln", + "est_ct_fn", + "est_ea", + "est_lic_no", + "est_fileno", + "insp_ct_ln", + "insp_ct_fn", + "insp_addr1", + "insp_addr2", + "insp_city", + "insp_st", + "insp_zip", + "insp_ctry", + "insp_ph1", + "insp_ph1x", + "insp_ph2", + "insp_ph2x", + "insp_fax", + "insp_faxx", + "insp_ea", + "insp_code", + "insp_desc", + "insp_date", + "insp_time", + "rf_co_id", + "rf_co_nm", + "rf_addr1", + "rf_addr2", + "rf_city", + "rf_st", + "rf_zip", + "rf_ctry", + "rf_ph1", + "rf_ph1x", + "rf_ph2", + "rf_ph2x", + "rf_fax", + "rf_faxx", + "rf_ct_ln", + "rf_ct_fn", + "rf_ea", + "rf_tax_id", + "rf_lic_no", + "rf_bar_no", + "ro_in_date", + "ro_in_time", + "tar_date", + "tar_time", + "ro_cmpdate", + "ro_cmptime", + "date_out", + "time_out", + "rf_estimtr", + "mktg_type", + "mktg_src", + "loc_nm", + "loc_addr1", + "loc_addr2", + "loc_city", + "loc_st", + "loc_zip", + "loc_ctry", + "loc_ph1", + "loc_ph1x", + "loc_ph2", + "loc_ph2x", + "loc_fax", + "loc_faxx", + "loc_ct_ln", + "loc_ct_fn", + "loc_title", + "loc_ph", + "loc_phx", + "loc_ea" +]; + +export default headerFields; diff --git a/client/src/components/jobs-create-jobs-info/jobs-create-jobs-info.component.jsx b/client/src/components/jobs-create-jobs-info/jobs-create-jobs-info.component.jsx new file mode 100644 index 000000000..770e68c3e --- /dev/null +++ b/client/src/components/jobs-create-jobs-info/jobs-create-jobs-info.component.jsx @@ -0,0 +1,290 @@ +import { Collapse, Form, Input, InputNumber, Switch, DatePicker } 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"; + +export default function JobsCreateJobsInfo({ form }) { + const { t } = useTranslation(); + const { getFieldValue } = form; + return ( +
+ + + + + + + + + + + + + + + TODO: missing KOL field??? + + + + CAA # seems not correct based on field mapping Class seems not correct + based on field mapping + + + + + + + + + + + + + + + + + + + + + + Appraiser Info + + + + + + + + + + TODO: Field is pay date but title is inspection date. Likely + incorrect? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO How to handle different taxes and marking them as exempt? + { + // + // {getFieldDecorator("exempt", { + // initialValue: job.exempt + // })()} + // + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO This is equivalent of GST payable. + + + + TODO equivalent of other customer amount + + + + + + + + + + + + + Totals Table + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note //TODO Remove ATP rate? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.component.jsx b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.component.jsx new file mode 100644 index 000000000..b3de7c85a --- /dev/null +++ b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.component.jsx @@ -0,0 +1,28 @@ +import React from "react"; +import { Row, Col, Typography } from "antd"; +import JobsCreateOwnerInfoNewComponent from "./jobs-create-owner-info.new.component"; +import JobsCreateOwnerInfoSearchComponent from "./jobs-create-owner-info.search.component"; +import { useTranslation } from "react-i18next"; + +export default function JobsCreateOwnerInfoComponent({ loading, owners }) { + const { t } = useTranslation(); + return ( +
+ + {t("jobs.labels.create.ownerinfo")} + + +
+ + + + + + + + + ); +} diff --git a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.container.jsx b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.container.jsx new file mode 100644 index 000000000..b0b72d99f --- /dev/null +++ b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.container.jsx @@ -0,0 +1,22 @@ +import React, { useContext } from "react"; +import JobsCreateOwnerInfoComponent from "./jobs-create-owner-info.component"; +import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; +import { QUERY_SEARCH_OWNER_BY_IDX } from "../../graphql/owners.queries"; +import { useQuery } from "@apollo/react-hooks"; +import AlertComponent from "../alert/alert.component"; + +export default function JobsCreateOwnerContainer() { + const [state] = useContext(JobCreateContext); + const { loading, error, data } = useQuery(QUERY_SEARCH_OWNER_BY_IDX, { + variables: { search: `%${state.owner.search}%` }, + skip: !state.owner.search + }); + + if (error) return ; + return ( + + ); +} diff --git a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.new.component.jsx b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.new.component.jsx new file mode 100644 index 000000000..2b3fa0380 --- /dev/null +++ b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.new.component.jsx @@ -0,0 +1,122 @@ +import { Form, Input, Checkbox, Switch } from "antd"; +import React, { useContext } from "react"; +import { useTranslation } from "react-i18next"; +import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; +import FormItemEmail from "../form-items-formatted/email-form-item.component"; +import FormItemPhone from "../form-items-formatted/phone-form-item.component"; + +export default function JobsCreateOwnerInfoNewComponent() { + const [state, setState] = useContext(JobCreateContext); + + const { t } = useTranslation(); + return ( +
+ { + setState({ + ...state, + owner: { + ...state.owner, + new: !state.owner.new, + selectedid: null + } + }); + }} + > + {t("jobs.labels.create.newowner")} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.search.component.jsx b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.search.component.jsx new file mode 100644 index 000000000..4704fd933 --- /dev/null +++ b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.search.component.jsx @@ -0,0 +1,144 @@ +import { Input, Table } from "antd"; +import React, { useContext, useState } from "react"; +import { useTranslation } from "react-i18next"; +import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; +import PhoneFormatter from "../../utils/PhoneFormatter"; +import { alphaSort } from "../../utils/sorters"; + +export default function JobsCreateOwnerInfoSearchComponent({ + loading, + owners +}) { + const [state, setState] = useContext(JobCreateContext); + const [tableState, setTableState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("owners.fields.ownr_ln"), + dataIndex: "ownr_ln", + key: "ownr_ln", + sorter: (a, b) => alphaSort(a.ownr_ln, b.ownr_ln), + sortOrder: + tableState.sortedInfo.columnKey === "ownr_ln" && + tableState.sortedInfo.order + }, + { + title: t("owners.fields.ownr_fn"), + dataIndex: "ownr_fn", + key: "ownr_fn", + sorter: (a, b) => alphaSort(a.ownr_fn, b.ownr_fn), + sortOrder: + tableState.sortedInfo.columnKey === "ownr_fn" && + tableState.sortedInfo.order + }, + { + title: t("owners.fields.ownr_addr1"), + dataIndex: "ownr_addr1", + key: "ownr_addr1", + sorter: (a, b) => alphaSort(a.ownr_addr1, b.ownr_addr1), + sortOrder: + tableState.sortedInfo.columnKey === "ownr_addr1" && + tableState.sortedInfo.order + }, + { + title: t("owners.fields.ownr_city"), + dataIndex: "ownr_city", + key: "ownr_city", + sorter: (a, b) => alphaSort(a.ownr_city, b.ownr_city), + sortOrder: + tableState.sortedInfo.columnKey === "ownr_city" && + tableState.sortedInfo.order + }, + { + title: t("owners.fields.ownr_ea"), + dataIndex: "ownr_ea", + key: "ownr_ea", + sorter: (a, b) => alphaSort(a.ownr_ea, b.ownr_ea), + sortOrder: + tableState.sortedInfo.columnKey === "ownr_ea" && + tableState.sortedInfo.order + }, + { + title: t("owners.fields.ownr_ph1"), + dataIndex: "ownr_ph1", + key: "ownr_ph1", + render: (text, record) => ( + {record.ownr_ph1} + ), + sorter: (a, b) => alphaSort(a.ownr_ph1, b.ownr_ph1), + sortOrder: + tableState.sortedInfo.columnKey === "ownr_ph1" && + tableState.sortedInfo.order + } + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setTableState({ ...tableState, filteredInfo: filters, sortedInfo: sorter }); + }; + //TODO Implement searching & pagination + + return ( +
{ + return ( + { + setState({ + ...state, + owner: { ...state.owner, search: value } + }); + }} + enterButton + /> + ); + }} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={owners} + onChange={handleTableChange} + rowSelection={{ + onSelect: props => { + setState({ + ...state, + owner: { ...state.owner, new: false, selectedid: props.id } + }); + }, + type: "radio", + selectedRowKeys: [state.owner.selectedid] + }} + onRow={(record, rowIndex) => { + return { + onClick: event => { + if (record) { + if (record.id) { + setState({ + ...state, + owner: { + ...state.owner, + new: false, + selectedid: record.id + } + }); + + return; + } + } + setState({ + ...state, + owner: { ...state.owner, selectedid: null } + }); + } + }; + }} + /> + ); +} diff --git a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.component.jsx b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.component.jsx new file mode 100644 index 000000000..39b3711a5 --- /dev/null +++ b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.component.jsx @@ -0,0 +1,25 @@ +import { Col, Row, Typography } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import JobsCreateVehicleInfoNewComponent from "./jobs-create-vehicle-info.new.component"; +import JobsCreateVehicleInfoSearchComponent from "./jobs-create-vehicle-info.search.component"; + +export default function JobsCreateVehicleInfoComponent({ loading, vehicles }) { + const { t } = useTranslation(); + return ( +
+ {t("jobs.labels.create.vehicleinfo")} + +
+ + + + + + + + ); +} diff --git a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.container.jsx b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.container.jsx new file mode 100644 index 000000000..6c899aabd --- /dev/null +++ b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.container.jsx @@ -0,0 +1,21 @@ +import React, { useContext } from "react"; +import JobsCreateVehicleInfoComponent from "./jobs-create-vehicle-info.component"; +import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; +import AlertComponent from "../alert/alert.component"; +import { SEARCH_VEHICLE_BY_VIN } from "../../graphql/vehicles.queries"; +import { useQuery } from "@apollo/react-hooks"; + +export default function JobsCreateVehicleInfoContainer({ form }) { + const [state] = useContext(JobCreateContext); + const { loading, error, data } = useQuery(SEARCH_VEHICLE_BY_VIN, { + variables: { vin: `%${state.vehicle.search}%` }, + skip: !state.vehicle.search + }); + if (error) return ; + return ( + + ); +} diff --git a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.new.component.jsx b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.new.component.jsx new file mode 100644 index 000000000..015c60e53 --- /dev/null +++ b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.new.component.jsx @@ -0,0 +1,195 @@ +import { DatePicker, Form, Input, Checkbox } from "antd"; +import React, { useContext } from "react"; +import { useTranslation } from "react-i18next"; +import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; + +export default function JobsCreateVehicleInfoNewComponent() { + const [state, setState] = useContext(JobCreateContext); + + const { t } = useTranslation(); + return ( +
+ { + setState({ + ...state, + vehicle: { + ...state.vehicle, + new: !state.vehicle.new, + selectedid: null + } + }); + }} + > + {t("jobs.labels.create.newvehicle")} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + //TODO Add handling for paint code json + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.search.component.jsx b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.search.component.jsx new file mode 100644 index 000000000..0a42d9707 --- /dev/null +++ b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.search.component.jsx @@ -0,0 +1,123 @@ +import React, { useContext, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Table, Input } from "antd"; +import { Link } from "react-router-dom"; +import { alphaSort } from "../../utils/sorters"; +import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; + +export default function JobsCreateVehicleInfoSearchComponent({ + loading, + vehicles +}) { + const [state, setState] = useContext(JobCreateContext); + const [tableState, setTableState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" } + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("vehicles.fields.v_vin"), + dataIndex: "v_vin", + key: "v_vin", + sorter: (a, b) => alphaSort(a.v_vin, b.v_vin), + sortOrder: + tableState.sortedInfo.columnKey === "v_vin" && + tableState.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) => { + setTableState({ ...tableState, filteredInfo: filters, sortedInfo: sorter }); + }; + //TODO Implement searching & pagination + + return ( +
{ + return ( + { + setState({ + ...state, + vehicle: { ...state.vehicle, search: value } + }); + }} + enterButton + /> + ); + }} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={vehicles} + onChange={handleTableChange} + rowSelection={{ + onSelect: props => { + setState({ + ...state, + vehicle: { + ...state.vehicle, + new: false, + selectedid: props.id, + vehicleObj: props + } + }); + }, + type: "radio", + selectedRowKeys: [state.vehicle.selectedid] + }} + onRow={(record, rowIndex) => { + return { + onClick: event => { + if (record) { + if (record.id) { + setState({ + ...state, + vehicle: { + ...state.vehicle, + new: false, + selectedid: record.id, + vehicleObj: record + } + }); + + return; + } + } + setState({ + ...state, + vehicle: { ...state.vehicle, selectedid: null, vehicleObj: null } + }); + } + }; + }} + /> + ); +} 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..0e5078cb3 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 @@ -1,26 +1,19 @@ import { Form, Input, Switch } from "antd"; -import React, { useContext } from "react"; +import React from "react"; import { useTranslation } from "react-i18next"; -import JobDetailFormContext from "../../pages/jobs-detail/jobs-detail.page.context"; export default function JobsDetailClaims({ job }) { - const form = useContext(JobDetailFormContext); - const { getFieldDecorator } = form; const { t } = useTranslation(); return (
- - {getFieldDecorator("csr", { - initialValue: job.csr - })()} + + - - {getFieldDecorator("loss_desc", { - 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", { @@ -28,36 +21,27 @@ export default function JobsDetailClaims({ job }) { // })()} // } - - {getFieldDecorator("po_number", { - initialValue: job.po_number - })()} + + - - {getFieldDecorator("unit_number", { - initialValue: job.unit_number - })()} + + - - {getFieldDecorator("special_coverage_policy", { - initialValue: job.special_coverage_policy, - valuePropName: "checked" - })()} + + - - {getFieldDecorator("kmin", { - initialValue: job.kmin - })()} + + - - {getFieldDecorator("kmout", { - initialValue: job.kmout - })()} + + - - {getFieldDecorator("referral_source", { - initialValue: job.referral_source - })()} + +
); 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..e2c033f05 --- /dev/null +++ b/client/src/components/jobs-detail-dates/jobs-detail-dates.component.jsx @@ -0,0 +1,79 @@ +import { DatePicker, Form } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; + +export default function JobsDetailDatesComponent({ job }) { + const { t } = useTranslation(); + + // initialValue: job.loss_date ? moment(job.loss_date) : null + // initialValue: job.date_estimated ? moment(job.date_estimated) : null + // initialValue: job.date_open ? moment(job.date_open) : null + // initialValue: job.date_scheduled ? moment(job.date_scheduled) : null + // initialValue: job.scheduled_in ? moment(job.scheduled_in) : null + // initialValue: job.actual_in ? moment(job.actual_in) : null + // initialValue: job.scheduled_completion ? moment(job.scheduled_completion) : null + // initialValue: job.actual_completion ? moment(job.actual_completion) : null + // initialValue: job.scheduled_delivery ? moment(job.scheduled_delivery) : null + // initialValue: job.actual_delivery ? moment(job.actual_delivery) : null + // initialValue: job.date_invoiced ? moment(job.date_invoiced) : null + // initialValue: job.date_closed ? moment(job.date_closed) : null + // initialValue: job.date_exported ? moment(job.date_exported) : null + + return ( +
+ + + + CAA # seems not correct based on field mapping Class seems not correct + based on field mapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} 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..8b5a820cd 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,57 +1,139 @@ -import { Form, Input, InputNumber } from "antd"; -import React, { useContext } from "react"; +import { Divider, Form, Input, InputNumber, Row, Col } from "antd"; +import React from "react"; import { useTranslation } from "react-i18next"; -import JobDetailFormContext from "../../pages/jobs-detail/jobs-detail.page.context"; +import JobTotalsTable from "../job-totals-table/job-totals-table.component"; export default function JobsDetailFinancials({ job }) { - const form = useContext(JobDetailFormContext); - const { getFieldDecorator } = form; const { t } = useTranslation(); return ( -
- - {getFieldDecorator("ded_amt", { - initialValue: job.ded_amt - })()} - - - {getFieldDecorator("ded_status", { - initialValue: job.ded_status - })()} - - - {getFieldDecorator("depreciation_taxes", { - initialValue: job.depreciation_taxes - })()} - - TODO: This is equivalent of GST payable. - - {getFieldDecorator("federal_tax_payable", { - initialValue: job.federal_tax_payable - })()} - - TODO: equivalent of other customer amount - - {getFieldDecorator("other_amount_payable", { - initialValue: job.other_amount_payable - })()} - - - {getFieldDecorator("towing_payable", { - initialValue: job.towing_payable - })()} - - - {getFieldDecorator("storage_payable", { - initialValue: job.storage_payable - })()} - - - {getFieldDecorator("adjustment_bottom_line", { - initialValue: job.adjustment_bottom_line - })()} - -
+ +
+ + + + + + + + + + TODO This is equivalent of GST payable. + + + + TODO equivalent of other customer amount + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note //TODO Remove ATP rate? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); } diff --git a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx new file mode 100644 index 000000000..164c96c3c --- /dev/null +++ b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx @@ -0,0 +1,71 @@ +import React from "react"; +import { Menu, Dropdown, Button, Popconfirm } from "antd"; +import { useTranslation } from "react-i18next"; +import { DownCircleFilled } from "@ant-design/icons"; +import { Link } from "react-router-dom"; +import DuplicateJob from "./jobs-detail-header-actions.duplicate"; +import { useApolloClient } from "@apollo/react-hooks"; + +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import { useHistory } from "react-router-dom"; +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + //setUserLanguage: language => dispatch(setUserLanguage(language)) +}); + +export function JobsDetailHeaderActions({ job, bodyshop }) { + const { t } = useTranslation(); + const client = useApolloClient(); + const history = useHistory(); + const statusmenu = ( + + + + {t("menus.jobsactions.newcccontract")} + + + + e.stopPropagation()} + onConfirm={() => + DuplicateJob( + client, + job.id, + { defaultOpenStatus: bodyshop.md_ro_statuses.default_imported }, + (newJobId) => { + history.push(`/manage/jobs/${newJobId}`); + } + ) + } + getPopupContainer={(trigger) => trigger.parentNode} + > + {t("menus.jobsactions.duplicate")} + + + + ); + return ( + + + + ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(JobsDetailHeaderActions); diff --git a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.duplicate.js b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.duplicate.js new file mode 100644 index 000000000..43cf3b477 --- /dev/null +++ b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.duplicate.js @@ -0,0 +1,49 @@ +import { + QUERY_ALL_JOB_FIELDS, + INSERT_NEW_JOB, +} from "../../graphql/jobs.queries"; + +export default function DuplicateJob( + apolloClient, + jobId, + config, + completionCallback +) { + const { defaultOpenStatus } = config; + //get a list of all fields on the job + apolloClient + .query({ query: QUERY_ALL_JOB_FIELDS, variables: { id: jobId } }) + .then((res) => { + const { jobs_by_pk: existingJob } = res.data; + delete existingJob.__typename; + delete existingJob.id; + + existingJob.date_estimated = new Date(); + existingJob.status = defaultOpenStatus; + + const _tempLines = existingJob.joblines; + _tempLines.forEach((line) => { + delete line.id; + delete line.__typename; + }); + + delete existingJob.joblines; + existingJob.joblines = { data: _tempLines }; + + apolloClient + .mutate({ + mutation: INSERT_NEW_JOB, + variables: { job: [existingJob] }, + }) + .then((res2) => { + console.log("res2", res2); + + if (completionCallback) + completionCallback(res2.data.insert_jobs.returning[0].id); + }); + }); + + //insert the new job. call the callback with the returned ID when done. + + return; +} 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..0678c2622 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,125 +1,174 @@ +import { DownCircleFilled } from "@ant-design/icons"; import { Avatar, + Badge, Button, Checkbox, Descriptions, + Dropdown, + Menu, notification, PageHeader, - Tag + Tag, } from "antd"; 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"; +import OwnerTagPopoverComponent from "../owner-tag-popover/owner-tag-popover.component"; +import VehicleTagPopoverComponent from "../vehicle-tag-popover/vehicle-tag-popover.component"; +import JobsDetailHeaderActions from "../jobs-detail-header-actions/jobs-detail-header-actions.component"; +import { setModalContext } from "../../redux/modals/modals.actions"; +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + setScheduleContext: (context) => + dispatch(setModalContext({ context: context, modal: "schedule" })), +}); -export default function JobsDetailHeader({ +export function JobsDetailHeader({ job, mutationConvertJob, refetch, - getFieldDecorator + + bodyshop, + updateJobStatus, + setScheduleContext, }) { const { t } = useTranslation(); const tombstoneTitle = (
- {`${t("jobs.fields.ro_number")} ${ - job.ro_number ? job.ro_number : t("general.labels.na") - }`} + {job.ro_number + ? `${t("jobs.fields.ro_number")} ${job.ro_number}` + : `EST-${job.est_number}`}
); - 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 = [ + + + , + + + , , + , + {t("general.actions.save")} + , ]; return ( - {job.job_status ? ( - {job.job_status.name} - ) : null} + {job.status ? {job.status} : null} + + + } extra={menuExtra} > - - {job.claim_total} + + {job.clm_total} - - ##NO BINDING YET## + + {job.owner_owing} - + - + {job.scheduled_completion ? ( {job.scheduled_completion} ) : null} - - {job.service_car} + + {job.cccontracts && + job.cccontracts.map((item) => ( + +
{`${item.agreementnumber} - ${item.start} - ${item.scheduledreturn}`}
+ + ))}
); } + +export default connect(mapStateToProps, mapDispatchToProps)(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..4fb2f4e14 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 @@ -1,148 +1,115 @@ -import { Divider, Form, Input, DatePicker } from "antd"; -import React, { useContext } from "react"; +import { DatePicker, Divider, Form, Input } from "antd"; +import React from "react"; import { useTranslation } from "react-i18next"; -import JobDetailFormContext from "../../pages/jobs-detail/jobs-detail.page.context"; import FormItemEmail from "../form-items-formatted/email-form-item.component"; import FormItemPhone from "../form-items-formatted/phone-form-item.component"; -import moment from "moment"; -export default function JobsDetailInsurance({ job }) { - const form = useContext(JobDetailFormContext); - const { getFieldDecorator, getFieldValue } = form; +export default function JobsDetailInsurance({ job, form }) { + const { getFieldValue } = form; const { t } = useTranslation(); - - console.log("job.loss_date", job.loss_date); + //initialValue: job.loss_date ? moment(job.loss_date) : null return (
- - {getFieldDecorator("ins_co_id", { - initialValue: job.ins_co_id - })()} + + - - {getFieldDecorator("policy_no", { - initialValue: job.policy_no - })()} + + - - {getFieldDecorator("clm_no", { - initialValue: job.clm_no - })()} + + - - {getFieldDecorator("regie_number", { - initialValue: job.regie_number - })()} + + TODO: missing KOL field??? - - {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("ins_co_nm", { - initialValue: job.ins_co_nm - })()} + + - - {getFieldDecorator("ins_addr1", { - initialValue: job.ins_addr1 - })()} + + - - {getFieldDecorator("ins_city", { - initialValue: job.ins_city - })()} + + - - {getFieldDecorator("ins_ct_ln", { - initialValue: job.ins_ct_ln - })()} + + - - {getFieldDecorator("ins_ct_fn", { - initialValue: job.ins_ct_fn - })()} + + - - {getFieldDecorator("ins_ph1", { - initialValue: job.ins_ph1 - })()} + + - - {getFieldDecorator("ins_ea", { - initialValue: job.ins_ea, - rules: [ - { - type: "email", - message: "This is not a valid email address." - } - ] - })()} + + Appraiser Info - - {getFieldDecorator("est_co_nm", { - initialValue: job.est_co_nm - })()} + + - - {getFieldDecorator("est_ct_fn", { - initialValue: job.est_ct_fn - })()} + + - - {getFieldDecorator("est_ct_ln", { - initialValue: job.est_ct_ln - })()} + + TODO: Field is pay date but title is inspection date. Likely incorrect? - - {getFieldDecorator("pay_date", { - initialValue: job.pay_date - })()} + + - - {getFieldDecorator("est_ph1", { - initialValue: job.est_ph1 - })()} + + - - {getFieldDecorator("est_ea", { - initialValue: job.est_ea, - rules: [ - { - type: "email", - message: "This is not a valid email address." - } - ] - })()} + + - - {getFieldDecorator("selling_dealer", { - initialValue: job.selling_dealer - })()} + + - - {getFieldDecorator("servicing_dealer", { - initialValue: job.servicing_dealer - })()} + + - - {getFieldDecorator("selling_dealer_contact", { - initialValue: job.selling_dealer_contact - })()} + + - - {getFieldDecorator("servicing_dealer_contact", { - initialValue: job.servicing_dealer_contact - })()} + + TODO: Adding servicing/selling dealer contact info?
diff --git a/client/src/components/jobs-detail-labor/jobs-detail-labor.component.jsx b/client/src/components/jobs-detail-labor/jobs-detail-labor.component.jsx new file mode 100644 index 000000000..e7e6aea22 --- /dev/null +++ b/client/src/components/jobs-detail-labor/jobs-detail-labor.component.jsx @@ -0,0 +1,30 @@ +import React from "react"; +import LaborAllocationsTableComponent from "../labor-allocations-table/labor-allocations-table.component"; +import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component"; +import TimeTicketList from "../time-ticket-list/time-ticket-list.component"; +import { useTranslation } from "react-i18next"; +export default function JobsDetailLaborContainer({ + jobId, + joblines, + timetickets, + refetch, + loading, +}) { + const { t } = useTranslation(); + return ( +
+ + {t("timetickets.actions.enter")} + + + +
+ ); +} diff --git a/client/src/components/jobs-detail-labor/jobs-detail-labor.container.jsx b/client/src/components/jobs-detail-labor/jobs-detail-labor.container.jsx new file mode 100644 index 000000000..51f631a26 --- /dev/null +++ b/client/src/components/jobs-detail-labor/jobs-detail-labor.container.jsx @@ -0,0 +1,24 @@ +import { useQuery } from "@apollo/react-hooks"; +import React from "react"; +import { GET_LINE_TICKET_BY_PK } from "../../graphql/jobs-lines.queries"; +import AlertComponent from "../alert/alert.component"; +import JobsDetailLaborComponent from "./jobs-detail-labor.component"; + +export default function JobsDetailLaborContainer({ jobId }) { + const { loading, error, data, refetch } = useQuery(GET_LINE_TICKET_BY_PK, { + variables: { id: jobId }, + skip: !!!jobId, + }); + + if (error) return ; + + 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..ae26ad764 --- /dev/null +++ b/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx @@ -0,0 +1,48 @@ +import { Button } from "antd"; +import React from "react"; +import { connect } from "react-redux"; +import { setModalContext } from "../../redux/modals/modals.actions"; +import AlertComponent from "../alert/alert.component"; +import InvoicesListTableComponent from "../invoices-list-table/invoices-list-table.component"; + +const mapDispatchToProps = (dispatch) => ({ + setInvoiceEnterContext: (context) => + dispatch(setModalContext({ context: context, modal: "invoiceEnter" })), +}); + +export function JobsDetailPliComponent({ + setInvoiceEnterContext, + job, + invoicesQuery, + handleOnRowClick, + selectedInvoice, +}) { + return ( +
+ + {invoicesQuery.error ? ( + + ) : null} + +
+ ); +} + +export default connect(null, mapDispatchToProps)(JobsDetailPliComponent); 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..9a36680a8 --- /dev/null +++ b/client/src/components/jobs-detail-pli/jobs-detail-pli.container.jsx @@ -0,0 +1,36 @@ +import React from "react"; +import { useQuery } from "@apollo/react-hooks"; +import JobsDetailPliComponent from "./jobs-detail-pli.component"; +import { QUERY_INVOICES_BY_JOBID } from "../../graphql/invoices.queries"; +import { useHistory, useLocation } from "react-router-dom"; +import queryString from "query-string"; + +export default function JobsDetailPliContainer({ job }) { + const invoicesQuery = useQuery(QUERY_INVOICES_BY_JOBID, { + variables: { jobid: job.id }, + }); + + const search = queryString.parse(useLocation().search); + const history = useHistory(); + + const handleOnRowClick = (record) => { + if (record) { + if (record.id) { + search.invoiceid = record.id; + history.push({ search: queryString.stringify(search) }); + } + } else { + delete search.invoiceid; + history.push({ search: queryString.stringify(search) }); + } + }; + + return ( + + ); +} diff --git a/client/src/components/jobs-documents-gallery/jobs-document-gallery.download.component.jsx b/client/src/components/jobs-documents-gallery/jobs-document-gallery.download.component.jsx new file mode 100644 index 000000000..30b64f26d --- /dev/null +++ b/client/src/components/jobs-documents-gallery/jobs-document-gallery.download.component.jsx @@ -0,0 +1,24 @@ +import { Button } from "antd"; +import axios from "axios"; +import React from "react"; +import { useTranslation } from "react-i18next"; + +export default function JobsDocumentsDownloadButton({ galleryImages }) { + const { t } = useTranslation(); + const imagesToDownload = galleryImages.filter((image) => image.isSelected); + const handleDelete = () => { + axios + .post("/media/download", { + ids: imagesToDownload.map((_) => _.key), + }) + .then((r) => { + window.open(r.data); + }); + }; + + return ( + + ); +} diff --git a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.component.jsx b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.component.jsx new file mode 100644 index 000000000..3ec6d4f6b --- /dev/null +++ b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.component.jsx @@ -0,0 +1,57 @@ +import React, { useEffect, useState } from "react"; +import Gallery from "react-grid-gallery"; +import DocumentsUploadContainer from "../documents-upload/documents-upload.container"; +import JobsDocumentsDownloadButton from "./jobs-document-gallery.download.component"; +import JobsDocumentsDeleteButton from "./jobs-documents-gallery.delete.component"; + +function JobsDocumentsComponent({ data, jobId, refetch }) { + const [galleryImages, setgalleryImages] = useState([]); + + useEffect(() => { + setgalleryImages( + data.reduce((acc, value) => { + acc.push({ + src: `${process.env.REACT_APP_CLOUDINARY_IMAGE_ENDPOINT}/${value.key}.jpg`, + thumbnail: `${process.env.REACT_APP_CLOUDINARY_IMAGE_ENDPOINT}/h_200,w_200,c_thumb/${value.key}.jpg`, + tags: value.type.includes("pdf") + ? [{ value: "PDF", title: "PDF" }] + : [], + thumbnailHeight: 200, + thumbnailWidth: 200, + isSelected: false, + key: value.key, + id: value.id, + }); + return acc; + }, []) + ); + }, [data, setgalleryImages]); + + return ( +
+ + + + + + { + setgalleryImages( + galleryImages.map((g, idx) => + index === idx ? { ...g, isSelected: !g.isSelected } : g + ) + ); + }} + /> +
+ ); +} +export default JobsDocumentsComponent; diff --git a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.container.jsx b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.container.jsx new file mode 100644 index 000000000..8c1de1f84 --- /dev/null +++ b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.container.jsx @@ -0,0 +1,18 @@ +import React from "react"; +import { useQuery } from "@apollo/react-hooks"; +import { GET_DOCUMENTS_BY_JOB } from "../../graphql/documents.queries"; +import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import JobDocuments from "./jobs-documents-gallery.component"; + +export default function JobsDocumentsContainer({ jobId }) { + const { loading, error, data, refetch } = useQuery(GET_DOCUMENTS_BY_JOB, { + variables: { jobId: jobId }, + fetchPolicy: "network-only" + }); + + if (loading) return ; + if (error) return ; + + return ; +} diff --git a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.delete.component.jsx b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.delete.component.jsx new file mode 100644 index 000000000..863e06b8a --- /dev/null +++ b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.delete.component.jsx @@ -0,0 +1,72 @@ +import { Button, notification } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import axios from "axios"; +import { useMutation } from "@apollo/react-hooks"; +import { DELETE_DOCUMENT } from "../../graphql/documents.queries"; + +export default function JobsDocumentsDeleteButton({ + galleryImages, + deletionCallback, +}) { + const { t } = useTranslation(); + const [deleteDocument] = useMutation(DELETE_DOCUMENT); + const imagesToDelete = galleryImages.filter((image) => image.isSelected); + const handleDelete = () => { + imagesToDelete.forEach((image) => { + let timestamp = Math.floor(Date.now() / 1000); + let public_id = image.key; + + axios + .post("/media/sign", { + public_id: public_id, + timestamp: timestamp, + }) + .then((response) => { + var signature = response.data; + var options = { + headers: { "X-Requested-With": "XMLHttpRequest" }, + }; + const formData = new FormData(); + formData.append("api_key", process.env.REACT_APP_CLOUDINARY_API_KEY); + formData.append("public_id", public_id); + formData.append("timestamp", timestamp); + formData.append("signature", signature); + + axios + .post( + `${process.env.REACT_APP_CLOUDINARY_ENDPOINT}/destroy`, + formData, + options + ) + .then((response) => { + deleteDocument({ variables: { id: image.id } }) + .then((r) => { + if (deletionCallback) deletionCallback(); + }) + .catch((error) => { + notification["error"]({ + message: t("documents.errors.deleting", { + message: JSON.stringify(error), + }), + }); + }); + //Delete it from our database. + }) + .catch((error) => { + notification["error"]({ + message: t("documents.errors.deleting_cloudinary", { + message: JSON.stringify(error), + }), + }); + }); + }); + }); + }; + + return ( + + ); +} diff --git a/client/src/components/jobs-documents/jobs-documents.styles.scss b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.styles.scss similarity index 100% rename from client/src/components/jobs-documents/jobs-documents.styles.scss rename to client/src/components/jobs-documents-gallery/jobs-documents-gallery.styles.scss diff --git a/client/src/components/jobs-documents/jobs-documents.component.jsx b/client/src/components/jobs-documents/jobs-documents.component.jsx deleted file mode 100644 index 1bbd68d12..000000000 --- a/client/src/components/jobs-documents/jobs-documents.component.jsx +++ /dev/null @@ -1,249 +0,0 @@ -import { Icon, Modal, notification, Upload } from "antd"; -import axios from "axios"; -import React, { useState } from "react"; -import { useMutation } from "react-apollo"; -import { useTranslation } from "react-i18next"; -import Resizer from "react-image-file-resizer"; -import { - INSERT_NEW_DOCUMENT, - DELETE_DOCUMENT -} from "../../graphql/documents.queries"; -import "./jobs-documents.styles.scss"; -import { generateCdnThumb } from "../../utils/DocHelpers"; - -function getBase64(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.readAsDataURL(file); - reader.onload = () => resolve(reader.result); - reader.onerror = error => reject(error); - }); -} - -function JobsDocumentsComponent({ shopId, jobId, loading, data, currentUser }) { - const { t } = useTranslation(); - const [insertNewDocument] = useMutation(INSERT_NEW_DOCUMENT); - const [deleteDocument] = useMutation(DELETE_DOCUMENT); - - const [state, setState] = useState({ - previewVisible: false, - previewImage: "" - }); - - const [fileList, setFileList] = useState( - data.reduce((acc, value) => { - acc.push({ - uid: value.id, - url: value.thumb_url, - name: value.name, - status: "done", - full_url: value.url, - key: value.key - }); - return acc; - }, []) - ); - - const uploadToS3 = ( - fileName, - fileType, - file, - onError, - onSuccess, - onProgress - ) => { - axios - .post("/sign_s3", { - fileName, - fileType - }) - .then(response => { - var returnData = response.data.data.returnData; - var signedRequest = returnData.signedRequest; - var url = returnData.url; - setState({ ...state, url: url }); - // Put the fileType in the headers for the upload - var options = { - headers: { - "Content-Type": fileType - }, - onUploadProgress: e => { - onProgress({ percent: (e.loaded / e.total) * 100 }); - } - }; - - axios - .put(signedRequest, file, options) - .then(response => { - console.log("response from axios", response); - insertNewDocument({ - variables: { - docInput: [ - { - jobid: jobId, - uploaded_by: currentUser.email, - url, - thumb_url: generateCdnThumb(fileName), - key: fileName - } - ] - } - }).then(r => { - onSuccess({ - uid: r.data.insert_documents.returning[0].id, - url: r.data.insert_documents.returning[0].thumb_url, - name: r.data.insert_documents.returning[0].name, - status: "done", - full_url: r.data.insert_documents.returning[0].url, - key: r.data.insert_documents.returning[0].key - }); - notification["success"]({ - message: t("documents.successes.insert") - }); - }); - - setState({ ...state, success: true }); - }) - .catch(error => { - console.log("Error uploading to S3", error); - onError(error); - notification["error"]({ - message: t("documents.errors.insert") + JSON.stringify(error) - }); - }); - }) - .catch(error => { - console.log("Outside Error here.", error); - notification["error"]({ - message: t("documents.errors.getpresignurl") + JSON.stringify(error) - }); - }); - }; - - const handleUpload = ev => { - const { onError, onSuccess, onProgress } = ev; - //If PDF, upload directly. - //If JPEG, resize and upload. - let key = `${shopId}/${jobId}/${ev.file.name}`; - if (ev.file.type === "application/pdf") { - console.log("It's a PDF."); - uploadToS3(key, ev.file.type, ev.file, onError, onSuccess, onProgress); - } else { - Resizer.imageFileResizer( - ev.file, - 3000, - 3000, - "JPEG", - 75, - 0, - uri => { - let file = new File([uri], ev.file.name, {}); - file.uid = ev.file.uid; - uploadToS3(key, file.type, file, onError, onSuccess, onProgress); - }, - "blob" - ); - } - }; - const handleCancel = () => setState({ ...state, previewVisible: false }); - - const handlePreview = async file => { - if (!file.full_url && !file.url) { - file.preview = await getBase64(file.originFileObj); - } - - setState({ - ...state, - previewImage: file.full_url || file.url, - previewVisible: true - }); - }; - const handleChange = props => { - const { event, fileList, file } = props; - //Required to ensure that the state accurately reflects new data and that images can be deleted in feeded. - if (!event) { - //SPread the new file in where the old one was. - const newFileList = fileList.map(i => - i.uid === file.uid ? Object.assign({}, i, file.response) : i - ); - setFileList(newFileList); - } else { - setFileList(fileList); - } - }; - - const { previewVisible, previewImage } = state; - - const handleRemove = file => { - console.log("file", file); - - //Remove the file on S3 - axios - .post("/delete_s3", { fileName: file.key }) - .then(response => { - //Delete the record in our database. - if (response.status === 200) { - deleteDocument({ variables: { id: file.uid } }).then(r => { - notification["success"]({ - message: t("documents.successes.delete") - }); - }); - } else { - notification["error"]({ - message: - 1 + - t("documents.errors.deletes3") + - JSON.stringify(response.message) - }); - } - }) - .catch(error => { - notification["error"]({ - message: "2" + t("documents.errors.deletes3") + JSON.stringify(error) - }); - }); - }; - - return ( -
- - -

- -

-

- Click or drag file to this area to upload -

-

- Support for a single or bulk upload. Strictly prohibit from uploading - company data or other band files -

-
- - example - -
- ); -} -export default JobsDocumentsComponent; diff --git a/client/src/components/jobs-documents/jobs-documents.container.jsx b/client/src/components/jobs-documents/jobs-documents.container.jsx deleted file mode 100644 index 32aedb3f5..000000000 --- a/client/src/components/jobs-documents/jobs-documents.container.jsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from "react"; -import { useQuery } from "react-apollo"; -import { QUERY_SHOP_ID } from "../../graphql/bodyshop.queries"; -import { GET_DOCUMENTS_BY_JOB } from "../../graphql/documents.queries"; -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 { loading, error, data } = useQuery(GET_DOCUMENTS_BY_JOB, { - variables: { jobId: jobId }, - fetchPolicy: "network-only" - }); - - const shopData = useQuery(QUERY_SHOP_ID, { - fetchPolicy: "network-only" - }); - - const user = useQuery(GET_CURRENT_USER); - - if (loading || shopData.loading || user.loading) return ; - if (error || shopData.error || user.error) - return ( - - ); - - return ( - - ); -} 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..df454863e --- /dev/null +++ b/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx @@ -0,0 +1,171 @@ +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; + console.log("importOptions", importOptions); + 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.v_model_yr || ""} ${record.v_make_desc || + ""} ${record.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.plate_no ? ( + {record.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, + overrideHeaders: 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..b05e3b653 --- /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 "@apollo/react-hooks"; +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..4c4d628f9 100644 --- a/client/src/components/jobs-list/jobs-list.component.jsx +++ b/client/src/components/jobs-list/jobs-list.component.jsx @@ -1,44 +1,51 @@ -import { Input, Table, Icon } from "antd"; +import { Button, Input, Table } from "antd"; +import { SyncOutlined } from "@ant-design/icons"; 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"; +import { useHistory } from "react-router-dom"; +import queryString from "query-string"; export default withRouter(function JobsList({ + searchTextState, + refetch, loading, jobs, - selectedJob, - setSelectedJob, - history + searchParams, }) { + const { selected } = searchParams; + const [state, setState] = useState({ sortedInfo: {}, - filteredInfo: { text: "" } + filteredInfo: { text: "" }, }); const { t } = useTranslation(); - + const history = useHistory(); + const setSearchText = searchTextState[1]; const columns = [ { title: t("jobs.fields.ro_number"), dataIndex: "ro_number", key: "ro_number", 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 : a.est_number, + b.ro_number ? b.ro_number : b.est_number + ), sortOrder: state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order, render: (text, record) => ( - - - {record.ro_number ? record.ro_number : "EST-" + record.est_number} - - - ) + + {record.ro_number ? record.ro_number : record.est_number} + + ), }, { title: t("jobs.fields.owner"), @@ -52,18 +59,15 @@ export default withRouter(function JobsList({ render: (text, record) => { return record.owner ? ( - {record.ownr_fn} {record.ownr_ln} + {`${record.ownr_fn} ${record.ownr_ln}`} ) : ( - // 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,18 +76,10 @@ export default withRouter(function JobsList({ return record.ownr_ph1 ? ( {record.ownr_ph1} - { - alert("SMSing will happen here."); - }} - /> + - ) : ( - t("general.labels.unknown") - ); - } + ) : null; + }, }, { title: t("jobs.fields.status"), @@ -91,12 +87,12 @@ 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"); + }, }, { @@ -106,15 +102,18 @@ export default withRouter(function JobsList({ 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} + return record.vehicleid ? ( + + {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${ + record.v_model_desc || "" + }`} ) : ( - t("jobs.errors.novehicle") + {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${ + record.v_model_desc || "" + }`} ); - } + }, }, { title: t("vehicles.fields.plate_no"), @@ -122,16 +121,12 @@ export default withRouter(function JobsList({ key: "plate_no", width: "8%", ellipsis: true, - sorter: (a, b) => alphaSort(a, b), + sorter: (a, b) => alphaSort(a.plate_no, b.plate_no), sortOrder: state.sortedInfo.columnKey === "plate_no" && state.sortedInfo.order, render: (text, record) => { - return record.vehicle?.plate_no ? ( - {record.vehicle.plate_no} - ) : ( - t("general.labels.unknown") - ); - } + return record.plate_no ? record.plate_no : ""; + }, }, { title: t("jobs.fields.clm_no"), @@ -139,7 +134,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) => { @@ -148,59 +143,51 @@ export default withRouter(function JobsList({ ) : ( t("general.labels.unknown") ); - } + }, }, { 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") ); - } + }, }, { title: t("jobs.fields.owner_owing"), dataIndex: "owner_owing", key: "owner_owing", width: "8%", - render: (text, record) => { - return record.owner_owing ? ( - {record.owner_owing} - ) : ( - t("general.labels.unknown") - ); - } - } + render: (text, record) => ( + {record.owner_owing} + ), + }, ]; const handleTableChange = (pagination, filters, sorter) => { setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); }; - // const handleChange = event => { - // const { value } = event.target; - // setState({ ...state, filterinfo: { text: [value] } }); - // }; - - const handleOnRowClick = record => { + const handleOnRowClick = (record) => { if (record) { if (record.id) { - setSelectedJob(record.id); - history.push(`#${record.id}`); - return; + console.log("searchParams", searchParams); + history.push({ + search: queryString.stringify({ + ...searchParams, + selected: record.id, + }), + }); } } - setSelectedJob(null); }; return ( @@ -209,31 +196,42 @@ 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' + columns={columns.map((item) => ({ ...item }))} + rowKey="id" dataSource={jobs} - rowSelection={{ selectedRowKeys: [selectedJob] }} + rowSelection={{ + onSelect: (record) => { + handleOnRowClick(record); + }, + selectedRowKeys: [selected], + type: "radio", + }} onChange={handleTableChange} onRow={(record, rowIndex) => { return { - onClick: event => { + onClick: (event) => { handleOnRowClick(record); }, // click row - onDoubleClick: event => {}, // double click row - onContextMenu: event => {}, // right button click row - onMouseEnter: event => {}, // mouse enter row - onMouseLeave: event => {} // mouse leave row + onDoubleClick: (event) => {}, // double click row + onContextMenu: (event) => {}, // right button click row + onMouseEnter: (event) => {}, // mouse enter row + onMouseLeave: (event) => {}, // mouse leave row }; }} /> diff --git a/client/src/components/jobs-notes/jobs-notes.container.jsx b/client/src/components/jobs-notes/jobs-notes.container.jsx index cc738a329..2270e13f6 100644 --- a/client/src/components/jobs-notes/jobs-notes.container.jsx +++ b/client/src/components/jobs-notes/jobs-notes.container.jsx @@ -1,6 +1,6 @@ import React from "react"; import JobNotesComponent from "./jobs.notes.component"; -import { useQuery, useMutation } from "react-apollo"; +import { useQuery, useMutation } from "@apollo/react-hooks"; import AlertComponent from "../../components/alert/alert.component"; //import SpinComponent from "../../components/loading-spinner/loading-spinner.component"; import { diff --git a/client/src/components/jobs-notes/jobs.notes.component.jsx b/client/src/components/jobs-notes/jobs.notes.component.jsx index 0a1071a2f..493a6fbe0 100644 --- a/client/src/components/jobs-notes/jobs.notes.component.jsx +++ b/client/src/components/jobs-notes/jobs.notes.component.jsx @@ -1,19 +1,32 @@ -import React, { useState } from "react"; -import { Table, Button, Icon, notification } from "antd"; +import { + DeleteFilled, + EditFilled, + EyeInvisibleFilled, + WarningFilled +} from "@ant-design/icons"; +import { Button, notification, Table } from "antd"; +import React from "react"; import { useTranslation } from "react-i18next"; import Moment from "react-moment"; +import { connect } from "react-redux"; +import { setModalContext } from "../../redux/modals/modals.actions"; import NoteUpsertModal from "../note-upsert-modal/note-upsert-modal.container"; -export default function JobNotesComponent({ +const mapDispatchToProps = dispatch => ({ + setNoteUpsertContext: context => + dispatch(setModalContext({ context: context, modal: "noteUpsert" })) +}); + +export function JobNotesComponent({ loading, data, refetch, deleteNote, - jobId + jobId, + setNoteUpsertContext }) { const { t } = useTranslation(); - const [noteModalVisible, setNoteModalVisible] = useState(false); - const [existingNote, setExistingNote] = useState(null); + const columns = [ { title: "", @@ -22,13 +35,10 @@ export default function JobNotesComponent({ width: 80, render: (text, record) => ( - {" "} {record.critical ? ( - - ) : null} - {record.private ? ( - + ) : null} + {record.private ? : null} ) }, @@ -48,7 +58,7 @@ export default function JobNotesComponent({ sorter: (a, b) => new Date(a.updated_at) - new Date(b.updated_at), render: (text, record) => ( - {record.updated_at} + {record.updated_at} ) }, @@ -77,15 +87,22 @@ export default function JobNotesComponent({ message: t("notes.successes.deleted") }); }); - }}> - + }} + > + ) @@ -94,27 +111,27 @@ export default function JobNotesComponent({ return (
- +
({ ...item }))} - rowKey='id' + rowKey="id" dataSource={data} /> ); } +export default connect(null, mapDispatchToProps)(JobNotesComponent); diff --git a/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx b/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx new file mode 100644 index 000000000..95946e919 --- /dev/null +++ b/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx @@ -0,0 +1,54 @@ +import React, { useState, useEffect } from "react"; +import { Typography, Row, Col } from "antd"; +import { useTranslation } from "react-i18next"; +import { CalculateAllocationsTotals } from "./labor-allocations-table.utility"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +export function LaborAllocationsTable({ joblines, timetickets, bodyshop }) { + const { t } = useTranslation(); + + const [totals, setTotals] = useState([]); + useEffect(() => { + if (!!joblines && !!timetickets && !!bodyshop); + setTotals( + CalculateAllocationsTotals( + bodyshop.md_responsibility_centers, + joblines, + timetickets + ) + ); + }, [joblines, timetickets, bodyshop]); + + return ( +
+ + {t("jobs.labels.laborallocations")} + + + +
+ {t("timetickets.fields.cost_center")} + + + {t("jobs.labels.hrs_total")} + + + {t("jobs.labels.hrs_claimed")} + + + {totals.map((t, idx) => ( + + {t.cost_center} + {t.total} + {t.claimed} + + ))} + + ); +} +export default connect(mapStateToProps, null)(LaborAllocationsTable); diff --git a/client/src/components/labor-allocations-table/labor-allocations-table.utility.js b/client/src/components/labor-allocations-table/labor-allocations-table.utility.js new file mode 100644 index 000000000..5db9d60ae --- /dev/null +++ b/client/src/components/labor-allocations-table/labor-allocations-table.utility.js @@ -0,0 +1,29 @@ +export const CalculateAllocationsTotals = ( + responsibilitycenters, + joblines, + timetickets +) => { + const jobCodes = joblines + .map((item) => item.mod_lbr_ty) + .filter((value, index, self) => self.indexOf(value) === index && !!value); + const ticketCodes = timetickets + .map((item) => item.cieca_code) + .filter((value, index, self) => self.indexOf(value) === index && !!value); + const allCodes = [...jobCodes, ...ticketCodes]; + + const r = allCodes.reduce((acc, value) => { + acc.push({ + opcode: value, + cost_center: responsibilitycenters.defaults[value], + total: joblines.reduce((acc2, val2) => { + return val2.mod_lbr_ty === value ? acc2 + val2.mod_lb_hrs : acc2; + }, 0), + claimed: timetickets.reduce((acc3, val3) => { + return val3.ciecacode === value ? acc3 + val3.productivehrs : acc3; + }, 0), + }); + return acc; + }, []); + + return r; +}; 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..e66b0f1af 100644 --- a/client/src/components/loading-spinner/loading-spinner.component.jsx +++ b/client/src/components/loading-spinner/loading-spinner.component.jsx @@ -4,14 +4,19 @@ import "./loading-spinner.styles.scss"; export default function LoadingSpinner({ loading = true, message, ...props }) { return ( - - {props.children} - +
+ + {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..63b6b1163 100644 --- a/client/src/components/loading-spinner/loading-spinner.styles.scss +++ b/client/src/components/loading-spinner/loading-spinner.styles.scss @@ -1,3 +1,7 @@ .loading-spinner { - text-align: center; + display: flex; + height: 50%; + align-items: center; + justify-content: center; + margin: 1em; } 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..5b0e60a72 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 { BuildFilled, LoginOutlined } from "@ant-design/icons"; import React from "react"; -import { useQuery } from "react-apollo"; +import { connect } from "react-redux"; 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 { 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..1e7c6c8ce 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 @@ -1,57 +1,41 @@ -import { Input, Modal, Switch } from "antd"; +import { Form, Input, Switch } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; -export default function NoteUpsertModalComponent({ - visible, - changeVisibility, - noteState, - setNoteState, - updateExistingNote, - insertNewNote -}) { +export default function NoteUpsertModalComponent() { const { t } = useTranslation(); return ( - { - noteState.id ? updateExistingNote() : insertNewNote(); - }} - onCancel={() => { - changeVisibility(false); - }}> -
- {t("notes.fields.critical")} - { - setNoteState({ ...noteState, critical: checked }); - }} +
+ + + + + + + + -
-
- {t("notes.fields.private")} - { - setNoteState({ ...noteState, private: checked }); - }} - /> -
- - { - setNoteState({ ...noteState, text: e.target.value }); - }} - /> - + +
); } diff --git a/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx b/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx index ba7e46422..4de2601c3 100644 --- a/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx +++ b/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx @@ -1,75 +1,97 @@ -import { notification } from "antd"; -import React, { useEffect, useState } from "react"; -import { useMutation } from "react-apollo"; +import { useMutation } from "@apollo/react-hooks"; +import { Form, Modal, notification } from "antd"; +import React, { useEffect } from "react"; import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; import { INSERT_NEW_NOTE, UPDATE_NOTE } from "../../graphql/notes.queries"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; +import { selectNoteUpsert } from "../../redux/modals/modals.selectors"; +import { selectCurrentUser } from "../../redux/user/user.selectors"; import NoteUpsertModalComponent from "./note-upsert-modal.component"; -export default function NoteUpsertModalContainer({ - jobId, - visible, - changeVisibility, - refetch, - existingNote +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, + noteUpsertModal: selectNoteUpsert +}); +const mapDispatchToProps = dispatch => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("noteUpsert")) +}); + +export function NoteUpsertModalContainer({ + currentUser, + noteUpsertModal, + toggleModalVisible }) { const { t } = useTranslation(); const [insertNote] = useMutation(INSERT_NEW_NOTE); const [updateNote] = useMutation(UPDATE_NOTE); - const [noteState, setNoteState] = useState({ - private: false, - critical: false, - text: "" - }); + const { visible, context, actions } = noteUpsertModal; + const { jobId, existingNote } = context; + const { refetch } = actions; + + const [form] = Form.useForm(); useEffect(() => { //Required to prevent infinite looping. if (existingNote) { - setNoteState(existingNote); + form.resetFields(); } - }, [existingNote]); + }, [existingNote, form]); - const insertNewNote = () => { - insertNote({ - variables: { - noteInput: [ - { ...noteState, jobid: jobId, created_by: "patrick@bodyshop.app" } //TODO: Fix the created by. - ] - } - }).then(r => { - refetch(); - changeVisibility(!visible); - notification["success"]({ - message: t("notes.successes.create") + const handleFinish = values => { + if (existingNote) { + updateNote({ + variables: { + noteId: existingNote.id, + note: values + } + }).then(r => { + notification["success"]({ + message: t("notes.successes.updated") + }); }); - }); - }; - - const updateExistingNote = () => { - //Required, otherwise unable to spread in new note prop. - delete noteState.__typename; - updateNote({ - variables: { - noteId: noteState.id, - note: noteState - } - }).then(r => { - notification["success"]({ - message: t("notes.successes.updated") + if (refetch) refetch(); + toggleModalVisible(); + } else { + insertNote({ + variables: { + noteInput: [ + { ...values, jobid: jobId, created_by: currentUser.email } + ] + } + }).then(r => { + if (refetch) refetch(); + toggleModalVisible(); + notification["success"]({ + message: t("notes.successes.create") + }); }); - }); - refetch(); - changeVisibility(!visible); + } }; return ( - + okText={t("general.actions.save")} + onOk={() => { + form.submit(); + }} + onCancel={() => { + toggleModalVisible(); + }} + destroyOnClose + > +
+ + +
); } + +export default connect( + mapStateToProps, + mapDispatchToProps +)(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..f7eff1b11 --- /dev/null +++ b/client/src/components/owner-detail-form/owner-detail-form.component.jsx @@ -0,0 +1,75 @@ +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"; + +export default function OwnerDetailFormComponent({ form }) { + const { t } = useTranslation(); + const { getFieldValue } = form; + return ( +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} 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..f938359bc --- /dev/null +++ b/client/src/components/owner-detail-form/owner-detail-form.container.jsx @@ -0,0 +1,38 @@ +import { Form, notification } from "antd"; +import React from "react"; +import { useMutation } from "@apollo/react-hooks"; +import { useTranslation } from "react-i18next"; +import { UPDATE_OWNER } from "../../graphql/owners.queries"; +import OwnerDetailFormComponent from "./owner-detail-form.component"; + +function OwnerDetailFormContainer({ owner, refetch }) { + const { t } = useTranslation(); + const [form] = Form.useForm(); + + const [updateOwner] = useMutation(UPDATE_OWNER); + + const handleFinish = values => { + 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(); + // resetFields(); + }); + }; + + return ( + + + + ); +} +export default 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..a83b0d684 --- /dev/null +++ b/client/src/components/owner-detail-jobs/owner-detail-jobs.component.jsx @@ -0,0 +1,91 @@ +import { Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { Link } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +import OwnerDetailUpdateJobsComponent from "../owner-detail-update-jobs/owner-detail-update-jobs.component"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +function OwnerDetailJobsComponent({ bodyshop, owner }) { + const { t } = useTranslation(); + const [selectedJobs, setSelectedJobs] = useState([]); + 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: "vehicleid", + key: "vehicleid", + render: (text, record) => ( + + {`${record.v_model_yr} ${record.v_make_desc} ${record.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 ( +
( +
+ +
+ )} + pagination={{ position: "bottom" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={owner.jobs} + rowSelection={{ + onSelect: (record, selected, selectedRows) => { + setSelectedJobs(selectedRows ? selectedRows.map(i => i.id) : []); + }, + + selectedRowKeys: selectedJobs, + getCheckboxProps: record => ({ + disabled: bodyshop.md_ro_statuses.open_statuses + ? !bodyshop.md_ro_statuses.open_statuses.includes(record.status) + : true + }) + }} + /> + ); +} +export default connect(mapStateToProps, null)(OwnerDetailJobsComponent); diff --git a/client/src/components/owner-detail-update-jobs/owner-detail-update-jobs.component.jsx b/client/src/components/owner-detail-update-jobs/owner-detail-update-jobs.component.jsx new file mode 100644 index 000000000..4bb455d3b --- /dev/null +++ b/client/src/components/owner-detail-update-jobs/owner-detail-update-jobs.component.jsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Button, notification } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation } from "@apollo/react-hooks"; +import { UPDATE_JOBS } from "../../graphql/jobs.queries"; + +export default function OwnerDetailUpdateJobsComponent({ + owner, + selectedJobs, + disabled +}) { + const { t } = useTranslation(); + const [updateJobs] = useMutation(UPDATE_JOBS); + const handlecClick = e => { + updateJobs({ + variables: { + jobIds: selectedJobs, + fields: { + ownr_addr1: owner["ownr_addr1"], + ownr_addr2: owner["ownr_addr2"], + ownr_co_nm: owner["ownr_co_nm"], + ownr_city: owner["ownr_city"], + ownr_ctry: owner["ownr_ctry"], + ownr_ea: owner["ownr_ea"], + ownr_fn: owner["ownr_fn"], + ownr_ph1: owner["ownr_ph1"], + ownr_ln: owner["ownr_ln"], + ownr_ph2: owner["ownr_ph2"], + ownr_st: owner["ownr_st"], + ownr_title: owner["ownr_title"], + ownr_zip: owner["ownr_zip"] + } + } + }) + .then(response => { + notification["success"]({ message: t("jobs.successes.updated") }); + }) + .catch(error => { + notification["error"]({ + message: t("jobs.errors.updating", { error: JSON.stringify(error) }) + }); + }); + }; + + return ( + + ); +} 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..301ed230d 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 @@ -17,51 +17,26 @@ export default function OwnerFindModalComponent({ title: t("owners.fields.ownr_ln"), dataIndex: "ownr_ln", key: "ownr_ln" - //width: "8%", - // onFilter: (value, record) => record.ro_number.includes(value), - // // filteredValue: state.filteredInfo.text || null, - // sorter: (a, b) => alphaSort(a, b), - // sortOrder: - // state.sortedInfo.columnKey === "cieca_id" && state.sortedInfo.order }, { title: t("owners.fields.ownr_fn"), dataIndex: "ownr_fn", key: "ownr_fn" - // ellipsis: true, - // sorter: (a, b) => alphaSort(a.ownr_ln, b.ownr_ln), - // //width: "25%", - // sortOrder: - // state.sortedInfo.columnKey === "ownr_name" && state.sortedInfo.order }, { title: t("owners.fields.ownr_addr1"), dataIndex: "ownr_addr1", key: "ownr_addr1" - // sorter: (a, b) => alphaSort(a.vehicle_info, b.vehicle_info), - // sortOrder: - // state.sortedInfo.columnKey === "vehicle_info" && state.sortedInfo.order - //ellipsis: true }, { title: t("owners.fields.ownr_city"), dataIndex: "ownr_city", key: "ownr_city" - // sorter: (a, b) => alphaSort(a.clm_no, b.clm_no), - // sortOrder: - // state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order - //width: "12%", - //ellipsis: true }, { title: t("owners.fields.ownr_ea"), dataIndex: "ownr_ea", key: "ownr_ea" - // sorter: (a, b) => a.clm_amt - b.clm_amt, - // sortOrder: - // state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order - //width: "12%", - //ellipsis: true }, { title: t("owners.fields.ownr_ph1"), @@ -70,11 +45,6 @@ export default function OwnerFindModalComponent({ render: (text, record) => ( {record.ownr_ph1} ) - // sorter: (a, b) => alphaSort(a.uploaded_by, b.uploaded_by), - // sortOrder: - // state.sortedInfo.columnKey === "uploaded_by" && state.sortedInfo.order - //width: "12%", - //ellipsis: true } ]; @@ -118,7 +88,7 @@ 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..8dd5d2c3c 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 @@ -1,6 +1,6 @@ import { Modal } from "antd"; import React from "react"; -import { useQuery } from "react-apollo"; +import { useQuery } from "@apollo/react-hooks"; import { useTranslation } from "react-i18next"; import { QUERY_SEARCH_OWNER_BY_IDX } from "../../graphql/owners.queries"; import AlertComponent from "../alert/alert.component"; @@ -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/owner-tag-popover/owner-tag-popover.component.jsx b/client/src/components/owner-tag-popover/owner-tag-popover.component.jsx new file mode 100644 index 000000000..69ccc602f --- /dev/null +++ b/client/src/components/owner-tag-popover/owner-tag-popover.component.jsx @@ -0,0 +1,79 @@ +import { Button, Col, Popover, Row, Tag, Descriptions } 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 OwnerTagPopoverComponent({ job }) { + const { t } = useTranslation(); + const content = ( +
+ +
+ + {`${job.ownr_fn || + ""} ${job.ownr_ln || ""} ${job.ownr_co_nm || + ""}`} + + {job.ownr_ph1 || ""} + + + {`${job.ownr_addr1 || ""} ${job.ownr_addr2 || + ""} ${job.ownr_city || ""} ${job.ownr_st || + ""} ${job.ownr_zip || ""} ${job.ownr_ctry || + ""} ${job.ownr_city || ""}`} + + + {job.ownr_ea || ""} + { + //TODO Should add an email formatter. + } + + + + + + {`${job + .owner.ownr_fn || ""} ${job.owner.ownr_ln || ""} ${job.owner + .ownr_co_nm || ""}`} + + {job.owner.ownr_ph1 || ""} + + + {`${job.owner.ownr_addr1 || ""} ${job.owner.ownr_addr2 || + ""} ${job.owner.ownr_city || ""} ${job.owner.ownr_st || + ""} ${job.owner.ownr_zip || ""} ${job.owner.ownr_ctry || + ""} ${job.owner.ownr_city || ""}`} + + + {job.owner.ownr_ea || ""} + { + //TODO Should add an email formatter. + } + + + + + + + + + ); + + return ( + + + {job.owner + ? `${job.ownr_co_nm || ""}${job.ownr_fn || ""} ${job.ownr_ln || ""}` + : t("jobs.errors.noowner")} + + + ); +} 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..0e8ebcd46 --- /dev/null +++ b/client/src/components/owners-list/owners-list.container.jsx @@ -0,0 +1,20 @@ +import React from "react"; +import { useQuery } from "@apollo/react-hooks"; +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..c4f5a4874 --- /dev/null +++ b/client/src/components/parts-order-modal/parts-order-modal.component.jsx @@ -0,0 +1,105 @@ +import { DeleteFilled } from "@ant-design/icons"; +import { DatePicker, Form, Input, Radio } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import VendorSearchSelect from "../vendor-search-select/vendor-search-select.component"; +import CurrencyInput from "../form-items-formatted/currency-form-item.component"; +export default function PartsOrderModalComponent({ + vendorList, + sendTypeState +}) { + const [sendType, setSendType] = sendTypeState; + + const { t } = useTranslation(); + + return ( +
+ + + + + + + {t("parts_orders.labels.inthisorder")} + + + {(fields, { add, remove }) => { + return ( +
+ {fields.map((field, index) => ( + +
+ + + + + + + + + + + + + { + remove(field.name); + }} + /> +
+
+ ))} +
+ ); + }} +
+ 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..9dc1d5020 --- /dev/null +++ b/client/src/components/parts-order-modal/parts-order-modal.container.jsx @@ -0,0 +1,172 @@ +import { useMutation, useQuery } from "@apollo/react-hooks"; +import { Form, Modal, notification } from "antd"; +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { EmailSettings } from "../../emails/constants"; +import { UPDATE_JOB_LINE_STATUS } from "../../graphql/jobs-lines.queries"; +import { INSERT_NEW_PARTS_ORDERS } from "../../graphql/parts-orders.queries"; +import { QUERY_ALL_VENDORS_FOR_ORDER } from "../../graphql/vendors.queries"; +import { setEmailOptions } from "../../redux/email/email.actions"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; +import { selectPartsOrder } from "../../redux/modals/modals.selectors"; +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"; + +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser, + bodyshop: selectBodyshop, + partsOrderModal: selectPartsOrder, +}); + +const mapDispatchToProps = (dispatch) => ({ + setEmailOptions: (e) => dispatch(setEmailOptions(e)), + toggleModalVisible: () => dispatch(toggleModalVisible("partsOrder")), +}); + +export function PartsOrderModalContainer({ + partsOrderModal, + toggleModalVisible, + currentUser, + bodyshop, + setEmailOptions, +}) { + const { t } = useTranslation(); + + const { visible, context, actions } = partsOrderModal; + const { jobId, linesToOrder } = context; + const { refetch } = actions; + const [form] = Form.useForm(); + + const sendTypeState = useState("e"); + const sendType = sendTypeState[0]; + + const { loading, error, data } = useQuery(QUERY_ALL_VENDORS_FOR_ORDER, { + skip: !visible, + }); + const [insertPartOrder] = useMutation(INSERT_NEW_PARTS_ORDERS); + const [updateJobLines] = useMutation(UPDATE_JOB_LINE_STATUS); + + const handleFinish = (values) => { + insertPartOrder({ + variables: { + po: [ + { + ...values, + jobid: jobId, + user_email: currentUser.email, + status: bodyshop.md_order_statuses.default_ordered || "Ordered*", + }, + ], + }, + }) + .then((r) => { + updateJobLines({ + variables: { + ids: values.parts_order_lines.data.map((item) => item.job_line_id), + status: bodyshop.md_order_statuses.default_ordered || "Ordered*", + }, + }) + .then((response) => { + notification["success"]({ + message: t("parts_orders.successes.created"), + }); + if (refetch) refetch(); + toggleModalVisible(); + + if (sendType === "e") { + //TODO Remove hardcoding + setEmailOptions({ + messageOptions: { + from: { + name: bodyshop.shopname || EmailSettings.fromNameDefault, + address: EmailSettings.fromAddress, + }, + to: + data.vendors.filter((item) => item.id === values.id)[0] || + null, + replyTo: bodyshop.email, + }, + template: { + name: "parts_order_confirmation", + variables: { + id: r.data.insert_parts_orders.returning[0].id, + }, + }, + }); + } + }) + .catch((error) => { + notification["error"]({ + message: t("parts_orders.errors.creating"), + description: error.message, + }); + }); + + //end no good + }) + .catch((error) => { + notification["error"]({ + message: t("parts_orders.errors.creating"), + description: error.message, + }); + }); + }; + + const initialValues = + linesToOrder && + 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, + job_line_id: value.id, + status: bodyshop.md_order_statuses.default_ordered || "Ordered*", + }); + return acc; + }, []); + + useEffect(() => { + if (visible && !!linesToOrder) { + form.resetFields(); + } + }, [visible, linesToOrder, form]); + + return ( + toggleModalVisible()} + width="90%" + onOk={() => form.submit()} + destroyOnClose + forceRender + > + {error ? : null} + +
+ + +
+
+ ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(PartsOrderModalContainer); 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..0e4557d68 --- /dev/null +++ b/client/src/components/profile-my/profile-my.component.jsx @@ -0,0 +1,57 @@ +import { Button, Form, Input } 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"; + +const mapStateToProps = createStructuredSelector({ + currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + updateUserDetails: userDetails => dispatch(updateUserDetails(userDetails)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function ProfileMyComponent({ currentUser, updateUserDetails }) { + const { t } = useTranslation(); + + const handleFinish = values => { + updateUserDetails({ + displayName: values.displayName, + photoURL: values.photoURL + }); + }; + + return ( +
+
+ + + + + + + + + +
+ ); +}); 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..06fe5cea5 --- /dev/null +++ b/client/src/components/profile-shops/profile-shops.container.jsx @@ -0,0 +1,34 @@ +import React from "react"; +import { useQuery, useMutation } from "@apollo/react-hooks"; +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/profile-sidebar/profile-sidebar.component.jsx b/client/src/components/profile-sidebar/profile-sidebar.component.jsx index b029bfb75..1ae5a5e17 100644 --- a/client/src/components/profile-sidebar/profile-sidebar.component.jsx +++ b/client/src/components/profile-sidebar/profile-sidebar.component.jsx @@ -1,6 +1,7 @@ import React from "react"; import { useTranslation } from "react-i18next"; -import { Layout, Menu, Icon } from "antd"; +import { Layout, Menu } from "antd"; +import { UserOutlined, BankFilled } from "@ant-design/icons"; export default function ProfileSideBar({ sidebarSelection, @@ -21,11 +22,11 @@ export default function ProfileSideBar({ mode="inline" > - + {t("menus.profilesidebar.profile")} - + {t("menus.profilesidebar.shops")} 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..a1678a711 --- /dev/null +++ b/client/src/components/schedule-calendar/schedule-calendar.component.jsx @@ -0,0 +1,57 @@ +import { SyncOutlined } from "@ant-design/icons"; +import { Button } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { setModalContext } from "../../redux/modals/modals.actions"; +//import "react-big-calendar/lib/css/react-big-calendar.css"; +import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component"; +import ScheduleModal from "../schedule-job-modal/schedule-job-modal.container"; + + +const mapDispatchToProps = dispatch => ({ + setScheduleContext: context => + dispatch(setModalContext({ context: context, modal: "schedule" })) +}); + +export function ScheduleCalendarComponent({ + data, + refetch, + setScheduleContext +}) { + const { t } = useTranslation(); + + return ( +
+ + + + + + + +
+ ); +} +export default connect(null, mapDispatchToProps)(ScheduleCalendarComponent); 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..8184eb686 --- /dev/null +++ b/client/src/components/schedule-calendar/schedule-calendar.container.jsx @@ -0,0 +1,31 @@ +import { useQuery } from "@apollo/react-hooks"; +import React from "react"; +import { QUERY_ALL_ACTIVE_APPOINTMENTS } from "../../graphql/appointments.queries"; +import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import ScheduleCalendarComponent from "./schedule-calendar.component"; + +export default function ScheduleCalendarContainer() { + const { loading, error, data, refetch } = useQuery( + QUERY_ALL_ACTIVE_APPOINTMENTS + ); + + 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..2b0f7ee62 --- /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 "@apollo/react-hooks"; +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..54cf8bbbf --- /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.v_model_yr) || + ""} ${(event.job && event.job.v_make_desc) || + ""} ${(event.job && event.job.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.v_model_yr) || + ""} ${(event.job && event.job.v_make_desc) || + ""} ${(event.job && event.job.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..62aa31b38 --- /dev/null +++ b/client/src/components/schedule-event/schedule-event.container.jsx @@ -0,0 +1,24 @@ +import React from "react"; +import { useMutation } from "@apollo/react-hooks"; +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..51c62a7af --- /dev/null +++ b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx @@ -0,0 +1,63 @@ +import { Checkbox, Col, DatePicker, 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 +}) { + 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..0b8c008f1 --- /dev/null +++ b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx @@ -0,0 +1,113 @@ +import React, { useState } from "react"; +import ScheduleJobModalComponent from "./schedule-job-modal.component"; +import { useMutation, useQuery } from "@apollo/react-hooks"; +import { + INSERT_APPOINTMENT, + QUERY_APPOINTMENTS_BY_JOBID, +} from "../../graphql/appointments.queries"; +import moment from "moment"; +import { notification, Modal } 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"; +import { selectSchedule } from "../../redux/modals/modals.selectors"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, + scheduleModal: selectSchedule, +}); +const mapDispatchToProps = (dispatch) => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("schedule")), +}); +export function ScheduleJobModalContainer({ + scheduleModal, + bodyshop, + toggleModalVisible, +}) { + const { visible, context, actions } = scheduleModal; + const { jobId } = context; + const { refetch } = actions; + + const [appData, setAppData] = useState({ + start: null, + }); + 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: !visible, + }); + + //TODO Customize the amount of minutes it will add. + const handleOk = () => { + insertAppointment({ + variables: { + app: { + ...appData, + jobid: jobId, + bodyshopid: bodyshop.id, + 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!"); + } + toggleModalVisible(); + if (refetch) refetch(); + }); + }) + .catch((error) => { + notification["error"]({ + message: t("appointments.errors.saving", { + message: error.message, + }), + }); + }); + }; + + return ( + toggleModalVisible()} + onOk={handleOk} + width={"90%"} + maskClosable={false} + destroyOnClose + okButtonProps={{ disabled: appData.start ? false : true }} + > + + + ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(ScheduleJobModalContainer); 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..73541dddc --- /dev/null +++ b/client/src/components/shop-employees/shop-employees-form.component.jsx @@ -0,0 +1,134 @@ +import { Button, DatePicker, Form, Input, InputNumber, Switch } from "antd"; +import moment from "moment"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; + +export default function ShopEmployeesFormComponent({ + form, + selectedEmployee, + handleFinish +}) { + const { t } = useTranslation(); + useEffect(() => { + if (selectedEmployee) form.resetFields(); + }, [selectedEmployee, form]); + + if (!selectedEmployee) return null; + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + { + //TODO Make this a picklist. + } + + + + + + + + ); +} 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..f60ae6247 --- /dev/null +++ b/client/src/components/shop-employees/shop-employees-list.component.jsx @@ -0,0 +1,99 @@ +import { Button, Table } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +export default function ShopEmployeesListComponent({ + loading, + employees, + selectedEmployee, + setSelectedEmployee, + handleDelete +}) { + const { t } = useTranslation(); + + const handleOnRowClick = record => { + if (record) { + setSelectedEmployee(record); + } else setSelectedEmployee({}); + }; + const columns = [ + { + title: t("employees.fields.employee_number"), + dataIndex: "employee_number", + key: "employee_number" + }, + { + title: t("employees.fields.first_name"), + dataIndex: "first_name", + key: "first_name" + }, + { + title: t("employees.fields.last_name"), + dataIndex: "last_name", + key: "last_name" + }, + { + title: t("employees.fields.cost_center"), + dataIndex: "cost_center", + key: "cost_center" + }, + { + title: t("employees.fields.base_rate"), + dataIndex: "base_rate", + key: "base_rate", + render: (text, record) => ( + {record.base_rate} + ) + }, + { + title: t("employees.labels.actions"), + dataIndex: "actions", + key: "actions", + render: (text, record) => ( +
+ +
+ ) + } + ]; + return ( +
+
{ + return ( + + ); + }} + loading={loading} + size="small" + pagination={{ position: "top" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={employees} + rowSelection={{ + onSelect: props => { + setSelectedEmployee(props); + }, + type: "radio", + selectedRowKeys: [(selectedEmployee && selectedEmployee.id) || null] + }} + onRow={(record, rowIndex) => { + return { + onClick: event => { + handleOnRowClick(record); + } + }; + }} + /> + + ); +} 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..1c530aca3 --- /dev/null +++ b/client/src/components/shop-employees/shop-employees.component.jsx @@ -0,0 +1,29 @@ +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, + handleFinish, + 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..dca8d6900 --- /dev/null +++ b/client/src/components/shop-employees/shop-employees.container.jsx @@ -0,0 +1,101 @@ +import { Form, notification } from "antd"; +import React, { useState } from "react"; +import { useMutation, useQuery } from "@apollo/react-hooks"; +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({ bodyshop }) { + const [form] = Form.useForm(); + 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 handleFinish = values => { + console.log("values", values); + 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().catch(error => { + notification["error"]({ + message: t("employees.errors.save") + }); + }); + }); + } + }; + + if (error) return ; + + return ( + + ); +} +export default connect(mapStateToProps, null)(ShopEmployeesContainer); diff --git a/client/src/components/shop-info/shop-info.component.jsx b/client/src/components/shop-info/shop-info.component.jsx new file mode 100644 index 000000000..a3d385f9b --- /dev/null +++ b/client/src/components/shop-info/shop-info.component.jsx @@ -0,0 +1,88 @@ +import React from "react"; +import { Form, Input, Button, Collapse } from "antd"; +import { useTranslation } from "react-i18next"; +import ShopInfoROStatusComponent from "./shop-info.rostatus.component"; +import ShopInfoOrderStatusComponent from "./shop-info.orderstatus.component"; +import ShopInfoResponsibilityCenterComponent from "./shop-info.responsibilitycenters.component"; + +export default function ShopInfoComponent({ form }) { + const { t } = useTranslation(); + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/client/src/components/shop-info/shop-info.container.jsx b/client/src/components/shop-info/shop-info.container.jsx new file mode 100644 index 000000000..0bb14174f --- /dev/null +++ b/client/src/components/shop-info/shop-info.container.jsx @@ -0,0 +1,50 @@ +import React, { useEffect } from "react"; +import ShopInfoComponent from "./shop-info.component"; +import { Form, notification } from "antd"; +import { useQuery, useMutation } from "@apollo/react-hooks"; +import { QUERY_BODYSHOP, UPDATE_SHOP } from "../../graphql/bodyshop.queries"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import AlertComponent from "../alert/alert.component"; +import { useTranslation } from "react-i18next"; +export default function ShopInfoContainer() { + const [form] = Form.useForm(); + const { t } = useTranslation(); + const [updateBodyshop] = useMutation(UPDATE_SHOP); + const { loading, error, data, refetch } = useQuery(QUERY_BODYSHOP, { + fetchPolicy: "network-only" + }); + + const handleFinish = values => { + console.log("values", values); + + updateBodyshop({ + variables: { id: data.bodyshops[0].id, shop: values } + }) + .then(r => { + notification["success"]({ message: t("bodyshop.successes.save") }); + refetch().then(_ => form.resetFields()); + }) + .catch(error => { + notification["error"]( + { message: t("bodyshop.errors.saving") }, + { message: error } + ); + }); + }; + + useEffect(() => { + if (data) form.resetFields(); + }, [form, data]); + + if (error) return ; + if (loading) return ; + return ( +
+ + + ); +} diff --git a/client/src/components/shop-info/shop-info.orderstatus.component.jsx b/client/src/components/shop-info/shop-info.orderstatus.component.jsx new file mode 100644 index 000000000..474876056 --- /dev/null +++ b/client/src/components/shop-info/shop-info.orderstatus.component.jsx @@ -0,0 +1,139 @@ +import { DeleteFilled } from "@ant-design/icons"; +import { Button, Form, Input, Select, Row, Col } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +//TODO Fix up styles. +export default function ShopInfoOrderStatusComponent({ form }) { + const { t } = useTranslation(); + + const [options, setOptions] = useState( + form.getFieldValue(["md_order_statuses", "statuses"]) || [] + ); + + const handleBlur = () => { + setOptions(form.getFieldValue(["md_order_statuses", "statuses"])); + }; + + return ( +
+ {t("bodyshop.labels.orderstatuses")} + +
+ + {(fields, { add, remove }) => { + return ( +
+ {fields.map((field, index) => ( + +
+ + + + { + remove(field.name); + }} + /> +
+
+ ))} + + + +
+ ); + }} +
+ + + + + + + + + + + + + + + + + + ); +} diff --git a/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx b/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx new file mode 100644 index 000000000..9dea09c1c --- /dev/null +++ b/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx @@ -0,0 +1,447 @@ +import { DeleteFilled } from "@ant-design/icons"; +import { Button, Form, Input, Select, Row, Col } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import styled from "styled-components"; +//TODO Fix up styles. +const SelectorDiv = styled.div` + .ant-form-item .ant-select { + width: 125px; + } +`; + +export default function ShopInfoResponsibilityCenterComponent({ form }) { + const { t } = useTranslation(); + + const [options, setOptions] = useState( + [ + ...(form.getFieldValue(["md_responsibility_centers", "costs"]) || []), + ...(form.getFieldValue(["md_responsibility_centers", "profits"]) || []) + ] || [] + ); + + const handleBlur = () => { + setOptions([ + ...(form.getFieldValue(["md_responsibility_centers", "costs"]) || []), + ...(form.getFieldValue(["md_responsibility_centers", "profits"]) || []) + ]); + }; + + return ( +
+ {t("bodyshop.labels.responsibilitycenters.title")} + +
+ {t("bodyshop.labels.responsibilitycenters.costs")} + + {(fields, { add, remove }) => { + return ( +
+ {fields.map((field, index) => ( + +
+ + + + { + remove(field.name); + }} + /> +
+
+ ))} + + + +
+ ); + }} +
+ + + + {t("bodyshop.labels.responsibilitycenters.profits")} + + {(fields, { add, remove }) => { + return ( +
+ {fields.map((field, index) => ( + +
+ + + + { + remove(field.name); + }} + /> +
+
+ ))} + + + +
+ ); + }} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/client/src/components/shop-info/shop-info.rostatus.component.jsx b/client/src/components/shop-info/shop-info.rostatus.component.jsx new file mode 100644 index 000000000..59d07bb89 --- /dev/null +++ b/client/src/components/shop-info/shop-info.rostatus.component.jsx @@ -0,0 +1,204 @@ +import { DeleteFilled } from "@ant-design/icons"; +import { Button, Form, Input, Select, Row, Col } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import styled from "styled-components"; + +const SelectorDiv = styled.div` + .ant-form-item .ant-select { + width: 200px; + } +`; +//TODO Fix up styles. +export default function ShopInfoROStatusComponent({ form }) { + const { t } = useTranslation(); + + const [options, setOptions] = useState( + form.getFieldValue(["md_ro_statuses", "statuses"]) || [] + ); + + const handleBlur = () => { + setOptions(form.getFieldValue(["md_ro_statuses", "statuses"])); + }; + + return ( +
+ +
+ {t("bodyshop.labels.alljobstatuses")} + + {(fields, { add, remove }) => { + return ( +
+ {fields.map((field, index) => ( + +
+ + + + { + remove(field.name); + }} + /> +
+
+ ))} + + + +
+ ); + }} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} 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..fb3013270 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,86 @@ +import { LockOutlined, UserOutlined } from "@ant-design/icons"; +import { Button, Form, 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 +)(function SignInComponent({ emailSignInStart, currentUser, signInError }) { + const apolloClient = useApolloClient(); - this.props.form.resetFields(); - } catch (error) { - this.setState({ ...this.state, errorMessage: error.message }); - } - } - }); + const handleFinish = (values) => { + const { email, password } = values; + emailSignInStart(email, password); }; - render() { - const { getFieldDecorator } = this.props.form; - const { errorMessage } = this.state; - - 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} - - ); + 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); + }); } -} -export default Form.create({ name: "sign_in" })(SignInForm); + + return ( +
+ {currentUser.authorized === true ? : null} + + Bodyshop.app + +
+ + } + placeholder="Username" + /> + + + } + type="password" + placeholder="Password" + /> + + + + {signInError ?
{signInError.message}
: null} + +
+ ); +}); 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/time-ticket-enter-button/time-ticket-enter-button.component.jsx b/client/src/components/time-ticket-enter-button/time-ticket-enter-button.component.jsx new file mode 100644 index 000000000..5e589045a --- /dev/null +++ b/client/src/components/time-ticket-enter-button/time-ticket-enter-button.component.jsx @@ -0,0 +1,30 @@ +import { Button } from "antd"; +import React from "react"; +import { connect } from "react-redux"; +import { setModalContext } from "../../redux/modals/modals.actions"; + +const mapDispatchToProps = (dispatch) => ({ + setTimeTicketContext: (context) => + dispatch(setModalContext({ context: context, modal: "timeTicket" })), +}); + +export function TimeTicketEnterButton({ + actions, + context, + setTimeTicketContext, + children, +}) { + return ( + + ); +} +export default connect(null, mapDispatchToProps)(TimeTicketEnterButton); diff --git a/client/src/components/time-ticket-list/time-ticket-list.component.jsx b/client/src/components/time-ticket-list/time-ticket-list.component.jsx new file mode 100644 index 000000000..2ca0ad1d5 --- /dev/null +++ b/client/src/components/time-ticket-list/time-ticket-list.component.jsx @@ -0,0 +1,94 @@ +import { Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import { alphaSort } from "../../utils/sorters"; +import { DateFormatter } from "../../utils/DateFormatter"; +import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component"; + +export default function TimeTicketList({ loading, timetickets, refetch }) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" }, + }); + + const { t } = useTranslation(); + + const columns = [ + { + title: t("timetickets.fields.date"), + dataIndex: "date", + key: "date", + sorter: (a, b) => (a.date = b.date), + sortOrder: + state.sortedInfo.columnKey === "date" && state.sortedInfo.order, + render: (text, record) => {record.date}, + }, + { + title: t("timetickets.fields.employee"), + dataIndex: "employee", + key: "employee", + sorter: (a, b) => alphaSort(a.employee.last_name, b.employee.last_name), + sortOrder: state.sortedInfo.columnKey === "vin" && state.sortedInfo.order, + render: (text, record) => ( + {`${record.employee.first_name} ${record.employee.last_name}`} + ), + }, + { + title: t("timetickets.fields.cost_center"), + dataIndex: "cost_center", + key: "cost_center", + sorter: (a, b) => alphaSort(a.cost_center, b.cost_center), + sortOrder: + state.sortedInfo.columnKey === "status" && state.sortedInfo.order, + }, + { + title: t("timetickets.fields.productivehrs"), + dataIndex: "productivehrs", + key: "productivehrs", + sorter: (a, b) => a.productivehrs - b.productivehrs, + sortOrder: + state.sortedInfo.columnKey === "productivehrs" && + state.sortedInfo.order, + }, + { + title: t("timetickets.fields.actualhrs"), + dataIndex: "actualhrs", + key: "actualhrs", + sorter: (a, b) => a.actualhrs - b.actualhrs, + sortOrder: + state.sortedInfo.columnKey === "actualhrs" && state.sortedInfo.order, + }, + { + title: t("general.labels.actions"), + dataIndex: "actions", + key: "actions", + render: (text, record) => ( + + {t("general.actions.edit")} + + ), + }, + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + return ( +
({ ...item }))} + rowKey="id" + dataSource={timetickets} + onChange={handleTableChange} + /> + ); +} diff --git a/client/src/components/time-ticket-modal/time-ticket-modal.component.jsx b/client/src/components/time-ticket-modal/time-ticket-modal.component.jsx new file mode 100644 index 000000000..3af0d4e96 --- /dev/null +++ b/client/src/components/time-ticket-modal/time-ticket-modal.component.jsx @@ -0,0 +1,133 @@ +import { DatePicker, Form, InputNumber, Input, Select } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component"; +import JobSearchSelect from "../job-search-select/job-search-select.component"; +import LaborAllocationsTable from "../labor-allocations-table/labor-allocations-table.component"; + +export default function TimeTicketModalComponent({ + form, + roAutoCompleteOptions, + employeeAutoCompleteOptions, + loadLineTicketData, + lineTicketData, + responsibilityCenters, +}) { + const { t } = useTranslation(); + + return ( +
+
+ + { + if (form.getFieldValue("jobid") !== null) { + loadLineTicketData({ + variables: { id: form.getFieldValue("jobid") }, + }); + } + }} + /> + + + + +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ ); +} diff --git a/client/src/components/time-ticket-modal/time-ticket-modal.container.jsx b/client/src/components/time-ticket-modal/time-ticket-modal.container.jsx new file mode 100644 index 000000000..c433838e7 --- /dev/null +++ b/client/src/components/time-ticket-modal/time-ticket-modal.container.jsx @@ -0,0 +1,203 @@ +import { useLazyQuery, useMutation, useQuery } from "@apollo/react-hooks"; +import { Button, Form, Modal, notification } from "antd"; +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { QUERY_EMPLOYEES } from "../../graphql/employees.queries"; +import { GET_LINE_TICKET_BY_PK } from "../../graphql/jobs-lines.queries"; +import { ACTIVE_JOBS_FOR_AUTOCOMPLETE } from "../../graphql/jobs.queries"; +import { + INSERT_NEW_TIME_TICKET, + UPDATE_TIME_TICKET, +} from "../../graphql/timetickets.queries"; +import { toggleModalVisible } from "../../redux/modals/modals.actions"; +import { selectTimeTicket } from "../../redux/modals/modals.selectors"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import TimeTicketModalComponent from "./time-ticket-modal.component"; +import moment from "moment"; + +const mapStateToProps = createStructuredSelector({ + timeTicketModal: selectTimeTicket, + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("timeTicket")), +}); + +export function TimeTicketModalContainer({ + timeTicketModal, + toggleModalVisible, + bodyshop, +}) { + const [form] = Form.useForm(); + const { t } = useTranslation(); + const [enterAgain, setEnterAgain] = useState(false); + const [insertTicket] = useMutation(INSERT_NEW_TIME_TICKET); + const [updateTicket] = useMutation(UPDATE_TIME_TICKET); + const { data: RoAutoCompleteData } = useQuery(ACTIVE_JOBS_FOR_AUTOCOMPLETE, { + variables: { statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"] }, + skip: !timeTicketModal.visible, + }); + const { data: EmployeeAutoCompleteData } = useQuery(QUERY_EMPLOYEES, { + skip: !timeTicketModal.visible, + }); + const [loadLineTicketData, { data: lineTicketData }] = useLazyQuery( + GET_LINE_TICKET_BY_PK + ); + + const handleFinish = (values) => { + if (timeTicketModal.context.id) { + updateTicket({ + variables: { + timeticketId: timeTicketModal.context.id, + timeticket: values, + }, + }) + .then(handleMutationSuccess) + .catch(handleMutationError); + } else { + insertTicket({ + variables: { + timeTicketInput: [values], + }, + }) + .then(handleMutationSuccess) + .catch(handleMutationError); + } + }; + + const handleMutationSuccess = (response) => { + notification["success"]({ + message: t("timetickets.successes.created"), + }); + if (timeTicketModal.actions.refetch) timeTicketModal.actions.refetch(); + if (enterAgain) { + form.resetFields(); + } else { + toggleModalVisible(); + } + setEnterAgain(false); + }; + + const handleMutationError = (error) => { + setEnterAgain(false); + notification["error"]({ + message: t("timetickets.errors.creating", { + message: JSON.stringify(error), + }), + }); + }; + + const handleCancel = () => { + toggleModalVisible(); + }; + + useEffect(() => { + if (enterAgain) form.submit(); + }, [enterAgain, form]); + + useEffect(() => { + if (timeTicketModal.visible) form.resetFields(); + }, [timeTicketModal.visible, form]); + + const handleFieldsChange = (changedFields, allFields) => { + if (!!changedFields.employeeid && !!EmployeeAutoCompleteData) { + const emps = EmployeeAutoCompleteData.employees.filter( + (e) => e.id === changedFields.employeeid + ); + form.setFieldsValue({ + cost_center: emps.length > 0 ? emps[0].cost_center : "", + ciecacode: Object.keys( + bodyshop.md_responsibility_centers.defaults + ).find( + (key) => + bodyshop.md_responsibility_centers.defaults[key] === + emps[0].cost_center + ), + }); + } + if (!!changedFields.cost_center && !!EmployeeAutoCompleteData) { + form.setFieldsValue({ + ciecacode: Object.keys( + bodyshop.md_responsibility_centers.defaults + ).find( + (key) => + bodyshop.md_responsibility_centers.defaults[key] === + changedFields.cost_center + ), + }); + } + }; + + return ( + form.submit()} + onCancel={handleCancel} + forceRender + afterClose={() => form.resetFields()} + footer={ + + + + {timeTicketModal.context && timeTicketModal.context.id ? null : ( + + )} + + } + destroyOnClose + > +
+ + +
+ ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(TimeTicketModalContainer); 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..e6c8bf1a4 --- /dev/null +++ b/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx @@ -0,0 +1,94 @@ +import { Button, Col, DatePicker, Form, Input, Row } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +export default function VehicleDetailFormComponent() { + const { t } = useTranslation(); + + return ( +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + //TODO Add handling for paint code json + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} 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..47ce6ffa2 --- /dev/null +++ b/client/src/components/vehicle-detail-form/vehicle-detail-form.container.jsx @@ -0,0 +1,41 @@ +import React from "react"; +import { Form, notification } from "antd"; +import { useMutation } from "@apollo/react-hooks"; +import VehicleDetailFormComponent from "./vehicle-detail-form.component"; +import { useTranslation } from "react-i18next"; +import moment from "moment"; +import { UPDATE_VEHICLE } from "../../graphql/vehicles.queries"; + +function VehicleDetailFormContainer({ vehicle, refetch }) { + const { t } = useTranslation(); + const [updateVehicle] = useMutation(UPDATE_VEHICLE); + const [form] = Form.useForm(); + + const handleFinish = values => { + 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(); + }); + }; + + return ( + + + + ); +} + +export default 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..652d2cafd --- /dev/null +++ b/client/src/components/vehicle-detail-jobs/vehicle-detail-jobs.component.jsx @@ -0,0 +1,93 @@ +import React, { useState } from "react"; +import { Table } from "antd"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import VehicleDetailUpdateJobsComponent from "../vehicle-detail-update-jobs/vehicle-detail-update-jobs.component"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +export function VehicleDetailJobsComponent({ vehicle, bodyshop }) { + const { t } = useTranslation(); + const [selectedJobs, setSelectedJobs] = useState([]); + + 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 ( +
( +
+ +
+ )} + pagination={{ position: "bottom" }} + columns={columns.map(item => ({ ...item }))} + rowKey="id" + dataSource={vehicle.jobs} + rowSelection={{ + onSelect: (record, selected, selectedRows) => { + setSelectedJobs(selectedRows ? selectedRows.map(i => i.id) : []); + }, + + selectedRowKeys: selectedJobs, + getCheckboxProps: record => ({ + disabled: bodyshop.md_ro_statuses.open_statuses + ? !bodyshop.md_ro_statuses.open_statuses.includes(record.status) + : true + }) + }} + /> + ); +} + +export default connect(mapStateToProps, null)(VehicleDetailJobsComponent); diff --git a/client/src/components/vehicle-detail-update-jobs/vehicle-detail-update-jobs.component.jsx b/client/src/components/vehicle-detail-update-jobs/vehicle-detail-update-jobs.component.jsx new file mode 100644 index 000000000..44404ae28 --- /dev/null +++ b/client/src/components/vehicle-detail-update-jobs/vehicle-detail-update-jobs.component.jsx @@ -0,0 +1,44 @@ +import React from "react"; +import { Button, notification } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation } from "@apollo/react-hooks"; +import { UPDATE_JOBS } from "../../graphql/jobs.queries"; + +export default function VehicleDetailUpdateJobsComponent({ + vehicle, + selectedJobs, + disabled +}) { + const { t } = useTranslation(); + const [updateJobs] = useMutation(UPDATE_JOBS); + const handlecClick = e => { + updateJobs({ + variables: { + jobIds: selectedJobs, + fields: { + plate_no: vehicle["plate_no"], + plate_st: vehicle["plate_st"], + v_vin: vehicle["v_vin"], + v_model_yr: vehicle["v_model_yr"], + v_model_desc: vehicle["v_model_desc"], + v_make_desc: vehicle["v_make_desc"], + v_color: vehicle["v_color"] + } + } + }) + .then(response => { + notification["success"]({ message: t("jobs.successes.updated") }); + }) + .catch(error => { + notification["error"]({ + message: t("jobs.errors.updating", { error: JSON.stringify(error) }) + }); + }); + }; + + return ( + + ); +} diff --git a/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx b/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx new file mode 100644 index 000000000..a16482022 --- /dev/null +++ b/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx @@ -0,0 +1,87 @@ +import { Button, Col, Descriptions, Popover, Row, Tag } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; + +export default function VehicleTagPopoverComponent({ job }) { + const { t } = useTranslation(); + const content = ( +
+ +
+ + + {`${job.v_model_yr || t("general.labels.na")} + ${job.v_make_desc || t("general.labels.na")} + ${job.v_model_desc || t("general.labels.na")}`} + + + + {`${job.plate_no || t("general.labels.na")}`} + + + {`${job.plate_st || t("general.labels.na")}`} + + + {`${job.v_vin || t("general.labels.na")}`} + + + + + + + {`${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.plate_st || t("general.labels.na")}`} + + + {`${job.vehicle.v_vin || t("general.labels.na")}`} + + + + + + + + + ); + + return ( + + + {job.vehicleid ? ( + + {`${job.v_model_yr || t("general.labels.na")} + ${job.v_make_desc || t("general.labels.na")} + ${job.v_model_desc || t("general.labels.na")} | + ${job.plate_no || t("general.labels.na")} | + ${job.v_vin || t("general.labels.na")}`} + + ) : ( + + {`${job.v_model_yr || t("general.labels.na")} + ${job.v_make_desc || t("general.labels.na")} + ${job.v_model_desc || t("general.labels.na")} | + ${job.plate_no || t("general.labels.na")} | + ${job.v_vin || t("general.labels.na")}`} + + )} + + + ); +} 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..3226b1cb3 --- /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 "@apollo/react-hooks"; +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/vendor-search-select/vendor-search-select.component.jsx b/client/src/components/vendor-search-select/vendor-search-select.component.jsx new file mode 100644 index 000000000..ce2bda4ef --- /dev/null +++ b/client/src/components/vendor-search-select/vendor-search-select.component.jsx @@ -0,0 +1,40 @@ +import { Select, Tag } from "antd"; +import React, { useEffect, useState } from "react"; +const { Option } = Select; + +//To be used as a form element only. + +const VendorSearchSelect = ({ value, onChange, options, onSelect }) => { + const [option, setOption] = useState(value); + + useEffect(() => { + if (onChange) { + onChange(option); + } + }, [option, onChange]); + + return ( + + ); +}; +export default VendorSearchSelect; 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..0823b661a --- /dev/null +++ b/client/src/components/vendors-form/vendors-form.component.jsx @@ -0,0 +1,163 @@ +import { Button, Form, Input, InputNumber, Switch, Select } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import FormItemEmail from "../form-items-formatted/email-form-item.component"; +import { DeleteFilled } from "@ant-design/icons"; + +export default function VendorsFormComponent({ + form, + handleDelete, + responsibilityCenters +}) { + const { t } = useTranslation(); + const { getFieldValue } = form; + return ( +
+ + + + + {(fields, { add, remove }) => { + return ( +
+ {fields.map((field, index) => ( + +
+ + + + + +
+ + + + + + + + + +
+
+ { + remove(field.name); + }} + /> +
+
+ ))} + + + +
+ ); + }} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} 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..bf3c198b4 --- /dev/null +++ b/client/src/components/vendors-form/vendors-form.container.jsx @@ -0,0 +1,114 @@ +import { Form, notification } from "antd"; +import React, { useEffect } from "react"; +import { useMutation, useQuery } from "@apollo/react-hooks"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { + DELETE_VENDOR, + INSERT_NEW_VENDOR, + QUERY_VENDOR_BY_ID, + UPDATE_VENDOR +} from "../../graphql/vendors.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import VendorsFormComponent from "./vendors-form.component"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop +}); + +function VendorsFormContainer({ selectedVendor, refetch, bodyshop }) { + const [form] = Form.useForm(); + const { t } = useTranslation(); + const { loading, error, data } = useQuery(QUERY_VENDOR_BY_ID, { + variables: { id: (selectedVendor && selectedVendor.id) || null }, + fetchPolicy: "network-only", + skip: !selectedVendor + }); + const [updateVendor] = useMutation(UPDATE_VENDOR); + const [insertvendor] = useMutation(INSERT_NEW_VENDOR); + const [deleteVendor] = useMutation(DELETE_VENDOR); + const handleDelete = () => { + deleteVendor({ variables: { id: selectedVendor.id } }) + .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 handleFinish = values => { + if (selectedVendor.id) { + //It's a vendor to update. + updateVendor({ + variables: { id: selectedVendor.id, 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") + }); + console.log("error", error); + }); + } 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") + }); + }); + } + }; + + useEffect(() => { + if (data) form.resetFields(); + }, [data, form]); + + if (loading) return ; + if (error) return ; + return ( +
+ {selectedVendor ? ( + + ) : ( + t("vendors.labels.noneselected") + )} + + ); +} +export default connect(mapStateToProps, null)(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..ff801efab --- /dev/null +++ b/client/src/components/vendors-list/vendors-list.component.jsx @@ -0,0 +1,91 @@ +import { Button, Table } 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, + 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 ( +
+ +
+ ); + }} + 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..b15f5f196 --- /dev/null +++ b/client/src/components/vendors-list/vendors-list.container.jsx @@ -0,0 +1,33 @@ +import React from "react"; +import { useQuery } from "@apollo/react-hooks"; +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 } = useQuery(QUERY_ALL_VENDORS, { + fetchPolicy: "network-only" + }); + const handleNewVendor = () => { + setSelectedVendor({}); + }; + + const handleOnRowClick = record => { + if (record) { + setSelectedVendor(record); + } else 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/fragments.queries.js b/client/src/emails/components/fragments.queries.js new file mode 100644 index 000000000..cead14be4 --- /dev/null +++ b/client/src/emails/components/fragments.queries.js @@ -0,0 +1,18 @@ +import { gql } from "apollo-boost"; + +export const shopAttributes = gql` + fragment shopData on query_root { + 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/emails/components/header/header.component.jsx b/client/src/emails/components/header/header.component.jsx new file mode 100644 index 000000000..ea6aedc29 --- /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/constants.js b/client/src/emails/constants.js new file mode 100644 index 000000000..75973f1e3 --- /dev/null +++ b/client/src/emails/constants.js @@ -0,0 +1,4 @@ +export const EmailSettings = { + fromNameDefault: "Bodyshop.app", + fromAddress: "noreply@bodyshop.app" +}; diff --git a/client/src/emails/templates/appointment-confirmation/appointment-confirmation.query.js b/client/src/emails/templates/appointment-confirmation/appointment-confirmation.query.js new file mode 100644 index 000000000..7137e3672 --- /dev/null +++ b/client/src/emails/templates/appointment-confirmation/appointment-confirmation.query.js @@ -0,0 +1,18 @@ +import { gql } from "apollo-boost"; +import { shopAttributes } from "../../components/fragments.queries"; + +export const EMAIL_APPOINTMENT_CONFIRMATION = gql` + query EMAIL_APPOINTMENT_CONFIRMATION($id: uuid!) { + appointments_by_pk(id: $id) { + start + title + job { + ownr_fn + ownr_ln + ownr_ea + } + } + ...shopData + } + ${shopAttributes} +`; diff --git a/client/src/emails/templates/appointment-confirmation/appointment-confirmation.template.jsx b/client/src/emails/templates/appointment-confirmation/appointment-confirmation.template.jsx new file mode 100644 index 000000000..a329a56b3 --- /dev/null +++ b/client/src/emails/templates/appointment-confirmation/appointment-confirmation.template.jsx @@ -0,0 +1,42 @@ +import React from "react"; +import styled from "styled-components"; +import Header from "../../components/header/header.component"; +import { DateTimeFormatter } from "../../../utils/DateFormatter"; + +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 const Subject = "Appointment Reminder"; + +export default function AppointmentConfirmationEmail({ data }) { + const appointment = data.appointments_by_pk; + console.log("appointment", appointment); + return ( + +
+ Appointment Reminder +

Dear {`${appointment.job.ownr_fn} ${appointment.job.ownr_ln}`},

+

+ You have an appointment at {data.bodyshops[0].shopname} on + {appointment.start}. +

+

Thank you from the team at {data.bodyshops[0].shopname}

+ + ); +} diff --git a/client/src/emails/templates/parts-order/parts-order.email.jsx b/client/src/emails/templates/parts-order/parts-order.email.jsx new file mode 100644 index 000000000..88f0b7d14 --- /dev/null +++ b/client/src/emails/templates/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/templates/parts-order/parts-order.query.js b/client/src/emails/templates/parts-order/parts-order.query.js new file mode 100644 index 000000000..97ec5eaff --- /dev/null +++ b/client/src/emails/templates/parts-order/parts-order.query.js @@ -0,0 +1,36 @@ +import { gql } from "apollo-boost"; +import { shopAttributes } from "../../components/fragments.queries"; + +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 + } + ...shopData + } + ${shopAttributes} +`; diff --git a/client/src/firebase/firebase.utils.js b/client/src/firebase/firebase.utils.js index 4a2a8fae7..4b1cea785 100644 --- a/client/src/firebase/firebase.utils.js +++ b/client/src/firebase/firebase.utils.js @@ -2,42 +2,33 @@ import firebase from "firebase/app"; import "firebase/firestore"; import "firebase/auth"; import "firebase/database"; +import "firebase/analytics"; const config = JSON.parse(process.env.REACT_APP_FIREBASE_CONFIG); firebase.initializeApp(config); -export const createUserProfileDocument = async (userAuth, additionalData) => { - //Needs to be redone to write to GQL database. - console.log("userAuth from firebase Utils", userAuth); - if (!userAuth) return; - - const userRef = firestore.doc(`users/${userAuth.uid}`); - - const snapShot = await userRef.get(); - - if (!snapShot.exists) { - const { displayName, email } = userAuth; - const createdAt = new Date(); - try { - await userRef.set({ - displayName, - email, - createdAt, - ...additionalData - }); - } catch (error) { - console.log("error creating user", error.message); - } - } - - return userRef; -}; - 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 const analytics = firebase.analytics(); 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) => { + 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..827b5de17 100644 --- a/client/src/graphql/apollo-error-handling.js +++ b/client/src/graphql/apollo-error-handling.js @@ -1,94 +1,17 @@ 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); - - let expired = false; - - if (graphQLErrors) { - if (graphQLErrors[0].message.includes("JWTExpired")) { - expired = true; - } - } - if (networkError) { - 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!"); - // 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 = {} }) => ({ - headers: { - ...headers, - 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); - }); - } - }); - - // return new Observable(observer => { - // auth.currentUser - // .getIdToken(true) - // .then(function(idToken) { - // if (!idToken) { - // window.localStorage.removeItem("token"); - // return console.log("Refresh token has expired"); - // } - // console.log("Got a new token", idToken); - // window.localStorage.setItem("token", idToken); - - // // reset the headers - // operation.setContext(({ headers = {} }) => ({ - // headers: { - // // Re-add old headers - // ...headers, - // // Switch out old access token for new one - // authorization: idToken ? `Bearer ${idToken}` : "" - // } - // })); - - // 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); - // }) - // .catch(error => { - // // No refresh or client token available, we force user to login - // console.log("Hit an error."); - // observer.error(error); - // }); - // }); - } + if (graphQLErrors) + graphQLErrors.forEach(({ message, locations, path }) => + console.log( + `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}` + ) + ); + if (networkError) + console.log(`[Network error]: ${JSON.stringify(networkError)}`); + console.log(operation.getContext()); } ); 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/audit_trail.queries.js b/client/src/graphql/audit_trail.queries.js new file mode 100644 index 000000000..5ac744174 --- /dev/null +++ b/client/src/graphql/audit_trail.queries.js @@ -0,0 +1,18 @@ +import { gql } from "apollo-boost"; + +export const QUERY_AUDIT_TRAIL = gql` + query QUERY_AUDIT_TRAIL($id: uuid!) { + audit_trail(where: {recordid: {_eq: $id}}) { + useremail + tabname + schemaname + recordid + operation + old_val + new_val + id + created + bodyshopid + } + } +`; 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..6117c5f18 100644 --- a/client/src/graphql/bodyshop.queries.js +++ b/client/src/graphql/bodyshop.queries.js @@ -14,11 +14,25 @@ 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 + shoprates + region_config + md_responsibility_centers + messagingservicesid + template_header + textid + employees { + id + first_name + last_name + employee_number + cost_center + } } } `; @@ -30,3 +44,13 @@ export const QUERY_SHOP_ID = gql` } } `; + +export const UPDATE_SHOP = gql` + mutation UPDATE_SHOP($id: uuid, $shop: bodyshops_set_input!) { + update_bodyshops(where: { id: { _eq: $id } }, _set: $shop) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/cccontracts.queries.js b/client/src/graphql/cccontracts.queries.js new file mode 100644 index 000000000..b180359f3 --- /dev/null +++ b/client/src/graphql/cccontracts.queries.js @@ -0,0 +1,131 @@ +import { gql } from "apollo-boost"; + +export const INSERT_NEW_CONTRACT = gql` + mutation INSERT_NEW_CONTRACT($contract: [cccontracts_insert_input!]!) { + insert_cccontracts(objects: $contract) { + returning { + id + } + } + } +`; + +export const UPDATE_CONTRACT = gql` + mutation UPDATE_CONTRACT( + $contractId: uuid! + $cccontract: cccontracts_set_input! + ) { + update_cccontracts(where: { id: { _eq: $contractId } }, _set: $cccontract) { + returning { + id + } + } + } +`; +export const RETURN_CONTRACT = gql` + mutation RETURN_CONTRACT( + $contractId: uuid! + $cccontract: cccontracts_set_input! + $courtesycarid: uuid! + $courtesycar: courtesycars_set_input! + ) { + update_cccontracts(where: { id: { _eq: $contractId } }, _set: $cccontract) { + returning { + id + } + } + update_courtesycars( + where: { id: { _eq: $courtesycarid } } + _set: $courtesycar + ) { + returning { + id + } + } + } +`; + +export const QUERY_CONTRACT_BY_PK = gql` + query QUERY_CONTRACT_BY_PK($id: uuid!) { + cccontracts_by_pk(id: $id) { + actualreturn + agreementnumber + cc_cardholder + cc_expiry + cc_num + courtesycarid + driver_addr1 + driver_city + driver_addr2 + driver_dlexpiry + driver_dlnumber + driver_dlst + driver_dob + driver_fn + driver_ln + driver_ph1 + driver_state + driver_zip + id + jobid + job { + id + est_number + ro_number + v_make_desc + v_model_desc + ownr_fn + ownr_ln + ownr_co_nm + scheduled_completion + } + kmend + kmstart + scheduledreturn + start + status + updated_at + courtesycar { + id + fleetnumber + make + model + year + plate + } + } + } +`; + +export const QUERY_ACTIVE_CONTRACTS = gql` + query QUERY_ACTIVE_CONTRACTS { + cccontracts(where: { status: { _neq: "contracts.status.returned" } }) { + agreementnumber + courtesycarid + driver_fn + driver_ln + driver_ph1 + id + jobid + job { + id + est_number + ro_number + ownr_fn + ownr_ln + ownr_co_nm + } + scheduledreturn + start + status + courtesycar { + id + fleetnumber + make + model + year + plate + } + } + } +`; diff --git a/client/src/graphql/conversations.queries.js b/client/src/graphql/conversations.queries.js new file mode 100644 index 000000000..af7d0d138 --- /dev/null +++ b/client/src/graphql/conversations.queries.js @@ -0,0 +1,37 @@ +import { gql } from "apollo-boost"; + +export const CONVERSATION_LIST_SUBSCRIPTION = gql` + subscription CONVERSATION_LIST_SUBSCRIPTION { + conversations { + phone_num + id + messages_aggregate( + where: { read: { _eq: false }, isoutbound: { _eq: false } } + ) { + aggregate { + count + } + } + } + } +`; + +export const CONVERSATION_SUBSCRIPTION_BY_PK = gql` + subscription CONVERSATION_SUBSCRIPTION_BY_PK($conversationId: uuid!) { + conversations_by_pk(id: $conversationId) { + messages { + id + status + text + isoutbound + } + messages_aggregate( + where: { read: { _eq: false }, isoutbound: { _eq: false } } + ) { + aggregate { + count + } + } + } + } +`; diff --git a/client/src/graphql/courtesy-car.queries.js b/client/src/graphql/courtesy-car.queries.js new file mode 100644 index 000000000..2c6bb755d --- /dev/null +++ b/client/src/graphql/courtesy-car.queries.js @@ -0,0 +1,118 @@ +import { gql } from "apollo-boost"; + +export const INSERT_NEW_COURTESY_CAR = gql` + mutation INSERT_NEW_COURTESY_CAR( + $courtesycar: [courtesycars_insert_input!]! + ) { + insert_courtesycars(objects: $courtesycar) { + returning { + id + } + } + } +`; + +export const QUERY_AVAILABLE_CC = gql` + query QUERY_AVAILABLE_CC { + courtesycars(where: { serviceenddate: { _is_null: true } }) { + color + dailycost + damage + fleetnumber + fuel + id + make + model + plate + status + year + } + } +`; + +export const QUERY_ALL_CC = gql` + query QUERY_ALL_CC { + courtesycars { + color + created_at + dailycost + damage + fleetnumber + fuel + id + insuranceexpires + leaseenddate + make + model + nextservicedate + nextservicekm + notes + plate + purchasedate + registrationexpires + serviceenddate + servicestartdate + status + vin + year + } + } +`; + +export const QUERY_CC_BY_PK = gql` + query QUERY_CC_BY_PK($id: uuid!) { + courtesycars_by_pk(id: $id) { + bodyshopid + color + created_at + dailycost + damage + fleetnumber + fuel + id + insuranceexpires + leaseenddate + make + model + nextservicedate + nextservicekm + notes + plate + purchasedate + registrationexpires + serviceenddate + servicestartdate + status + vin + year + cccontracts { + id + status + start + scheduledreturn + kmstart + kmend + driver_ln + driver_fn + job { + ro_number + est_number + ownr_ln + ownr_fn + ownr_co_nm + id + } + } + } + } +`; + +export const UPDATE_CC = gql` + mutation UPDATE_CC($ccId: uuid!, $cc: courtesycars_set_input!) { + update_courtesycars(where: { id: { _eq: $ccId } }, _set: $cc) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/documents.queries.js b/client/src/graphql/documents.queries.js index 58c22a411..3e416f26c 100644 --- a/client/src/graphql/documents.queries.js +++ b/client/src/graphql/documents.queries.js @@ -4,10 +4,9 @@ export const GET_DOCUMENTS_BY_JOB = gql` query GET_DOCUMENTS_BY_JOB($jobId: uuid!) { documents(where: { jobid: { _eq: $jobId } }) { id - url - thumb_url name key + type } } `; @@ -17,8 +16,6 @@ export const INSERT_NEW_DOCUMENT = gql` insert_documents(objects: $docInput) { returning { id - url - thumb_url name key } 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/initial-state.js b/client/src/graphql/initial-state.js deleted file mode 100644 index fc69d4836..000000000 --- a/client/src/graphql/initial-state.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - __typename: "State", - currentUser: null, - selectedNavItem: "Home", - recentItems: [], - bodyShopData: null, - language: "en_us" -}; diff --git a/client/src/graphql/invoices.queries.js b/client/src/graphql/invoices.queries.js new file mode 100644 index 000000000..efb7d7bf6 --- /dev/null +++ b/client/src/graphql/invoices.queries.js @@ -0,0 +1,87 @@ +import { gql } from "apollo-boost"; + +export const INSERT_NEW_INVOICE = gql` + mutation INSERT_NEW_INVOICE($invoice: [invoices_insert_input!]!) { + insert_invoices(objects: $invoice) { + returning { + id + } + } + } +`; + +export const QUERY_ALL_INVOICES_PAGINATED = gql` + query QUERY_ALL_INVOICES_PAGINATED($offset: Int, $limit: Int) { + invoices(offset: $offset, limit: $limit, order_by: { date: desc }) { + id + vendor { + id + name + } + total + invoice_number + date + job { + id + ro_number + } + invoicelines { + actual_price + actual_cost + cost_center + id + line_desc + } + } + } +`; + +export const QUERY_INVOICES_BY_JOBID = gql` + query QUERY_INVOICES_BY_JOBID($jobid: uuid!) { + invoices(where: { jobid: { _eq: $jobid } }, order_by: { date: desc }) { + id + vendor { + id + name + } + total + invoice_number + date + invoicelines { + actual_price + actual_cost + cost_center + id + line_desc + } + } + } +`; + +export const QUERY_INVOICE_BY_PK = gql` + query QUERY_INVOICE_BY_PK($invoiceid: uuid!) { + invoices_by_pk(id: $invoiceid) { + due_date + exported + exported_at + id + invoice_number + date + is_credit_memo + jobid + total + updated_at + vendor { + name + discount + } + invoicelines { + id + line_desc + actual_price + actual_cost + cost_center + } + } + } +`; diff --git a/client/src/graphql/jobs-lines.queries.js b/client/src/graphql/jobs-lines.queries.js index 4203fdf06..e07ffe7e8 100644 --- a/client/src/graphql/jobs-lines.queries.js +++ b/client/src/graphql/jobs-lines.queries.js @@ -2,10 +2,134 @@ 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 GET_LINE_TICKET_BY_PK = gql` + query GET_LINE_TICKET_BY_PK($id: uuid!) { + joblines(where: { jobid: { _eq: $id } }) { + id + 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 + } + timetickets(where: { jobid: { _eq: $id } }) { + actualhrs + ciecacode + cost_center + date + id + jobid + employeeid + employee { + id + first_name + last_name + employee_number + } + productivehrs + } + } +`; + +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 + } + } + } +`; + +export const GET_JOB_LINES_TO_ENTER_INVOICE = gql` + query GET_JOB_LINES_TO_ENTER_INVOICE($id: uuid!) { + joblines( + where: { + jobid: { _eq: $id } + oem_partno: { _neq: "" } + act_price: { _gt: "0" } + } + ) { + id + 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 } } `; diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index f90290794..df60a4830 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 @@ -12,14 +12,14 @@ export const QUERY_ALL_OPEN_JOBS = gql` allow_text_message preferred_contact } - vehicle { - id - v_model_yr - v_make_desc - v_model_desc - v_color - plate_no - } + plate_no + plate_st + v_vin + v_model_yr + v_model_desc + v_make_desc + v_color + vehicleid actual_completion actual_delivery actual_in @@ -42,22 +42,10 @@ 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 - plate_no - v_vin - v_model_yr - v_model_desc - v_make_desc - v_color - } + vehicleid } } `; @@ -98,7 +86,7 @@ export const SUBSCRIPTION_JOBS_IN_PRODUCTION = gql` export const GET_JOB_BY_PK = gql` query GET_JOB_BY_PK($id: uuid!) { jobs_by_pk(id: $id) { - service_car + updated_at csr loss_desc kmin @@ -111,6 +99,14 @@ export const GET_JOB_BY_PK = gql` converted est_number ro_number + clm_total + vehicleid + plate_no + v_vin + v_model_yr + v_model_desc + v_make_desc + v_color vehicle { id plate_no @@ -123,6 +119,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 @@ -152,19 +149,87 @@ export const GET_JOB_BY_PK = gql` towing_payable storage_payable adjustment_bottom_line + federal_tax_rate + state_tax_rate + local_tax_rate + tax_tow_rt + tax_str_rt + tax_paint_mat_rt + tax_sub_rt + tax_lbr_rt + tax_levies_rt + parts_tax_rates + job_totals ownr_fn ownr_ln - owner{ + ownr_ea + ownr_addr1 + ownr_addr2 + ownr_city + ownr_st + ownr_zip + ownr_ctry + ownr_ph1 + owner { id ownr_fn ownr_ln + ownr_ea + ownr_addr1 + ownr_addr2 + ownr_city + ownr_st + ownr_zip + ownr_ctry + ownr_ph1 } - - joblines{ + labor_rate_desc + 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 + 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 + owner_owing + joblines { id unq_seq line_ind + tax_part line_desc + prt_dsmk_p + prt_dsmk_m part_type oem_partno db_price @@ -175,6 +240,19 @@ export const GET_JOB_BY_PK = gql` mod_lb_hrs lbr_op lbr_amt + op_code_desc + } + cccontracts { + id + status + start + scheduledreturn + agreementnumber + } + appointments_aggregate { + aggregate { + count + } } } } @@ -192,8 +270,13 @@ export const QUERY_JOB_CARD_DETAILS = gql` allow_text_message preferred_contact } + vehicleid + v_model_yr + v_make_desc + v_model_desc + v_color + plate_no vehicle { - id v_model_yr v_make_desc v_model_desc @@ -216,6 +299,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,26 +312,21 @@ export const QUERY_JOB_CARD_DETAILS = gql` private created_at } - job_status { - id - name - } + updated_at - claim_total + clm_total ded_amt + cccontracts { + id + agreementnumber + status + start + scheduledreturn + } documents(limit: 3, order_by: { created_at: desc }) { id thumb_url } - vehicle { - id - plate_no - v_vin - v_model_yr - v_model_desc - v_make_desc - v_color - } } } `; @@ -263,6 +343,16 @@ export const UPDATE_JOB = gql` } `; +export const UPDATE_JOBS = gql` + mutation UPDATE_JOBS($jobIds: [uuid!]!, $fields: jobs_set_input!) { + update_jobs(where: { id: { _in: $jobIds } }, _set: $fields) { + returning { + id + } + } + } +`; + export const CONVERT_JOB_TO_RO = gql` mutation CONVERT_JOB_TO_RO($jobId: uuid!) { update_jobs(where: { id: { _eq: $jobId } }, _set: { converted: true }) { @@ -280,6 +370,283 @@ export const INSERT_NEW_JOB = gql` insert_jobs(objects: $job) { returning { id + est_number + } + } + } +`; + +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 + } + } + } +`; + +export const ACTIVE_JOBS_FOR_AUTOCOMPLETE = gql` + query ACTIVE_JOBS_FOR_AUTOCOMPLETE($statuses: [String!]!) { + jobs(where: { status: { _in: $statuses } }) { + id + ownr_fn + ownr_ln + ro_number + est_number + vehicleid + v_make_desc + v_model_desc + v_model_yr + } + } +`; + +//TODO Ensure this is always up to date. +export const QUERY_ALL_JOB_FIELDS = gql` + query QUERY_ALL_JOB_FIELDS($id: uuid!) { + jobs_by_pk(id: $id) { + id + 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_faxx + agt_fax + agt_lic_no + agt_ph1 + agt_ph1x + agt_ph2 + agt_zip + agt_st + agt_ph2x + area_of_damage + cat_no + cieca_stl + cieca_ttl + 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_ofc_id + clm_ofc_nm + clm_ph1 + clm_ph1x + clm_ph2 + clm_ph2x + clm_st + clm_title + clm_total + clm_zip + csr + cust_pr + 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_ph1 + est_st + est_zip + federal_tax_payable + federal_tax_rate + g_bett_amt + 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 + job_totals + labor_rate_desc + labor_rate_id + local_tax_rate + 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 + parts_tax_rates + pay_amt + pay_chknm + pay_date + pay_type + payee_nms + plate_no + plate_st + po_number + policy_no + rate_atp + rate_la1 + rate_la2 + rate_la3 + rate_la4 + rate_laa + rate_lab + rate_lad + rate_lae + rate_lag + rate_laf + 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 + selling_dealer + selling_dealer_contact + servicing_dealer + servicing_dealer_contact + shopid + special_coverage_policy + state_tax_rate + 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 + v_color + v_make_desc + v_model_desc + v_model_yr + v_vin + vehicleid + joblines { + act_price + alt_co_id + alt_overrd + alt_part_i + alt_partm + bett_amt + alt_partno + bett_pctg + bett_tax + bett_type + cert_part + db_hrs + db_price + db_ref + est_seq + glass_flag + id + lbr_amt + lbr_hrs_j + lbr_inc + lbr_op + lbr_op_j + lbr_tax + lbr_typ_j + line_desc + line_ind + line_ref + misc_amt + misc_sublt + misc_tax + mod_lb_hrs + mod_lbr_ty + oem_partno + op_code_desc + paint_stg + paint_tone + part_qty + part_type + price_inc + price_j + prt_dsmk_m + prt_dsmk_p + status + tax_part + unq_seq } } } 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/middleware.js b/client/src/graphql/middleware.js deleted file mode 100644 index bad7a938a..000000000 --- a/client/src/graphql/middleware.js +++ /dev/null @@ -1,38 +0,0 @@ -import { auth } from "../firebase/firebase.utils"; - -//used to ensure that there is always a fresh token. -function minutesSince(date) { - const now = new Date(); - const millisecondsSince = now - date; - // Divide milliseconds by 1000 to get seconds - // Divide seconds by 60 to get minutes - return millisecondsSince / 1000 / 60; -} - -// Pass a different argument number to set a sooner/longer refresh time -export function shouldRefreshToken(minutesBeforeShouldRefresh = 45) { - const stringifiedRefreshTime = window.sessionStorage.getItem( - `lastTokenRefreshTime` - ); - const lastRefreshAt = new Date(stringifiedRefreshTime); - const aboutToExpire = - minutesSince(lastRefreshAt) >= minutesBeforeShouldRefresh; - return aboutToExpire; -} - - -export async function refreshToken() { - try { - if (auth.user) { - const idToken = await auth().currentUser.getIdToken( - /* force refresh */ true - ); - const now = new Date(); - window.localStorage.setItem(`lastTokenRefreshTime`, now); - localStorage.setItem("token", idToken); - console.log("Token refreshed."); - } - } catch (err) { - console.error(err); - } -} diff --git a/client/src/graphql/owners.queries.js b/client/src/graphql/owners.queries.js index 0945e48b0..8534fa90d 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,94 @@ 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 + v_model_yr + v_model_desc + v_make_desc + vehicleid + } + } + } +`; + +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 + } + } +`; + +export const QUERY_OWNER_FOR_JOB_CREATION = gql` + query QUERY_OWNER_FOR_JOB_CREATION($id: uuid!) { + owners_by_pk(id: $id) { + id + 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 + } + } +`; 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/templates.queries.js b/client/src/graphql/templates.queries.js new file mode 100644 index 000000000..c0f0be364 --- /dev/null +++ b/client/src/graphql/templates.queries.js @@ -0,0 +1,13 @@ +import { gql } from "apollo-boost"; + +export const QUERY_TEMPLATES_BY_NAME = gql` + query QUERY_TEMPLATES_BY_NAME($name: String!) { + templates(where: { name: { _eq: $name } }) { + id + html + name + query + bodyshopid + } + } +`; diff --git a/client/src/graphql/timetickets.queries.js b/client/src/graphql/timetickets.queries.js new file mode 100644 index 000000000..eb43189a6 --- /dev/null +++ b/client/src/graphql/timetickets.queries.js @@ -0,0 +1,48 @@ +import { gql } from "apollo-boost"; + +export const QUERY_TICKETS_BY_JOBID = gql` + query QUERY_TICKETS_BY_JOBID($jobid: uuid!) { + timetickets(where: { jobid: { _eq: $jobid } }) { + actualhrs + cost_center + ciecacode + rate + productivehrs + id + employee { + employee_number + first_name + last_name + id + } + } + } +`; + +export const INSERT_NEW_TIME_TICKET = gql` + mutation INSERT_NEW_TIME_TICKET( + $timeTicketInput: [timetickets_insert_input!]! + ) { + insert_timetickets(objects: $timeTicketInput) { + returning { + id + } + } + } +`; + +export const UPDATE_TIME_TICKET = gql` + mutation UPDATE_TIME_TICKET( + $timeticketId: uuid! + $timeticket: timetickets_set_input! + ) { + update_timetickets( + where: { id: { _eq: $timeticketId } } + _set: $timeticket + ) { + returning { + id + } + } + } +`; diff --git a/client/src/graphql/vehicles.queries.js b/client/src/graphql/vehicles.queries.js new file mode 100644 index 000000000..571462b01 --- /dev/null +++ b/client/src/graphql/vehicles.queries.js @@ -0,0 +1,102 @@ +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 + } + } +`; + +export const SEARCH_VEHICLE_BY_VIN = gql` + query SEARCH_VEHICLE_BY_VIN($vin: String!) { + vehicles(where: { v_vin: { _ilike: $vin } }) { + id + plate_no + plate_st + v_vin + v_model_yr + v_model_desc + v_make_desc + v_color + v_bstyle + updated_at + v_type + v_trimcode + v_tone + v_stage + v_prod_dt + v_paint_codes + v_options + v_mldgcode + v_makecode + v_engine + v_cond + trim_color + db_v_code + } + } +`; diff --git a/client/src/graphql/vendors.queries.js b/client/src/graphql/vendors.queries.js new file mode 100644 index 000000000..94773f2cc --- /dev/null +++ b/client/src/graphql/vendors.queries.js @@ -0,0 +1,90 @@ +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 + discount + } + } +`; + +export const SEARCH_VENDOR_AUTOCOMPLETE = gql` + query SEARCH_VENDOR_AUTOCOMPLETE { + vendors { + name + discount + id + cost_center + } + } +`; 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/contract-create/contract-create.page.component.jsx b/client/src/pages/contract-create/contract-create.page.component.jsx new file mode 100644 index 000000000..9f136c19a --- /dev/null +++ b/client/src/pages/contract-create/contract-create.page.component.jsx @@ -0,0 +1,21 @@ +import React from "react"; +import ContractFormComponent from "../../components/contract-form/contract-form.component"; +import { Button } from "antd"; +import { useTranslation } from "react-i18next"; +import ContractJobsContainer from "../../components/contract-jobs/contract-jobs.container"; +import ContractCarsContainer from "../../components/contract-cars/contract-cars.container"; + +export default function ContractCreatePageComponent({ + selectedJobState, + selectedCarState +}) { + const { t } = useTranslation(); + return ( +
+ + + + +
+ ); +} diff --git a/client/src/pages/contract-create/contract-create.page.container.jsx b/client/src/pages/contract-create/contract-create.page.container.jsx new file mode 100644 index 000000000..20d439f9f --- /dev/null +++ b/client/src/pages/contract-create/contract-create.page.container.jsx @@ -0,0 +1,95 @@ +import React, { useEffect, useState } from "react"; + +import ContractCreatePageComponent from "./contract-create.page.component"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import { Form, notification } from "antd"; +import { useTranslation } from "react-i18next"; +import { INSERT_NEW_CONTRACT } from "../../graphql/cccontracts.queries"; +import { useMutation } from "@apollo/react-hooks"; +import { useHistory, useLocation } from "react-router-dom"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function ContractCreatePageContainer({ bodyshop, setBreadcrumbs }) { + const [form] = Form.useForm(); + const { t } = useTranslation(); + const history = useHistory(); + const location = useLocation(); + const selectedCarState = useState(null); + const selectedJobState = useState( + (location.state && location.state.jobId) || null + ); + const [insertContract] = useMutation(INSERT_NEW_CONTRACT); + + console.log("test"); + + const handleFinish = (values) => { + if (!!selectedCarState[0] && !!selectedJobState[0]) { + insertContract({ + variables: { + contract: { + ...values, + courtesycarid: selectedCarState[0], + jobid: selectedJobState[0], + }, + }, + }) + .then((response) => { + notification["success"]({ + message: t("contracts.successes.saved"), + }); + + history.push( + `/manage/courtesycars/contracts/${response.data.insert_cccontracts.returning[0].id}` + ); + }) + .catch((error) => + notification["error"]({ + message: t("contracts.errors.saving", { + error: JSON.stringify(error), + }), + }) + ); + } else { + notification["error"]({ + message: t("contracts.errors.selectjobandcar"), + }); + } + }; + + useEffect(() => { + document.title = t("titles.contracts-create"); + setBreadcrumbs([ + { link: "/manage/courtesycars", label: t("titles.bc.courtesycars") }, + { + link: "/manage/courtesycars/contracts", + label: t("titles.bc.contracts"), + }, + { + link: "/manage/courtesycars/contracts/new", + label: t("titles.bc.contracts-create"), + }, + ]); + }, [t, setBreadcrumbs]); + + return ( +
+ + + ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(ContractCreatePageContainer); diff --git a/client/src/pages/contract-detail/contract-detail.page.component.jsx b/client/src/pages/contract-detail/contract-detail.page.component.jsx new file mode 100644 index 000000000..6e9280a38 --- /dev/null +++ b/client/src/pages/contract-detail/contract-detail.page.component.jsx @@ -0,0 +1,60 @@ +import { Button, Typography, Row, Col } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import ContractCourtesyCarBlock from "../../components/contract-courtesy-car-block/contract-courtesy-car-block.component"; +import ContractFormComponent from "../../components/contract-form/contract-form.component"; +import ContractJobBlock from "../../components/contract-job-block/contract-job-block.component"; +import { setModalContext } from "../../redux/modals/modals.actions"; + +const mapDispatchToProps = dispatch => ({ + setCourtesyCarReturnModalContext: context => + dispatch(setModalContext({ context: context, modal: "courtesyCarReturn" })) +}); + +export function ContractDetailPage({ + contract, + job, + courtesyCar, + setCourtesyCarReturnModalContext, + refetch +}) { + const { t } = useTranslation(); + return ( +
+ + {`Agreement ${(contract && + contract.agreementnumber) || + ""} - ${t((contract && contract.status) || "")}`} + + + + + + + + + + + + + +
+ ); +} +export default connect(null, mapDispatchToProps)(ContractDetailPage); diff --git a/client/src/pages/contract-detail/contract-detail.page.container.jsx b/client/src/pages/contract-detail/contract-detail.page.container.jsx new file mode 100644 index 000000000..2f88551d8 --- /dev/null +++ b/client/src/pages/contract-detail/contract-detail.page.container.jsx @@ -0,0 +1,114 @@ +import { useMutation, useQuery } from "@apollo/react-hooks"; +import { Form, notification } from "antd"; +import moment from "moment"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { useParams } from "react-router-dom"; +import AlertComponent from "../../components/alert/alert.component"; +import CourtesyCarReturnModalContainer from "../../components/courtesy-car-return-modal/courtesy-car-return-modal.container"; +import { + QUERY_CONTRACT_BY_PK, + UPDATE_CONTRACT, +} from "../../graphql/cccontracts.queries"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import ContractDetailPageComponent from "./contract-detail.page.component"; + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function ContractDetailPageContainer({ setBreadcrumbs }) { + const { t } = useTranslation(); + const [updateContract] = useMutation(UPDATE_CONTRACT); + const [form] = Form.useForm(); + const { contractId } = useParams(); + + const { loading, error, data, refetch } = useQuery(QUERY_CONTRACT_BY_PK, { + variables: { id: contractId }, + }); + + useEffect(() => { + document.title = loading + ? t("titles.app") + : error + ? t("titles.app") + : t("titles.contracts-detail", { + id: (data && data.cccontracts_by_pk.agreementnumber) || "", + }); + + setBreadcrumbs([ + { link: "/manage/courtesycars", label: t("titles.bc.courtesycars") }, + { + link: "/manage/courtesycars/contracts", + label: t("titles.bc.contracts"), + }, + { + link: "/manage/courtesycars/contracts/new", + label: t("titles.bc.contracts-detail", { + number: (data && data.cccontracts_by_pk.agreementnumber) || "", + }), + }, + ]); + }, [t, data, error, loading, setBreadcrumbs]); + + const handleFinish = (values) => { + updateContract({ + variables: { cccontract: { ...values }, contractId: contractId }, + }) + .then((response) => { + notification["success"]({ message: t("contracts.successes.saved") }); + }) + .catch((error) => + notification["error"]({ + message: t("contracts.errors.saving", { error: error }), + }) + ); + }; + + useEffect(() => { + if (data) form.resetFields(); + }, [data, form]); + + if (error) return ; + return ( +
+ +
+ + +
+ ); +} +export default connect(null, mapDispatchToProps)(ContractDetailPageContainer); diff --git a/client/src/pages/contracts/contracts.page.component.jsx b/client/src/pages/contracts/contracts.page.component.jsx new file mode 100644 index 000000000..a881401eb --- /dev/null +++ b/client/src/pages/contracts/contracts.page.component.jsx @@ -0,0 +1,10 @@ +import React from "react"; +import ContractsList from "../../components/contracts-list/contracts-list.component"; + +export default function ContractsPageComponent({ loading, data }) { + return ( +
+ +
+ ); +} diff --git a/client/src/pages/contracts/contracts.page.container.jsx b/client/src/pages/contracts/contracts.page.container.jsx new file mode 100644 index 000000000..9de40784d --- /dev/null +++ b/client/src/pages/contracts/contracts.page.container.jsx @@ -0,0 +1,38 @@ +import { useQuery } from "@apollo/react-hooks"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import AlertComponent from "../../components/alert/alert.component"; +import { QUERY_ACTIVE_CONTRACTS } from "../../graphql/cccontracts.queries"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import ContractsPageComponent from "./contracts.page.component"; +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function ContractsPageContainer({ setBreadcrumbs }) { + const { loading, error, data } = useQuery(QUERY_ACTIVE_CONTRACTS); + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.contracts"); + + setBreadcrumbs([ + { link: "/manage/courtesycars", label: t("titles.bc.courtesycars") }, + { + link: "/manage/courtesycars/contracts", + label: t("titles.bc.contracts"), + }, + ]); + }, [setBreadcrumbs, t]); + + if (error) return ; + return ( +
+ +
+ ); +} +export default connect(null, mapDispatchToProps)(ContractsPageContainer); diff --git a/client/src/pages/courtesy-car-create/courtesy-car-create.page.component.jsx b/client/src/pages/courtesy-car-create/courtesy-car-create.page.component.jsx new file mode 100644 index 000000000..4f5b8b75a --- /dev/null +++ b/client/src/pages/courtesy-car-create/courtesy-car-create.page.component.jsx @@ -0,0 +1,6 @@ +import React from "react"; +import CourtesyCarFormComponent from "../../components/courtesy-car-form/courtesy-car-form.component" + +export default function CourtesyCarCreateComponent() { + return ; +} diff --git a/client/src/pages/courtesy-car-create/courtesy-car-create.page.container.jsx b/client/src/pages/courtesy-car-create/courtesy-car-create.page.container.jsx new file mode 100644 index 000000000..a9bd1bdd7 --- /dev/null +++ b/client/src/pages/courtesy-car-create/courtesy-car-create.page.container.jsx @@ -0,0 +1,58 @@ +import { useMutation } from "@apollo/react-hooks"; +import { Form, notification } from "antd"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { INSERT_NEW_COURTESY_CAR } from "../../graphql/courtesy-car.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import CourtesyCarCreateComponent from "./courtesy-car-create.page.component"; +import { useHistory } from "react-router-dom"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); +export function CourtesyCarCreateContainer({ bodyshop, setBreadcrumbs }) { + const [form] = Form.useForm(); + const [insertCourtesyCar] = useMutation(INSERT_NEW_COURTESY_CAR); + const { t } = useTranslation(); + const history = useHistory(); + + const handleFinish = (values) => { + insertCourtesyCar({ + variables: { courtesycar: { ...values, bodyshopid: bodyshop.id } }, + }) + .then((response) => { + notification["success"]({ message: t("courtesycars.successes.saved") }); + history.push( + `/manage/courtesycars/${response.data.insert_courtesycars.returning[0].id}` + ); + }) + .catch((error) => console.log("error", error)); + }; + + useEffect(() => { + document.title = t("titles.courtesycars-create"); + setBreadcrumbs([ + { link: "/manage/courtesycars", label: t("titles.bc.courtesycars") }, + { + link: "/manage/courtesycars/new", + label: t("titles.bc.courtesycars-new"), + }, + ]); + }, [t, setBreadcrumbs]); + + return ( +
+ + + ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(CourtesyCarCreateContainer); diff --git a/client/src/pages/courtesy-car-detail/courtesy-car-detail.page.component.jsx b/client/src/pages/courtesy-car-detail/courtesy-car-detail.page.component.jsx new file mode 100644 index 000000000..8a874d3aa --- /dev/null +++ b/client/src/pages/courtesy-car-detail/courtesy-car-detail.page.component.jsx @@ -0,0 +1,12 @@ +import React from "react"; +import CourtesyCarCreateFormComponent from "../../components/courtesy-car-form/courtesy-car-form.component"; +import CourtesyCarContractListComponent from "../../components/courtesy-car-contract-list/courtesy-car-contract-list.component"; + +export default function CourtesyCarDetailPageComponent({ contracts }) { + return ( +
+ + +
+ ); +} diff --git a/client/src/pages/courtesy-car-detail/courtesy-car-detail.page.container.jsx b/client/src/pages/courtesy-car-detail/courtesy-car-detail.page.container.jsx new file mode 100644 index 000000000..a595be0a6 --- /dev/null +++ b/client/src/pages/courtesy-car-detail/courtesy-car-detail.page.container.jsx @@ -0,0 +1,109 @@ +import { useMutation, useQuery } from "@apollo/react-hooks"; +import { Form, notification } from "antd"; +import moment from "moment"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { useParams } from "react-router-dom"; +import AlertComponent from "../../components/alert/alert.component"; +import { QUERY_CC_BY_PK, UPDATE_CC } from "../../graphql/courtesy-car.queries"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import CourtesyCarDetailPageComponent from "./courtesy-car-detail.page.component"; + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); +export function CourtesyCarDetailPageContainer({ setBreadcrumbs }) { + const { t } = useTranslation(); + const [insertCourtesyCar] = useMutation(UPDATE_CC); + const [form] = Form.useForm(); + const { ccId } = useParams(); + + const { loading, error, data } = useQuery(QUERY_CC_BY_PK, { + variables: { id: ccId }, + }); + + useEffect(() => { + document.title = loading + ? t("titles.app") + : error + ? t("titles.app") + : t("titles.courtesycars-detail", { + id: (data && data.courtesycars_by_pk.fleet_number) || "", + }); + setBreadcrumbs([ + { link: "/manage/courtesycars", label: t("titles.bc.courtesycars") }, + { + link: `/manage/courtesycars/${ + (data && data.courtesycars_by_pk.id) || "" + }`, + label: t("titles.bc.courtesycars-detail", { + number: (data && data.courtesycars_by_pk.fleetnumber) || "", + }), + }, + ]); + }, [t, data, error, loading, setBreadcrumbs]); + + const handleFinish = (values) => { + insertCourtesyCar({ + variables: { cc: { ...values }, ccId: ccId }, + }) + .then((response) => { + notification["success"]({ message: t("courtesycars.successes.saved") }); + }) + .catch((error) => + notification["error"]({ + message: t("courtesycars.errors.saving", { error: error }), + }) + ); + }; + + useEffect(() => { + if (data) form.resetFields(); + }, [data, form]); + + if (error) return ; + return ( +
+ + + ); +} +export default connect( + null, + mapDispatchToProps +)(CourtesyCarDetailPageContainer); diff --git a/client/src/pages/courtesy-cars/courtesy-cars.page.component.jsx b/client/src/pages/courtesy-cars/courtesy-cars.page.component.jsx new file mode 100644 index 000000000..4d59ebc34 --- /dev/null +++ b/client/src/pages/courtesy-cars/courtesy-cars.page.component.jsx @@ -0,0 +1,6 @@ +import React from "react"; +import CourtesyCarsListComponent from "../../components/courtesy-cars-list/courtesy-cars-list.component"; + +export default function CourtesyCarsPageComponent({ loading, data }) { + return ; +} diff --git a/client/src/pages/courtesy-cars/courtesy-cars.page.container.jsx b/client/src/pages/courtesy-cars/courtesy-cars.page.container.jsx new file mode 100644 index 000000000..cc464629a --- /dev/null +++ b/client/src/pages/courtesy-cars/courtesy-cars.page.container.jsx @@ -0,0 +1,33 @@ +import React, { useEffect } from "react"; +import CourtesyCarsPageComponent from "./courtesy-cars.page.component"; +import { useQuery } from "@apollo/react-hooks"; +import AlertComponent from "../../components/alert/alert.component"; +import { QUERY_ALL_CC } from "../../graphql/courtesy-car.queries"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import { connect } from "react-redux"; +import { useTranslation } from "react-i18next"; + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function CourtesyCarsPageContainer({ setBreadcrumbs }) { + const { loading, error, data } = useQuery(QUERY_ALL_CC); + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.courtesycars"); + + setBreadcrumbs([ + { link: "/manage/courtesycars", label: t("titles.bc.courtesycars") }, + ]); + }, [setBreadcrumbs, t]); + if (error) return ; + return ( + + ); +} + +export default connect(null, mapDispatchToProps)(CourtesyCarsPageContainer); diff --git a/client/src/pages/error-not-found/error-not-found.page.jsx b/client/src/pages/error-not-found/error-not-found.page.jsx deleted file mode 100644 index 4d89a8e98..000000000 --- a/client/src/pages/error-not-found/error-not-found.page.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import React from "react"; - -export default function ErrorNotFound() { - return
Uh oh, we couldn't find the page you're looking for.
; -} diff --git a/client/src/pages/invoice-detail/invoice-detail.page.component.jsx b/client/src/pages/invoice-detail/invoice-detail.page.component.jsx new file mode 100644 index 000000000..6a3885aba --- /dev/null +++ b/client/src/pages/invoice-detail/invoice-detail.page.component.jsx @@ -0,0 +1,5 @@ +import React from "react"; + +export default function InvoiceDetailPageComponent() { + return
Invoice Detail Page Component
; +} diff --git a/client/src/pages/invoice-detail/invoice-detail.page.container.jsx b/client/src/pages/invoice-detail/invoice-detail.page.container.jsx new file mode 100644 index 000000000..966c4441e --- /dev/null +++ b/client/src/pages/invoice-detail/invoice-detail.page.container.jsx @@ -0,0 +1,27 @@ +import React from "react"; +import { useParams } from "react-router-dom"; +import InvoiceDetailPageComponent from "./invoice-detail.page.component"; +import { useQuery } from "@apollo/react-hooks"; +import { QUERY_INVOICE_BY_PK } from "../../graphql/invoices.queries"; +import AlertComponent from "../../components/alert/alert.component"; +import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; +import { Form } from "antd"; + +export default function InvoiceDetailPageContainer() { + const { invoiceId } = useParams(); + const [form] = Form.useForm(); + + const { loading, error, data } = useQuery(QUERY_INVOICE_BY_PK, { + variables: { invoiceid: invoiceId }, + skip: !!!invoiceId, + }); + + if (loading) return ; + if (error) return ; + + return ( +
+ + + ); +} diff --git a/client/src/pages/invoices/invoices.page.component.jsx b/client/src/pages/invoices/invoices.page.component.jsx new file mode 100644 index 000000000..2a0ebad5b --- /dev/null +++ b/client/src/pages/invoices/invoices.page.component.jsx @@ -0,0 +1,188 @@ +import { Button, Descriptions, Table } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import CurrencyFormatter from "../../utils/CurrencyFormatter"; +import { DateFormatter } from "../../utils/DateFormatter"; +import { alphaSort } from "../../utils/sorters"; + +export default function InvoicesPageComponent({ + loading, + invoices, + selectedInvoice, + handleFetchMore, + handleOnRowClick, +}) { + const { t } = useTranslation(); + + const [state, setState] = useState({ + sortedInfo: {}, + }); + + const columns = [ + { + title: t("invoices.fields.vendorname"), + dataIndex: "vendorname", + key: "vendorname", + sorter: (a, b) => alphaSort(a.vendor.name, b.vendor.name), + sortOrder: + state.sortedInfo.columnKey === "vendorname" && state.sortedInfo.order, + render: (text, record) => {record.vendor.name}, + }, + { + title: t("invoices.fields.invoice_number"), + dataIndex: "invoice_number", + key: "invoice_number", + sorter: (a, b) => alphaSort(a.invoice_number, b.invoice_number), + sortOrder: + state.sortedInfo.columnKey === "invoice_number" && + state.sortedInfo.order, + }, + { + title: t("invoices.fields.date"), + dataIndex: "date", + key: "date", + + sorter: (a, b) => a.date - b.date, + sortOrder: + state.sortedInfo.columnKey === "date" && state.sortedInfo.order, + render: (text, record) => {record.date}, + }, + { + title: t("invoices.fields.total"), + dataIndex: "total", + key: "total", + + sorter: (a, b) => a.total - b.total, + sortOrder: + state.sortedInfo.columnKey === "total" && state.sortedInfo.order, + render: (text, record) => ( + {record.total} + ), + }, + { + title: t("general.labels.actions"), + dataIndex: "actions", + key: "actions", + render: (text, record) => ( + + + + ), + }, + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + }; + + const rowExpander = (record) => { + const columns = [ + { + title: t("invoicelines.fields.line_desc"), + dataIndex: "line_desc", + key: "line_desc", + sorter: (a, b) => alphaSort(a.line_desc, b.line_desc), + sortOrder: + state.sortedInfo.columnKey === "line_desc" && state.sortedInfo.order, + }, + { + title: t("invoicelines.fields.retail"), + dataIndex: "actual_price", + key: "actual_price", + sorter: (a, b) => a.actual_price - b.actual_price, + sortOrder: + state.sortedInfo.columnKey === "actual_price" && + state.sortedInfo.order, + render: (text, record) => ( + {record.actual_price} + ), + }, + { + title: t("invoicelines.fields.actual_cost"), + dataIndex: "actual_cost", + key: "actual_cost", + sorter: (a, b) => a.actual_cost - b.actual_cost, + sortOrder: + state.sortedInfo.columnKey === "actual_cost" && + state.sortedInfo.order, + render: (text, record) => ( + {record.actual_cost} + ), + }, + { + title: t("invoicelines.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, + }, + ]; + + return ( +
+ + Zhou Maomao + 1810000000 + Hangzhou, Zhejiang + empty + + No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China + + + ({ ...item }))} + rowKey="id" + dataSource={record.invoicelines} + /> + + ); + }; + + return ( +
{ + handleOnRowClick(page * pageSize); + }, + }} + columns={columns.map((item) => ({ ...item }))} + rowKey="id" + dataSource={invoices} + onChange={handleTableChange} + expandable={{ + expandedRowKeys: [selectedInvoice], + onExpand: (expanded, record) => { + handleOnRowClick(expanded ? record : null); + }, + }} + rowSelection={{ + onSelect: (record) => { + handleOnRowClick(record); + }, + selectedRowKeys: [selectedInvoice], + type: "radio", + }} + onRow={(record, rowIndex) => { + return { + onClick: (event) => { + handleOnRowClick(record); + }, // click row + onDoubleClick: (event) => {}, // double click row + onContextMenu: (event) => {}, // right button click row + onMouseEnter: (event) => {}, // mouse enter row + onMouseLeave: (event) => {}, // mouse leave row + }; + }} + /> + ); +} diff --git a/client/src/pages/invoices/invoices.page.container.jsx b/client/src/pages/invoices/invoices.page.container.jsx new file mode 100644 index 000000000..78a2e4ee3 --- /dev/null +++ b/client/src/pages/invoices/invoices.page.container.jsx @@ -0,0 +1,57 @@ +import { useQuery } from "@apollo/react-hooks"; +import React from "react"; +import { QUERY_ALL_INVOICES_PAGINATED } from "../../graphql/invoices.queries"; +import InvoicesPageComponent from "./invoices.page.component"; +import AlertComponent from "../../components/alert/alert.component"; +import queryString from "query-string"; +import { useHistory, useLocation } from "react-router-dom"; + +export default function InvoicesPageContainer() { + const { loading, error, data, fetchMore } = useQuery( + QUERY_ALL_INVOICES_PAGINATED, + { + variables: { offset: 0, limit: 1 }, + } + ); + const search = queryString.parse(useLocation().search); + const history = useHistory(); + + const handleOnRowClick = (record) => { + if (record) { + if (record.id) { + search.invoiceid = record.id; + history.push({ search: queryString.stringify(search) }); + } + } else { + delete search.invoiceid; + history.push({ search: queryString.stringify(search) }); + } + }; + + const handleFetchMore = (offset) => { + fetchMore({ + variables: { + offset: offset, + }, + updateQuery: (prev, { fetchMoreResult }) => { + if (!fetchMoreResult) return prev; + return Object.assign({}, prev, { + invoices: [...prev.invoices, ...fetchMoreResult.invoices], + }); + }, + }); + }; + + if (error) return ; + return ( +
+ +
+ ); +} 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..e92db9064 100644 --- a/client/src/pages/jobs-available/jobs-available.page.component.jsx +++ b/client/src/pages/jobs-available/jobs-available.page.component.jsx @@ -1,19 +1,25 @@ import React from "react"; +import { Link } from "react-router-dom"; +import { Button } from "antd"; import JobsAvailableContainer from "../../components/jobs-available-new/jobs-available-new.container"; import JobsAvailableSupplementContainer from "../../components/jobs-available-supplement/jobs-available-supplement.container"; - +import { useTranslation } from "react-i18next"; export default function JobsAvailablePageComponent({ deleteJob, estDataLazyLoad }) { + const { t } = useTranslation(); return (
- Available New Jobs + + + + - Available Supplements (//TODO: LOGIC HAS NOT YET BEEN COPIED FROM OTHER COMPONENT) + ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function JobsAvailablePageContainer({ setBreadcrumbs }) { const [deleteJob] = useMutation(DELETE_AVAILABLE_JOB); + const { t } = useTranslation(); + + const estDataLazyLoad = useLazyQuery(QUERY_AVAILABLE_NEW_JOBS_EST_DATA_BY_PK); + + useEffect(() => { + document.title = t("titles.jobsavailable"); + setBreadcrumbs([ + { link: "/manage/available", label: t("titles.bc.availablejobs") }, + ]); + }, [t, setBreadcrumbs]); - const estDataLazyLoad = useLazyQuery( - QUERY_AVAILABLE_NEW_JOBS_EST_DATA_BY_PK, - { - fetchPolicy: "network-only" - } - ); return (
); } +export default connect(null, mapDispatchToProps)(JobsAvailablePageContainer); diff --git a/client/src/pages/jobs-create/jobs-create.component.jsx b/client/src/pages/jobs-create/jobs-create.component.jsx new file mode 100644 index 000000000..33b646fbc --- /dev/null +++ b/client/src/pages/jobs-create/jobs-create.component.jsx @@ -0,0 +1,142 @@ +import { Button, Steps, Result } from "antd"; +import React, { useContext, useState } from "react"; +import { useTranslation } from "react-i18next"; +import AlertComponent from "../../components/alert/alert.component"; +import JobsCreateJobsInfo from "../../components/jobs-create-jobs-info/jobs-create-jobs-info.component"; +import JobsCreateOwnerInfoContainer from "../../components/jobs-create-owner-info/jobs-create-owner-info.container"; +import JobsCreateVehicleInfoContainer from "../../components/jobs-create-vehicle-info/jobs-create-vehicle-info.container"; +import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; +import { Link } from "react-router-dom"; + +export default function JobsCreateComponent({ form }) { + const [pageIndex, setPageIndex] = useState(0); + const [errorMessage, setErrorMessage] = useState(null); + const [state] = useContext(JobCreateContext); + + const { t } = useTranslation(); + const steps = [ + { + title: t("jobs.labels.create.vehicleinfo"), + content: , + validation: !!state.vehicle.new || !!state.vehicle.selectedid, + error: t("vehicles.errors.selectexistingornew") + }, + { + title: t("jobs.labels.create.ownerinfo"), + content: , + validation: !!state.owner.new || !!state.owner.selectedid, + error: t("owners.errors.selectexistingornew") + }, + { + title: t("jobs.labels.create.jobinfo"), + content: + } + ]; + + const next = () => { + setPageIndex(pageIndex + 1); + }; + const prev = () => { + setPageIndex(pageIndex - 1); + }; + const { Step } = Steps; + + const ProgressButtons = () => { + return ( +
+ {pageIndex > 0 && ( + + )} + {pageIndex < steps.length - 1 && ( + + )} + {pageIndex === steps.length - 1 && ( + + )} +
+ ); + }; + + return ( +
+ {state.created ? ( +
+ + + , + + + + ]} + /> +
+ ) : ( +
+ + {steps.map((item, idx) => ( + { + form + .validateFields() + .then(r => { + if (steps[pageIndex].validation) { + setErrorMessage(null); + setPageIndex(idx); + } else { + setErrorMessage(steps[pageIndex].error); + } + }) + .catch(error => console.log("error", error)); + }} + /> + ))} + + + + {errorMessage ? ( +
+ +
+ ) : null} + + {steps.map((item, idx) => ( +
+ {item.content} +
+ ))} + +
+ )} +
+ ); +} diff --git a/client/src/pages/jobs-create/jobs-create.container.jsx b/client/src/pages/jobs-create/jobs-create.container.jsx new file mode 100644 index 000000000..7aa4a87b2 --- /dev/null +++ b/client/src/pages/jobs-create/jobs-create.container.jsx @@ -0,0 +1,143 @@ +import React, { useState, useEffect } from "react"; +import JobsCreateComponent from "./jobs-create.component"; +import { Form, notification } from "antd"; +import JobCreateContext from "./jobs-create.context"; +import { useMutation, useLazyQuery } from "@apollo/react-hooks"; +import { INSERT_NEW_JOB } from "../../graphql/jobs.queries"; +import { QUERY_OWNER_FOR_JOB_CREATION } from "../../graphql/owners.queries"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import { useTranslation } from "react-i18next"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); +function JobsCreateContainer({ bodyshop, setBreadcrumbs }) { + const { t } = useTranslation(); + const contextState = useState({ + vehicle: { new: false, search: "", selectedid: null, vehicleObj: null }, + owner: { new: false, search: "", selectedid: null }, + job: null, + created: false, + error: null, + newJobId: null, + newJobEstNum: null, + }); + const [form] = Form.useForm(); + const [state, setState] = contextState; + const [insertJob] = useMutation(INSERT_NEW_JOB); + const [loadOwner, RemoteOwnerData] = useLazyQuery( + QUERY_OWNER_FOR_JOB_CREATION + ); + + useEffect(() => { + if (!!state.owner.selectedid) { + loadOwner({ + variables: { id: state.owner.selectedid }, + }); + } + }, [state.owner.selectedid, loadOwner]); + + useEffect(() => { + document.title = t("titles.jobs-create"); + setBreadcrumbs([ + { link: "/manage/available", label: t("titles.bc.availablejobs") }, + { + link: "/manage/jobs/new", + label: t("titles.bc.jobs-new"), + }, + ]); + }, [t, setBreadcrumbs]); + + const runInsertJob = (job) => { + insertJob({ variables: { job: job } }) + .then((resp) => { + setState({ + ...state, + created: true, + error: null, + newJobId: resp.data.insert_jobs.returning[0].id, + newJobEstNum: resp.data.insert_jobs.returning[0].est_number, + }); + }) + .catch((error) => { + notification["error"]({ + message: t("jobs.errors.creating", { error: error }), + }); + setState({ ...state, error: error }); + }); + }; + + const handleFinish = (values) => { + let job = Object.assign( + {}, + values, + { + vehicle: state.vehicle.selectedid ? null : values.vehicle, + vehicleid: state.vehicle.selectedid || null, + }, + { + owner: state.owner.selectedid ? null : values.owner, + ownerid: state.owner.selectedid || null, + }, + { + status: bodyshop.md_ro_statuses.default_imported || "Open*", //Pull from redux store. + shopid: bodyshop.id, + } + ); + //TODO Logic to ensure the owner is actually fetched. + let ownerData; + if (!!job.owner) { + ownerData = job.owner.data; + ownerData.shopid = bodyshop.id; + delete ownerData.allow_text_message; + delete ownerData.preferred_contact; + delete job.ownerid; + } else { + ownerData = RemoteOwnerData.data.owners_by_pk; + delete ownerData.id; + delete ownerData.__typename; + } + if (!!job.vehicle) { + delete job.vehicleid; + job.vehicle.data.shopid = bodyshop.id; + job.plate_no = job.vehicle.data.plate_no; + job.plate_st = job.vehicle.data.plate_st; + job.v_vin = job.vehicle.data.v_vin; + job.v_model_yr = job.vehicle.data.v_model_yr; + job.v_model_desc = job.vehicle.data.v_model_desc; + job.v_make_desc = job.vehicle.data.v_make_desc; + job.v_color = job.vehicle.data.v_color; + } else { + //Vehicle selected. + job.vehicle.data.shopid = bodyshop.id; + job.plate_no = state.vehicle.vehicleObj.plate_no; + job.plate_st = state.vehicle.vehicleObj.plate_st; + job.v_vin = state.vehicle.vehicleObj.v_vin; + job.v_model_yr = state.vehicle.vehicleObj.v_model_yr; + job.v_model_desc = state.vehicle.vehicleObj.v_model_desc; + job.v_make_desc = state.vehicle.vehicleObj.v_make_desc; + job.v_color = state.vehicle.vehicleObj.v_color; + } + + job = { ...job, ...ownerData }; + runInsertJob(job); + }; + + return ( + +
+ + +
+ ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(JobsCreateContainer); diff --git a/client/src/pages/jobs-create/jobs-create.context.js b/client/src/pages/jobs-create/jobs-create.context.js new file mode 100644 index 000000000..52f2f0a9e --- /dev/null +++ b/client/src/pages/jobs-create/jobs-create.context.js @@ -0,0 +1,3 @@ +import React from "react"; +const JobCreateContext = React.createContext(null); +export default JobCreateContext; diff --git a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx index beb249db2..7f71aae0f 100644 --- a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx +++ b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx @@ -1,173 +1,295 @@ -import { Alert, Button, Form, Icon, Tabs } from "antd"; -import React, { useContext } from "react"; +import Icon, { + BarsOutlined, + CalendarFilled, + DollarCircleOutlined, + FileImageFilled, + ToolFilled, +} from "@ant-design/icons"; +import { Form, notification, Tabs } from "antd"; +import moment from "moment"; +import React, { lazy, Suspense } from "react"; import { useTranslation } from "react-i18next"; import { FaHardHat, + FaHistory, FaInfo, FaRegStickyNote, - FaShieldAlt + FaShieldAlt, } from "react-icons/fa"; -import JobsLines from '../../components/job-detail-lines/job-lines.component' -import JobsDetailClaims from "../../components/jobs-detail-claims/jobs-detail-claims.component"; -import JobsDetailFinancials from "../../components/jobs-detail-financial/jobs-detail-financial.component"; -import JobsDetailHeader from "../../components/jobs-detail-header/jobs-detail-header.component"; -import JobsDetailInsurance from "../../components/jobs-detail-insurance/jobs-detail-insurance.component"; -import JobsDocumentsContainer from "../../components/jobs-documents/jobs-documents.container"; -import JobNotesContainer from "../../components/jobs-notes/jobs-notes.container"; -import JobDetailFormContext from "./jobs-detail.page.context"; +import { useHistory, useLocation } from "react-router-dom"; +import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; +import queryString from "query-string"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import { CalculateJob } from "../../components/job-totals-table/job-totals.utility"; -export default function JobsDetailPage({ +const JobsLinesContainer = lazy(() => + 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 JobsDocumentsGalleryContainer = lazy(() => + import( + "../../components/jobs-documents-gallery/jobs-documents-gallery.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 JobsDetailPliContainer = lazy(() => + import("../../components/jobs-detail-pli/jobs-detail-pli.container") +); +const JobsDetailAuditContainer = lazy(() => + import("../../components/audit-trail-list/audit-trail-list.container") +); +const JobsDetailLaborContainer = lazy(() => + import("../../components/jobs-detail-labor/jobs-detail-labor.container") +); + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +export function JobsDetailPage({ job, mutationUpdateJob, mutationConvertJob, handleSubmit, - refetch + refetch, + updateJobStatus, + bodyshop, }) { const { t } = useTranslation(); + const [form] = Form.useForm(); + const history = useHistory(); - const { isFieldsTouched, resetFields } = useContext(JobDetailFormContext); - + const search = queryString.parse(useLocation().search); const formItemLayout = { labelCol: { xs: { span: 12 }, - sm: { span: 5 } + sm: { span: 5 }, }, wrapperCol: { xs: { span: 24 }, - sm: { span: 12 } - } + sm: { span: 12 }, + }, + }; + + const handleFinish = (values) => { + const newTotals = CalculateJob({ ...job, ...values }, bodyshop.shoprates); + mutationUpdateJob({ + variables: { + jobId: job.id, + job: { + ...values, + clm_total: newTotals.totals.total_repairs, + owner_owing: newTotals.custPayable.total, + job_totals: newTotals, + }, + }, + }).then((r) => { + notification["success"]({ + message: t("jobs.successes.savetitle"), + }); + refetch().then((r) => form.resetFields()); + }); }; return ( -
- + } + > + + - {isFieldsTouched() ? ( - - {t("general.messages.unsavedchanges")} - -
- } - closable + console.log("a,b", a, b)} + name="JobDetailForm" + onFinish={handleFinish} + {...formItemLayout} + autoComplete={"off"} + initialValues={{ + ...job, + loss_date: job.loss_date ? moment(job.loss_date) : null, + date_estimated: job.date_estimated + ? moment(job.date_estimated) + : null, + date_open: job.date_open ? moment(job.date_open) : null, + date_scheduled: job.date_scheduled + ? moment(job.date_scheduled) + : null, + scheduled_in: job.scheduled_in ? moment(job.scheduled_in) : null, + actual_in: job.actual_in ? moment(job.actual_in) : null, + scheduled_completion: job.scheduled_completion + ? moment(job.scheduled_completion) + : null, + actual_completion: job.actual_completion + ? moment(job.actual_completion) + : null, + scheduled_delivery: job.scheduled_delivery + ? moment(job.scheduled_delivery) + : null, + actual_delivery: job.actual_delivery + ? moment(job.actual_delivery) + : null, + date_invoiced: job.date_invoiced ? moment(job.date_invoiced) : null, + date_closed: job.date_closed ? moment(job.date_closed) : null, + date_exported: job.date_exported ? moment(job.date_exported) : null, + }} + > + - ) : null} + history.push({ search: `?tab=${key}` })} + > + + + {t("menus.jobsdetail.claimdetail")} + + } + key="claimdetail" + > + + + + + {t("menus.jobsdetail.insurance")} + + } + key="insurance" + > + + + + + {t("menus.jobsdetail.repairdata")} + + } + key="repairdata" + > + + + + + {t("menus.jobsdetail.financials")} + + } + key="financials" + > + + + + + {t("menus.jobsdetail.partssublet")} + + } + key="partssublet" + > + + + + + {t("menus.jobsdetail.labor")} + + } + key="labor" + > + + + + + {t("menus.jobsdetail.dates")} + + } + key="dates" + > + } + + + + {t("jobs.labels.documents")} + + } + key="documents" + > + + + + + {t("jobs.labels.notes")} + + } + key="notes" + > + + - - - - {t("menus.jobsdetail.claimdetail")} - - } - key="claimdetail" - > - - - - - - {t("menus.jobsdetail.insurance")} - - } - key="insurance" - > - - - - - - {t("menus.jobsdetail.repairdata")} - - } - key="repairdata" - > - - - - - - {t("menus.jobsdetail.financials")} - - } - key="financials" - > - - - - - - {t("menus.jobsdetail.partssublet")} - - } - key="partssublet" - > - Partssublet - - - - - {t("menus.jobsdetail.labor")} - - } - key="labor" - > - Labor - - - - - {t("menus.jobsdetail.dates")} - - } - key="dates" - > - Dates - - - - - {t("jobs.labels.documents")} - - } - key="#documents" - > - - - - - {t("jobs.labels.notes")} - - } - key="#notes" - > - - - - + + + {t("jobs.labels.audit")} + + } + key="audit" + > + + + + + ); } +export default connect(mapStateToProps, null)(JobsDetailPage); 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..f5f9f2cd7 100644 --- a/client/src/pages/jobs-detail/jobs-detail.page.container.jsx +++ b/client/src/pages/jobs-detail/jobs-detail.page.container.jsx @@ -1,76 +1,87 @@ -import { Form, notification } from "antd"; +import { useMutation, useQuery } from "@apollo/react-hooks"; +import { notification } from "antd"; import React, { useEffect } 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"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import { connect } from "react-redux"; -function JobsDetailPageContainer({ match, form }) { +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +function JobsDetailPageContainer({ match, setBreadcrumbs }) { const { jobId } = match.params; const { t } = useTranslation(); const { loading, error, data, refetch } = useQuery(GET_JOB_BY_PK, { variables: { id: jobId }, - fetchPolicy: "network-only" + 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]); - - 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) { - mutationUpdateJob({ - variables: { jobId: data.jobs_by_pk.id, job: values } - }).then(r => { - notification["success"]({ - message: t("jobs.successes.savetitle") - }); - //TODO: Better way to reset the field decorators? - refetch().then(r => form.resetFields()); - }); - } - }); - }; + setBreadcrumbs([ + { link: "/manage/jobs", label: t("titles.bc.jobs") }, + { + link: `/manage/jobs/${jobId}`, + label: t("titles.bc.jobs-detail", { + number: + (data && + (data.jobs_by_pk.converted + ? data && data.jobs_by_pk.ro_number + : `EST ${data.jobs_by_pk.est_number}`)) || + "", + }), + }, + ]); + }, [loading, data, t, error, setBreadcrumbs, jobId]); if (loading) return ; - if (error) return ; + if (error) return ; return data.jobs_by_pk ? ( - - - + ) : ( - + ); } -export default Form.create({ name: "JobsDetailPageContainer" })( - JobsDetailPageContainer -); +export default connect(null, mapDispatchToProps)(JobsDetailPageContainer); diff --git a/client/src/pages/jobs-detail/jobs-detail.page.context.jsx b/client/src/pages/jobs-detail/jobs-detail.page.context.jsx deleted file mode 100644 index 60056c8de..000000000 --- a/client/src/pages/jobs-detail/jobs-detail.page.context.jsx +++ /dev/null @@ -1,3 +0,0 @@ -import React from "react"; -const JobDetailFormContext = React.createContext(null); -export default JobDetailFormContext; diff --git a/client/src/pages/jobs/jobs.page.jsx b/client/src/pages/jobs/jobs.page.jsx index 13c2e116c..fdd2988fb 100644 --- a/client/src/pages/jobs/jobs.page.jsx +++ b/client/src/pages/jobs/jobs.page.jsx @@ -1,36 +1,88 @@ -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 queryString from "query-string"; +import React, { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import JobsList from "../../components/jobs-list/jobs-list.component"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import AlertComponent from "../../components/alert/alert.component"; +import EnterInvoiceModalContainer from "../../components/invoice-enter-modal/invoice-enter-modal.container"; 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"; +import { selectBodyshop } from "../../redux/user/user.selectors"; -//TODO: Implement pagination for this. -export default function JobsPage({ match, location }) { - const { loading, error, data } = useQuery(QUERY_ALL_OPEN_JOBS, { - fetchPolicy: "network-only" +import { setBreadcrumbs } from "../../redux/application/application.actions"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function JobsPage({ location, bodyshop, setBreadcrumbs }) { + const { loading, error, data, refetch } = useQuery(QUERY_ALL_ACTIVE_JOBS, { + variables: { + statuses: bodyshop.md_ro_statuses.open_statuses || ["Open"], + }, }); const { t } = useTranslation(); useEffect(() => { document.title = t("titles.jobs"); - }, [t]); + setBreadcrumbs([{ link: "/manage/jobs", label: t("titles.bc.jobs-active") }]); + }, [t, setBreadcrumbs]); - const { hash } = location; - const [selectedJob, setSelectedJob] = useState(hash ? hash.substr(1) : null); + const search = queryString.parse(location.search); + 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.plate_no || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.v_model_desc || "") + .toLowerCase() + .includes(searchText.toLowerCase()) || + (j.v_make_desc || "") + .toLowerCase() + .includes(searchText.toLowerCase()) + ) + : null + } /> - - + +
); } + +export default connect(mapStateToProps, mapDispatchToProps)(JobsPage); 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..9cecd0e9c --- /dev/null +++ b/client/src/pages/manage-root/manage-root.page.component.jsx @@ -0,0 +1,43 @@ +import React from "react"; +import DashboardGridComponent from "../../components/dashboard-grid/dashboard-grid.component"; +import Test from "../../components/_test/test.component"; +import { analytics } from "../../firebase/firebase.utils"; + +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.component.jsx b/client/src/pages/manage/manage.page.component.jsx new file mode 100644 index 000000000..a9348e51f --- /dev/null +++ b/client/src/pages/manage/manage.page.component.jsx @@ -0,0 +1,222 @@ +import { BackTop, Layout } from "antd"; +import React, { lazy, Suspense, useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { Route, Switch } from "react-router-dom"; +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 LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; +import "./manage.page.styles.scss"; +import BreadCrumbs from "../../components/breadcrumbs/breadcrumbs.component"; + +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") +); +const ProfilePage = lazy(() => import("../profile/profile.container.page")); +const JobsAvailablePage = lazy(() => + import("../jobs-available/jobs-available.page.container") +); +const ChatDockContainer = lazy(() => + import("../../components/chat-dock/chat-dock.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 JobsCreateContainerPage = lazy(() => + import("../jobs-create/jobs-create.container") +); +const CourtesyCarCreateContainer = lazy(() => + import("../courtesy-car-create/courtesy-car-create.page.container") +); +const CourtesyCarDetailContainer = lazy(() => + import("../courtesy-car-detail/courtesy-car-detail.page.container") +); +const CourtesyCarsPage = lazy(() => + import("../courtesy-cars/courtesy-cars.page.container") +); +const ContractCreatePage = lazy(() => + import("../contract-create/contract-create.page.container") +); +const ContractDetailPage = lazy(() => + import("../contract-detail/contract-detail.page.container") +); +const ContractsList = lazy(() => + import("../contracts/contracts.page.container") +); +const InvoicesListPage = lazy(() => + import("../invoices/invoices.page.container") +); +const InvoiceDetailPage = lazy(() => + import("../invoice-detail/invoice-detail.page.container") +); +const EnterInvoiceModalContainer = lazy(() => + import("../../components/invoice-enter-modal/invoice-enter-modal.container") +); +const TimeTicketModalContainer = lazy(() => + import("../../components/time-ticket-modal/time-ticket-modal.container") +); +const { Header, Content, Footer } = Layout; + +export default function Manage({ match }) { + const { t } = useTranslation(); + + useEffect(() => { + document.title = t("titles.app"); + }, [t]); + + return ( + +
+ +
+ + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ ); +} diff --git a/client/src/pages/manage/manage.page.container.jsx b/client/src/pages/manage/manage.page.container.jsx index 4df3c41b6..13b2caba6 100644 --- a/client/src/pages/manage/manage.page.container.jsx +++ b/client/src/pages/manage/manage.page.container.jsx @@ -1,6 +1,30 @@ -import React from "react"; -import ManagePage from "./manage.page"; +import { useQuery } from "@apollo/react-hooks"; +import React, { useEffect } from "react"; +import { connect } from "react-redux"; +import AlertComponent from "../../components/alert/alert.component"; +import { QUERY_BODYSHOP } from "../../graphql/bodyshop.queries"; +import { setBodyshop } from "../../redux/user/user.actions"; +import ManagePage from "./manage.page.component"; +import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; +import { useTranslation } from "react-i18next"; -export default function ManagePageContainer() { - return ; +const mapDispatchToProps = dispatch => ({ + setBodyshop: bs => dispatch(setBodyshop(bs)) +}); + +function ManagePageContainer({ match, setBodyshop }) { + const { loading, error, data } = useQuery(QUERY_BODYSHOP, { + fetchPolicy: "network-only" + }); + const { t } = useTranslation(); + useEffect(() => { + if (data) setBodyshop(data.bodyshops[0]); + }, [data, setBodyshop]); + + if (loading) + return ; + if (error) return ; + return ; } + +export default connect(null, mapDispatchToProps)(ManagePageContainer); diff --git a/client/src/pages/manage/manage.page.jsx b/client/src/pages/manage/manage.page.jsx deleted file mode 100644 index 93245792f..000000000 --- a/client/src/pages/manage/manage.page.jsx +++ /dev/null @@ -1,82 +0,0 @@ -import React, { lazy, Suspense, useEffect } from "react"; -import { Route } from "react-router"; -import { Layout, BackTop } from "antd"; -import { useTranslation } from "react-i18next"; - -//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 "./manage.page.styles.scss"; -import ChatWindowContainer from "../../components/chat-window/chat-window.container"; - -const WhiteBoardPage = lazy(() => import("../white-board/white-board.page")); -const JobsPage = lazy(() => import("../jobs/jobs.page")); -const JobsDetailPage = lazy(() => - import("../jobs-detail/jobs-detail.page.container") -); -const ProfilePage = lazy(() => import("../profile/profile.container.page")); -const JobsDocumentsPage = lazy(() => - import("../../components/jobs-documents/jobs-documents.container") -); -const JobsAvailablePage = lazy(() => - import("../jobs-available/jobs-available.page.container") -); - -const { Header, Content, Footer } = Layout; -//This page will handle all routing for the entire application. -export default function Manage({ match }) { - const { t } = useTranslation(); - - useEffect(() => { - document.title = t("titles.app"); - }, [t]); - - return ( - -
- -
- - - - TODO: Suspended Loading in Manage Page...}> - - - - - - - - - - - - - -
- - -
- -
- ); -} 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..042b7022f --- /dev/null +++ b/client/src/pages/owners-detail/owners-detail.page.container.jsx @@ -0,0 +1,59 @@ +import React, { useEffect } from "react"; +import OwnersDetailComponent from "./owners-detail.page.component"; +import { useTranslation } from "react-i18next"; +import { useQuery } from "@apollo/react-hooks"; +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"; +import { connect } from "react-redux"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function OwnersDetailContainer({ match, setBreadcrumbs }) { + const { ownerId } = match.params; + const { t } = useTranslation(); + + const { loading, data, error, refetch } = useQuery(QUERY_OWNER_BY_ID, { + variables: { id: ownerId }, + fetchPolicy: "network-only", + }); + + useEffect(() => { + document.title = t("titles.owners-detail", { + name: data + ? `${data.owners_by_pk.ownr_fn || ""} ${ + data.owners_by_pk.ownr_ln || "" + } ${data.owners_by_pk.ownr_co_nm || ""}` + : "", + }); + + setBreadcrumbs([ + { link: "/manage/owners", label: t("titles.bc.owners") }, + { + link: `/manage/owners/${ownerId}`, + label: t("titles.bc.owner-detail", { + name: data + ? `${data.owners_by_pk.ownr_fn || ""} ${ + data.owners_by_pk.ownr_ln || "" + } ${data.owners_by_pk.ownr_co_nm || ""}` + : "", + }), + }, + ]); + }, [setBreadcrumbs, t, data, ownerId]); + + if (loading) return ; + if (error) return ; + + if (data.owners_by_pk) + return ( + + ); + else + return ( + + ); +} +export default connect(null, mapDispatchToProps)(OwnersDetailContainer); 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..760f8835f --- /dev/null +++ b/client/src/pages/owners/owners.page.container.jsx @@ -0,0 +1,20 @@ +import React, { useEffect } from "react"; +import OwnersPageComponent from "./owners.page.component"; +import { useTranslation } from "react-i18next"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import { connect } from "react-redux"; + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function OwnersPageContainer({ setBreadcrumbs }) { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.owners"); + setBreadcrumbs([{ link: "/manage/owners", label: t("titles.bc.owners") }]); + }, [t, setBreadcrumbs]); + + return ; +} +export default connect(null, mapDispatchToProps)(OwnersPageContainer); 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..8ab7ee04f --- /dev/null +++ b/client/src/pages/schedule/schedule.page.container.jsx @@ -0,0 +1,22 @@ +import React, { useEffect } from "react"; +import SchedulePageComponent from "./schedule.page.component"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function SchedulePageContainer({ setBreadcrumbs }) { + const { t } = useTranslation(); + + useEffect(() => { + document.title = t("titles.schedule"); + setBreadcrumbs([ + { link: "/manage/schedule", label: t("titles.bc.schedule") }, + ]); + }, [t, setBreadcrumbs]); + + return ; +} +export default connect(null, mapDispatchToProps)(SchedulePageContainer); 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..551332b15 --- /dev/null +++ b/client/src/pages/shop-vendor/shop-vendor.page.component.jsx @@ -0,0 +1,14 @@ +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..abde71a2f --- /dev/null +++ b/client/src/pages/shop-vendor/shop-vendor.page.container.jsx @@ -0,0 +1,18 @@ +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 fetchState = useState(); + 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..da3af6779 --- /dev/null +++ b/client/src/pages/shop/shop.page.component.jsx @@ -0,0 +1,26 @@ +import { Tabs } from "antd"; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import ShopEmployeesContainer from "../../components/shop-employees/shop-employees.container"; +import ShopInfoContainer from "../../components/shop-info/shop-info.container"; + +export default function ShopPage() { + const { t } = useTranslation(); + useEffect(() => { + document.title = t("titles.shop"); + }, [t]); + + return ( + + + + + + + + + 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..aa417570a 100644 --- a/client/src/pages/sign-in/sign-in.page.jsx +++ b/client/src/pages/sign-in/sign-in.page.jsx @@ -1,6 +1,17 @@ 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..07e2f6126 --- /dev/null +++ b/client/src/pages/vehicles-detail/vehicles-detail.page.container.jsx @@ -0,0 +1,56 @@ +import React, { useEffect } from "react"; +import VehicleDetailComponent from "./vehicles-detail.page.component"; +import { useQuery } from "@apollo/react-hooks"; +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"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import { connect } from "react-redux"; + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function VehicleDetailContainer({ match, setBreadcrumbs }) { + 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}` + : "", + }); + setBreadcrumbs([ + { link: "/manage/vehicles", label: t("titles.bc.vehicles") }, + { + link: `/manage/vehicles/${vehId}`, + label: t("titles.bc.vehicle-details", { + 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, setBreadcrumbs, vehId]); + + if (loading) return ; + if (error) return ; + + if (data.vehicles_by_pk) + return ( + + ); + else + return ( + + ); +} +export default connect(null, mapDispatchToProps)(VehicleDetailContainer); 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..7bf7cdd60 --- /dev/null +++ b/client/src/pages/vehicles/vehicles.page.container.jsx @@ -0,0 +1,23 @@ +import React, { useEffect } from "react"; +import VehiclesPageComponent from "./vehicles.page.component"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; + +import { setBreadcrumbs } from "../../redux/application/application.actions"; +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function VehiclesPageContainer({ setBreadcrumbs }) { + const { t } = useTranslation(); + + useEffect(() => { + document.title = t("titles.vehicles"); + setBreadcrumbs([ + { link: "/manage/vehicles", label: t("titles.bc.vehicles") }, + ]); + }, [t, setBreadcrumbs]); + + return ; +} +export default connect(null, mapDispatchToProps)(VehiclesPageContainer); 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/application/application.actions.js b/client/src/redux/application/application.actions.js new file mode 100644 index 000000000..a3649f769 --- /dev/null +++ b/client/src/redux/application/application.actions.js @@ -0,0 +1,15 @@ +import ApplicationActionTypes from "./application.types"; + +export const startLoading = () => ({ + type: ApplicationActionTypes.START_LOADING, +}); + +export const endLoading = (options) => ({ + type: ApplicationActionTypes.END_LOADING, + payload: options, +}); + +export const setBreadcrumbs = (breadcrumbs) => ({ + type: ApplicationActionTypes.SET_BREAD_CRUMBS, + payload: breadcrumbs, +}); diff --git a/client/src/redux/application/application.reducer.js b/client/src/redux/application/application.reducer.js new file mode 100644 index 000000000..9bb60326f --- /dev/null +++ b/client/src/redux/application/application.reducer.js @@ -0,0 +1,30 @@ +import ApplicationActionTypes from "./application.types"; + +const INITIAL_STATE = { + loading: false, + breadcrumbs: [], +}; + +const applicationReducer = (state = INITIAL_STATE, action) => { + switch (action.type) { + case ApplicationActionTypes.START_LOADING: + return { + ...state, + loading: true, + }; + case ApplicationActionTypes.END_LOADING: + return { + ...state, + loading: false, + }; + case ApplicationActionTypes.SET_BREAD_CRUMBS: + return { + ...state, + breadcrumbs: action.payload, + }; + default: + return state; + } +}; + +export default applicationReducer; diff --git a/client/src/redux/application/application.selectors.js b/client/src/redux/application/application.selectors.js new file mode 100644 index 000000000..2b931b789 --- /dev/null +++ b/client/src/redux/application/application.selectors.js @@ -0,0 +1,13 @@ +import { createSelector } from "reselect"; + +const selectApplication = (state) => state.application; + +export const selectLoading = createSelector( + [selectApplication], + (application) => application.loading +); + +export const selectBreadcrumbs = createSelector( + [selectApplication], + (application) => application.breadcrumbs +); diff --git a/client/src/redux/application/application.types.js b/client/src/redux/application/application.types.js new file mode 100644 index 000000000..520db6749 --- /dev/null +++ b/client/src/redux/application/application.types.js @@ -0,0 +1,6 @@ +const ApplicationActionTypes = { + START_LOADING: "START_LOADING", + END_LOADING: "END_LOADING", + SET_BREAD_CRUMBS: "SET_BREAD_CRUMBS", +}; +export default ApplicationActionTypes; 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..df0a1d14e --- /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: { name: null, variables: {} }, + }, + + 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 }, + visible: true, + }; + 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..d691f742e --- /dev/null +++ b/client/src/redux/email/email.selectors.js @@ -0,0 +1,19 @@ +import { createSelector } from "reselect"; + +const selectEmail = (state) => state.email; +const selectEmailConfigMessageOptions = (state) => + state.email.emailConfig.messageOptions; +const selectEmailConfigTemplate = (state) => state.email.emailConfig.template; + +export const selectEmailVisible = createSelector( + [selectEmail], + (email) => email.visible +); + +export const selectEmailConfig = createSelector( + [selectEmailConfigMessageOptions, selectEmailConfigTemplate], + (messageOptions, template) => ({ + messageOptions, + template, + }) +); 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..dfa0f7748 --- /dev/null +++ b/client/src/redux/messaging/messaging.actions.js @@ -0,0 +1,36 @@ +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 +}); + +export const sendMessage = message => ({ + type: MessagingActionTypes.SEND_MESSAGE, + payload: message +}); + +export const sendMessageSuccess = message => ({ + type: MessagingActionTypes.SEND_MESSAGE_SUCCESS, + payload: message +}); + +export const sendMessageFailure = error => ({ + type: MessagingActionTypes.SEND_MESSAGE_FAILURE, + payload: error +}); diff --git a/client/src/redux/messaging/messaging.reducer.js b/client/src/redux/messaging/messaging.reducer.js new file mode 100644 index 000000000..7fcfaa2b7 --- /dev/null +++ b/client/src/redux/messaging/messaging.reducer.js @@ -0,0 +1,108 @@ +import MessagingActionTypes from "./messaging.types"; + +const INITIAL_STATE = { + visible: false, + unread: 0, + conversations: [ + // { + // phone_num: "6049992002", + // id: "519ba10d-6467-4fa5-9c22-59ae891edeb6", + // open: false, + // isSending: false, + // sendingError: null + // }, + // { + // phone_num: "6049992991", + // id: "ab57deba-eeb9-40db-b5ae-23f3ce8d7c7b", + // open: false, + // isSending: false, + // sendingError: null + // } + ], + error: null, +}; + +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.SEND_MESSAGE: + return { + ...state, + conversations: state.conversations.map((c) => + c.id === action.payload.conversationid ? { ...c, isSending: true } : c + ), + }; + case MessagingActionTypes.SEND_MESSAGE_SUCCESS: + return { + ...state, + conversations: state.conversations.map((c) => + c.id === action.payload.conversationid + ? { ...c, isSending: false } + : c + ), + }; + case MessagingActionTypes.SEND_MESSAGE_FAILURE: + return { + ...state, + conversations: state.conversations.map((c) => + c.id === action.payload.conversationid + ? { ...c, isSending: false, sendingError: action.payload.error } + : c + ), + }; + case MessagingActionTypes.OPEN_CONVERSATION: + if ( + state.conversations.find( + (c) => c.phone_num === action.payload.phone_num + ) + ) + return { + ...state, + conversations: state.conversations.map((c) => + c.phone_num === action.payload.phone_num ? { ...c, open: true } : c + ), + }; + else + return { + ...state, + conversations: [ + ...state.conversations, + { + phone_num: action.payload.phone_num, + id: action.payload.id, + open: true, + isSending: false, + sendingError: null, + }, + ], + }; + case MessagingActionTypes.CLOSE_CONVERSATION: + return { + ...state, + conversations: state.conversations.filter( + (c) => c.phone_num !== action.payload + ), + }; + case MessagingActionTypes.TOGGLE_CONVERSATION_VISIBLE: + return { + ...state, + conversations: state.conversations.map((c) => + c.id === 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..f167b42f6 --- /dev/null +++ b/client/src/redux/messaging/messaging.sagas.js @@ -0,0 +1,26 @@ +import { all, call, put, takeLatest } from "redux-saga/effects"; +import { sendMessageFailure, sendMessageSuccess } from "./messaging.actions"; +import MessagingActionTypes from "./messaging.types"; +import axios from "axios"; +import { sendEmailFailure } from "../email/email.actions"; + +export function* onSendMessage() { + yield takeLatest(MessagingActionTypes.SEND_MESSAGE, sendMessage); +} +export function* sendMessage({ payload }) { + try { + const response = yield call(axios.post, "/sms/send", payload); + if (response.status === 200) { + yield put(sendMessageSuccess(payload)); + } else { + yield put(sendEmailFailure(response.data)); + } + } catch (error) { + console.log("Error in sendMessage saga.", error); + yield put(sendMessageFailure(error)); + } +} + +export function* messagingSagas() { + yield all([call(onSendMessage)]); +} 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..59a35590a --- /dev/null +++ b/client/src/redux/messaging/messaging.types.js @@ -0,0 +1,11 @@ +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", + SEND_MESSAGE_SUCCESS: "SEND_MESSAGE_SUCCESS", + SEND_MESSAGE_FAILURE: "SEND_MESSAGE_FAILURE" +}; +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..1520b4989 --- /dev/null +++ b/client/src/redux/modals/modals.reducer.js @@ -0,0 +1,45 @@ +import ModalsActionTypes from "./modals.types"; + +const baseModal = { + visible: false, + context: {}, + actions: { + refetch: null, + }, +}; + +const INITIAL_STATE = { + jobLineEdit: { ...baseModal }, + invoiceEnter: { ...baseModal }, + courtesyCarReturn: { ...baseModal }, + noteUpsert: { ...baseModal }, + schedule: { ...baseModal }, + partsOrder: { ...baseModal }, + timeTicket: { ...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..3cd4f8c6b --- /dev/null +++ b/client/src/redux/modals/modals.sagas.js @@ -0,0 +1,7 @@ +import { all } from "redux-saga/effects"; + +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..9f40c9f83 --- /dev/null +++ b/client/src/redux/modals/modals.selectors.js @@ -0,0 +1,38 @@ +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 +); + +export const selectCourtesyCarReturn = createSelector( + [selectModals], + modals => modals.courtesyCarReturn +); + +export const selectNoteUpsert = createSelector( + [selectModals], + modals => modals.noteUpsert +); + +export const selectSchedule = createSelector( + [selectModals], + modals => modals.schedule +); + +export const selectPartsOrder = createSelector( + [selectModals], + modals => modals.partsOrder +); + +export const selectTimeTicket = createSelector( + [selectModals], + modals => modals.timeTicket +); \ No newline at end of file diff --git a/client/src/redux/modals/modals.types.js b/client/src/redux/modals/modals.types.js new file mode 100644 index 000000000..ebe65e822 --- /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_MODAL_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..4d8b164e1 --- /dev/null +++ b/client/src/redux/root.reducer.js @@ -0,0 +1,25 @@ +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"; +import applicationReducer from "./application/application.reducer"; +const persistConfig = { + key: "root", + storage, + //whitelist: ["user"] + blacklist: ["user", "email", "messaging", "modals"] +}; + +const rootReducer = combineReducers({ + user: userReducer, + messaging: messagingReducer, + email: emailReducer, + modals: modalsReducer, + application: applicationReducer +}); + +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..0dfd35ffa --- /dev/null +++ b/client/src/redux/store.js @@ -0,0 +1,31 @@ +import { createStore, applyMiddleware, compose } 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 })); +} + +const composeEnhancers = + typeof window === "object" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ + ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ + // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize... + }) + : compose; + +const enhancer = composeEnhancers( + applyMiddleware(...middlewares) + // other store enhancers if any +); + +export const store = createStore(rootReducer, enhancer); +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..880ff98d0 --- /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..6d9e54612 --- /dev/null +++ b/client/src/redux/user/user.sagas.js @@ -0,0 +1,97 @@ +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* signInWithEmail({ payload: { email, password } }) { + try { + const { user } = yield auth.signInWithEmailAndPassword(email, password); + 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; + } + 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..36dfb718c 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -1,10 +1,247 @@ { "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" + } + }, + "audit": { + "fields": { + "created": "Time", + "operation": "Operation", + "useremail": "User", + "values": "" + } + }, + "bodyshop": { + "actions": { + "newstatus": "Add Status" + }, + "errors": { + "loading": "Unable to load shop details. Please call technical support.", + "saving": "Error encountered while saving. {{message}}" + }, + "fields": { + "address1": "Address 1", + "address2": "Address 2", + "city": "City", + "country": "Country", + "email": "General Shop Email", + "federal_tax_id": "Federal Tax ID (GST/HST)", + "insurance_vendor_id": "Insurance Vendor ID", + "logo_img_path": "Shop Logo", + "responsibilitycenter": "Responsibility Center", + "responsibilitycenters": { + "atp": "ATP", + "lab": "Labor", + "lad": "Diagnostic", + "lae": "Electrical", + "laf": "Frame", + "lag": "Glass", + "lam": "Mechanical", + "lar": "Refinish", + "las": "Structural", + "lau": "Detail", + "paa": "Aftermarket", + "pac": "Chrome", + "pal": "LKQ", + "pam": "Remanufactured", + "pan": "OEM", + "pao": "Other", + "pap": "OEM Partial", + "par": "Recored", + "tow": "Towing" + }, + "shopname": "Shop Name", + "state": "State/Province", + "state_tax_id": "State Tax ID (PST, QST)", + "status": "Status Label", + "statuses": { + "default_arrived": "Default Arrived Status", + "default_bo": "Default Backordered Status", + "default_canceled": "Default Canceled Status", + "default_completed": "Default Completed Status", + "default_delivered": "Default Delivered Status", + "default_exported": "Default Exported Status", + "default_imported": "Default Imported Status", + "default_invoiced": "Default Invoiced Status", + "default_ordered": "Default Ordered Status", + "default_received": "Default Received Status", + "default_scheduled": "Default Scheduled Status", + "open_statuses": "Open Statuses" + }, + "zip_post": "Zip/Postal Code" + }, + "labels": { + "alljobstatuses": "All Job Statuses", + "allopenjobstatuses": "All Open Job Statuses", + "jobstatuses": "Job Statuses", + "orderstatuses": "Order Statuses", + "responsibilitycenters": { + "costs": "Cost Centers", + "profits": "Profit Centers", + "title": "Responsibility Centers" + }, + "shopinfo": "Shop Information" + }, + "successes": { + "save": "Bodyshop saved successfully. " + } + }, + "contracts": { + "errors": { + "returning": "Error returning courtesy car. {{error}}", + "saving": "Error saving contract. {{error}}", + "selectjobandcar": "Please ensure both a car and job are selected." + }, + "fields": { + "actualreturn": "Actual Return Date", + "agreementnumber": "Agreement Number", + "cc_cardholder": "Cardholder Name", + "cc_expiry": "Credit Card Expiry Date", + "cc_num": "Credit Card Number", + "driver": "Driver", + "driver_addr1": "Driver Address 1", + "driver_addr2": "Driver Address 2", + "driver_city": "Driver City", + "driver_dlexpiry": "Driver's License Expiration Date", + "driver_dlnumber": "Driver's License Number", + "driver_dlst": "Driver's License State", + "driver_dob": "Driver's DOB", + "driver_fn": "Driver's First Name", + "driver_ln": "Driver's Last Name", + "driver_ph1": "Driver's Phone", + "driver_state": "Driver's State ", + "driver_zip": "Driver's Postal/ZIP Code", + "kmend": "Mileage End", + "kmstart": "Mileage Start", + "scheduledreturn": "Scheduled Return", + "start": "Contract Start", + "status": "Status" + }, + "status": { + "new": "New Contract", + "out": "Out", + "returned": "Returned" + }, + "successes": { + "saved": "Contract saved successfully. " + } + }, + "courtesycars": { + "actions": { + "return": "Return Car" + }, + "errors": { + "saving": "Error saving courtesy card. {{error}}" + }, + "fields": { + "color": "Color", + "dailycost": "Daily Cost to Rent", + "damage": "Damage", + "fleetnumber": "Fleet Number", + "fuel": "Fuel Level", + "insuranceexpires": "Insurance Expires On", + "leaseenddate": "Lease Ends On", + "make": "Make", + "model": "Model", + "nextservicedate": "Next Service Date", + "nextservicekm": "Next Service KMs", + "notes": "Notes", + "plate": "Plate Number", + "purchasedate": "Purchase Date", + "registrationexpires": "Registration Expires On", + "serviceenddate": "Service End Date", + "servicestartdate": "Service Start Date", + "status": "Status", + "vin": "VIN", + "year": "Year" + }, + "labels": { + "courtesycar": "Courtesy Car", + "fuel": { + "12": "1/2", + "14": "1/4", + "18": "1/8", + "34": "3/4", + "38": "3/8", + "58": "5/8", + "78": "7/8", + "empty": "Empty", + "full": "Full" + }, + "return": "Return Courtesy Car", + "vehicle": "Vehicle Description" + }, + "status": { + "in": "Available", + "inservice": "In Service", + "out": "Rented" + }, + "successes": { + "saved": "Courtesy Car saved successfully." + } + }, "documents": { + "actions": { + "delete": "Delete Selected Documents", + "download": "Download Selected Documents" + }, "errors": { "deletes3": "Error deleting document from storage. ", - "getpresignurl": "Error obtaining presigned URL for document. ", - "insert": "Unable to upload file.", + "getpresignurl": "Error obtaining presigned URL for document. {{message}}", + "insert": "Unable to upload file. {{message}}", "nodocuments": "There are no documents." }, "labels": { @@ -15,17 +252,64 @@ "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" + }, + "labels": { + "actions": "Actions" + }, + "successes": { + "delete": "Employee deleted successfully.", + "save": "Employee saved successfully." + } + }, "general": { "actions": { - "reset": "Reset to original." + "cancel": "Cancel", + "create": "Create", + "delete": "Delete", + "edit": "Edit", + "reset": "Reset to original.", + "save": "Save", + "saveandnew": "Save and New" }, "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,34 +319,113 @@ }, "messages": { "unsavedchanges": "You have unsaved changes." + }, + "validation": { + "invalidemail": "Please enter a valid email.", + "required": "This field is required. " + } + }, + "invoicelines": { + "actions": { + "newline": "New Line" + }, + "fields": { + "actual": "Actual", + "actual_cost": "Actual Cost", + "cost_center": "Cost Center", + "line_desc": "Line Description", + "retail": "Retail" + }, + "labels": { + "entered": "Entered", + "other": "--Not On Estimate--", + "reconciled": "Reconciled!", + "unreconciled": "Unreconciled" + } + }, + "invoices": { + "actions": { + "edit": "Edit", + "receive": "Receive Part" + }, + "errors": { + "creating": "Error adding invoice.", + "invalidro": "Not a valid RO.", + "invalidvendor": "Not a valid vendor.", + "validation": "Please ensure all fields are entered correctly. " + }, + "fields": { + "date": "Invoice Date", + "invoice_number": "Invoice Number", + "is_credit_memo": "Credit Memo?", + "ro_number": "RO Number", + "total": "Invoice Total", + "vendor": "Vendor", + "vendorname": "Vendor Name" + }, + "labels": { + "actions": "Actions", + "new": "New Invoice" + }, + "successes": { + "created": "Invoice added successfully." } }, "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_qty": "Quantity", "part_type": "Part Type", + "status": "Status", + "total": "Total", "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", + "gotojob": "Go to Job", + "manualnew": "Create New Job Manually", "postInvoices": "Post Invoices", - "printCenter": "Print Center" + "printCenter": "Print Center", + "schedule": "Schedule" }, "errors": { "creating": "Error encountered while creating job. {{error}}", "deleted": "Error deleting job.", "noaccess": "This job does not exist or you do not have access to it.", + "nodamage": "No damage points on estimate.", "nodates": "No dates specified for this job.", "nojobselected": "No job is selected.", "noowner": "No owner associated.", "novehicle": "No vehicle associated.", "saving": "Error encountered while saving record.", + "updating": "Error while updating job(s). {{error}}", "validation": "Please ensure all fields are entered correctly.", "validationtitle": "Validation Error" }, @@ -104,17 +467,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,7 +524,10 @@ "vehicle": "Vehicle" }, "labels": { - "available_new_jobs": "", + "appointmentconfirmation": "Send confirmation to customer?", + "audit": "Audit Trail", + "availablenew": "Available New Jobs", + "availablesupplements": "Available Supplements", "cards": { "appraiser": "Appraiser", "customer": "Customer Information", @@ -152,21 +542,42 @@ "totals": "Totals", "vehicle": "Vehicle" }, + "create": { + "jobinfo": "Job Info", + "newowner": "Create a new Owner instead. ", + "newvehicle": "Create a new Vehicle Instead", + "ownerinfo": "Owner Info", + "vehicleinfo": "Vehicle Info" + }, "creating_new_job": "Creating new job...", "documents": "Documents", + "duplicateconfirm": "Are you sure you want to duplicate this job? Some elements of this job will not be duplicated.", + "existing_jobs": "Existing Jobs", + "hrs_claimed": "Hours Claimed", + "hrs_total": "Hours Total", + "job": "Job Details", + "laborallocations": "Labor Allocations", "lines": "Estimate Lines", "notes": "Notes", + "override_header": "Override estimate header on import?", "parts": "Parts", "rates": "Rates", + "ratetotals": { + "lab": "Body Total" + }, "vehicle_info": "Vehicle" }, "successes": { "all_deleted": "{{count}} jobs deleted successfully.", "converted": "Job converted successfully.", "created": "Job created successfully. Click to view.", + "created_subtitle": "Estimate Number {{est_number}} has been created.", + "creatednoclick": "Job created successfully. ", "deleted": "Job deleted successfully.", - "save": "Record Saved", - "savetitle": "Record saved successfully." + "save": "Job saved successfully.", + "savetitle": "Record saved successfully.", + "supplemented": "Job supplemented successfully. ", + "updated": "Job(s) updated successfully." } }, "menus": { @@ -175,10 +586,29 @@ "profile": "Profile" }, "header": { + "accounting": "Accounting", "activejobs": "Active Jobs", "availablejobs": "Available Jobs", + "courtesycars": "Courtesy Cars", + "courtesycars-all": "All Courtesy Cars", + "courtesycars-contracts": "Contracts", + "courtesycars-newcontract": "New Contract", + "customers": "Customers", + "enterinvoices": "Enter Invoices", + "entertimeticket": "Enter Time Tickets", "home": "Home", - "jobs": "Jobs" + "invoices": "Invoices", + "jobs": "Jobs", + "owners": "Owners", + "schedule": "Schedule", + "shop": "My Shop", + "shop_config": "Configuration", + "shop_vendors": "Vendors", + "vehicles": "Vehicles" + }, + "jobsactions": { + "duplicate": "Duplicate this Job", + "newcccontract": "Create Courtesy Car Contract" }, "jobsdetail": { "claimdetail": "Claim Details", @@ -194,6 +624,12 @@ "shops": "My Shops" } }, + "messaging": { + "labels": { + "messaging": "Messaging", + "typeamessage": "Send a message..." + } + }, "notes": { "actions": { "actions": "Actions", @@ -218,16 +654,67 @@ } }, "owners": { + "actions": { + "update": "Update Selected Records" + }, + "errors": { + "noaccess": "The record does not exist or you do not have access to it. ", + "selectexistingornew": "Select an existing owner record or create a new one. " + }, "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": { - "existing_owners": "Existing Owners" + "create_new": "Create a new owner record.", + "existing_owners": "Existing Owners", + "fromclaim": "Info From Claim", + "fromowner": "Info From Previous", + "updateowner": "Update Owner" + }, + "successes": { + "save": "Owner saved successfully." + } + }, + "parts": { + "actions": { + "order": "Order Parts" + } + }, + "parts_orders": { + "errors": { + "creating": "Error encountered when creating parts order. " + }, + "fields": { + "act_price": "Price", + "db_price": "DB Price", + "deliver_by": "Deliver By", + "job_line_id": "Job Line Id", + "line_desc": "Line Description", + "line_remarks": "Remarks", + "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": { @@ -235,21 +722,151 @@ "state": "Error reading page state. Please refresh." } }, + "timetickets": { + "actions": { + "enter": "Enter New Time Ticket" + }, + "fields": { + "actualhrs": "Actual Hours", + "ciecacode": "CIECA Code", + "cost_center": "Cost Center", + "date": "Ticket Date", + "employee": "Employee", + "productivehrs": "Productive Hours", + "ro_number": "Job to Post Against" + }, + "labels": { + "edit": "Edit Time Ticket", + "flat_rate": "Flat Rate", + "new": "New Time Ticket", + "straight_time": "Straight Time" + } + }, "titles": { "app": "Bodyshop by ImEX Systems", - "jobs": "All Jobs | $t(titles.app)", + "bc": { + "availablejobs": "Available Jobs", + "contracts": "Contracts", + "contracts-create": "New Contract", + "contracts-detail": "Contract #{{number}}", + "courtesycars": "Courtesy Cars", + "courtesycars-detail": "Courtesy Car {{number}}", + "courtesycars-new": "New Courtesy Car", + "jobs": "Jobs", + "jobs-active": "Active Jobs", + "jobs-detail": "Job {{number}}", + "jobs-new": "Create a New Job", + "owner-detail": "{{name}}", + "owners": "Owners", + "schedule": "Schedule", + "vehicle-details": "Vehicle: {{vehicle}}", + "vehicles": "Vehicles" + }, + "contracts": "Courtesy Car Contracts | $t(titles.app)", + "contracts-create": "New Contract | $t(titles.app)", + "contracts-detail": "Contract {{id}} | $t(titles.app)", + "courtesycars": "Courtesy Cars | $t(titles.app)", + "courtesycars-create": "New Courtesy Car | $t(titles.app)", + "courtesycars-detail": "Courtesy Car {{id}} | $t(titles.app)", + "jobs": "Active Jobs | $t(titles.app)", + "jobs-create": "Create a New Job | $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)", + "owners-detail": "{{name}} | $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.", + "selectexistingornew": "Select an existing vehicle record or create a new one. ", + "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" + }, + "labels": { + "updatevehicle": "Update Vehicle Information" + }, + "successes": { + "save": "Vehicle saved successfully." + } + }, + "vendors": { + "actions": { + "new": "New Vendor" + }, + "errors": { + "deleting": "Error encountered while deleting vendor. ", + "saving": "Error encountered while saving vendor. " + }, + "fields": { + "am": "Aftermarket", + "city": "City", + "cost_center": "Cost Center", + "country": "Country", + "discount": "Discount %", + "display_name": "Display Name", + "due_date": "Payment Due Date", + "email": "Contact Email", + "favorite": "Favorite?", + "lkq": "LKQ", + "make": "Make", + "name": "Vendor Name", + "oem": "OEM", + "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..93516f850 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -1,10 +1,247 @@ { "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" + } + }, + "audit": { + "fields": { + "created": "", + "operation": "", + "useremail": "", + "values": "" + } + }, + "bodyshop": { + "actions": { + "newstatus": "" + }, + "errors": { + "loading": "No se pueden cargar los detalles de la tienda. Por favor llame al soporte técnico.", + "saving": "" + }, + "fields": { + "address1": "", + "address2": "", + "city": "", + "country": "", + "email": "", + "federal_tax_id": "", + "insurance_vendor_id": "", + "logo_img_path": "", + "responsibilitycenter": "", + "responsibilitycenters": { + "atp": "", + "lab": "", + "lad": "", + "lae": "", + "laf": "", + "lag": "", + "lam": "", + "lar": "", + "las": "", + "lau": "", + "paa": "", + "pac": "", + "pal": "", + "pam": "", + "pan": "", + "pao": "", + "pap": "", + "par": "", + "tow": "" + }, + "shopname": "", + "state": "", + "state_tax_id": "", + "status": "", + "statuses": { + "default_arrived": "", + "default_bo": "", + "default_canceled": "", + "default_completed": "", + "default_delivered": "", + "default_exported": "", + "default_imported": "", + "default_invoiced": "", + "default_ordered": "", + "default_received": "", + "default_scheduled": "", + "open_statuses": "" + }, + "zip_post": "" + }, + "labels": { + "alljobstatuses": "", + "allopenjobstatuses": "", + "jobstatuses": "", + "orderstatuses": "", + "responsibilitycenters": { + "costs": "", + "profits": "", + "title": "" + }, + "shopinfo": "" + }, + "successes": { + "save": "" + } + }, + "contracts": { + "errors": { + "returning": "", + "saving": "", + "selectjobandcar": "" + }, + "fields": { + "actualreturn": "", + "agreementnumber": "", + "cc_cardholder": "", + "cc_expiry": "", + "cc_num": "", + "driver": "", + "driver_addr1": "", + "driver_addr2": "", + "driver_city": "", + "driver_dlexpiry": "", + "driver_dlnumber": "", + "driver_dlst": "", + "driver_dob": "", + "driver_fn": "", + "driver_ln": "", + "driver_ph1": "", + "driver_state": "", + "driver_zip": "", + "kmend": "", + "kmstart": "", + "scheduledreturn": "", + "start": " ", + "status": "" + }, + "status": { + "new": "", + "out": "", + "returned": "" + }, + "successes": { + "saved": "" + } + }, + "courtesycars": { + "actions": { + "return": "" + }, + "errors": { + "saving": "" + }, + "fields": { + "color": "", + "dailycost": "", + "damage": "", + "fleetnumber": "", + "fuel": "", + "insuranceexpires": "", + "leaseenddate": "", + "make": "", + "model": "", + "nextservicedate": "", + "nextservicekm": "", + "notes": "", + "plate": "", + "purchasedate": "", + "registrationexpires": "", + "serviceenddate": "", + "servicestartdate": "", + "status": "", + "vin": "", + "year": "" + }, + "labels": { + "courtesycar": "", + "fuel": { + "12": "", + "14": "", + "18": "", + "34": "", + "38": "", + "58": "", + "78": "", + "empty": "", + "full": "" + }, + "return": "", + "vehicle": "" + }, + "status": { + "in": "", + "inservice": "", + "out": "" + }, + "successes": { + "saved": "" + } + }, "documents": { + "actions": { + "delete": "", + "download": "" + }, "errors": { "deletes3": "Error al eliminar el documento del almacenamiento.", - "getpresignurl": "Error al obtener la URL prescrita para el documento.", - "insert": "Incapaz de cargar el archivo.", + "getpresignurl": "Error al obtener la URL prescrita para el documento. {{message}}", + "insert": "Incapaz de cargar el archivo. {{message}}", "nodocuments": "No hay documentos" }, "labels": { @@ -15,17 +252,64 @@ "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" + }, + "labels": { + "actions": "" + }, + "successes": { + "delete": "Empleado eliminado con éxito.", + "save": "Empleado guardado con éxito." + } + }, "general": { "actions": { - "reset": "Restablecer a original." + "cancel": "", + "create": "", + "delete": "Borrar", + "edit": "Editar", + "reset": "Restablecer a original.", + "save": "Salvar", + "saveandnew": "" }, "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,34 +319,113 @@ }, "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." + } + }, + "invoicelines": { + "actions": { + "newline": "" + }, + "fields": { + "actual": "", + "actual_cost": "", + "cost_center": "", + "line_desc": "", + "retail": "" + }, + "labels": { + "entered": "", + "other": "", + "reconciled": "", + "unreconciled": "" + } + }, + "invoices": { + "actions": { + "edit": "", + "receive": "" + }, + "errors": { + "creating": "", + "invalidro": "", + "invalidvendor": "", + "validation": "" + }, + "fields": { + "date": "", + "invoice_number": "", + "is_credit_memo": "", + "ro_number": "", + "total": "", + "vendor": "", + "vendorname": "" + }, + "labels": { + "actions": "", + "new": "" + }, + "successes": { + "created": "" } }, "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_qty": "", "part_type": "Tipo de parte", + "status": "Estado", + "total": "", "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", + "gotojob": "", + "manualnew": "", "postInvoices": "Contabilizar facturas", - "printCenter": "Centro de impresión" + "printCenter": "Centro de impresión", + "schedule": "Programar" }, "errors": { "creating": "", "deleted": "Error al eliminar el trabajo.", "noaccess": "Este trabajo no existe o no tiene acceso a él.", + "nodamage": "", "nodates": "No hay fechas especificadas para este trabajo.", "nojobselected": "No hay trabajo seleccionado.", "noowner": "Ningún propietario asociado.", "novehicle": "No hay vehículo asociado.", "saving": "Se encontró un error al guardar el registro.", + "updating": "", "validation": "Asegúrese de que todos los campos se ingresen correctamente.", "validationtitle": "Error de validacion" }, @@ -104,17 +467,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,7 +524,10 @@ "vehicle": "Vehículo" }, "labels": { - "available_new_jobs": "", + "appointmentconfirmation": "¿Enviar confirmación al cliente?", + "audit": "", + "availablenew": "", + "availablesupplements": "", "cards": { "appraiser": "Tasador", "customer": "Información al cliente", @@ -152,21 +542,42 @@ "totals": "Totales", "vehicle": "Vehículo" }, + "create": { + "jobinfo": "", + "newowner": "", + "newvehicle": "", + "ownerinfo": "", + "vehicleinfo": "" + }, "creating_new_job": "Creando nuevo trabajo ...", "documents": "documentos", + "duplicateconfirm": "", + "existing_jobs": "Empleos existentes", + "hrs_claimed": "", + "hrs_total": "", + "job": "", + "laborallocations": "", "lines": "Líneas estimadas", "notes": "Notas", + "override_header": "¿Anular encabezado estimado al importar?", "parts": "Partes", "rates": "Tarifas", + "ratetotals": { + "lab": "" + }, "vehicle_info": "Vehículo" }, "successes": { "all_deleted": "{{count}} trabajos eliminados con éxito.", "converted": "Trabajo convertido con éxito.", "created": "Trabajo creado con éxito. Click para ver.", + "created_subtitle": "", + "creatednoclick": "", "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.", + "updated": "" } }, "menus": { @@ -175,10 +586,29 @@ "profile": "Perfil" }, "header": { + "accounting": "", "activejobs": "Empleos activos", "availablejobs": "Trabajos disponibles", + "courtesycars": "", + "courtesycars-all": "", + "courtesycars-contracts": "", + "courtesycars-newcontract": "", + "customers": "Clientes", + "enterinvoices": "", + "entertimeticket": "", "home": "Casa", - "jobs": "Trabajos" + "invoices": "", + "jobs": "Trabajos", + "owners": "propietarios", + "schedule": "Programar", + "shop": "Mi tienda", + "shop_config": "Configuración", + "shop_vendors": "Vendedores", + "vehicles": "Vehículos" + }, + "jobsactions": { + "duplicate": "", + "newcccontract": "" }, "jobsdetail": { "claimdetail": "Detalles de la reclamación", @@ -194,6 +624,12 @@ "shops": "Mis tiendas" } }, + "messaging": { + "labels": { + "messaging": "Mensajería", + "typeamessage": "Enviar un mensaje..." + } + }, "notes": { "actions": { "actions": "Comportamiento", @@ -218,16 +654,67 @@ } }, "owners": { + "actions": { + "update": "" + }, + "errors": { + "noaccess": "El registro no existe o no tiene acceso a él.", + "selectexistingornew": "" + }, "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": { - "existing_owners": "Propietarios existentes" + "create_new": "Crea un nuevo registro de propietario.", + "existing_owners": "Propietarios existentes", + "fromclaim": "", + "fromowner": "", + "updateowner": "" + }, + "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": { + "act_price": "", + "db_price": "", + "deliver_by": "Entregado por", + "job_line_id": "", + "line_desc": "", + "line_remarks": "", + "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": { @@ -235,21 +722,151 @@ "state": "Error al leer el estado de la página. Porfavor refresca." } }, + "timetickets": { + "actions": { + "enter": "" + }, + "fields": { + "actualhrs": "", + "ciecacode": "", + "cost_center": "", + "date": "", + "employee": "", + "productivehrs": "", + "ro_number": "" + }, + "labels": { + "edit": "", + "flat_rate": "", + "new": "", + "straight_time": "" + } + }, "titles": { "app": "Carrocería de ImEX Systems", + "bc": { + "availablejobs": "", + "contracts": "", + "contracts-create": "", + "contracts-detail": "", + "courtesycars": "", + "courtesycars-detail": "", + "courtesycars-new": "", + "jobs": "", + "jobs-active": "", + "jobs-detail": "", + "jobs-new": "", + "owner-detail": "", + "owners": "", + "schedule": "", + "vehicle-details": "", + "vehicles": "" + }, + "contracts": "", + "contracts-create": "", + "contracts-detail": "", + "courtesycars": "", + "courtesycars-create": "", + "courtesycars-detail": "", "jobs": "Todos los trabajos | $t(titles.app)", + "jobs-create": "", + "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)", + "owners-detail": "", + "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.", + "selectexistingornew": "", + "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" + }, + "labels": { + "updatevehicle": "" + }, + "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": { + "am": "", + "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?", + "lkq": "", + "make": "", + "name": "Nombre del vendedor", + "oem": "", + "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..83bd483ae 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -1,10 +1,247 @@ { "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" + } + }, + "audit": { + "fields": { + "created": "", + "operation": "", + "useremail": "", + "values": "" + } + }, + "bodyshop": { + "actions": { + "newstatus": "" + }, + "errors": { + "loading": "Impossible de charger les détails de la boutique. Veuillez appeler le support technique.", + "saving": "" + }, + "fields": { + "address1": "", + "address2": "", + "city": "", + "country": "", + "email": "", + "federal_tax_id": "", + "insurance_vendor_id": "", + "logo_img_path": "", + "responsibilitycenter": "", + "responsibilitycenters": { + "atp": "", + "lab": "", + "lad": "", + "lae": "", + "laf": "", + "lag": "", + "lam": "", + "lar": "", + "las": "", + "lau": "", + "paa": "", + "pac": "", + "pal": "", + "pam": "", + "pan": "", + "pao": "", + "pap": "", + "par": "", + "tow": "" + }, + "shopname": "", + "state": "", + "state_tax_id": "", + "status": "", + "statuses": { + "default_arrived": "", + "default_bo": "", + "default_canceled": "", + "default_completed": "", + "default_delivered": "", + "default_exported": "", + "default_imported": "", + "default_invoiced": "", + "default_ordered": "", + "default_received": "", + "default_scheduled": "", + "open_statuses": "" + }, + "zip_post": "" + }, + "labels": { + "alljobstatuses": "", + "allopenjobstatuses": "", + "jobstatuses": "", + "orderstatuses": "", + "responsibilitycenters": { + "costs": "", + "profits": "", + "title": "" + }, + "shopinfo": "" + }, + "successes": { + "save": "" + } + }, + "contracts": { + "errors": { + "returning": "", + "saving": "", + "selectjobandcar": "" + }, + "fields": { + "actualreturn": "", + "agreementnumber": "", + "cc_cardholder": "", + "cc_expiry": "", + "cc_num": "", + "driver": "", + "driver_addr1": "", + "driver_addr2": "", + "driver_city": "", + "driver_dlexpiry": "", + "driver_dlnumber": "", + "driver_dlst": "", + "driver_dob": "", + "driver_fn": "", + "driver_ln": "", + "driver_ph1": "", + "driver_state": "", + "driver_zip": "", + "kmend": "", + "kmstart": "", + "scheduledreturn": "", + "start": "", + "status": "" + }, + "status": { + "new": "", + "out": "", + "returned": "" + }, + "successes": { + "saved": "" + } + }, + "courtesycars": { + "actions": { + "return": "" + }, + "errors": { + "saving": "" + }, + "fields": { + "color": "", + "dailycost": "", + "damage": "", + "fleetnumber": "", + "fuel": "", + "insuranceexpires": "", + "leaseenddate": "", + "make": "", + "model": "", + "nextservicedate": "", + "nextservicekm": "", + "notes": "", + "plate": "", + "purchasedate": "", + "registrationexpires": "", + "serviceenddate": "", + "servicestartdate": "", + "status": "", + "vin": "", + "year": "" + }, + "labels": { + "courtesycar": "", + "fuel": { + "12": "", + "14": "", + "18": "", + "34": "", + "38": "", + "58": "", + "78": "", + "empty": "", + "full": "" + }, + "return": "", + "vehicle": "" + }, + "status": { + "in": "", + "inservice": "", + "out": "" + }, + "successes": { + "saved": "" + } + }, "documents": { + "actions": { + "delete": "", + "download": "" + }, "errors": { "deletes3": "Erreur lors de la suppression du document du stockage.", - "getpresignurl": "Erreur lors de l'obtention de l'URL présignée pour le document.", - "insert": "Incapable de télécharger le fichier.", + "getpresignurl": "Erreur lors de l'obtention de l'URL présignée pour le document. {{message}}", + "insert": "Incapable de télécharger le fichier. {{message}}", "nodocuments": "Il n'y a pas de documents." }, "labels": { @@ -15,17 +252,64 @@ "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" + }, + "labels": { + "actions": "" + }, + "successes": { + "delete": "L'employé a bien été supprimé.", + "save": "L'employé a enregistré avec succès." + } + }, "general": { "actions": { - "reset": "Rétablir l'original." + "cancel": "", + "create": "", + "delete": "Effacer", + "edit": "modifier", + "reset": "Rétablir l'original.", + "save": "sauvegarder", + "saveandnew": "" }, "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,34 +319,113 @@ }, "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." + } + }, + "invoicelines": { + "actions": { + "newline": "" + }, + "fields": { + "actual": "", + "actual_cost": "", + "cost_center": "", + "line_desc": "", + "retail": "" + }, + "labels": { + "entered": "", + "other": "", + "reconciled": "", + "unreconciled": "" + } + }, + "invoices": { + "actions": { + "edit": "", + "receive": "" + }, + "errors": { + "creating": "", + "invalidro": "", + "invalidvendor": "", + "validation": "" + }, + "fields": { + "date": "", + "invoice_number": "", + "is_credit_memo": "", + "ro_number": "", + "total": "", + "vendor": "", + "vendorname": "" + }, + "labels": { + "actions": "", + "new": "" + }, + "successes": { + "created": "" } }, "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_qty": "", "part_type": "Type de pièce", + "status": "Statut", + "total": "", "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", + "gotojob": "", + "manualnew": "", "postInvoices": "Poster des factures", - "printCenter": "Centre d'impression" + "printCenter": "Centre d'impression", + "schedule": "Programme" }, "errors": { "creating": "", "deleted": "Erreur lors de la suppression du travail.", "noaccess": "Ce travail n'existe pas ou vous n'y avez pas accès.", + "nodamage": "", "nodates": "Aucune date spécifiée pour ce travail.", "nojobselected": "Aucun travail n'est sélectionné.", "noowner": "Aucun propriétaire associé.", "novehicle": "Aucun véhicule associé.", "saving": "Erreur rencontrée lors de la sauvegarde de l'enregistrement.", + "updating": "", "validation": "Veuillez vous assurer que tous les champs sont correctement entrés.", "validationtitle": "Erreur de validation" }, @@ -104,17 +467,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,7 +524,10 @@ "vehicle": "Véhicule" }, "labels": { - "available_new_jobs": "", + "appointmentconfirmation": "Envoyer une confirmation au client?", + "audit": "", + "availablenew": "", + "availablesupplements": "", "cards": { "appraiser": "Expert", "customer": "Informations client", @@ -152,21 +542,42 @@ "totals": "Totaux", "vehicle": "Véhicule" }, + "create": { + "jobinfo": "", + "newowner": "", + "newvehicle": "", + "ownerinfo": "", + "vehicleinfo": "" + }, "creating_new_job": "Création d'un nouvel emploi ...", "documents": "Les documents", + "duplicateconfirm": "", + "existing_jobs": "Emplois existants", + "hrs_claimed": "", + "hrs_total": "", + "job": "", + "laborallocations": "", "lines": "Estimer les lignes", "notes": "Remarques", + "override_header": "Remplacer l'en-tête d'estimation à l'importation?", "parts": "les pièces", "rates": "Les taux", + "ratetotals": { + "lab": "" + }, "vehicle_info": "Véhicule" }, "successes": { "all_deleted": "{{count}} travaux supprimés avec succès.", "converted": "Travail converti avec succès.", "created": "Le travail a été créé avec succès. Clique pour voir.", + "created_subtitle": "", + "creatednoclick": "", "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.", + "updated": "" } }, "menus": { @@ -175,10 +586,29 @@ "profile": "Profil" }, "header": { + "accounting": "", "activejobs": "Emplois actifs", "availablejobs": "Emplois disponibles", + "courtesycars": "", + "courtesycars-all": "", + "courtesycars-contracts": "", + "courtesycars-newcontract": "", + "customers": "Les clients", + "enterinvoices": "", + "entertimeticket": "", "home": "Accueil", - "jobs": "Emplois" + "invoices": "", + "jobs": "Emplois", + "owners": "Propriétaires", + "schedule": "Programme", + "shop": "Mon magasin", + "shop_config": "Configuration", + "shop_vendors": "Vendeurs", + "vehicles": "Véhicules" + }, + "jobsactions": { + "duplicate": "", + "newcccontract": "" }, "jobsdetail": { "claimdetail": "Détails de la réclamation", @@ -194,6 +624,12 @@ "shops": "Mes boutiques" } }, + "messaging": { + "labels": { + "messaging": "Messagerie", + "typeamessage": "Envoyer un message..." + } + }, "notes": { "actions": { "actions": "actes", @@ -218,16 +654,67 @@ } }, "owners": { + "actions": { + "update": "" + }, + "errors": { + "noaccess": "L'enregistrement n'existe pas ou vous n'y avez pas accès.", + "selectexistingornew": "" + }, "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": { - "existing_owners": "Propriétaires existants" + "create_new": "Créez un nouvel enregistrement de propriétaire.", + "existing_owners": "Propriétaires existants", + "fromclaim": "", + "fromowner": "", + "updateowner": "" + }, + "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": { + "act_price": "", + "db_price": "", + "deliver_by": "Livrer par", + "job_line_id": "", + "line_desc": "", + "line_remarks": "", + "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": { @@ -235,21 +722,151 @@ "state": "Erreur lors de la lecture de l'état de la page. Rafraichissez, s'il vous plait." } }, + "timetickets": { + "actions": { + "enter": "" + }, + "fields": { + "actualhrs": "", + "ciecacode": "", + "cost_center": "", + "date": "", + "employee": "", + "productivehrs": "", + "ro_number": "" + }, + "labels": { + "edit": "", + "flat_rate": "", + "new": "", + "straight_time": "" + } + }, "titles": { "app": "Carrosserie par ImEX Systems", + "bc": { + "availablejobs": "", + "contracts": "", + "contracts-create": "", + "contracts-detail": "", + "courtesycars": "", + "courtesycars-detail": "", + "courtesycars-new": "", + "jobs": "", + "jobs-active": "", + "jobs-detail": "", + "jobs-new": "", + "owner-detail": "", + "owners": "", + "schedule": "", + "vehicle-details": "", + "vehicles": "" + }, + "contracts": "", + "contracts-create": "", + "contracts-detail": "", + "courtesycars": "", + "courtesycars-create": "", + "courtesycars-detail": "", "jobs": "Tous les emplois | $t(titles.app)", + "jobs-create": "", + "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)", + "owners-detail": "", + "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.", + "selectexistingornew": "", + "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" + }, + "labels": { + "updatevehicle": "" + }, + "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": { + "am": "", + "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é?", + "lkq": "", + "make": "", + "name": "Nom du vendeur", + "oem": "", + "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/translations/i18n.js b/client/src/translations/i18n.js index 3ddd99c33..7415220f1 100644 --- a/client/src/translations/i18n.js +++ b/client/src/translations/i18n.js @@ -1,5 +1,6 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; +import LanguageDetector from "i18next-browser-languagedetector"; import en_Translation from "./en_us/common.json"; import fr_Translation from "./fr/common.json"; import es_Translation from "./es/common.json"; @@ -7,23 +8,25 @@ import es_Translation from "./es/common.json"; // the translations // (tip move them in a JSON file and import them) const resources = { - en_us: en_Translation, - fr: fr_Translation, - es: es_Translation + "en-US": en_Translation, + "fr-CA": fr_Translation, + "es-MX": es_Translation, }; i18n - .use(initReactI18next) // passes i18n down to react-i18next + .use(initReactI18next) + .use(LanguageDetector) // passes i18n down to react-i18next .init({ resources, - lng: "en_us", - fallbackLng: "en-us", + //lng: "en", + detection: {}, + fallbackLng: "en-US", debug: true, //keySeparator: false, // we do not use keys in form messages.welcome interpolation: { - escapeValue: false // react already safes from xss - } + escapeValue: false, // react already safes from xss + }, }); export default i18n; 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/DocHelpers.js b/client/src/utils/DocHelpers.js deleted file mode 100644 index be8d28632..000000000 --- a/client/src/utils/DocHelpers.js +++ /dev/null @@ -1,13 +0,0 @@ -export const generateCdnThumb = key => { - const imageRequest = JSON.stringify({ - bucket: process.env.REACT_APP_S3_BUCKET, - key: key, - edits: { - resize: { - height: 100, - width: 100 - } - } - }); - return `${process.env.REACT_APP_S3_CDN}/${btoa(imageRequest)}`; -}; diff --git a/client/src/utils/TestingHelpers.js b/client/src/utils/TestingHelpers.js new file mode 100644 index 000000000..806feaa8b --- /dev/null +++ b/client/src/utils/TestingHelpers.js @@ -0,0 +1,148 @@ +export const MockBodyshop = { + address1: "123 Fake St", + address2: "Unit #100", + city: "Vancouver", + country: "Canada", + created_at: "2019-12-10T20:03:06.420853+00:00", + email: "snaptsoft@gmail.com", + federal_tax_id: "GST10150492", + id: "52b7357c-0edd-4c95-85c3-dfdbcdfad9ac", + insurance_vendor_id: "F123456", + logo_img_path: "https://www.snapt.ca/assets/logo-placeholder.png", + md_ro_statuses: { + 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" + ], + default_arrived: "Arrived", + default_exported: "Exported", + default_imported: "Open", + default_invoiced: "Invoiced", + default_completed: "Completed", + default_delivered: "Delivered", + default_scheduled: "Scheduled" + }, + md_order_statuses: { + statuses: ["Ordered", "Received", "Canceled", "Backordered"], + default_bo: "Backordered", + default_ordered: "Ordered", + default_canceled: "Canceled", + default_received: "Received" + }, + shopname: "Testing Collision", + state: "BC", + state_tax_id: "PST1000-2991", + updated_at: "2020-03-23T22:06:03.509544+00:00", + zip_post: "V6B 1M9", + region_config: "CA_BC", + md_responsibility_centers: { + costs: [ + "Aftermarket", + "ATP", + "Body", + "Detail", + "Daignostic", + "Electrical", + "Chrome", + "Frame", + "Mechanical", + "Refinish", + "Structural", + "Existing", + "Glass", + "LKQ", + "OEM", + "OEM Partial", + "Re-cored", + "Remanufactured", + "Other", + "Sublet", + "Towing" + ], + profits: [ + "Aftermarket", + "ATP", + "Body", + "Detail", + "Daignostic", + "Electrical", + "Chrome", + "Frame", + "Mechanical", + "Refinish", + "Structural", + "Existing", + "Glass", + "LKQ", + "OEM", + "OEM Partial", + "Re-cored", + "Remanufactured", + "Other", + "Sublet", + "Towing" + ], + defaults: { + ATP: "ATP", + LAB: "Body", + LAD: "Diagnostic", + LAE: "Electrical", + LAF: "Frame", + LAG: "Glass", + LAM: "Mechanical", + LAR: "Refinish", + LAS: "Structural", + LAU: "Detail", + PAA: "Aftermarket", + PAC: "Chrome", + PAL: "LKQ", + PAM: "Remanufactured", + PAN: "OEM", + PAO: "Other", + PAP: "OEM Partial", + PAR: "16", + TOW: "Towing" + } + }, + employees: [ + { + id: "075b744c-8919-49ca-abb2-ccd51040326d", + first_name: "Patrick", + last_name: "BODY123", + employee_number: "101", + cost_center: "Body", + __typename: "employees" + }, + { + id: "8cc787d3-1cfe-49d3-8a15-8469cd5c2e41", + first_name: "Patrick", + last_name: "Painter", + employee_number: "10211", + cost_center: "REFINISH", + __typename: "employees" + } + ] +}; 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/private-route.js b/client/src/utils/private-route.js index 9b905e843..0a55f1184 100644 --- a/client/src/utils/private-route.js +++ b/client/src/utils/private-route.js @@ -4,11 +4,11 @@ export default ({ component: Component, isAuthorized, ...rest }) => { return ( + render={(props) => isAuthorized === true ? ( ) : ( - + ) } /> 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..c73622d05 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -9,26 +9,31 @@ dependencies: tinycolor2 "^1.4.1" -"@ant-design/create-react-context@^0.2.4": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@ant-design/create-react-context/-/create-react-context-0.2.5.tgz#f5f5a9163b4772097712837397ad30e22e79f858" - integrity sha512-1rMAa4qgP2lfl/QBH9i78+Gjxtj9FTMpMyDGZsEBW5Kih72EuUo9958mV8PgpRkh4uwPSQ7vVZWXeyNZXVAFDg== - dependencies: - gud "^1.0.0" - warning "^4.0.3" +"@ant-design/icons-svg@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.0.0.tgz#6683db0df97c0c6900bb28a280faf391522ec734" + integrity sha512-Nai+cd3XUrv/z50gSk1FI08j6rENZ1e93rhKeLTBGwa5WrmHvhn2vowa5+voZW2qkXJn1btS6tdvTEDB90M0Pw== -"@ant-design/icons-react@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@ant-design/icons-react/-/icons-react-2.0.1.tgz#17a2513571ab317aca2927e58cea25dd31e536fb" - integrity sha512-r1QfoltMuruJZqdiKcbPim3d8LNsVPB733U0gZEUSxBLuqilwsW28K2rCTWSMTjmFX7Mfpf+v/wdiFe/XCqThw== +"@ant-design/icons@^4.0.0": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.0.3.tgz#ba2fd8160cb1a51ba31979319355a47c5d7b5376" + integrity sha512-vWzmt1QsWpnmOfT/wtAIeKTheN61Mo8KtaLm0yosd6vVUEVdc5E/pmcrd8lIp2CmuRT7qCU6e9x/RMffv0hOJg== dependencies: "@ant-design/colors" "^3.1.0" - babel-runtime "^6.26.0" + "@ant-design/icons-svg" "^4.0.0" + classnames "^2.2.6" + insert-css "^2.0.0" + rc-util "^4.9.0" -"@ant-design/icons@~2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-2.1.1.tgz#7b9c08dffd4f5d41db667d9dbe5e0107d0bd9a4a" - integrity sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w== +"@ant-design/react-slick@~0.25.5": + version "0.25.5" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.25.5.tgz#18f40abaa22c15dc26da9c473d24da38d4d8f334" + integrity sha512-fusHR9LkarCARvYTN6cG3yz2/Ogf+HTaJ2XEihIjsjgm6uE1aSXycRFEVDpOFP1Aib51Z2Iz3tgg/gL+WbK8rQ== + dependencies: + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.15" + resize-observer-polyfill "^1.5.0" "@apollo/react-common@^3.1.3": version "3.1.3" @@ -88,981 +93,1268 @@ 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.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" + integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== 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/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== 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" + browserslist "^4.9.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" convert-source-map "^1.7.0" debug "^4.1.0" - json5 "^2.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" 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== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.6.tgz#27d7df9258a45c2e686b6f18b6c659e563aa4636" + integrity sha512-Sheg7yEJD51YHAvLEV/7Uvw95AeWqYPL3Vk3zGujJKIhJ+8oLw2ALaf3hbucILhKsgSoADOvtKRJuNVdcJkOrg== 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" + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" 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/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== +"@babel/generator@^7.4.0", "@babel/generator@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.6.tgz#57adf96d370c9a63c241cd719f9111468578537a" + integrity sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.6" 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/generator@^7.9.0": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.3.tgz#7c8b2956c6f68b3ab732bd16305916fbba521d94" + integrity sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.9.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" -"@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-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/helper-explode-assignable-expression" "^7.7.4" - "@babel/types" "^7.7.4" + "@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-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/types" "^7.7.4" + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" + integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.0" + +"@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.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-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" -"@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-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-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/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@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-compilation-targets@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.6.tgz#015b85db69e3a34240d5c2b761fc53eb9695f09c" + integrity sha512-UrJdk27hKVJSnibFcUWYLkCL0ZywTUoot8yii1lsHJcvwrypagmYKjHLMWivQPm4s6GdyygCL8fiH5EYLxhQwQ== dependencies: - "@babel/helper-regex" "^7.4.4" + "@babel/compat-data" "^7.8.6" + browserslist "^4.8.5" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== + dependencies: + "@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.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz#7fa040c97fb8aebe1247a5c645330c32d083066b" + integrity sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@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-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@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.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.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" + integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== 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-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.8.6" 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-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== dependencies: - "@babel/types" "^7.7.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" -"@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-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.8.3" -"@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-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.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", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== 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.6" + "@babel/types" "^7.8.6" -"@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-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + +"@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/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + +"@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.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.6.tgz#ba5c9910cddb77685a008e3c587af8d27b67962c" + integrity sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g== -"@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== - 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/parser@^7.7.0", "@babel/parser@^7.9.0": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.3.tgz#043a5fc2ad8b7ea9facddc4e802a1f0f25da7255" + integrity sha512-E6SpIDJZ0cZAKoCNk+qSDd0ChfTnpiJN9FfNf3RZ20dzwA2vL2oq5IX1XTVT+4vDmRlta2nGk5HGMMskJAR+4A== -"@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-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-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@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-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-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/plugin-syntax-decorators" "^7.7.4" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^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-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-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^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-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-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-json-strings" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^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-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-nullish-coalescing-operator" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^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-nullish-coalescing-operator@7.8.3", "@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-numeric-separator" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@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-numeric-separator@7.8.3", "@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-object-rest-spread" "^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", "@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-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-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-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== 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-object-rest-spread" "^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-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-optional-chaining" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@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-proposal-optional-chaining@7.9.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^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-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/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@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-proposal-unicode-property-regex@^7.4.4": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" -"@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-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/helper-create-regexp-features-plugin" "^7.8.3" + "@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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-numeric-separator@^7.8.0", "@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-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-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-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-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-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-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-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-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-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-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-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== +"@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-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-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@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-plugin-utils" "^7.8.3" + +"@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.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.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" + integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== 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.6" + "@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-classes@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" + integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@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.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" -"@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-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-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-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-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@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-dotall-regex@^7.4.4", "@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-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@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-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-builder-binary-assignment-operator-visitor" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@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-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-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.7.4" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^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-flow-strip-types@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^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-for-of@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" + integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@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-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== 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-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-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.8.3" + "@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-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-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@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.8.3" + +"@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.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-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== 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.9.0" + "@babel/helper-plugin-utils" "^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-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-hoist-variables" "^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/helper-simple-access" "^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-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== dependencies: - "@babel/helper-module-transforms" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.9.0" + "@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-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-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-create-regexp-features-plugin" "^7.7.4" + "@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-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-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@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-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-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^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-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== 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-module-transforms" "^7.9.0" + "@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-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-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@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.8.3" + +"@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.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@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.8.3" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" + integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@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.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-development@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" + integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@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-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@^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-self@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== 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-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-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.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@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.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.1.tgz#d03af29396a6dc51bfa24eefd8005a9fd381152a" + integrity sha512-+xIZ6fPoix7h57CNO/ZeYADchg1tFyX9NDsnmNFFua8e1JNPln156mzS+8AQe1On2X2GLlANHJWHIXbMCqWDkQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@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-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + regenerator-transform "^0.14.2" -"@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-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-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== + dependencies: + "@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.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.0.tgz#8b52649c81cb7dee117f760952ab46675a258836" + integrity sha512-GRffJyCu16H3tEhbt9Q4buVFFBqrgS8FzTuhqSxlXNgmqD8aw2xmwtRwrvWXXlw7gHs664uqacsJymHJ9SUE/Q== 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.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== 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.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@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-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@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-numeric-separator" "^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.9.0" + "@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.9.0" + "@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.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@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.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@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/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + 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== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.6.tgz#2a0773b08589ecba4995fc71b1965e4f531af40b" + integrity sha512-M5u8llV9DIVXBFB/ArIpqJuvXpO+ymxcJ6e8ZAmzeK3sQeBNOD1y+rHvHCGG4TlEmsNpIrdecsHGHT8ZCoOSJg== 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" + "@babel/compat-data" "^7.8.6" + "@babel/helper-compilation-targets" "^7.8.6" + "@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.6" + "@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.6" + "@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.6" + 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-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-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== 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/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" -"@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== +"@babel/preset-react@7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.1" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" -"@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== +"@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-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-typescript@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/runtime-corejs3@^7.8.3": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz#26fe4aa77e9f1ecef9b776559bbb8e84d34284b7" + integrity sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA== dependencies: core-js-pure "^3.0.0" - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" -"@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.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.1.5", "@babel/runtime@^7.2.0", "@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/runtime@^7.8.4": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== dependencies: - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" -"@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/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" -"@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== +"@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", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== 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.6" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" 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/traverse@^7.7.0", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + 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.8.3", "@babel/types@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.6.tgz#629ecc33c2557fcde7126e58053127afdb3e6d01" + integrity sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA== dependencies: esutils "^2.0.2" lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.7.0", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" - integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: exec-sh "^0.3.2" minimist "^1.2.0" @@ -1072,15 +1364,15 @@ 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": - 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== +"@emotion/is-prop-valid@^0.8.3": + version "0.8.7" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.7.tgz#803449993f436f9a6c67752251ea3fc492a1044c" + integrity sha512-OPkKzUeiid0vEKjZqnGcy2mzxjIlCffin+L2C02pdz/bVlt5zZZE2VzO0D3XOPnH0NEeF21QNKSXiZphjr4xiQ== dependencies: "@emotion/memoize" "0.7.4" @@ -1089,231 +1381,238 @@ 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.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.3.0.tgz#33c3f695313b561d48d18d663a20f20362d3ee7c" + integrity sha512-0AJ6xn53Qn0D/YOVHHvlWFfnzzRSdd98Lr8Oqe1PJ2HPIN+o7qf03YmOG7fLpR1uplcWd+7vGKmxUrN3jKUBwg== -"@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.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.3.0.tgz#943e73e792ba3f282df4d47aff5a1603b93b37a5" + integrity sha512-EEHuK+OcWH6UxufRLVU3lAJ4rmm7aVHmcgkhE9ZQJQy5c+w7QTLvVpGqtrpqD+cYyIBJkFBKJB8NziVyqKwQHw== dependencies: - "@firebase/analytics-types" "0.2.5" - "@firebase/component" "0.1.1" - "@firebase/installations" "0.3.8" - "@firebase/util" "0.2.36" - tslib "1.10.0" + "@firebase/analytics-types" "0.3.0" + "@firebase/component" "0.1.8" + "@firebase/installations" "0.4.6" + "@firebase/logger" "0.2.0" + "@firebase/util" "0.2.43" + tslib "1.11.1" -"@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.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.0.tgz#8dcc3e793c6983e9d54f7eb623a7618c05f2d94c" + integrity sha512-ld6rzjXk/SUauHiQZJkeuSJpxIZ5wdnWuF5fWBFQNPaxsaJ9kyYg9GqEvwZ1z2e6JP5cU9gwRBlfW1WkGtGDYA== -"@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.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.0.tgz#62f1720a8764333d32a11b14f1c46d82f536cf4e" + integrity sha512-utFL07aO64ZVs9g79cv1KHomtLdKkkAeKN5e8G9NlXXuO6dZXhcHLbOmKY1AfwrkAvUzPEKkFFY3dytOIt+nlg== 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.6.0" + "@firebase/component" "0.1.8" + "@firebase/logger" "0.2.0" + "@firebase/util" "0.2.43" dom-storage "2.1.0" - tslib "1.10.0" + tslib "1.11.1" 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.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.4.tgz#e81589f58508630a5bffa604d7c949a0d01ea97b" + integrity sha512-CLKNS84KGAv5lRnHTQZFWoR11Ti7gIPFirDDXWek/fSU+TdYdnxJFR5XSD4OuGyzUYQ3Dq7aVj5teiRdyBl9hA== -"@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.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.0.tgz#9403633e723336055fad4bbf5e4c9fe3c55f8d3f" + integrity sha512-VuW7c+RAk3AYPU0Hxmun3RzXn7fbJDdjQbxvvpRMnQ9zrhk8mH42cY466M0n4e/UGQ+0smlx5BqZII8aYQ5XPg== -"@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.14.1": + version "0.14.1" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.14.1.tgz#0cb3226025c27bf2e01a738f3841ab6bde80572e" + integrity sha512-LE+QED10cjp28jJ7wwIY58HQBXoJioEWiQy7iQS8Fo2UxHGY5BvGjwnxX4yyszQPbcZZRLDSlBIUaYfog+rdEA== dependencies: - "@firebase/auth-types" "0.9.3" + "@firebase/auth-types" "0.10.0" -"@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.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.8.tgz#3a5753493ba65c85c9c09e2707be44d73e0a456c" + integrity sha512-kzuCF+NVympQk3gcsHldOmDRVPVndECi6O9Wvd47HTEQYO9HsZWfOM1fHUvvHAijSzNi16p4NSM7UziuBQBL4w== dependencies: - "@firebase/util" "0.2.36" - tslib "1.10.0" + "@firebase/util" "0.2.43" + tslib "1.11.1" -"@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.14": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.4.14.tgz#181e10c1d1ae64fd0a080f6e0369cec115c51d70" + integrity sha512-+D41HWac0HcvwMi+0dezEdSOZHpVjPKPNmpQiW2GDuS5kk27/v1jxc9v7F4ALLtpxbVcn16UZl5PqEkcS9H2Xg== dependencies: - "@firebase/app-types" "0.5.0" + "@firebase/app-types" "0.6.0" -"@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.24": + version "0.5.24" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.5.24.tgz#548b2030def35a7b6f4d71a4b2d1a67499d1eef3" + integrity sha512-9whAQzU8cxDUKGBWCT/aHVmqfyzCP2RkGhbZi2oHpMrmvht7cuBtXtUbDD5R8WomniCOUP8rtQfmCFI7V9ehYw== 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.4" + "@firebase/component" "0.1.8" + "@firebase/database-types" "0.4.14" + "@firebase/logger" "0.2.0" + "@firebase/util" "0.2.43" faye-websocket "0.11.3" - tslib "1.10.0" + tslib "1.11.1" -"@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-types@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.10.1.tgz#bf018f9c495f470592de745389474dc1c2960d3f" + integrity sha512-vyKdm+AYUFT8XeUX62IOqaqPFCs/mAMoSEsqIz9HnSVsqCw/IocNjtjSa+3M80kRw4V8fI7JI+Xz6Wg5VJXLqA== -"@firebase/firestore@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== +"@firebase/firestore@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.13.0.tgz#2638f25b2a3d19cb891a6b334a0dc14aefef5a34" + integrity sha512-GctO+sxLqOnY8SkBN5Z5p1nUYRX+yWSc9Kcx9nIPbUZ0WqBM5BaSlBHZHTFtjmJxS+0j/Y8Mu7c6qm6q5rVnjA== 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.8" + "@firebase/firestore-types" "1.10.1" + "@firebase/logger" "0.2.0" + "@firebase/util" "0.2.43" + "@firebase/webchannel-wrapper" "0.2.38" "@grpc/proto-loader" "^0.5.0" grpc "1.24.2" - tslib "1.10.0" + tslib "1.11.1" -"@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.16": + version "0.3.16" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.3.16.tgz#be0362d7f61648fdf36a7d95de239eddee88f931" + integrity sha512-kHhBvSYiY2prY4vNQCALYs1+OruTdylvGemHG6G6Bs/rj3qw7ui3WysBsDU/rInJitHIcsZ35qrtanoJeQUIXQ== -"@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.38": + version "0.4.38" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.4.38.tgz#f49e3f4a4a3c67e527c472f05b2e517ea057e7fc" + integrity sha512-t5QkJg251FmIEEi2mh3Xrf7Q3yonSLRaUW/vhgze7A3Xy3uTIUT3BVNWuKaRmg1n0PgKQaBHCjlDoLJAdSpujg== dependencies: - "@firebase/component" "0.1.1" - "@firebase/functions-types" "0.3.13" - "@firebase/messaging-types" "0.4.0" + "@firebase/component" "0.1.8" + "@firebase/functions-types" "0.3.16" + "@firebase/messaging-types" "0.4.4" isomorphic-fetch "2.2.1" - tslib "1.10.0" + tslib "1.11.1" -"@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.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.3.tgz#f2e49e73afaeb7b352250365d0d90dff0b792592" + integrity sha512-XvWhPPAGeZlc+CfCA8jTt2pv19Jovi/nUV73u30QbjBbk5xci9bp5I29aBZukHsR6YNBjFCLSkLPbno4m/bLUg== -"@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.6": + version "0.4.6" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.6.tgz#e288e18b39dda3e8b3b35c3be6185a7b187924e5" + integrity sha512-ey8cE2ldRO4pYqg0lCWQ+XFLETHZWha3Hw1CnYJjLivk4FMM8u/es3Oa257wwtYXAUfr0UsPDfHFgYME9E9EhA== dependencies: - "@firebase/component" "0.1.1" - "@firebase/installations-types" "0.2.4" - "@firebase/util" "0.2.36" + "@firebase/component" "0.1.8" + "@firebase/installations-types" "0.3.3" + "@firebase/util" "0.2.43" idb "3.0.2" - tslib "1.10.0" + tslib "1.11.1" -"@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.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.0.tgz#d40149b8a33bca3dfbfb5b4a63e06b3ffa193157" + integrity sha512-qOMnAh1JY9NkYUEy3iFviiFq0dCvk6qN2DsRy2Y7eAhHR6RqwA47l1kI+0MIXmSzlJ9akXjWAXxV5ijzr68Big== -"@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.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.4.4.tgz#bef66157bdd3ddaafd6d48f1c5ee973fdc385f84" + integrity sha512-JGtkr+1A1Dw7+yCqQigqBfGKtq0gTCruFScBD4MVjqZHiqGIYpnQisWnpGbkzPR6aOt6iQxgwxUhHG1ulUQGeg== -"@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.10": + version "0.6.10" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.6.10.tgz#0f2713a85732ce23ec7968e2f0ac784a259330e4" + integrity sha512-WYnKEffG6m0EMHzib8KCWVUGno1cuBC13RrOfGWOCv/whdy9QCIZgMxH/NsY3BrYst8FnjuXEU16fi5AEf4qbg== dependencies: - "@firebase/component" "0.1.1" - "@firebase/installations" "0.3.8" - "@firebase/messaging-types" "0.4.0" - "@firebase/util" "0.2.36" - tslib "1.10.0" + "@firebase/component" "0.1.8" + "@firebase/installations" "0.4.6" + "@firebase/messaging-types" "0.4.4" + "@firebase/util" "0.2.43" + idb "3.0.2" + tslib "1.11.1" -"@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.12": + version "0.0.12" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.12.tgz#15fa79e296b502e21054a66c9e7ded59398fd8a7" + integrity sha512-eIDF7CHetOE5sc+hCaUebEn/2Aiaju7UkgZDTl7lNQHz5fK9wJ/11HaE8WdnDr//ngS3lQAGC2RB4lAZeEWraA== -"@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.36": + version "0.2.36" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.2.36.tgz#341bad35e786a377a38c4b4165088ebd4f07d025" + integrity sha512-nMx3gT+ZD86MV5n460XFA1o75YYMGcs2MXrJa462rfUQtqOrtOOvdUvVtmE6cLrHsL4Y83B+VBWKHzACIPghPw== 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" - tslib "1.10.0" + "@firebase/component" "0.1.8" + "@firebase/installations" "0.4.6" + "@firebase/logger" "0.2.0" + "@firebase/performance-types" "0.0.12" + "@firebase/util" "0.2.43" + tslib "1.11.1" -"@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.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.33.tgz#93974c68ca092a9210f02b803f5e285e86b547ee" + integrity sha512-Arp9JViyD2i0K01NCCY0WZK5p16kQB/wddf44+Qboh+u3eIrFbVk0OO2IknjrkzIW392u73Ts7TkVxLPGPJF9g== dependencies: - core-js "3.4.8" + core-js "3.6.4" 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.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.8.tgz#0c8d8a839621230053ba55704b5d1145bfe54daa" + integrity sha512-K12IBHO7OD4gCW0FEqZL9zMqVAfS4+joC4YIn3bHezZfu3RL+Bw1wCb0cAD7RfDPcQxWJjxOHpce4YhuqSxPFA== -"@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.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.17.tgz#ac4a8c9def48d404bdfe72cdf47199360cd44d01" + integrity sha512-jIRHXih0krVTNGYMewFVIaX8WPE1iS06fV4oMMHCCSSforGodv535uVZZ41Il29Q+22zOcyJvahoc990V0cFoA== 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" - tslib "1.10.0" + "@firebase/component" "0.1.8" + "@firebase/installations" "0.4.6" + "@firebase/logger" "0.2.0" + "@firebase/remote-config-types" "0.1.8" + "@firebase/util" "0.2.43" + tslib "1.11.1" -"@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.11": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.11.tgz#98f6ced5460502ab12778ce71d4dc9bf0ab7f2ee" + integrity sha512-EMOo5aeiJIa8eQ/VqjIa/DYlDcEJX1V84FOxmLfNWZIlmCSvcqx9E9mcNlOnoUB4iePqQjTMQRtKlIBvvEVhVg== -"@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.30": + version "0.3.30" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.3.30.tgz#195f6bd9b526710b7446e430b71dfb82cf8b35cc" + integrity sha512-wapt4+NiEqTiLKPpsy+XbdLTN99pkqjf46Z7zqeS+vh+61cJsUT8M7YBfBb0ZN+dY6gnI5QNzviiKpykhJQbVA== dependencies: - "@firebase/component" "0.1.1" - "@firebase/storage-types" "0.3.8" - "@firebase/util" "0.2.36" - tslib "1.10.0" + "@firebase/component" "0.1.8" + "@firebase/storage-types" "0.3.11" + "@firebase/util" "0.2.43" + tslib "1.11.1" -"@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.43": + version "0.2.43" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.2.43.tgz#551728e1f6deb3a3709c2e9dc60dbb7c1a423fd4" + integrity sha512-4gGlvcoOJ48xO6PH59UOHLjvImdYXANF/1d0ao60fbiJDIKxJqMksXw3UF2zsUrRkyCOqIDLeiVuF18vffXP+g== dependencies: - tslib "1.10.0" + tslib "1.11.1" -"@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.38": + version "0.2.38" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.38.tgz#1f0602cd73f7402ffc4d6116c811dfbb652caa73" + integrity sha512-mp1XmAJsuqaSWm5WQYo7R0zfZWe9EmwMCxsxkKr+ubLOumyNy4NG5aV45hEpFTosQv4myXpiCiS4GFE9mNqLZQ== "@grpc/proto-loader@^0.5.0": version "0.5.3" @@ -1334,9 +1633,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 +1697,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 +1707,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 +1793,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== @@ -1511,6 +1810,69 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nivo/colors@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/colors/-/colors-0.61.0.tgz#5af2a6d8b1d22c786950cc9fb07c216a80a541ff" + integrity sha512-yeb5YsQDoN7D5DbBIhHTnVn0bX+4ObNVGyJAepSn64zNPiskO3/o1FnQw70aIkN4O7BDXb/vVPrftq6wSwQtvQ== + dependencies: + d3-color "^1.2.3" + d3-scale "^3.0.0" + d3-scale-chromatic "^1.3.3" + lodash.get "^4.4.2" + lodash.isplainobject "^4.0.6" + react-motion "^0.5.2" + +"@nivo/core@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/core/-/core-0.61.0.tgz#66581a0e2dc4f8f802bd0f1515f1f2269b0595e0" + integrity sha512-7DGsTW12vfUvMIr9jl28KZaJMJqMMhEJi1lW1R2TPMTg+qSG01v6tqMtcEwUp4bdAdr3n57ytLWSgqKWXkwjvw== + dependencies: + "@nivo/tooltip" "0.61.0" + d3-color "^1.2.3" + d3-format "^1.3.2" + d3-hierarchy "^1.1.8" + d3-interpolate "^1.3.2" + d3-scale "^3.0.0" + d3-scale-chromatic "^1.3.3" + d3-shape "^1.3.5" + d3-time-format "^2.1.3" + lodash "^4.17.11" + react-measure "^2.2.4" + react-motion "^0.5.2" + recompose "^0.30.0" + +"@nivo/legends@0.61.1": + version "0.61.1" + resolved "https://registry.yarnpkg.com/@nivo/legends/-/legends-0.61.1.tgz#54ac123b25449e7663067b3e019c7d3a9429a6f9" + integrity sha512-bKVXffFwTKGySZRUf6sdVzWUb5jjGffuvRczs0giQCu8OUgeJIi0IOOyYhHtww+rTVGIKAi0xPGQTQnF4kpufA== + dependencies: + "@nivo/core" "0.61.0" + lodash "^4.17.11" + recompose "^0.30.0" + +"@nivo/pie@^0.61.1": + version "0.61.1" + resolved "https://registry.yarnpkg.com/@nivo/pie/-/pie-0.61.1.tgz#c29e683f0e910147282186be4c4693bee545f594" + integrity sha512-3xmYrB/rccJ6f5AtckhIm51Bj7IVYomeCJsM1vK07wzOS+ZpvJRODokzXSNvp7NkMl3jrqCcGriLhSg3mf9+yA== + dependencies: + "@nivo/colors" "0.61.0" + "@nivo/core" "0.61.0" + "@nivo/legends" "0.61.1" + "@nivo/tooltip" "0.61.0" + d3-shape "^1.3.5" + lodash "^4.17.11" + react-motion "^0.5.2" + recompose "^0.30.0" + +"@nivo/tooltip@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/tooltip/-/tooltip-0.61.0.tgz#bf8b06a18f41fc9072e3f2d9591ebbb9b45c2a54" + integrity sha512-CqEJ4v1jSikZ3fmuSJVb1UYF8fuCo/c7JFB+LsNH9X01IERSufO3tSNBTzJ3JugCminQpbo6/R7oBhNwZFqSxw== + dependencies: + "@nivo/core" "0.61.0" + react-measure "^2.2.4" + react-motion "^0.5.2" + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" @@ -1569,6 +1931,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.21" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.3.21.tgz#5264d12019ffb844dc1fc44d55517ded7b580ee2" + integrity sha512-Wcu3CFJV+iiqPEIoPVx3/CYnZBRgPeRABo6bLJByRH9ptJXyObn7WYPG7Rv0cg3+55bqcBbG0xEfovzwE2PNXg== + "@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 +2034,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 +2050,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,24 +2069,31 @@ 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" +"@tinymce/tinymce-react@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@tinymce/tinymce-react/-/tinymce-react-3.5.0.tgz#5017be56aeab1077f09d3f74a386883e5524a33f" + integrity sha512-sZPerYmSWQcdk7F9KEvCC3/kPNZ9Bb+dk8rS0RoYyYql/gqgNpLpycC+CC/KhgT0wDaYuRoCcdV1DVZGam+oOg== + dependencies: + prop-types "^15.6.2" + "@types/babel__core@^7.1.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" - integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" + integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1699,9 +2117,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" - integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" + integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== dependencies: "@babel/types" "^7.3.0" @@ -1713,20 +2131,39 @@ "@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/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/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 +2181,24 @@ 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/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.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.6.tgz#cb734a7c191472ae6a2b3a502b4dfffcea974113" + integrity sha512-eyK7MWD0R1HqVTp+PtwRgFeIsemzuj4gBFSQxfPHY5iMjS7474e5wq+VFgTcdpyHeNxyKSaetYAjdMLJlKoWqA== "@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.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.16.tgz#ee96ddac1a38d98d2c8a71c7df0cdad5758e8993" + integrity sha512-A4283YSA1OmnIivcpy/4nN86YlnKRiQp8PYwI2KdPCONEBN093QTb0gCtERtkLyVNGKKIGazTZ2nAmVzQU51zA== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1773,17 +2215,10 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== -"@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" - integrity sha512-vXoIy4GUfB7/YgqubR4H7RALo+pRdMYCeLgWwV3MPwl5pggTlEkFBTF19R7u+LJc85uMqC7RfsbkqPLMQ4ab+A== - 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@^16.9.11": + version "16.9.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.23.tgz#1a66c6d468ba11a8943ad958a8cb3e737568271c" + integrity sha512-SsGVT4E7L2wLN3tPYLiF20hmZTPGuzaayVunfgXzUn1x4uHVsKH6QDJQ/TdpHqwsTLd4CwrmQ2vOgxN7gE24gw== dependencies: "@types/prop-types" "*" csstype "^2.2.0" @@ -1794,62 +2229,62 @@ 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" "*" -"@types/zen-observable@^0.8.0": +"@types/zen-observable@0.8.0", "@types/zen-observable@^0.8.0": version "0.8.0" 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.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.21.0.tgz#a34de84a0791cae0357c4dda805c5b4e8203b6c6" + integrity sha512-b5jjjDMxzcjh/Sbjuo7WyhrQmVJg0WipTHQgXh5Xwx10uYm6nPWqN1WGOsaNq4HR3Zh4wUx4IRQdDkCHwyewyw== dependencies: - "@typescript-eslint/experimental-utils" "2.14.0" + "@typescript-eslint/experimental-utils" "2.21.0" 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.21.0": + version "2.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.21.0.tgz#71de390a3ec00b280b69138d80733406e6e86bfa" + integrity sha512-olKw9JP/XUkav4lq0I7S1mhGgONJF9rHNhKFn9wJlpfRVjNo3PPjSvybxEldvCXnvD+WAshSzqH5cEjPp9CsBA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.14.0" + "@typescript-eslint/typescript-estree" "2.21.0" 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.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.21.0.tgz#4f200995517c3d5fc5ef51b17527bc948992e438" + integrity sha512-VrmbdrrrvvI6cPPOG7uOgGUFXNYTiSbnRq8ZMyuGa4+qmXJXVLEEz78hKuqupvkpwJQNk1Ucz1TenrRP90gmBg== 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.21.0" + "@typescript-eslint/typescript-estree" "2.21.0" 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.21.0": + version "2.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.21.0.tgz#7e4be29f2e338195a2e8c818949ed0ff727cc943" + integrity sha512-NC/nogZNb9IK2MEFQqyDBAciOT8Lp8O3KgAfvHx2Skx6WBo+KmDqlU3R9KxHONaijfTIKtojRe3SZQyMjr3wBw== 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" @@ -2024,6 +2459,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +aamva@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aamva/-/aamva-1.2.0.tgz#2b96e123cefa74705217e47fe39d051536215d79" + integrity sha512-0Ay2i8CMsGrYk/xtg7Um1lEjFDypZ9tcSvxMvvkGAbtxiJ3v0tn/7fIDqaMsSy4ANHkekQKGzm6L21mS8zrc1g== + abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" @@ -2051,9 +2491,9 @@ acorn-globals@^4.1.0, acorn-globals@^4.3.0: acorn-walk "^6.0.1" acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== acorn-walk@^6.0.1: version "6.2.0" @@ -2098,6 +2538,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" @@ -2124,12 +2572,12 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" 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== +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== 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 +2597,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,64 +2646,62 @@ 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.0.0, 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: - "@ant-design/create-react-context" "^0.2.4" - "@ant-design/icons" "~2.1.1" - "@ant-design/icons-react" "~2.0.1" - "@types/react-slick" "^0.23.4" + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +antd@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.1.0.tgz#1e0b07a19d4887e09d47bdd50a3b483bb2c372c4" + integrity sha512-xj/GhuSlvWouZ6L3/qdZ6I9b4IWaDeNaGVlm5D18cNY0pNZTK2zh5ov130KDb6YERtAnA5BLU+5U+cvfbvJUcw== + dependencies: + "@ant-design/icons" "^4.0.0" + "@ant-design/react-slick" "~0.25.5" array-tree-filter "^2.1.0" - babel-runtime "6.x" classnames "~2.2.6" copy-to-clipboard "^3.2.0" css-animation "^1.5.0" - dom-closest "^0.2.0" - enquire.js "^2.1.6" - is-mobile "^2.1.0" lodash "^4.17.13" moment "^2.24.0" omit.js "^1.0.2" prop-types "^15.7.2" raf "^3.4.1" - rc-animate "^2.10.2" - rc-calendar "~9.15.7" - rc-cascader "~0.17.4" + rc-animate "~2.10.2" + rc-cascader "~1.0.0" rc-checkbox "~2.1.6" rc-collapse "~1.11.3" rc-dialog "~7.6.0" rc-drawer "~3.1.1" - rc-dropdown "~2.4.1" - rc-editor-mention "^1.1.13" - rc-form "^2.4.10" - rc-input-number "~4.5.0" - rc-mentions "~0.4.0" - rc-menu "~7.5.1" - rc-notification "~3.3.1" - rc-pagination "~1.20.11" + rc-dropdown "~3.0.0" + rc-field-form "~1.1.0" + rc-input-number "~4.5.4" + rc-mentions "~1.0.0" + rc-menu "~8.0.1" + rc-notification "~4.0.0" + rc-pagination "~2.2.0" + rc-picker "~1.4.0" rc-progress "~2.5.0" - rc-rate "~2.5.0" - rc-resize-observer "^0.1.0" - rc-select "~9.2.0" - rc-slider "~8.7.1" + rc-rate "~2.5.1" + rc-resize-observer "^0.2.0" + rc-select "~10.1.0" + rc-slider "~9.2.3" rc-steps "~3.5.0" rc-switch "~1.9.0" - rc-table "~6.10.5" - rc-tabs "~9.7.0" - rc-time-picker "~3.7.1" - rc-tooltip "~3.7.3" - rc-tree "~2.1.0" - rc-tree-select "~2.9.1" - rc-trigger "^2.6.2" - rc-upload "~2.9.1" - rc-util "^4.16.1" - react-lazy-load "^3.0.13" - react-lifecycles-compat "^3.0.4" - react-slick "~0.25.2" + rc-table "~7.3.0" + rc-tabs "~10.1.1" + rc-tooltip "~4.0.2" + rc-tree "~3.1.0" + rc-tree-select "~3.1.0" + rc-trigger "~4.0.0" + rc-upload "~3.0.0" + rc-util "^4.20.0" + rc-virtual-list "^1.1.0" resize-observer-polyfill "^1.5.1" - shallowequal "^1.1.0" + scroll-into-view-if-needed "^2.2.20" warning "~4.0.3" anymatch@^2.0.0: @@ -2266,6 +2712,22 @@ 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" + +aphrodite@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/aphrodite/-/aphrodite-0.5.0.tgz#a4b9a8902662395d2702e70ac7a2b4ca66f25703" + integrity sha1-pLmokCZiOV0nAucKx6K0ymbyVwM= + dependencies: + asap "^2.0.3" + inline-style-prefixer "^2.0.0" + apollo-boost@^0.4.4: version "0.4.7" resolved "https://registry.yarnpkg.com/apollo-boost/-/apollo-boost-0.4.7.tgz#b0680ab0893e3f8b1ab1058dcfa2b00cb6440d79" @@ -2354,6 +2816,15 @@ apollo-link-logger@^1.2.3: resolved "https://registry.yarnpkg.com/apollo-link-logger/-/apollo-link-logger-1.2.3.tgz#1f3e6f7849ce7a7e3aa822141fe062cfa278b1e1" integrity sha512-GaVwdHyXmawfvBlHfZkFkBHH3+YH7wibzSCc4/YpIbPVtbtZqi0Qop18w++jgpw385W083DMOdYe2eJsKkZdag== +apollo-link-retry@^2.2.15: + version "2.2.15" + resolved "https://registry.yarnpkg.com/apollo-link-retry/-/apollo-link-retry-2.2.15.tgz#4cc3202fcb6251fed6f6b57ade99b4b1ad05c619" + integrity sha512-ltwXGxm+2NXzskrk+GTofj66LQtcc9OGCjIxAPbjlvtHanpKJn8CviWq8dIsMiYGS9T9rGG/kPPx/VdJfcFb6w== + dependencies: + "@types/zen-observable" "0.8.0" + apollo-link "^1.2.13" + tslib "^1.9.3" + apollo-link-ws@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/apollo-link-ws/-/apollo-link-ws-1.0.19.tgz#dfa871d4df883a8777c9556c872fc892e103daa5" @@ -2455,7 +2926,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== @@ -2487,14 +2958,14 @@ array-unique@^0.3.2: integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.find@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.0.tgz#630f2eaf70a39e608ac3573e45cf8ccd0ede9ad7" - integrity sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" + integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== dependencies: define-properties "^1.1.3" - es-abstract "^1.13.0" + es-abstract "^1.17.4" -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 +2978,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.3, 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= @@ -2586,10 +3057,10 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async-validator@~1.11.3: - version "1.11.5" - resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.11.5.tgz#9d43cf49ef6bb76be5442388d19fb9a6e47597ea" - integrity sha512-XNtCsMAeAH1pdLMEg1z8/Bb3a8cdCbui9QbJATRFHHHW5kT6+NPI3zSVQUXgikTFITzsg+kYY5NTWhM2Orwt9w== +async-validator@^3.0.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.2.4.tgz#4e773a1d0d741016b455b7995b469a47cce0dbe0" + integrity sha512-mTgzMJixkrh+5t2gbYoua8MLy11GHkQqFE6tbhY5Aqc4jEDGsR4BWP+sVQiYDHtzTMB8WIwI/ypObTVPcTZInw== async@^2.6.2: version "2.6.3" @@ -2609,47 +3080,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" @@ -2660,15 +3123,15 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-eslint@10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" - integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== +babel-eslint@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" eslint-visitor-keys "^1.0.0" resolve "^1.12.0" @@ -2692,17 +3155,18 @@ babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" -babel-loader@8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" pify "^4.0.1" + schema-utils "^2.6.5" -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 +3190,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 +3245,25 @@ 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.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== 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.9.0" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-proposal-optional-chaining" "7.9.0" + "@babel/plugin-transform-flow-strip-types" "7.9.0" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.9.0" + "@babel/preset-env" "7.9.0" + "@babel/preset-react" "7.9.1" + "@babel/preset-typescript" "7.9.0" + "@babel/runtime" "7.9.0" + 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 +3329,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" @@ -2926,6 +3391,11 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +bowser@^1.0.0: + version "1.9.4" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" + integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2950,6 +3420,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 +3503,34 @@ 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.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" -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== +browserslist@^4.0.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5: + version "4.9.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.0.tgz#ff85c390889e0f754d7bd8ad13412575cdcf5dc7" + integrity sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg== dependencies: - caniuse-lite "^1.0.30001015" - electron-to-chromium "^1.3.322" - node-releases "^1.1.42" + caniuse-lite "^1.0.30001030" + electron-to-chromium "^1.3.361" + node-releases "^1.1.50" + +browserslist@^4.9.1: + version "4.11.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.0.tgz#aef4357b10a8abda00f97aac7cd587b2082ba1ad" + integrity sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.380" + node-releases "^1.1.52" + pkg-up "^3.1.0" bser@2.1.1: version "2.1.1" @@ -3051,6 +3539,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + 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 +3611,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,13 +3679,13 @@ 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: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" + pascal-case "^3.1.1" + tslib "^1.10.0" camelcase-keys@^2.0.0: version "2.1.0" @@ -3183,6 +3700,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 +3715,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 +3730,15 @@ 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.30001030: + version "1.0.30001030" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" + integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== + +caniuse-lite@^1.0.30001035: + version "1.0.30001036" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001036.tgz#930ea5272010d8bf190d859159d757c0b398caf0" + integrity sha512-jU8CIFIj2oR7r4W+5AKcsvWNVIb6Q6OZE3UsrXrZBHFtreT4YgTeOJtTucp+zSedEpTi3L5wASSP0LYIE3if6w== capture-exit@^2.0.0: version "2.0.0" @@ -3230,10 +3747,10 @@ 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" @@ -3260,34 +3777,24 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +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 "^4.1.0" + supports-color "^7.1.0" + +change-emitter@^0.1.2: + version "0.1.6" + resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" + integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chart.js@^2.9.3: - version "2.9.3" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.3.tgz#ae3884114dafd381bc600f5b35a189138aac1ef7" - integrity sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw== - dependencies: - chartjs-color "^2.1.0" - moment "^2.10.2" - -chartjs-color-string@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz#1df096621c0e70720a64f4135ea171d051402f71" - integrity sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A== - dependencies: - color-name "^1.0.0" - -chartjs-color@^2.1.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz#6118bba202fe1ea79dd7f7c0f9da93467296c3b0" - integrity sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w== - dependencies: - chartjs-color-string "^0.6.0" - color-convert "^1.9.3" - cheerio@^1.0.0-rc.3: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" @@ -3300,7 +3807,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,10 +3826,25 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== +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.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: version "1.0.2" @@ -3354,24 +3876,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.3: + 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" @@ -3412,6 +3932,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-deep@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" @@ -3432,6 +3961,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" @@ -3459,19 +3993,26 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 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 +4045,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.1.1: + 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" @@ -3529,7 +4065,7 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -component-classes@1.x, component-classes@^1.2.5, component-classes@^1.2.6: +component-classes@^1.2.5, component-classes@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE= @@ -3554,13 +4090,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== @@ -3573,6 +4109,11 @@ compression@^1.5.2: safe-buffer "5.1.2" vary "~1.1.2" +compute-scroll-into-view@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.13.tgz#be1b1663b0e3f56cd5f7713082549f562a3477e2" + integrity sha512-o+w9w7A98aAFi/GjK8cxSV+CdASuPa2rR5UWs3+yHkJzWqaKoBEufFNWYaXInCSmUfDCVhesG+v9MTWqOjsxFg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3593,7 +4134,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 +4171,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 +4183,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 +4211,29 @@ 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.3.1" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" + integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== 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== + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== -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.4, 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-js@^1.0.0: version "1.2.7" @@ -3711,11 +4245,6 @@ 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-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3773,16 +4302,24 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.3: - version "15.6.3" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" - integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== +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: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +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 +4330,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 +4388,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 +4438,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" @@ -3925,11 +4455,6 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-unit-converter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" - integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= - css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" @@ -4052,10 +4577,10 @@ cssstyle@^1.0.0, cssstyle@^1.1.1: dependencies: cssom "0.3.x" -csstype@^2.2.0: - version "2.6.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.8.tgz#0fb6fc2417ffd2816a418c9336da74d7f07db431" - integrity sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA== +csstype@^2.2.0, csstype@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098" + integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q== currently-unhandled@^0.4.1: version "0.4.1" @@ -4069,6 +4594,76 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +"d3-array@1.2.0 - 2": + version "2.4.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.4.0.tgz#87f8b9ad11088769c82b5ea846bcb1cc9393f242" + integrity sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw== + +d3-color@1, d3-color@^1.2.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.0.tgz#89c45a995ed773b13314f06460df26d60ba0ecaf" + integrity sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg== + +d3-format@1, d3-format@^1.3.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.3.tgz#4e8eb4dff3fdcb891a8489ec6e698601c41b96f1" + integrity sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ== + +d3-hierarchy@^1.1.8: + version "1.1.9" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== + +d3-interpolate@1, d3-interpolate@^1.2.0, d3-interpolate@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== + dependencies: + d3-color "1" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-scale-chromatic@^1.3.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" + integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== + dependencies: + d3-color "1" + d3-interpolate "1" + +d3-scale@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.1.tgz#da1684adce7261b4bc7a76fe193d887f0e909e69" + integrity sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA== + dependencies: + d3-array "1.2.0 - 2" + d3-format "1" + d3-interpolate "^1.2.0" + d3-time "1" + d3-time-format "2" + +d3-shape@^1.3.5: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-time-format@2, d3-time-format@^2.1.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" + integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== + dependencies: + d3-time "1" + +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -4078,9 +4673,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 +4693,11 @@ 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== + 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 +4731,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 +4800,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,16 +4934,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== - -dom-closest@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-closest/-/dom-closest-0.2.0.tgz#ebd9f91d1bf22e8d6f477876bbcd3ec90216c0cf" - integrity sha1-69n5HRvyLo1vR3h2u80+yQIWwM8= - dependencies: - dom-matches ">=1.0.1" + version "1.11.1" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.11.1.tgz#7592be99a660a36cdedc1d6eeb22b8109d758cae" + integrity sha512-hN42DmUgtweBx0iBjDLO4WtKOMcK8yBmPx/fgdsgQadLuzPu/8co3oLdK5yMmeM/vnUd3yDyV6qV8/NzxBexQg== dom-converter@^0.2: version "0.2.0" @@ -4358,15 +4945,20 @@ dom-converter@^0.2: dependencies: utila "~0.4" -dom-matches@>=1.0.1: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-matches/-/dom-matches-2.0.0.tgz#d2728b416a87533980eb089b848d253cf23a758c" - integrity sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw= +dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" -dom-scroll-into-view@1.x, dom-scroll-into-view@^1.2.0, dom-scroll-into-view@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz#e8f36732dd089b0201a88d7815dc3f88e6d66c7e" - integrity sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4= +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-serializer@0: version "0.2.2" @@ -4434,37 +5026,31 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -dot-prop@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== dependencies: - is-obj "^1.0.0" + no-case "^3.0.3" + tslib "^1.10.0" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" dotenv-expand@5.1.0: version "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== -draft-js@^0.10.0, draft-js@~0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.10.5.tgz#bfa9beb018fe0533dbb08d6675c371a6b08fa742" - integrity sha512-LE6jSCV9nkPhfVX2ggcRLA4FKs6zWq9ceuO/88BpXdNCS7mjRTgs0NsV6piUCJX9YxMsB9An33wnkMmU2sD2Zg== - dependencies: - fbjs "^0.8.15" - immutable "~3.7.4" - object-assign "^4.1.0" - duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -4493,10 +5079,20 @@ ee-first@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== +ejs@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.0.2.tgz#745b01cdcfe38c1c6a2da3bbb2d9957060a31226" + integrity sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA== + +electron-to-chromium@^1.3.361: + version "1.3.363" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.363.tgz#08756873e49446a92e0cee6c3cd9eb3c52043826" + integrity sha512-4w19wPBkeunBjOA53lNFT36IdOD3Tk1OoIDtTX+VToJUUDX42QfuhtsNKXv25wmSnoBOExM3kTbj7/WDNBwHuQ== + +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.380: + version "1.3.380" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.380.tgz#1e1f07091b42b54bccd0ad6d3a14f2b73b60dc9d" + integrity sha512-2jhQxJKcjcSpVOQm0NAfuLq8o+130blrcawoumdXT6411xG/xIAOyZodO/y7WTaYlz/NHe3sCCAe/cJLnDsqTw== elliptic@^6.0.0: version "6.5.2" @@ -4526,6 +5122,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4554,11 +5155,6 @@ enhanced-resolve@^4.1.0: memory-fs "^0.5.0" tapable "^1.0.0" -enquire.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814" - integrity sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ= - entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -4646,10 +5242,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.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4: + 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" @@ -4698,85 +5294,91 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -escape-html@~1.0.3: +escape-html@^1.0.3, escape-html@~1.0.3: version "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.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== 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.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== 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 +5400,23 @@ 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.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== 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.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" eslint-scope@^4.0.3: version "4.0.3" @@ -4841,7 +5446,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,20 +5498,15 @@ 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== esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== dependencies: estraverse "^4.0.0" @@ -4942,15 +5542,10 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== -eventlistener@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/eventlistener/-/eventlistener-0.0.1.tgz#ed2baabb852227af2bcf889152c72c63ca532eb8" - 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" @@ -4985,6 +5580,11 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exenv@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -5015,7 +5615,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 +5711,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" @@ -5159,7 +5759,7 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fbjs@^0.8.15, fbjs@^0.8.16, fbjs@^0.8.9: +fbjs@^0.8.1: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -5177,17 +5777,10 @@ 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" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -5198,23 +5791,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 +5819,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" @@ -5248,7 +5848,7 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -5257,12 +5857,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.3.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.0.tgz#4d74ed1fe9ef1731467ca24378e8f8f5c8b6ed11" + integrity sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg== dependencies: - locate-path "^3.0.0" + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.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 +5889,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.13.1: + version "7.13.1" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.13.1.tgz#f9c05ef60341cf8f7796ad7b8f3181b31be6dcf5" + integrity sha512-v4Z7Wioy/7LMC8RJn1jNlOaUqLK7bUEva+Uf+qrbtFd7hM2rWLW+0IqHZBwPrQ5tI604uHj7IlhqAZEjm38AMw== + dependencies: + "@firebase/analytics" "0.3.0" + "@firebase/app" "0.6.0" + "@firebase/app-types" "0.6.0" + "@firebase/auth" "0.14.1" + "@firebase/database" "0.5.24" + "@firebase/firestore" "1.13.0" + "@firebase/functions" "0.4.38" + "@firebase/installations" "0.4.6" + "@firebase/messaging" "0.6.10" + "@firebase/performance" "0.2.36" + "@firebase/polyfill" "0.3.33" + "@firebase/remote-config" "0.1.17" + "@firebase/storage" "0.3.30" + "@firebase/util" "0.2.43" flat-cache@^2.0.1: version "2.0.1" @@ -5334,9 +5951,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 +5979,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 +6027,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 +6061,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 +6083,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 +6126,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 +6151,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" @@ -5537,6 +6166,11 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-node-dimensions@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-node-dimensions/-/get-node-dimensions-1.2.1.tgz#fb7b4bb57060fb4247dd51c9d690dfbec56b0823" + integrity sha512-2MSPMu7S1iOTL+BOa6K1S62hB2zUAYNF/lV0gSVlOaacd087lc6nR1H1r0e3B1CerTo+RceOmi1iJW+vp21xcQ== + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -5574,7 +6208,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== @@ -5651,28 +6285,28 @@ globby@^6.1.0: pinkie-promise "^2.0.0" globule@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.0.tgz#41d0e9fb44afd4b80d93a23263714f90b3dec904" - integrity sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg== + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== dependencies: glob "~7.1.1" - lodash "~4.17.10" + lodash "~4.17.12" 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" @@ -5698,7 +6332,7 @@ gud@^1.0.0: resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== -gzip-size@5.1.1: +gzip-size@5.1.1, gzip-size@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== @@ -5716,23 +6350,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.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 +6380,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 +6449,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,17 +6485,17 @@ 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" hosted-git-info@^2.1.4: - version "2.8.5" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" - integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + version "2.8.7" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.7.tgz#4d2e0d5248e1cfabc984b0f6a6d75fe36e679511" + integrity sha512-ChkjQtKJ3GI6SsI4O5jwr8q8EPrWCnxuc4Tbx+vRI5x6mDOpjKKltNo1lRlszw3xwgTOSns1ZRBiMmmwpcvLxg== hpack.js@^2.1.6: version "2.1.6" @@ -5908,23 +6536,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.4" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.4.tgz#e8cc02748acb983bd7912ea9660bd31c0702ec32" + integrity sha512-fHwmKQ+GzhlqdxEtwrqLT7MSuheiA+rif5/dZgbz3GjoMXJzcRzy1L9NXoiiyxrnap+q5guSiv8Tz5lrh9g42g== 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 "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" html-parse-stringify2@2.0.1: version "2.0.1" @@ -5933,16 +6566,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 +6632,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 +6665,22 @@ 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== +hyphenate-style-name@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" + integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== + +i18next-browser-languagedetector@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-4.1.1.tgz#89656cd9b78bb92dc0c7e86c0d9606f3f15fabfa" + integrity sha512-akv0zurR/2KU7s1qaWkirY9FEEOT1TNsQaezEg8+1BLLQre7vylqb7tYoUgYqP/0/BEzXJgnoQnj+sh5xYFMhg== + dependencies: + "@babel/runtime" "^7.5.5" + +i18next@^19.3.4: + version "19.3.4" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.3.4.tgz#512de50ee6075df825c646e1ce646a104f0938c9" + integrity sha512-ef7AxxutzdhBsBNugE9jgqsbwesG1muJOtZ9ZrPARPs/jXegViTp4+8JCeMp8BAyTIo1Zn0giqc8+2UpqFjU0w== dependencies: "@babel/runtime" "^7.3.1" @@ -6046,12 +6691,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,23 +6742,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" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= - -immutable@~3.7.4: - version "3.7.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" - integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= - import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -6174,12 +6797,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 +6840,18 @@ 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== +inline-style-prefixer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz#c153c7e88fd84fef5c602e95a8168b2770671fe7" + integrity sha1-wVPH6I/YT+9cYC6VqBaLJ3BnH+c= 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" + bowser "^1.0.0" + hyphenate-style-name "^1.0.1" -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 +6867,12 @@ inquirer@^7.0.0: strip-ansi "^5.1.0" through "^2.3.6" -internal-ip@^4.2.0: +insert-css@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4" + integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ= + +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 +6880,16 @@ 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: +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +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== @@ -6285,12 +6916,7 @@ ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipaddr.js@^1.9.0: +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -6300,6 +6926,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 +6967,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" @@ -6412,6 +7050,11 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -6430,11 +7073,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,18 +7106,13 @@ 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== dependencies: 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== - is-number-object@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" @@ -6489,29 +7125,39 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-obj@^1.0.0, is-obj@^1.0.1: +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.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-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -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== - dependencies: - is-path-inside "^1.0.0" +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-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-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: - path-is-inside "^1.0.1" + is-path-inside "^2.1.0" + +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.2" is-plain-obj@^1.0.0: version "1.1.0" @@ -6591,11 +7237,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" @@ -6606,6 +7247,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -6685,16 +7331,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 +7421,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 +7534,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 +7649,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 +7679,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 +7713,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" @@ -7072,14 +7730,9 @@ jest@24.9.0: jest-cli "^24.9.0" js-base64@^2.1.8: - version "2.5.1" - 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== + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -7099,6 +7752,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 +7794,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== @@ -7236,6 +7894,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -7258,7 +7923,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 +7931,7 @@ 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== - -killable@^1.0.0: +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 +7963,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 +8014,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 +8078,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: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -7420,6 +8087,15 @@ loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1. emojis-list "^2.0.0" json5 "^1.0.1" +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -7436,6 +8112,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" @@ -7451,11 +8139,6 @@ lodash.clone@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= -lodash.debounce@^4.0.0, lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - lodash.escape@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" @@ -7466,11 +8149,21 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.isequal@^4.5.0: +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.isequal@^4.0.0, 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.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.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -7496,30 +8189,20 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.throttle@^4.0.0: - version "4.1.1" - 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.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@~4.17.12: 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" @@ -7546,10 +8229,12 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" lru-cache@^4.0.1: version "4.1.5" @@ -7574,6 +8259,13 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + 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,7 +8330,7 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memoize-one@^5.0.0: +memoize-one@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== @@ -7675,13 +8367,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 +8428,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 +8450,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 +8464,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 +8511,31 @@ 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= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +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 +8545,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" @@ -7890,15 +8598,22 @@ mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "0.0.8" -moment@2.x, moment@^2.10.2, moment@^2.24.0: +mkdirp@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== + dependencies: + minimist "^1.2.5" + +moment@^2.24.0: version "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" @@ -7940,16 +8655,6 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mutationobserver-shim@^0.3.2: - version "0.3.3" - 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 +8688,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 +8712,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== @@ -8022,12 +8727,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== dependencies: - lower-case "^1.1.1" + lower-case "^2.0.1" + tslib "^1.10.0" node-fetch@^1.0.1: version "1.7.3" @@ -8126,17 +8832,24 @@ 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.50: + version "1.1.50" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" + integrity sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ== 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-releases@^1.1.52: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== + dependencies: + semver "^6.3.0" + +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 +8901,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 +8939,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 +9005,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.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== object-inspect@^1.7.0: version "1.7.0" @@ -8343,7 +9057,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 +9067,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 +9123,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 +9130,23 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== +open@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.2.tgz#fb3681f11f157f2361d2392307548ca1792960e8" + integrity sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ== dependencies: - is-wsl "^1.1.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" -opn@^5.1.0: +open@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" + integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +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 +9160,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 +9260,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 +9281,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 +9323,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,12 +9336,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= +param-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== dependencies: - no-case "^2.2.0" + dot-case "^3.0.3" + tslib "^1.10.0" parent-module@^1.0.0: version "1.0.1" @@ -8680,6 +9410,14 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -8707,12 +9445,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 +9465,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" @@ -8778,11 +9526,21 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +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 +9596,38 @@ 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, 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.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== dependencies: - ts-pnp "^1.1.2" + ts-pnp "^1.1.6" -portfinder@^1.0.9: +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,29 +9642,28 @@ 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" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" - integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== dependencies: - css-unit-converter "^1.1.1" - postcss "^7.0.5" - postcss-selector-parser "^5.0.0-rc.4" - postcss-value-parser "^3.3.1" + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" postcss-color-functional-notation@^2.0.1: version "2.0.1" @@ -9193,16 +9962,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 +9980,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 +10076,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" @@ -9449,15 +10220,15 @@ postcss-selector-not@^4.0.0: postcss "^7.0.2" postcss-selector-parser@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" - integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== dependencies: - dot-prop "^4.1.1" + dot-prop "^5.2.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 +10237,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,15 +10265,15 @@ 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: 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: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" - integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" @@ -9513,19 +10284,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.27, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -9564,7 +10335,7 @@ pretty-format@^24.9.0: ansi-styles "^3.2.0" react-is "^16.8.4" -private@^0.1.6: +private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -9609,12 +10380,12 @@ promise@^8.0.3: asap "~2.0.6" prompts@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" - integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== + version "2.3.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.1.tgz#b63a9ce2809f106fa9ae1277c275b167af46ea05" + integrity sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA== dependencies: kleur "^3.0.3" - sisteransi "^1.0.3" + sisteransi "^1.0.4" prop-types-exact@^1.2.0: version "1.2.0" @@ -9625,7 +10396,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -9664,12 +10435,12 @@ protobufjs@^6.8.6: long "^4.0.0" proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" - ipaddr.js "1.9.0" + ipaddr.js "1.9.1" prr@~1.0.1: version "1.0.1" @@ -9681,7 +10452,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.28: version "1.7.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== @@ -9728,7 +10499,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -9761,6 +10532,15 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +query-string@^6.11.1: + version "6.11.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.1.tgz#ab021f275d463ce1b61e88f0ce6988b3e8fe7c2c" + integrity sha512-1ZvJOUl8ifkkBxu2ByVM/8GijMIPx+cef7u3yroO3Ogm4DOdZcF5dcrWTIlSHe3Pg/mtlt6/eFjObDfJureZZA== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -9776,7 +10556,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -raf@^3.4.0, raf@^3.4.1: +raf@^3.1.0, raf@^3.4.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -9826,20 +10606,20 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc-align@^2.4.0, rc-align@^2.4.1: - version "2.4.5" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.5.tgz#c941a586f59d1017f23a428f0b468663fb7102ab" - integrity sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw== +rc-align@^3.0.0-rc.0: + version "3.0.0-rc.1" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-3.0.0-rc.1.tgz#32d1fac860d12bb85e9b8cafbbdef79f3f537674" + integrity sha512-GbofumhCUb7SxP410j/fbtR2M9Zml+eoZSdaliZh6R3NhfEj5zP4jcO3HG3S9C9KIcXQQtd/cwVHkb9Y0KU7Hg== dependencies: - babel-runtime "^6.26.0" + classnames "2.x" dom-align "^1.7.0" - prop-types "^15.5.8" - rc-util "^4.0.4" + rc-util "^4.12.0" + resize-observer-polyfill "^1.5.1" -rc-animate@2.x, rc-animate@^2.10.1, rc-animate@^2.10.2, rc-animate@^2.3.0, rc-animate@^2.6.0, rc-animate@^2.8.2: - version "2.10.2" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.10.2.tgz#217fdc76ff26cbf425a5caf87cc8a36ba4598456" - integrity sha512-cE/A7piAzoWFSgUD69NmmMraqCeqVBa51UErod8NS3LUEqWfppSVagHfa0qHAlwPVPiIBg3emRONyny3eiH0Dg== +rc-animate@2.x, rc-animate@^2.10.0, rc-animate@^2.10.1, rc-animate@^2.10.2, rc-animate@^2.9.2, rc-animate@~2.10.2: + version "2.10.3" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.10.3.tgz#163d5e29281a4ff82d53ee7918eeeac856b756f9" + integrity sha512-A9qQ5Y8BLlM7EhuCO3fWb/dChndlbWtY/P5QvPqBU7h4r5Q2QsvsbpTGgdYZATRDZbTRnJXXfVk9UtlyS7MBLg== dependencies: babel-runtime "6.x" classnames "^2.2.6" @@ -9849,44 +10629,14 @@ rc-animate@2.x, rc-animate@^2.10.1, rc-animate@^2.10.2, rc-animate@^2.3.0, rc-an rc-util "^4.15.3" react-lifecycles-compat "^3.0.4" -rc-animate@^3.0.0-rc.1: - version "3.0.0-rc.6" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.0.0-rc.6.tgz#04288eefa118e0cae214536c8a903ffaac1bc3fb" - integrity sha512-oBLPpiT6Q4t6YvD/pkLcmofBP1p01TX0Otse8Q4+Mxt8J+VSDflLZGIgf62EwkvRwsQUkLPjZVFBsldnPKLzjg== - dependencies: - babel-runtime "6.x" - classnames "^2.2.5" - component-classes "^1.2.6" - fbjs "^0.8.16" - prop-types "15.x" - raf "^3.4.0" - rc-util "^4.5.0" - react-lifecycles-compat "^3.0.4" - -rc-calendar@~9.15.7: - version "9.15.9" - resolved "https://registry.yarnpkg.com/rc-calendar/-/rc-calendar-9.15.9.tgz#7a3457ee10f27b9972a755fe6415ef352f01a97a" - integrity sha512-XOPzJlXYmLFIcwalXmzxKZrrAMD6dEPLRVoHG3wbBpErqjE8ugnXVjm9yXgtQh3Ho3Imhmt+KO0WGLv5T4WuAA== - dependencies: - babel-runtime "6.x" - classnames "2.x" - moment "2.x" - prop-types "^15.5.8" - rc-trigger "^2.2.0" - rc-util "^4.1.1" - react-lifecycles-compat "^3.0.4" - -rc-cascader@~0.17.4: - version "0.17.5" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-0.17.5.tgz#4fde91d23b7608c420263c38eee9c0687f80f7dc" - integrity sha512-WYMVcxU0+Lj+xLr4YYH0+yXODumvNXDcVEs5i7L1mtpWwYkubPV/zbQpn+jGKFCIW/hOhjkU4J1db8/P/UKE7A== +rc-cascader@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.0.1.tgz#770de1e1fa7bd559aabd4d59e525819b8bc809b7" + integrity sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ== dependencies: array-tree-filter "^2.1.0" - prop-types "^15.5.8" - rc-trigger "^2.2.0" + rc-trigger "^4.0.0" rc-util "^4.0.4" - react-lifecycles-compat "^3.0.4" - shallow-equal "^1.0.0" warning "^4.0.1" rc-checkbox@~2.1.6: @@ -9913,74 +10663,40 @@ rc-collapse@~1.11.3: shallowequal "^1.1.0" rc-dialog@~7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-7.6.0.tgz#6467b75f5b60038129bf2e1b003b264281949c09" - integrity sha512-N48vBPW8I53WycFHI4KXhuTUkB4mx+hixq1a9tcFMLoE7EhkAjbHvs0vGg+Bh/uFg5V00jmZBgQOIEbhcNal/A== + version "7.6.1" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-7.6.1.tgz#11545ccc0b945934fa76079726e0d853e52d705f" + integrity sha512-KUKf+2eZ4YL+lnXMG3hR4ZtIhC9glfH27NtTVz3gcoDIPAf3uUvaXVRNoDCiSi+OGKLyIb/b6EoidFh6nQC5Wg== dependencies: babel-runtime "6.x" rc-animate "2.x" 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" -rc-dropdown@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-2.4.1.tgz#aaef6eb3a5152cdd9982895c2a78d9b5f046cdec" - integrity sha512-p0XYn0wrOpAZ2fUGE6YJ6U8JBNc5ASijznZ6dkojdaEfQJAeZtV9KMEewhxkVlxGSbbdXe10ptjBlTEW9vEwEg== +rc-dropdown@~3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.0.2.tgz#e486b67f5e8e8b9e326426d5a80254621453d66a" + integrity sha512-T3XP4qL6xmkxn8z52YF2SEPoMHPpBiLf0Kty3mjNdRSyKnlu+0F+3bhDHf6gO1msmqrjURaz8sMNAFDcoFHHnw== dependencies: babel-runtime "^6.26.0" classnames "^2.2.6" - prop-types "^15.5.8" - rc-trigger "^2.5.1" - react-lifecycles-compat "^3.0.2" + rc-trigger "^4.0.0" -rc-editor-core@~0.8.3: - version "0.8.10" - resolved "https://registry.yarnpkg.com/rc-editor-core/-/rc-editor-core-0.8.10.tgz#6f215bc5df9c33ffa9f6c5b30ca73a7dabe8ab7c" - integrity sha512-T3aHpeMCIYA1sdAI7ynHHjXy5fqp83uPlD68ovZ0oClTSc3tbHmyCxXlA+Ti4YgmcpCYv7avF6a+TIbAka53kw== +rc-field-form@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.1.1.tgz#73f6a2d414005453bb70240abf39247a35b6ae18" + integrity sha512-nS/4BZ+Ikzk5/AYRZn3iGsJKJMBa/IQbe4bxYd/u1u5GMs630tHnKimxRJ5U/emdC1ZbVG3YahlSRin+1hKikA== dependencies: - babel-runtime "^6.26.0" - classnames "^2.2.5" - draft-js "^0.10.0" - immutable "^3.7.4" - lodash "^4.16.5" - prop-types "^15.5.8" - setimmediate "^1.0.5" - -rc-editor-mention@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/rc-editor-mention/-/rc-editor-mention-1.1.13.tgz#9f1cab1065f86b01523840321790c2ab12ac5e8b" - integrity sha512-3AOmGir91Fi2ogfRRaXLtqlNuIwQpvla7oUnGHS1+3eo7b+fUp5IlKcagqtwUBB5oDNofoySXkLBxzWvSYNp/Q== - dependencies: - babel-runtime "^6.23.0" - classnames "^2.2.5" - dom-scroll-into-view "^1.2.0" - draft-js "~0.10.0" - immutable "~3.7.4" - prop-types "^15.5.8" - rc-animate "^2.3.0" - rc-editor-core "~0.8.3" - -rc-form@^2.4.10: - version "2.4.11" - resolved "https://registry.yarnpkg.com/rc-form/-/rc-form-2.4.11.tgz#61ee3ae579259684ae30f2c48f55f0f23a5d3d08" - integrity sha512-8BL+FNlFLTOY/A5X6tU35GQJLSIpsmqpwn/tFAYQTczXc4dMJ33ggtH248Cum8+LS0jLTsJKG2L4Qp+1CkY+sA== - dependencies: - async-validator "~1.11.3" - babel-runtime "6.x" - create-react-class "^15.5.3" - dom-scroll-into-view "1.x" - hoist-non-react-statics "^3.3.0" - lodash "^4.17.4" - rc-util "^4.15.3" + "@babel/runtime" "^7.8.4" + async-validator "^3.0.3" + rc-util "^4.17.0" warning "^4.0.3" rc-hammerjs@~0.6.0: @@ -9992,10 +10708,10 @@ rc-hammerjs@~0.6.0: hammerjs "^2.0.8" prop-types "^15.5.9" -rc-input-number@~4.5.0: - version "4.5.3" - resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-4.5.3.tgz#ed497c727658e870d3f2a5e5a750d1ee71089f43" - integrity sha512-jBwxX5KDkp2nHOaEoMQ1mZBwWpmmGUuHXF/qralpmN+wDp8rlB6Xvr9d7AHgmzGZhbWIMyLeq6ET6HDDCCjvAA== +rc-input-number@~4.5.4: + version "4.5.6" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-4.5.6.tgz#0d52762b0ac39432256e2c6c5c836102f9797c46" + integrity sha512-AXbL4gtQ1mSQnu6v/JtMv3UbGRCzLvQznmf0a7U/SAtZ8+dCEAqD4JpJhkjv73Wog53eRYhw4l7ApdXflc9ymg== dependencies: babel-runtime "6.x" classnames "^2.2.0" @@ -10003,53 +10719,56 @@ rc-input-number@~4.5.0: rc-util "^4.5.1" rmc-feedback "^2.0.0" -rc-mentions@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-0.4.2.tgz#c18ab701efb9e4b75b3851a0c0d2dd698640e246" - integrity sha512-DTZurQzacLXOfVuiHydGzqkq7cFMHXF18l2jZ9PhWUn2cqvOSY3W4osN0Pq29AOMOBpcxdZCzgc7Lb0r/bgkDw== +rc-mentions@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.0.1.tgz#4a82b5011ccd3f0008f69f3b2e29ab8c0d91b17f" + integrity sha512-EgXFYsNHk44ifwDcbtd3zX7rJc3lHplfVEVEf8oxZeeyyIzFD0GLs0Z0LWHNs6Gm4wTAHvcR0j4Pd5M7fLtBoA== dependencies: - "@ant-design/create-react-context" "^0.2.4" classnames "^2.2.6" - rc-menu "^7.4.22" - rc-trigger "^2.6.2" + rc-menu "^8.0.1" + rc-trigger "^4.0.0" rc-util "^4.6.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== +rc-menu@^8.0.1, rc-menu@~8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.0.2.tgz#ce8dacad615c4cadb47c018be3a0791248b04d14" + integrity sha512-0zae6+LVQf+XTBepSMwwn2Wu+CvRf0eAVh62xl0UcjFBvyA0uGz+dAE0SVR6oUA0q9X+/G14CV1ItZFdwaP6/g== dependencies: classnames "2.x" - dom-scroll-into-view "1.x" mini-store "^2.0.0" - mutationobserver-shim "^0.3.2" rc-animate "^2.10.1" - rc-trigger "^2.3.0" + rc-trigger "^4.0.0" rc-util "^4.13.0" resize-observer-polyfill "^1.5.0" + scroll-into-view-if-needed "^2.2.20" shallowequal "^1.1.0" -rc-notification@~3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-3.3.1.tgz#0baa3e70f8d40ab015ce8fa78c260c490fc7beb4" - integrity sha512-U5+f4BmBVfMSf3OHSLyRagsJ74yKwlrQAtbbL5ijoA0F2C60BufwnOcHG18tVprd7iaIjzZt1TKMmQSYSvgrig== +rc-notification@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.0.0.tgz#ffe59783d6738003972dde8b9658f1acd469cd2c" + integrity sha512-In9FimkJY+JSIq3/eopPfBpQQr2Zugq5i9Aw9vdiNCGCsAsSO9bGq2dPsn8bamOydNrhc3djljGfmxUUMbcZnA== dependencies: - babel-runtime "6.x" classnames "2.x" - prop-types "^15.5.8" rc-animate "2.x" 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== +rc-pagination@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-2.2.0.tgz#8daaab1b6ad664da2ddea842f86687b692eb775d" + integrity sha512-fXempMD/kvHu8tsiW70uPjn1pI4mdD62xFG9drcBh17gj5CbCjazrjpWS615RSauk3b2BBgIcAJzREAMvlAkFQ== dependencies: - babel-runtime "6.x" - classnames "^2.2.6" - prop-types "^15.5.7" - react-lifecycles-compat "^3.0.4" + classnames "^2.2.1" + +rc-picker@~1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-1.4.2.tgz#b7955b7690d913177948ba0fc0640cc307d18874" + integrity sha512-e1XDwpAjvK34I/R/DmcaFgIg/lQBO+J266Pe0+ItbrEivDFmfVKcd1anaIGB4T2Mu9vOyjp+vT+i9ohb9uMEOg== + dependencies: + classnames "^2.2.1" + moment "^2.24.0" + rc-trigger "^4.0.0" + rc-util "^4.17.0" + shallowequal "^1.1.0" rc-progress@~2.5.0: version "2.5.2" @@ -10059,17 +10778,17 @@ rc-progress@~2.5.0: babel-runtime "6.x" 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== +rc-rate@~2.5.1: + 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" rc-util "^4.3.0" react-lifecycles-compat "^3.0.4" -rc-resize-observer@^0.1.0: +rc-resize-observer@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.1.3.tgz#097191f9c3ab186ed907b553ba6ef565df11c249" integrity sha512-uzOQEwx83xdQSFOkOAM7x7GHIQKYnrDV4dWxtCxyG1BS1pkfJ4EvDeMfsvAJHSYkQXVBu+sgRHGbRtLG3qiuUg== @@ -10078,35 +10797,36 @@ rc-resize-observer@^0.1.0: rc-util "^4.13.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== +rc-resize-observer@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.2.1.tgz#4610acb8a0f2a84b5e8d45664964ac32b5d3df72" + integrity sha512-GENTRkL3lq05ilrjTxPpHUPrKTC9D7XqUGesSXgi/GyO4j/jKIjLPn7zuZOcJ5QmN5QGRe24IaVWPZHQPE6vLw== dependencies: - babel-runtime "^6.23.0" - classnames "2.x" - component-classes "1.x" - dom-scroll-into-view "1.x" - prop-types "^15.5.8" - raf "^3.4.0" - rc-animate "2.x" - rc-menu "^7.3.0" - rc-trigger "^2.5.4" - rc-util "^4.0.4" - react-lifecycles-compat "^3.0.2" - warning "^4.0.2" + classnames "^2.2.1" + rc-util "^4.14.0" + resize-observer-polyfill "^1.5.1" -rc-slider@~8.7.1: - version "8.7.1" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-8.7.1.tgz#9ed07362dc93489a38e654b21b8122ad70fd3c42" - integrity sha512-WMT5mRFUEcrLWwTxsyS8jYmlaMsTVCZIGENLikHsNv+tE8ThU2lCoPfi/xFNUfJFNFSBFP3MwPez9ZsJmNp13g== +rc-select@^10.1.0, rc-select@~10.1.0: + version "10.1.7" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-10.1.7.tgz#56b867bec059d904adf36576b7cb592386b19a57" + integrity sha512-ayFG4YtjJTrH5hv9ezqeyaUzDtzp/PcAberf/V6S5ocf6J4kdsIDjVDhTcJME1VTTtBA8XCJLhl/YriQFPY0Tw== + dependencies: + classnames "2.x" + rc-animate "^2.10.0" + rc-trigger "^4.0.0" + rc-util "^4.20.0" + rc-virtual-list "^1.1.0" + warning "^4.0.3" + +rc-slider@~9.2.3: + version "9.2.4" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.2.4.tgz#92e2b58c53def9921ae0fc2822727ab5785b9ed0" + integrity sha512-wSr7vz+WtzzGqsGU2rTQ4mmLz9fkuIDMPYMYm8ygYFvxQ2Rh4uRhOWHYI0R8krNK5k1bGycckYxmQqUIvLAh3w== dependencies: babel-runtime "6.x" classnames "^2.2.5" - prop-types "^15.5.4" - rc-tooltip "^3.7.0" + rc-tooltip "^4.0.0" rc-util "^4.0.4" - react-lifecycles-compat "^3.0.4" shallowequal "^1.1.0" warning "^4.0.3" @@ -10129,135 +10849,113 @@ rc-switch@~1.9.0: prop-types "^15.5.6" 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== +rc-table@~7.3.0: + version "7.3.10" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.3.10.tgz#4d8d6d6f21b9e7fd68249c56f3ecc54dec793b22" + integrity sha512-pvjvgyPJTDCtpNqjoVSvfhfKX/cHcVKRMSdNKTN/uv2chsMxZ5287cyx/0vIsyh45Vz0h3b8AgwpZTqWzsKaBg== dependencies: classnames "^2.2.5" component-classes "^1.2.6" lodash "^4.17.5" mini-store "^2.0.0" prop-types "^15.5.8" - rc-util "^4.13.0" + raf "^3.4.1" + rc-resize-observer "^0.1.2" + rc-util "^4.20.1" react-lifecycles-compat "^3.0.2" - shallowequal "^1.0.2" + shallowequal "^1.1.0" -rc-tabs@~9.7.0: - version "9.7.0" - resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-9.7.0.tgz#ae09695bef5963d6e64e7bc10521c76dfdd8448b" - integrity sha512-kvmgp8/MfLzFZ06hWHignqomFQ5nF7BqKr5O1FfhE4VKsGrep52YSF/1MvS5oe0NPcI9XGNS2p751C5v6cYDpQ== +rc-tabs@~10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-10.1.1.tgz#847d8c2038842a3cb5f2e74935d0e38b85fce61e" + integrity sha512-dOFeaYil3d6zV3ZtGZWfRf7zwyqUQ48cl67/Y/03SsBWEdYgfZzlgjfHqmUT+V7L7CvhQ5lIQyYpj4EthkgKCg== dependencies: - "@ant-design/create-react-context" "^0.2.4" - babel-runtime "6.x" classnames "2.x" lodash "^4.17.5" - prop-types "15.x" - raf "^3.4.1" rc-hammerjs "~0.6.0" - rc-util "^4.0.4" - react-lifecycles-compat "^3.0.4" resize-observer-polyfill "^1.5.1" warning "^4.0.3" -rc-time-picker@~3.7.1: - version "3.7.3" - resolved "https://registry.yarnpkg.com/rc-time-picker/-/rc-time-picker-3.7.3.tgz#65a8de904093250ae9c82b02a4905e0f995e23e2" - integrity sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg== +rc-tooltip@^4.0.0, rc-tooltip@~4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-4.0.3.tgz#728b760863643ec2e85827a2e7fb28d961b3b759" + integrity sha512-HNyBh9/fPdds0DXja8JQX0XTIHmZapB3lLzbdn74aNSxXG1KUkt+GK4X1aOTRY5X9mqm4uUKdeFrn7j273H8gw== + dependencies: + rc-trigger "^4.0.0" + +rc-tree-select@~3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-3.1.2.tgz#d71d505071df80be01abd0dfcafd4c2cbd9cde24" + integrity sha512-6i+uCD7FnO7GEuAtE73GW23WntseFvfjhm8nHQR8rbb3pdvpUs/mz0ESgjVavdr4fvjXozI/g0PkjcRa5bgtLg== + dependencies: + classnames "2.x" + rc-select "^10.1.0" + rc-tree "^3.1.0" + rc-util "^4.17.0" + +rc-tree@^3.1.0, rc-tree@~3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-3.1.2.tgz#14aae3167a6189ff401082d8a17adb8d8df00843" + integrity sha512-iK5q8Fmr8iR1Q/qq6flJd2SeCZc/D7aZryFY2yoqEAE01cO3NmY3RIN20IXF0rET/7SuFRW7pq+ClU1VLLdPOQ== dependencies: classnames "2.x" - moment "2.x" prop-types "^15.5.8" + rc-animate "^2.9.2" + rc-util "^4.11.0" + rc-virtual-list "^1.1.0" + react-lifecycles-compat "^3.0.4" + +rc-trigger@^4.0.0, rc-trigger@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.0.2.tgz#42fe7bdb6a5b34035e20fa9ebfad69ec948b56be" + integrity sha512-to5S1NhK10rWHIgQpoQdwIhuDc2Ok4R4/dh5NLrDt6C+gqkohsdBCYiPk97Z+NwGhRU8N+dbf251bivX8DkzQg== + dependencies: + classnames "^2.2.6" + prop-types "15.x" raf "^3.4.1" - rc-trigger "^2.2.0" - react-lifecycles-compat "^3.0.4" + rc-align "^3.0.0-rc.0" + rc-animate "^2.10.2" + rc-util "^4.20.0" -rc-tooltip@^3.7.0, rc-tooltip@~3.7.3: - version "3.7.3" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-3.7.3.tgz#280aec6afcaa44e8dff0480fbaff9e87fc00aecc" - integrity sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww== - dependencies: - babel-runtime "6.x" - prop-types "^15.5.8" - rc-trigger "^2.2.2" - -rc-tree-select@~2.9.1: - version "2.9.4" - resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-2.9.4.tgz#6aa794e1f0e65c66c406aa0a2a0e74fd0a557b09" - integrity sha512-0HQkXAN4XbfBW20CZYh3G+V+VMrjX42XRtDCpyv6PDUm5vikC0Ob682ZBCVS97Ww2a5Hf6Ajmu0ahWEdIEpwhg== - dependencies: - classnames "^2.2.1" - dom-scroll-into-view "^1.2.1" - prop-types "^15.5.8" - raf "^3.4.0" - rc-animate "^2.8.2" - rc-tree "~2.1.0" - rc-trigger "^3.0.0" - rc-util "^4.5.0" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.0.2" - warning "^4.0.1" - -rc-tree@~2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-2.1.3.tgz#5214ab1b21a1848eb9a2ddcb919e3bc46d6d390b" - integrity sha512-COvV65spQ6omrHBUhHRKqKNL5+ddXjlS+qWZchaL9FFuQNvjM5pjp9RnmMWK4fJJ5kBhhpLneh6wh9Vh3kSMXQ== - dependencies: - "@ant-design/create-react-context" "^0.2.4" - classnames "2.x" - prop-types "^15.5.8" - rc-animate "^2.6.0" - rc-util "^4.5.1" - react-lifecycles-compat "^3.0.4" - warning "^4.0.3" - -rc-trigger@^2.2.0, rc-trigger@^2.2.2, rc-trigger@^2.3.0, rc-trigger@^2.5.1, rc-trigger@^2.5.4, rc-trigger@^2.6.2: - version "2.6.5" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.6.5.tgz#140a857cf28bd0fa01b9aecb1e26a50a700e9885" - integrity sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw== - dependencies: - babel-runtime "6.x" - classnames "^2.2.6" - prop-types "15.x" - rc-align "^2.4.0" - rc-animate "2.x" - rc-util "^4.4.0" - react-lifecycles-compat "^3.0.4" - -rc-trigger@^3.0.0: +rc-upload@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-3.0.0.tgz#f6d9b1da8a26b2b2d1d912a06876c1a486f5980f" - integrity sha512-hQxbbJpo23E2QnYczfq3Ec5J5tVl2mUDhkqxrEsQAqk16HfADQg+iKNWzEYXyERSncdxfnzYuaBgy764mNRzTA== - dependencies: - babel-runtime "6.x" - classnames "^2.2.6" - prop-types "15.x" - raf "^3.4.0" - rc-align "^2.4.1" - rc-animate "^3.0.0-rc.1" - rc-util "^4.15.7" - -rc-upload@~2.9.1: - version "2.9.4" - resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-2.9.4.tgz#8e34a73a468d7907fe31982c38100e4593857d32" - integrity sha512-WXt0HGxXyzLrPV6iec/96Rbl/6dyrAW8pKuY6wwD7yFYwfU5bjgKjv7vC8KNMJ6wzitFrZjnoiogNL3dF9dj3Q== + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.0.0.tgz#1365a77405b2df82749e55bcc475ee0de9424370" + integrity sha512-GTmLJ2Habrgon26xwtF8nx1FBxu8KUjRC6QW/7a+NVZ6qXIo+s7HnjqwseuG42kz6xGCoSLNpHgIoHW55EwpxA== dependencies: babel-runtime "6.x" classnames "^2.2.5" - prop-types "^15.5.7" - 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== +rc-util@^4.0.4, rc-util@^4.11.0, rc-util@^4.12.0, rc-util@^4.13.0, rc-util@^4.15.3, rc-util@^4.16.1, rc-util@^4.17.0, rc-util@^4.20.0, rc-util@^4.20.1, rc-util@^4.3.0, rc-util@^4.5.1, rc-util@^4.6.0, rc-util@^4.8.0, rc-util@^4.9.0: + version "4.20.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.1.tgz#a5976eabfc3198ed9b8e79ffb8c53c231db36e77" + integrity sha512-EGlDg9KPN0POzmAR2hk9ZyFc3DmJIrXwlC8NoDxJguX2LTINnVqwadLIVauLfYgYISMiFYFrSHiFW+cqUhZ5dA== dependencies: add-dom-event-listener "^1.1.0" babel-runtime "6.x" prop-types "^15.5.10" + react-is "^16.12.0" react-lifecycles-compat "^3.0.4" shallowequal "^1.1.0" +rc-util@^4.14.0: + version "4.20.3" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.3.tgz#c4d4ee6171cf685dc75572752a764310325888d3" + integrity sha512-NBBc9Ad5yGAVTp4jV+pD7tXQGqHxGM2onPSZFyVoJ5fuvRF+ZgzSjZ6RXLPE0pVVISRJ07h+APgLJPBcAeZQlg== + dependencies: + add-dom-event-listener "^1.1.0" + prop-types "^15.5.10" + react-is "^16.12.0" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + +rc-virtual-list@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-1.1.1.tgz#824a2c210729ca738e041b8da9e3347cc6650e40" + integrity sha512-1l2DFqvGMnCm6N5+zKaRnF294r3GKGvejdLIivdqbgMKwX+c1H+SftymdSKY92i6mDe7F0xg/JS6Q6Anu5/1pw== + dependencies: + classnames "^2.2.6" + rc-util "^4.8.0" + rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -10279,88 +10977,132 @@ 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: - lodash "^4.17.4" - prop-types "^15.5.8" + jsbarcode "^3.8.0" + prop-types "^15.6.2" -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-big-calendar@^0.24.1: + version "0.24.1" + resolved "https://registry.yarnpkg.com/react-big-calendar/-/react-big-calendar-0.24.1.tgz#96cde4c9cadfd63c80035f051e544094a235cf30" + integrity sha512-Jq6t7vGxCbcUHOUsjCZ5H90uuIoZ6eqaGgSO6uhj26nXLybXdNI09SU5dddsb2VhV57UUTPnoTS5lFUQjGBqpg== dependencies: - "@babel/code-frame" "7.5.5" + "@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 "^5.1.1" + prop-types "^15.6.2" + react-overlays "^2.0.0-0" + uncontrollable "^7.0.0" + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" address "1.1.2" - browserslist "4.7.0" + browserslist "4.10.0" chalk "2.4.2" - cross-spawn "6.0.5" + 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 "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" 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: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" - integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== +react-dom@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" + integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.18.0" + scheduler "^0.19.1" -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-draggable@^4.0.0, react-draggable@^4.0.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.2.0.tgz#40cc5209082ca7d613104bf6daf31372cc0e1114" + integrity sha512-5wFq//gEoeTYprnd4ze8GrFc+Rbnx+9RkOMR3vk4EbWxj02U6L6T3yrlKeiw4X5CtjD2ma2+b3WujghcXNRzkw== + dependencies: + classnames "^2.2.5" + prop-types "^15.6.0" -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-error-overlay@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" + integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== + +react-ga@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/react-ga/-/react-ga-2.7.0.tgz#24328f157f31e8cffbf4de74a3396536679d8d7c" + integrity sha512-AjC7UOZMvygrWTc2hKxTDvlMXEtbmA0IgJjmkhgmQQ3RkXrWR11xEagLGFGaNyaPnmg24oaIiaNPnEoftUhfXA== + +react-grid-gallery@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/react-grid-gallery/-/react-grid-gallery-0.5.5.tgz#1b3f3c23a190834e587ab613c96d53ec3af4f0a2" + integrity sha512-DkKg2/Am+VZPDG39fazelTcsZSQrfM/YllnIcWToyUEfOZcrzHxUoqCziCkuTPmCuMbHnrjidBFuDbAFgvSnvQ== + dependencies: + prop-types "^15.5.8" + react-images "^0.5.16" + +react-grid-layout@^0.18.3: + version "0.18.3" + resolved "https://registry.yarnpkg.com/react-grid-layout/-/react-grid-layout-0.18.3.tgz#4f9540199f35211077eae0aa5bc83096a672c39c" + integrity sha512-lHkrk941Tk5nTwZPa9uj6ttHBT0VehSHwEhWbINBJKvM1GRaFNOefvjcuxSyuCI5JWjVUP+Qm3ARt2470AlxMA== + dependencies: + classnames "2.x" + lodash.isequal "^4.0.0" + prop-types "^15.0.0" + react-draggable "^4.0.0" + react-resizable "^1.9.0" + +react-i18next@^11.3.4: + version "11.3.4" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.3.4.tgz#355df5fe5133e5e30302d166f529678100ffc968" + integrity sha512-IRZMD7PAM3C+fJNzRbyLNi1ZD0kc3Z3obBspJjEl+9H+ME41PhVor3BpdIqv/Rm7lUoGhMjmpu42J45ooJ61KA== 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" @@ -10369,61 +11111,98 @@ react-image-file-resizer@^0.2.1: resolved "https://registry.yarnpkg.com/react-image-file-resizer/-/react-image-file-resizer-0.2.1.tgz#ee081bd41798ff960eea1a56b1a86ba317fecf11" integrity sha512-uvhNj2NKMUraVKIrsmPNZgWn34b7fjEcuWAyMXUrVb06gedNtOalOBxVwXYocd4KnZRFv2/ilmAE4KEzIkj4aA== -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" - integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== - -react-lazy-load@^3.0.13: - version "3.0.13" - resolved "https://registry.yarnpkg.com/react-lazy-load/-/react-lazy-load-3.0.13.tgz#3b0a92d336d43d3f0d73cbe6f35b17050b08b824" - integrity sha1-OwqS0zbUPT8Nc8vm81sXBQsIuCQ= +react-images@^0.5.16: + version "0.5.19" + resolved "https://registry.yarnpkg.com/react-images/-/react-images-0.5.19.tgz#9339570029e065f9f28a19f03fdb5d9d5aa109d3" + integrity sha512-B3d4W1uFJj+m17K8S65iAyEJShKGBjPk7n7N1YsPiAydEm8mIq9a6CoeQFMY1d7N2QMs6FBCjT9vELyc5jP5JA== dependencies: - eventlistener "0.0.1" - lodash.debounce "^4.0.0" - lodash.throttle "^4.0.0" - prop-types "^15.5.8" + aphrodite "^0.5.0" + prop-types "^15.6.0" + react-scrolllock "^2.0.1" + react-transition-group "2" -react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.6.0, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: + version "16.13.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" + integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== + +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== +react-measure@^2.2.4: + version "2.3.0" + resolved "https://registry.yarnpkg.com/react-measure/-/react-measure-2.3.0.tgz#75835d39abec9ae13517f35a819c160997a7a44e" + integrity sha512-dwAvmiOeblj5Dvpnk8Jm7Q8B4THF/f1l1HtKVi0XDecsG6LXwGvzV5R1H32kq3TW6RW64OAf5aoQxpIgLa4z8A== + dependencies: + "@babel/runtime" "^7.2.0" + get-node-dimensions "^1.2.1" + prop-types "^15.6.2" + resize-observer-polyfill "^1.5.0" + react-moment@^0.9.7: version "0.9.7" resolved "https://registry.yarnpkg.com/react-moment/-/react-moment-0.9.7.tgz#ca570466595b1aa4f7619e62da18b3bb2de8b6f3" integrity sha512-ifzUrUGF6KRsUN2pRG5k56kO0mJBr8kRkWb0wNvtFIsBIxOuPxhUpL1YlXwpbQCbHq23hUu6A0VEk64HsFxk9g== -react-number-format@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-number-format/-/react-number-format-4.3.1.tgz#eccfc851d88d74c894ba463620ccb467defbdefb" - integrity sha512-ze6Lp7SGM71Jr0uZhUaN6grthv08NKTfJezS26zAWZq63ubmJ++FOX7ueGSK27EvpT7/e3ce9L3jlqr1YMFS7Q== +react-motion@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316" + integrity sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ== + dependencies: + performance-now "^0.2.0" + prop-types "^15.5.8" + raf "^3.1.0" + +react-number-format@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-number-format/-/react-number-format-4.4.1.tgz#d5614dd25edfc21ed48b97356213440081437a94" + integrity sha512-ZGFMXZ0U7DcmQ3bSZY3FULOA1mfqreT9NIMYZNoa/ouiSgiTQiYA95Uj2KN8ge6BRr+ghA5vraozqWqsHZQw3Q== 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-prop-toggle@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/react-prop-toggle/-/react-prop-toggle-1.0.2.tgz#8b0b7e74653606b1427cfcf6c4eaa9198330568e" + integrity sha512-JmerjAXs7qJ959+d0Ygt7Cb2+4fG+n3I2VXO6JO0AcAY1vkRN/JpZKAN67CMXY889xEJcfylmMPhzvf6nWO68Q== + +react-redux@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" + integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== 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-resizable@^1.9.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.10.1.tgz#f0c2cf1d83b3470b87676ce6d6b02bbe3f4d8cd4" + integrity sha512-Jd/bKOKx6+19NwC4/aMLRu/J9/krfxlDnElP41Oc+oLiUWs/zwV1S9yBfBZRnqAwQb6vQ/HRSk3bsSWGSgVbpw== + dependencies: + prop-types "15.x" + react-draggable "^4.0.3" react-router-dom@^5.1.2: version "5.1.2" @@ -10454,111 +11233,98 @@ 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.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.1.tgz#f551298b5c71985cc491b9acf3c8e8c0ae3ada0a" + integrity sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ== 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-eslint "10.0.3" + "@babel/core" "7.9.0" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" + babel-eslint "10.1.0" 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-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.2" + 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.1" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.1" eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.14.3" + eslint-plugin-react "7.19.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.4" 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.2.1" + 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 "0.23.1" + terser-webpack-plugin "2.3.5" + ts-pnp "1.1.6" + url-loader "2.3.0" + webpack "4.42.0" + webpack-dev-server "3.10.3" + 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" - resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.25.2.tgz#56331b67d47d8bcfe2dceb6acab1c8fd5bd1f6bc" - integrity sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw== +react-scrolllock@^2.0.1: + version "2.0.7" + resolved "https://registry.yarnpkg.com/react-scrolllock/-/react-scrolllock-2.0.7.tgz#3b879e1fe308fc900ab76e226e9be594c41226fd" + integrity sha512-Gzpu8+ulxdYcybAgJOFTXc70xs7SBZDQbZNpKzchZUgLCJKjz6lrgESx6LHHZgfELx1xYL4yHu3kYQGQPFas/g== dependencies: - classnames "^2.2.5" - enquire.js "^2.1.6" - json2mq "^0.2.0" - lodash.debounce "^4.0.8" - resize-observer-polyfill "^1.5.0" + exenv "^1.2.2" + react-prop-toggle "^1.0.2" react-test-renderer@^16.0.0-0: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.12.0.tgz#11417ffda579306d4e841a794d32140f3da1b43f" - integrity sha512-Vj/teSqt2oayaWxkbhQ6gKis+t5JrknXfPVo+aIJ8QwYAqMPH77uptOdrlphyxl8eQI/rtkOYg86i/UWkpFu0w== + version "16.13.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.0.tgz#39ba3bf72cedc8210c3f81983f0bb061b14a3014" + integrity sha512-NQ2S9gdMUa7rgPGpKGyMcwl1d6D9MCF0lftdI3kts6kkiX+qvpC955jNjAZXlIDTjnN9jwFI8A8XhRh/9v0spA== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" react-is "^16.8.6" - scheduler "^0.18.0" + scheduler "^0.19.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== +react-transition-group@2: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" + integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== 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" + dom-helpers "^3.4.0" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.4" -"react@>= 16.3", 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== +react@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -10616,9 +11382,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 +11395,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.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -10646,6 +11412,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" @@ -10653,6 +11426,18 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" +recompose@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" + integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== + dependencies: + "@babel/runtime" "^7.0.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" @@ -10668,22 +11453,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 +11460,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== @@ -10711,6 +11492,13 @@ regenerate-unicode-properties@^8.1.0: dependencies: regenerate "^1.4.0" +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -10721,7 +11509,12 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-runtime@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== @@ -10733,6 +11526,14 @@ regenerator-transform@^0.14.0: dependencies: private "^0.1.6" +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -10746,7 +11547,7 @@ regex-parser@2.2.10: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== -regexp.prototype.flags@^1.2.0: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -10776,19 +11577,38 @@ regexpu-core@^4.6.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" -regjsgen@^0.5.0: +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.0, regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== regjsparser@^0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" - integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== + version "0.6.3" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.3.tgz#74192c5805d35e9f5ebe3c1fb5b40d40a8a38460" + integrity sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA== dependencies: jsesc "~0.5.0" -relateurl@0.2.x: +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +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= @@ -10843,9 +11663,9 @@ request-promise-native@^1.0.5: tough-cookie "^2.3.3" request@^2.87.0, request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + 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" @@ -10854,7 +11674,7 @@ request@^2.87.0, request@^2.88.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -10864,7 +11684,7 @@ request@^2.87.0, request@^2.88.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" @@ -10888,6 +11708,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 +11740,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 +11766,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.15.1, 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 +11793,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,14 +11821,14 @@ 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== dependencies: glob "^7.1.3" -rimraf@2.6.3: +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -11043,9 +11865,9 @@ rsvp@^4.8.4: integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== dependencies: is-promise "^2.1.0" @@ -11056,7 +11878,7 @@ 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== @@ -11100,6 +11922,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 +11937,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" @@ -11133,10 +11960,18 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" -scheduler@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" - integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== +scheduler@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.0.tgz#a715d56302de403df742f4a9be11975b32f5698d" + integrity sha512-xowbVaTPe9r7y7RUejcK73/j8tt2jfiyTednOvHbA8JoClvMYCp+r8QegLwK/n8zWQAtZb1fFnER4XLBZXrCxA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -11150,14 +11985,29 @@ 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" +schema-utils@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +scroll-into-view-if-needed@^2.2.20: + version "2.2.24" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.24.tgz#12bca532990769bd509115a49edcfa755e92a0ea" + integrity sha512-vsC6SzyIZUyJG8o4nbUDCiIwsPdH6W/FVmjT2avR2hp/yzS53JjGmg/bKD20TkoNajbu5dAQN4xR7yes4qhwtQ== + dependencies: + compute-scroll-into-view "^1.0.13" + 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 +12021,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 +12067,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= @@ -11305,11 +12150,6 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shallow-equal@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" - integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== - shallowequal@^1.0.2, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -11322,11 +12162,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" @@ -11337,6 +12189,14 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -11349,7 +12209,7 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.3: +sisteransi@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== @@ -11378,10 +12238,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 +12268,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" @@ -11456,6 +12300,24 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-explorer@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.4.2.tgz#fb23f86c3112eacde5683f24efaf4ddc9f677985" + integrity sha512-3ECQLffCFV8QgrTqcmddLkWL4/aQs6ljYfgWCLselo5QtizOfOeUCKnS4rFn7MIrdeZLM6TZrseOtsrWZhWKoQ== + dependencies: + btoa "^1.2.1" + chalk "^3.0.0" + convert-source-map "^1.7.0" + ejs "^3.0.2" + escape-html "^1.0.3" + glob "^7.1.6" + gzip-size "^5.1.1" + lodash "^4.17.15" + open "^7.0.3" + source-map "^0.7.3" + temp "^0.9.1" + yargs "^15.3.1" + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -11497,6 +12359,11 @@ source-map@^0.5.0, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -11535,7 +12402,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== @@ -11546,6 +12413,11 @@ spdy@^4.0.0: select-hose "^2.0.0" spdy-transport "^3.0.0" +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -11580,6 +12452,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" @@ -11652,6 +12532,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + string-convert@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" @@ -11682,7 +12567,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== @@ -11699,7 +12584,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -11708,6 +12593,18 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + string.prototype.trim@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" @@ -11756,12 +12653,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 +12674,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 +12723,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@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.0.1" + loader-utils "^1.1.0" + schema-utils "^1.0.0" -"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 +12756,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 +12786,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 +12837,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 +12864,29 @@ 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== +temp@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697" + integrity sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA== 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" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + rimraf "~2.6.2" -terser-webpack-plugin@^1.4.1: +terser-webpack-plugin@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" + integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== + dependencies: + 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.4.3" + webpack-sources "^1.4.3" + +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 +12901,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.4.3, terser@^4.6.3: + version "4.6.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.4.tgz#40a0b37afbe5b57e494536815efa68326840fc00" + integrity sha512-5fqgBPLgVHZ/fVvqRhhUp9YUiGXhFJ9ZkrZWD9vQtFBR4QIGTnbsb+/kKqSqfgp3WnBwGWAFnedGTtmX1YTn0w== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -12063,9 +12961,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 +12992,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 +13012,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 +13029,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 +13039,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== @@ -12161,14 +13047,6 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -12195,20 +13073,15 @@ 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.6, ts-pnp@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== -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== - -tslib@1.10.0, tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== +tslib@1.11.1, tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== tsutils@^3.17.1: version "3.17.1" @@ -12269,26 +13142,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" @@ -12308,6 +13194,11 @@ unicode-match-property-value-ecmascript@^1.1.0: resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" @@ -12375,11 +13266,6 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -12392,14 +13278,14 @@ 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: version "1.4.7" @@ -12427,7 +13313,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 +13321,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 +13356,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 +13384,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" @@ -12534,7 +13430,7 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -warning@4.x, warning@^4.0.1, warning@^4.0.2, warning@^4.0.3, warning@~4.0.3: +warning@^4.0.1, warning@^4.0.3, warning@~4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== @@ -12562,7 +13458,7 @@ webidl-conversions@^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 +13469,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.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== 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 +13516,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 +13534,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.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -12660,7 +13559,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 +13634,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 +13658,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" @@ -12923,6 +13824,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -12951,7 +13861,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== @@ -12973,10 +13883,12 @@ 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== +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" @@ -13003,6 +13915,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 +13927,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" @@ -13025,6 +13943,14 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^18.1.1: + version "18.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" + integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -13032,13 +13958,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 +13974,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" @@ -13066,6 +13992,23 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + yargs@^3.10.0: version "3.32.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" 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/hasura/migrations/1583197013415_alter_table_public_bodyshops_add_column_md_responsibility_centers/down.yaml b/hasura/migrations/1583197013415_alter_table_public_bodyshops_add_column_md_responsibility_centers/down.yaml new file mode 100644 index 000000000..0a8816270 --- /dev/null +++ b/hasura/migrations/1583197013415_alter_table_public_bodyshops_add_column_md_responsibility_centers/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "md_responsibility_centers"; + type: run_sql diff --git a/hasura/migrations/1583197013415_alter_table_public_bodyshops_add_column_md_responsibility_centers/up.yaml b/hasura/migrations/1583197013415_alter_table_public_bodyshops_add_column_md_responsibility_centers/up.yaml new file mode 100644 index 000000000..b31a64458 --- /dev/null +++ b/hasura/migrations/1583197013415_alter_table_public_bodyshops_add_column_md_responsibility_centers/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "md_responsibility_centers" jsonb + NULL; + type: run_sql diff --git a/hasura/migrations/1583197023778_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1583197023778_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..f9e53c75e --- /dev/null +++ b/hasura/migrations/1583197023778_update_permission_user_public_table_bodyshops/down.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/1583197023778_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1583197023778_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..c3ec5c35a --- /dev/null +++ b/hasura/migrations/1583197023778_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,42 @@ +- 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 + - md_responsibility_centers + 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/1583197028783_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1583197028783_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..455dce879 --- /dev/null +++ b/hasura/migrations/1583197028783_update_permission_user_public_table_bodyshops/down.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/1583197028783_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1583197028783_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..703a9ce7b --- /dev/null +++ b/hasura/migrations/1583197028783_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,44 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - md_order_statuses + - md_responsibility_centers + - 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/1583258675482_alter_table_public_invoicelines_alter_column_estlindid/down.yaml b/hasura/migrations/1583258675482_alter_table_public_invoicelines_alter_column_estlindid/down.yaml new file mode 100644 index 000000000..f7a944ae4 --- /dev/null +++ b/hasura/migrations/1583258675482_alter_table_public_invoicelines_alter_column_estlindid/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."invoicelines" rename column "joblineid" to "estlindid"; + type: run_sql diff --git a/hasura/migrations/1583258675482_alter_table_public_invoicelines_alter_column_estlindid/up.yaml b/hasura/migrations/1583258675482_alter_table_public_invoicelines_alter_column_estlindid/up.yaml new file mode 100644 index 000000000..a1c922680 --- /dev/null +++ b/hasura/migrations/1583258675482_alter_table_public_invoicelines_alter_column_estlindid/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."invoicelines" rename column "estlindid" to "joblineid"; + type: run_sql diff --git a/hasura/migrations/1583261795848_alter_table_public_invoices_drop_constraint_invoices_jobid_key/down.yaml b/hasura/migrations/1583261795848_alter_table_public_invoices_drop_constraint_invoices_jobid_key/down.yaml new file mode 100644 index 000000000..72b2ace18 --- /dev/null +++ b/hasura/migrations/1583261795848_alter_table_public_invoices_drop_constraint_invoices_jobid_key/down.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."invoices" add constraint "invoices_jobid_key" unique + ("jobid"); + type: run_sql diff --git a/hasura/migrations/1583261795848_alter_table_public_invoices_drop_constraint_invoices_jobid_key/up.yaml b/hasura/migrations/1583261795848_alter_table_public_invoices_drop_constraint_invoices_jobid_key/up.yaml new file mode 100644 index 000000000..7cde85cbe --- /dev/null +++ b/hasura/migrations/1583261795848_alter_table_public_invoices_drop_constraint_invoices_jobid_key/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."invoices" drop constraint "invoices_jobid_key"; + type: run_sql diff --git a/hasura/migrations/1583795241718_run_sql_migration/down.yaml b/hasura/migrations/1583795241718_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1583795241718_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1583795241718_run_sql_migration/up.yaml b/hasura/migrations/1583795241718_run_sql_migration/up.yaml new file mode 100644 index 000000000..f8bdf2c76 --- /dev/null +++ b/hasura/migrations/1583795241718_run_sql_migration/up.yaml @@ -0,0 +1,15 @@ +- args: + cascade: false + read_only: false + sql: "CREATE TABLE audit_trail (\r\n \r\n id serial PRIMARY + KEY, \r\n \r\n created timestamp DEFAULT now(),\r\n + \r\n schemaname text,\r\n \r\n tabname text,\r\n + \r\n operation text,\r\n recordid uuid,\r\n \r\n + \ -- who text DEFAULT current_user,\r\n \r\n new_val + \ json,\r\n \r\n old_val json,\r\n + \ useremail text,\r\n bodyshopid uuid\r\n \r\n);" + type: run_sql +- args: + name: audit_trail + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1583795259202_set_fk_public_audit_trail_useremail/down.yaml b/hasura/migrations/1583795259202_set_fk_public_audit_trail_useremail/down.yaml new file mode 100644 index 000000000..5126a58aa --- /dev/null +++ b/hasura/migrations/1583795259202_set_fk_public_audit_trail_useremail/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."audit_trail" drop constraint "audit_trail_useremail_fkey"; + type: run_sql diff --git a/hasura/migrations/1583795259202_set_fk_public_audit_trail_useremail/up.yaml b/hasura/migrations/1583795259202_set_fk_public_audit_trail_useremail/up.yaml new file mode 100644 index 000000000..f9377b0d6 --- /dev/null +++ b/hasura/migrations/1583795259202_set_fk_public_audit_trail_useremail/up.yaml @@ -0,0 +1,10 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."audit_trail" + add constraint "audit_trail_useremail_fkey" + foreign key ("useremail") + references "public"."users" + ("email") on update restrict on delete restrict; + type: run_sql diff --git a/hasura/migrations/1583795265403_set_fk_public_audit_trail_useremail/down.yaml b/hasura/migrations/1583795265403_set_fk_public_audit_trail_useremail/down.yaml new file mode 100644 index 000000000..7190d6942 --- /dev/null +++ b/hasura/migrations/1583795265403_set_fk_public_audit_trail_useremail/down.yaml @@ -0,0 +1,12 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."audit_trail" drop constraint "audit_trail_useremail_fkey", + add constraint "audit_trail_useremail_fkey" + foreign key ("useremail") + references "public"."users" + ("email") + on update restrict + on delete restrict; + type: run_sql diff --git a/hasura/migrations/1583795265403_set_fk_public_audit_trail_useremail/up.yaml b/hasura/migrations/1583795265403_set_fk_public_audit_trail_useremail/up.yaml new file mode 100644 index 000000000..77cd23149 --- /dev/null +++ b/hasura/migrations/1583795265403_set_fk_public_audit_trail_useremail/up.yaml @@ -0,0 +1,10 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."audit_trail" drop constraint "audit_trail_useremail_fkey", + add constraint "audit_trail_useremail_fkey" + foreign key ("useremail") + references "public"."users" + ("email") on update restrict on delete restrict; + type: run_sql diff --git a/hasura/migrations/1583795281646_set_fk_public_audit_trail_bodyshopid/down.yaml b/hasura/migrations/1583795281646_set_fk_public_audit_trail_bodyshopid/down.yaml new file mode 100644 index 000000000..28b059e7b --- /dev/null +++ b/hasura/migrations/1583795281646_set_fk_public_audit_trail_bodyshopid/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."audit_trail" drop constraint "audit_trail_bodyshopid_fkey"; + type: run_sql diff --git a/hasura/migrations/1583795281646_set_fk_public_audit_trail_bodyshopid/up.yaml b/hasura/migrations/1583795281646_set_fk_public_audit_trail_bodyshopid/up.yaml new file mode 100644 index 000000000..19c6197ee --- /dev/null +++ b/hasura/migrations/1583795281646_set_fk_public_audit_trail_bodyshopid/up.yaml @@ -0,0 +1,10 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."audit_trail" + add constraint "audit_trail_bodyshopid_fkey" + foreign key ("bodyshopid") + references "public"."bodyshops" + ("id") on update restrict on delete restrict; + type: run_sql diff --git a/hasura/migrations/1583795349329_run_sql_migration/down.yaml b/hasura/migrations/1583795349329_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1583795349329_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1583795349329_run_sql_migration/up.yaml b/hasura/migrations/1583795349329_run_sql_migration/up.yaml new file mode 100644 index 000000000..ea55a6583 --- /dev/null +++ b/hasura/migrations/1583795349329_run_sql_migration/up.yaml @@ -0,0 +1,9 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION json_diff(l JSONB, r JSONB) RETURNS JSONB AS\r\n$json_diff$\r\n + \ SELECT jsonb_object_agg(a.key, a.value) FROM\r\n ( SELECT key, value + FROM jsonb_each(l) ) a LEFT OUTER JOIN\r\n ( SELECT key, value FROM jsonb_each(r) + ) b ON a.key = b.key\r\n WHERE a.value != b.value OR b.key IS NULL;\r\n$json_diff$\r\n + \ LANGUAGE sql;" + type: run_sql diff --git a/hasura/migrations/1583795594722_run_sql_migration/down.yaml b/hasura/migrations/1583795594722_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1583795594722_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1583795594722_run_sql_migration/up.yaml b/hasura/migrations/1583795594722_run_sql_migration/up.yaml new file mode 100644 index 000000000..b5587b2db --- /dev/null +++ b/hasura/migrations/1583795594722_run_sql_migration/up.yaml @@ -0,0 +1,25 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION audit_trigger() RETURNS trigger AS $$\r\n \r\n + DECLARE\r\n shopid uuid ;\r\n email text;\r\n\r\n BEGIN\r\n \r\n select + b.id, u.email INTO shopid, email from users u join associations a on u.email + = a.useremail join bodyshops b on b.id = a.shopid where u.authid = current_setting('hasura.user', + 't')::jsonb->>'x-hasura-user-id' and a.active = true;\r\n\r\n IF + \ TG_OP = 'INSERT'\r\n \r\n THEN\r\n \r\n INSERT + INTO public.audit_trail (tabname, schemaname, operation, new_val, recordid, + bodyshopid, useremail)\r\n \r\n VALUES (TG_RELNAME, + TG_TABLE_SCHEMA, TG_OP, row_to_json(NEW), NEW.id, shopid, email);\r\n \r\n RETURN + NEW;\r\n \r\n ELSIF TG_OP = 'UPDATE'\r\n \r\n THEN\r\n + \r\n INSERT INTO public.audit_trail (tabname, schemaname, + operation, old_val, new_val, recordid, bodyshopid, useremail)\r\n \r\n VALUES + (TG_RELNAME, TG_TABLE_SCHEMA, TG_OP,\r\n \r\n json_diff(to_jsonb(OLD), + to_jsonb(NEW)) , json_diff(to_jsonb(NEW), to_jsonb(OLD)), OLD.id, shopid, + email);\r\n \r\n RETURN NEW;\r\n \r\n ELSIF + \ TG_OP = 'DELETE'\r\n \r\n THEN\r\n \r\n INSERT + INTO public.audit_trail (tabname, schemaname, operation, old_val, recordid, + bodyshopid, useremail)\r\n \r\n VALUES (TG_RELNAME, + TG_TABLE_SCHEMA, TG_OP, row_to_json(OLD), OLD.ID, shopid, email);\r\n \r\n + \ RETURN OLD;\r\n \r\n END IF;\r\n \r\n + \ END;\r\n \r\n$$ LANGUAGE 'plpgsql' SECURITY DEFINER;" + type: run_sql diff --git a/hasura/migrations/1583795623008_run_sql_migration/down.yaml b/hasura/migrations/1583795623008_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1583795623008_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1583795623008_run_sql_migration/up.yaml b/hasura/migrations/1583795623008_run_sql_migration/up.yaml new file mode 100644 index 000000000..9808a5e1e --- /dev/null +++ b/hasura/migrations/1583795623008_run_sql_migration/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: true + read_only: false + sql: "CREATE TRIGGER audit_trigger_jobs AFTER INSERT OR UPDATE OR DELETE ON jobs\r\n + \ FOR EACH ROW EXECUTE PROCEDURE audit_trigger();" + type: run_sql diff --git a/hasura/migrations/1583795859969_track_all_relationships/down.yaml b/hasura/migrations/1583795859969_track_all_relationships/down.yaml new file mode 100644 index 000000000..22113aaa1 --- /dev/null +++ b/hasura/migrations/1583795859969_track_all_relationships/down.yaml @@ -0,0 +1,30 @@ +- args: + relationship: user + table: + name: audit_trail + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: audit_trail + schema: public + type: drop_relationship +- args: + relationship: audit_trails + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: invoices + table: + name: jobs + schema: public + type: drop_relationship +- args: + relationship: audit_trails + table: + name: users + schema: public + type: drop_relationship diff --git a/hasura/migrations/1583795859969_track_all_relationships/up.yaml b/hasura/migrations/1583795859969_track_all_relationships/up.yaml new file mode 100644 index 000000000..4dd73c75d --- /dev/null +++ b/hasura/migrations/1583795859969_track_all_relationships/up.yaml @@ -0,0 +1,52 @@ +- args: + name: user + table: + name: audit_trail + schema: public + using: + foreign_key_constraint_on: useremail + type: create_object_relationship +- args: + name: bodyshop + table: + name: audit_trail + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship +- args: + name: audit_trails + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: audit_trail + schema: public + type: create_array_relationship +- args: + name: invoices + table: + name: jobs + schema: public + using: + foreign_key_constraint_on: + column: jobid + table: + name: invoices + schema: public + type: create_array_relationship +- args: + name: audit_trails + table: + name: users + schema: public + using: + foreign_key_constraint_on: + column: useremail + table: + name: audit_trail + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1583795952143_update_permission_user_public_table_audit_trail/down.yaml b/hasura/migrations/1583795952143_update_permission_user_public_table_audit_trail/down.yaml new file mode 100644 index 000000000..a089342f6 --- /dev/null +++ b/hasura/migrations/1583795952143_update_permission_user_public_table_audit_trail/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: audit_trail + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1583795952143_update_permission_user_public_table_audit_trail/up.yaml b/hasura/migrations/1583795952143_update_permission_user_public_table_audit_trail/up.yaml new file mode 100644 index 000000000..98f8fe2c6 --- /dev/null +++ b/hasura/migrations/1583795952143_update_permission_user_public_table_audit_trail/up.yaml @@ -0,0 +1,32 @@ +- args: + permission: + allow_upsert: true + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created + - schemaname + - tabname + - operation + - recordid + - new_val + - old_val + - useremail + - bodyshopid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: audit_trail + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1583795958753_update_permission_user_public_table_audit_trail/down.yaml b/hasura/migrations/1583795958753_update_permission_user_public_table_audit_trail/down.yaml new file mode 100644 index 000000000..08e9eb62d --- /dev/null +++ b/hasura/migrations/1583795958753_update_permission_user_public_table_audit_trail/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: audit_trail + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1583795958753_update_permission_user_public_table_audit_trail/up.yaml b/hasura/migrations/1583795958753_update_permission_user_public_table_audit_trail/up.yaml new file mode 100644 index 000000000..e36789f21 --- /dev/null +++ b/hasura/migrations/1583795958753_update_permission_user_public_table_audit_trail/up.yaml @@ -0,0 +1,30 @@ +- args: + permission: + allow_aggregations: false + columns: + - id + - new_val + - old_val + - operation + - schemaname + - tabname + - useremail + - created + - bodyshopid + - recordid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: audit_trail + schema: public + type: create_select_permission diff --git a/hasura/migrations/1583795964235_delete_permission_user_public_table_audit_trail/down.yaml b/hasura/migrations/1583795964235_delete_permission_user_public_table_audit_trail/down.yaml new file mode 100644 index 000000000..e98aa1da4 --- /dev/null +++ b/hasura/migrations/1583795964235_delete_permission_user_public_table_audit_trail/down.yaml @@ -0,0 +1,31 @@ +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created + - schemaname + - tabname + - operation + - recordid + - new_val + - old_val + - useremail + - bodyshopid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: audit_trail + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1583795964235_delete_permission_user_public_table_audit_trail/up.yaml b/hasura/migrations/1583795964235_delete_permission_user_public_table_audit_trail/up.yaml new file mode 100644 index 000000000..a089342f6 --- /dev/null +++ b/hasura/migrations/1583795964235_delete_permission_user_public_table_audit_trail/up.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: audit_trail + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1584473267942_alter_table_public_documents_add_column_vendorid/down.yaml b/hasura/migrations/1584473267942_alter_table_public_documents_add_column_vendorid/down.yaml new file mode 100644 index 000000000..2681ad46f --- /dev/null +++ b/hasura/migrations/1584473267942_alter_table_public_documents_add_column_vendorid/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."documents" DROP COLUMN "vendorid"; + type: run_sql diff --git a/hasura/migrations/1584473267942_alter_table_public_documents_add_column_vendorid/up.yaml b/hasura/migrations/1584473267942_alter_table_public_documents_add_column_vendorid/up.yaml new file mode 100644 index 000000000..e6c1c4e06 --- /dev/null +++ b/hasura/migrations/1584473267942_alter_table_public_documents_add_column_vendorid/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."documents" ADD COLUMN "vendorid" uuid NULL; + type: run_sql diff --git a/hasura/migrations/1584473287107_set_fk_public_documents_vendorid/down.yaml b/hasura/migrations/1584473287107_set_fk_public_documents_vendorid/down.yaml new file mode 100644 index 000000000..80ca6fb70 --- /dev/null +++ b/hasura/migrations/1584473287107_set_fk_public_documents_vendorid/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."documents" drop constraint "documents_vendorid_fkey"; + type: run_sql diff --git a/hasura/migrations/1584473287107_set_fk_public_documents_vendorid/up.yaml b/hasura/migrations/1584473287107_set_fk_public_documents_vendorid/up.yaml new file mode 100644 index 000000000..c0e884737 --- /dev/null +++ b/hasura/migrations/1584473287107_set_fk_public_documents_vendorid/up.yaml @@ -0,0 +1,10 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."documents" + add constraint "documents_vendorid_fkey" + foreign key ("vendorid") + references "public"."vendors" + ("id") on update restrict on delete restrict; + type: run_sql diff --git a/hasura/migrations/1584473300420_alter_table_public_documents_alter_column_vendorid/down.yaml b/hasura/migrations/1584473300420_alter_table_public_documents_alter_column_vendorid/down.yaml new file mode 100644 index 000000000..0e728bd0e --- /dev/null +++ b/hasura/migrations/1584473300420_alter_table_public_documents_alter_column_vendorid/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."documents" rename column "invoiceid" to "vendorid"; + type: run_sql diff --git a/hasura/migrations/1584473300420_alter_table_public_documents_alter_column_vendorid/up.yaml b/hasura/migrations/1584473300420_alter_table_public_documents_alter_column_vendorid/up.yaml new file mode 100644 index 000000000..c3bd47a96 --- /dev/null +++ b/hasura/migrations/1584473300420_alter_table_public_documents_alter_column_vendorid/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."documents" rename column "vendorid" to "invoiceid"; + type: run_sql diff --git a/hasura/migrations/1584473314865_set_fk_public_documents_invoiceid/down.yaml b/hasura/migrations/1584473314865_set_fk_public_documents_invoiceid/down.yaml new file mode 100644 index 000000000..15453f19e --- /dev/null +++ b/hasura/migrations/1584473314865_set_fk_public_documents_invoiceid/down.yaml @@ -0,0 +1,12 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."documents" drop constraint "documents_invoiceid_fkey", + add constraint "documents_vendorid_fkey" + foreign key ("invoiceid") + references "public"."vendors" + ("id") + on update restrict + on delete restrict; + type: run_sql diff --git a/hasura/migrations/1584473314865_set_fk_public_documents_invoiceid/up.yaml b/hasura/migrations/1584473314865_set_fk_public_documents_invoiceid/up.yaml new file mode 100644 index 000000000..bc09f6d6c --- /dev/null +++ b/hasura/migrations/1584473314865_set_fk_public_documents_invoiceid/up.yaml @@ -0,0 +1,10 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."documents" drop constraint "documents_vendorid_fkey", + add constraint "documents_invoiceid_fkey" + foreign key ("invoiceid") + references "public"."invoices" + ("id") on update restrict on delete restrict; + type: run_sql diff --git a/hasura/migrations/1584473335595_track_all_relationships/down.yaml b/hasura/migrations/1584473335595_track_all_relationships/down.yaml new file mode 100644 index 000000000..19b217230 --- /dev/null +++ b/hasura/migrations/1584473335595_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: invoice + table: + name: documents + schema: public + type: drop_relationship +- args: + relationship: documents + table: + name: invoices + schema: public + type: drop_relationship diff --git a/hasura/migrations/1584473335595_track_all_relationships/up.yaml b/hasura/migrations/1584473335595_track_all_relationships/up.yaml new file mode 100644 index 000000000..7efda261a --- /dev/null +++ b/hasura/migrations/1584473335595_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: invoice + table: + name: documents + schema: public + using: + foreign_key_constraint_on: invoiceid + type: create_object_relationship +- args: + name: documents + table: + name: invoices + schema: public + using: + foreign_key_constraint_on: + column: invoiceid + table: + name: documents + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1585153417017_create_table_public_conversations/down.yaml b/hasura/migrations/1585153417017_create_table_public_conversations/down.yaml new file mode 100644 index 000000000..7506556ae --- /dev/null +++ b/hasura/migrations/1585153417017_create_table_public_conversations/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."conversations"; + type: run_sql diff --git a/hasura/migrations/1585153417017_create_table_public_conversations/up.yaml b/hasura/migrations/1585153417017_create_table_public_conversations/up.yaml new file mode 100644 index 000000000..d47a32f63 --- /dev/null +++ b/hasura/migrations/1585153417017_create_table_public_conversations/up.yaml @@ -0,0 +1,24 @@ +- 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\".\"conversations\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"bodyshopid\" uuid NOT NULL, \"phone_num\" text NOT + NULL, PRIMARY KEY (\"id\") , FOREIGN KEY (\"bodyshopid\") REFERENCES \"public\".\"bodyshops\"(\"id\") + ON UPDATE restrict ON DELETE restrict);\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_conversations_updated_at\"\nBEFORE + UPDATE ON \"public\".\"conversations\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_conversations_updated_at\" ON \"public\".\"conversations\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: conversations + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1585153424258_track_all_relationships/down.yaml b/hasura/migrations/1585153424258_track_all_relationships/down.yaml new file mode 100644 index 000000000..743e81ec2 --- /dev/null +++ b/hasura/migrations/1585153424258_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: conversations + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: conversations + schema: public + type: drop_relationship diff --git a/hasura/migrations/1585153424258_track_all_relationships/up.yaml b/hasura/migrations/1585153424258_track_all_relationships/up.yaml new file mode 100644 index 000000000..11d3f3218 --- /dev/null +++ b/hasura/migrations/1585153424258_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: conversations + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: conversations + schema: public + type: create_array_relationship +- args: + name: bodyshop + table: + name: conversations + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship diff --git a/hasura/migrations/1585153464139_update_permission_user_public_table_conversations/down.yaml b/hasura/migrations/1585153464139_update_permission_user_public_table_conversations/down.yaml new file mode 100644 index 000000000..67eac0759 --- /dev/null +++ b/hasura/migrations/1585153464139_update_permission_user_public_table_conversations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: conversations + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1585153464139_update_permission_user_public_table_conversations/up.yaml b/hasura/migrations/1585153464139_update_permission_user_public_table_conversations/up.yaml new file mode 100644 index 000000000..099167a94 --- /dev/null +++ b/hasura/migrations/1585153464139_update_permission_user_public_table_conversations/up.yaml @@ -0,0 +1,27 @@ +- args: + permission: + allow_upsert: true + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - bodyshopid + - phone_num + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: conversations + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585153470172_update_permission_user_public_table_conversations/down.yaml b/hasura/migrations/1585153470172_update_permission_user_public_table_conversations/down.yaml new file mode 100644 index 000000000..b20d844fd --- /dev/null +++ b/hasura/migrations/1585153470172_update_permission_user_public_table_conversations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: conversations + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1585153470172_update_permission_user_public_table_conversations/up.yaml b/hasura/migrations/1585153470172_update_permission_user_public_table_conversations/up.yaml new file mode 100644 index 000000000..a72ab0fcd --- /dev/null +++ b/hasura/migrations/1585153470172_update_permission_user_public_table_conversations/up.yaml @@ -0,0 +1,25 @@ +- args: + permission: + allow_aggregations: false + columns: + - phone_num + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: conversations + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585153476909_update_permission_user_public_table_conversations/down.yaml b/hasura/migrations/1585153476909_update_permission_user_public_table_conversations/down.yaml new file mode 100644 index 000000000..18af93644 --- /dev/null +++ b/hasura/migrations/1585153476909_update_permission_user_public_table_conversations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: conversations + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1585153476909_update_permission_user_public_table_conversations/up.yaml b/hasura/migrations/1585153476909_update_permission_user_public_table_conversations/up.yaml new file mode 100644 index 000000000..117094ed9 --- /dev/null +++ b/hasura/migrations/1585153476909_update_permission_user_public_table_conversations/up.yaml @@ -0,0 +1,26 @@ +- args: + permission: + columns: + - phone_num + - 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: conversations + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585153777706_create_table_public_messages/down.yaml b/hasura/migrations/1585153777706_create_table_public_messages/down.yaml new file mode 100644 index 000000000..44cc529da --- /dev/null +++ b/hasura/migrations/1585153777706_create_table_public_messages/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."messages"; + type: run_sql diff --git a/hasura/migrations/1585153777706_create_table_public_messages/up.yaml b/hasura/migrations/1585153777706_create_table_public_messages/up.yaml new file mode 100644 index 000000000..90098df5e --- /dev/null +++ b/hasura/migrations/1585153777706_create_table_public_messages/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\".\"messages\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"msid\" text NOT NULL, \"conversationid\" uuid NOT + NULL, \"text\" text, \"image\" boolean NOT NULL DEFAULT false, \"image_path\" + text, \"sent\" boolean NOT NULL DEFAULT false, \"delivered\" boolean NOT NULL + DEFAULT false, PRIMARY KEY (\"id\") , FOREIGN KEY (\"conversationid\") REFERENCES + \"public\".\"conversations\"(\"id\") ON UPDATE restrict ON DELETE restrict, + UNIQUE (\"msid\"));\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_messages_updated_at\"\nBEFORE + UPDATE ON \"public\".\"messages\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_messages_updated_at\" ON \"public\".\"messages\" \nIS + 'trigger to set value of column \"updated_at\" to current timestamp on row update';" + type: run_sql +- args: + name: messages + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1585153792735_track_all_relationships/down.yaml b/hasura/migrations/1585153792735_track_all_relationships/down.yaml new file mode 100644 index 000000000..7cd99e818 --- /dev/null +++ b/hasura/migrations/1585153792735_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: messages + table: + name: conversations + schema: public + type: drop_relationship +- args: + relationship: conversation + table: + name: messages + schema: public + type: drop_relationship diff --git a/hasura/migrations/1585153792735_track_all_relationships/up.yaml b/hasura/migrations/1585153792735_track_all_relationships/up.yaml new file mode 100644 index 000000000..64e797095 --- /dev/null +++ b/hasura/migrations/1585153792735_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: messages + table: + name: conversations + schema: public + using: + foreign_key_constraint_on: + column: conversationid + table: + name: messages + schema: public + type: create_array_relationship +- args: + name: conversation + table: + name: messages + schema: public + using: + foreign_key_constraint_on: conversationid + type: create_object_relationship diff --git a/hasura/migrations/1585153822636_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585153822636_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..0755f37de --- /dev/null +++ b/hasura/migrations/1585153822636_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1585153822636_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585153822636_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..88977313f --- /dev/null +++ b/hasura/migrations/1585153822636_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,33 @@ +- args: + permission: + allow_upsert: true + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - msid + - conversationid + - text + - image + - image_path + - sent + - delivered + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585153829941_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585153829941_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..2c2c6944f --- /dev/null +++ b/hasura/migrations/1585153829941_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1585153829941_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585153829941_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..02a52dae6 --- /dev/null +++ b/hasura/migrations/1585153829941_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,31 @@ +- args: + permission: + allow_aggregations: false + columns: + - delivered + - image + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585153837554_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585153837554_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..2a52a80ae --- /dev/null +++ b/hasura/migrations/1585153837554_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1585153837554_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585153837554_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..6bfebbe3d --- /dev/null +++ b/hasura/migrations/1585153837554_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,32 @@ +- args: + permission: + columns: + - delivered + - image + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585153843391_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585153843391_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..c7b5b652b --- /dev/null +++ b/hasura/migrations/1585153843391_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1585153843391_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585153843391_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..14905b779 --- /dev/null +++ b/hasura/migrations/1585153843391_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,17 @@ +- args: + permission: + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1585153926580_create_table_public_job_conversations/down.yaml b/hasura/migrations/1585153926580_create_table_public_job_conversations/down.yaml new file mode 100644 index 000000000..adb6db985 --- /dev/null +++ b/hasura/migrations/1585153926580_create_table_public_job_conversations/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."job_conversations"; + type: run_sql diff --git a/hasura/migrations/1585153926580_create_table_public_job_conversations/up.yaml b/hasura/migrations/1585153926580_create_table_public_job_conversations/up.yaml new file mode 100644 index 000000000..1eb5ad992 --- /dev/null +++ b/hasura/migrations/1585153926580_create_table_public_job_conversations/up.yaml @@ -0,0 +1,13 @@ +- args: + cascade: false + read_only: false + sql: CREATE TABLE "public"."job_conversations"("jobid" uuid NOT NULL, "conversationid" + uuid NOT NULL, PRIMARY KEY ("jobid","conversationid") , FOREIGN KEY ("jobid") + REFERENCES "public"."jobs"("id") ON UPDATE restrict ON DELETE restrict, FOREIGN + KEY ("conversationid") REFERENCES "public"."conversations"("id") ON UPDATE restrict + ON DELETE restrict); + type: run_sql +- args: + name: job_conversations + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1585153936524_track_all_relationships/down.yaml b/hasura/migrations/1585153936524_track_all_relationships/down.yaml new file mode 100644 index 000000000..18e9769cb --- /dev/null +++ b/hasura/migrations/1585153936524_track_all_relationships/down.yaml @@ -0,0 +1,24 @@ +- args: + relationship: job_conversations + table: + name: conversations + schema: public + type: drop_relationship +- args: + relationship: job + table: + name: job_conversations + schema: public + type: drop_relationship +- args: + relationship: conversation + table: + name: job_conversations + schema: public + type: drop_relationship +- args: + relationship: job_conversations + table: + name: jobs + schema: public + type: drop_relationship diff --git a/hasura/migrations/1585153936524_track_all_relationships/up.yaml b/hasura/migrations/1585153936524_track_all_relationships/up.yaml new file mode 100644 index 000000000..ddad5f3e9 --- /dev/null +++ b/hasura/migrations/1585153936524_track_all_relationships/up.yaml @@ -0,0 +1,40 @@ +- args: + name: job_conversations + table: + name: conversations + schema: public + using: + foreign_key_constraint_on: + column: conversationid + table: + name: job_conversations + schema: public + type: create_array_relationship +- args: + name: job + table: + name: job_conversations + schema: public + using: + foreign_key_constraint_on: jobid + type: create_object_relationship +- args: + name: conversation + table: + name: job_conversations + schema: public + using: + foreign_key_constraint_on: conversationid + type: create_object_relationship +- args: + name: job_conversations + table: + name: jobs + schema: public + using: + foreign_key_constraint_on: + column: jobid + table: + name: job_conversations + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1585154004360_update_permission_user_public_table_job_conversations/down.yaml b/hasura/migrations/1585154004360_update_permission_user_public_table_job_conversations/down.yaml new file mode 100644 index 000000000..3c0c6b457 --- /dev/null +++ b/hasura/migrations/1585154004360_update_permission_user_public_table_job_conversations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_conversations + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1585154004360_update_permission_user_public_table_job_conversations/up.yaml b/hasura/migrations/1585154004360_update_permission_user_public_table_job_conversations/up.yaml new file mode 100644 index 000000000..5ae11e78e --- /dev/null +++ b/hasura/migrations/1585154004360_update_permission_user_public_table_job_conversations/up.yaml @@ -0,0 +1,25 @@ +- args: + permission: + allow_upsert: true + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - jobid + - conversationid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: job_conversations + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585154010719_update_permission_user_public_table_job_conversations/down.yaml b/hasura/migrations/1585154010719_update_permission_user_public_table_job_conversations/down.yaml new file mode 100644 index 000000000..507bcf27d --- /dev/null +++ b/hasura/migrations/1585154010719_update_permission_user_public_table_job_conversations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_conversations + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1585154010719_update_permission_user_public_table_job_conversations/up.yaml b/hasura/migrations/1585154010719_update_permission_user_public_table_job_conversations/up.yaml new file mode 100644 index 000000000..423d9fc3c --- /dev/null +++ b/hasura/migrations/1585154010719_update_permission_user_public_table_job_conversations/up.yaml @@ -0,0 +1,23 @@ +- args: + permission: + allow_aggregations: false + columns: + - conversationid + - jobid + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: job_conversations + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585154018518_update_permission_user_public_table_job_conversations/down.yaml b/hasura/migrations/1585154018518_update_permission_user_public_table_job_conversations/down.yaml new file mode 100644 index 000000000..28aa3576d --- /dev/null +++ b/hasura/migrations/1585154018518_update_permission_user_public_table_job_conversations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_conversations + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1585154018518_update_permission_user_public_table_job_conversations/up.yaml b/hasura/migrations/1585154018518_update_permission_user_public_table_job_conversations/up.yaml new file mode 100644 index 000000000..82df37ce8 --- /dev/null +++ b/hasura/migrations/1585154018518_update_permission_user_public_table_job_conversations/up.yaml @@ -0,0 +1,24 @@ +- args: + permission: + columns: + - conversationid + - jobid + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: job_conversations + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585154023698_update_permission_user_public_table_job_conversations/down.yaml b/hasura/migrations/1585154023698_update_permission_user_public_table_job_conversations/down.yaml new file mode 100644 index 000000000..a6f9b0b8e --- /dev/null +++ b/hasura/migrations/1585154023698_update_permission_user_public_table_job_conversations/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: job_conversations + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1585154023698_update_permission_user_public_table_job_conversations/up.yaml b/hasura/migrations/1585154023698_update_permission_user_public_table_job_conversations/up.yaml new file mode 100644 index 000000000..a44463301 --- /dev/null +++ b/hasura/migrations/1585154023698_update_permission_user_public_table_job_conversations/up.yaml @@ -0,0 +1,17 @@ +- args: + permission: + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: job_conversations + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1585160133244_alter_table_public_messages_add_column_isoutbound/down.yaml b/hasura/migrations/1585160133244_alter_table_public_messages_add_column_isoutbound/down.yaml new file mode 100644 index 000000000..8d67ac880 --- /dev/null +++ b/hasura/migrations/1585160133244_alter_table_public_messages_add_column_isoutbound/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" DROP COLUMN "isoutbound"; + type: run_sql diff --git a/hasura/migrations/1585160133244_alter_table_public_messages_add_column_isoutbound/up.yaml b/hasura/migrations/1585160133244_alter_table_public_messages_add_column_isoutbound/up.yaml new file mode 100644 index 000000000..c1f7bb533 --- /dev/null +++ b/hasura/migrations/1585160133244_alter_table_public_messages_add_column_isoutbound/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ADD COLUMN "isoutbound" boolean NOT NULL + DEFAULT false; + type: run_sql diff --git a/hasura/migrations/1585160140032_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585160140032_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..c3f1ece2c --- /dev/null +++ b/hasura/migrations/1585160140032_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - msid + - conversationid + - text + - image + - image_path + - sent + - delivered + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585160140032_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585160140032_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..3d5f212d0 --- /dev/null +++ b/hasura/migrations/1585160140032_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - msid + - conversationid + - text + - image + - image_path + - sent + - delivered + - isoutbound + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585160145919_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585160145919_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..829390ace --- /dev/null +++ b/hasura/migrations/1585160145919_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - delivered + - image + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585160145919_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585160145919_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..24e4f5a60 --- /dev/null +++ b/hasura/migrations/1585160145919_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - delivered + - image + - isoutbound + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585160150937_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585160150937_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..31797c48f --- /dev/null +++ b/hasura/migrations/1585160150937_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - delivered + - image + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585160150937_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585160150937_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..29938a450 --- /dev/null +++ b/hasura/migrations/1585160150937_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - delivered + - image + - isoutbound + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585160687805_alter_table_public_bodyshops_add_column_messagingservicesid/down.yaml b/hasura/migrations/1585160687805_alter_table_public_bodyshops_add_column_messagingservicesid/down.yaml new file mode 100644 index 000000000..588c83295 --- /dev/null +++ b/hasura/migrations/1585160687805_alter_table_public_bodyshops_add_column_messagingservicesid/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "messagingservicesid"; + type: run_sql diff --git a/hasura/migrations/1585160687805_alter_table_public_bodyshops_add_column_messagingservicesid/up.yaml b/hasura/migrations/1585160687805_alter_table_public_bodyshops_add_column_messagingservicesid/up.yaml new file mode 100644 index 000000000..a6cfbbc1d --- /dev/null +++ b/hasura/migrations/1585160687805_alter_table_public_bodyshops_add_column_messagingservicesid/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "messagingservicesid" text NULL + UNIQUE; + type: run_sql diff --git a/hasura/migrations/1585176085942_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1585176085942_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..c3ec5c35a --- /dev/null +++ b/hasura/migrations/1585176085942_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,42 @@ +- 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 + - md_responsibility_centers + 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/1585176085942_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1585176085942_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..825ae0c0c --- /dev/null +++ b/hasura/migrations/1585176085942_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,43 @@ +- 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 + - md_responsibility_centers + - messagingservicesid + 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/1585179467940_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585179467940_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..3d5f212d0 --- /dev/null +++ b/hasura/migrations/1585179467940_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - msid + - conversationid + - text + - image + - image_path + - sent + - delivered + - isoutbound + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585179467940_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585179467940_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..2416c2c1a --- /dev/null +++ b/hasura/migrations/1585179467940_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - text + - updated_at + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585179475576_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585179475576_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..24e4f5a60 --- /dev/null +++ b/hasura/migrations/1585179475576_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - delivered + - image + - isoutbound + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585179475576_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585179475576_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..30cabb081 --- /dev/null +++ b/hasura/migrations/1585179475576_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - text + - updated_at + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585179482717_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585179482717_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..29938a450 --- /dev/null +++ b/hasura/migrations/1585179482717_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - delivered + - image + - isoutbound + - sent + - image_path + - msid + - text + - created_at + - updated_at + - conversationid + - id + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585179482717_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585179482717_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..cec8b33a7 --- /dev/null +++ b/hasura/migrations/1585179482717_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - text + - updated_at + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585179490323_alter_table_public_messages_drop_column_delivered/down.yaml b/hasura/migrations/1585179490323_alter_table_public_messages_drop_column_delivered/down.yaml new file mode 100644 index 000000000..23f6819fa --- /dev/null +++ b/hasura/migrations/1585179490323_alter_table_public_messages_drop_column_delivered/down.yaml @@ -0,0 +1,15 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ADD COLUMN "delivered" bool; + type: run_sql +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ALTER COLUMN "delivered" DROP NOT NULL; + type: run_sql +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ALTER COLUMN "delivered" SET DEFAULT false; + type: run_sql diff --git a/hasura/migrations/1585179490323_alter_table_public_messages_drop_column_delivered/up.yaml b/hasura/migrations/1585179490323_alter_table_public_messages_drop_column_delivered/up.yaml new file mode 100644 index 000000000..051f0ff76 --- /dev/null +++ b/hasura/migrations/1585179490323_alter_table_public_messages_drop_column_delivered/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" DROP COLUMN "delivered" CASCADE; + type: run_sql diff --git a/hasura/migrations/1585179498362_alter_table_public_messages_drop_column_sent/down.yaml b/hasura/migrations/1585179498362_alter_table_public_messages_drop_column_sent/down.yaml new file mode 100644 index 000000000..3beef333b --- /dev/null +++ b/hasura/migrations/1585179498362_alter_table_public_messages_drop_column_sent/down.yaml @@ -0,0 +1,15 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ADD COLUMN "sent" bool; + type: run_sql +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ALTER COLUMN "sent" DROP NOT NULL; + type: run_sql +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ALTER COLUMN "sent" SET DEFAULT false; + type: run_sql diff --git a/hasura/migrations/1585179498362_alter_table_public_messages_drop_column_sent/up.yaml b/hasura/migrations/1585179498362_alter_table_public_messages_drop_column_sent/up.yaml new file mode 100644 index 000000000..e2549f514 --- /dev/null +++ b/hasura/migrations/1585179498362_alter_table_public_messages_drop_column_sent/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" DROP COLUMN "sent" CASCADE; + type: run_sql diff --git a/hasura/migrations/1585179618401_alter_table_public_messages_add_column_status/down.yaml b/hasura/migrations/1585179618401_alter_table_public_messages_add_column_status/down.yaml new file mode 100644 index 000000000..2d3eb14b7 --- /dev/null +++ b/hasura/migrations/1585179618401_alter_table_public_messages_add_column_status/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" DROP COLUMN "status"; + type: run_sql diff --git a/hasura/migrations/1585179618401_alter_table_public_messages_add_column_status/up.yaml b/hasura/migrations/1585179618401_alter_table_public_messages_add_column_status/up.yaml new file mode 100644 index 000000000..95d0f93bb --- /dev/null +++ b/hasura/migrations/1585179618401_alter_table_public_messages_add_column_status/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ADD COLUMN "status" text NOT NULL DEFAULT + 'posted'; + type: run_sql diff --git a/hasura/migrations/1585179627356_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585179627356_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..2416c2c1a --- /dev/null +++ b/hasura/migrations/1585179627356_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - text + - updated_at + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585179627356_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585179627356_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..1d1eaa297 --- /dev/null +++ b/hasura/migrations/1585179627356_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - msid + - conversationid + - text + - image + - image_path + - isoutbound + - status + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585179632891_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585179632891_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..30cabb081 --- /dev/null +++ b/hasura/migrations/1585179632891_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - text + - updated_at + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585179632891_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585179632891_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..cfc1aa1a4 --- /dev/null +++ b/hasura/migrations/1585179632891_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - status + - text + - updated_at + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585179638124_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585179638124_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..cec8b33a7 --- /dev/null +++ b/hasura/migrations/1585179638124_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - text + - updated_at + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585179638124_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585179638124_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..11ebdccfd --- /dev/null +++ b/hasura/migrations/1585179638124_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - image + - isoutbound + - image_path + - msid + - status + - text + - created_at + - updated_at + - conversationid + - id + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585181593575_alter_table_public_messages_add_column_read/down.yaml b/hasura/migrations/1585181593575_alter_table_public_messages_add_column_read/down.yaml new file mode 100644 index 000000000..338899b1f --- /dev/null +++ b/hasura/migrations/1585181593575_alter_table_public_messages_add_column_read/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" DROP COLUMN "read"; + type: run_sql diff --git a/hasura/migrations/1585181593575_alter_table_public_messages_add_column_read/up.yaml b/hasura/migrations/1585181593575_alter_table_public_messages_add_column_read/up.yaml new file mode 100644 index 000000000..a5ba54045 --- /dev/null +++ b/hasura/migrations/1585181593575_alter_table_public_messages_add_column_read/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."messages" ADD COLUMN "read" boolean NOT NULL DEFAULT + false; + type: run_sql diff --git a/hasura/migrations/1585181603176_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585181603176_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..1d1eaa297 --- /dev/null +++ b/hasura/migrations/1585181603176_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - msid + - conversationid + - text + - image + - image_path + - isoutbound + - status + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585181603176_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585181603176_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..108df6204 --- /dev/null +++ b/hasura/migrations/1585181603176_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_insert_permission +- args: + permission: + check: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - msid + - conversationid + - text + - image + - image_path + - isoutbound + - status + - read + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585181608761_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585181608761_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..cfc1aa1a4 --- /dev/null +++ b/hasura/migrations/1585181608761_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - conversationid + - created_at + - id + - image + - image_path + - isoutbound + - msid + - status + - text + - updated_at + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585181608761_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585181608761_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..27dca1b45 --- /dev/null +++ b/hasura/migrations/1585181608761_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - image + - isoutbound + - read + - image_path + - msid + - status + - text + - created_at + - updated_at + - conversationid + - id + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585181614380_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585181614380_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..11ebdccfd --- /dev/null +++ b/hasura/migrations/1585181614380_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - image + - isoutbound + - image_path + - msid + - status + - text + - created_at + - updated_at + - conversationid + - id + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585181614380_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585181614380_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..990a7e935 --- /dev/null +++ b/hasura/migrations/1585181614380_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_update_permission +- args: + permission: + columns: + - image + - isoutbound + - read + - image_path + - msid + - status + - text + - created_at + - updated_at + - conversationid + - id + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: messages + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585182358098_update_permission_user_public_table_messages/down.yaml b/hasura/migrations/1585182358098_update_permission_user_public_table_messages/down.yaml new file mode 100644 index 000000000..27dca1b45 --- /dev/null +++ b/hasura/migrations/1585182358098_update_permission_user_public_table_messages/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - image + - isoutbound + - read + - image_path + - msid + - status + - text + - created_at + - updated_at + - conversationid + - id + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585182358098_update_permission_user_public_table_messages/up.yaml b/hasura/migrations/1585182358098_update_permission_user_public_table_messages/up.yaml new file mode 100644 index 000000000..779d52c21 --- /dev/null +++ b/hasura/migrations/1585182358098_update_permission_user_public_table_messages/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: messages + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - image + - isoutbound + - read + - image_path + - msid + - status + - text + - created_at + - updated_at + - conversationid + - id + computed_fields: [] + filter: + conversation: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: messages + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585182522250_update_permission_user_public_table_conversations/down.yaml b/hasura/migrations/1585182522250_update_permission_user_public_table_conversations/down.yaml new file mode 100644 index 000000000..3d7279640 --- /dev/null +++ b/hasura/migrations/1585182522250_update_permission_user_public_table_conversations/down.yaml @@ -0,0 +1,30 @@ +- args: + role: user + table: + name: conversations + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - phone_num + - 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: conversations + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585182522250_update_permission_user_public_table_conversations/up.yaml b/hasura/migrations/1585182522250_update_permission_user_public_table_conversations/up.yaml new file mode 100644 index 000000000..9c9dd4ce0 --- /dev/null +++ b/hasura/migrations/1585182522250_update_permission_user_public_table_conversations/up.yaml @@ -0,0 +1,30 @@ +- args: + role: user + table: + name: conversations + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - phone_num + - 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: conversations + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585586288586_run_sql_migration/down.yaml b/hasura/migrations/1585586288586_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1585586288586_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1585586288586_run_sql_migration/up.yaml b/hasura/migrations/1585586288586_run_sql_migration/up.yaml new file mode 100644 index 000000000..ae5e78242 --- /dev/null +++ b/hasura/migrations/1585586288586_run_sql_migration/up.yaml @@ -0,0 +1,8 @@ +- args: + cascade: true + read_only: false + sql: "alter table jobs\nadd column plate_no text, \nadd column plate_st + \ text, \nadd column v_vin text, \nadd column v_model_yr + \ text, \nadd column v_model_desc text, \nadd column v_make_desc + \ text, \nadd column v_color text;" + type: run_sql diff --git a/hasura/migrations/1585586312881_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1585586312881_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..de3be1a36 --- /dev/null +++ b/hasura/migrations/1585586312881_update_permission_user_public_table_jobs/down.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/1585586312881_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1585586312881_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..8cc98c238 --- /dev/null +++ b/hasura/migrations/1585586312881_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,253 @@ +- 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 + - 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 + - g_bett_amt + - cieca_ttl + - plate_no + - plate_st + - v_vin + - v_model_yr + - v_model_desc + - v_make_desc + - v_color + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585586320551_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1585586320551_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..16d2b6fb7 --- /dev/null +++ b/hasura/migrations/1585586320551_update_permission_user_public_table_jobs/down.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/1585586320551_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1585586320551_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4973998e3 --- /dev/null +++ b/hasura/migrations/1585586320551_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,251 @@ +- 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 + - cieca_ttl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - g_bett_amt + - 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 + - plate_no + - plate_st + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1585586326162_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1585586326162_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..90840138f --- /dev/null +++ b/hasura/migrations/1585586326162_update_permission_user_public_table_jobs/down.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/1585586326162_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1585586326162_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..6d9512c50 --- /dev/null +++ b/hasura/migrations/1585586326162_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,253 @@ +- 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 + - cieca_ttl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - g_bett_amt + - 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 + - plate_no + - plate_st + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1585594344847_create_table_public_courtesycars/down.yaml b/hasura/migrations/1585594344847_create_table_public_courtesycars/down.yaml new file mode 100644 index 000000000..486ffa454 --- /dev/null +++ b/hasura/migrations/1585594344847_create_table_public_courtesycars/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."courtesycars"; + type: run_sql diff --git a/hasura/migrations/1585594344847_create_table_public_courtesycars/up.yaml b/hasura/migrations/1585594344847_create_table_public_courtesycars/up.yaml new file mode 100644 index 000000000..d015903ef --- /dev/null +++ b/hasura/migrations/1585594344847_create_table_public_courtesycars/up.yaml @@ -0,0 +1,31 @@ +- 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\".\"courtesycars\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"bodyshopid\" uuid NOT NULL, \"make\" text NOT NULL, + \"model\" text NOT NULL, \"year\" text NOT NULL, \"plate\" text NOT NULL, \"color\" + text NOT NULL, \"vin\" text NOT NULL, \"fleetnumber\" text, \"purchasedate\" + date, \"servicestartdate\" date, \"serviceenddate\" date, \"leaseenddate\" date, + \"status\" text NOT NULL DEFAULT 'Available', \"NextServiceKm\" numeric NOT + NULL DEFAULT 0, \"NextServiceDate\" date, \"Damage\" text, \"Notes\" text, \"fuel\" + numeric NOT NULL DEFAULT 1, \"registrationexpires\" date, \"insuranceexpires\" + date, \"dailycost\" numeric NOT NULL DEFAULT 0, PRIMARY KEY (\"id\") , FOREIGN + KEY (\"bodyshopid\") REFERENCES \"public\".\"bodyshops\"(\"id\") ON UPDATE restrict + ON DELETE restrict);\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_courtesycars_updated_at\"\nBEFORE + UPDATE ON \"public\".\"courtesycars\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_courtesycars_updated_at\" ON \"public\".\"courtesycars\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: courtesycars + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1585594392845_track_all_relationships/down.yaml b/hasura/migrations/1585594392845_track_all_relationships/down.yaml new file mode 100644 index 000000000..b76d03b9e --- /dev/null +++ b/hasura/migrations/1585594392845_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: courtesycars + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: courtesycars + schema: public + type: drop_relationship diff --git a/hasura/migrations/1585594392845_track_all_relationships/up.yaml b/hasura/migrations/1585594392845_track_all_relationships/up.yaml new file mode 100644 index 000000000..d7f2ac72c --- /dev/null +++ b/hasura/migrations/1585594392845_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: courtesycars + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: courtesycars + schema: public + type: create_array_relationship +- args: + name: bodyshop + table: + name: courtesycars + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship diff --git a/hasura/migrations/1585595056116_create_table_public_cccontract/down.yaml b/hasura/migrations/1585595056116_create_table_public_cccontract/down.yaml new file mode 100644 index 000000000..6d3ed3f08 --- /dev/null +++ b/hasura/migrations/1585595056116_create_table_public_cccontract/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."cccontract"; + type: run_sql diff --git a/hasura/migrations/1585595056116_create_table_public_cccontract/up.yaml b/hasura/migrations/1585595056116_create_table_public_cccontract/up.yaml new file mode 100644 index 000000000..829a34352 --- /dev/null +++ b/hasura/migrations/1585595056116_create_table_public_cccontract/up.yaml @@ -0,0 +1,33 @@ +- 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\".\"cccontract\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"agreementnumber\" serial NOT NULL, \"courtesycarid\" + uuid NOT NULL, \"jobid\" uuid NOT NULL, \"status\" text NOT NULL DEFAULT 'Reserved', + \"start\" date, \"scheduledreturn\" date, \"actualreturn\" date, \"kmstart\" + numeric NOT NULL, \"kmend\" numeric, \"driver_dlnumber\" text NOT NULL, \"driver_dlexpiry\" + date NOT NULL, \"driver_dlst\" text NOT NULL, \"driver_fn\" text NOT NULL, \"driver_ln\" + text NOT NULL, \"driver_addr1\" text NOT NULL, \"driver_addr2\" text, \"driver_city\" + text NOT NULL, \"driver_state\" text NOT NULL, \"driver_zip\" text NOT NULL, + \"driver_ph1\" text NOT NULL, \"driver_dob\" date NOT NULL, \"cc_num\" text, + \"cc_expiry\" text, \"cc_cardholder\" text, PRIMARY KEY (\"id\") , FOREIGN KEY + (\"courtesycarid\") REFERENCES \"public\".\"courtesycars\"(\"id\") ON UPDATE + restrict ON DELETE restrict, FOREIGN KEY (\"jobid\") REFERENCES \"public\".\"jobs\"(\"id\") + ON UPDATE restrict ON DELETE restrict);\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_cccontract_updated_at\"\nBEFORE + UPDATE ON \"public\".\"cccontract\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_cccontract_updated_at\" ON \"public\".\"cccontract\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: cccontract + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1585595063336_track_all_relationships/down.yaml b/hasura/migrations/1585595063336_track_all_relationships/down.yaml new file mode 100644 index 000000000..962ae6974 --- /dev/null +++ b/hasura/migrations/1585595063336_track_all_relationships/down.yaml @@ -0,0 +1,24 @@ +- args: + relationship: job + table: + name: cccontract + schema: public + type: drop_relationship +- args: + relationship: courtesycar + table: + name: cccontract + schema: public + type: drop_relationship +- args: + relationship: cccontracts + table: + name: courtesycars + schema: public + type: drop_relationship +- args: + relationship: cccontracts + table: + name: jobs + schema: public + type: drop_relationship diff --git a/hasura/migrations/1585595063336_track_all_relationships/up.yaml b/hasura/migrations/1585595063336_track_all_relationships/up.yaml new file mode 100644 index 000000000..74a477e62 --- /dev/null +++ b/hasura/migrations/1585595063336_track_all_relationships/up.yaml @@ -0,0 +1,40 @@ +- args: + name: job + table: + name: cccontract + schema: public + using: + foreign_key_constraint_on: jobid + type: create_object_relationship +- args: + name: courtesycar + table: + name: cccontract + schema: public + using: + foreign_key_constraint_on: courtesycarid + type: create_object_relationship +- args: + name: cccontracts + table: + name: courtesycars + schema: public + using: + foreign_key_constraint_on: + column: courtesycarid + table: + name: cccontract + schema: public + type: create_array_relationship +- args: + name: cccontracts + table: + name: jobs + schema: public + using: + foreign_key_constraint_on: + column: jobid + table: + name: cccontract + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1585595095297_update_permission_user_public_table_courtesycars/down.yaml b/hasura/migrations/1585595095297_update_permission_user_public_table_courtesycars/down.yaml new file mode 100644 index 000000000..1ece918dc --- /dev/null +++ b/hasura/migrations/1585595095297_update_permission_user_public_table_courtesycars/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1585595095297_update_permission_user_public_table_courtesycars/up.yaml b/hasura/migrations/1585595095297_update_permission_user_public_table_courtesycars/up.yaml new file mode 100644 index 000000000..cb10d2c0c --- /dev/null +++ b/hasura/migrations/1585595095297_update_permission_user_public_table_courtesycars/up.yaml @@ -0,0 +1,46 @@ +- args: + permission: + allow_upsert: true + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - bodyshopid + - make + - model + - year + - plate + - color + - vin + - fleetnumber + - purchasedate + - servicestartdate + - serviceenddate + - leaseenddate + - status + - NextServiceKm + - NextServiceDate + - Damage + - Notes + - fuel + - registrationexpires + - insuranceexpires + - dailycost + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: courtesycars + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585595102086_update_permission_user_public_table_courtesycars/down.yaml b/hasura/migrations/1585595102086_update_permission_user_public_table_courtesycars/down.yaml new file mode 100644 index 000000000..cef7281aa --- /dev/null +++ b/hasura/migrations/1585595102086_update_permission_user_public_table_courtesycars/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1585595102086_update_permission_user_public_table_courtesycars/up.yaml b/hasura/migrations/1585595102086_update_permission_user_public_table_courtesycars/up.yaml new file mode 100644 index 000000000..1c9b059d7 --- /dev/null +++ b/hasura/migrations/1585595102086_update_permission_user_public_table_courtesycars/up.yaml @@ -0,0 +1,44 @@ +- args: + permission: + allow_aggregations: false + columns: + - insuranceexpires + - leaseenddate + - NextServiceDate + - purchasedate + - registrationexpires + - serviceenddate + - servicestartdate + - dailycost + - fuel + - NextServiceKm + - color + - Damage + - fleetnumber + - make + - model + - Notes + - plate + - status + - vin + - year + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: courtesycars + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585595106910_update_permission_user_public_table_courtesycars/down.yaml b/hasura/migrations/1585595106910_update_permission_user_public_table_courtesycars/down.yaml new file mode 100644 index 000000000..9605986fe --- /dev/null +++ b/hasura/migrations/1585595106910_update_permission_user_public_table_courtesycars/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1585595106910_update_permission_user_public_table_courtesycars/up.yaml b/hasura/migrations/1585595106910_update_permission_user_public_table_courtesycars/up.yaml new file mode 100644 index 000000000..c49fddd2f --- /dev/null +++ b/hasura/migrations/1585595106910_update_permission_user_public_table_courtesycars/up.yaml @@ -0,0 +1,45 @@ +- args: + permission: + columns: + - insuranceexpires + - leaseenddate + - NextServiceDate + - purchasedate + - registrationexpires + - serviceenddate + - servicestartdate + - dailycost + - fuel + - NextServiceKm + - color + - Damage + - fleetnumber + - make + - model + - Notes + - plate + - status + - vin + - year + - 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: courtesycars + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585595111087_update_permission_user_public_table_courtesycars/down.yaml b/hasura/migrations/1585595111087_update_permission_user_public_table_courtesycars/down.yaml new file mode 100644 index 000000000..b63edce8f --- /dev/null +++ b/hasura/migrations/1585595111087_update_permission_user_public_table_courtesycars/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1585595111087_update_permission_user_public_table_courtesycars/up.yaml b/hasura/migrations/1585595111087_update_permission_user_public_table_courtesycars/up.yaml new file mode 100644 index 000000000..e133c026e --- /dev/null +++ b/hasura/migrations/1585595111087_update_permission_user_public_table_courtesycars/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: courtesycars + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1585595120824_rename_table_public_cccontract/down.yaml b/hasura/migrations/1585595120824_rename_table_public_cccontract/down.yaml new file mode 100644 index 000000000..ad3fde467 --- /dev/null +++ b/hasura/migrations/1585595120824_rename_table_public_cccontract/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."cccontracts" rename to "cccontract"; + type: run_sql diff --git a/hasura/migrations/1585595120824_rename_table_public_cccontract/up.yaml b/hasura/migrations/1585595120824_rename_table_public_cccontract/up.yaml new file mode 100644 index 000000000..53412a34a --- /dev/null +++ b/hasura/migrations/1585595120824_rename_table_public_cccontract/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."cccontract" rename to "cccontracts"; + type: run_sql diff --git a/hasura/migrations/1585595169060_update_permission_user_public_table_cccontracts/down.yaml b/hasura/migrations/1585595169060_update_permission_user_public_table_cccontracts/down.yaml new file mode 100644 index 000000000..cc00c8e6a --- /dev/null +++ b/hasura/migrations/1585595169060_update_permission_user_public_table_cccontracts/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: cccontracts + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1585595169060_update_permission_user_public_table_cccontracts/up.yaml b/hasura/migrations/1585595169060_update_permission_user_public_table_cccontracts/up.yaml new file mode 100644 index 000000000..568bf087f --- /dev/null +++ b/hasura/migrations/1585595169060_update_permission_user_public_table_cccontracts/up.yaml @@ -0,0 +1,50 @@ +- args: + permission: + allow_upsert: true + check: + courtesycar: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - agreementnumber + - courtesycarid + - jobid + - status + - start + - scheduledreturn + - actualreturn + - kmstart + - kmend + - driver_dlnumber + - driver_dlexpiry + - driver_dlst + - driver_fn + - driver_ln + - driver_addr1 + - driver_addr2 + - driver_city + - driver_state + - driver_zip + - driver_ph1 + - driver_dob + - cc_num + - cc_expiry + - cc_cardholder + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: cccontracts + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585595175602_update_permission_user_public_table_cccontracts/down.yaml b/hasura/migrations/1585595175602_update_permission_user_public_table_cccontracts/down.yaml new file mode 100644 index 000000000..571e819bf --- /dev/null +++ b/hasura/migrations/1585595175602_update_permission_user_public_table_cccontracts/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: cccontracts + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1585595175602_update_permission_user_public_table_cccontracts/up.yaml b/hasura/migrations/1585595175602_update_permission_user_public_table_cccontracts/up.yaml new file mode 100644 index 000000000..ec3e11f0b --- /dev/null +++ b/hasura/migrations/1585595175602_update_permission_user_public_table_cccontracts/up.yaml @@ -0,0 +1,48 @@ +- args: + permission: + allow_aggregations: false + columns: + - actualreturn + - driver_dlexpiry + - driver_dob + - scheduledreturn + - start + - agreementnumber + - kmend + - kmstart + - cc_cardholder + - cc_expiry + - cc_num + - driver_addr1 + - driver_addr2 + - driver_city + - driver_dlnumber + - driver_dlst + - driver_fn + - driver_ln + - driver_ph1 + - driver_state + - driver_zip + - status + - created_at + - updated_at + - courtesycarid + - id + - jobid + computed_fields: [] + filter: + courtesycar: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: cccontracts + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585595180487_update_permission_user_public_table_cccontracts/down.yaml b/hasura/migrations/1585595180487_update_permission_user_public_table_cccontracts/down.yaml new file mode 100644 index 000000000..e443e59f9 --- /dev/null +++ b/hasura/migrations/1585595180487_update_permission_user_public_table_cccontracts/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: cccontracts + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1585595180487_update_permission_user_public_table_cccontracts/up.yaml b/hasura/migrations/1585595180487_update_permission_user_public_table_cccontracts/up.yaml new file mode 100644 index 000000000..dc43d6bf9 --- /dev/null +++ b/hasura/migrations/1585595180487_update_permission_user_public_table_cccontracts/up.yaml @@ -0,0 +1,49 @@ +- args: + permission: + columns: + - actualreturn + - driver_dlexpiry + - driver_dob + - scheduledreturn + - start + - agreementnumber + - kmend + - kmstart + - cc_cardholder + - cc_expiry + - cc_num + - driver_addr1 + - driver_addr2 + - driver_city + - driver_dlnumber + - driver_dlst + - driver_fn + - driver_ln + - driver_ph1 + - driver_state + - driver_zip + - status + - created_at + - updated_at + - courtesycarid + - id + - jobid + filter: + courtesycar: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: cccontracts + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585595189270_update_permission_user_public_table_cccontracts/down.yaml b/hasura/migrations/1585595189270_update_permission_user_public_table_cccontracts/down.yaml new file mode 100644 index 000000000..10d362ec2 --- /dev/null +++ b/hasura/migrations/1585595189270_update_permission_user_public_table_cccontracts/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: cccontracts + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1585595189270_update_permission_user_public_table_cccontracts/up.yaml b/hasura/migrations/1585595189270_update_permission_user_public_table_cccontracts/up.yaml new file mode 100644 index 000000000..dec77695f --- /dev/null +++ b/hasura/migrations/1585595189270_update_permission_user_public_table_cccontracts/up.yaml @@ -0,0 +1,17 @@ +- args: + permission: + filter: + courtesycar: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: cccontracts + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1585598517873_alter_table_public_courtesycars_alter_column_NextServiceKm/down.yaml b/hasura/migrations/1585598517873_alter_table_public_courtesycars_alter_column_NextServiceKm/down.yaml new file mode 100644 index 000000000..18dbd9462 --- /dev/null +++ b/hasura/migrations/1585598517873_alter_table_public_courtesycars_alter_column_NextServiceKm/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "nextservicekm" to "NextServiceKm"; + type: run_sql diff --git a/hasura/migrations/1585598517873_alter_table_public_courtesycars_alter_column_NextServiceKm/up.yaml b/hasura/migrations/1585598517873_alter_table_public_courtesycars_alter_column_NextServiceKm/up.yaml new file mode 100644 index 000000000..ebea996da --- /dev/null +++ b/hasura/migrations/1585598517873_alter_table_public_courtesycars_alter_column_NextServiceKm/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "NextServiceKm" to "nextservicekm"; + type: run_sql diff --git a/hasura/migrations/1585598526238_alter_table_public_courtesycars_alter_column_Damage/down.yaml b/hasura/migrations/1585598526238_alter_table_public_courtesycars_alter_column_Damage/down.yaml new file mode 100644 index 000000000..10e435cf9 --- /dev/null +++ b/hasura/migrations/1585598526238_alter_table_public_courtesycars_alter_column_Damage/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "damage" to "Damage"; + type: run_sql diff --git a/hasura/migrations/1585598526238_alter_table_public_courtesycars_alter_column_Damage/up.yaml b/hasura/migrations/1585598526238_alter_table_public_courtesycars_alter_column_Damage/up.yaml new file mode 100644 index 000000000..340a77413 --- /dev/null +++ b/hasura/migrations/1585598526238_alter_table_public_courtesycars_alter_column_Damage/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "Damage" to "damage"; + type: run_sql diff --git a/hasura/migrations/1585598532674_alter_table_public_courtesycars_alter_column_Notes/down.yaml b/hasura/migrations/1585598532674_alter_table_public_courtesycars_alter_column_Notes/down.yaml new file mode 100644 index 000000000..63586a7e0 --- /dev/null +++ b/hasura/migrations/1585598532674_alter_table_public_courtesycars_alter_column_Notes/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "notes" to "Notes"; + type: run_sql diff --git a/hasura/migrations/1585598532674_alter_table_public_courtesycars_alter_column_Notes/up.yaml b/hasura/migrations/1585598532674_alter_table_public_courtesycars_alter_column_Notes/up.yaml new file mode 100644 index 000000000..65b75bc2a --- /dev/null +++ b/hasura/migrations/1585598532674_alter_table_public_courtesycars_alter_column_Notes/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "Notes" to "notes"; + type: run_sql diff --git a/hasura/migrations/1585598539310_alter_table_public_courtesycars_alter_column_NextServiceDate/down.yaml b/hasura/migrations/1585598539310_alter_table_public_courtesycars_alter_column_NextServiceDate/down.yaml new file mode 100644 index 000000000..3d499e609 --- /dev/null +++ b/hasura/migrations/1585598539310_alter_table_public_courtesycars_alter_column_NextServiceDate/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "nextservicedate" to "NextServiceDate"; + type: run_sql diff --git a/hasura/migrations/1585598539310_alter_table_public_courtesycars_alter_column_NextServiceDate/up.yaml b/hasura/migrations/1585598539310_alter_table_public_courtesycars_alter_column_NextServiceDate/up.yaml new file mode 100644 index 000000000..237122125 --- /dev/null +++ b/hasura/migrations/1585598539310_alter_table_public_courtesycars_alter_column_NextServiceDate/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."courtesycars" rename column "NextServiceDate" to "nextservicedate"; + type: run_sql diff --git a/hasura/migrations/1585703170344_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1585703170344_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..8cc98c238 --- /dev/null +++ b/hasura/migrations/1585703170344_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,253 @@ +- 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 + - 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 + - g_bett_amt + - cieca_ttl + - plate_no + - plate_st + - v_vin + - v_model_yr + - v_model_desc + - v_make_desc + - v_color + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585703170344_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1585703170344_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4715fb662 --- /dev/null +++ b/hasura/migrations/1585703170344_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,252 @@ +- 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 + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585703177515_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1585703177515_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..4973998e3 --- /dev/null +++ b/hasura/migrations/1585703177515_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,251 @@ +- 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 + - cieca_ttl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - g_bett_amt + - 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 + - plate_no + - plate_st + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1585703177515_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1585703177515_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..cf9388142 --- /dev/null +++ b/hasura/migrations/1585703177515_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,250 @@ +- 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 + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1585703194595_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1585703194595_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..6d9512c50 --- /dev/null +++ b/hasura/migrations/1585703194595_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,253 @@ +- 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 + - cieca_ttl + - adj_g_disc + - adj_strdis + - adj_towdis + - adjustment_bottom_line + - clm_total + - ded_amt + - depreciation_taxes + - federal_tax_payable + - federal_tax_rate + - g_bett_amt + - 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 + - plate_no + - plate_st + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1585703194595_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1585703194595_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..87f60eed1 --- /dev/null +++ b/hasura/migrations/1585703194595_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,252 @@ +- 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 + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1585703205875_alter_table_public_jobs_drop_column_service_car/down.yaml b/hasura/migrations/1585703205875_alter_table_public_jobs_drop_column_service_car/down.yaml new file mode 100644 index 000000000..f2b80c903 --- /dev/null +++ b/hasura/migrations/1585703205875_alter_table_public_jobs_drop_column_service_car/down.yaml @@ -0,0 +1,10 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "service_car" text; + type: run_sql +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ALTER COLUMN "service_car" DROP NOT NULL; + type: run_sql diff --git a/hasura/migrations/1585703205875_alter_table_public_jobs_drop_column_service_car/up.yaml b/hasura/migrations/1585703205875_alter_table_public_jobs_drop_column_service_car/up.yaml new file mode 100644 index 000000000..52fc30855 --- /dev/null +++ b/hasura/migrations/1585703205875_alter_table_public_jobs_drop_column_service_car/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "service_car" CASCADE; + type: run_sql diff --git a/hasura/migrations/1585767116722_alter_table_public_courtesycars_add_column_mileage/down.yaml b/hasura/migrations/1585767116722_alter_table_public_courtesycars_add_column_mileage/down.yaml new file mode 100644 index 000000000..9ba2124c5 --- /dev/null +++ b/hasura/migrations/1585767116722_alter_table_public_courtesycars_add_column_mileage/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."courtesycars" DROP COLUMN "mileage"; + type: run_sql diff --git a/hasura/migrations/1585767116722_alter_table_public_courtesycars_add_column_mileage/up.yaml b/hasura/migrations/1585767116722_alter_table_public_courtesycars_add_column_mileage/up.yaml new file mode 100644 index 000000000..126709423 --- /dev/null +++ b/hasura/migrations/1585767116722_alter_table_public_courtesycars_add_column_mileage/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."courtesycars" ADD COLUMN "mileage" numeric NOT NULL + DEFAULT 0; + type: run_sql diff --git a/hasura/migrations/1585767133843_update_permission_user_public_table_courtesycars/down.yaml b/hasura/migrations/1585767133843_update_permission_user_public_table_courtesycars/down.yaml new file mode 100644 index 000000000..b835778b0 --- /dev/null +++ b/hasura/migrations/1585767133843_update_permission_user_public_table_courtesycars/down.yaml @@ -0,0 +1,51 @@ +- args: + role: user + table: + name: courtesycars + 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 + - make + - model + - year + - plate + - color + - vin + - fleetnumber + - purchasedate + - servicestartdate + - serviceenddate + - leaseenddate + - status + - nextservicekm + - nextservicedate + - damage + - notes + - fuel + - registrationexpires + - insuranceexpires + - dailycost + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: courtesycars + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585767133843_update_permission_user_public_table_courtesycars/up.yaml b/hasura/migrations/1585767133843_update_permission_user_public_table_courtesycars/up.yaml new file mode 100644 index 000000000..fe762dd69 --- /dev/null +++ b/hasura/migrations/1585767133843_update_permission_user_public_table_courtesycars/up.yaml @@ -0,0 +1,52 @@ +- args: + role: user + table: + name: courtesycars + 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 + - make + - model + - year + - plate + - color + - vin + - fleetnumber + - purchasedate + - servicestartdate + - serviceenddate + - leaseenddate + - status + - nextservicekm + - nextservicedate + - damage + - notes + - fuel + - registrationexpires + - insuranceexpires + - dailycost + - mileage + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: courtesycars + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1585767138926_update_permission_user_public_table_courtesycars/down.yaml b/hasura/migrations/1585767138926_update_permission_user_public_table_courtesycars/down.yaml new file mode 100644 index 000000000..06a3bc23c --- /dev/null +++ b/hasura/migrations/1585767138926_update_permission_user_public_table_courtesycars/down.yaml @@ -0,0 +1,49 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - insuranceexpires + - leaseenddate + - nextservicedate + - purchasedate + - registrationexpires + - serviceenddate + - servicestartdate + - dailycost + - fuel + - nextservicekm + - color + - damage + - fleetnumber + - make + - model + - notes + - plate + - status + - vin + - year + - 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: courtesycars + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585767138926_update_permission_user_public_table_courtesycars/up.yaml b/hasura/migrations/1585767138926_update_permission_user_public_table_courtesycars/up.yaml new file mode 100644 index 000000000..b0294a184 --- /dev/null +++ b/hasura/migrations/1585767138926_update_permission_user_public_table_courtesycars/up.yaml @@ -0,0 +1,50 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - insuranceexpires + - leaseenddate + - nextservicedate + - purchasedate + - registrationexpires + - serviceenddate + - servicestartdate + - dailycost + - fuel + - mileage + - nextservicekm + - color + - damage + - fleetnumber + - make + - model + - notes + - plate + - status + - vin + - year + - 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: courtesycars + schema: public + type: create_select_permission diff --git a/hasura/migrations/1585767144286_update_permission_user_public_table_courtesycars/down.yaml b/hasura/migrations/1585767144286_update_permission_user_public_table_courtesycars/down.yaml new file mode 100644 index 000000000..b2f45d67c --- /dev/null +++ b/hasura/migrations/1585767144286_update_permission_user_public_table_courtesycars/down.yaml @@ -0,0 +1,51 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_update_permission +- args: + permission: + columns: + - insuranceexpires + - leaseenddate + - nextservicedate + - purchasedate + - registrationexpires + - serviceenddate + - servicestartdate + - dailycost + - fuel + - nextservicekm + - color + - damage + - fleetnumber + - make + - model + - notes + - plate + - status + - vin + - year + - 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: courtesycars + schema: public + type: create_update_permission diff --git a/hasura/migrations/1585767144286_update_permission_user_public_table_courtesycars/up.yaml b/hasura/migrations/1585767144286_update_permission_user_public_table_courtesycars/up.yaml new file mode 100644 index 000000000..86620f18d --- /dev/null +++ b/hasura/migrations/1585767144286_update_permission_user_public_table_courtesycars/up.yaml @@ -0,0 +1,52 @@ +- args: + role: user + table: + name: courtesycars + schema: public + type: drop_update_permission +- args: + permission: + columns: + - insuranceexpires + - leaseenddate + - nextservicedate + - purchasedate + - registrationexpires + - serviceenddate + - servicestartdate + - dailycost + - fuel + - mileage + - nextservicekm + - color + - damage + - fleetnumber + - make + - model + - notes + - plate + - status + - vin + - year + - 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: courtesycars + schema: public + type: create_update_permission diff --git a/hasura/migrations/1586216036874_update_permission_user_public_table_joblines/down.yaml b/hasura/migrations/1586216036874_update_permission_user_public_table_joblines/down.yaml new file mode 100644 index 000000000..c639e07f8 --- /dev/null +++ b/hasura/migrations/1586216036874_update_permission_user_public_table_joblines/down.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/1586216036874_update_permission_user_public_table_joblines/up.yaml b/hasura/migrations/1586216036874_update_permission_user_public_table_joblines/up.yaml new file mode 100644 index 000000000..317c3b0d8 --- /dev/null +++ b/hasura/migrations/1586216036874_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: true + 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/1586284810616_alter_table_public_bodyshops_add_column_shoprates/down.yaml b/hasura/migrations/1586284810616_alter_table_public_bodyshops_add_column_shoprates/down.yaml new file mode 100644 index 000000000..0d06fd743 --- /dev/null +++ b/hasura/migrations/1586284810616_alter_table_public_bodyshops_add_column_shoprates/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "shoprates"; + type: run_sql diff --git a/hasura/migrations/1586284810616_alter_table_public_bodyshops_add_column_shoprates/up.yaml b/hasura/migrations/1586284810616_alter_table_public_bodyshops_add_column_shoprates/up.yaml new file mode 100644 index 000000000..4bc14e6fc --- /dev/null +++ b/hasura/migrations/1586284810616_alter_table_public_bodyshops_add_column_shoprates/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "shoprates" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1586284824617_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1586284824617_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..825ae0c0c --- /dev/null +++ b/hasura/migrations/1586284824617_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,43 @@ +- 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 + - md_responsibility_centers + - messagingservicesid + 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/1586284824617_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1586284824617_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..18a9c8a58 --- /dev/null +++ b/hasura/migrations/1586284824617_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,44 @@ +- 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_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - 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/1586284834270_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1586284834270_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..703a9ce7b --- /dev/null +++ b/hasura/migrations/1586284834270_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,44 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - md_order_statuses + - md_responsibility_centers + - 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/1586284834270_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1586284834270_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..297c7d9db --- /dev/null +++ b/hasura/migrations/1586284834270_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,45 @@ +- 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 + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - region_config + - shopname + - shoprates + - 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/1586365217566_alter_table_public_jobs_add_column_parts_tax_rates/down.yaml b/hasura/migrations/1586365217566_alter_table_public_jobs_add_column_parts_tax_rates/down.yaml new file mode 100644 index 000000000..9f7a0cd30 --- /dev/null +++ b/hasura/migrations/1586365217566_alter_table_public_jobs_add_column_parts_tax_rates/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "parts_tax_rates"; + type: run_sql diff --git a/hasura/migrations/1586365217566_alter_table_public_jobs_add_column_parts_tax_rates/up.yaml b/hasura/migrations/1586365217566_alter_table_public_jobs_add_column_parts_tax_rates/up.yaml new file mode 100644 index 000000000..e5a499ab2 --- /dev/null +++ b/hasura/migrations/1586365217566_alter_table_public_jobs_add_column_parts_tax_rates/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "parts_tax_rates" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1586365232521_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586365232521_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..4715fb662 --- /dev/null +++ b/hasura/migrations/1586365232521_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,252 @@ +- 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 + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1586365232521_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586365232521_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..43bf2e0ab --- /dev/null +++ b/hasura/migrations/1586365232521_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,253 @@ +- 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1586365248281_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586365248281_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..cf9388142 --- /dev/null +++ b/hasura/migrations/1586365248281_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,250 @@ +- 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 + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586365248281_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586365248281_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..1f52ac4cf --- /dev/null +++ b/hasura/migrations/1586365248281_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,251 @@ +- 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586365257227_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586365257227_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..87f60eed1 --- /dev/null +++ b/hasura/migrations/1586365257227_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,252 @@ +- 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 + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586365257227_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586365257227_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..68a2a7ed5 --- /dev/null +++ b/hasura/migrations/1586365257227_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,253 @@ +- 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586879989913_alter_table_public_jobs_add_column_job_totals/down.yaml b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/down.yaml new file mode 100644 index 000000000..371308f87 --- /dev/null +++ b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "job_totals"; + type: run_sql diff --git a/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/up.yaml b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/up.yaml new file mode 100644 index 000000000..2c1b18561 --- /dev/null +++ b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "job_totals" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..43bf2e0ab --- /dev/null +++ b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,253 @@ +- 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..785d7b5d3 --- /dev/null +++ b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,254 @@ +- 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 + - job_totals + - 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..1f52ac4cf --- /dev/null +++ b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,251 @@ +- 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586880014259_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4364ff937 --- /dev/null +++ b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,252 @@ +- 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 + - job_totals + - 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586880020786_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..68a2a7ed5 --- /dev/null +++ b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,253 @@ +- 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586880020786_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..06e843cbc --- /dev/null +++ b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,254 @@ +- 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 + - job_totals + - 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 + - parts_tax_rates + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - plate_no + - plate_st + - 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 + - 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 + - v_color + - v_make_desc + - v_model_desc + - v_model_yr + - v_vin + - 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/1586907397057_create_table_public_timetickets/down.yaml b/hasura/migrations/1586907397057_create_table_public_timetickets/down.yaml new file mode 100644 index 000000000..882adffb8 --- /dev/null +++ b/hasura/migrations/1586907397057_create_table_public_timetickets/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."timetickets"; + type: run_sql diff --git a/hasura/migrations/1586907397057_create_table_public_timetickets/up.yaml b/hasura/migrations/1586907397057_create_table_public_timetickets/up.yaml new file mode 100644 index 000000000..06a8b6c21 --- /dev/null +++ b/hasura/migrations/1586907397057_create_table_public_timetickets/up.yaml @@ -0,0 +1,29 @@ +- 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\".\"timetickets\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"date\" date NOT NULL DEFAULT now(), \"cost_center\" + text NOT NULL, \"employeeid\" uuid NOT NULL, \"jobid\" uuid NOT NULL, \"rate\" + numeric NOT NULL DEFAULT 0, \"productivehrs\" numeric NOT NULL DEFAULT 0, \"actualhrs\" + numeric NOT NULL DEFAULT 0, \"clockon\" timestamptz, \"clockoff\" timestamptz, + \"ciecacode\" text NOT NULL, PRIMARY KEY (\"id\") , FOREIGN KEY (\"employeeid\") + REFERENCES \"public\".\"employees\"(\"id\") ON UPDATE restrict ON DELETE restrict, + FOREIGN KEY (\"jobid\") REFERENCES \"public\".\"jobs\"(\"id\") ON UPDATE restrict + ON DELETE restrict);\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_timetickets_updated_at\"\nBEFORE + UPDATE ON \"public\".\"timetickets\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_timetickets_updated_at\" ON \"public\".\"timetickets\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: timetickets + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1586907431308_track_all_relationships/down.yaml b/hasura/migrations/1586907431308_track_all_relationships/down.yaml new file mode 100644 index 000000000..1e6704090 --- /dev/null +++ b/hasura/migrations/1586907431308_track_all_relationships/down.yaml @@ -0,0 +1,24 @@ +- args: + relationship: timetickets + table: + name: employees + schema: public + type: drop_relationship +- args: + relationship: timetickets + table: + name: jobs + schema: public + type: drop_relationship +- args: + relationship: job + table: + name: timetickets + schema: public + type: drop_relationship +- args: + relationship: employee + table: + name: timetickets + schema: public + type: drop_relationship diff --git a/hasura/migrations/1586907431308_track_all_relationships/up.yaml b/hasura/migrations/1586907431308_track_all_relationships/up.yaml new file mode 100644 index 000000000..5c7630853 --- /dev/null +++ b/hasura/migrations/1586907431308_track_all_relationships/up.yaml @@ -0,0 +1,40 @@ +- args: + name: timetickets + table: + name: employees + schema: public + using: + foreign_key_constraint_on: + column: employeeid + table: + name: timetickets + schema: public + type: create_array_relationship +- args: + name: timetickets + table: + name: jobs + schema: public + using: + foreign_key_constraint_on: + column: jobid + table: + name: timetickets + schema: public + type: create_array_relationship +- args: + name: job + table: + name: timetickets + schema: public + using: + foreign_key_constraint_on: jobid + type: create_object_relationship +- args: + name: employee + table: + name: timetickets + schema: public + using: + foreign_key_constraint_on: employeeid + type: create_object_relationship diff --git a/hasura/migrations/1586907537557_update_permission_user_public_table_timetickets/down.yaml b/hasura/migrations/1586907537557_update_permission_user_public_table_timetickets/down.yaml new file mode 100644 index 000000000..fdcea370b --- /dev/null +++ b/hasura/migrations/1586907537557_update_permission_user_public_table_timetickets/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: timetickets + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1586907537557_update_permission_user_public_table_timetickets/up.yaml b/hasura/migrations/1586907537557_update_permission_user_public_table_timetickets/up.yaml new file mode 100644 index 000000000..3fa31fb9f --- /dev/null +++ b/hasura/migrations/1586907537557_update_permission_user_public_table_timetickets/up.yaml @@ -0,0 +1,36 @@ +- 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 + - date + - cost_center + - employeeid + - jobid + - rate + - productivehrs + - actualhrs + - clockon + - clockoff + - ciecacode + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: timetickets + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1586907552709_update_permission_user_public_table_timetickets/down.yaml b/hasura/migrations/1586907552709_update_permission_user_public_table_timetickets/down.yaml new file mode 100644 index 000000000..270f493b2 --- /dev/null +++ b/hasura/migrations/1586907552709_update_permission_user_public_table_timetickets/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: timetickets + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1586907552709_update_permission_user_public_table_timetickets/up.yaml b/hasura/migrations/1586907552709_update_permission_user_public_table_timetickets/up.yaml new file mode 100644 index 000000000..5ad4ebe3e --- /dev/null +++ b/hasura/migrations/1586907552709_update_permission_user_public_table_timetickets/up.yaml @@ -0,0 +1,34 @@ +- args: + permission: + allow_aggregations: false + columns: + - date + - actualhrs + - productivehrs + - rate + - ciecacode + - cost_center + - clockoff + - clockon + - created_at + - updated_at + - employeeid + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: timetickets + schema: public + type: create_select_permission diff --git a/hasura/migrations/1586907564632_update_permission_user_public_table_timetickets/down.yaml b/hasura/migrations/1586907564632_update_permission_user_public_table_timetickets/down.yaml new file mode 100644 index 000000000..2cca595cb --- /dev/null +++ b/hasura/migrations/1586907564632_update_permission_user_public_table_timetickets/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: timetickets + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1586907564632_update_permission_user_public_table_timetickets/up.yaml b/hasura/migrations/1586907564632_update_permission_user_public_table_timetickets/up.yaml new file mode 100644 index 000000000..04b050c44 --- /dev/null +++ b/hasura/migrations/1586907564632_update_permission_user_public_table_timetickets/up.yaml @@ -0,0 +1,35 @@ +- args: + permission: + columns: + - date + - actualhrs + - productivehrs + - rate + - ciecacode + - cost_center + - clockoff + - clockon + - created_at + - updated_at + - employeeid + - 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: timetickets + schema: public + type: create_update_permission diff --git a/hasura/migrations/1586907569694_update_permission_user_public_table_timetickets/down.yaml b/hasura/migrations/1586907569694_update_permission_user_public_table_timetickets/down.yaml new file mode 100644 index 000000000..92ce7cf39 --- /dev/null +++ b/hasura/migrations/1586907569694_update_permission_user_public_table_timetickets/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: timetickets + schema: public + type: drop_delete_permission diff --git a/hasura/migrations/1586907569694_update_permission_user_public_table_timetickets/up.yaml b/hasura/migrations/1586907569694_update_permission_user_public_table_timetickets/up.yaml new file mode 100644 index 000000000..d84cea1b8 --- /dev/null +++ b/hasura/migrations/1586907569694_update_permission_user_public_table_timetickets/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: timetickets + schema: public + type: create_delete_permission diff --git a/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/down.yaml b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/down.yaml new file mode 100644 index 000000000..e96404a91 --- /dev/null +++ b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "template_header"; + type: run_sql diff --git a/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/up.yaml b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/up.yaml new file mode 100644 index 000000000..99b37f336 --- /dev/null +++ b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "template_header" text NULL; + type: run_sql diff --git a/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..18a9c8a58 --- /dev/null +++ b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,44 @@ +- 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_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - 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/1587060816740_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..ffca2644f --- /dev/null +++ b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,45 @@ +- 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_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - state + - state_tax_id + - template_header + - 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/1587060828703_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..297c7d9db --- /dev/null +++ b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,45 @@ +- 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 + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - region_config + - shopname + - shoprates + - 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/1587060828703_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..fc6bba57f --- /dev/null +++ b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,46 @@ +- 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 + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - 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/1587062110920_create_table_public_templates/down.yaml b/hasura/migrations/1587062110920_create_table_public_templates/down.yaml new file mode 100644 index 000000000..fd0fffff3 --- /dev/null +++ b/hasura/migrations/1587062110920_create_table_public_templates/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."templates"; + type: run_sql diff --git a/hasura/migrations/1587062110920_create_table_public_templates/up.yaml b/hasura/migrations/1587062110920_create_table_public_templates/up.yaml new file mode 100644 index 000000000..18fbf0bab --- /dev/null +++ b/hasura/migrations/1587062110920_create_table_public_templates/up.yaml @@ -0,0 +1,24 @@ +- 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\".\"templates\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"bodyshopid\" uuid, \"name\" text NOT NULL, \"html\" + text NOT NULL, \"query\" text NOT NULL, PRIMARY KEY (\"id\") , FOREIGN KEY (\"bodyshopid\") + REFERENCES \"public\".\"bodyshops\"(\"id\") ON UPDATE restrict ON DELETE restrict);\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_templates_updated_at\"\nBEFORE + UPDATE ON \"public\".\"templates\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_templates_updated_at\" ON \"public\".\"templates\" \nIS + 'trigger to set value of column \"updated_at\" to current timestamp on row update';" + type: run_sql +- args: + name: templates + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1587062123352_track_all_relationships/down.yaml b/hasura/migrations/1587062123352_track_all_relationships/down.yaml new file mode 100644 index 000000000..a170056fb --- /dev/null +++ b/hasura/migrations/1587062123352_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: templates + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: templates + schema: public + type: drop_relationship diff --git a/hasura/migrations/1587062123352_track_all_relationships/up.yaml b/hasura/migrations/1587062123352_track_all_relationships/up.yaml new file mode 100644 index 000000000..2c4ab676e --- /dev/null +++ b/hasura/migrations/1587062123352_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: templates + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: templates + schema: public + type: create_array_relationship +- args: + name: bodyshop + table: + name: templates + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship diff --git a/hasura/migrations/1587062292554_update_permission_user_public_table_templates/down.yaml b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/down.yaml new file mode 100644 index 000000000..e02f50e10 --- /dev/null +++ b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: templates + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1587062292554_update_permission_user_public_table_templates/up.yaml b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/up.yaml new file mode 100644 index 000000000..551467acc --- /dev/null +++ b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/up.yaml @@ -0,0 +1,30 @@ +- args: + permission: + allow_aggregations: false + columns: + - html + - name + - query + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + _or: + - bodyshopid: + _is_null: true + - bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: templates + schema: public + type: create_select_permission diff --git a/hasura/migrations/1587062297744_update_permission_user_public_table_templates/down.yaml b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/down.yaml new file mode 100644 index 000000000..5820d3827 --- /dev/null +++ b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: templates + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1587062297744_update_permission_user_public_table_templates/up.yaml b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/up.yaml new file mode 100644 index 000000000..354ddfc4d --- /dev/null +++ b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/up.yaml @@ -0,0 +1,31 @@ +- args: + permission: + columns: + - html + - name + - query + - created_at + - updated_at + - bodyshopid + - id + filter: + _or: + - bodyshopid: + _is_null: true + - bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: templates + schema: public + type: create_update_permission diff --git a/hasura/migrations/1587398898639_alter_table_public_bodyshops_add_column_textid/down.yaml b/hasura/migrations/1587398898639_alter_table_public_bodyshops_add_column_textid/down.yaml new file mode 100644 index 000000000..6447565eb --- /dev/null +++ b/hasura/migrations/1587398898639_alter_table_public_bodyshops_add_column_textid/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "textid"; + type: run_sql diff --git a/hasura/migrations/1587398898639_alter_table_public_bodyshops_add_column_textid/up.yaml b/hasura/migrations/1587398898639_alter_table_public_bodyshops_add_column_textid/up.yaml new file mode 100644 index 000000000..b0083e8a5 --- /dev/null +++ b/hasura/migrations/1587398898639_alter_table_public_bodyshops_add_column_textid/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "textid" text NULL; + type: run_sql diff --git a/hasura/migrations/1587398906593_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1587398906593_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..ffca2644f --- /dev/null +++ b/hasura/migrations/1587398906593_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,45 @@ +- 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_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - state + - state_tax_id + - template_header + - 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/1587398906593_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1587398906593_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..f107f80d5 --- /dev/null +++ b/hasura/migrations/1587398906593_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,46 @@ +- 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_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - state + - state_tax_id + - template_header + - textid + - 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/1587398924400_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1587398924400_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..fc6bba57f --- /dev/null +++ b/hasura/migrations/1587398924400_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,46 @@ +- 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 + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - 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/1587398924400_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1587398924400_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..5ae0c6dad --- /dev/null +++ b/hasura/migrations/1587398924400_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,44 @@ +- 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 + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - shopname + - shoprates + - 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/1587408177344_alter_table_public_documents_add_column_type/down.yaml b/hasura/migrations/1587408177344_alter_table_public_documents_add_column_type/down.yaml new file mode 100644 index 000000000..ffaf72873 --- /dev/null +++ b/hasura/migrations/1587408177344_alter_table_public_documents_add_column_type/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."documents" DROP COLUMN "type"; + type: run_sql diff --git a/hasura/migrations/1587408177344_alter_table_public_documents_add_column_type/up.yaml b/hasura/migrations/1587408177344_alter_table_public_documents_add_column_type/up.yaml new file mode 100644 index 000000000..a0b878812 --- /dev/null +++ b/hasura/migrations/1587408177344_alter_table_public_documents_add_column_type/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."documents" ADD COLUMN "type" text NULL; + type: run_sql diff --git a/hasura/migrations/1587408195798_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1587408195798_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..3d103eca5 --- /dev/null +++ b/hasura/migrations/1587408195798_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - id + - jobid + - key + - name + - thumb_url + - updated_at + - uploaded_by + - url + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: documents + schema: public + type: create_select_permission diff --git a/hasura/migrations/1587408195798_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1587408195798_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..f933e16a3 --- /dev/null +++ b/hasura/migrations/1587408195798_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - id + - invoiceid + - jobid + - key + - name + - thumb_url + - type + - updated_at + - uploaded_by + - url + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: documents + schema: public + type: create_select_permission diff --git a/hasura/migrations/1587408202367_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1587408202367_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..2c0ca6648 --- /dev/null +++ b/hasura/migrations/1587408202367_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: documents + 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 + - id + - jobid + - key + - name + - thumb_url + - updated_at + - uploaded_by + - url + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1587408202367_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1587408202367_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..687d76892 --- /dev/null +++ b/hasura/migrations/1587408202367_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - key + - name + - thumb_url + - type + - uploaded_by + - url + - created_at + - updated_at + - id + - invoiceid + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1587408207340_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1587408207340_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..515730b23 --- /dev/null +++ b/hasura/migrations/1587408207340_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_update_permission +- args: + permission: + columns: + - created_at + - id + - jobid + - key + - name + - thumb_url + - updated_at + - uploaded_by + - url + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_update_permission diff --git a/hasura/migrations/1587408207340_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1587408207340_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..1f0b95e9a --- /dev/null +++ b/hasura/migrations/1587408207340_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_update_permission +- args: + permission: + columns: + - key + - name + - thumb_url + - type + - uploaded_by + - url + - created_at + - updated_at + - id + - invoiceid + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_update_permission diff --git a/hasura/migrations/1587417631171_run_sql_migration/down.yaml b/hasura/migrations/1587417631171_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1587417631171_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1587417631171_run_sql_migration/up.yaml b/hasura/migrations/1587417631171_run_sql_migration/up.yaml new file mode 100644 index 000000000..0ec8bfdb8 --- /dev/null +++ b/hasura/migrations/1587417631171_run_sql_migration/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: true + read_only: false + sql: "ALTER TABLE documents \r\nDROP COLUMN url ;\r\nALTER TABLE documents \r\nDROP + COLUMN thumb_url ;" + type: run_sql diff --git a/hasura/migrations/1587417677218_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1587417677218_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..dd7923c4f --- /dev/null +++ b/hasura/migrations/1587417677218_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1587417677218_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1587417677218_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..56a5dbd56 --- /dev/null +++ b/hasura/migrations/1587417677218_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,32 @@ +- 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 + - uploaded_by + - jobid + - name + - key + - invoiceid + - type + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1587417682323_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1587417682323_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..51466ca34 --- /dev/null +++ b/hasura/migrations/1587417682323_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1587417682323_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1587417682323_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..a0e4d6d93 --- /dev/null +++ b/hasura/migrations/1587417682323_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,30 @@ +- args: + permission: + allow_aggregations: false + columns: + - key + - name + - type + - uploaded_by + - created_at + - updated_at + - id + - invoiceid + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: documents + schema: public + type: create_select_permission diff --git a/hasura/migrations/1587417686752_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1587417686752_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..d9430d461 --- /dev/null +++ b/hasura/migrations/1587417686752_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1587417686752_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1587417686752_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..44c270411 --- /dev/null +++ b/hasura/migrations/1587417686752_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,22 @@ +- args: + permission: + columns: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_update_permission diff --git a/package.json b/package.json index b1de34629..b729e983b 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "license": "UNLICENSED", "engines": { - "node": "12.13.1", + "node": "12.16.2", "npm": "6.11.3" }, "scripts": { @@ -16,20 +16,23 @@ "heroku-postbuild": "cd client && npm install && npm install --only=dev --no-shrinkwrap && npm run build" }, "dependencies": { - "apollo-cache-persist": "^0.1.1", - "aws-sdk": "^2.603.0", "body-parser": "^1.18.3", + "cloudinary": "^1.21.0", "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" + "graphql-request": "^1.8.2", + "handlebars": "^4.7.6", + "nodemailer": "^6.4.4", + "phone": "^2.4.8", + "twilio": "^3.41.1" }, "devDependencies": { - "concurrently": "^4.0.1", - "eslint": "^6.7.2", + "concurrently": "^5.1.0", + "eslint": "^6.8.0", "eslint-plugin-promise": "^4.2.1", - "hasura-cli": "^1.0.0-beta.10" + "source-map-explorer": "^2.4.2" } } diff --git a/s3upload.js b/s3upload.js deleted file mode 100644 index 1091873b2..000000000 --- a/s3upload.js +++ /dev/null @@ -1,95 +0,0 @@ -var aws = require("aws-sdk"); -require("dotenv").config(); -// Configure aws with your accessKeyId and your secretAccessKey -aws.config.update({ - region: "ca-central-1", // Put your aws region here - accessKeyId: process.env.AWSAccessKeyId, - secretAccessKey: process.env.AWSSecretKey -}); - -const S3_BUCKET = process.env.Bucket; -// Now lets export this function so we can call it from somewhere else - -exports.sign_s3 = (req, res) => { - console.log("Get S3 Signed Put for bucket: " + S3_BUCKET); - const s3 = new aws.S3(); // Create a new instance of S3 - // if (!req.body.fileName || req.body.fileType) { - // console.log('req.body.fileName', req.body.fileName) - // console.log('req.body.fileType', req.body.fileType) - // res.json({ success: false, error: "fileName or fileType missing." }); - // console.log("Error: fileName or fileType missing. "); - // return; - // } - const fileName = req.body.fileName; - const fileType = req.body.fileType; - // Set up the payload of what we are sending to the S3 api - const s3Params = { - Bucket: S3_BUCKET, - Key: fileName, - Expires: 500, - ContentType: fileType, - ACL: "public-read" - }; - // Make a request to the S3 API to get a signed URL which we can use to upload our file - s3.getSignedUrl("putObject", s3Params, (err, data) => { - if (err) { - console.log(err); - res.json({ success: false, error: err }); - } - // Data payload of what we are sending back, the url of the signedRequest and a URL where we can access the content after its saved. - const returnData = { - signedRequest: data, - url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}` - }; - // Send it all back - res.json({ success: true, data: { returnData } }); - }); -}; - -exports.get_s3 = (req, res) => { - const s3 = new aws.S3(); // Create a new instance of S3 - const fileName = req.body.fileName; - //const fileType = req.body.fileType; - // Set up the payload of what we are sending to the S3 api - const s3Params = { - Bucket: S3_BUCKET, - Key: fileName, - Expires: 500 - }; - // Make a request to the S3 API to get a signed URL which we can use to upload our file - s3.getSignedUrl("getObject", s3Params, (err, data) => { - if (err) { - console.log(err); - res.json({ success: false, error: err }); - } - // Data payload of what we are sending back, the url of the signedRequest and a URL where we can access the content after its saved. - const returnData = { - signedRequest: data, - url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}` - }; - // Send it all back - res.json({ success: true, data: { returnData } }); - }); -}; - -exports.delete_s3 = (req, res) => { - const s3 = new aws.S3(); // Create a new instance of S3 - const fileName = req.body.fileName; - //const fileType = req.body.fileType; - // Set up the payload of what we are sending to the S3 api - console.log("fileName", req.body); - const s3Params = { - Bucket: S3_BUCKET, - Key: fileName - }; - - s3.deleteObject(s3Params, function(err, data) { - if (err) { - res.json({ success: false, message: err.message }); - } - // error - else { - res.json({ success: true, data }); - } // deleted - }); -}; diff --git a/sendemail.js b/sendemail.js new file mode 100644 index 000000000..4ae843181 --- /dev/null +++ b/sendemail.js @@ -0,0 +1,46 @@ +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); + console.log("[EMAIL] Incoming Message", req.body.from.name); + } + 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..68629640c 100644 --- a/server.js +++ b/server.js @@ -3,7 +3,8 @@ const cors = require("cors"); const bodyParser = require("body-parser"); const path = require("path"); const compression = require("compression"); -var enforce = require("express-sslify"); +const twilio = require("twilio"); +//var enforce = require("express-sslify"); if (process.env.NODE_ENV !== "production") require("dotenv").config(); const https = require("https"); @@ -11,22 +12,49 @@ const fs = require("fs"); const app = express(); const port = process.env.PORT || 5000; +//const port = 5000; app.use(compression()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); -app.use(enforce.HTTPS({ trustProtoHeader: true })); +//app.use(enforce.HTTPS({ trustProtoHeader: true })); app.use(cors()); -var s3upload = require("./s3upload"); -app.post("/sign_s3", s3upload.sign_s3); -app.get("/sign_s3", s3upload.get_s3); -app.post("/delete_s3", s3upload.delete_s3); +//Email Based Paths. +var sendEmail = require("./sendemail.js"); +app.post("/sendemail", sendEmail.sendEmail); -// app.get("/test", function(req, res) { -// res.json({ success: true }); -// }); +//Test route to ensure Express is responding. +app.get("/test", function (req, res) { + res.json({ success: true }); +}); +//Cloudinary Media Paths +var media = require("./server/media/media"); +app.post("/media/sign", media.createSignedUploadURL); +app.post("/media/download", media.downloadFiles); + +//SMS/Twilio Paths +var smsReceive = require("./server/sms/receive"); +app.post( + "/sms/receive", + twilio.webhook({ validate: process.env.NODE_ENV === "PRODUCTION" }), + smsReceive.receive +); +var smsSend = require("./server/sms/send"); +app.post("/sms/send", smsSend.send); +var smsStatus = require("./server/sms/status"); +app.post( + "/sms/status", + twilio.webhook({ validate: process.env.NODE_ENV === "PRODUCTION" }), + smsStatus.status +); + +//Handlebars Paths for Email/Report Rendering +var renderHandlebars = require("./server/render/renderHandlebars"); +app.post("/render", renderHandlebars.render); + +//Serve React App if in Production if (process.env.NODE_ENV === "production") { app.use(express.static(path.join(__dirname, "client/build"))); @@ -34,13 +62,13 @@ if (process.env.NODE_ENV === "production") { res.sendFile(path.resolve(__dirname, "..", "build", "service-worker.js")); }); - app.get("*", function(req, res) { + app.get("*", function (req, res) { res.sendFile(path.join(__dirname, "client/build", "index.html")); }); } if (process.env.NODE_ENV === "production") { - app.listen(port, error => { + app.listen(port, (error) => { if (error) throw error; console.log("[PRODUCTION] Server running on port " + port); }); @@ -50,11 +78,11 @@ if (process.env.NODE_ENV === "production") { { key: fs.readFileSync("./key.pem"), cert: fs.readFileSync("./cert.pem"), - passphrase: "Wl0d8k@!" + passphrase: "Wl0d8k@!", }, app ) - .listen(port, error => { + .listen(port, (error) => { if (error) throw error; console.log("[DEV/STAGING] Mock HTTPS Server running on port " + port); }); diff --git a/server/graphql-client/graphql-client.js b/server/graphql-client/graphql-client.js new file mode 100644 index 000000000..2307187e7 --- /dev/null +++ b/server/graphql-client/graphql-client.js @@ -0,0 +1,9 @@ +const GraphQLClient = require("graphql-request").GraphQLClient; +require("dotenv").config(); + +//TODO May need to use a different client that includes caching of resources. +exports.client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, { + headers: { + "x-hasura-admin-secret": process.env.HASURA_ADMIN_SECRET + } +}); diff --git a/server/graphql-client/queries.js b/server/graphql-client/queries.js new file mode 100644 index 000000000..5392db6a3 --- /dev/null +++ b/server/graphql-client/queries.js @@ -0,0 +1,33 @@ +exports.FIND_BODYSHOP_BY_MESSAGING_SERVICE_SID = ` +query FIND_BODYSHOP_BY_MESSAGING_SERVICE_SID( + $mssid: String! + $phone: String! + ) { + bodyshops(where: { messagingservicesid: { _eq: $mssid } }) { + id + conversations(where: { phone_num: { _eq: $phone } }) { + id + } + } + } +`; + +exports.INSERT_MESSAGE = ` +mutation INSERT_MESSAGE($msg: [messages_insert_input!]!) { + insert_messages(objects: $msg) { + returning { + id + } + } + } + `; + +exports.UPDATE_MESSAGE_STATUS = ` +mutation UPDATE_MESSAGE($msid: String!, $fields: messages_set_input!) { + update_messages(where: { msid: { _eq: $msid } }, _set: $fields) { + returning { + id + } + } + } + `; diff --git a/server/media/media.js b/server/media/media.js new file mode 100644 index 000000000..7fa9ae259 --- /dev/null +++ b/server/media/media.js @@ -0,0 +1,21 @@ +require("dotenv").config(); + +var cloudinary = require("cloudinary").v2; +cloudinary.config(process.env.CLOUDINARY_URL); + +exports.createSignedUploadURL = (req, res) => { + console.log("Request to create signed upload URL for Cloudinary.", req.body); + + res.send( + cloudinary.utils.api_sign_request( + req.body, + process.env.CLOUDINARY_API_SECRET + ) + ); +}; + +exports.downloadFiles = (req, res) => { + const { ids } = req.body; + const url = cloudinary.utils.download_zip_url({ public_ids: ids }); + res.send(url); +}; diff --git a/server/render/renderHandlebars.js b/server/render/renderHandlebars.js new file mode 100644 index 000000000..db1a381c5 --- /dev/null +++ b/server/render/renderHandlebars.js @@ -0,0 +1,19 @@ +require("dotenv").config(); +const Handlebars = require("handlebars"); + +exports.render = (req, res) => { + //Perform request validation + let view; + console.log("[HJS Render] New Render Request."); + + //console.log("[HJS Render] Context", req.body.context); + if (req.body.context.bodyshop.template_header) { + console.log("[HJS Render] Including Header"); + view = `${req.body.context.bodyshop.template_header}${req.body.view}`; + } else { + console.log("[HJS Render] No header to include."); + view = req.body.view; + } + var template = Handlebars.compile(view); + res.send(template(req.body.context)); +}; diff --git a/server/sms/receive.js b/server/sms/receive.js new file mode 100644 index 000000000..7f5f3c733 --- /dev/null +++ b/server/sms/receive.js @@ -0,0 +1,87 @@ +require("dotenv").config(); +const client = require("../graphql-client/graphql-client").client; +const queries = require("../graphql-client/queries"); +const phone = require("phone"); + +exports.receive = (req, res) => { + //Perform request validation + if ( + !!!req.body || + !!!req.body.MessagingServiceSid || + !!!req.body.SmsMessageSid + ) { + res.status(400); + res.json({ success: false, error: "Malformed Request" }); + } else { + client + .request(queries.FIND_BODYSHOP_BY_MESSAGING_SERVICE_SID, { + mssid: req.body.MessagingServiceSid, + phone: phone(req.body.From)[0] + }) + .then(response => { + //TODO Add logic for handling MMS. + let newMessage = { msid: req.body.SmsMessageSid, text: req.body.Body }; + if (response.bodyshops[0]) { + //Found a bodyshop - should always happen. + if (response.bodyshops[0].conversations.length === 0) { + //No conversation Found, create one. + console.log("[SMS Receive] No conversation found. Creating one."); + newMessage.conversation = { + data: { + bodyshopid: response.bodyshops[0].id, + phone_num: phone(req.body.From)[0] + } + }; + } else if (response.bodyshops[0].conversations.length === 1) { + //Just add it to the conversation + console.log("[SMS Receive] Conversation found. Added ID."); + newMessage.conversationid = + response.bodyshops[0].conversations[0].id; + } else { + //We should never get here. + console.log( + "Massive Error: Duplicate Phone Numbers for MSSID: " + + req.body.MessagingServiceSid + ); + } + + client + .request(queries.INSERT_MESSAGE, { msg: newMessage }) + .then(r2 => { + res.status(200).end(); + }) + .catch(e2 => { + console.log("e2", e2); + res.status(500).json(e2); + }); + } + }) + .catch(e1 => { + console.log("e1", e1); + res.status(500).json(e1); + }); + } +}; + +// const sampleMessage: { +// "ToCountry": "CA", +// "ToState": "BC", +// "SmsMessageSid": "SMad7bddaf3454c0904999d6018b1e8f49", +// "NumMedia": "0", +// "ToCity": "Vancouver", +// "FromZip": "", +// "SmsSid": "SMad7bddaf3454c0904999d6018b1e8f49", +// "FromState": "BC", +// "SmsStatus": "received", +// "FromCity": "VANCOUVER", +// "Body": "Hi", +// "FromCountry": "CA", +// "To": "+16043301606", +// "MessagingServiceSid": "MG6e259e2add04ffa0d0aa355038670ee1", +// "ToZip": "", +// "NumSegments": "1", +// "MessageSid": "SMad7bddaf3454c0904999d6018b1e8f49", +// "AccountSid": "AC6c09d337d6b9c68ab6488c2052bd457c", +// "From": "+16049992002", +// "ApiVersion": "2010-04-01" +// } diff --git a/server/sms/send.js b/server/sms/send.js new file mode 100644 index 000000000..51d418980 --- /dev/null +++ b/server/sms/send.js @@ -0,0 +1,49 @@ +require("dotenv").config(); +const twilio = require("twilio"); +const phone = require("phone"); +const queries = require("../graphql-client/queries"); + +const client = twilio( + process.env.TWILIO_AUTH_TOKEN, + process.env.TWILIO_AUTH_KEY +); +const gqlClient = require("../graphql-client/graphql-client").client; + +exports.send = (req, res) => { + const { to, messagingServiceSid, body, conversationid } = req.body; + console.log("[Sending Sms] " + conversationid + " | " + body); + if (!!to && !!messagingServiceSid && !!body && !!conversationid) { + client.messages + .create({ + body: body, + messagingServiceSid: messagingServiceSid, + to: phone(to)[0] + }) + .then(message => { + let newMessage = { + msid: message.sid, + text: body, + conversationid, + isoutbound: true + }; + gqlClient + .request(queries.INSERT_MESSAGE, { msg: newMessage }) + .then(r2 => { + console.log("Responding GQL Message ID", JSON.stringify(r2)); + res.sendStatus(200); + }) + .catch(e2 => { + console.log("e2", e2); + //res.json({ success: false, message: e2 }); + }); + }) + .catch(e1 => { + //res.json({ success: false, message: error }); + console.log("e1", e1); + }); + } else { + res + .status(400) + .json({ success: false, message: "Missing required parameter(s)." }); + } +}; diff --git a/server/sms/status.js b/server/sms/status.js new file mode 100644 index 000000000..8522f5e2d --- /dev/null +++ b/server/sms/status.js @@ -0,0 +1,33 @@ +require("dotenv").config(); +const client = require("../graphql-client/graphql-client").client; +const queries = require("../graphql-client/queries"); +const phone = require("phone"); + +exports.status = (req, res) => { + const { SmsSid, SmsStatus } = req.body; + client + .request(queries.UPDATE_MESSAGE_STATUS, { + msid: SmsSid, + fields: { status: SmsStatus } + }) + .then(response => { + console.log("Message Updated"); + }) + .catch(error => { + console.log("Error updating message status", error); + }); + res.sendStatus(200); +}; + +// Inbound Sample +// { +// "SmsSid": "SM5205ea340e06437799d9345e7283457c", +// "SmsStatus": "queued", +// "MessageStatus": "queued", +// "To": "+16049992002", +// "MessagingServiceSid": "MG6e259e2add04ffa0d0aa355038670ee1", +// "MessageSid": "SM5205ea340e06437799d9345e7283457c", +// "AccountSid": "AC6c09d337d6b9c68ab6488c2052bd457c", +// "From": "+16043301606", +// "ApiVersion": "2010-04-01" +// } diff --git a/yarn.lock b/yarn.lock index ee298a6d4..fe8e97221 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,160 +18,65 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@google-cloud/paginator@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-2.0.3.tgz#c7987ad05d1c3ebcef554381be80e9e8da4e4882" - integrity sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg== +"@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: - arrify "^2.0.0" - extend "^3.0.2" + "@types/connect" "*" + "@types/node" "*" -"@google-cloud/precise-date@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-1.0.3.tgz#39c600ed52213f4158692a72c90d13b2162a93d2" - integrity sha512-wWnDGh9y3cJHLuVEY8t6un78vizzMWsS7oIWKeFtPj+Ndy+dXvHW0HTx29ZUhen+tswSlQYlwFubvuRP5kKdzQ== +"@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== -"@google-cloud/projectify@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-1.0.4.tgz#28daabebba6579ed998edcadf1a8f3be17f3b5f0" - integrity sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg== - -"@google-cloud/promisify@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-1.0.4.tgz#ce86ffa94f9cfafa2e68f7b3e4a7fad194189723" - integrity sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ== - -"@google-cloud/pubsub@^1.1.5": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-1.1.6.tgz#67ade0a44dd01e4bc834809a4fe3b621b3659256" - integrity sha512-yx8cBFLs7c9r2td2Ab2fPCmLa2tBQvEyFEy2xUVyQlNclUW3Zg2EKGAa6/Y2be/Yp3GC3Q7fBa9nR9AwLiB84Q== - dependencies: - "@google-cloud/paginator" "^2.0.0" - "@google-cloud/precise-date" "^1.0.0" - "@google-cloud/projectify" "^1.0.0" - "@google-cloud/promisify" "^1.0.0" - "@sindresorhus/is" "^1.0.0" - "@types/duplexify" "^3.6.0" - "@types/long" "^4.0.0" - arrify "^2.0.0" - async-each "^1.0.1" - extend "^3.0.2" - google-auth-library "^5.5.0" - google-gax "^1.7.5" - is-stream-ended "^0.1.4" - lodash.snakecase "^4.1.1" - p-defer "^3.0.0" - protobufjs "^6.8.1" - -"@grpc/grpc-js@^0.6.12": - version "0.6.14" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.6.14.tgz#956d38e8541af2296fdb651fcc6e80f30e51b3b5" - integrity sha512-M6q3MtHzk0NQPs1PB+SXSJtkDtK8WXJh+1B1WVJQp5HTURadzj9t1bUb/Fjhq+K57lKsOgL60r8WGmE7vks1eg== - dependencies: - semver "^6.2.0" - -"@grpc/proto-loader@^0.5.1": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.3.tgz#a233070720bf7560c4d70e29e7950c72549a132c" - integrity sha512-8qvUtGg77G2ZT2HqdqYoM/OY97gQd/0crSG34xNmZ4ZOsv3aQT/FQV9QfZPazTGna6MIoyUd+u6AxsoZjJ/VMQ== - dependencies: - lodash.camelcase "^4.3.0" - protobufjs "^6.8.6" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= - -"@sindresorhus/is@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-1.2.0.tgz#63ce3638cb85231f3704164c90a18ef816da3fb7" - integrity sha512-mwhXGkRV5dlvQc4EgPDxDxO6WuMBVymGFd1CA+2Y+z5dG9MNspoQ+AWjl/Ld1MnpCL8AKbosZlDVohqcIwuWsw== - -"@types/duplexify@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.0.tgz#dfc82b64bd3a2168f5bd26444af165bf0237dcd8" - integrity sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A== +"@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/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== +"@types/express-serve-static-core@*": + version "4.17.3" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.3.tgz#dc8068ee3e354d7fba69feb86b3dfeee49b10f09" + integrity sha512-sHEsvEzjqN+zLbqP+8OXTipc10yH1QLR+hnr5uw29gi9AhCAAAdri8ClNV7iMdrJrIzXIQtlkPvq8tJGhj3QJQ== + dependencies: + "@types/node" "*" + "@types/range-parser" "*" + +"@types/express@^4.17.3": + version "4.17.3" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.3.tgz#38e4458ce2067873b09a73908df488870c303bd9" + integrity sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + +"@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/node@*": version "12.12.17" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.17.tgz#191b71e7f4c325ee0fb23bc4a996477d92b8c39b" integrity sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA== -"@types/node@^10.1.0": - version "10.17.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.9.tgz#4f251a1ed77ac7ef09d456247d67fc8173f6b9da" - integrity sha512-+6VygF9LbG7Gaqeog2G7u1+RUcmo0q1rI+2ZxdIg2fAUngk5Vz9fOCHXdloNUOHEPd1EuuOpL5O0CdgN9Fx5UQ== +"@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== -JSONStream@^1.2.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== +"@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: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" + "@types/express-serve-static-core" "*" + "@types/mime" "*" accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" @@ -191,14 +96,7 @@ acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== -agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: +ajv@^6.10.0, ajv@^6.10.2: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -208,18 +106,6 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= - dependencies: - string-width "^2.0.0" - -ansi-escapes@^3.1.0, ansi-escapes@^3.2.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== - ansi-escapes@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" @@ -227,16 +113,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.8.1" -ansi-regex@^2.0.0, ansi-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -247,11 +123,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -259,52 +130,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= - -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== +ansi-styles@^4.0.0, 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: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apollo-cache-persist@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/apollo-cache-persist/-/apollo-cache-persist-0.1.1.tgz#e6cfe1983b998982a679aaf05241d3ed395edb1e" - integrity sha512-/7GAyblPR169ryW3ugbtHqiU0UGkhIt10NeaO2gn2ClxjLHF/nIkJD5mx/0OCF2vLNbbnzLZVDeIO1pf72TrEA== - -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" - integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== - dependencies: - archiver-utils "^2.1.0" - async "^2.6.3" - buffer-crc32 "^0.2.1" - glob "^7.1.4" - readable-stream "^3.4.0" - tar-stream "^2.1.0" - zip-stream "^2.1.2" + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" argparse@^1.0.7: version "1.0.10" @@ -313,177 +145,34 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -array-flatten@1.1.1, array-flatten@^1.0.0: +array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= - -arrify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -as-array@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/as-array/-/as-array-1.0.0.tgz#28a6eeeaa5729f1f4eca2047df5e9de1abda0ed1" - integrity sha1-KKbu6qVynx9OyiBH316d4avaDtE= - dependencies: - lodash.isarguments "2.4.x" - lodash.isobject "^2.4.1" - lodash.values "^2.4.1" - -as-array@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/as-array/-/as-array-2.0.0.tgz#4f04805d87f8fce8e511bc2108f8e5e3a287d547" - integrity sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc= - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async@^1.3.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.3.0, async@^2.6.2, async@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -async@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" - integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k= - -asynckit@^0.4.0: - version "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== - dependencies: - buffer "4.9.1" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.15.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "3.3.2" - xml2js "0.4.19" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" - integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== - -axios@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" - integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== +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" - is-buffer "^2.0.2" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2, base64-js@^1.2.3, base64-js@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -basic-auth-connect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz#fdb0b43962ca7b40456a7c2bb48fe173da2d2122" - integrity sha1-/bC0OWLKe0BFanwrtI/hc9otISI= - -basic-auth@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -big-integer@^1.6.17: - version "1.6.48" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" - integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== - -bignumber.js@^7.0.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== - -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== - -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - -bl@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" - integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== - dependencies: - readable-stream "^3.0.1" - -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= - -body-parser@1.19.0, body-parser@^1.18.3, body-parser@^1.19.0: +body-parser@1.19.0, body-parser@^1.18.3: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -499,19 +188,6 @@ body-parser@1.19.0, body-parser@^1.18.3, body-parser@^1.19.0: raw-body "2.4.0" type-is "~1.6.17" -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -520,50 +196,16 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.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" - -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== 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-indexof-polyfill@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz#a9fb806ce8145d5428510ce72f278bb363a638bf" - integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= - -buffer@4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.1.0: - version "5.4.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" - integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -579,53 +221,12 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^4.0.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: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - -cardinal@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" - integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= - dependencies: - ansicolors "~0.3.2" - redeyed "~2.1.0" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= - dependencies: - traverse ">=0.3.0 <0.4" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - 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: +chalk@^2.0.0, chalk@^2.1.0, 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== @@ -634,72 +235,19 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -char-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081" - integrity sha1-5upnvSR+EHESmDt6sEee02KAAIE= +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 "^4.1.0" + supports-color "^7.1.0" chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.0.2: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - 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.2.0" - optionalDependencies: - fsevents "~2.1.1" - -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== - -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -cjson@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/cjson/-/cjson-0.3.3.tgz#a92d9c786e5bf9b930806329ee05d5d3261b4afa" - integrity sha1-qS2ceG5b+bkwgGMp7gXV0yYbSvo= - dependencies: - json-parse-helpfulerror "^1.0.3" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= - -cli-color@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" - integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== - dependencies: - ansi-regex "^2.1.1" - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - memoizee "^0.4.14" - timers-ext "^0.1.5" - -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" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -707,41 +255,36 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-spinners@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" - integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ== - -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= - dependencies: - colors "1.0.3" - cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +cloudinary@^1.21.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/cloudinary/-/cloudinary-1.21.0.tgz#9c30935190f49f2e9a0e26a16cd8ade580f675cc" + integrity sha512-am8wpHbHl8bcpy9oGSlWrpWLNQ9szkW/jmhcJdEpMjaL23BYt05V1frWyrXDlo8Jt7aCo5NE6EO0CM9Zaynd5g== + dependencies: + lodash "^4.17.11" + q "^1.5.1" color-convert@^1.9.0: version "1.9.3" @@ -750,44 +293,27 @@ color-convert@^1.9.0: 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= -colors@1.0.3, colors@1.0.x: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= +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== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.0.1.tgz#b67622721785993182e807f4883633e6401ba53c" - integrity sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA== - -compare-semver@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/compare-semver/-/compare-semver-1.1.0.tgz#7c0a79a27bb80b6c6994445f82958259d3d02153" - integrity sha1-fAp5onu4C2xplERfgpWCWdPQIVM= - dependencies: - semver "^5.0.1" - -compress-commons@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" - integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^3.0.1" - normalize-path "^3.0.0" - readable-stream "^2.3.6" +commander@~2.20.3: + 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== compressible@~2.0.16: version "2.0.17" @@ -796,7 +322,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.7.0, compression@^1.7.4: +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== @@ -814,63 +340,20 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concurrently@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.2.tgz#1a683b2b5c41e9ed324c9002b9f6e4c6e1f3b6d7" - integrity sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg== +concurrently@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.1.0.tgz#05523986ba7aaf4b58a49ddd658fab88fa783132" + integrity sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA== dependencies: chalk "^2.4.2" - date-fns "^1.30.1" + date-fns "^2.0.1" lodash "^4.17.15" read-pkg "^4.0.1" rxjs "^6.5.2" spawn-command "^0.0.2-1" - supports-color "^4.5.0" - tree-kill "^1.2.1" - yargs "^12.0.5" - -configstore@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-1.4.0.tgz#c35781d0501d268c25c54b8b17f6240e8a4fb021" - integrity sha1-w1eB0FAdJowlxUuLF/YkDopPsCE= - dependencies: - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -connect-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/connect-query/-/connect-query-1.0.0.tgz#de44f577209da2404d1fc04692d1a4118e582119" - integrity sha1-3kT1dyCdokBNH8BGktGkEY5YIRk= - dependencies: - qs "~6.4.0" - -connect@^3.6.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" + supports-color "^6.1.0" + tree-kill "^1.2.2" + yargs "^13.3.0" content-disposition@0.5.3: version "0.5.3" @@ -884,6 +367,13 @@ 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.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" @@ -894,11 +384,6 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - cors@2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -907,53 +392,15 @@ cors@2.8.5: object-assign "^4" vary "^1" -crc32-stream@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" - integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== +cross-fetch@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" + integrity sha1-pH/09/xxLauo9qaVoRyUhEDUVyM= dependencies: - crc "^3.4.4" - readable-stream "^3.4.0" + node-fetch "2.1.2" + whatwg-fetch "2.0.4" -crc@^3.4.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - -cross-env@^5.1.3: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d" - integrity sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ== - dependencies: - cross-spawn "^6.0.5" - -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +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== @@ -964,42 +411,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +date-fns@^2.0.1: + version "2.10.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.10.0.tgz#abd10604d8bafb0bcbd2ba2e9b0563b922ae4b6b" + integrity sha512-EhfEKevYGWhWlZbNeplfhIU/+N+x0iCIx7VzKlXma2EdQyznVlZhCptXUY+BegNpPW2kjdx15Rvq503YcXXrcA== -csv-streamify@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/csv-streamify/-/csv-streamify-3.0.4.tgz#4cb614c57e3f299cca17b63fdcb4ad167777f47a" - integrity sha1-TLYUxX4/KZzKF7Y/3LStFnd39Ho= - dependencies: - through2 "2.0.1" - -cycle@1.0.x: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" - integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI= - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -date-fns@^1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.8.21: + version "1.8.23" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.23.tgz#07b5a8e759c4d75ae07bdd0ad6977f851c01e510" + integrity sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ== debug@2.6.9: version "2.6.9" @@ -1008,13 +428,6 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== - dependencies: - ms "^2.1.1" - debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -1022,14 +435,7 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.1: +debug@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -1041,43 +447,21 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -destroy@^1.0.4, destroy@~1.0.4: +destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -didyoumean@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" - integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1085,52 +469,15 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.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== -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@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== - -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= ecdsa-sig-formatter@1.0.11: version "1.0.11" @@ -1144,6 +491,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +ejs@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.0.2.tgz#745b01cdcfe38c1c6a2da3bbb2d9957060a31226" + integrity sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1159,13 +511,6 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -1173,60 +518,12 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@^2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -escape-html@~1.0.3: +escape-html@^1.0.3, escape-html@~1.0.3: version "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.2, escape-string-regexp@^1.0.5: +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= @@ -1256,10 +553,10 @@ 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.7.2: - version "6.7.2" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.7.2.tgz#c17707ca4ad7b2d8af986a33feba71e18a9fecd1" - integrity sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng== +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -1308,7 +605,7 @@ espree@^6.1.2: acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -1342,55 +639,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -events@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit-code@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/exit-code/-/exit-code-1.0.2.tgz#ce165811c9f117af6a5f882940b96ae7f9aecc34" - integrity sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ= - express-sslify@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/express-sslify/-/express-sslify-1.2.0.tgz#30e84bceed1557eb187672bbe1430a0a2a100d9c" @@ -1432,18 +680,6 @@ express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -1453,21 +689,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -eyes@0.1.x: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= - 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" @@ -1483,25 +704,6 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-text-encoding@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz#3e5ce8293409cfaa7177a71b9ca84e1b1e6f25ef" - integrity sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ== - -fast-url-parser@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= - dependencies: - punycode "^1.3.2" - -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" @@ -1516,19 +718,7 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -filesize@^3.1.3: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - -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, finalhandler@~1.1.2: +finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== @@ -1548,65 +738,13 @@ 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== +find-up@^4.1.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: - "@google-cloud/pubsub" "^1.1.5" - JSONStream "^1.2.1" - archiver "^3.0.0" - body-parser "^1.19.0" - chokidar "^3.0.2" - cjson "^0.3.1" - cli-color "^1.2.0" - cli-table "^0.3.1" - commander "^4.0.1" - configstore "^1.2.0" - cross-env "^5.1.3" - cross-spawn "^4.0.0" - csv-streamify "^3.0.4" - didyoumean "^1.2.1" - dotenv "^6.1.0" - exit-code "^1.0.2" - express "^4.16.4" - filesize "^3.1.3" - fs-extra "^0.23.1" - glob "^7.1.2" - google-auto-auth "^0.7.2" - inquirer "~6.3.1" - jsonschema "^1.0.2" - jsonwebtoken "^8.2.1" - lodash "^4.17.14" - marked "^0.7.0" - marked-terminal "^3.3.0" - minimatch "^3.0.4" - open "^6.3.0" - ora "^3.4.0" - plist "^3.0.1" - portfinder "^1.0.23" - progress "^2.0.3" - request "^2.87.0" - semver "^5.0.3" - superstatic "^6.0.1" - tar "^4.3.0" - tcp-port-used "^1.0.1" - tmp "0.0.33" - universal-analytics "^0.4.16" - unzipper "^0.10.5" - update-notifier "^2.5.0" - uuid "^3.0.0" - winston "^1.0.1" - -flat-arguments@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flat-arguments/-/flat-arguments-1.0.2.tgz#9baa780adf0501f282d726c9c6a038dba44ea76f" - integrity sha1-m6p4Ct8FAfKC1ybJxqA426ROp28= - dependencies: - array-flatten "^1.0.0" - as-array "^1.0.0" - lodash.isarguments "^3.0.0" - lodash.isobject "^3.0.0" + locate-path "^5.0.0" + path-exists "^4.0.0" flat-cache@^2.0.1: version "2.0.1" @@ -1629,20 +767,6 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -1653,137 +777,29 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d" - integrity sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gaxios@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.2.0.tgz#7c51653c224415ac9218416cb94ff48610b816bc" - integrity sha512-54Y7s3yvtEO9CZ0yBVQHI5fzS7TzkjlnuLdDEkeyL1SNYMv877VofvA56E/C3dvj3rS7GFiyMWl833Qrr+nrkg== - dependencies: - abort-controller "^3.0.0" - extend "^3.0.2" - https-proxy-agent "^3.0.0" - is-stream "^2.0.0" - node-fetch "^2.3.0" +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -gcp-metadata@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.3.1.tgz#313814456e7c3d0eeb8f8b084b33579e886f829a" - integrity sha512-5kJPX/RXuqoLmHiOOgkSDk/LI0QaXpEvZ3pvQP4ifjGGDKZKVSOjL/GcDjXA5kLxppFCOjmmsu0Uoop9d1upaQ== - dependencies: - extend "^3.0.0" - retry-request "^3.0.0" - -gcp-metadata@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-3.2.2.tgz#dcac6bf65775d5caa3a2e161469c0af068849256" - integrity sha512-vR7kcJMCYJG/mYWp/a1OszdOqnLB/XW1GorWW1hc1lWVNL26L497zypWb9cG0CYDQ4Bl1Wk0+fSZFFjwJlTQgQ== - dependencies: - gaxios "^2.1.0" - json-bigint "^0.3.0" - -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" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" -glob-slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glob-slash/-/glob-slash-1.0.0.tgz#fe52efa433233f74a2fe64c7abb9bc848202ab95" - integrity sha1-/lLvpDMjP3Si/mTHq7m8hIICq5U= - -glob-slasher@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/glob-slasher/-/glob-slasher-1.0.1.tgz#747a0e5bb222642ee10d3e05443e109493cb0f8e" - integrity sha1-dHoOW7IiZC7hDT4FRD4QlJPLD44= - dependencies: - glob-slash "^1.0.0" - lodash.isobject "^2.4.1" - toxic "^1.0.0" - -glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -1795,13 +811,6 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - globals@^12.1.0: version "12.3.0" resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" @@ -1809,158 +818,42 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -google-auth-library@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e" - integrity sha1-bhW6vuhf0d0U2NEoopW2g41SE24= +graphql-request@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe" + integrity sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg== dependencies: - gtoken "^1.2.1" - jws "^3.1.4" - lodash.noop "^3.0.1" - request "^2.74.0" + cross-fetch "2.2.2" -google-auth-library@^5.0.0, google-auth-library@^5.5.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-5.7.0.tgz#2d8273793a9177f9f37f3920861f4256419c77ae" - integrity sha512-uclMldsQNf64Qr67O8TINdnqbU/Ixv81WryX+sF9g7uP0igJ98aCR/uU399u1ABLa53LNsyji+bo+bP8/iL9dA== +gzip-size@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== dependencies: - arrify "^2.0.0" - base64-js "^1.3.0" - fast-text-encoding "^1.0.0" - gaxios "^2.1.0" - gcp-metadata "^3.2.0" - gtoken "^4.1.0" - jws "^3.1.5" - lru-cache "^5.0.0" + duplexer "^0.1.1" + pify "^4.0.1" -google-auto-auth@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.7.2.tgz#bf9352d5c4a0897bf31fd9c491028b765fbea71e" - integrity sha512-ux2n2AE2g3+vcLXwL4dP/M12SFMRX5dzCzBfhAEkTeAB7dpyGdOIEj7nmUx0BHKaCcUQrRWg9kT63X/Mmtk1+A== +handlebars@^4.7.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== dependencies: - async "^2.3.0" - gcp-metadata "^0.3.0" - google-auth-library "^0.10.0" - request "^2.79.0" - -google-gax@^1.7.5: - version "1.12.0" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.12.0.tgz#f926f7e6abda245db38ecbebbbf58daaf3a8f687" - integrity sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg== - dependencies: - "@grpc/grpc-js" "^0.6.12" - "@grpc/proto-loader" "^0.5.1" - "@types/long" "^4.0.0" - abort-controller "^3.0.0" - duplexify "^3.6.0" - google-auth-library "^5.0.0" - is-stream-ended "^0.1.4" - lodash.at "^4.6.0" - lodash.has "^4.5.2" - node-fetch "^2.6.0" - protobufjs "^6.8.8" - retry-request "^4.0.0" - semver "^6.0.0" - walkdir "^0.4.0" - -google-p12-pem@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177" - integrity sha1-M8RqsCGqc0+gMys5YKmj/8svMXc= - dependencies: - node-forge "^0.7.1" - -google-p12-pem@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.3.tgz#14ecd78a94bd03bf86d74d9d0724787e85c7731f" - integrity sha512-Tq2kBCANxYYPxaBpTgCpRfdoPs9+/lNzc/Iaee4kuMVW5ascD+HwhpBsTLwH85C9Ev4qfB8KKHmpPQYyD2vg2w== - dependencies: - node-forge "^0.9.0" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, 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== - -gtoken@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.3.tgz#5509571b8afd4322e124cf66cf68115284c476d8" - integrity sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w== - dependencies: - google-p12-pem "^0.1.0" - jws "^3.0.0" - mime "^1.4.1" - request "^2.72.0" - -gtoken@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-4.1.3.tgz#efa9e42f59d02731f15de466b09331d7afc393cf" - integrity sha512-ofW+FiXjswyKdkjMcDbe6E4K7cDDdE82dGDhZIc++kUECqaE7MSErf6arJPAjcnYn1qxE1/Ti06qQuqgVusovQ== - dependencies: - gaxios "^2.1.0" - google-p12-pem "^2.0.0" - jws "^3.1.5" - mime "^2.2.0" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" has-flag@^3.0.0: version "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== - dependencies: - axios "^0.19.0" - chalk "^2.4.2" - -home-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/home-dir/-/home-dir-1.0.0.tgz#2917eb44bdc9072ceda942579543847e3017fe4e" - integrity sha1-KRfrRL3JByztqUJXlUOEfjAX/k4= +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== hosted-git-info@^2.1.4: version "2.8.5" @@ -1989,23 +882,6 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" - integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -2013,11 +889,6 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@1.1.13, ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2031,11 +902,6 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2049,7 +915,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2059,11 +925,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - inquirer@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" @@ -2083,35 +944,6 @@ inquirer@^7.0.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@~6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== - 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.11" - 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" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" @@ -2122,37 +954,16 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -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-buffer@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -2163,136 +974,28 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, 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== dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= - -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: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -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= - dependencies: - path-is-inside "^1.0.1" - -is-promise@^2.1, is-promise@^2.1.0: +is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-stream-ended@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" - integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-url@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.1.tgz#8ac355644840921ce435d94f05d3a94634d3481a" - integrity sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA== - dependencies: - deep-is "^0.1.3" - ip-regex "^2.1.0" - is-url "^1.2.2" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isstream@0.1.x, isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -jju@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= - -jmespath@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" - integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= - -join-path@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/join-path/-/join-path-1.1.1.tgz#10535a126d24cbd65f7ffcdf15ef2e631076b505" - integrity sha1-EFNaEm0ky9Zff/zfFe8uYxB2tQU= - dependencies: - as-array "^2.0.0" - url-join "0.0.1" - valid-url "^1" - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2306,68 +1009,22 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -json-bigint@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.0.tgz#0ccd912c4b8270d05f056fbd13814b53d3825b1e" - integrity sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4= - dependencies: - bignumber.js "^7.0.0" - json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-helpfulerror@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" - integrity sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w= - dependencies: - jju "^1.1.0" - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsonschema@^1.0.2: - version "1.2.5" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.5.tgz#bab69d97fa28946aec0a56a9cc266d23fe80ae61" - integrity sha512-kVTF+08x25PQ0CjuVc0gRM9EUPb0Fe9Ln/utFOgcdxEIOHuU7ooBk/UPTd7t1M91pP35m0MU1T8M5P7vP1bRRw== - -jsonwebtoken@^8.2.1: +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== @@ -2383,16 +1040,6 @@ jsonwebtoken@^8.2.1: ms "^2.1.1" semver "^5.6.0" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -2402,7 +1049,7 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@^3.0.0, jws@^3.1.4, jws@^3.1.5, jws@^3.2.2: +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== @@ -2410,34 +1057,6 @@ jws@^3.0.0, jws@^3.1.4, jws@^3.1.5, jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= - dependencies: - package-json "^4.0.0" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.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" @@ -2446,11 +1065,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" - integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -2459,68 +1073,18 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash._isnative@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" - integrity sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw= - -lodash._objecttypes@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" - integrity sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE= - -lodash._shimkeys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" - integrity sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM= +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: - lodash._objecttypes "~2.4.1" - -lodash.at@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.at/-/lodash.at-4.6.0.tgz#93cdce664f0a1994ea33dd7cd40e23afd11b0ff8" - integrity sha1-k83OZk8KGZTqM9181A4jr9EbD/g= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.has@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" - integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= + p-locate "^4.1.0" 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.isarguments@2.4.x: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-2.4.1.tgz#4931a9c08253adf091ae7ca192258a973876ecca" - integrity sha1-STGpwIJTrfCRrnyhkiWKlzh27Mo= - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - lodash.isboolean@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" @@ -2536,18 +1100,6 @@ lodash.isnumber@^3.0.3: resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= -lodash.isobject@^2.4.1, lodash.isobject@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" - integrity sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU= - dependencies: - lodash._objecttypes "~2.4.1" - -lodash.isobject@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0= - lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -2558,150 +1110,21 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.keys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" - integrity sha1-SN6kbfj/djKxDXBrissmWR4rNyc= - dependencies: - lodash._isnative "~2.4.1" - lodash._shimkeys "~2.4.1" - lodash.isobject "~2.4.1" - -lodash.noop@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" - integrity sha1-OBiPTWUKOkdCWEObluxFsyYXEzw= - 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.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= - -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= - -lodash.values@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" - integrity sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ= - dependencies: - lodash.keys "~2.4.1" - -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-queue@0.1: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= - dependencies: - es5-ext "~0.10.2" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -marked-terminal@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" - integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== - dependencies: - ansi-escapes "^3.1.0" - cardinal "^2.1.1" - chalk "^2.4.1" - cli-table "^0.3.1" - node-emoji "^1.4.1" - supports-hyperlinks "^1.0.1" - -marked@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" - integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memoizee@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" - integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== - dependencies: - d "1" - es5-ext "^0.10.45" - es6-weak-map "^2.0.2" - event-emitter "^0.3.5" - is-promise "^2.1" - lru-queue "0.1" - next-tick "1" - timers-ext "^0.1.5" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -2717,29 +1140,19 @@ mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: +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== dependencies: mime-db "1.42.0" -mime@1.6.0, mime@^1.4.1: +mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.2.0: - version "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: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -2756,44 +1169,18 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.0, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" -morgan@^1.8.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59" - integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA== - dependencies: - basic-auth "~2.0.0" - debug "2.6.9" - depd "~1.1.2" - on-finished "~2.3.0" - on-headers "~1.0.1" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -2809,26 +1196,11 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -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" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/nash/-/nash-3.0.0.tgz#bced3a0cb8434c2ad30d1a0d567cfc0c37128eea" - integrity sha512-M5SahEycXUmko3zOvsBkF6p94CWLhnyy9hfpQ9Qzp+rQkQ8D1OaTlfTl1OBWktq9Fak3oDXKU+ev7tiMaMu+1w== - dependencies: - async "^1.3.0" - flat-arguments "^1.0.0" - lodash "^4.17.5" - minimist "^1.1.0" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -2839,37 +1211,25 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -next-tick@1, next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-emoji@^1.4.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" +node-fetch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-fetch@^2.3.0, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-forge@^0.7.1: - version "0.7.6" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" - integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== - -node-forge@^0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" - integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== +nodemailer@^6.4.4: + version "6.4.4" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.4.tgz#f4bb26a833786e8908b3ac8afbf2d0382ac24feb" + integrity sha512-2GqGu5o3FBmDibczU3+LZh9lCEiKmNx7LvHl512p8Kj+Kn5FQVOICZv85MDFz/erK0BDd5EJp3nqQLpWCZD1Gg== normalize-package-data@^2.3.2: version "2.5.0" @@ -2881,59 +1241,30 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -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== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.0.1: +object-assign@^4: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -on-finished@^2.2.0, on-finished@~2.3.0: +on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" -on-headers@^1.0.0, on-headers@~1.0.1, on-headers@~1.0.2: +on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 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" @@ -2941,12 +1272,13 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== +open@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" + integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== dependencies: - is-wsl "^1.1.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" optionator@^0.8.3: version "0.8.3" @@ -2960,65 +1292,11 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" -ora@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-defer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" - integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" @@ -3026,6 +1304,13 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -3033,21 +1318,18 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +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-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -3063,7 +1345,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -3073,17 +1355,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: - 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= - -path-key@^2.0.0, path-key@^2.0.1: +path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= @@ -3098,95 +1380,36 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" - integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== +phone@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/phone/-/phone-2.4.8.tgz#4da4c046b4a90ca65ea04f86e99094b50ed518df" + integrity sha512-8RO0PfJPzjsWKhbU9W79f7exxkEgjrjbkHqG3psV3SI2q+SJqDEC7We3Ylxivk8XNdoZ8jDs4TPHnqCVs8TwNA== pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pkginfo@0.3.x: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" - integrity sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -plist@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" - integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== - dependencies: - base64-js "^1.2.3" - xmlbuilder "^9.0.7" - xmldom "0.1.x" - -portfinder@^1.0.23: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" +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= prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8: - version "6.8.8" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" - integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -3195,58 +1418,39 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.0" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.24: - version "1.6.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz#60557582ee23b6c43719d9890fb4170ecd91e110" - integrity sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.3.2, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - punycode@^2.1.0: version "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.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= +qs@^6.9.1: + version "6.9.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.2.tgz#a27b695006544a04bf0e6c6a7e8120778926d5bd" + integrity sha512-2eQ6zajpK7HwqrY1rRtGw5IZvjgtELXzJECaEDuzDFo2jjnIXpJSimzd4qflWZq6bLLi+Zgfj5eDrAzl/lptyg== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== range-parser@~1.2.1: version "1.2.1" @@ -3263,16 +1467,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.0.1, rc@^1.1.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-pkg@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" @@ -3282,109 +1476,25 @@ read-pkg@^4.0.1: parse-json "^4.0.0" pify "^3.0.0" -"readable-stream@2 || 3", readable-stream@^3.0.1, readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, 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== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - -redeyed@~2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" - integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= - dependencies: - esprima "~4.0.0" - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= - dependencies: - rc "^1.0.1" - -request@^2.72.0, request@^2.74.0, request@^2.79.0, request@^2.81.0, request@^2.87.0, request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-from@^4.0.0: version "4.0.0" @@ -3398,14 +1508,6 @@ resolve@^1.10.0: 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" @@ -3414,53 +1516,17 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -retry-request@^3.0.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-3.3.2.tgz#fd8e0079e7b0dfc7056e500b6f089437db0da4df" - integrity sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ== - dependencies: - request "^2.81.0" - through2 "^2.0.0" - -retry-request@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.1.tgz#f676d0db0de7a6f122c048626ce7ce12101d2bd8" - integrity sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ== - dependencies: - debug "^4.1.1" - through2 "^3.0.1" - -rimraf@2, rimraf@^2.2.8: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@2.6.3: +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" -router@^1.3.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/router/-/router-1.3.3.tgz#c142f6b5ea4d6b3359022ca95b6580bd217f89cf" - integrity sha1-wUL2tepNazNZAiypW2WAvSF/ic8= - dependencies: - array-flatten "2.1.1" - debug "2.6.9" - methods "~1.1.2" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - setprototypeof "1.1.0" - utils-merge "1.0.1" - -rsvp@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +rootpath@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/rootpath/-/rootpath-0.1.2.tgz#5b379a87dca906e9b91d690a599439bef267ea6b" + integrity sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms= run-async@^2.2.0: version "2.3.0" @@ -3476,44 +1542,32 @@ rxjs@^6.4.0, rxjs@^6.5.2: dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver-diff@^2.0.0: +scmp@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= - dependencies: - semver "^5.0.3" + resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" + integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q== -"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.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.1.2, semver@^6.2.0: +semver@^6.1.2: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -3552,16 +1606,6 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -setimmediate@~1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -3579,7 +1623,7 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= @@ -3593,10 +1637,33 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= +source-map-explorer@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.4.2.tgz#fb23f86c3112eacde5683f24efaf4ddc9f677985" + integrity sha512-3ECQLffCFV8QgrTqcmddLkWL4/aQs6ljYfgWCLselo5QtizOfOeUCKnS4rFn7MIrdeZLM6TZrseOtsrWZhWKoQ== + dependencies: + btoa "^1.2.1" + chalk "^3.0.0" + convert-source-map "^1.7.0" + ejs "^3.0.2" + escape-html "^1.0.3" + glob "^7.1.6" + gzip-size "^5.1.1" + lodash "^4.17.15" + open "^7.0.3" + source-map "^0.7.3" + temp "^0.9.1" + yargs "^15.3.1" + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== spawn-command@^0.0.2-1: version "0.0.2-1" @@ -3634,61 +1701,12 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= - -string-length@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" - integrity sha1-VpcPscOFWOnnC3KL894mmsRa36w= - dependencies: - strip-ansi "^3.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.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== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -3697,7 +1715,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -3706,40 +1724,7 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.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== @@ -3753,83 +1738,31 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - strip-json-comments@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -superstatic@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-6.0.4.tgz#5c38fe05e2e9513b68d5ba2798925e4839c151dd" - integrity sha512-Nfli9mSPa9fJloKuDeUOdqC1lcw4c4SnxiWPB8s7Yn1iYo7Ja3pj7qc8AXMqHVqn/Kf7QsxBjAeOJTpuJ0mcrQ== - dependencies: - as-array "^2.0.0" - async "^1.5.2" - basic-auth-connect "^1.0.0" - chalk "^1.1.3" - char-spinner "^1.0.1" - compare-semver "^1.0.0" - compression "^1.7.0" - connect "^3.6.2" - connect-query "^1.0.0" - destroy "^1.0.4" - fast-url-parser "^1.1.3" - fs-extra "^0.30.0" - glob "^7.1.2" - glob-slasher "^1.0.1" - home-dir "^1.0.0" - is-url "^1.2.2" - join-path "^1.1.1" - lodash "^4.17.4" - mime-types "^2.1.16" - minimatch "^3.0.4" - morgan "^1.8.2" - nash "^3.0.0" - on-finished "^2.2.0" - on-headers "^1.0.0" - path-to-regexp "^1.7.0" - router "^1.3.1" - rsvp "^3.6.2" - string-length "^1.0.0" - try-require "^1.0.0" - update-notifier "^2.5.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= - dependencies: - has-flag "^2.0.0" - -supports-color@^5.0.0, supports-color@^5.3.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-hyperlinks@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" - integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: - has-flag "^2.0.0" - supports-color "^5.0.0" + has-flag "^3.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" table@^5.2.3: version "5.4.6" @@ -3841,156 +1774,61 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar-stream@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" - integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== +temp@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697" + integrity sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA== dependencies: - bl "^3.0.0" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^4.3.0: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -tcp-port-used@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.1.tgz#46061078e2d38c73979a2c2c12b5a674e6689d70" - integrity sha512-rwi5xJeU6utXoEIiMvVBMc9eJ2/ofzB+7nLOdnZuFTmNCLqRiQh2sMG9MqCxHU/69VC/Fwp5dV9306Qd54ll1Q== - dependencies: - debug "4.1.0" - is2 "2.0.1" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" + rimraf "~2.6.2" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" - integrity sha1-OE51MU1J8y3hLuu4E2uOtrXVnak= - dependencies: - readable-stream "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - -"through@>=2.2.7 <3", through@^2.3.6: +through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-ext@^0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - -tmp@0.0.33, tmp@^0.0.33: +tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" -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" - toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -toxic@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toxic/-/toxic-1.0.1.tgz#8c2e2528da591100adc3883f2c0e56acfb1c7288" - integrity sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg== - dependencies: - lodash "^4.17.10" - -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= - -tree-kill@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" - integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== - -try-require@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/try-require/-/try-require-1.2.1.tgz#34489a2cac0c09c1cc10ed91ba011594d4333be2" - integrity sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I= +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= +twilio@^3.41.1: + version "3.41.1" + resolved "https://registry.yarnpkg.com/twilio/-/twilio-3.41.1.tgz#653f2daccad7fe3ac0362acd1a1347e690dd9795" + integrity sha512-YOAuQtb3xELQJDcL+G6ffDRrZeJSlFRph5peudFYcEa9Or5R0x+r8lShXlYl7yP8w7atCWxETSeySLuStEpvhg== dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + "@types/express" "^4.17.3" + axios "^0.19.2" + dayjs "^1.8.21" + jsonwebtoken "^8.5.1" + lodash "^4.17.15" + q "2.0.x" + qs "^6.9.1" + 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" @@ -4012,74 +1850,18 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= +uglify-js@^3.1.4: + version "3.9.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.1.tgz#a56a71c8caa2d36b5556cc1fd57df01ae3491539" + integrity sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA== dependencies: - crypto-random-string "^1.0.0" - -universal-analytics@^0.4.16: - version "0.4.20" - resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.20.tgz#d6b64e5312bf74f7c368e3024a922135dbf24b03" - integrity sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw== - dependencies: - debug "^3.0.0" - request "^2.88.0" - uuid "^3.0.0" + commander "~2.20.3" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - -unzipper@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.5.tgz#4d189ae6f8af634b26efe1a1817c399e0dd4a1a0" - integrity sha512-i5ufkXNjWZYxU/0nKKf6LkvW8kn9YzRvfwuPWjXP+JTFce/8bqeR0gEfbiN2IDdJa6ZU6/2IzFRLK0z1v0uptw== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "^1.0.12" - graceful-fs "^4.2.2" - listenercount "~1.0.1" - readable-stream "~2.3.6" - setimmediate "~1.0.4" - -update-notifier@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -4087,61 +1869,24 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-join@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" - integrity sha1-HbSK1CLTQCRpqH99l73r/k+x48g= - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= +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== dependencies: - prepend-http "^1.0.1" - -url@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + querystringify "^2.1.1" + requires-port "^1.0.0" utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= - -uuid@^3.0.0, 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== - v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -valid-url@^1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" - integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -4155,26 +1900,15 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" +weak-map@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.5.tgz#79691584d98607f5070bd3b70a40e6bb22e401eb" + integrity sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes= -walkdir@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" - integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== which-module@^2.0.0: version "2.0.0" @@ -4188,62 +1922,39 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - -winston@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/winston/-/winston-1.1.2.tgz#68edd769ff79d4f9528cf0e5d80021aade67480c" - integrity sha1-aO3Xaf951PlSjPDl2AAhqt5nSAw= - dependencies: - async "~1.0.0" - colors "1.0.x" - cycle "1.0.x" - eyes "0.1.x" - isstream "0.1.x" - pkginfo "0.3.x" - stack-trace "0.0.x" - word-wrap@~1.2.3: version "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== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^1.1.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -4251,87 +1962,61 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - integrity sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I= - dependencies: - os-homedir "^1.0.0" +xmlbuilder@^13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7" + integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ== -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - -xml2js@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@^9.0.7, xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -xmldom@0.1.x: - version "0.1.27" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" - integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= - -xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0": +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -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== +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -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== +yargs-parser@^18.1.1: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: - cliui "^4.0.0" + camelcase "^5.0.0" decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" -zip-stream@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz#841efd23214b602ff49c497cba1a85d8b5fbc39c" - integrity sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg== +yargs@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: - archiver-utils "^2.1.0" - compress-commons "^2.1.1" - readable-stream "^3.4.0" + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1"