diff --git a/.circleci/config.yml b/.circleci/config.yml
index 904d2817d..2d67873a1 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -6,7 +6,7 @@ orbs:
aws-cli: circleci/aws-cli@4.0
eb: circleci/aws-elastic-beanstalk@2.0.1
jobs:
- api-deploy:
+ imex-api-deploy:
docker:
- image: cimg/node:18.18.2
steps:
@@ -19,9 +19,9 @@ jobs:
eb deploy
eb status
- hasura-migrate:
+ imex-hasura-migrate:
docker:
- - image: cimg/node:16.15.0
+ - image: cimg/node:18.18.2
parameters:
secret:
type: string
@@ -38,30 +38,10 @@ jobs:
hasura metadata apply --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
hasura metadata reload --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
- app-build:
- docker:
- - image: cimg/node:16.15.0
-
- working_directory: ~/repo/client
-
- steps:
- - checkout:
- path: ~/repo
- - run:
- name: Install Dependencies
- command: npm i
-
- - run: npm run build
-
- - aws-s3/sync:
- from: build
- to: "s3://imex-online-production/"
- arguments: "--exclude '*.map'"
-
- app-beta-build:
+ imex-app-build:
docker:
- image: cimg/node:18.18.2
- resource_class: large
+
working_directory: ~/repo/client
steps:
@@ -71,7 +51,7 @@ jobs:
name: Install Dependencies
command: npm i
- - run: npm run build
+ - run: npm run build:imex
- aws-cli/setup:
aws_access_key_id: AWS_ACCESS_KEY_ID
@@ -80,9 +60,106 @@ jobs:
- aws-s3/sync:
from: build
- to: "s3://imex-online-beta/"
+ to: "s3://imex-online-production/"
arguments: "--exclude '*.map'"
+ rome-api-deploy:
+ docker:
+ - image: "cimg/base:stable"
+ steps:
+ - checkout
+ - eb/setup
+ - run:
+ command: |
+ eb init romeonline-productionapi -r us-east-2 -p "Node.js 18 running on 64bit Amazon Linux 2"
+ eb status --verbose
+ eb deploy
+ eb status
+
+ rome-hasura-migrate:
+ docker:
+ - image: cimg/node:18.18.2
+ parameters:
+ secret:
+ type: string
+ default: $HASURA_ROME_PROD_SECRET
+ working_directory: ~/repo/hasura
+ steps:
+ - checkout:
+ path: ~/repo
+ - run:
+ name: Execute migration
+ command: |
+ npm install hasura-cli -g
+ hasura migrate apply --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
+ hasura metadata apply --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
+ hasura metadata reload --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
+
+ rome-app-build:
+ docker:
+ - image: cimg/node:18.18.2
+
+ working_directory: ~/repo/client
+
+ steps:
+ - checkout:
+ path: ~/repo
+ - run:
+ name: Install Dependencies
+ command: npm i
+
+ - run: npm run build:rome
+
+ - aws-cli/setup:
+ aws_access_key_id: AWS_ACCESS_KEY_ID
+ aws_secret_access_key: AWS_SECRET_ACCESS_KEY
+ region: AWS_REGION
+
+ - aws-s3/sync:
+ from: build
+ to: "s3://rome-online-production/"
+ arguments: "--exclude '*.map'"
+
+ test-rome-hasura-migrate:
+ docker:
+ - image: cimg/node:16.15.0
+ parameters:
+ secret:
+ type: string
+ default: $HASURA_ROME_TEST_SECRET
+ working_directory: ~/repo/hasura
+ steps:
+ - checkout:
+ path: ~/repo
+ - run:
+ name: Execute migration
+ command: |
+ npm install hasura-cli -g
+ hasura migrate apply --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
+ hasura metadata apply --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
+ hasura metadata reload --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
+
+ test-rome-app-build:
+ docker:
+ - image: cimg/node:18.18.2
+
+ working_directory: ~/repo/client
+
+ steps:
+ - checkout:
+ path: ~/repo
+ - run:
+ name: Install Dependencies
+ command: npm i
+
+ - run: npm run build:test:rome
+
+ - aws-s3/sync:
+ from: build
+ to: "s3://rome-online-test/"
+ arguments: "--exclude '*.map'"
+
+
test-hasura-migrate:
docker:
- image: cimg/node:16.15.0
@@ -98,12 +175,11 @@ jobs:
name: Execute migration
command: |
npm install hasura-cli -g
- echo ${HASURA_TEST_SECRET}
hasura migrate apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
hasura metadata apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
hasura metadata reload --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
- test-app-build:
+ imex-test-app-build:
docker:
- image: cimg/node:16.15.0
@@ -116,40 +192,13 @@ jobs:
name: Install Dependencies
command: npm i
- - run: npm run build:test
+ - run: npm run build:test:imex
- aws-s3/sync:
from: build
to: "s3://imex-online-test/"
arguments: "--exclude '*.map'"
- test-app-beta-build:
- docker:
- - image: cimg/node:18.18.2
- resource_class: large
- working_directory: ~/repo/client
-
- steps:
- - checkout:
- path: ~/repo
-
- - run:
- name: Install Dependencies
- command: npm i
-
- - run: npm run build:test
-
- - run: npm run sentry:sourcemaps
-
- - aws-cli/setup:
- aws_access_key_id: AWS_ACCESS_KEY_ID
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
- region: AWS_REGION
-
- - aws-s3/sync:
- from: build
- to: "s3://imex-online-test-beta/"
- arguments: "--exclude '*.map'"
admin-app-build:
docker:
@@ -184,37 +233,52 @@ jobs:
workflows:
deploy_and_build:
jobs:
- - api-deploy:
+ - imex-api-deploy:
filters:
branches:
only: master
- - app-build:
+ - imex-app-build:
filters:
branches:
only: master
- - app-beta-build:
- filters:
- branches:
- only: master-beta
- hasura-migrate:
secret: ${HASURA_PROD_SECRET}
filters:
branches:
only: master
- - test-app-build:
+ - rome-api-deploy:
+ filters:
+ branches:
+ only: rome/master
+ - rome-app-build:
+ filters:
+ branches:
+ only: rome/master
+ - rome-hasura-migrate:
+ secret: ${HASURA_PROD_SECRET}
+ filters:
+ branches:
+ only: rome/master
+ - imex-test-app-build:
filters:
branches:
only: test
- - test-app-beta-build:
- filters:
- branches:
- only: test-beta
+
- test-hasura-migrate:
secret: ${HASURA_TEST_SECRET}
filters:
branches:
only: test
+ - test-rome-app-build:
+ filters:
+ branches:
+ only: rome/test
+ - test-rome-hasura-migrate:
+ secret: ${HASURA_ROME_TEST_SECRET}
+ filters:
+ branches:
+ only: rome/test
#- admin-app-build:
#filters:
#branches:
- #only: master
\ No newline at end of file
+ #only: master
diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel
index f07d49c89..77a8015de 100644
--- a/bodyshop_translations.babel
+++ b/bodyshop_translations.babel
@@ -1030,6 +1030,27 @@
+
+ smspaymentreminder
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
suggesteddates
false
@@ -1432,6 +1453,27 @@
messages
+
+ admin_job_remove_from_ar
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
admin_jobmarkexported
false
@@ -1516,6 +1558,90 @@
+
+ alerttoggle
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ appointmentcancel
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ appointmentinsert
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ assignedlinehours
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
billposted
false
@@ -1726,6 +1852,27 @@
+
+ jobinvoiced
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
jobioucreated
false
@@ -2229,6 +2376,27 @@
+
+ mod_lbr_adjustment
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
other
false
@@ -2328,6 +2496,27 @@
actions
+
+ deductallhours
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
edit
false
@@ -3204,6 +3393,27 @@
+
+ federal_tax_exempt
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
generatepartslabel
false
@@ -3372,6 +3582,27 @@
+
+ printlabels
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
retailtotal
false
@@ -5401,6 +5632,32 @@
+
+ md_functionality_toggles
+
+
+ parts_queue_toggle
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
md_hour_split
@@ -5755,6 +6012,27 @@
md_tasks_presets
+
+ enable_tasks
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
hourstype
false
@@ -5818,6 +6096,27 @@
+
+ nextstatus
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
percent
false
@@ -5839,6 +6138,27 @@
+
+ use_approvals
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
@@ -7082,6 +7402,27 @@
+
+ reportcenter
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
templates
false
@@ -7463,6 +7804,111 @@
+
+ responsibilitycenter_tax_rate
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ responsibilitycenter_tax_sur
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ responsibilitycenter_tax_thres
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ responsibilitycenter_tax_tier
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ responsibilitycenter_tax_type
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
responsibilitycenters
@@ -10070,6 +10516,27 @@
+
+ md_parts_scan
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
md_tasks_presets
false
@@ -12837,6 +13304,27 @@
+
+ readiness
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
registrationexpires
false
@@ -13311,6 +13799,53 @@
+
+ readiness
+
+
+ notready
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ ready
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
status
@@ -13941,6 +14476,48 @@
titles
+
+ labhours
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ larhours
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
monthlyemployeeefficiency
false
@@ -15260,6 +15837,27 @@
+
+ max_load
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
name
false
@@ -15836,6 +16434,27 @@
+
+ active
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
endmustbeafterstart
false
@@ -15878,6 +16497,27 @@
+
+ inactive
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
name
false
@@ -15920,6 +16560,27 @@
+
+ status
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
straight_time
false
@@ -16039,6 +16700,445 @@
+
+ eula
+
+
+ buttons
+
+
+ accept
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ content
+
+
+ never_scrolled
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ errors
+
+
+ acceptance
+
+
+ description
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ message
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+
+
+ labels
+
+
+ accepted_terms
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ address
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ business_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ date_accepted
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ first_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ last_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ phone_number
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ messages
+
+
+ accepted_terms
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ business_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ date_accepted
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ first_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ last_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ phone_number
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ titles
+
+
+ modal
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ upper_card
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+
exportlogs
@@ -18180,6 +19280,27 @@
+
+ tvmode
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
unknown
false
@@ -19241,6 +20362,383 @@
+
+ job_lifecycle
+
+
+ columns
+
+
+ duration
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ end
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ relative_end
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ relative_start
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ start
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ value
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ content
+
+
+ current_status_accumulated_time
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ data_unavailable
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ legend_title
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ loading
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ not_available
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ previous_status_accumulated_time
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ title
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ title_durations
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ title_loading
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ title_transitions
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ errors
+
+
+ fetch
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+
job_payments
@@ -19608,6 +21106,27 @@
actions
+
+ assign_team
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
converttolabor
false
@@ -19629,6 +21148,27 @@
+
+ dispatchparts
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
new
false
@@ -19744,6 +21284,69 @@
+
+ assigned_team
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ assigned_team_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ create_ppc
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
db_price
false
@@ -22141,6 +23744,48 @@
+
+ taxprofileoverride
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ taxprofileoverride_confirm
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
uninvoice
false
@@ -23521,6 +25166,352 @@
+
+ cieca_pfl
+
+
+ lbr_tax_in
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ lbr_tx_in1
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ lbr_tx_in2
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ lbr_tx_in3
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ lbr_tx_in4
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ lbr_tx_in5
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ cieca_pfo
+
+
+ stor_t_in1
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ stor_t_in2
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ stor_t_in3
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ stor_t_in4
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ stor_t_in5
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ tow_t_in1
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ tow_t_in2
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ tow_t_in3
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ tow_t_in4
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ tow_t_in5
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
claim_total
false
@@ -23731,6 +25722,27 @@
+
+ date_lost_sale
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
date_next_contact
false
@@ -25767,6 +27779,242 @@
+
+ materials
+
+
+ MAPA
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ MASH
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ cal_maxdlr
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ cal_opcode
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ mat_tx_in1
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ mat_tx_in2
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ mat_tx_in3
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ mat_tx_in4
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ mat_tx_in5
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ materials
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ tax_ind
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
other_amount_payable
false
@@ -26211,6 +28459,111 @@
+
+ prt_tx_in1
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ prt_tx_in2
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ prt_tx_in3
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ prt_tx_in4
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ prt_tx_in5
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
prt_type
false
@@ -28467,6 +30820,27 @@
+
+ more
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
notes
false
@@ -28637,6 +31011,69 @@
+
+ cieca_pfl
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ cieca_pfo
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ cieca_pft
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
closeconfirm
false
@@ -30038,6 +32475,53 @@
+
+ materials
+
+
+ mapa
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ missingprofileinfo
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
multipayers
false
@@ -30888,6 +33372,27 @@
+
+ remove_from_ar
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
returntotals
false
@@ -31329,6 +33834,27 @@
+
+ total_sales_tax
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
totals
false
@@ -33944,6 +36470,27 @@
+
+ lifecycle
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
partssublet
false
@@ -34080,6 +36627,69 @@
tech
+
+ assignedjobs
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ claimtask
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ dispatchedparts
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
home
false
@@ -34690,6 +37300,32 @@
+
+ render
+
+
+ conversation_list
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
@@ -36168,6 +38804,188 @@
+
+ parts_dispatch
+
+
+ actions
+
+
+ accept
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ errors
+
+
+ accepting
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ creating
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ fields
+
+
+ number
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ percent_accepted
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+ labels
+
+
+ parts_dispatch
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+
+
+ parts_dispatch_lines
+
+
+ fields
+
+
+ accepted_at
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
+
+
parts_orders
@@ -39124,6 +41942,27 @@
+
+ committed_timetickets_ro
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
coversheet_landscape
false
@@ -39864,6 +42703,27 @@
+
+ parts_dispatch
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
parts_invoice_label_single
false
@@ -40599,6 +43459,27 @@
+
+ worksheet_sorted_by_team
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
@@ -40942,6 +43823,27 @@
+
+ parts_dispatch
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
parts_order
false
@@ -42714,6 +45616,27 @@
+
+ ar_aging
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
attendance_detail
false
@@ -42777,6 +45700,69 @@
+
+ committed_timetickets
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ committed_timetickets_employee
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ committed_timetickets_summary
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
credits_not_received_date
false
@@ -43932,6 +46918,48 @@
+
+ load_level
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ lost_sales
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
open_orders
false
@@ -43995,6 +47023,27 @@
+
+ open_orders_excel
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
open_orders_ins_co
false
@@ -44940,6 +47989,27 @@
+
+ work_in_progress_committed_labour
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
work_in_progress_jobs
false
@@ -45332,6 +48402,27 @@
labels
+
+ allemployeetimetickets
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
asoftodaytarget
false
@@ -45353,6 +48444,48 @@
+
+ body
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ bodycharttitle
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
calendarperiod
false
@@ -45374,6 +48507,27 @@
+
+ combinedcharttitle
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
dailyactual
false
@@ -45479,6 +48633,27 @@
+
+ jobscompletednotinvoiced
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
lastmonth
false
@@ -45542,6 +48717,27 @@
+
+ priorweek
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
productivestatistics
false
@@ -45584,6 +48780,48 @@
+
+ refinish
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ refinishcharttitle
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
targets
false
@@ -45668,6 +48906,27 @@
+
+ timeticketsemployee
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
todateactual
false
@@ -45689,6 +48948,27 @@
+
+ totalhrs
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
totaloverperiod
false
@@ -46070,6 +49350,48 @@
+
+ commit
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ commitone
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
enter
false
@@ -46091,6 +49413,27 @@
+
+ payall
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
printemployee
false
@@ -46112,6 +49455,27 @@
+
+ uncommit
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
@@ -46243,6 +49607,27 @@
+
+ payall
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
shiftalreadyclockedon
false
@@ -46395,6 +49780,27 @@
+
+ committed_at
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
cost_center
false
@@ -46605,6 +50011,27 @@
+
+ task_name
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
@@ -46673,6 +50100,27 @@
+
+ claimtaskpreview
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
clockhours
false
@@ -46862,6 +50310,27 @@
+
+ payrollclaimedtasks
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
pmbreak
false
@@ -46967,6 +50436,27 @@
+
+ task
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
timetickets
false
@@ -46988,6 +50478,27 @@
+
+ unassigned
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
zeroactualnegativeprod
false
@@ -47056,6 +50567,27 @@
+
+ committed
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
created
false
@@ -47098,6 +50630,27 @@
+
+ payall
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
@@ -47166,6 +50719,27 @@
+
+ unassignedlines
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
@@ -49047,6 +52621,90 @@
+
+ techconsole
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ techjobclock
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ techjoblookup
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ techshiftclock
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
temporarydocs
false
@@ -49183,6 +52841,53 @@
+
+ labels
+
+
+ approval_queue_in_use
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ calculate
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+
diff --git a/client/.env.development b/client/.env.development.imex
similarity index 94%
rename from client/.env.development
rename to client/.env.development.imex
index 6676c072a..05cd1cbc7 100644
--- a/client/.env.development
+++ b/client/.env.development.imex
@@ -10,4 +10,5 @@ REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BG3tzU7L2BXlGZ_3VLK4PNaRceoEXEnmHfxcVbRMF5o
REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
REACT_APP_AXIOS_BASE_API_URL=http://localhost:4000
REACT_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
-REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
\ No newline at end of file
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
+INSTANCE=IMEX
diff --git a/client/.env.development.promanager b/client/.env.development.promanager
new file mode 100644
index 000000000..a4d89915d
--- /dev/null
+++ b/client/.env.development.promanager
@@ -0,0 +1,14 @@
+REACT_APP_GRAPHQL_ENDPOINT=https://db.dev.bodyshop.app/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.bodyshop.app/v1/graphql
+REACT_APP_GA_CODE=231099835
+REACT_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/io-test
+REACT_APP_CLOUDINARY_API_KEY=957865933348715
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BG3tzU7L2BXlGZ_3VLK4PNaRceoEXEnmHfxcVbRMF5o5g05ejslhVPki9kBM9cBBT-08Ad9kN3HSpS6JmrWD6h4'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=http://localhost:4000
+REACT_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
+INSTANCE=PROMANAGER
diff --git a/client/.env.development.rome b/client/.env.development.rome
new file mode 100644
index 000000000..e5591e583
--- /dev/null
+++ b/client/.env.development.rome
@@ -0,0 +1,15 @@
+REACT_APP_GRAPHQL_ENDPOINT=https://db.dev.bodyshop.app/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.bodyshop.app/v1/graphql
+REACT_APP_GA_CODE=231099835
+REACT_APP_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/io-test
+REACT_APP_CLOUDINARY_API_KEY=957865933348715
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BP1B7ZTYpn-KMt6nOxlld6aS8Skt3Q7ZLEqP0hAvGHxG4UojPYiXZ6kPlzZkUC5jH-EcWXomTLtmadAIxurfcHo'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=http://localhost:4000
+REACT_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
+REACT_APP_COUNTRY=USA
+INSTANCE=ROME
diff --git a/client/.env.production b/client/.env.production.imex
similarity index 94%
rename from client/.env.production
rename to client/.env.production.imex
index cdf721dcb..5ca553cdb 100644
--- a/client/.env.production
+++ b/client/.env.production.imex
@@ -11,4 +11,5 @@ REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BMgZT1NZztW2DsJl8Mg2L04hgY9FzAg6b8fbzgNAfww
REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
REACT_APP_AXIOS_BASE_API_URL=https://api.imex.online/
REACT_APP_REPORTS_SERVER_URL=https://reports.imex.online
-REACT_APP_SPLIT_API=et9pjkik6bn67he5evpmpr1agoo7gactphgk
\ No newline at end of file
+REACT_APP_SPLIT_API=et9pjkik6bn67he5evpmpr1agoo7gactphgk
+INSTANCE=IMEX
diff --git a/client/.env.production.promanager b/client/.env.production.promanager
new file mode 100644
index 000000000..112ef4751
--- /dev/null
+++ b/client/.env.production.promanager
@@ -0,0 +1,15 @@
+GENERATE_SOURCEMAP=true
+REACT_APP_GRAPHQL_ENDPOINT=https://db.imex.online/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.imex.online/v1/graphql
+REACT_APP_GA_CODE=231103507
+REACT_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDSezy-jGJreo7ulgpLdlpOwAOrgcaEkhU","authDomain":"imex-prod.firebaseapp.com","databaseURL":"https://imex-prod.firebaseio.com","projectId":"imex-prod","storageBucket":"imex-prod.appspot.com","messagingSenderId":"253497221485","appId":"1:253497221485:web:3c81c483b94db84b227a64","measurementId":"G-NTWBKG2L0M"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
+REACT_APP_CLOUDINARY_API_KEY=473322739956866
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BMgZT1NZztW2DsJl8Mg2L04hgY9FzAg6b8fbzgNAfww2VDzH3VE63Ot9EaP_U7KWS2JT-7HPHaw0T_Tw_5vkZc8'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=https://api.imex.online/
+REACT_APP_REPORTS_SERVER_URL=https://reports.imex.online
+REACT_APP_SPLIT_API=et9pjkik6bn67he5evpmpr1agoo7gactphgk
+INSTANCE=PROMANAGER
diff --git a/client/.env.production.rome b/client/.env.production.rome
new file mode 100644
index 000000000..f8d45517d
--- /dev/null
+++ b/client/.env.production.rome
@@ -0,0 +1,15 @@
+GENERATE_SOURCEMAP=true
+REACT_APP_GRAPHQL_ENDPOINT=https://db.romeonline.io/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.romeonline.io/v1/graphql
+REACT_APP_GA_CODE=231103507
+REACT_APP_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
+REACT_APP_CLOUDINARY_API_KEY=473322739956866
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BP1B7ZTYpn-KMt6nOxlld6aS8Skt3Q7ZLEqP0hAvGHxG4UojPYiXZ6kPlzZkUC5jH-EcWXomTLtmadAIxurfcHo'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=https://api.romeonline.io/
+REACT_APP_REPORTS_SERVER_URL=https://reports.romeonline.io
+REACT_APP_SPLIT_API=et9pjkik6bn67he5evpmpr1agoo7gactphgk
+INSTANCE=ROME
diff --git a/client/.env.test b/client/.env.test.imex
similarity index 94%
rename from client/.env.test
rename to client/.env.test.imex
index c6403dee6..ea15d7ad6 100644
--- a/client/.env.test
+++ b/client/.env.test.imex
@@ -11,4 +11,5 @@ REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxw
REACT_APP_AXIOS_BASE_API_URL=https://api.test.imex.online/
REACT_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
REACT_APP_IS_TEST=true
-REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
\ No newline at end of file
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
+INSTANCE=IMEX
diff --git a/client/.env.test.promanager b/client/.env.test.promanager
new file mode 100644
index 000000000..0b5b0da03
--- /dev/null
+++ b/client/.env.test.promanager
@@ -0,0 +1,15 @@
+REACT_APP_GRAPHQL_ENDPOINT=https://db.test.bodyshop.app/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.test.bodyshop.app/v1/graphql
+REACT_APP_GA_CODE=231099835
+REACT_APP_FIREBASE_CONFIG={ "apiKey":"AIzaSyBw7_GTy7GtQyfkIRPVrWHEGKfcqeyXw0c", "authDomain":"imex-test.firebaseapp.com", "projectId":"imex-test", "storageBucket":"imex-test.appspot.com", "messagingSenderId":"991923618608", "appId":"1:991923618608:web:633437569cdad78299bef5", "measurementId":"G-TW0XLZEH18"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
+REACT_APP_CLOUDINARY_API_KEY=473322739956866
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BN2GcDPjipR5MTEosO5dT4CfQ3cmrdBIsI4juoOQrRijn_5aRiHlwj1mlq0W145mOusx6xynEKl_tvYJhpCc9lo'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=https://api.test.imex.online/
+REACT_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
+REACT_APP_IS_TEST=true
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
+INSTANCE=PROMANAGER
diff --git a/client/.env.test.rome b/client/.env.test.rome
new file mode 100644
index 000000000..2a5182437
--- /dev/null
+++ b/client/.env.test.rome
@@ -0,0 +1,15 @@
+REACT_APP_GRAPHQL_ENDPOINT=https://db.test.romeonline.io/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.test.romeonline.io/v1/graphql
+REACT_APP_GA_CODE=231103507
+REACT_APP_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
+REACT_APP_CLOUDINARY_API_KEY=473322739956866
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BP1B7ZTYpn-KMt6nOxlld6aS8Skt3Q7ZLEqP0hAvGHxG4UojPYiXZ6kPlzZkUC5jH-EcWXomTLtmadAIxurfcHo'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=https://api.test.romeonline.io/
+REACT_APP_REPORTS_SERVER_URL=https://reports.test.romeonline.io
+REACT_APP_IS_TEST=true
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
+INSTANCE=ROME
diff --git a/client/craco.config.js b/client/craco.config.js
index 96aa36127..54f46cdb6 100644
--- a/client/craco.config.js
+++ b/client/craco.config.js
@@ -13,21 +13,7 @@ const v4Token = convertLegacyToken(mapToken);
module.exports = {
plugins: [
- // {
- // plugin: SentryWebpackPlugin,
- // options: {
- // // sentry-cli configuration
- // authToken:
- // "6b45b028a02342db97a9a2f92c0959058665443d379d4a3a876430009e744260",
- // org: "snapt-software",
- // project: "imexonline",
- // release: process.env.REACT_APP_GIT_SHA,
- //
- // // webpack-specific configuration
- // include: ".",
- // ignore: ["node_modules", "webpack.config.js"],
- // },
- // },
+
{
plugin: CracoLessPlugin,
options: {
diff --git a/client/package-lock.json b/client/package-lock.json
index e5455a68a..3aa7489a5 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -92,6 +92,7 @@
},
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
+ "@dotenvx/dotenvx": "^0.15.0",
"@sentry/webpack-plugin": "^2.14.0",
"@testing-library/cypress": "^10.0.1",
"cypress": "^13.6.4",
@@ -2879,6 +2880,106 @@
"ms": "^2.1.1"
}
},
+ "node_modules/@dabh/diagnostics": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
+ "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
+ "dev": true,
+ "dependencies": {
+ "colorspace": "1.1.x",
+ "enabled": "2.0.x",
+ "kuler": "^2.0.0"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-0.15.0.tgz",
+ "integrity": "sha512-+JyZ+hKkrM6gPnfJ18/oNeaO8nkmu6HjUttGymwODKZrFTnTe2LMmA6IlJIaR8TM7Si4Fkyn8I9XWR0086NuSA==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/prompts": "^3.3.0",
+ "axios": "^1.6.2",
+ "chalk": "^4.1.2",
+ "clipboardy": "^2.3.0",
+ "commander": "^11.1.0",
+ "conf": "^10.2.0",
+ "dotenv": "^16.4.0",
+ "dotenv-expand": "^10.0.0",
+ "execa": "^5.1.1",
+ "ignore": "^5.3.0",
+ "open": "^8.4.2",
+ "ora": "^5.4.1",
+ "update-notifier": "^5.1.0",
+ "winston": "^3.11.0",
+ "xxhashjs": "^0.2.2"
+ },
+ "bin": {
+ "dotenvx": "src/cli/dotenvx.js",
+ "git-dotenvx": "src/cli/dotenvx.js"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/dotenv-expand": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
+ "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
"node_modules/@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
@@ -3586,6 +3687,205 @@
"react": "*"
}
},
+ "node_modules/@inquirer/checkbox": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-1.5.2.tgz",
+ "integrity": "sha512-CifrkgQjDkUkWexmgYYNyB5603HhTHI91vLFeQXh6qrTKiCMVASol01Rs1cv6LP/A2WccZSRlJKZhbaBIs/9ZA==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
+ "figures": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/confirm": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.17.tgz",
+ "integrity": "sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/core": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-6.0.0.tgz",
+ "integrity": "sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/type": "^1.1.6",
+ "@types/mute-stream": "^0.0.4",
+ "@types/node": "^20.10.7",
+ "@types/wrap-ansi": "^3.0.0",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
+ "cli-spinners": "^2.9.2",
+ "cli-width": "^4.1.0",
+ "figures": "^3.2.0",
+ "mute-stream": "^1.0.0",
+ "run-async": "^3.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^6.2.0"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/core/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@inquirer/core/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@inquirer/editor": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-1.2.15.tgz",
+ "integrity": "sha512-gQ77Ls09x5vKLVNMH9q/7xvYPT6sIs5f7URksw+a2iJZ0j48tVS6crLqm2ugG33tgXHIwiEqkytY60Zyh5GkJQ==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "chalk": "^4.1.2",
+ "external-editor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/expand": {
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-1.1.16.tgz",
+ "integrity": "sha512-TGLU9egcuo+s7PxphKUCnJnpCIVY32/EwPCLLuu+gTvYiD8hZgx8Z2niNQD36sa6xcfpdLY6xXDBiL/+g1r2XQ==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "chalk": "^4.1.2",
+ "figures": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/input": {
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-1.2.16.tgz",
+ "integrity": "sha512-Ou0LaSWvj1ni+egnyQ+NBtfM1885UwhRCMtsRt2bBO47DoC1dwtCa+ZUNgrxlnCHHF0IXsbQHYtIIjFGAavI4g==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/password": {
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-1.1.16.tgz",
+ "integrity": "sha512-aZYZVHLUXZ2gbBot+i+zOJrks1WaiI95lvZCn1sKfcw6MtSSlYC8uDX8sTzQvAsQ8epHoP84UNvAIT0KVGOGqw==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/prompts": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-3.3.2.tgz",
+ "integrity": "sha512-k52mOMRvTUejrqyF1h8Z07chC+sbaoaUYzzr1KrJXyj7yaX7Nrh0a9vktv8TuocRwIJOQMaj5oZEmkspEcJFYQ==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/checkbox": "^1.5.2",
+ "@inquirer/confirm": "^2.0.17",
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/editor": "^1.2.15",
+ "@inquirer/expand": "^1.1.16",
+ "@inquirer/input": "^1.2.16",
+ "@inquirer/password": "^1.1.16",
+ "@inquirer/rawlist": "^1.2.16",
+ "@inquirer/select": "^1.3.3"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/rawlist": {
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-1.2.16.tgz",
+ "integrity": "sha512-pZ6TRg2qMwZAOZAV6TvghCtkr53dGnK29GMNQ3vMZXSNguvGqtOVc4j/h1T8kqGJFagjyfBZhUPGwNS55O5qPQ==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/select": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-1.3.3.tgz",
+ "integrity": "sha512-RzlRISXWqIKEf83FDC9ZtJ3JvuK1l7aGpretf41BCWYrvla2wU8W8MTRNMiPrPJ+1SIqrRC1nZdZ60hD9hRXLg==",
+ "dev": true,
+ "dependencies": {
+ "@inquirer/core": "^6.0.0",
+ "@inquirer/type": "^1.1.6",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
+ "figures": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/@inquirer/type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-/vvkUkYhrjbm+RolU7V1aUFDydZVKNKqKHR5TsE+j5DXgXFwrsOPcoGUJ02K0O7q7O53CU2DOTMYCHeGZ25WHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -4878,6 +5178,15 @@
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
"integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA=="
},
+ "node_modules/@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@sinonjs/commons": {
"version": "1.8.6",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
@@ -5181,6 +5490,18 @@
"url": "https://github.com/sponsors/gregberge"
}
},
+ "node_modules/@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "dev": true,
+ "dependencies": {
+ "defer-to-connect": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@tanem/react-nprogress": {
"version": "5.0.51",
"resolved": "https://registry.npmjs.org/@tanem/react-nprogress/-/react-nprogress-5.0.51.tgz",
@@ -5568,10 +5889,19 @@
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
},
+ "node_modules/@types/mute-stream": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz",
+ "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/node": {
- "version": "20.10.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
- "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -5723,6 +6053,12 @@
"resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz",
"integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw=="
},
+ "node_modules/@types/triple-beam": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
+ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==",
+ "dev": true
+ },
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -5743,6 +6079,12 @@
"resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz",
"integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q=="
},
+ "node_modules/@types/wrap-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz",
+ "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==",
+ "dev": true
+ },
"node_modules/@types/ws": {
"version": "8.5.10",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
@@ -6384,6 +6726,15 @@
"ajv": "^6.9.1"
}
},
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
"node_modules/ansi-colors": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
@@ -6818,6 +7169,15 @@
"node": ">= 4.0.0"
}
},
+ "node_modules/atomically": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
+ "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
"node_modules/autoprefixer": {
"version": "10.4.16",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
@@ -7273,6 +7633,17 @@
"node": ">=8"
}
},
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
"node_modules/blob-util": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz",
@@ -7388,6 +7759,28 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
+ "node_modules/boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@@ -7534,6 +7927,57 @@
"node": ">= 0.8"
}
},
+ "node_modules/cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "dev": true,
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
+ "dev": true
+ },
+ "node_modules/cacheable-request/node_modules/keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/normalize-url": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cachedir": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz",
@@ -7712,6 +8156,12 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
"node_modules/check-more-types": {
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
@@ -7815,6 +8265,18 @@
"node": ">=6"
}
},
+ "node_modules/cli-boxes": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cli-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
@@ -7827,6 +8289,18 @@
"node": ">=8"
}
},
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cli-table3": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz",
@@ -7858,11 +8332,152 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/cli-width": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
+ "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
+ "node_modules/clipboardy": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz",
+ "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
+ "dev": true,
+ "dependencies": {
+ "arch": "^2.1.1",
+ "execa": "^1.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clipboardy/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/clipboardy/node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clipboardy/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clipboardy/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/clipboardy/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -7876,6 +8491,15 @@
"node": ">=12"
}
},
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -7889,6 +8513,18 @@
"node": ">=6"
}
},
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/clsx": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
@@ -7988,6 +8624,16 @@
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
"integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q=="
},
+ "node_modules/color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -8004,6 +8650,31 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/color/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
"node_modules/colord": {
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
@@ -8014,6 +8685,16 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
},
+ "node_modules/colorspace": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
+ "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
+ "dev": true,
+ "dependencies": {
+ "color": "^3.1.3",
+ "text-hex": "1.0.x"
+ }
+ },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -8117,6 +8798,114 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
+ "node_modules/conf": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz",
+ "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.6.3",
+ "ajv-formats": "^2.1.1",
+ "atomically": "^1.7.0",
+ "debounce-fn": "^4.0.0",
+ "dot-prop": "^6.0.1",
+ "env-paths": "^2.2.1",
+ "json-schema-typed": "^7.0.3",
+ "onetime": "^5.1.2",
+ "pkg-up": "^3.1.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/conf/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/conf/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dev": true,
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/configstore/node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/configstore/node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/configstore/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/configstore/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/confusing-browser-globals": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
@@ -8979,6 +9768,30 @@
"dayjs": "^1.11.10"
}
},
+ "node_modules/debounce-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
+ "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/debounce-fn/node_modules/mimic-fn": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
+ "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -9025,6 +9838,18 @@
"node": ">=14.16"
}
},
+ "node_modules/decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/dedent": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
@@ -9079,6 +9904,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -9144,6 +9978,24 @@
"node": ">=10.17.0"
}
},
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "dev": true,
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
+ "dev": true
+ },
"node_modules/define-data-property": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
@@ -9499,6 +10351,12 @@
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
},
+ "node_modules/duplexer3": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
+ "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
+ "dev": true
+ },
"node_modules/earcut": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
@@ -9562,6 +10420,12 @@
"node": ">= 4"
}
},
+ "node_modules/enabled": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
+ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
+ "dev": true
+ },
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@@ -9688,6 +10552,15 @@
"node": ">= 6"
}
},
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/errno": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
@@ -9864,6 +10737,15 @@
"node": ">=6"
}
},
+ "node_modules/escape-goat": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
+ "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -10754,6 +11636,44 @@
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/external-editor/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/external-editor/node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
"node_modules/extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@@ -10859,6 +11779,12 @@
"pend": "~1.2.0"
}
},
+ "node_modules/fecha": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
+ "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==",
+ "dev": true
+ },
"node_modules/figures": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@@ -11113,6 +12039,12 @@
"resolved": "https://registry.npmjs.org/svg-path-properties/-/svg-path-properties-0.2.2.tgz",
"integrity": "sha512-GmrB+b6woz6CCdQe6w1GHs/1lt25l7SR5hmhF8jRdarpv/OgjLyuQygLu1makJapixeb1aQhP/Oa1iKi93o/aQ=="
},
+ "node_modules/fn.name": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
+ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
+ "dev": true
+ },
"node_modules/follow-redirects": {
"version": "1.15.4",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
@@ -11620,6 +12552,40 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/got/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -11739,6 +12705,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/has-yarn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
+ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
@@ -11971,6 +12946,12 @@
"entities": "^2.0.0"
}
},
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "dev": true
+ },
"node_modules/http-deceiver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
@@ -12217,6 +13198,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -12627,6 +13617,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/is-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
@@ -12651,6 +13650,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-npm": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -12883,6 +13894,12 @@
"node": ">=8"
}
},
+ "node_modules/is-yarn-global": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+ "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
+ "dev": true
+ },
"node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
@@ -14246,6 +15263,12 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
+ "node_modules/json-schema-typed": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz",
+ "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==",
+ "dev": true
+ },
"node_modules/json-source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz",
@@ -14412,6 +15435,12 @@
"node": ">= 8"
}
},
+ "node_modules/kuler": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
+ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
+ "dev": true
+ },
"node_modules/language-subtag-registry": {
"version": "0.3.22",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
@@ -14428,6 +15457,18 @@
"node": ">=0.10"
}
},
+ "node_modules/latest-version": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
+ "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+ "dev": true,
+ "dependencies": {
+ "package-json": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/launch-editor": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz",
@@ -14748,6 +15789,32 @@
"node": ">=8"
}
},
+ "node_modules/logform": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz",
+ "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==",
+ "dev": true,
+ "dependencies": {
+ "@colors/colors": "1.6.0",
+ "@types/triple-beam": "^1.3.2",
+ "fecha": "^4.2.0",
+ "ms": "^2.1.1",
+ "safe-stable-stringify": "^2.3.1",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/logform/node_modules/@colors/colors": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
+ "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
"node_modules/logrocket": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/logrocket/-/logrocket-7.0.0.tgz",
@@ -14786,6 +15853,15 @@
"tslib": "^2.0.3"
}
},
+ "node_modules/lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/lru-cache": {
"version": "10.2.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
@@ -15554,6 +16630,15 @@
"node": ">=6"
}
},
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/mini-css-extract-plugin": {
"version": "2.7.6",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz",
@@ -15710,6 +16795,15 @@
"multicast-dns": "cli.js"
}
},
+ "node_modules/mute-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
+ "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@@ -15784,6 +16878,12 @@
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
"node_modules/no-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
@@ -16077,6 +17177,15 @@
"wrappy": "1"
}
},
+ "node_modules/one-time": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
+ "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
+ "dev": true,
+ "dependencies": {
+ "fn.name": "1.x.x"
+ }
+ },
"node_modules/onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
@@ -16145,12 +17254,62 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/ospath": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
"integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==",
"dev": true
},
+ "node_modules/p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -16207,6 +17366,30 @@
"node": ">=6"
}
},
+ "node_modules/package-json": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+ "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+ "dev": true,
+ "dependencies": {
+ "got": "^9.6.0",
+ "registry-auth-token": "^4.0.0",
+ "registry-url": "^5.0.0",
+ "semver": "^6.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/package-json/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@@ -17750,6 +18933,15 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/pretty-bytes": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
@@ -17948,6 +19140,18 @@
"node": ">=6"
}
},
+ "node_modules/pupa": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+ "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+ "dev": true,
+ "dependencies": {
+ "escape-goat": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
@@ -18082,6 +19286,21 @@
"node": ">=0.10.0"
}
},
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
"node_modules/rc-animate": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-3.1.1.tgz",
@@ -18757,6 +19976,21 @@
"react-dom": "*"
}
},
+ "node_modules/rc/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -19714,6 +20948,30 @@
"node": ">=4"
}
},
+ "node_modules/registry-auth-token": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz",
+ "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==",
+ "dev": true,
+ "dependencies": {
+ "rc": "1.2.8"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+ "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+ "dev": true,
+ "dependencies": {
+ "rc": "^1.2.8"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/regjsparser": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
@@ -19936,6 +21194,15 @@
"node": ">=0.8"
}
},
+ "node_modules/responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
"node_modules/restore-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
@@ -20075,6 +21342,15 @@
"randombytes": "^2.1.0"
}
},
+ "node_modules/run-async": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
+ "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -20312,6 +21588,27 @@
"node": ">=10"
}
},
+ "node_modules/semver-diff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/semver-diff/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/semver/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -20554,6 +21851,21 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "dev": true
+ },
"node_modules/sisteransi": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -20903,6 +22215,15 @@
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
"deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility"
},
+ "node_modules/stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
@@ -21198,6 +22519,15 @@
"node": ">=10"
}
},
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -21913,6 +23243,12 @@
"node": "*"
}
},
+ "node_modules/text-hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
+ "dev": true
+ },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -22005,6 +23341,15 @@
"node": ">=4"
}
},
+ "node_modules/to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -22083,6 +23428,15 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/triple-beam": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz",
+ "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
"node_modules/trough": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz",
@@ -22707,6 +24061,52 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/update-notifier": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
+ "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
+ "dev": true,
+ "dependencies": {
+ "boxen": "^5.0.0",
+ "chalk": "^4.1.0",
+ "configstore": "^5.0.1",
+ "has-yarn": "^2.1.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^2.0.0",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^5.0.0",
+ "is-yarn-global": "^0.3.0",
+ "latest-version": "^5.1.0",
+ "pupa": "^2.1.1",
+ "semver": "^7.3.4",
+ "semver-diff": "^3.1.1",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/update-notifier?sponsor=1"
+ }
+ },
+ "node_modules/update-notifier/node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "dev": true
+ },
+ "node_modules/update-notifier/node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -22724,6 +24124,18 @@
"requires-port": "^1.0.0"
}
},
+ "node_modules/url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
+ "dev": true,
+ "dependencies": {
+ "prepend-http": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/use-memo-one": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz",
@@ -22969,6 +24381,15 @@
"minimalistic-assert": "^1.0.0"
}
},
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
"node_modules/web-vitals": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz",
@@ -23450,11 +24871,68 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/widest-line": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/wildcard": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
},
+ "node_modules/winston": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz",
+ "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==",
+ "dev": true,
+ "dependencies": {
+ "@colors/colors": "^1.6.0",
+ "@dabh/diagnostics": "^2.0.2",
+ "async": "^3.2.3",
+ "is-stream": "^2.0.0",
+ "logform": "^2.4.0",
+ "one-time": "^1.0.0",
+ "readable-stream": "^3.4.0",
+ "safe-stable-stringify": "^2.3.1",
+ "stack-trace": "0.0.x",
+ "triple-beam": "^1.3.0",
+ "winston-transport": "^4.5.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston-transport": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz",
+ "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==",
+ "dev": true,
+ "dependencies": {
+ "logform": "^2.3.2",
+ "readable-stream": "^3.6.0",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston/node_modules/@colors/colors": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
+ "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -23913,6 +25391,15 @@
}
}
},
+ "node_modules/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/xml-name-validator": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
diff --git a/client/package.json b/client/package.json
index 20f03f8a6..77ff5f0c5 100644
--- a/client/package.json
+++ b/client/package.json
@@ -89,15 +89,21 @@
"scripts": {
"analyze": "source-map-explorer 'build/static/js/*.js'",
"start": "craco start",
+ "start:imex": "dotenvx run --env-file=.env.development.imex -- craco start",
+ "start:rome": "dotenvx run --env-file=.env.development.rome -- craco start",
+ "start:promanager": "dotenvx run --env-file=.env.development.promanager -- craco start",
"build": "REACT_APP_GIT_SHA=`git rev-parse --short HEAD` craco build",
- "build:test": "env-cmd -f .env.test npm run build",
- "build-deploy:test": "npm run build:test && s3cmd sync build/* s3://imex-online-test && echo '🚀 TESTING Deployed!'",
- "buildcra": "REACT_APP_GIT_SHA=`git rev-parse --short HEAD` craco build",
+ "build:test:imex": "env-cmd -f .env.test.imex npm run build",
+ "build:test:rome": "env-cmd -f .env.test.rome npm run build",
+ "build:test:promanager": "env-cmd -f .env.test.promanager npm run build",
+ "build:production:imex": "env-cmd -f .env.production.imex npm run build",
+ "build:production:rome": "env-cmd -f .env.production.rome npm run build",
+ "build:production:promanager": "env-cmd -f .env.production.promanager npm run build",
"test": "cypress open",
"eject": "react-scripts eject",
"madge": "madge --image ./madge-graph.svg --extensions js,jsx,ts,tsx --circular .",
"eulaize": "node src/utils/eulaize.js",
- "sentry:sourcemaps": "sentry-cli sourcemaps inject --org imex --project imexonline ./build && sentry-cli sourcemaps upload --org imex --project imexonline ./build"
+ "sentry:sourcemaps:imex": "sentry-cli sourcemaps inject --org imex --project imexonline ./build && sentry-cli sourcemaps upload --org imex --project imexonline ./build"
},
"eslintConfig": {
"extends": [
@@ -123,6 +129,7 @@
},
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
+ "@dotenvx/dotenvx": "^0.15.0",
"@sentry/webpack-plugin": "^2.14.0",
"@testing-library/cypress": "^10.0.1",
"cypress": "^13.6.4",
diff --git a/client/patches/peerjs+1.3.2.patch b/client/patches/peerjs+1.3.2.patch
deleted file mode 100644
index 197ede2f2..000000000
--- a/client/patches/peerjs+1.3.2.patch
+++ /dev/null
@@ -1,13087 +0,0 @@
-diff --git a/node_modules/peerjs/dist/adapter.js b/node_modules/peerjs/dist/adapter.js
-new file mode 100644
-index 0000000..6bfbeb8
---- /dev/null
-+++ b/node_modules/peerjs/dist/adapter.js
-@@ -0,0 +1,8 @@
-+"use strict";
-+var __importDefault = (this && this.__importDefault) || function (mod) {
-+ return (mod && mod.__esModule) ? mod : { "default": mod };
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.webRTCAdapter = void 0;
-+var webrtc_adapter_1 = __importDefault(require("webrtc-adapter"));
-+exports.webRTCAdapter = webrtc_adapter_1.default;
-diff --git a/node_modules/peerjs/dist/api.js b/node_modules/peerjs/dist/api.js
-new file mode 100644
-index 0000000..8c091c2
---- /dev/null
-+++ b/node_modules/peerjs/dist/api.js
-@@ -0,0 +1,142 @@
-+"use strict";
-+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-+ return new (P || (P = Promise))(function (resolve, reject) {
-+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-+ step((generator = generator.apply(thisArg, _arguments || [])).next());
-+ });
-+};
-+var __generator = (this && this.__generator) || function (thisArg, body) {
-+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-+ function verb(n) { return function (v) { return step([n, v]); }; }
-+ function step(op) {
-+ if (f) throw new TypeError("Generator is already executing.");
-+ while (_) try {
-+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-+ if (y = 0, t) op = [op[0] & 2, t.value];
-+ switch (op[0]) {
-+ case 0: case 1: t = op; break;
-+ case 4: _.label++; return { value: op[1], done: false };
-+ case 5: _.label++; y = op[1]; op = [0]; continue;
-+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
-+ default:
-+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-+ if (t[2]) _.ops.pop();
-+ _.trys.pop(); continue;
-+ }
-+ op = body.call(thisArg, _);
-+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-+ }
-+};
-+var __importDefault = (this && this.__importDefault) || function (mod) {
-+ return (mod && mod.__esModule) ? mod : { "default": mod };
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.API = void 0;
-+var util_1 = require("./util");
-+var logger_1 = __importDefault(require("./logger"));
-+var API = /** @class */ (function () {
-+ function API(_options) {
-+ this._options = _options;
-+ }
-+ API.prototype._buildUrl = function (method) {
-+ var protocol = this._options.secure ? "https://" : "http://";
-+ var url = protocol +
-+ this._options.host +
-+ ":" +
-+ this._options.port +
-+ this._options.path +
-+ this._options.key +
-+ "/" +
-+ method;
-+ var queryString = "?ts=" + new Date().getTime() + "" + Math.random();
-+ url += queryString;
-+ return url;
-+ };
-+ /** Get a unique ID from the server via XHR and initialize with it. */
-+ API.prototype.retrieveId = function () {
-+ return __awaiter(this, void 0, void 0, function () {
-+ var url, response, error_1, pathError;
-+ return __generator(this, function (_a) {
-+ switch (_a.label) {
-+ case 0:
-+ url = this._buildUrl("id");
-+ _a.label = 1;
-+ case 1:
-+ _a.trys.push([1, 3, , 4]);
-+ return [4 /*yield*/, fetch(url)];
-+ case 2:
-+ response = _a.sent();
-+ if (response.status !== 200) {
-+ throw new Error("Error. Status:" + response.status);
-+ }
-+ return [2 /*return*/, response.text()];
-+ case 3:
-+ error_1 = _a.sent();
-+ logger_1.default.error("Error retrieving ID", error_1);
-+ pathError = "";
-+ if (this._options.path === "/" &&
-+ this._options.host !== util_1.util.CLOUD_HOST) {
-+ pathError =
-+ " If you passed in a `path` to your self-hosted PeerServer, " +
-+ "you'll also need to pass in that same path when creating a new " +
-+ "Peer.";
-+ }
-+ throw new Error("Could not get an ID from the server." + pathError);
-+ case 4: return [2 /*return*/];
-+ }
-+ });
-+ });
-+ };
-+ /** @deprecated */
-+ API.prototype.listAllPeers = function () {
-+ return __awaiter(this, void 0, void 0, function () {
-+ var url, response, helpfulError, error_2;
-+ return __generator(this, function (_a) {
-+ switch (_a.label) {
-+ case 0:
-+ url = this._buildUrl("peers");
-+ _a.label = 1;
-+ case 1:
-+ _a.trys.push([1, 3, , 4]);
-+ return [4 /*yield*/, fetch(url)];
-+ case 2:
-+ response = _a.sent();
-+ if (response.status !== 200) {
-+ if (response.status === 401) {
-+ helpfulError = "";
-+ if (this._options.host === util_1.util.CLOUD_HOST) {
-+ helpfulError =
-+ "It looks like you're using the cloud server. You can email " +
-+ "team@peerjs.com to enable peer listing for your API key.";
-+ }
-+ else {
-+ helpfulError =
-+ "You need to enable `allow_discovery` on your self-hosted " +
-+ "PeerServer to use this feature.";
-+ }
-+ throw new Error("It doesn't look like you have permission to list peers IDs. " +
-+ helpfulError);
-+ }
-+ throw new Error("Error. Status:" + response.status);
-+ }
-+ return [2 /*return*/, response.json()];
-+ case 3:
-+ error_2 = _a.sent();
-+ logger_1.default.error("Error retrieving list peers", error_2);
-+ throw new Error("Could not get list peers from the server." + error_2);
-+ case 4: return [2 /*return*/];
-+ }
-+ });
-+ });
-+ };
-+ return API;
-+}());
-+exports.API = API;
-diff --git a/node_modules/peerjs/dist/baseconnection.js b/node_modules/peerjs/dist/baseconnection.js
-new file mode 100644
-index 0000000..0c4e504
---- /dev/null
-+++ b/node_modules/peerjs/dist/baseconnection.js
-@@ -0,0 +1,40 @@
-+"use strict";
-+var __extends = (this && this.__extends) || (function () {
-+ var extendStatics = function (d, b) {
-+ extendStatics = Object.setPrototypeOf ||
-+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-+ return extendStatics(d, b);
-+ };
-+ return function (d, b) {
-+ if (typeof b !== "function" && b !== null)
-+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-+ extendStatics(d, b);
-+ function __() { this.constructor = d; }
-+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-+ };
-+})();
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.BaseConnection = void 0;
-+var eventemitter3_1 = require("eventemitter3");
-+var BaseConnection = /** @class */ (function (_super) {
-+ __extends(BaseConnection, _super);
-+ function BaseConnection(peer, provider, options) {
-+ var _this = _super.call(this) || this;
-+ _this.peer = peer;
-+ _this.provider = provider;
-+ _this.options = options;
-+ _this._open = false;
-+ _this.metadata = options.metadata;
-+ return _this;
-+ }
-+ Object.defineProperty(BaseConnection.prototype, "open", {
-+ get: function () {
-+ return this._open;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ return BaseConnection;
-+}(eventemitter3_1.EventEmitter));
-+exports.BaseConnection = BaseConnection;
-diff --git a/node_modules/peerjs/dist/dataconnection.js b/node_modules/peerjs/dist/dataconnection.js
-new file mode 100644
-index 0000000..64262ac
---- /dev/null
-+++ b/node_modules/peerjs/dist/dataconnection.js
-@@ -0,0 +1,298 @@
-+"use strict";
-+var __extends = (this && this.__extends) || (function () {
-+ var extendStatics = function (d, b) {
-+ extendStatics = Object.setPrototypeOf ||
-+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-+ return extendStatics(d, b);
-+ };
-+ return function (d, b) {
-+ if (typeof b !== "function" && b !== null)
-+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-+ extendStatics(d, b);
-+ function __() { this.constructor = d; }
-+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-+ };
-+})();
-+var __importDefault = (this && this.__importDefault) || function (mod) {
-+ return (mod && mod.__esModule) ? mod : { "default": mod };
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.DataConnection = void 0;
-+var util_1 = require("./util");
-+var logger_1 = __importDefault(require("./logger"));
-+var negotiator_1 = require("./negotiator");
-+var enums_1 = require("./enums");
-+var baseconnection_1 = require("./baseconnection");
-+var encodingQueue_1 = require("./encodingQueue");
-+/**
-+ * Wraps a DataChannel between two Peers.
-+ */
-+// @ts-ignore
-+var DataConnection = /** @class */ (function (_super) {
-+ __extends(DataConnection, _super);
-+ function DataConnection(peerId, provider, options) {
-+ var _this = _super.call(this, peerId, provider, options) || this;
-+ _this.stringify = JSON.stringify;
-+ _this.parse = JSON.parse;
-+ _this._buffer = [];
-+ _this._bufferSize = 0;
-+ _this._buffering = false;
-+ _this._chunkedData = {};
-+ _this._encodingQueue = new encodingQueue_1.EncodingQueue();
-+ _this.connectionId =
-+ _this.options.connectionId || DataConnection.ID_PREFIX + util_1.util.randomToken();
-+ _this.label = _this.options.label || _this.connectionId;
-+ _this.serialization = _this.options.serialization || enums_1.SerializationType.Binary;
-+ _this.reliable = !!_this.options.reliable;
-+ _this._encodingQueue.on('done', function (ab) {
-+ _this._bufferedSend(ab);
-+ });
-+ _this._encodingQueue.on('error', function () {
-+ logger_1.default.error("DC#" + _this.connectionId + ": Error occured in encoding from blob to arraybuffer, close DC");
-+ _this.close();
-+ });
-+ _this._negotiator = new negotiator_1.Negotiator(_this);
-+ _this._negotiator.startConnection(_this.options._payload || {
-+ originator: true
-+ });
-+ return _this;
-+ }
-+ Object.defineProperty(DataConnection.prototype, "type", {
-+ get: function () {
-+ return enums_1.ConnectionType.Data;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(DataConnection.prototype, "dataChannel", {
-+ get: function () {
-+ return this._dc;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(DataConnection.prototype, "bufferSize", {
-+ get: function () { return this._bufferSize; },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ /** Called by the Negotiator when the DataChannel is ready. */
-+ DataConnection.prototype.initialize = function (dc) {
-+ this._dc = dc;
-+ this._configureDataChannel();
-+ };
-+ DataConnection.prototype._configureDataChannel = function () {
-+ var _this = this;
-+ if (!util_1.util.supports.binaryBlob || util_1.util.supports.reliable) {
-+ this.dataChannel.binaryType = "arraybuffer";
-+ }
-+ this.dataChannel.onopen = function () {
-+ logger_1.default.log("DC#" + _this.connectionId + " dc connection success");
-+ _this._open = true;
-+ _this.emit(enums_1.ConnectionEventType.Open);
-+ };
-+ this.dataChannel.onmessage = function (e) {
-+ logger_1.default.log("DC#" + _this.connectionId + " dc onmessage:", e.data);
-+ _this._handleDataMessage(e);
-+ };
-+ this.dataChannel.onclose = function () {
-+ logger_1.default.log("DC#" + _this.connectionId + " dc closed for:", _this.peer);
-+ _this.close();
-+ };
-+ };
-+ // Handles a DataChannel message.
-+ DataConnection.prototype._handleDataMessage = function (_a) {
-+ var _this = this;
-+ var data = _a.data;
-+ var datatype = data.constructor;
-+ var isBinarySerialization = this.serialization === enums_1.SerializationType.Binary ||
-+ this.serialization === enums_1.SerializationType.BinaryUTF8;
-+ var deserializedData = data;
-+ if (isBinarySerialization) {
-+ if (datatype === Blob) {
-+ // Datatype should never be blob
-+ util_1.util.blobToArrayBuffer(data, function (ab) {
-+ // @ts-ignore
-+ var unpackedData = util_1.util.unpack(ab);
-+ _this.emit(enums_1.ConnectionEventType.Data, unpackedData);
-+ });
-+ return;
-+ }
-+ else if (datatype === ArrayBuffer) {
-+ deserializedData = util_1.util.unpack(data);
-+ }
-+ else if (datatype === String) {
-+ // String fallback for binary data for browsers that don't support binary yet
-+ var ab = util_1.util.binaryStringToArrayBuffer(data);
-+ deserializedData = util_1.util.unpack(ab);
-+ }
-+ }
-+ else if (this.serialization === enums_1.SerializationType.JSON) {
-+ deserializedData = this.parse(data);
-+ }
-+ // Check if we've chunked--if so, piece things back together.
-+ // We're guaranteed that this isn't 0.
-+ if (deserializedData.__peerData) {
-+ this._handleChunk(deserializedData);
-+ return;
-+ }
-+ _super.prototype.emit.call(this, enums_1.ConnectionEventType.Data, deserializedData);
-+ };
-+ DataConnection.prototype._handleChunk = function (data) {
-+ var id = data.__peerData;
-+ var chunkInfo = this._chunkedData[id] || {
-+ data: [],
-+ count: 0,
-+ total: data.total
-+ };
-+ chunkInfo.data[data.n] = data.data;
-+ chunkInfo.count++;
-+ this._chunkedData[id] = chunkInfo;
-+ if (chunkInfo.total === chunkInfo.count) {
-+ // Clean up before making the recursive call to `_handleDataMessage`.
-+ delete this._chunkedData[id];
-+ // We've received all the chunks--time to construct the complete data.
-+ var data_1 = new Blob(chunkInfo.data);
-+ this._handleDataMessage({ data: data_1 });
-+ }
-+ };
-+ /**
-+ * Exposed functionality for users.
-+ */
-+ /** Allows user to close connection. */
-+ DataConnection.prototype.close = function () {
-+ this._buffer = [];
-+ this._bufferSize = 0;
-+ this._chunkedData = {};
-+ if (this._negotiator) {
-+ this._negotiator.cleanup();
-+ // @ts-ignore
-+ this._negotiator = null;
-+ }
-+ if (this.provider) {
-+ this.provider._removeConnection(this);
-+ // @ts-ignore
-+ this.provider = null;
-+ }
-+ if (this.dataChannel) {
-+ this.dataChannel.onopen = null;
-+ this.dataChannel.onmessage = null;
-+ this.dataChannel.onclose = null;
-+ // @ts-ignore
-+ this._dc = null;
-+ }
-+ if (this._encodingQueue) {
-+ this._encodingQueue.destroy();
-+ this._encodingQueue.removeAllListeners();
-+ // @ts-ignore
-+ this._encodingQueue = null;
-+ }
-+ if (!this.open) {
-+ return;
-+ }
-+ this._open = false;
-+ _super.prototype.emit.call(this, enums_1.ConnectionEventType.Close);
-+ };
-+ /** Allows user to send data. */
-+ DataConnection.prototype.send = function (data, chunked) {
-+ if (!this.open) {
-+ _super.prototype.emit.call(this, enums_1.ConnectionEventType.Error, new Error("Connection is not open. You should listen for the `open` event before sending messages."));
-+ return;
-+ }
-+ if (this.serialization === enums_1.SerializationType.JSON) {
-+ this._bufferedSend(this.stringify(data));
-+ }
-+ else if (this.serialization === enums_1.SerializationType.Binary ||
-+ this.serialization === enums_1.SerializationType.BinaryUTF8) {
-+ var blob = util_1.util.pack(data);
-+ if (!chunked && blob.size > util_1.util.chunkedMTU) {
-+ this._sendChunks(blob);
-+ return;
-+ }
-+ if (!util_1.util.supports.binaryBlob) {
-+ // We only do this if we really need to (e.g. blobs are not supported),
-+ // because this conversion is costly.
-+ this._encodingQueue.enque(blob);
-+ }
-+ else {
-+ this._bufferedSend(blob);
-+ }
-+ }
-+ else {
-+ this._bufferedSend(data);
-+ }
-+ };
-+ DataConnection.prototype._bufferedSend = function (msg) {
-+ if (this._buffering || !this._trySend(msg)) {
-+ this._buffer.push(msg);
-+ this._bufferSize = this._buffer.length;
-+ }
-+ };
-+ // Returns true if the send succeeds.
-+ DataConnection.prototype._trySend = function (msg) {
-+ var _this = this;
-+ if (!this.open) {
-+ return false;
-+ }
-+ if (this.dataChannel.bufferedAmount > DataConnection.MAX_BUFFERED_AMOUNT) {
-+ this._buffering = true;
-+ setTimeout(function () {
-+ _this._buffering = false;
-+ _this._tryBuffer();
-+ }, 50);
-+ return false;
-+ }
-+ try {
-+ this.dataChannel.send(msg);
-+ }
-+ catch (e) {
-+ logger_1.default.error("DC#:" + this.connectionId + " Error when sending:", e);
-+ this._buffering = true;
-+ this.close();
-+ return false;
-+ }
-+ return true;
-+ };
-+ // Try to send the first message in the buffer.
-+ DataConnection.prototype._tryBuffer = function () {
-+ if (!this.open) {
-+ return;
-+ }
-+ if (this._buffer.length === 0) {
-+ return;
-+ }
-+ var msg = this._buffer[0];
-+ if (this._trySend(msg)) {
-+ this._buffer.shift();
-+ this._bufferSize = this._buffer.length;
-+ this._tryBuffer();
-+ }
-+ };
-+ DataConnection.prototype._sendChunks = function (blob) {
-+ var blobs = util_1.util.chunk(blob);
-+ logger_1.default.log("DC#" + this.connectionId + " Try to send " + blobs.length + " chunks...");
-+ for (var _i = 0, blobs_1 = blobs; _i < blobs_1.length; _i++) {
-+ var blob_1 = blobs_1[_i];
-+ this.send(blob_1, true);
-+ }
-+ };
-+ DataConnection.prototype.handleMessage = function (message) {
-+ var payload = message.payload;
-+ switch (message.type) {
-+ case enums_1.ServerMessageType.Answer:
-+ this._negotiator.handleSDP(message.type, payload.sdp);
-+ break;
-+ case enums_1.ServerMessageType.Candidate:
-+ this._negotiator.handleCandidate(payload.candidate);
-+ break;
-+ default:
-+ logger_1.default.warn("Unrecognized message type:", message.type, "from peer:", this.peer);
-+ break;
-+ }
-+ };
-+ DataConnection.ID_PREFIX = "dc_";
-+ DataConnection.MAX_BUFFERED_AMOUNT = 8 * 1024 * 1024;
-+ return DataConnection;
-+}(baseconnection_1.BaseConnection));
-+exports.DataConnection = DataConnection;
-diff --git a/node_modules/peerjs/dist/encodingQueue.js b/node_modules/peerjs/dist/encodingQueue.js
-new file mode 100644
-index 0000000..c9ca6b5
---- /dev/null
-+++ b/node_modules/peerjs/dist/encodingQueue.js
-@@ -0,0 +1,88 @@
-+"use strict";
-+var __extends = (this && this.__extends) || (function () {
-+ var extendStatics = function (d, b) {
-+ extendStatics = Object.setPrototypeOf ||
-+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-+ return extendStatics(d, b);
-+ };
-+ return function (d, b) {
-+ if (typeof b !== "function" && b !== null)
-+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-+ extendStatics(d, b);
-+ function __() { this.constructor = d; }
-+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-+ };
-+})();
-+var __importDefault = (this && this.__importDefault) || function (mod) {
-+ return (mod && mod.__esModule) ? mod : { "default": mod };
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.EncodingQueue = void 0;
-+var eventemitter3_1 = require("eventemitter3");
-+var logger_1 = __importDefault(require("./logger"));
-+var EncodingQueue = /** @class */ (function (_super) {
-+ __extends(EncodingQueue, _super);
-+ function EncodingQueue() {
-+ var _this = _super.call(this) || this;
-+ _this.fileReader = new FileReader();
-+ _this._queue = [];
-+ _this._processing = false;
-+ _this.fileReader.onload = function (evt) {
-+ _this._processing = false;
-+ if (evt.target) {
-+ _this.emit('done', evt.target.result);
-+ }
-+ _this.doNextTask();
-+ };
-+ _this.fileReader.onerror = function (evt) {
-+ logger_1.default.error("EncodingQueue error:", evt);
-+ _this._processing = false;
-+ _this.destroy();
-+ _this.emit('error', evt);
-+ };
-+ return _this;
-+ }
-+ Object.defineProperty(EncodingQueue.prototype, "queue", {
-+ get: function () {
-+ return this._queue;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(EncodingQueue.prototype, "size", {
-+ get: function () {
-+ return this.queue.length;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(EncodingQueue.prototype, "processing", {
-+ get: function () {
-+ return this._processing;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ EncodingQueue.prototype.enque = function (blob) {
-+ this.queue.push(blob);
-+ if (this.processing)
-+ return;
-+ this.doNextTask();
-+ };
-+ EncodingQueue.prototype.destroy = function () {
-+ this.fileReader.abort();
-+ this._queue = [];
-+ };
-+ EncodingQueue.prototype.doNextTask = function () {
-+ if (this.size === 0)
-+ return;
-+ if (this.processing)
-+ return;
-+ this._processing = true;
-+ // @ts-ignore
-+ this.fileReader.readAsArrayBuffer(this.queue.shift());
-+ };
-+ return EncodingQueue;
-+}(eventemitter3_1.EventEmitter));
-+exports.EncodingQueue = EncodingQueue;
-diff --git a/node_modules/peerjs/dist/enums.js b/node_modules/peerjs/dist/enums.js
-new file mode 100644
-index 0000000..9e551a4
---- /dev/null
-+++ b/node_modules/peerjs/dist/enums.js
-@@ -0,0 +1,67 @@
-+"use strict";
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.ServerMessageType = exports.SocketEventType = exports.SerializationType = exports.PeerErrorType = exports.PeerEventType = exports.ConnectionType = exports.ConnectionEventType = void 0;
-+var ConnectionEventType;
-+(function (ConnectionEventType) {
-+ ConnectionEventType["Open"] = "open";
-+ ConnectionEventType["Stream"] = "stream";
-+ ConnectionEventType["Data"] = "data";
-+ ConnectionEventType["Close"] = "close";
-+ ConnectionEventType["Error"] = "error";
-+ ConnectionEventType["IceStateChanged"] = "iceStateChanged";
-+})(ConnectionEventType = exports.ConnectionEventType || (exports.ConnectionEventType = {}));
-+var ConnectionType;
-+(function (ConnectionType) {
-+ ConnectionType["Data"] = "data";
-+ ConnectionType["Media"] = "media";
-+})(ConnectionType = exports.ConnectionType || (exports.ConnectionType = {}));
-+var PeerEventType;
-+(function (PeerEventType) {
-+ PeerEventType["Open"] = "open";
-+ PeerEventType["Close"] = "close";
-+ PeerEventType["Connection"] = "connection";
-+ PeerEventType["Call"] = "call";
-+ PeerEventType["Disconnected"] = "disconnected";
-+ PeerEventType["Error"] = "error";
-+})(PeerEventType = exports.PeerEventType || (exports.PeerEventType = {}));
-+var PeerErrorType;
-+(function (PeerErrorType) {
-+ PeerErrorType["BrowserIncompatible"] = "browser-incompatible";
-+ PeerErrorType["Disconnected"] = "disconnected";
-+ PeerErrorType["InvalidID"] = "invalid-id";
-+ PeerErrorType["InvalidKey"] = "invalid-key";
-+ PeerErrorType["Network"] = "network";
-+ PeerErrorType["PeerUnavailable"] = "peer-unavailable";
-+ PeerErrorType["SslUnavailable"] = "ssl-unavailable";
-+ PeerErrorType["ServerError"] = "server-error";
-+ PeerErrorType["SocketError"] = "socket-error";
-+ PeerErrorType["SocketClosed"] = "socket-closed";
-+ PeerErrorType["UnavailableID"] = "unavailable-id";
-+ PeerErrorType["WebRTC"] = "webrtc";
-+})(PeerErrorType = exports.PeerErrorType || (exports.PeerErrorType = {}));
-+var SerializationType;
-+(function (SerializationType) {
-+ SerializationType["Binary"] = "binary";
-+ SerializationType["BinaryUTF8"] = "binary-utf8";
-+ SerializationType["JSON"] = "json";
-+})(SerializationType = exports.SerializationType || (exports.SerializationType = {}));
-+var SocketEventType;
-+(function (SocketEventType) {
-+ SocketEventType["Message"] = "message";
-+ SocketEventType["Disconnected"] = "disconnected";
-+ SocketEventType["Error"] = "error";
-+ SocketEventType["Close"] = "close";
-+})(SocketEventType = exports.SocketEventType || (exports.SocketEventType = {}));
-+var ServerMessageType;
-+(function (ServerMessageType) {
-+ ServerMessageType["Heartbeat"] = "HEARTBEAT";
-+ ServerMessageType["Candidate"] = "CANDIDATE";
-+ ServerMessageType["Offer"] = "OFFER";
-+ ServerMessageType["Answer"] = "ANSWER";
-+ ServerMessageType["Open"] = "OPEN";
-+ ServerMessageType["Error"] = "ERROR";
-+ ServerMessageType["IdTaken"] = "ID-TAKEN";
-+ ServerMessageType["InvalidKey"] = "INVALID-KEY";
-+ ServerMessageType["Leave"] = "LEAVE";
-+ ServerMessageType["Expire"] = "EXPIRE"; // The offer sent to a peer has expired without response.
-+})(ServerMessageType = exports.ServerMessageType || (exports.ServerMessageType = {}));
-diff --git a/node_modules/peerjs/dist/exports.js b/node_modules/peerjs/dist/exports.js
-new file mode 100644
-index 0000000..d6e2666
---- /dev/null
-+++ b/node_modules/peerjs/dist/exports.js
-@@ -0,0 +1,13 @@
-+"use strict";
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.peerjs = void 0;
-+var util_1 = require("./util");
-+var peer_1 = require("./peer");
-+exports.peerjs = {
-+ Peer: peer_1.Peer,
-+ util: util_1.util
-+};
-+exports.default = peer_1.Peer;
-+window.peerjs = exports.peerjs;
-+/** @deprecated Should use peerjs namespace */
-+window.Peer = peer_1.Peer;
-diff --git a/node_modules/peerjs/dist/index.js b/node_modules/peerjs/dist/index.js
-new file mode 100644
-index 0000000..e7d6ac1
---- /dev/null
-+++ b/node_modules/peerjs/dist/index.js
-@@ -0,0 +1,27 @@
-+"use strict";
-+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-+ if (k2 === undefined) k2 = k;
-+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-+}) : (function(o, m, k, k2) {
-+ if (k2 === undefined) k2 = k;
-+ o[k2] = m[k];
-+}));
-+var __exportStar = (this && this.__exportStar) || function(m, exports) {
-+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+__exportStar(require("./adapter"), exports);
-+__exportStar(require("./api"), exports);
-+__exportStar(require("./baseconnection"), exports);
-+__exportStar(require("./dataconnection"), exports);
-+__exportStar(require("./encodingQueue"), exports);
-+__exportStar(require("./enums"), exports);
-+__exportStar(require("./exports"), exports);
-+__exportStar(require("./logger"), exports);
-+__exportStar(require("./mediaconnection"), exports);
-+__exportStar(require("./negotiator"), exports);
-+__exportStar(require("./peer"), exports);
-+__exportStar(require("./servermessage"), exports);
-+__exportStar(require("./socket"), exports);
-+__exportStar(require("./supports"), exports);
-+__exportStar(require("./util"), exports);
-diff --git a/node_modules/peerjs/dist/logger.js b/node_modules/peerjs/dist/logger.js
-new file mode 100644
-index 0000000..9a5e883
---- /dev/null
-+++ b/node_modules/peerjs/dist/logger.js
-@@ -0,0 +1,87 @@
-+"use strict";
-+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
-+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
-+ to[j] = from[i];
-+ return to;
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.LogLevel = void 0;
-+var LOG_PREFIX = 'PeerJS: ';
-+/*
-+Prints log messages depending on the debug level passed in. Defaults to 0.
-+0 Prints no logs.
-+1 Prints only errors.
-+2 Prints errors and warnings.
-+3 Prints all logs.
-+*/
-+var LogLevel;
-+(function (LogLevel) {
-+ LogLevel[LogLevel["Disabled"] = 0] = "Disabled";
-+ LogLevel[LogLevel["Errors"] = 1] = "Errors";
-+ LogLevel[LogLevel["Warnings"] = 2] = "Warnings";
-+ LogLevel[LogLevel["All"] = 3] = "All";
-+})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
-+var Logger = /** @class */ (function () {
-+ function Logger() {
-+ this._logLevel = LogLevel.Disabled;
-+ }
-+ Object.defineProperty(Logger.prototype, "logLevel", {
-+ get: function () { return this._logLevel; },
-+ set: function (logLevel) { this._logLevel = logLevel; },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Logger.prototype.log = function () {
-+ var args = [];
-+ for (var _i = 0; _i < arguments.length; _i++) {
-+ args[_i] = arguments[_i];
-+ }
-+ if (this._logLevel >= LogLevel.All) {
-+ this._print.apply(this, __spreadArray([LogLevel.All], args));
-+ }
-+ };
-+ Logger.prototype.warn = function () {
-+ var args = [];
-+ for (var _i = 0; _i < arguments.length; _i++) {
-+ args[_i] = arguments[_i];
-+ }
-+ if (this._logLevel >= LogLevel.Warnings) {
-+ this._print.apply(this, __spreadArray([LogLevel.Warnings], args));
-+ }
-+ };
-+ Logger.prototype.error = function () {
-+ var args = [];
-+ for (var _i = 0; _i < arguments.length; _i++) {
-+ args[_i] = arguments[_i];
-+ }
-+ if (this._logLevel >= LogLevel.Errors) {
-+ this._print.apply(this, __spreadArray([LogLevel.Errors], args));
-+ }
-+ };
-+ Logger.prototype.setLogFunction = function (fn) {
-+ this._print = fn;
-+ };
-+ Logger.prototype._print = function (logLevel) {
-+ var rest = [];
-+ for (var _i = 1; _i < arguments.length; _i++) {
-+ rest[_i - 1] = arguments[_i];
-+ }
-+ var copy = __spreadArray([LOG_PREFIX], rest);
-+ for (var i in copy) {
-+ if (copy[i] instanceof Error) {
-+ copy[i] = "(" + copy[i].name + ") " + copy[i].message;
-+ }
-+ }
-+ if (logLevel >= LogLevel.All) {
-+ console.log.apply(console, copy);
-+ }
-+ else if (logLevel >= LogLevel.Warnings) {
-+ console.warn.apply(console, __spreadArray(["WARNING"], copy));
-+ }
-+ else if (logLevel >= LogLevel.Errors) {
-+ console.error.apply(console, __spreadArray(["ERROR"], copy));
-+ }
-+ };
-+ return Logger;
-+}());
-+exports.default = new Logger();
-diff --git a/node_modules/peerjs/dist/mediaconnection.js b/node_modules/peerjs/dist/mediaconnection.js
-new file mode 100644
-index 0000000..2318160
---- /dev/null
-+++ b/node_modules/peerjs/dist/mediaconnection.js
-@@ -0,0 +1,148 @@
-+"use strict";
-+var __extends = (this && this.__extends) || (function () {
-+ var extendStatics = function (d, b) {
-+ extendStatics = Object.setPrototypeOf ||
-+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-+ return extendStatics(d, b);
-+ };
-+ return function (d, b) {
-+ if (typeof b !== "function" && b !== null)
-+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-+ extendStatics(d, b);
-+ function __() { this.constructor = d; }
-+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-+ };
-+})();
-+var __assign = (this && this.__assign) || function () {
-+ __assign = Object.assign || function(t) {
-+ for (var s, i = 1, n = arguments.length; i < n; i++) {
-+ s = arguments[i];
-+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-+ t[p] = s[p];
-+ }
-+ return t;
-+ };
-+ return __assign.apply(this, arguments);
-+};
-+var __importDefault = (this && this.__importDefault) || function (mod) {
-+ return (mod && mod.__esModule) ? mod : { "default": mod };
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.MediaConnection = void 0;
-+var util_1 = require("./util");
-+var logger_1 = __importDefault(require("./logger"));
-+var negotiator_1 = require("./negotiator");
-+var enums_1 = require("./enums");
-+var baseconnection_1 = require("./baseconnection");
-+/**
-+ * Wraps the streaming interface between two Peers.
-+ */
-+var MediaConnection = /** @class */ (function (_super) {
-+ __extends(MediaConnection, _super);
-+ function MediaConnection(peerId, provider, options) {
-+ var _this = _super.call(this, peerId, provider, options) || this;
-+ _this._localStream = _this.options._stream;
-+ _this.connectionId =
-+ _this.options.connectionId ||
-+ MediaConnection.ID_PREFIX + util_1.util.randomToken();
-+ _this._negotiator = new negotiator_1.Negotiator(_this);
-+ if (_this._localStream) {
-+ _this._negotiator.startConnection({
-+ _stream: _this._localStream,
-+ originator: true
-+ });
-+ }
-+ return _this;
-+ }
-+ Object.defineProperty(MediaConnection.prototype, "type", {
-+ get: function () {
-+ return enums_1.ConnectionType.Media;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(MediaConnection.prototype, "localStream", {
-+ get: function () { return this._localStream; },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(MediaConnection.prototype, "remoteStream", {
-+ get: function () { return this._remoteStream; },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ // @ts-ignore
-+ MediaConnection.prototype.addStream = function (remoteStream) {
-+ logger_1.default.log("Receiving stream", remoteStream);
-+ this._remoteStream = remoteStream;
-+ _super.prototype.emit.call(this, enums_1.ConnectionEventType.Stream, remoteStream); // Should we call this `open`?
-+ };
-+ MediaConnection.prototype.handleMessage = function (message) {
-+ var type = message.type;
-+ var payload = message.payload;
-+ switch (message.type) {
-+ case enums_1.ServerMessageType.Answer:
-+ // Forward to negotiator
-+ this._negotiator.handleSDP(type, payload.sdp);
-+ this._open = true;
-+ break;
-+ case enums_1.ServerMessageType.Candidate:
-+ this._negotiator.handleCandidate(payload.candidate);
-+ break;
-+ default:
-+ logger_1.default.warn("Unrecognized message type:" + type + " from peer:" + this.peer);
-+ break;
-+ }
-+ };
-+ MediaConnection.prototype.answer = function (stream, options) {
-+ if (options === void 0) { options = {}; }
-+ if (this._localStream) {
-+ logger_1.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");
-+ return;
-+ }
-+ this._localStream = stream;
-+ if (options && options.sdpTransform) {
-+ this.options.sdpTransform = options.sdpTransform;
-+ }
-+ this._negotiator.startConnection(__assign(__assign({}, this.options._payload), { _stream: stream }));
-+ // Retrieve lost messages stored because PeerConnection not set up.
-+ var messages = this.provider._getMessages(this.connectionId);
-+ for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {
-+ var message = messages_1[_i];
-+ this.handleMessage(message);
-+ }
-+ this._open = true;
-+ };
-+ /**
-+ * Exposed functionality for users.
-+ */
-+ /** Allows user to close connection. */
-+ MediaConnection.prototype.close = function () {
-+ if (this._negotiator) {
-+ this._negotiator.cleanup();
-+ // @ts-ignore
-+ this._negotiator = null;
-+ }
-+ // @ts-ignore
-+ this._localStream = null;
-+ // @ts-ignore
-+ this._remoteStream = null;
-+ if (this.provider) {
-+ this.provider._removeConnection(this);
-+ // @ts-ignore
-+ this.provider = null;
-+ }
-+ if (this.options && this.options._stream) {
-+ this.options._stream = null;
-+ }
-+ if (!this.open) {
-+ return;
-+ }
-+ this._open = false;
-+ _super.prototype.emit.call(this, enums_1.ConnectionEventType.Close);
-+ };
-+ MediaConnection.ID_PREFIX = "mc_";
-+ return MediaConnection;
-+}(baseconnection_1.BaseConnection));
-+exports.MediaConnection = MediaConnection;
-diff --git a/node_modules/peerjs/dist/negotiator.js b/node_modules/peerjs/dist/negotiator.js
-new file mode 100644
-index 0000000..afd9687
---- /dev/null
-+++ b/node_modules/peerjs/dist/negotiator.js
-@@ -0,0 +1,385 @@
-+"use strict";
-+var __assign = (this && this.__assign) || function () {
-+ __assign = Object.assign || function(t) {
-+ for (var s, i = 1, n = arguments.length; i < n; i++) {
-+ s = arguments[i];
-+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-+ t[p] = s[p];
-+ }
-+ return t;
-+ };
-+ return __assign.apply(this, arguments);
-+};
-+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-+ return new (P || (P = Promise))(function (resolve, reject) {
-+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-+ step((generator = generator.apply(thisArg, _arguments || [])).next());
-+ });
-+};
-+var __generator = (this && this.__generator) || function (thisArg, body) {
-+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-+ function verb(n) { return function (v) { return step([n, v]); }; }
-+ function step(op) {
-+ if (f) throw new TypeError("Generator is already executing.");
-+ while (_) try {
-+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-+ if (y = 0, t) op = [op[0] & 2, t.value];
-+ switch (op[0]) {
-+ case 0: case 1: t = op; break;
-+ case 4: _.label++; return { value: op[1], done: false };
-+ case 5: _.label++; y = op[1]; op = [0]; continue;
-+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
-+ default:
-+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-+ if (t[2]) _.ops.pop();
-+ _.trys.pop(); continue;
-+ }
-+ op = body.call(thisArg, _);
-+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-+ }
-+};
-+var __importDefault = (this && this.__importDefault) || function (mod) {
-+ return (mod && mod.__esModule) ? mod : { "default": mod };
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.Negotiator = void 0;
-+var util_1 = require("./util");
-+var logger_1 = __importDefault(require("./logger"));
-+var enums_1 = require("./enums");
-+/**
-+ * Manages all negotiations between Peers.
-+ */
-+var Negotiator = /** @class */ (function () {
-+ function Negotiator(connection) {
-+ this.connection = connection;
-+ }
-+ /** Returns a PeerConnection object set up correctly (for data, media). */
-+ Negotiator.prototype.startConnection = function (options) {
-+ var peerConnection = this._startPeerConnection();
-+ // Set the connection's PC.
-+ this.connection.peerConnection = peerConnection;
-+ if (this.connection.type === enums_1.ConnectionType.Media && options._stream) {
-+ this._addTracksToConnection(options._stream, peerConnection);
-+ }
-+ // What do we need to do now?
-+ if (options.originator) {
-+ if (this.connection.type === enums_1.ConnectionType.Data) {
-+ var dataConnection = this.connection;
-+ var config = { ordered: !!options.reliable };
-+ var dataChannel = peerConnection.createDataChannel(dataConnection.label, config);
-+ dataConnection.initialize(dataChannel);
-+ }
-+ this._makeOffer();
-+ }
-+ else {
-+ this.handleSDP("OFFER", options.sdp);
-+ }
-+ };
-+ /** Start a PC. */
-+ Negotiator.prototype._startPeerConnection = function () {
-+ logger_1.default.log("Creating RTCPeerConnection.");
-+ var peerConnection = new RTCPeerConnection(this.connection.provider.options.config);
-+ this._setupListeners(peerConnection);
-+ return peerConnection;
-+ };
-+ /** Set up various WebRTC listeners. */
-+ Negotiator.prototype._setupListeners = function (peerConnection) {
-+ var _this = this;
-+ var peerId = this.connection.peer;
-+ var connectionId = this.connection.connectionId;
-+ var connectionType = this.connection.type;
-+ var provider = this.connection.provider;
-+ // ICE CANDIDATES.
-+ logger_1.default.log("Listening for ICE candidates.");
-+ peerConnection.onicecandidate = function (evt) {
-+ if (!evt.candidate || !evt.candidate.candidate)
-+ return;
-+ logger_1.default.log("Received ICE candidates for " + peerId + ":", evt.candidate);
-+ provider.socket.send({
-+ type: enums_1.ServerMessageType.Candidate,
-+ payload: {
-+ candidate: evt.candidate,
-+ type: connectionType,
-+ connectionId: connectionId
-+ },
-+ dst: peerId
-+ });
-+ };
-+ peerConnection.oniceconnectionstatechange = function () {
-+ switch (peerConnection.iceConnectionState) {
-+ case "failed":
-+ logger_1.default.log("iceConnectionState is failed, closing connections to " +
-+ peerId);
-+ _this.connection.emit(enums_1.ConnectionEventType.Error, new Error("Negotiation of connection to " + peerId + " failed."));
-+ _this.connection.close();
-+ break;
-+ case "closed":
-+ logger_1.default.log("iceConnectionState is closed, closing connections to " +
-+ peerId);
-+ _this.connection.emit(enums_1.ConnectionEventType.Error, new Error("Connection to " + peerId + " closed."));
-+ _this.connection.close();
-+ break;
-+ case "disconnected":
-+ logger_1.default.log("iceConnectionState changed to disconnected on the connection with " +
-+ peerId);
-+ break;
-+ case "completed":
-+ peerConnection.onicecandidate = util_1.util.noop;
-+ break;
-+ }
-+ _this.connection.emit(enums_1.ConnectionEventType.IceStateChanged, peerConnection.iceConnectionState);
-+ };
-+ // DATACONNECTION.
-+ logger_1.default.log("Listening for data channel");
-+ // Fired between offer and answer, so options should already be saved
-+ // in the options hash.
-+ peerConnection.ondatachannel = function (evt) {
-+ logger_1.default.log("Received data channel");
-+ var dataChannel = evt.channel;
-+ var connection = (provider.getConnection(peerId, connectionId));
-+ connection.initialize(dataChannel);
-+ };
-+ // MEDIACONNECTION.
-+ logger_1.default.log("Listening for remote stream");
-+ peerConnection.ontrack = function (evt) {
-+ logger_1.default.log("Received remote stream");
-+ var stream = evt.streams[0];
-+ var connection = provider.getConnection(peerId, connectionId);
-+ // @ts-ignore
-+ if (connection.type === enums_1.ConnectionType.Media) {
-+ var mediaConnection = connection;
-+ _this._addStreamToMediaConnection(stream, mediaConnection);
-+ }
-+ };
-+ };
-+ Negotiator.prototype.cleanup = function () {
-+ logger_1.default.log("Cleaning up PeerConnection to " + this.connection.peer);
-+ var peerConnection = this.connection.peerConnection;
-+ if (!peerConnection) {
-+ return;
-+ }
-+ // @ts-ignore
-+ this.connection.peerConnection = null;
-+ //unsubscribe from all PeerConnection's events
-+ peerConnection.onicecandidate = peerConnection.oniceconnectionstatechange = peerConnection.ondatachannel = peerConnection.ontrack = function () { };
-+ var peerConnectionNotClosed = peerConnection.signalingState !== "closed";
-+ var dataChannelNotClosed = false;
-+ if (this.connection.type === enums_1.ConnectionType.Data) {
-+ var dataConnection = this.connection;
-+ var dataChannel = dataConnection.dataChannel;
-+ if (dataChannel) {
-+ dataChannelNotClosed = !!dataChannel.readyState && dataChannel.readyState !== "closed";
-+ }
-+ }
-+ if (peerConnectionNotClosed || dataChannelNotClosed) {
-+ peerConnection.close();
-+ }
-+ };
-+ Negotiator.prototype._makeOffer = function () {
-+ return __awaiter(this, void 0, void 0, function () {
-+ var peerConnection, provider, offer, payload, dataConnection, err_2, err_1_1;
-+ return __generator(this, function (_a) {
-+ switch (_a.label) {
-+ case 0:
-+ peerConnection = this.connection.peerConnection;
-+ provider = this.connection.provider;
-+ _a.label = 1;
-+ case 1:
-+ _a.trys.push([1, 7, , 8]);
-+ return [4 /*yield*/, peerConnection.createOffer(this.connection.options.constraints)];
-+ case 2:
-+ offer = _a.sent();
-+ logger_1.default.log("Created offer.");
-+ if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === 'function') {
-+ offer.sdp = this.connection.options.sdpTransform(offer.sdp) || offer.sdp;
-+ }
-+ _a.label = 3;
-+ case 3:
-+ _a.trys.push([3, 5, , 6]);
-+ return [4 /*yield*/, peerConnection.setLocalDescription(offer)];
-+ case 4:
-+ _a.sent();
-+ logger_1.default.log("Set localDescription:", offer, "for:" + this.connection.peer);
-+ payload = {
-+ sdp: offer,
-+ type: this.connection.type,
-+ connectionId: this.connection.connectionId,
-+ metadata: this.connection.metadata,
-+ browser: util_1.util.browser
-+ };
-+ if (this.connection.type === enums_1.ConnectionType.Data) {
-+ dataConnection = this.connection;
-+ payload = __assign(__assign({}, payload), { label: dataConnection.label, reliable: dataConnection.reliable, serialization: dataConnection.serialization });
-+ }
-+ provider.socket.send({
-+ type: enums_1.ServerMessageType.Offer,
-+ payload: payload,
-+ dst: this.connection.peer
-+ });
-+ return [3 /*break*/, 6];
-+ case 5:
-+ err_2 = _a.sent();
-+ // TODO: investigate why _makeOffer is being called from the answer
-+ if (err_2 !=
-+ "OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer") {
-+ provider.emitError(enums_1.PeerErrorType.WebRTC, err_2);
-+ logger_1.default.log("Failed to setLocalDescription, ", err_2);
-+ }
-+ return [3 /*break*/, 6];
-+ case 6: return [3 /*break*/, 8];
-+ case 7:
-+ err_1_1 = _a.sent();
-+ provider.emitError(enums_1.PeerErrorType.WebRTC, err_1_1);
-+ logger_1.default.log("Failed to createOffer, ", err_1_1);
-+ return [3 /*break*/, 8];
-+ case 8: return [2 /*return*/];
-+ }
-+ });
-+ });
-+ };
-+ Negotiator.prototype._makeAnswer = function () {
-+ return __awaiter(this, void 0, void 0, function () {
-+ var peerConnection, provider, answer, err_3, err_1_2;
-+ return __generator(this, function (_a) {
-+ switch (_a.label) {
-+ case 0:
-+ peerConnection = this.connection.peerConnection;
-+ provider = this.connection.provider;
-+ _a.label = 1;
-+ case 1:
-+ _a.trys.push([1, 7, , 8]);
-+ return [4 /*yield*/, peerConnection.createAnswer()];
-+ case 2:
-+ answer = _a.sent();
-+ logger_1.default.log("Created answer.");
-+ if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === 'function') {
-+ answer.sdp = this.connection.options.sdpTransform(answer.sdp) || answer.sdp;
-+ }
-+ _a.label = 3;
-+ case 3:
-+ _a.trys.push([3, 5, , 6]);
-+ return [4 /*yield*/, peerConnection.setLocalDescription(answer)];
-+ case 4:
-+ _a.sent();
-+ logger_1.default.log("Set localDescription:", answer, "for:" + this.connection.peer);
-+ provider.socket.send({
-+ type: enums_1.ServerMessageType.Answer,
-+ payload: {
-+ sdp: answer,
-+ type: this.connection.type,
-+ connectionId: this.connection.connectionId,
-+ browser: util_1.util.browser
-+ },
-+ dst: this.connection.peer
-+ });
-+ return [3 /*break*/, 6];
-+ case 5:
-+ err_3 = _a.sent();
-+ provider.emitError(enums_1.PeerErrorType.WebRTC, err_3);
-+ logger_1.default.log("Failed to setLocalDescription, ", err_3);
-+ return [3 /*break*/, 6];
-+ case 6: return [3 /*break*/, 8];
-+ case 7:
-+ err_1_2 = _a.sent();
-+ provider.emitError(enums_1.PeerErrorType.WebRTC, err_1_2);
-+ logger_1.default.log("Failed to create answer, ", err_1_2);
-+ return [3 /*break*/, 8];
-+ case 8: return [2 /*return*/];
-+ }
-+ });
-+ });
-+ };
-+ /** Handle an SDP. */
-+ Negotiator.prototype.handleSDP = function (type, sdp) {
-+ return __awaiter(this, void 0, void 0, function () {
-+ var peerConnection, provider, self, err_4;
-+ return __generator(this, function (_a) {
-+ switch (_a.label) {
-+ case 0:
-+ sdp = new RTCSessionDescription(sdp);
-+ peerConnection = this.connection.peerConnection;
-+ provider = this.connection.provider;
-+ logger_1.default.log("Setting remote description", sdp);
-+ self = this;
-+ _a.label = 1;
-+ case 1:
-+ _a.trys.push([1, 5, , 6]);
-+ return [4 /*yield*/, peerConnection.setRemoteDescription(sdp)];
-+ case 2:
-+ _a.sent();
-+ logger_1.default.log("Set remoteDescription:" + type + " for:" + this.connection.peer);
-+ if (!(type === "OFFER")) return [3 /*break*/, 4];
-+ return [4 /*yield*/, self._makeAnswer()];
-+ case 3:
-+ _a.sent();
-+ _a.label = 4;
-+ case 4: return [3 /*break*/, 6];
-+ case 5:
-+ err_4 = _a.sent();
-+ provider.emitError(enums_1.PeerErrorType.WebRTC, err_4);
-+ logger_1.default.log("Failed to setRemoteDescription, ", err_4);
-+ return [3 /*break*/, 6];
-+ case 6: return [2 /*return*/];
-+ }
-+ });
-+ });
-+ };
-+ /** Handle a candidate. */
-+ Negotiator.prototype.handleCandidate = function (ice) {
-+ return __awaiter(this, void 0, void 0, function () {
-+ var candidate, sdpMLineIndex, sdpMid, peerConnection, provider, err_5;
-+ return __generator(this, function (_a) {
-+ switch (_a.label) {
-+ case 0:
-+ logger_1.default.log("handleCandidate:", ice);
-+ candidate = ice.candidate;
-+ sdpMLineIndex = ice.sdpMLineIndex;
-+ sdpMid = ice.sdpMid;
-+ peerConnection = this.connection.peerConnection;
-+ provider = this.connection.provider;
-+ _a.label = 1;
-+ case 1:
-+ _a.trys.push([1, 3, , 4]);
-+ return [4 /*yield*/, peerConnection.addIceCandidate(new RTCIceCandidate({
-+ sdpMid: sdpMid,
-+ sdpMLineIndex: sdpMLineIndex,
-+ candidate: candidate
-+ }))];
-+ case 2:
-+ _a.sent();
-+ logger_1.default.log("Added ICE candidate for:" + this.connection.peer);
-+ return [3 /*break*/, 4];
-+ case 3:
-+ err_5 = _a.sent();
-+ provider.emitError(enums_1.PeerErrorType.WebRTC, err_5);
-+ logger_1.default.log("Failed to handleCandidate, ", err_5);
-+ return [3 /*break*/, 4];
-+ case 4: return [2 /*return*/];
-+ }
-+ });
-+ });
-+ };
-+ Negotiator.prototype._addTracksToConnection = function (stream, peerConnection) {
-+ logger_1.default.log("add tracks from stream " + stream.id + " to peer connection");
-+ if (!peerConnection.addTrack) {
-+ return logger_1.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");
-+ }
-+ stream.getTracks().forEach(function (track) {
-+ peerConnection.addTrack(track, stream);
-+ });
-+ };
-+ Negotiator.prototype._addStreamToMediaConnection = function (stream, mediaConnection) {
-+ logger_1.default.log("add stream " + stream.id + " to media connection " + mediaConnection.connectionId);
-+ mediaConnection.addStream(stream);
-+ };
-+ return Negotiator;
-+}());
-+exports.Negotiator = Negotiator;
-diff --git a/node_modules/peerjs/dist/peer.js b/node_modules/peerjs/dist/peer.js
-new file mode 100644
-index 0000000..8928729
---- /dev/null
-+++ b/node_modules/peerjs/dist/peer.js
-@@ -0,0 +1,519 @@
-+"use strict";
-+var __extends = (this && this.__extends) || (function () {
-+ var extendStatics = function (d, b) {
-+ extendStatics = Object.setPrototypeOf ||
-+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-+ return extendStatics(d, b);
-+ };
-+ return function (d, b) {
-+ if (typeof b !== "function" && b !== null)
-+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-+ extendStatics(d, b);
-+ function __() { this.constructor = d; }
-+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-+ };
-+})();
-+var __assign = (this && this.__assign) || function () {
-+ __assign = Object.assign || function(t) {
-+ for (var s, i = 1, n = arguments.length; i < n; i++) {
-+ s = arguments[i];
-+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-+ t[p] = s[p];
-+ }
-+ return t;
-+ };
-+ return __assign.apply(this, arguments);
-+};
-+var __importDefault = (this && this.__importDefault) || function (mod) {
-+ return (mod && mod.__esModule) ? mod : { "default": mod };
-+};
-+Object.defineProperty(exports, "__esModule", { value: true });
-+exports.Peer = void 0;
-+var eventemitter3_1 = require("eventemitter3");
-+var util_1 = require("./util");
-+var logger_1 = __importDefault(require("./logger"));
-+var socket_1 = require("./socket");
-+var mediaconnection_1 = require("./mediaconnection");
-+var dataconnection_1 = require("./dataconnection");
-+var enums_1 = require("./enums");
-+var api_1 = require("./api");
-+var PeerOptions = /** @class */ (function () {
-+ function PeerOptions() {
-+ }
-+ return PeerOptions;
-+}());
-+/**
-+ * A peer who can initiate connections with other peers.
-+ */
-+var Peer = /** @class */ (function (_super) {
-+ __extends(Peer, _super);
-+ function Peer(id, options) {
-+ var _this = _super.call(this) || this;
-+ _this._id = null;
-+ _this._lastServerId = null;
-+ // States.
-+ _this._destroyed = false; // Connections have been killed
-+ _this._disconnected = false; // Connection to PeerServer killed but P2P connections still active
-+ _this._open = false; // Sockets and such are not yet open.
-+ _this._connections = new Map(); // All connections for this peer.
-+ _this._lostMessages = new Map(); // src => [list of messages]
-+ var userId;
-+ // Deal with overloading
-+ if (id && id.constructor == Object) {
-+ options = id;
-+ }
-+ else if (id) {
-+ userId = id.toString();
-+ }
-+ // Configurize options
-+ options = __assign({ debug: 0, host: util_1.util.CLOUD_HOST, port: util_1.util.CLOUD_PORT, path: "/", key: Peer.DEFAULT_KEY, token: util_1.util.randomToken(), config: util_1.util.defaultConfig }, options);
-+ _this._options = options;
-+ // Detect relative URL host.
-+ if (_this._options.host === "/") {
-+ _this._options.host = window.location.hostname;
-+ }
-+ // Set path correctly.
-+ if (_this._options.path) {
-+ if (_this._options.path[0] !== "/") {
-+ _this._options.path = "/" + _this._options.path;
-+ }
-+ if (_this._options.path[_this._options.path.length - 1] !== "/") {
-+ _this._options.path += "/";
-+ }
-+ }
-+ // Set whether we use SSL to same as current host
-+ if (_this._options.secure === undefined && _this._options.host !== util_1.util.CLOUD_HOST) {
-+ _this._options.secure = util_1.util.isSecure();
-+ }
-+ else if (_this._options.host == util_1.util.CLOUD_HOST) {
-+ _this._options.secure = true;
-+ }
-+ // Set a custom log function if present
-+ if (_this._options.logFunction) {
-+ logger_1.default.setLogFunction(_this._options.logFunction);
-+ }
-+ logger_1.default.logLevel = _this._options.debug || 0;
-+ _this._api = new api_1.API(options);
-+ _this._socket = _this._createServerConnection();
-+ // Sanity checks
-+ // Ensure WebRTC supported
-+ if (!util_1.util.supports.audioVideo && !util_1.util.supports.data) {
-+ _this._delayedAbort(enums_1.PeerErrorType.BrowserIncompatible, "The current browser does not support WebRTC");
-+ return _this;
-+ }
-+ // Ensure alphanumeric id
-+ if (!!userId && !util_1.util.validateId(userId)) {
-+ _this._delayedAbort(enums_1.PeerErrorType.InvalidID, "ID \"" + userId + "\" is invalid");
-+ return _this;
-+ }
-+ if (userId) {
-+ _this._initialize(userId);
-+ }
-+ else {
-+ _this._api.retrieveId()
-+ .then(function (id) { return _this._initialize(id); })
-+ .catch(function (error) { return _this._abort(enums_1.PeerErrorType.ServerError, error); });
-+ }
-+ return _this;
-+ }
-+ Object.defineProperty(Peer.prototype, "id", {
-+ get: function () {
-+ return this._id;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(Peer.prototype, "options", {
-+ get: function () {
-+ return this._options;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(Peer.prototype, "open", {
-+ get: function () {
-+ return this._open;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(Peer.prototype, "socket", {
-+ get: function () {
-+ return this._socket;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(Peer.prototype, "connections", {
-+ /**
-+ * @deprecated
-+ * Return type will change from Object to Map
-+ */
-+ get: function () {
-+ var plainConnections = Object.create(null);
-+ // @ts-ignore
-+ for (var _i = 0, _a = this._connections; _i < _a.length; _i++) {
-+ var _b = _a[_i], k = _b[0], v = _b[1];
-+ plainConnections[k] = v;
-+ }
-+ return plainConnections;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(Peer.prototype, "destroyed", {
-+ get: function () {
-+ return this._destroyed;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Object.defineProperty(Peer.prototype, "disconnected", {
-+ get: function () {
-+ return this._disconnected;
-+ },
-+ enumerable: false,
-+ configurable: true
-+ });
-+ Peer.prototype._createServerConnection = function () {
-+ var _this = this;
-+ var socket = new socket_1.Socket(this._options.secure, this._options.host, this._options.port, this._options.path, this._options.key, this._options.pingInterval);
-+ socket.on(enums_1.SocketEventType.Message, function (data) {
-+ _this._handleMessage(data);
-+ });
-+ socket.on(enums_1.SocketEventType.Error, function (error) {
-+ _this._abort(enums_1.PeerErrorType.SocketError, error);
-+ });
-+ socket.on(enums_1.SocketEventType.Disconnected, function () {
-+ if (_this.disconnected) {
-+ return;
-+ }
-+ _this.emitError(enums_1.PeerErrorType.Network, "Lost connection to server.");
-+ _this.disconnect();
-+ });
-+ socket.on(enums_1.SocketEventType.Close, function () {
-+ if (_this.disconnected) {
-+ return;
-+ }
-+ _this._abort(enums_1.PeerErrorType.SocketClosed, "Underlying socket is already closed.");
-+ });
-+ return socket;
-+ };
-+ /** Initialize a connection with the server. */
-+ Peer.prototype._initialize = function (id) {
-+ this._id = id;
-+ this.socket.start(id, this._options.token);
-+ };
-+ /** Handles messages from the server. */
-+ Peer.prototype._handleMessage = function (message) {
-+ var type = message.type;
-+ var payload = message.payload;
-+ var peerId = message.src;
-+ switch (type) {
-+ case enums_1.ServerMessageType.Open: // The connection to the server is open.
-+ this._lastServerId = this.id;
-+ this._open = true;
-+ this.emit(enums_1.PeerEventType.Open, this.id);
-+ break;
-+ case enums_1.ServerMessageType.Error: // Server error.
-+ this._abort(enums_1.PeerErrorType.ServerError, payload.msg);
-+ break;
-+ case enums_1.ServerMessageType.IdTaken: // The selected ID is taken.
-+ this._abort(enums_1.PeerErrorType.UnavailableID, "ID \"" + this.id + "\" is taken");
-+ break;
-+ case enums_1.ServerMessageType.InvalidKey: // The given API key cannot be found.
-+ this._abort(enums_1.PeerErrorType.InvalidKey, "API KEY \"" + this._options.key + "\" is invalid");
-+ break;
-+ case enums_1.ServerMessageType.Leave: // Another peer has closed its connection to this peer.
-+ logger_1.default.log("Received leave message from " + peerId);
-+ this._cleanupPeer(peerId);
-+ this._connections.delete(peerId);
-+ break;
-+ case enums_1.ServerMessageType.Expire: // The offer sent to a peer has expired without response.
-+ this.emitError(enums_1.PeerErrorType.PeerUnavailable, "Could not connect to peer " + peerId);
-+ break;
-+ case enums_1.ServerMessageType.Offer: {
-+ // we should consider switching this to CALL/CONNECT, but this is the least breaking option.
-+ var connectionId = payload.connectionId;
-+ var connection = this.getConnection(peerId, connectionId);
-+ if (connection) {
-+ connection.close();
-+ logger_1.default.warn("Offer received for existing Connection ID:" + connectionId);
-+ }
-+ // Create a new connection.
-+ if (payload.type === enums_1.ConnectionType.Media) {
-+ connection = new mediaconnection_1.MediaConnection(peerId, this, {
-+ connectionId: connectionId,
-+ _payload: payload,
-+ metadata: payload.metadata
-+ });
-+ this._addConnection(peerId, connection);
-+ this.emit(enums_1.PeerEventType.Call, connection);
-+ }
-+ else if (payload.type === enums_1.ConnectionType.Data) {
-+ connection = new dataconnection_1.DataConnection(peerId, this, {
-+ connectionId: connectionId,
-+ _payload: payload,
-+ metadata: payload.metadata,
-+ label: payload.label,
-+ serialization: payload.serialization,
-+ reliable: payload.reliable
-+ });
-+ this._addConnection(peerId, connection);
-+ this.emit(enums_1.PeerEventType.Connection, connection);
-+ }
-+ else {
-+ logger_1.default.warn("Received malformed connection type:" + payload.type);
-+ return;
-+ }
-+ // Find messages.
-+ var messages = this._getMessages(connectionId);
-+ for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {
-+ var message_1 = messages_1[_i];
-+ connection.handleMessage(message_1);
-+ }
-+ break;
-+ }
-+ default: {
-+ if (!payload) {
-+ logger_1.default.warn("You received a malformed message from " + peerId + " of type " + type);
-+ return;
-+ }
-+ var connectionId = payload.connectionId;
-+ var connection = this.getConnection(peerId, connectionId);
-+ if (connection && connection.peerConnection) {
-+ // Pass it on.
-+ connection.handleMessage(message);
-+ }
-+ else if (connectionId) {
-+ // Store for possible later use
-+ this._storeMessage(connectionId, message);
-+ }
-+ else {
-+ logger_1.default.warn("You received an unrecognized message:", message);
-+ }
-+ break;
-+ }
-+ }
-+ };
-+ /** Stores messages without a set up connection, to be claimed later. */
-+ Peer.prototype._storeMessage = function (connectionId, message) {
-+ if (!this._lostMessages.has(connectionId)) {
-+ this._lostMessages.set(connectionId, []);
-+ }
-+ // @ts-ignore
-+ this._lostMessages.get(connectionId).push(message);
-+ };
-+ /** Retrieve messages from lost message store */
-+ //TODO Change it to private
-+ Peer.prototype._getMessages = function (connectionId) {
-+ var messages = this._lostMessages.get(connectionId);
-+ if (messages) {
-+ this._lostMessages.delete(connectionId);
-+ return messages;
-+ }
-+ return [];
-+ };
-+ /**
-+ * Returns a DataConnection to the specified peer. See documentation for a
-+ * complete list of options.
-+ */
-+ Peer.prototype.connect = function (peer, options) {
-+ if (options === void 0) { options = {}; }
-+ if (this.disconnected) {
-+ logger_1.default.warn("You cannot connect to a new Peer because you called " +
-+ ".disconnect() on this Peer and ended your connection with the " +
-+ "server. You can create a new Peer to reconnect, or call reconnect " +
-+ "on this peer if you believe its ID to still be available.");
-+ this.emitError(enums_1.PeerErrorType.Disconnected, "Cannot connect to new Peer after disconnecting from server.");
-+ // @ts-ignore
-+ return;
-+ }
-+ var dataConnection = new dataconnection_1.DataConnection(peer, this, options);
-+ this._addConnection(peer, dataConnection);
-+ return dataConnection;
-+ };
-+ /**
-+ * Returns a MediaConnection to the specified peer. See documentation for a
-+ * complete list of options.
-+ */
-+ Peer.prototype.call = function (peer, stream, options) {
-+ if (options === void 0) { options = {}; }
-+ if (this.disconnected) {
-+ logger_1.default.warn("You cannot connect to a new Peer because you called " +
-+ ".disconnect() on this Peer and ended your connection with the " +
-+ "server. You can create a new Peer to reconnect.");
-+ this.emitError(enums_1.PeerErrorType.Disconnected, "Cannot connect to new Peer after disconnecting from server.");
-+ // @ts-ignore
-+ return;
-+ }
-+ if (!stream) {
-+ logger_1.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");
-+ // @ts-ignore
-+ return;
-+ }
-+ options._stream = stream;
-+ var mediaConnection = new mediaconnection_1.MediaConnection(peer, this, options);
-+ this._addConnection(peer, mediaConnection);
-+ return mediaConnection;
-+ };
-+ /** Add a data/media connection to this peer. */
-+ Peer.prototype._addConnection = function (peerId, connection) {
-+ logger_1.default.log("add connection " + connection.type + ":" + connection.connectionId + " to peerId:" + peerId);
-+ if (!this._connections.has(peerId)) {
-+ this._connections.set(peerId, []);
-+ }
-+ // @ts-ignore
-+ this._connections.get(peerId).push(connection);
-+ };
-+ //TODO should be private
-+ Peer.prototype._removeConnection = function (connection) {
-+ var connections = this._connections.get(connection.peer);
-+ if (connections) {
-+ var index = connections.indexOf(connection);
-+ if (index !== -1) {
-+ connections.splice(index, 1);
-+ }
-+ }
-+ //remove from lost messages
-+ this._lostMessages.delete(connection.connectionId);
-+ };
-+ /** Retrieve a data/media connection for this peer. */
-+ Peer.prototype.getConnection = function (peerId, connectionId) {
-+ var connections = this._connections.get(peerId);
-+ if (!connections) {
-+ return null;
-+ }
-+ for (var _i = 0, connections_1 = connections; _i < connections_1.length; _i++) {
-+ var connection = connections_1[_i];
-+ if (connection.connectionId === connectionId) {
-+ return connection;
-+ }
-+ }
-+ return null;
-+ };
-+ Peer.prototype._delayedAbort = function (type, message) {
-+ var _this = this;
-+ setTimeout(function () {
-+ _this._abort(type, message);
-+ }, 0);
-+ };
-+ /**
-+ * Emits an error message and destroys the Peer.
-+ * The Peer is not destroyed if it's in a disconnected state, in which case
-+ * it retains its disconnected state and its existing connections.
-+ */
-+ Peer.prototype._abort = function (type, message) {
-+ logger_1.default.error("Aborting!");
-+ this.emitError(type, message);
-+ if (!this._lastServerId) {
-+ this.destroy();
-+ }
-+ else {
-+ this.disconnect();
-+ }
-+ };
-+ /** Emits a typed error message. */
-+ Peer.prototype.emitError = function (type, err) {
-+ logger_1.default.error("Error:", err);
-+ var error;
-+ if (typeof err === "string") {
-+ error = new Error(err);
-+ }
-+ else {
-+ error = err;
-+ }
-+ error.type = type;
-+ this.emit(enums_1.PeerEventType.Error, error);
-+ };
-+ /**
-+ * Destroys the Peer: closes all active connections as well as the connection
-+ * to the server.
-+ * Warning: The peer can no longer create or accept connections after being
-+ * destroyed.
-+ */
-+ Peer.prototype.destroy = function () {
-+ if (this.destroyed) {
-+ return;
-+ }
-+ logger_1.default.log("Destroy peer with ID:" + this.id);
-+ this.disconnect();
-+ this._cleanup();
-+ this._destroyed = true;
-+ this.emit(enums_1.PeerEventType.Close);
-+ };
-+ /** Disconnects every connection on this peer. */
-+ Peer.prototype._cleanup = function () {
-+ // @ts-ignore
-+ for (var _i = 0, _a = this._connections.keys(); _i < _a.length; _i++) {
-+ var peerId = _a[_i];
-+ this._cleanupPeer(peerId);
-+ this._connections.delete(peerId);
-+ }
-+ this.socket.removeAllListeners();
-+ };
-+ /** Closes all connections to this peer. */
-+ Peer.prototype._cleanupPeer = function (peerId) {
-+ var connections = this._connections.get(peerId);
-+ if (!connections)
-+ return;
-+ for (var _i = 0, connections_2 = connections; _i < connections_2.length; _i++) {
-+ var connection = connections_2[_i];
-+ connection.close();
-+ }
-+ };
-+ /**
-+ * Disconnects the Peer's connection to the PeerServer. Does not close any
-+ * active connections.
-+ * Warning: The peer can no longer create or accept connections after being
-+ * disconnected. It also cannot reconnect to the server.
-+ */
-+ Peer.prototype.disconnect = function () {
-+ if (this.disconnected) {
-+ return;
-+ }
-+ var currentId = this.id;
-+ logger_1.default.log("Disconnect peer with ID:" + currentId);
-+ this._disconnected = true;
-+ this._open = false;
-+ this.socket.close();
-+ this._lastServerId = currentId;
-+ this._id = null;
-+ this.emit(enums_1.PeerEventType.Disconnected, currentId);
-+ };
-+ /** Attempts to reconnect with the same ID. */
-+ Peer.prototype.reconnect = function () {
-+ if (this.disconnected && !this.destroyed) {
-+ logger_1.default.log("Attempting reconnection to server with ID " + this._lastServerId);
-+ this._disconnected = false;
-+ this._initialize(this._lastServerId);
-+ }
-+ else if (this.destroyed) {
-+ throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");
-+ }
-+ else if (!this.disconnected && !this.open) {
-+ // Do nothing. We're still connecting the first time.
-+ logger_1.default.error("In a hurry? We're still trying to make the initial connection!");
-+ }
-+ else {
-+ throw new Error("Peer " + this.id + " cannot reconnect because it is not disconnected from the server!");
-+ }
-+ };
-+ /**
-+ * Get a list of available peer IDs. If you're running your own server, you'll
-+ * want to set allow_discovery: true in the PeerServer options. If you're using
-+ * the cloud server, email team@peerjs.com to get the functionality enabled for
-+ * your key.
-+ */
-+ Peer.prototype.listAllPeers = function (cb) {
-+ var _this = this;
-+ if (cb === void 0) { cb = function (_) { }; }
-+ this._api.listAllPeers()
-+ .then(function (peers) { return cb(peers); })
-+ .catch(function (error) { return _this._abort(enums_1.PeerErrorType.ServerError, error); });
-+ };
-+ Peer.DEFAULT_KEY = "peerjs";
-+ return Peer;
-+}(eventemitter3_1.EventEmitter));
-+exports.Peer = Peer;
-diff --git a/node_modules/peerjs/dist/peerjs.js b/node_modules/peerjs/dist/peerjs.js
-deleted file mode 100644
-index b902845..0000000
---- a/node_modules/peerjs/dist/peerjs.js
-+++ /dev/null
-@@ -1,10318 +0,0 @@
--// modules are defined as an array
--// [ module function, map of requires ]
--//
--// map of requires is short require name -> numeric require
--//
--// anything defined in a previous bundle is accessed via the
--// orig method which is the require for previous bundles
--parcelRequire = (function (modules, cache, entry, globalName) {
-- // Save the require from previous bundle to this closure if any
-- var previousRequire = typeof parcelRequire === 'function' && parcelRequire;
-- var nodeRequire = typeof require === 'function' && require;
--
-- function newRequire(name, jumped) {
-- if (!cache[name]) {
-- if (!modules[name]) {
-- // if we cannot find the module within our internal map or
-- // cache jump to the current global require ie. the last bundle
-- // that was added to the page.
-- var currentRequire = typeof parcelRequire === 'function' && parcelRequire;
-- if (!jumped && currentRequire) {
-- return currentRequire(name, true);
-- }
--
-- // If there are other bundles on this page the require from the
-- // previous one is saved to 'previousRequire'. Repeat this as
-- // many times as there are bundles until the module is found or
-- // we exhaust the require chain.
-- if (previousRequire) {
-- return previousRequire(name, true);
-- }
--
-- // Try the node require function if it exists.
-- if (nodeRequire && typeof name === 'string') {
-- return nodeRequire(name);
-- }
--
-- var err = new Error('Cannot find module \'' + name + '\'');
-- err.code = 'MODULE_NOT_FOUND';
-- throw err;
-- }
--
-- localRequire.resolve = resolve;
-- localRequire.cache = {};
--
-- var module = cache[name] = new newRequire.Module(name);
--
-- modules[name][0].call(module.exports, localRequire, module, module.exports, this);
-- }
--
-- return cache[name].exports;
--
-- function localRequire(x){
-- return newRequire(localRequire.resolve(x));
-- }
--
-- function resolve(x){
-- return modules[name][1][x] || x;
-- }
-- }
--
-- function Module(moduleName) {
-- this.id = moduleName;
-- this.bundle = newRequire;
-- this.exports = {};
-- }
--
-- newRequire.isParcelRequire = true;
-- newRequire.Module = Module;
-- newRequire.modules = modules;
-- newRequire.cache = cache;
-- newRequire.parent = previousRequire;
-- newRequire.register = function (id, exports) {
-- modules[id] = [function (require, module) {
-- module.exports = exports;
-- }, {}];
-- };
--
-- var error;
-- for (var i = 0; i < entry.length; i++) {
-- try {
-- newRequire(entry[i]);
-- } catch (e) {
-- // Save first error but execute all entries
-- if (!error) {
-- error = e;
-- }
-- }
-- }
--
-- if (entry.length) {
-- // Expose entry point to Node, AMD or browser globals
-- // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
-- var mainExports = newRequire(entry[entry.length - 1]);
--
-- // CommonJS
-- if (typeof exports === "object" && typeof module !== "undefined") {
-- module.exports = mainExports;
--
-- // RequireJS
-- } else if (typeof define === "function" && define.amd) {
-- define(function () {
-- return mainExports;
-- });
--
-- //
+
-
-