diff --git a/backend/db/Dockerfile b/backend/db/Dockerfile new file mode 100644 index 00000000..efc98550 --- /dev/null +++ b/backend/db/Dockerfile @@ -0,0 +1,11 @@ +FROM flyway/flyway:9.10-alpine + +# Non-root user +RUN adduser -D app +USER app + +# Copy migrations +COPY ./migrations /flyway/sql + +# Startup +CMD ["info","migrate","info"] \ No newline at end of file diff --git a/backend/db/flyway.conf b/backend/db/flyway.conf new file mode 100644 index 00000000..49999248 --- /dev/null +++ b/backend/db/flyway.conf @@ -0,0 +1,6 @@ +flyway.url=jdbc:postgresql://localhost:5432/ticdi_db +flyway.user=ticdi_db_user +flyway.password=dfs2113 +flyway.schemas=public +flyway.locations=filesystem:./db/migrations +flyway.baselineOnMigrate=true diff --git a/backend/db/migrations/V2.0.0__Database_Migration.sql b/backend/db/migrations/V2.0.0__Database_Migration.sql new file mode 100644 index 00000000..188d7c05 --- /dev/null +++ b/backend/db/migrations/V2.0.0__Database_Migration.sql @@ -0,0 +1,167 @@ +BEGIN; +---------------------------------- +-- Changes to NFR & related tables +---------------------------------- +-- Rename tables +ALTER TABLE public.nfr_data RENAME TO document_data; + +ALTER TABLE public.nfr_provision RENAME TO provision; +ALTER TABLE public.nfr_provision_variable RENAME TO provision_variable; +ALTER TABLE public.nfr_provision_group RENAME TO provision_group; + +ALTER TABLE public.nfr_data_provision RENAME TO document_data_provision; +ALTER TABLE public.nfr_data_variable RENAME TO document_data_variable; + +-- Rename columns +ALTER TABLE public.document_data_provision + RENAME COLUMN "nfrProvisionId" TO document_provision_id; +ALTER TABLE public.document_data_provision + RENAME COLUMN "nfrDataId" TO document_data_id; +ALTER TABLE public.provision + RENAME COLUMN "provisionGroupId" TO provision_group_id; + +ALTER TABLE public.document_data_variable + RENAME COLUMN "nfrVariableId" TO document_variable_id; +ALTER TABLE public.document_data_variable + RENAME COLUMN "nfrDataId" TO document_data_id; + + +-- Modify constraints +ALTER TABLE public.provision +DROP CONSTRAINT "FK_a43df8873b446878b2ee5cebb24", +ADD CONSTRAINT "FK_provision_group_id" FOREIGN KEY (provision_group_id) REFERENCES public.provision(id); + +ALTER TABLE public.document_data_provision +DROP CONSTRAINT "FK_31783ee54c5bc5e6b76a2803123", +ADD CONSTRAINT "FK_document_provision_id" FOREIGN KEY (document_provision_id) REFERENCES public.provision(id) ON DELETE CASCADE; + +ALTER TABLE public.document_data_provision +DROP CONSTRAINT "FK_de4669e0ff571ddf23c9490059c", +ADD CONSTRAINT "FK_document_data_id" FOREIGN KEY (document_data_id) REFERENCES public.document_data(id) ON DELETE CASCADE; + +ALTER TABLE public.document_data_variable +DROP CONSTRAINT "FK_2f9dc95b75fb29c01a332823044", +ADD CONSTRAINT "FK_2f9dc95b75fb29c01a332823044" FOREIGN KEY (document_variable_id) REFERENCES public.provision_variable(id) ON DELETE CASCADE; + +ALTER TABLE public.document_data_variable +DROP CONSTRAINT "FK_76bc71b9b4fbbcdd622bab0ff19", +ADD CONSTRAINT "FK_76bc71b9b4fbbcdd622bab0ff19" FOREIGN KEY (document_data_id) REFERENCES public.document_data(id) ON DELETE CASCADE; + +---------------------------------- +-- Changes to template tables +---------------------------------- +-- Create new document_type table +CREATE TABLE public.document_type ( + id serial PRIMARY KEY, + name varchar NOT NULL, + create_userid varchar NOT NULL, + update_userid varchar NOT NULL, + create_timestamp timestamp NOT NULL DEFAULT now(), + update_timestamp timestamp NOT NULL DEFAULT now() +); +INSERT INTO public.document_type (name, create_userid, update_userid) +VALUES ('Land Use Report', 'system', 'system'); +VALUES ('Notice of Final Review', 'system', 'system'); +VALUES ('Notice of Final Review (Delayed)', 'system', 'system'); +VALUES ('Notice of Final Review (No Fees)', 'system', 'system'); +VALUES ('Notice of Final Review (Survey Required)', 'system', 'system'); +VALUES ('Notice of Final Review (To Obtain Survey)', 'system', 'system'); +VALUES ('Grazing Lease', 'system', 'system'); + +ALTER TABLE public.document_template ADD COLUMN document_type_id int4; +ALTER TABLE public.document_template DROP COLUMN document_type; + +UPDATE public.document_template +SET document_type_id = (SELECT id FROM public.document_type WHERE name = 'Land Use Report'); + +ALTER TABLE public.document_template +ADD CONSTRAINT fk_document_template_document_type_id +FOREIGN KEY (document_type_id) REFERENCES public.document_type(id); + +ALTER TABLE public.document_template +ALTER COLUMN document_type_id SET NOT NULL; + +---------------------------------- +-- Changes to logs tables +---------------------------------- +-- Create new unified log table +CREATE TABLE public.document_data_log ( + id serial4 NOT NULL, + dtid int4 NULL, + document_type_id int4 NULL, -- New column + document_data_id int4 NULL, -- Previously nfr_data_id, no direct table join + document_template_id int4 NULL, + request_app_user varchar NULL, + request_json varchar NULL, + create_userid varchar NULL, + update_userid varchar NULL, + create_timestamp timestamp NULL DEFAULT now(), + update_timestamp timestamp NULL DEFAULT now(), + PRIMARY KEY (id) +); + +-- Copy over nfr_data_log data +INSERT INTO public.document_data_log ( + dtid, + document_type_id, + document_data_id, + document_template_id, + request_app_user, + request_json, + create_userid, + update_userid, + create_timestamp, + update_timestamp +) +SELECT + dtid, + NULL, + nfr_data_id AS document_data_id, + document_template_id, + request_app_user, + request_json, + create_userid, + update_userid, + create_timestamp, + update_timestamp +FROM + public.nfr_data_log; + +-- Copy over print_request_log data +INSERT INTO public.document_data_log ( + dtid, + document_type_id, + document_data_id, + document_template_id, + request_app_user, + request_json, + create_userid, + update_userid, + create_timestamp, + update_timestamp +) +SELECT + dtid, + NULL, + NULL, + document_template_id, + request_app_user, + request_json, + create_userid, + update_userid, + create_timestamp, + update_timestamp +FROM + public.print_request_log; + +---------------------------------- +-- Delete tables which are no longer being used +---------------------------------- +DROP TABLE public.nfr_data_log; +DROP TABLE public.print_request_log; +DROP VIEW public.print_request_detail_view; +DROP TABLE public.print_request_detail; +DROP TABLE public.nfr_provision_provision_variant_nfr_provision_variant; +DROP TABLE public.nfr_provision_variant; + +COMMIT; \ No newline at end of file diff --git a/backend/db2/V1.1.0__Database_Objects.sql b/backend/db2/V1.1.0__Database_Objects.sql new file mode 100644 index 00000000..d980e8ec --- /dev/null +++ b/backend/db2/V1.1.0__Database_Objects.sql @@ -0,0 +1,278 @@ +-- -- public.document_template definition + +-- -- Drop table + +-- -- DROP TABLE public.document_template; + +-- CREATE TABLE public.document_template ( +-- id serial4 NOT NULL, +-- document_type varchar NOT NULL, +-- template_version int4 NOT NULL, +-- template_author varchar NOT NULL, +-- active_flag bool NOT NULL, +-- is_deleted bool NOT NULL, +-- mime_type varchar NOT NULL, +-- file_name varchar NOT NULL, +-- the_file varchar NOT NULL, +-- "comments" varchar NOT NULL, +-- create_userid varchar NOT NULL, +-- update_userid varchar NOT NULL, +-- create_timestamp timestamp NOT NULL DEFAULT now(), +-- update_timestamp timestamp NOT NULL DEFAULT now(), +-- CONSTRAINT "PK_0e9c5bda0dd75f3bde7ae176c62" PRIMARY KEY (id) +-- ); + + +-- -- public.nfr_data definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_data; + +-- CREATE TABLE public.nfr_data ( +-- id serial4 NOT NULL, +-- dtid int4 NULL, +-- variant_name varchar NULL, +-- template_id int4 NULL, +-- status varchar NULL, +-- active bool NULL, +-- create_userid varchar NULL, +-- update_userid varchar NULL, +-- create_timestamp timestamp NOT NULL DEFAULT now(), +-- update_timestamp timestamp NOT NULL DEFAULT now(), +-- CONSTRAINT "PK_d799fd74be596cab9c066ed23ac" PRIMARY KEY (id) +-- ); + + +-- -- public.nfr_data_log definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_data_log; + +-- CREATE TABLE public.nfr_data_log ( +-- id serial4 NOT NULL, +-- document_template_id int4 NULL, +-- nfr_data_id int4 NULL, +-- dtid int4 NULL, +-- request_app_user varchar NULL, +-- request_json varchar NULL, +-- create_userid varchar NULL, +-- update_userid varchar NULL, +-- create_timestamp timestamp NULL DEFAULT now(), +-- update_timestamp timestamp NULL DEFAULT now(), +-- CONSTRAINT "PK_4482adc99fe410378694fd5cab5" PRIMARY KEY (id) +-- ); + + +-- -- public.nfr_provision_group definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_provision_group; + +-- CREATE TABLE public.nfr_provision_group ( +-- id serial4 NOT NULL, +-- provision_group int4 NULL, +-- provision_group_text varchar NULL, +-- max int4 NULL, +-- CONSTRAINT "PK_db4bcde496c52c47aedb885287e" PRIMARY KEY (id) +-- ); + + +-- -- public.nfr_provision_variant definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_provision_variant; + +-- CREATE TABLE public.nfr_provision_variant ( +-- id serial4 NOT NULL, +-- variant_name varchar NULL, +-- CONSTRAINT "PK_52d5e2ef42a148cf8c8076ab08e" PRIMARY KEY (id) +-- ); + + +-- -- public.print_request_detail definition + +-- -- Drop table + +-- -- DROP TABLE public.print_request_detail; + +-- CREATE TABLE public.print_request_detail ( +-- id serial4 NOT NULL, +-- dtid int4 NULL, +-- tenure_file_number varchar NULL, +-- incorporation_number varchar NULL, +-- organization_unit varchar NULL, +-- purpose_name varchar NULL, +-- sub_purpose_name varchar NULL, +-- type_name varchar NULL, +-- sub_type_name varchar NULL, +-- licence_holder_name varchar NULL, +-- contact_agent varchar NULL, +-- contact_company_name varchar NULL, +-- contact_first_name varchar NULL, +-- contact_middle_name varchar NULL, +-- contact_last_name varchar NULL, +-- contact_phone_number varchar NULL, +-- contact_email_address varchar NULL, +-- first_name varchar NULL, +-- middle_name varchar NULL, +-- last_name varchar NULL, +-- legal_name varchar NULL, +-- email_address varchar NULL, +-- phone_number varchar NULL, +-- inspected_date varchar NULL, +-- mailing_address varchar NULL, +-- mailing_address_line_1 varchar NULL, +-- mailing_address_line_2 varchar NULL, +-- mailing_address_line_3 varchar NULL, +-- mailing_city varchar NULL, +-- mailing_province_state_code varchar NULL, +-- mailing_postal_code varchar NULL, +-- mailing_zip varchar NULL, +-- mailing_country_code varchar NULL, +-- mailing_country varchar NULL, +-- location_description varchar NULL, +-- tenure varchar NULL, +-- create_userid varchar NULL, +-- update_userid varchar NULL, +-- create_timestamp timestamp NOT NULL DEFAULT now(), +-- update_timestamp timestamp NOT NULL DEFAULT now(), +-- CONSTRAINT "PK_2de96ab00388f75e42763d1f10d" PRIMARY KEY (id) +-- ); + + +-- -- public.print_request_log definition + +-- -- Drop table + +-- -- DROP TABLE public.print_request_log; + +-- CREATE TABLE public.print_request_log ( +-- id serial4 NOT NULL, +-- document_template_id int4 NULL, +-- print_request_detail_id int4 NULL, +-- dtid int4 NULL, +-- request_app_user varchar NULL, +-- request_json varchar NULL, +-- create_userid varchar NULL, +-- update_userid varchar NULL, +-- create_timestamp timestamp NULL DEFAULT now(), +-- update_timestamp timestamp NULL DEFAULT now(), +-- document_type varchar NULL, +-- CONSTRAINT "PK_e0a0d1732be69648cb82307c5ef" PRIMARY KEY (id) +-- ); + + +-- -- public.typeorm_metadata definition + +-- -- Drop table + +-- -- DROP TABLE public.typeorm_metadata; + +-- CREATE TABLE public.typeorm_metadata ( +-- "type" varchar NOT NULL, +-- "database" varchar NULL, +-- "schema" varchar NULL, +-- "table" varchar NULL, +-- "name" varchar NULL, +-- value text NULL +-- ); + + +-- -- public.nfr_provision definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_provision; + +-- CREATE TABLE public.nfr_provision ( +-- id serial4 NOT NULL, +-- "type" varchar NULL, +-- provision_name varchar NULL, +-- free_text varchar NULL, +-- help_text varchar NULL, +-- category varchar NULL, +-- active_flag bool NULL, +-- create_userid varchar NULL, +-- update_userid varchar NULL, +-- create_timestamp timestamp NOT NULL DEFAULT now(), +-- update_timestamp timestamp NOT NULL DEFAULT now(), +-- "provisionGroupId" int4 NULL, +-- CONSTRAINT "PK_c4a6f10af0456d58c04d4d145f3" PRIMARY KEY (id), +-- CONSTRAINT "FK_a43df8873b446878b2ee5cebb24" FOREIGN KEY ("provisionGroupId") REFERENCES public.nfr_provision_group(id) +-- ); + + +-- -- public.nfr_provision_provision_variant_nfr_provision_variant definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_provision_provision_variant_nfr_provision_variant; + +-- CREATE TABLE public.nfr_provision_provision_variant_nfr_provision_variant ( +-- "nfrProvisionId" int4 NOT NULL, +-- "nfrProvisionVariantId" int4 NOT NULL, +-- CONSTRAINT "PK_5b9a48b11c13574b2a9304958af" PRIMARY KEY ("nfrProvisionId", "nfrProvisionVariantId"), +-- CONSTRAINT "FK_29eff651c342499678c06aad32b" FOREIGN KEY ("nfrProvisionVariantId") REFERENCES public.nfr_provision_variant(id) ON DELETE CASCADE ON UPDATE CASCADE, +-- CONSTRAINT "FK_636125267180d5eaf59688a2a43" FOREIGN KEY ("nfrProvisionId") REFERENCES public.nfr_provision(id) ON DELETE CASCADE ON UPDATE CASCADE +-- ); +-- CREATE INDEX "IDX_29eff651c342499678c06aad32" ON public.nfr_provision_provision_variant_nfr_provision_variant USING btree ("nfrProvisionVariantId"); +-- CREATE INDEX "IDX_636125267180d5eaf59688a2a4" ON public.nfr_provision_provision_variant_nfr_provision_variant USING btree ("nfrProvisionId"); + + +-- -- public.nfr_provision_variable definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_provision_variable; + +-- CREATE TABLE public.nfr_provision_variable ( +-- id serial4 NOT NULL, +-- variable_name varchar NULL, +-- variable_value varchar NULL, +-- help_text varchar NULL, +-- create_userid varchar NULL, +-- update_userid varchar NULL, +-- create_timestamp timestamp NOT NULL DEFAULT now(), +-- update_timestamp timestamp NOT NULL DEFAULT now(), +-- "provisionId" int4 NULL, +-- CONSTRAINT "PK_e7bc9c66c16a184bea624bd8d97" PRIMARY KEY (id), +-- CONSTRAINT "FK_b24f739d9a39f30051eb9500650" FOREIGN KEY ("provisionId") REFERENCES public.nfr_provision(id) +-- ); + + +-- -- public.nfr_data_provision definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_data_provision; + +-- CREATE TABLE public.nfr_data_provision ( +-- id serial4 NOT NULL, +-- provision_free_text varchar NULL, +-- "nfrProvisionId" int4 NULL, +-- "nfrDataId" int4 NULL, +-- CONSTRAINT "PK_73a4f1b680a4ab0819beb7a83ba" PRIMARY KEY (id), +-- CONSTRAINT "FK_31783ee54c5bc5e6b76a2803123" FOREIGN KEY ("nfrProvisionId") REFERENCES public.nfr_provision(id) ON DELETE CASCADE, +-- CONSTRAINT "FK_de4669e0ff571ddf23c9490059c" FOREIGN KEY ("nfrDataId") REFERENCES public.nfr_data(id) ON DELETE CASCADE +-- ); + + +-- -- public.nfr_data_variable definition + +-- -- Drop table + +-- -- DROP TABLE public.nfr_data_variable; + +-- CREATE TABLE public.nfr_data_variable ( +-- id serial4 NOT NULL, +-- data_variable_value varchar NULL, +-- "nfrVariableId" int4 NULL, +-- "nfrDataId" int4 NULL, +-- CONSTRAINT "PK_78b5abaae0c841c70d3dbe79dd4" PRIMARY KEY (id), +-- CONSTRAINT "FK_2f9dc95b75fb29c01a332823044" FOREIGN KEY ("nfrVariableId") REFERENCES public.nfr_provision_variable(id) ON DELETE CASCADE, +-- CONSTRAINT "FK_76bc71b9b4fbbcdd622bab0ff19" FOREIGN KEY ("nfrDataId") REFERENCES public.nfr_data(id) ON DELETE CASCADE +-- ); \ No newline at end of file diff --git a/backend/db2/V1.1.1__TICDI_Data_Nov-10-23.sql b/backend/db2/V1.1.1__TICDI_Data_Nov-10-23.sql new file mode 100644 index 00000000..63b9cfd8 --- /dev/null +++ b/backend/db2/V1.1.1__TICDI_Data_Nov-10-23.sql @@ -0,0 +1,339 @@ +BEGIN; +SET CLIENT_ENCODING TO 'utf8'; +ALTER TABLE public.nfr_provision_group DISABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision DISABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision_variable DISABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision_variant DISABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision_provision_variant_nfr_provision_variant DISABLE TRIGGER ALL; + +-- nfr_provision_group +INSERT INTO public.nfr_provision_group (provision_group,provision_group_text,max) VALUES + (1,'DOCUMENT TYPE',999), + (2,'FEES',999), + (5,'PREAMBLE',3), + (15,'OCCUPATIONAL RENT',1), + (20,'SECURITY',2), + (25,'INSURANCE',2), + (28,'',3), + (27,'ADDITIONAL REQUIREMENTS',999), + (34,'ADDITIONAL REQUIREMENTS',999), + (10,'SURVEY REQUIREMENTS',999); +INSERT INTO public.nfr_provision_group (provision_group,provision_group_text,max) VALUES + (14,'OBTAIN SURVEY',999), + (12,'SURVEY FEES',1); + +--nfr_provision +INSERT INTO public.nfr_provision ("type",provision_name,free_text,help_text,category,active_flag,create_userid,update_userid,create_timestamp,update_timestamp,"provisionGroupId") VALUES + ('O','INSURANCE REQUIRED - NFR OBTAIN SURVEY- OTHER','You must at your expense, effect and keep in force insurance as described in the enclosed «INTERIM_TENURE_TYPE».','Use when insurance is required on the interim tenure and may be covered under homeowners insurance etc.','OFFER - INSURANCE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 16:38:55.979829',9), + ('O','ADDITIONAL REQUIREMENTS - FISHERIES AND OCEANS APPROVAL','You must deliver to us a copy of a permit issued by the Federal Department of Fisheries and Oceans in respect of your proposed use of the Land for aquaculture purposes.','Use to require delivery of a copy of a permit from Fisheries and Oceans for aquaculture purposes.','ADDITIONAL REQUIREMENTS',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-15 14:46:47.992471',10), + ('O','FREE FIELD - PREAMBLE INFORMATION','«PREAMBLE_FREE_FIELD»','Use when you want to enter additional information for the preamble','OFFER PREAMBLE',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-26 17:42:07.859382',3), + ('M','TEMPLATE VARIABLES - NFR - NO FEES','','Nominal rent tenures e.g. for community purposes being issued. Do not use for Crown Grants.  No additional fees are being requested.','DOCUMENT TYPE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-15 17:46:18.385388',1), + ('O','FREE FIELD FOR INSURANCE','«INSURANCE_FREE_FIELD»','Use when you want to enter additional information for insurance.','OFFER - INSURANCE',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-26 18:38:59.492308',9), + ('M','FEES','','Use this to create a table listing all the fees to be paid. Table is unprotected, will be able to modify text ','FEES',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 16:23:44.53137',2), + ('O','DELIVER SECURITY DEPOSIT','You must deliver to us a security deposit in the amount of $«SECURITY_AMOUNT» to guarantee the performance of your obligations under the «DB_TENURE_TYPE». Please see attached information regarding acceptable types of security.','Use this to require delivery of security deposit','OFFER - SECURITY',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-21 21:41:03.491356',8), + ('M','TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW','','majority of the new tenures and replacement tenures when survey is not required. Do not use for Crown Grants or when no additional fees are requested such as Nominal Rent tenures.','DOCUMENT TYPE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-13 21:16:55.658566',1), + ('O','FREE FIELD FOR SECURITY SECTION','«SECURITY_FREE_FIELD»','Use where you need to add information regarding security','OFFER - SECURITY',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-26 17:44:08.717371',8), + ('O','BOUNDARY SURVEY PLAN - CLIENT PAYS','In preparing the boundary survey the surveyor is also to indicate on the plan the location, type and dimensions of all existing improvements on the Land.','Use when "as built" survey of existing improvements is required.','OFFER SURVEY',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-27 14:57:22.134285',4); +INSERT INTO public.nfr_provision ("type",provision_name,free_text,help_text,category,active_flag,create_userid,update_userid,create_timestamp,update_timestamp,"provisionGroupId") VALUES + ('V','MONIES PAYABLE - NFR DELAYED','You must deliver to us the following amounts:','Use when you are providing a firm amount payable.','OFFER SURVEY',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-28 18:33:54.808381',5), + ('O','LETTER AFFIRMING BOUNDARY SURVEY','This letter must confirm that in preparing the boundary survey the surveyor will also indicate on the plan the location, type and dimensions of all existing improvements on the Land.','Use to remind client that Surveyor’s letter must confirm that location of improvements will be on boundary plan','OFFER - OBTAIN SURVEY',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-22 23:32:25.268378',6), + ('O','DELIVER SECURITY DEPOSIT - OBTAIN SURVEY','You must deliver to us a security deposit in the amount of $«SECURITY_AMOUNT» to guarantee the performance of your obligations under the «INTERIM_TENURE_TYPE». Please see attached information regarding acceptable types of security.','Use this when security is required for the interim tenure','OFFER - SECURITY',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 16:44:32.291826',8), + ('O','LETTER AFFIRMING BC LAND SURVEYOR WAS HIRED','«DEADLINE_CONFIRM_SURVEY» you must submit to us a letter from a British Columbia Land Surveyor confirming that you have hired the surveyor to prepare a boundary survey of the Land at your expense.','When client must provide us with a letter confirming Surveyor has been hired','OFFER - OBTAIN SURVEY',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-22 23:32:10.132454',6), + ('O','ADDITIONAL REQUIREMENTS - AFFILIATE STATUS CERTIFICATE','You must deliver to us a certificate of affiliate status, in the form attached, for each affiliate of your company which will be using the communication site.','Use when a certificate of affiliate status is required for each affiliate of your company using the communication site.','ADDITIONAL REQUIREMENTS',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-22 16:45:03.795999',10), + ('O','FREE FIELD - ADDITIONAL REQUIREMENTS','«ADDITIONAL_REQUIREMENTS_FREE_FIELD»','Use where you want to state additional conditions of the offer','ADDITIONAL REQUIREMENTS',true,NULL,'LOMILLER','2023-06-02 15:57:07.364365','2023-06-26 17:48:12.021686',10), + ('O','INSURANCE REQUIRED - NFR - OTHER','You must at your expense, effect and keep in force insurance as described in the enclosed ','Use when insurance is required and may be covered under homeowners insurance etc.','OFFER - INSURANCE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 16:38:10.794413',9), + ('O','REPLACEMENT STATEMENT','This is to replace «REPLACEMENT_TENURE_TYPE».',' Use this when the tenure is being replaced ','OFFER PREAMBLE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-20 18:16:12.396934',3), + ('O','OCCUPATIONAL RENT STATEMENT','Please note that Occupational Rental under section 96 of the Land Act is payable for your occupation of the Land for the period from <>.','Use this when occupational rent is payable','OFFER - MONIES - PAYABLE',true,NULL,'LOMILLER','2023-06-02 15:57:07.364365','2023-06-21 23:52:11.226929',7), + ('O','ADDITIONAL REQUIREMENTS - MANAGEMENT PLAN','You must submit to us a management plan that is acceptable to us for your proposed development of the Land.','Use to require delivery of a management plan.','ADDITIONAL REQUIREMENTS',true,NULL,'LOMILLER','2023-06-02 15:57:07.364365','2023-06-12 21:33:54.879335',10); +INSERT INTO public.nfr_provision ("type",provision_name,free_text,help_text,category,active_flag,create_userid,update_userid,create_timestamp,update_timestamp,"provisionGroupId") VALUES + ('M','FEES','','Use this to create a table listing all the fees to be paid. Table is unprotected, will be able to modify text ','FEES',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-29 21:41:36.444092',2), + ('O','LAND DIFFERS FROM STATEMENT','The Land differs from what you applied for because «WHY_LAND_DIFFERS».','Use when land being offered differs from the applied area','OFFER PREAMBLE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-20 18:16:44.295381',3), + ('M','TEMPLATE VARIABLES - NFR - DELAYED','','Use when applicant requires assurance tenure will be issued once additional requirements are fulfilled. (eg zoning, reports)','DOCUMENT TYPE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-15 17:46:42.133675',1), + ('V','SURVEY DEPOSIT','You must, by «DEADLINE_SURVEY_DEPOSIT», pay to us a deposit of $«DEPOSIT_AMOUNT_SURVEY» (which, if a tenure is issued to you following completion of survey, will be credited against the amounts owing for that tenure). If you choose not to proceed with the survey after it has been started, the deposit will be forfeited to the Province as liquidated damages. Please make your cheque or money order payable to the Minister of Finance and deliver it to «DB_ADDRESS_LINE_REGIONAL_OFFICE».','Use when we require a deposit from the client because the Province is paying for the survey','OFFER SURVEY',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-27 20:36:16.969351',5), + ('V','ESTIMATED MONIES PAYABLE - NFR - DELAYED','You must deliver to us the following amounts as set out below (estimated amounts are set out below). The final amounts owing will be calculated when the survey is complete and the area of the Land has been established. It will include the following items, some of which are subject to adjustment if the survey plan and area of the Land do not, in our opinion, conform to the attached sketch.','Use when you are providing an estimated amount payable.','OFFER SURVEY',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-06-28 18:34:04.60236',5), + ('O','ADDITIONAL REQUIREMENTS - TAX CLEARANCE CERTIFICATE','You must deliver to us a Tax Clearance Certificate, obtained from the Provincial Tax Collector’s office at «TAX_COLLECTOR_OFFICE», verifying that there are no arrears of taxes in connection with the Land.','Use when a tax clearance certificate is required verifying that there are no arrears of taxes.','ADDITIONAL REQUIREMENTS',true,NULL,'LOMILLER','2023-06-02 15:57:07.364365','2023-06-12 21:36:03.361001',10), + ('O','ADDITIONAL REQUIREMENTS - ZONING APPROVAL','You must deliver to us written confirmation from «LOCAL_GOVERNMENT» stating that it has adopted a zoning bylaw permitting the Land to be used for «PURPOSE_GENERIC_ZONING» purposes.','Use to require confirmation that a zoning bylaw permitting use of the Land for the intended purposes has been adopted.','ADDITIONAL REQUIREMENTS',true,NULL,'LOMILLER','2023-06-02 15:57:07.364365','2023-06-13 18:13:04.140914',10), + ('O','ADDITIONAL REQUIREMENTS - OBTAIN AND DELIVER','You must obtain the «DOCUMENT_TO_OBTAIN» and «DEADLINE_TO_DELIVER», deliver a copy of it to us.','Use when you require immediate delivery of documentation.','ADDITIONAL REQUIREMENTS',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-13 21:01:39.704815',10), + ('O','ADDITIONAL REQUIREMENTS - COAST GUARD APPROVAL','You must deliver to us a copy of a letter of approval from the Canadian Coast Guard under the Navigable Waters Protection Act for your proposed construction on the Land. In this regard, please contact: Canadian Coast Guard, «COAST_GUARD_ADDRESS».','Use to require delivery of a letter of approval from the Canadian Coast Guard for the proposed construction.','ADDITIONAL REQUIREMENTS',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-15 14:46:33.558354',10), + ('O','BOUNDARY SURVEY PLAN - MINISTRY PAYS','A boundary survey of the Land will be undertaken by a British Columbia Land Surveyor hired by us.','Use when we will pay a Surveyor to prepare a boundary survey','OFFER PREAMBLE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-27 14:57:45.158502',4); +INSERT INTO public.nfr_provision ("type",provision_name,free_text,help_text,category,active_flag,create_userid,update_userid,create_timestamp,update_timestamp,"provisionGroupId") VALUES + ('M','TEMPLATE VARIABLES - NFR - SURVEY REQUIRED','','Survey of the Land/improvements is required prior to issuance of tenure. E.g. when its a decision to convert an existing Licence for a Lease or SRW. Not to be used for Crown Grants.','DOCUMENT TYPE',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-15 17:47:18.794212',1), + ('M','TEMPLATE VARIABLES - NFR- TO OBTAIN SURVEY','','Interim tenure is being issued for survey purposes and/or initial activity. A subsequent tenure will be issued upon completion of the requirements set out in interim tenure. Not to be used for Crown Grants.','DOCUMENT TYPE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 16:19:52.911188',1), + ('O','BLANKET SECURITY STATEMENT','According to our records, you are currently covered by a blanket security agreement between the Province and «BLANKET_BOND_NAME». As long as this agreement is in good standing and you continue to be covered by it, you are not required to post security for this «DB_TENURE_TYPE» unless and until you receive further notice from us.','Use this when client is covered by blanket security agreement','OFFER - SECURITY',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 17:15:25.058373',8), + ('O','ADDITIONAL REQUIREMENTS - IMPROVEMENTS STAT DEC','You must deliver to us a statutory declaration, in the form attached, stating that all improvements on the Land are either owned by you or have been constructed, erected or place on the Land by you. Please sign this declaration in front of a solicitor or notary public.','Use this when a statutory declaration is required regarding ownership of improvements.','ADDITIONAL REQUIREMENTS',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-20 20:34:35.62335',10), + ('O','SURVEY - CLIENT - PAYS','«DEADLINE_CONFIRM_SURVEY», you must retain a British Columbia Land Surveyor to prepare a boundary survey of the Land at your expense. + +The survey must be completed and the plan submitted to the Surveyor General on or before «DEADLINE_COMPLETE_SURVEY». If the survey is not completed on or before that date, and that date is not otherwise extended in writing by us we are under no further obligation to issue a «DB_TENURE_TYPE» of the Land to you.','Use when client pays for survey','OFFER SURVEY',true,NULL,'LOMILLER','2023-06-02 15:57:07.364365','2023-06-21 21:39:34.632611',4), + ('O','INSURANCE REQUIRED - NFR - CERTIFICATE REQUIRED','You must deliver to us the attached Province of British Columbia Certificate of Insurance, signed by your insurance agent, for the insurance required to be maintained under the «DB_TENURE_TYPE». A sample certificate is enclosed.','Use when a Certificate of Insurance is required.','OFFER - INSURANCE',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 16:41:47.327374',9), + ('O','INSURANCE REQUIRED - NFR OBTAIN SURVEY - CERTIFICATE','You must deliver to us the attached Province of British Columbia Certificate of Insurance, signed by your insurance agent, for the insurance required to be maintained under the «INTERIM_TENURE_TYPE». A sample certificate is enclosed.','Use when a Certificate of Insurance is required.','OFFER - INSURANCE',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-22 16:41:32.284043',9), + ('O','SURVEY - MINISTRY PAYS (DEPOSIT REQUIRED) -NFR DELAYED','A boundary survey of the Land will be undertaken by a British Columbia Land Surveyor hired by us. + +You must, by «DEADLINE_SURVEY_DEPOSIT», pay to us a deposit of $«DEPOSIT_AMOUNT_SURVEY» (which, if the «DB_TENURE_TYPE» is issued, will be credited against the amounts set out below that you are required to pay). If you choose not to proceed with the «DB_TENURE_TYPE» after the survey has been started, the deposit will be forfeited to the Province as liquidated damages. Please make your cheque or money order payable to the Minister of Finance and deliver it to «DB_ADDRESS_LINE_REGIONAL_OFFICE». + +If the survey is completed in accordance with the requirements set out above, we will complete the «DB_TENURE_TYPE» documents by inserting the correct legal description for the Land and by inserting the required monies payable. The monies payable are calculated on the basis of the area of the Land at a rate of $«RATE_PER_METRE_SURVEY_DEPOSIT_DELAYED». If the area of the Land exceeds «MAXIMUM_AREA_SURVEY_DEPOSIT_DELAYED», this offer terminates unless we agree with you in writing to proceed with the issuance of the «DB_TENURE_TYPE».','Use to require payment of a deposit where Province is to pay for a survey.','OFFER SURVEY',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-27 15:09:33.645396',4), + ('O','BLANKET SECURITY - OBTAIN SURVEY','According to our records, you are currently covered by a blanket security agreement between the Province and «BLANKET_BOND_NAME». As long as this agreement is in good standing and you continue to be covered by it, you are not required to post security for this «INTERIM_TENURE_TYPE» until you receive further notice from us.','Client has a blanket security - we are issuing interim tenure','OFFER - SECURITY',true,NULL,'BSALL','2023-06-02 15:57:07.279427','2023-06-22 16:58:36.242497',8), + ('O','SURVEY - CLIENT PAYS - NFR DELAYED','«DEADLINE_CONFIRM_SURVEY», you must retain a British Columbia Land Surveyor to prepare a boundary survey of the Land at your expense. + +The survey must be completed, and the plan submitted to the Surveyor General on or before «DEADLINE_COMPLETE_SURVEY». If the survey is not completed on or before that date, and that date is not otherwise extended in writing by us we are under no further obligation to issue a «DB_TENURE_TYPE» of the Land to you. + +If the survey is completed in accordance with the requirements set out above, we will complete the «DB_TENURE_TYPE» documents by inserting the correct legal description for the Land and by inserting the required monies payable. The monies payable are calculated on the basis of the area of the Land at a rate of $«RATE_PER_METRE». If the area of the Land exceeds «MAXIMUM_AREA», this offer terminates unless we agree with you in writing to proceed with the issuance of the «DB_TENURE_TYPE».','Use when the client pays for survey.','OFFER SURVEY',true,NULL,'LOMILLER','2023-06-02 15:57:07.279427','2023-07-20 19:12:59.172236',4); +INSERT INTO public.nfr_provision ("type",provision_name,free_text,help_text,category,active_flag,create_userid,update_userid,create_timestamp,update_timestamp,"provisionGroupId") VALUES + ('O','SURVEY DEPOSIT REQUIRED','You must, by «DEADLINE_SURVEY_DEPOSIT», pay to us a deposit of $«DEPOSIT_AMOUNT_SURVEY» (which, if the «DB_TENURE_TYPE» is issued, will be credited against the amounts set out below that you are required to pay). + +If you choose not to proceed with the «DB_TENURE_TYPE» after the survey has been started, the deposit will be forfeited to the Province as liquidated damages. Please make your cheque or money order payable to the Minister of Finance and deliver it to «DB_ADDRESS_LINE_REGIONAL_OFFICE».','Use to require payment of a deposit where Province is to pay for a survey.','OFFER SURVEY',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-27 20:35:35.371359',4), + ('O','DELIVER SECURITY DEPOSIT & SURVEY DEPOSIT','In addition to the deposit referred to in the “Survey” portion of this letter, you must deliver to us a security deposit in the amount of $«SECURITY_AMOUNT» to guarantee the performance of your obligations under the «DB_TENURE_TYPE». Please see attached information regarding acceptable types of security.','Use this where 2 deposits are to be delivered: one for the survey and another for clean-up under the terms of the tenure to be issued','OFFER - SECURITY',true,NULL,'BSALL','2023-06-02 15:57:07.364365','2023-06-30 15:22:22.442357',8); + +-- nfr_provision_variable +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',1), + ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',1), + ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',1), + ('PURPOSE_GENERIC','','used for "_________" purposes.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',1), + ('SALUTATION','','Dear "______": Type in the person’’s name or Sir or Madam.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',1), + ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',1), + ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',7), + ('COAST_GUARD_ADDRESS','','Type in the address of the Canadian Coast Guard office.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',22), + ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',23), + ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',23); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',23), + ('PURPOSE_GENERIC','','used for "_________" purposes.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',23), + ('SALUTATION','','Dear "______": Type in the person’’s name or Sir or Madam.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',23), + ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',23), + ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',41), + ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',41), + ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',41), + ('PURPOSE_GENERIC','','used for "_________" purposes.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',41), + ('CLIENT_FILE_NO','','Your file: "______"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:20:25.383347',1), + ('NUMBER_OF_COPIES','','type the number (two) of how many copies of the tenure documents are being forwarded to client to sign. ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:26:39.628364',23); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('NUMBER_OF_COPIES','','type the number (two) of how many copies of the tenure documents are being forwarded to client to sign. ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:25:44.257358',1), + ('ATTENTION_LINE','','Attention: "______"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:26:50.872419',23), + ('CLIENT_FILE_NO','','Your file: "______"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:27:04.425352',23), + ('ATTENTION_LINE','','Attention: "______"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:28:04.897347',41), + ('CLIENT_FILE_NO','','Your file: "______" ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:28:12.654356',41), + ('NUMBER_OF_COPIES','','type the number (two) of how many copies of the tenure documents are being forwarded to client to sign. ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:28:32.644364',41), + ('FEE_DOCUMENTATION_AMOUNT','','EG: "1000.00" (no comma, and use decimals)',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-20 19:47:18.08737',2), + ('FEE_OCCUPATIONAL_RENTAL_AMOUNT','','EG: "1000.00" (no comma, and use decimals)',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-20 19:47:36.347441',2), + ('BLANKET_BOND_NAME','','enter details of blanket security',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-22 17:16:22.131377',8), + ('FEE_APPLICATION_AMOUNT','','EG: "1000.00" (no comma, and use decimals)',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-20 19:47:25.315439',2); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('WHY_LAND_DIFFERS','','The Land differs from what you applied for because "____". Explain why area is different.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:36:29.985325',4), + ('REPLACEMENT_TENURE_TYPE','','Specify type and tenure number which is being replaced e.g. Lease No. 999999.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-16 20:36:04.20696',3), + ('FEE_OTHER_CREDIT_AMOUNT','','EG: "1000.00" (no comma, and use decimals)',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-20 19:47:45.891637',2), + ('SALUTATION','','Dear "______": Type in the person’’s name or Sir or Madam.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',41), + ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',41), + ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',46), + ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',47), + ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',66), + ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',66), + ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',66); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('INTERIM_TENURE_TYPE','','Insert the type of tenure now being used. e.g. Licence.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',66), + ('PURPOSE_GENERIC','','used for "_________" purposes.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',66), + ('SALUTATION','','Dear "______": Type in the person’’s name or Sir or Madam.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',66), + ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',66), + ('DEADLINE_SURVEY_DEPOSIT','','Deadline to pay survey deposit. Enter Month, Day, Year',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',72), + ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',72), + ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" OR "Within [45] days from the date of this letter". Capitalize first character as this is the start of a sentence.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',73), + ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-02 15:57:07.279427',76), + ('ATTENTION_LINE','','Attention: "______" ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:28:50.005304',66), + ('CLIENT_FILE_NO','','Your file: "______" ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:28:57.756376',66); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('NUMBER_OF_COPIES','','type the number (two) of how many copies of the tenure documents are being forwarded to client to sign. ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:29:17.789098',66), + ('MAXIMUM_AREA_SURVEY_DEPOSIT_DELAYED','','Enter the number of hectares. EG. "0.5 hectares"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-23 20:26:40.639362',47), + ('MAXIMUM_AREA','','Enter the number of hectares. EG. "0.5 hectares"',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-23 18:33:30.847392',46), + ('DEADLINE_CONFIRM_SURVEY','','Enter: "On or before [date]" this date is when the survey plan must be submitted to the SGs office',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-20 18:00:21.374354',46), + ('DEADLINE_SURVEY_DEPOSIT','','Deadline to pay survey deposit. Enter [date]',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-23 20:11:04.128362',47), + ('DEADLINE_COMPLETE_SURVEY','','Enter: [date] the survey must be completed by',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-21 15:43:07.536357',46), + ('RATE_PER_METRE_SURVEY_DEPOSIT_DELAYED','','$"#.## per square metre/per hectare" Put in the decimal.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-15 17:41:36.463885',47), + ('INTERIM_TENURE_TYPE','','(Blanket Security) Insert the type of tenure now being used. e.g. Licence.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-22 17:24:43.417375',77), + ('INTERIM_TENURE_TYPE','','(Security) Insert the type of tenure now being used. e.g. Licence.',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-22 17:25:02.184734',76), + ('BLANKET_BOND_NAME','','enter details of blanket security',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-22 17:16:03.192347',77); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',90), + ('PURPOSE_GENERIC','','used for "_________" purposes.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',90), + ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',90), + ('SALUTATION','','Dear "______": Type in the person’’s name or Sir or Madam.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',90), + ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',90), + ('FEE_APPLICATION_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',91), + ('FEE_OCCUPATIONAL_RENTAL_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',91), + ('FEE_OTHER_CREDIT_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',91), + ('DEADLINE_SURVEY_DEPOSIT','','Deadline to pay survey deposit. Enter Month, Day, Year',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',96), + ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',96); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',101), + ('LOCAL_GOVERNMENT','','Type in the name of the local government.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',110), + ('TAX_COLLECTOR_OFFICE','','Type in the address of the local Provincial Tax Collector’’s office.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',112), + ('DOCUMENT_TO_OBTAIN','','You must obtain the [specify the name of the document(s)] and ....',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-02 15:57:07.364365',114), + ('PURPOSE_GENERIC_ZONING','','used for "_________" purposes.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-13 18:06:54.115699',110), + ('ATTENTION_LINE','','Attention: "______" ',NULL,NULL,'2023-06-02 15:57:07.279427','2023-06-13 21:16:49.648451',1), + ('DAYS_TO_RETURN_DOCUMENTS','','Enter [# days] "You must sign and return them to us within (# days) of our letter to you .....’’',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-21 15:56:28.489881',90), + ('CLIENT_FILE_NO','','Your file: "______"',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-13 21:29:43.260364',90), + ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-13 21:30:06.91673',90), + ('NUMBER_OF_COPIES','','type the number (two) of how many copies of the tenure documents are being forwarded to client to sign. ',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-13 21:30:30.231347',90); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" .. this is the date the surveyor must be hired by',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-14 22:18:37.124318',97), + ('PREAMBLE_FREE_FIELD','','Use when you want to enter additional information for the preamble','LOMILLER',NULL,'2023-06-26 17:30:55.159152','2023-06-26 17:31:31.493375',5), + ('ATTENTION_LINE','','Attention: "______"',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-16 21:02:12.755383',90), + ('INSURANCE_FREE_FIELD','','Use when you want to enter additional information for insurance.','LOMILLER',NULL,'2023-06-26 17:45:00.98355','2023-06-26 18:38:56.168009',12), + ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements for the NFR',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-20 17:48:10.48195',90), + ('MAXIMUM_AREA','','Enter: "# hectares"',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-20 18:01:49.180358',90), + ('OCC_RENT_DETAILS','','Occupational Rental is payable for your occupation of the Land for the period from "___". ',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-20 23:08:37.630361',99), + ('ADDITIONAL_REQUIREMENTS_FREE_FIELD','','Use where you want to state additional conditions of the offer.','LOMILLER',NULL,'2023-06-26 17:48:35.340383','2023-06-26 18:39:33.478342',107), + ('DEADLINE_COMPLETE_SURVEY','','Enter the date (month day, year) the plan must be submitted to the SG''s office',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-21 15:50:26.530352',97), + ('DAYS_TO_DELIVER_DOCUMENTS','','Enter [# days] .. "We will forward the documents to you within # days of the survey being completed.....’’',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-21 15:55:14.497797',90); +INSERT INTO public.nfr_provision_variable (variable_name,variable_value,help_text,create_userid,update_userid,create_timestamp,update_timestamp,"provisionId") VALUES + ('INTERIM_TENURE_TYPE','','(Insurance Other) Insert the type of tenure now being used. e.g. Licence.','BSALL',NULL,'2023-06-15 18:18:50.859363','2023-06-22 17:23:27.119879',30), + ('INTERIM_TENURE_TYPE','','(Insurance Certificate) Insert the type of tenure now being used. e.g. Licence.','BSALL',NULL,'2023-06-15 18:15:43.795116','2023-06-22 17:24:10.979754',79), + ('SECURITY_FREE_FIELD','','Use where you need to add information regarding security.','LOMILLER',NULL,'2023-06-23 21:00:33.78888','2023-06-23 21:00:33.78888',9), + ('DEADLINE_TO_DELIVER','','(Obtain and Deliver) Enter "on or before [date]" OR "within [45] days from the date of this letter.',NULL,NULL,'2023-06-02 15:57:07.364365','2023-06-27 22:08:08.797474',114); + +-- nfr_provision_variant +INSERT INTO public.nfr_provision_variant (variant_name) VALUES + ('NOTICE OF FINAL REVIEW'), + ('NOTICE OF FINAL REVIEW (DELAYED)'), + ('NOTICE OF FINAL REVIEW (NO FEES)'), + ('NOTICE OF FINAL REVIEW (SURVEY REQUIRED)'), + ('NOTICE OF FINAL REVIEW (TO OBTAIN SURVEY)'); + +-- nfr_provision_provision_variant_nfr_provision_variant +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (1,1), + (2,1), + (3,1), + (4,1), + (5,1), + (114,1), + (7,1), + (8,1), + (9,1), + (10,1); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (11,1), + (12,1), + (114,2), + (114,3), + (114,5), + (110,2), + (22,2), + (22,3), + (22,4), + (21,1); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (22,1), + (23,3), + (22,5), + (21,2), + (21,3), + (21,4), + (21,5), + (48,4), + (71,4), + (101,2); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (77,5), + (79,5), + (30,5), + (91,4), + (96,5), + (101,5), + (41,2), + (46,2), + (47,2), + (48,2); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (49,2), + (50,2), + (66,5), + (71,5), + (73,5), + (74,5), + (76,5), + (90,4), + (96,4), + (97,4); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (99,4), + (101,4), + (107,4), + (109,4), + (110,4), + (111,4), + (112,4), + (113,4), + (114,4), + (4,2); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (4,3), + (4,4), + (4,5), + (3,2), + (3,3), + (3,4), + (3,5), + (2,2), + (2,5), + (10,2); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (10,3), + (10,4), + (11,2), + (11,3), + (11,4), + (12,2), + (12,3), + (12,4), + (12,5), + (5,2); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (5,3), + (5,4), + (5,5), + (99,1), + (99,2), + (99,5), + (7,3), + (7,2), + (7,4), + (8,3); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (8,2), + (8,4), + (9,3), + (9,2), + (9,5), + (9,4), + (107,1), + (107,2), + (107,3), + (107,5); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (109,1), + (109,2), + (109,3), + (109,5), + (110,1), + (110,3), + (110,5), + (111,1), + (111,2), + (111,3); +INSERT INTO public.nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId","nfrProvisionVariantId") VALUES + (111,5), + (112,1), + (112,2), + (112,3), + (112,5), + (113,1), + (113,2), + (113,3), + (113,5); + +ALTER TABLE public.nfr_provision_group ENABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision ENABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision_variable ENABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision_variant ENABLE TRIGGER ALL; +ALTER TABLE public.nfr_provision_provision_variant_nfr_provision_variant ENABLE TRIGGER ALL; + +COMMIT; \ No newline at end of file diff --git a/backend/src/admin/admin.controller.ts b/backend/src/admin/admin.controller.ts index 44343642..86a8dcbb 100644 --- a/backend/src/admin/admin.controller.ts +++ b/backend/src/admin/admin.controller.ts @@ -43,11 +43,11 @@ export class AdminController { }; } - @Get('activate-template/:id/:document_type') + @Get('activate-template/:id/:document_type_id') async activateTemplate( @Session() session: { data?: SessionData }, - @Param('id') id, - @Param('document_type') document_type + @Param('id') id: number, + @Param('document_type_id') document_type_id: number ) { const update_userid = session?.data?.activeAccount ? session.data.activeAccount.idir_username @@ -57,7 +57,7 @@ export class AdminController { return this.adminService.activateTemplate({ id: id, update_userid: update_userid, - document_type: document_type, + document_type_id: document_type_id, }); } @@ -75,9 +75,9 @@ export class AdminController { streamableFile.pipe(res); } - @Get('remove-template/:reportType/:id') - async removeTemplate(@Param('reportType') reportType: string, @Param('id') id: number) { - return this.adminService.removeTemplate(reportType, id); + @Get('remove-template/:id/:document_type_id') + async removeTemplate(@Param('id') id: number, @Param('document_type_id') document_type_id: number) { + return this.adminService.removeTemplate(document_type_id, id); } @Post('upload-template') @@ -97,7 +97,7 @@ export class AdminController { file: Express.Multer.File, @Body() params: { - document_type: string; + document_type_id: number; template_name: string; } ) { @@ -112,7 +112,7 @@ export class AdminController { : '' : ''; const uploadData = { - document_type: params.document_type, + document_type_id: params.document_type_id, active_flag: false, mime_type: file.mimetype, file_name: params.template_name, @@ -178,29 +178,29 @@ export class AdminController { return this.adminService.removeAdmin(input.idirUsername); } - @Get('templates/:reportId') - getTemplates(@Param('reportId') reportId: number): Promise { - return this.adminService.getTemplates(reportId); - } + // @Get('templates/:reportId') + // getTemplates(@Param('reportId') reportId: number): Promise { + // return this.adminService.getTemplates(reportId); + // } - @Get('open-document/:nfr_id') - setSessionDocument(@Session() session: { data?: SessionData }, @Param('nfr_id') nfrId: number): void { - session.data.selected_document = { nfr_id: nfrId }; + @Get('open-document/:document_id') + setSessionDocument(@Session() session: { data?: SessionData }, @Param('document_id') documentId: number): void { + session.data.selected_document = { document_id: documentId }; } - @Get('get-templates/:document_type') - getDocumentTemplates(@Param('document_type') documentType: string): any { - return this.adminService.getDocumentTemplates(documentType); + @Get('get-templates/:document_type_id') + getDocumentTemplates(@Param('document_type_id') document_type_id: number): any { + return this.adminService.getDocumentTemplates(document_type_id); } - @Get('nfr-provisions') - getNFRProvisions(): any { - return this.adminService.getNFRProvisions(); + @Get('provisions') + getDocumentProvisions(): any { + return this.adminService.getDocumentProvisions(); } - @Get('nfr-variables') - getNFRVariables(): any { - return this.adminService.getNFRVariables(); + @Get('document-variables') + getDocumentVariables(): any { + return this.adminService.getDocumentVariables(); } @Get('enable-provision/:provisionId') @@ -230,6 +230,7 @@ export class AdminController { free_text: string; help_text: string; category: string; + order_value: number; variants: number[]; }, @Session() session: { data?: SessionData } @@ -251,11 +252,13 @@ export class AdminController { free_text: string; help_text: string; category: string; - variants: number[]; + order_value: number; + document_type_ids: number[]; }, @Session() session: { data?: SessionData } ) { const update_userid = session?.data?.activeAccount.idir_username; + console.log('order_value: ' + provisionParams.order_value); return this.adminService.updateProvision(provisionParams, update_userid); } @@ -278,6 +281,7 @@ export class AdminController { updateVariable( @Body() variableParams: { + id: number; variable_name: string; variable_value: string; help_text: string; @@ -286,7 +290,7 @@ export class AdminController { @Session() session: { data?: SessionData } ) { const update_userid = session?.data?.activeAccount.idir_username; - return this.adminService.updateVariable(variableParams, update_userid); + return this.adminService.updateVariable({ ...variableParams, update_userid }); } @Get('remove-variable/:id') diff --git a/backend/src/admin/admin.module.ts b/backend/src/admin/admin.module.ts index c6262b3d..91560108 100644 --- a/backend/src/admin/admin.module.ts +++ b/backend/src/admin/admin.module.ts @@ -6,9 +6,10 @@ import { AdminService } from './admin.service'; import { AdminController } from './admin.controller'; import { AuthenticationModule } from 'src/authentication/authentication.module'; import { DocumentTemplateModule } from 'src/document_template/document_template.module'; +import { ProvisionModule } from 'src/provision/provision.module'; @Module({ - imports: [HttpModule, AuthenticationModule, DocumentTemplateModule], + imports: [HttpModule, AuthenticationModule, DocumentTemplateModule, ProvisionModule], providers: [AdminGuard, AdminService], exports: [AdminService], controllers: [AdminController], diff --git a/backend/src/admin/admin.service.ts b/backend/src/admin/admin.service.ts index 312c1837..fcf9f3be 100644 --- a/backend/src/admin/admin.service.ts +++ b/backend/src/admin/admin.service.ts @@ -4,6 +4,8 @@ import { HttpService } from '@nestjs/axios'; import { ExportDataObject, SearchResultsItem, UserObject } from 'utils/types'; import { REPORT_TYPES } from 'utils/constants'; import { DocumentTemplateService } from 'src/document_template/document_template.service'; +import { DocumentType } from 'src/document_type/entities/document_type.entity'; +import { ProvisionService } from 'src/provision/provision.service'; const axios = require('axios'); const FormData = require('form-data'); @@ -15,43 +17,29 @@ let port: number; export class AdminService { constructor( private readonly httpService: HttpService, - private readonly documentTemplateService: DocumentTemplateService + private readonly documentTemplateService: DocumentTemplateService, + private readonly provisionService: ProvisionService ) { hostname = process.env.backend_url ? process.env.backend_url : `http://localhost`; // local development backend port is 3001, docker backend port is 3000 port = process.env.backend_url ? 3000 : 3001; } - async activateTemplate(data: { id: number; update_userid: string; document_type: string }): Promise { - const url = `${hostname}:${port}/document-template/activate-template`; - return axios - .post(url, { - id: data.id, - update_userid: data.update_userid, - document_type: data.document_type, - }) - .then((res) => { - return res.data; - }); + activateTemplate(data: { id: number; update_userid: string; document_type_id: number }): Promise { + return this.documentTemplateService.activateTemplate(data); } - async downloadTemplate(id: number) { - const url = `${hostname}:${port}/document-template/find-one/${id}`; - return axios.get(url).then((res) => { - return res.data; - }); + downloadTemplate(id: number) { + return this.documentTemplateService.findOne(id); } - async removeTemplate(reportType: string, id: number): Promise { - const url = `${hostname}:${port}/document-template/remove/${encodeURI(reportType)}/${id}`; - return axios.get(url).then((res) => { - return res.data; - }); + removeTemplate(document_type_id: number, id: number): Promise { + return this.documentTemplateService.remove(document_type_id, id); } async uploadTemplate( data: { - document_type: string; + document_type_id: number; active_flag: boolean; mime_type: string; file_name: string; @@ -62,7 +50,7 @@ export class AdminService { ): Promise { return this.documentTemplateService.create( { - document_type: data.document_type, + document_type_id: data.document_type_id, template_author: data.template_author, mime_type: data.mime_type, file_name: data.file_name, @@ -271,103 +259,66 @@ export class AdminService { return { message: 'error' }; } - async getTemplates(reportId: number) { - const documentType = reportId == 1 || reportId == 2 ? REPORT_TYPES[reportId - 1] : 'none'; - const url = `${hostname}:${port}/document-template/${encodeURI(documentType)}`; - const data = await axios - .get(url) - .then((res) => { - return res.data; - }) - .catch((err) => console.log(err.response.data)); - let documents: { - version: number; - file_name: string; - updated_date: string; - status: string; - active: boolean; - template_id: number; - }[] = []; - for (let entry of data) { - const document = { - version: entry.template_version, - file_name: entry.file_name, - updated_date: entry.update_timestamp.split('T')[0], - status: '???', - active: entry.active_flag, - template_id: entry.id, + // async getTemplates(document_type_id: number) { + // const data = await this.documentTemplateService.findAll(document_type_id); + // let documents: { + // version: number; + // file_name: string; + // updated_date: string; + // status: string; + // active: boolean; + // template_id: number; + // }[] = []; + // for (let entry of data) { + // const document = { + // version: entry.template_version, + // file_name: entry.file_name, + // updated_date: entry.update_timestamp.toString().split('T')[0], + // status: '???', + // active: entry.active_flag, + // template_id: entry.id, + // }; + // documents.push(document); + // } + // return documents; + // } + + async getDocumentTemplates(document_type_id: number): Promise { + const documentTemplateObjects = await this.documentTemplateService.findAll(document_type_id); + const formattedDate = (date: Date) => date.toISOString().split('T')[0]; + return documentTemplateObjects.map((template) => { + return { + id: template.id, + template_version: template.template_version, + file_name: template.file_name, + active_flag: template.active_flag, + update_timestamp: formattedDate(template.update_timestamp), }; - documents.push(document); - } - return documents; + }); } - async getDocumentTemplates(documentType: string): Promise { - const returnItems = ['id', 'template_version', 'file_name', 'uploaded_date', 'active_flag', 'update_timestamp']; - const url = `${hostname}:${port}/document-template/${encodeURI(documentType)}`; - const documentTemplateObjects = await axios - .get(url) - .then((res) => { - return res.data; - }) - .catch((err) => console.log(err.response.data)); - return documentTemplateObjects.map((obj) => - Object.keys(obj) - .filter((key) => returnItems.includes(key)) - .reduce( - (acc, key) => { - key == 'update_timestamp' ? (acc[key] = obj[key].split('T')[0]) : (acc[key] = obj[key]); - return acc; - }, - { view: 'view', remove: 'remove' } - ) - ); + async getDocumentProvisions(): Promise { + const documentProvisions = await this.provisionService.findAll(); + return documentProvisions.map((provision) => ({ + id: provision.id, + type: provision.type, + provision_group: provision.provision_group, + max: provision.max, + provision_name: provision.provision_name, + free_text: provision.free_text, + help_text: provision.help_text, + category: provision.category, + order_value: provision.order_value, + active_flag: provision.active_flag, + // transform document_types to an array of ids + document_type_ids: provision.document_types.map((dt) => dt.id), + })); } - async getNFRProvisions(): Promise { - const returnItems = [ - 'id', - 'dtid', - 'type', - 'provision_group', - 'max', - 'provision_name', - 'free_text', - 'help_text', - 'category', - 'active_flag', - 'variants', - ]; - const url = `${hostname}:${port}/nfr-provision`; - const nfrProvisions = await axios - .get(url) - .then((res) => { - return res.data; - }) - .catch((err) => console.log(err.response.data)); - return nfrProvisions.map((obj) => - Object.keys(obj) - .filter((key) => returnItems.includes(key)) - .reduce( - (acc, key) => { - acc[key] = obj[key]; - return acc; - }, - { edit: 'edit' } - ) - ); - } - - async getNFRVariables(): Promise { + async getDocumentVariables(): Promise { const returnItems = ['variable_name', 'variable_value', 'help_text', 'id', 'provision_id']; - const url = `${hostname}:${port}/nfr-provision/variables`; - const nfrVariables = await axios - .get(url) - .then((res) => { - return res.data; - }) - .catch((err) => console.log(err.response.data)); - return nfrVariables.map((obj) => + const documentVariables = await this.provisionService.findAllVariables(); + return documentVariables.map((obj) => Object.keys(obj) .filter((key) => returnItems.includes(key)) .reduce( @@ -380,28 +331,19 @@ export class AdminService { ); } - async enableProvision(id: number): Promise { - const url = `${hostname}:${port}/nfr-provision/enable/${id}`; - return await axios.get(url).then((res) => { - return res.data; - }); + enableProvision(id: number): Promise { + return this.provisionService.enable(id); } - async disableProvision(id: number): Promise { - const url = `${hostname}:${port}/nfr-provision/disable/${id}`; - return await axios.get(url).then((res) => { - return res.data; - }); + disableProvision(id: number): Promise { + return this.provisionService.disable(id); } - async getGroupMax(): Promise { - const url = `${hostname}:${port}/nfr-provision/get-group-max/1`; - return await axios.get(url).then((res) => { - return res.data; - }); + getGroupMax(): Promise { + return this.provisionService.getGroupMax(); } - async addProvision( + addProvision( provisionParams: { type: string; provision_group: number; @@ -411,17 +353,15 @@ export class AdminService { free_text: string; help_text: string; category: string; + order_value: number; variants: number[]; }, create_userid: string ) { - const url = `${hostname}:${port}/nfr-provision`; - return await axios.post(url, { ...provisionParams, create_userid }).then((res) => { - return res.data; - }); + return this.provisionService.create({ ...provisionParams, create_userid }); } - async updateProvision( + updateProvision( provisionParams: { id: number; type: string; @@ -432,17 +372,18 @@ export class AdminService { free_text: string; help_text: string; category: string; - variants: number[]; + order_value: number; + document_type_ids: number[]; }, update_userid: string ) { - const url = `${hostname}:${port}/nfr-provision/update`; - return await axios.post(url, { ...provisionParams, update_userid }).then((res) => { - return res.data; + return this.provisionService.update(provisionParams.id, provisionParams.document_type_ids, { + ...provisionParams, + update_userid, }); } - async addVariable( + addVariable( variableParams: { variable_name: string; variable_value: string; @@ -451,32 +392,22 @@ export class AdminService { }, create_userid: string ) { - const url = `${hostname}:${port}/nfr-provision/add-variable`; - return await axios.post(url, { ...variableParams, create_userid }).then((res) => { - return res.data; - }); + return this.provisionService.addVariable({ ...variableParams, create_userid }); } - async updateVariable( - variableParams: { - variable_name: string; - variable_value: string; - help_text: string; - provision_id: number; - }, - update_userid: string - ) { - const url = `${hostname}:${port}/nfr-provision/update-variable`; - return await axios.post(url, { ...variableParams, update_userid }).then((res) => { - return res.data; - }); + async updateVariable(variableParams: { + id: number; + variable_name: string; + variable_value: string; + help_text: string; + provision_id: number; + update_userid: string; + }) { + return this.provisionService.updateVariable(variableParams); } - async removeVariable(id: number) { - const url = `${hostname}:${port}/nfr-provision/remove-variable/${id}`; - return await axios.get(url).then((res) => { - return res.data; - }); + removeVariable(id: number) { + return this.provisionService.removeVariable(id); } /** diff --git a/backend/src/app.controller.ts b/backend/src/app.controller.ts index bdcbd1f7..2aa15911 100644 --- a/backend/src/app.controller.ts +++ b/backend/src/app.controller.ts @@ -222,7 +222,8 @@ export class AppController { : PAGE_TITLES.MANAGE_TEMPLATES; let variantJsonArray = []; if (reportIndex == 2) { - variantJsonArray = await this.reportService.getVariantsWithIds(); + // variantJsonArray = await this.reportService.getVariantsWithIds(); + variantJsonArray = []; } return { title: title, @@ -363,12 +364,14 @@ export class AppController { const title = process.env.ticdi_environment == 'DEVELOPMENT' ? 'DEVELOPMENT - ' + PAGE_TITLES.NOFR : PAGE_TITLES.NOFR; const displayAdmin = isAdmin ? 'Administration' : '-'; - const groupMaxJsonArray = await this.reportService.getGroupMaxByVariant('NOTICE OF FINAL REVIEW'); + // const groupMaxJsonArray = await this.reportService.getGroupMaxByVariant('NOTICE OF FINAL REVIEW'); + const groupMaxJsonArray = []; try { - const nfrDataObject = await this.reportService.getActiveNfrDataByDtid(dtid); + const nfrDataObject = await this.reportService.getDocumentDataByDocTypeIdAndDtid(1, dtid); nfrData = nfrDataObject.nfrData; const provisionIds = nfrDataObject.provisionIds ? nfrDataObject.provisionIds : []; - const mandatoryProvisionIds = await this.reportService.getMandatoryProvisionsByVariant(variantName); + // const mandatoryProvisionIds = await this.reportService.getMandatoryProvisionsByVariant(variantName); + const mandatoryProvisionIds = []; await this.ttlsService.setWebadeToken(); const response: any = await firstValueFrom(this.ttlsService.callHttp(dtid)) .then((res) => { diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 94477755..741c398e 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -2,15 +2,11 @@ import 'dotenv/config'; import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ConfigModule } from '@nestjs/config'; -import { AppController } from './app.controller'; import { AppService } from './app.service'; import { DocumentTemplateModule } from './document_template/document_template.module'; -import { PrintRequestDetailModule } from './print_request_detail/print_request_detail.module'; -import { PrintRequestLogModule } from './print_request_log/print_request_log.module'; -import { NFRDataModule } from './nfr_data/nfr_data.module'; -import { NFRDataLogModule } from './nfr_data_log/nfr_data_log.module'; -import { NFRProvisionModule } from './nfr_provision/nfr_provision.module'; - +import { DocumentDataLogModule } from './document_data_log/document_data_log.module'; +import { ProvisionModule } from './provision/provision.module'; +import { DocumentDataModule } from './document_data/document_data.module'; import { HttpModule } from '@nestjs/axios'; import { TTLSService } from './ttls/ttls.service'; import { AuthenticationModule } from './authentication/authentication.module'; @@ -18,6 +14,7 @@ import { SessionModule } from 'nestjs-session'; import { AdminController } from './admin/admin.controller'; import { AdminModule } from './admin/admin.module'; import { ReportModule } from './report/report.module'; +import { DocumentTypeModule } from './document_type/document_type.module'; import { HttpExceptionFilter } from './authentication/http-exception.filter'; import { APP_FILTER } from '@nestjs/core'; @@ -37,11 +34,10 @@ if (process.env.POSTGRESQL_PASSWORD != null) { ConfigModule.forRoot(), TypeOrmModule.forRoot(config), DocumentTemplateModule, - PrintRequestDetailModule, - NFRDataModule, - NFRDataLogModule, - NFRProvisionModule, - PrintRequestLogModule, + DocumentTypeModule, + DocumentDataModule, + DocumentDataLogModule, + ProvisionModule, HttpModule, AuthenticationModule, AdminModule, diff --git a/backend/src/app.service.ts b/backend/src/app.service.ts index 96fc5469..386c6d0f 100644 --- a/backend/src/app.service.ts +++ b/backend/src/app.service.ts @@ -9,14 +9,14 @@ export class AppService { async initializeDb() { const queryRunner = this.dataSource.createQueryRunner(); // Check if there are already provisions/groups/variants in the db - const [provisionCount] = await queryRunner.query('SELECT COUNT(*) FROM nfr_provision'); - const [groupCount] = await queryRunner.query('SELECT COUNT(*) FROM nfr_provision_group'); - const [variantCount] = await queryRunner.query('SELECT COUNT(*) FROM nfr_provision_variant'); + const [provisionCount] = await queryRunner.query('SELECT COUNT(*) FROM provision'); + const [groupCount] = await queryRunner.query('SELECT COUNT(*) FROM provision_group'); + const [documentType] = await queryRunner.query('SELECT COUNT(*) FROM document_type'); // If there is no data in any of the tables, run the SQL script - if (provisionCount.count == 0 && groupCount.count == 0 && variantCount.count == 0) { - //const sql = fs.readFileSync("./utils/db/init-db.sql", "utf8"); - //await queryRunner.query(sql); - //await queryRunner.release(); + if (provisionCount.count == 0 && groupCount.count == 0 && documentType.count == 0) { + const sql = fs.readFileSync('./utils/db/init-db.sql', 'utf8'); + await queryRunner.query(sql); + await queryRunner.release(); } } diff --git a/backend/src/document_data/document_data.controller.ts b/backend/src/document_data/document_data.controller.ts new file mode 100644 index 00000000..8789d934 --- /dev/null +++ b/backend/src/document_data/document_data.controller.ts @@ -0,0 +1,73 @@ +import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; +import { ProvisionJSON, VariableJSON } from 'utils/types'; +import { CreateDocumentDataDto } from './dto/create-document_data.dto'; +import { DocumentDataService } from './document_data.service'; + +@Controller('document-data') +export class DocumentDataController { + constructor(private readonly documentDataService: DocumentDataService) {} + + @Post() + async create( + @Body() + data: { + body: CreateDocumentDataDto & { + provisionJsonArray: ProvisionJSON[]; + variableJsonArray: VariableJSON[]; + }; + } + ) { + const provArr = data.body.provisionJsonArray; + const varArr = data.body.variableJsonArray; + delete data.body['provisionJsonArray']; + delete data.body['variableJsonArray']; + return this.documentDataService.createOrUpdate(data.body, provArr, varArr); + } + + @Get() + findAll() { + return this.documentDataService.findAll(); + } + + @Get(':documentDataId') + findById(@Param('documentDataId') documentDataId: number) { + if (documentDataId && documentDataId != 0) { + return this.documentDataService.findByDocumentDataId(documentDataId); + } else { + return null; + } + } + + @Get('dtid/:document_type_id/:dtid') + findActiveByDtid(@Param('dtid') dtid: number, @Param('document_type_id') document_type_id: number) { + return this.documentDataService.findDocumentDataByDocTypeIdAndDtid(document_type_id, dtid); + } + + @Get('view/:documentDataId') + findViewByPRDID(@Param('documentDataId') documentDataId: string) { + return this.documentDataService.findViewByDocumentDataId(+documentDataId); + } + + @Get('variables/:dtid/:document_type_id') + getVariablesByDtidAndDocType(@Param('document_type_id') document_type_id: number, @Param('dtid') dtid: number) { + return this.documentDataService.getVariablesByDtidAndDocType(dtid, document_type_id); + } + + @Get('provisions/:document_type_id/:dtid') + getProvisionsByDocTypeIdAndDtid(@Param('document_type_id') document_type_id: number, @Param('dtid') dtid: number) { + return this.documentDataService.getProvisionsByDocTypeIdAndDtid(document_type_id, dtid); + } + + @Get('get-enabled-provisions/:document_type_id/:dtid') + getEnabledProvisionsByDocTypeIdAndDtid( + @Param('document_type_id') document_type_id: number, + @Param('dtid') dtid: number + ) { + return this.documentDataService.getEnabledProvisionsByDocTypeIdAndDtid(document_type_id, dtid); + } + + @Delete(':dtid') + remove(@Param('dtid') dtid: string) { + return this.documentDataService.remove(+dtid); + } +} diff --git a/backend/src/document_data/document_data.module.ts b/backend/src/document_data/document_data.module.ts new file mode 100644 index 00000000..d1d080ac --- /dev/null +++ b/backend/src/document_data/document_data.module.ts @@ -0,0 +1,28 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { DocumentTemplateModule } from 'src/document_template/document_template.module'; +import { ProvisionVariable } from 'src/provision/entities/provision_variable.entity'; +import { ProvisionModule } from 'src/provision/provision.module'; +import { Provision } from '../provision/entities/provision.entity'; +import { DocumentData } from './entities/document_data.entity'; +import { DocumentDataProvision } from './entities/document_data_provision.entity'; +import { DocumentDataVariable } from './entities/document_data_variable.entity'; +import { DocumentDataController } from './document_data.controller'; +import { DocumentDataService } from './document_data.service'; +import { DocumentDataLog } from 'src/document_data_log/entities/document_data_log.entity'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([DocumentData]), + TypeOrmModule.forFeature([DocumentDataProvision]), + TypeOrmModule.forFeature([ProvisionVariable]), + TypeOrmModule.forFeature([DocumentDataVariable]), + TypeOrmModule.forFeature([Provision]), + ProvisionModule, + DocumentTemplateModule, + ], + controllers: [DocumentDataController], + providers: [DocumentDataService], + exports: [DocumentDataService], +}) +export class DocumentDataModule {} diff --git a/backend/src/document_data/document_data.service.ts b/backend/src/document_data/document_data.service.ts new file mode 100644 index 00000000..23821cd0 --- /dev/null +++ b/backend/src/document_data/document_data.service.ts @@ -0,0 +1,392 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Provision } from 'src/provision/entities/provision.entity'; +import { ProvisionVariable } from 'src/provision/entities/provision_variable.entity'; +import { DataSource, In, Repository } from 'typeorm'; +import { CreateDocumentDataDto } from './dto/create-document_data.dto'; +import { DocumentData } from './entities/document_data.entity'; +import { DocumentDataProvision } from './entities/document_data_provision.entity'; +import { DocumentDataVariable } from './entities/document_data_variable.entity'; +import { DocumentDataView } from './entities/document_data_vw'; +import { ProvisionService } from 'src/provision/provision.service'; +import { DocumentTemplateService } from 'src/document_template/document_template.service'; +import { DocumentType } from 'src/document_type/entities/document_type.entity'; + +@Injectable() +export class DocumentDataService { + constructor( + @InjectRepository(DocumentData) + private documentDataRepository: Repository, + @InjectRepository(Provision) + private documentProvisionRepository: Repository, + @InjectRepository(DocumentDataProvision) + private documentDataProvisionRepository: Repository, + @InjectRepository(ProvisionVariable) + private documentProvisionVariableRepository: Repository, + @InjectRepository(DocumentDataVariable) + private documentDataVariableRepository: Repository, + private provisionService: ProvisionService, + private documentTemplateService: DocumentTemplateService, + private dataSource: DataSource + ) {} + + async createOrUpdate( + documentDataDto: CreateDocumentDataDto, + provisionArray: { provision_id: number; free_text: string }[], + variableArray: { variable_id: number; variable_value: string }[] + ): Promise { + const { dtid, document_type_id } = documentDataDto; + // const documentType: DocumentType = await this.documentTemplateService.getDocumentType(document_type_id); + const documentData: DocumentData = await this.documentDataRepository.findOne({ + where: { dtid: dtid, document_type: { id: document_type_id } }, + relations: [ + 'document_data_variables', + 'document_data_provisions', + 'document_data_variables.document_variable', + 'document_data_provisions.document_provision', + 'document_type', + ], + }); + + const documentProvisionIds = provisionArray.map(({ provision_id }) => provision_id); + const documentProvisions = await this.documentProvisionRepository.findBy({ + id: In(documentProvisionIds), + }); + const documentVariableIds = variableArray.map(({ variable_id }) => variable_id); + const documentVariables = await this.documentProvisionVariableRepository.findBy({ + id: In(documentVariableIds), + }); + + // if documentData for this dtid+template exists, update it + if (documentData) { + return await this.updateDocumentData( + documentDataDto, + documentData, + provisionArray, + variableArray, + documentProvisions, + documentVariables + ); + } + // else create new documentData + const documentTemplate = await this.documentTemplateService.findActiveByDocumentType( + documentDataDto.document_type_id + ); + documentDataDto['template_id'] = documentTemplate ? documentTemplate.id : null; + const newDocumentData: DocumentData = this.documentDataRepository.create(documentDataDto); + const updatedDocumentData = await this.documentDataRepository.save(newDocumentData); + + const documentDataProvisions = provisionArray.map(({ provision_id, free_text }) => { + const documentProvision = documentProvisions.find((provision) => provision.id === provision_id); + const documentDataProvision = new DocumentDataProvision(); + documentDataProvision.document_data = updatedDocumentData; + documentDataProvision.document_provision = documentProvision; + documentDataProvision.provision_free_text = documentProvision.free_text; // quick fix to not use the free_text from the document page + return documentDataProvision; + }); + const documentDataVariables = variableArray.map(({ variable_id, variable_value }) => { + const documentVariable = documentVariables.find((variable) => variable.id === variable_id); + const documentDataVariable = new DocumentDataVariable(); + documentDataVariable.document_data = updatedDocumentData; + documentDataVariable.document_variable = documentVariable; + documentDataVariable.data_variable_value = variable_value; + return documentDataVariable; + }); + if (documentData) { + await this.deleteDataVarsAndProvs(documentData, provisionArray, variableArray); + } + + await this.documentDataProvisionRepository.save(documentDataProvisions); + await this.documentDataVariableRepository.save(documentDataVariables); + + return updatedDocumentData; + } + + async updateDocumentData( + documentDataDto: CreateDocumentDataDto, + documentData: DocumentData, + provisionArray: { provision_id: number; free_text: string }[], + variableArray: { variable_id: number; variable_value: string }[], + documentProvisions: Provision[], + documentVariables: ProvisionVariable[] + ): Promise { + // Update DocumentData entity + documentData.template_id = documentDataDto.template_id; + documentData.status = documentDataDto.status; + documentData.update_userid = documentDataDto.create_userid; + + const updatedDocumentData = await this.documentDataRepository.save(documentData); + + // Update DocumentDataProvision entities + for (const provision of provisionArray) { + const documentDataProvision = documentData.document_data_provisions.find( + (p) => p.document_provision.id === provision.provision_id + ); + const documentProvision = documentProvisions.find((p) => p.id === provision.provision_id); + + if (documentDataProvision && documentDataProvision.provision_free_text != documentProvision.free_text) { + // Update an existing DocumentDataProvision entry + documentDataProvision.provision_free_text = documentProvision.free_text; + await this.documentDataProvisionRepository.save(documentDataProvision); + } else if (!documentDataProvision) { + // No data found for this specific provision so create a new entry in DocumentDataProvision + const documentProvisionToAdd = await this.documentProvisionRepository.findOneBy({ + id: provision.provision_id, + }); + const newDocumentDataProvision: DocumentDataProvision = this.documentDataProvisionRepository.create({ + document_provision: documentProvisionToAdd, + document_data: updatedDocumentData, + provision_free_text: documentProvisionToAdd.free_text, // quick fix + }); + await this.documentDataProvisionRepository.save(newDocumentDataProvision); + } + } + + // Update DocumentDataVariable entities + for (const variable of variableArray) { + const documentDataVariable = documentData.document_data_variables.find( + (v) => v.document_variable.id === variable.variable_id + ); + + if (documentDataVariable && documentDataVariable.data_variable_value != variable.variable_value) { + // Update an existing DocumentDataVariable entry + documentDataVariable.data_variable_value = variable.variable_value; + await this.documentDataVariableRepository.save(documentDataVariable); + } else if (!documentDataVariable) { + // No data found for this specific variable so create a new entry in DocumentDataVariable + const documentVariable = await this.documentProvisionVariableRepository.findOneBy({ + id: variable.variable_id, + }); + const newDocumentDataVariable: DocumentDataVariable = this.documentDataVariableRepository.create({ + document_variable: documentVariable, + document_data: updatedDocumentData, + data_variable_value: variable.variable_value, + }); + await this.documentDataVariableRepository.save(newDocumentDataVariable); + } + } + await this.deleteDataVarsAndProvs(documentData, provisionArray, variableArray); + + return updatedDocumentData; + } + + async deleteDataVarsAndProvs( + documentData: DocumentData, + provisionArray: { provision_id: number; free_text: string }[], + variableArray: { variable_id: number; variable_value: string }[] + ) { + // Delete data provisions that have been removed by the user + const oldProvisionIds = documentData + ? documentData.document_data_provisions.map((dataProvision) => dataProvision.document_provision.id) + : []; + const newProvisionIds = provisionArray.map(({ provision_id }) => provision_id); + const provisionsToDelete = oldProvisionIds.filter((item) => !newProvisionIds.includes(item)); + const documentDataProvisionsToDelete = documentData.document_data_provisions + .filter((dataProvision) => provisionsToDelete.includes(dataProvision.document_provision.id)) + .map((dataProvision) => dataProvision.id); + if (documentDataProvisionsToDelete.length > 0) { + await this.documentDataProvisionRepository.delete(documentDataProvisionsToDelete); + } + + // Delete data variables that have been removed by the user + const oldVariableIds = documentData + ? documentData.document_data_variables.map((dataVariable) => dataVariable.document_variable.id) + : []; + const newVariableIds = variableArray.map(({ variable_id }) => variable_id); + const variablesToDelete = oldVariableIds.filter((item) => !newVariableIds.includes(item)); + const documentDataVariablesToDelete = documentData.document_data_variables + .filter((dataVariable) => variablesToDelete.includes(dataVariable.document_variable.id)) + .map((dataVariable) => dataVariable.id); + if (documentDataVariablesToDelete.length > 0) { + await this.documentDataVariableRepository.delete(documentDataVariablesToDelete); + } + return null; + } + + // Used by the search page. + // Variant data is persisted so only return the active variant foreach dtid. + async findAll(): Promise { + return await this.documentDataRepository.find({ + where: { + active: true, + }, + relations: ['document_type'], + }); + } + + async findByDocumentDataId(documentDataId: number): Promise<{ + documentData: DocumentData; + provisionIds: number[]; + variableIds: number[]; + }> { + try { + const documentData = await this.documentDataRepository.findOne({ + where: { id: documentDataId }, + join: { + alias: 'document_data', + leftJoinAndSelect: { + document_data_provisions: 'document_data.document_data_provisions', + provision: 'document_data_provisions.provision', + document_data_variables: 'document_data.document_data_variables', + document_variable: 'document_data_variables.document_variable', + }, + }, + }); + const existingDataProvisions = documentData.document_data_provisions; + const provisionIds = existingDataProvisions.map((dataProvision) => dataProvision.document_provision.id); + const existingDataVariables = documentData.document_data_variables; + const variableIds = existingDataVariables.map((dataVariable) => dataVariable.document_variable.id); + return { documentData, provisionIds, variableIds }; + } catch (err) { + console.log('Error in findByDocumentDataId'); + console.log(err); + return null; + } + } + + async findDocumentDataByDocTypeIdAndDtid( + document_type_id: number, + dtid: number + ): Promise<{ + documentData: DocumentData; + provisionIds: number[]; + variableIds: number[]; + }> { + try { + const documentData = await this.documentDataRepository.find({ + where: { dtid: dtid }, + join: { + alias: 'document_data', + leftJoinAndSelect: { + document_data_provisions: 'document_data.document_data_provisions', + document_provision: 'document_data_provisions.document_provision', + document_data_variables: 'document_data.document_data_variables', + document_variable: 'document_data_variables.document_variable', + }, + }, + }); + const filteredDocumentData = documentData.find((d) => d.document_type.id === document_type_id); + console.log(filteredDocumentData); + const provisionIds = + filteredDocumentData && filteredDocumentData.document_data_provisions + ? filteredDocumentData.document_data_provisions.map((dataProvision) => dataProvision.document_provision.id) + : []; + const variableIds = + filteredDocumentData && filteredDocumentData.document_data_variables + ? filteredDocumentData.document_data_variables.map((dataVariable) => dataVariable.document_variable.id) + : []; + return { documentData: filteredDocumentData, provisionIds, variableIds }; + } catch (err) { + console.log('Error in findActiveByDtid'); + console.log(err); + return null; + } + } + + async findViewByDocumentDataId(documentDataId: number): Promise { + return this.dataSource.manager.findOneBy(DocumentDataView, { + DocumentDataId: documentDataId, + }); + } + + async getVariablesByDtidAndDocType(dtid: number, document_type_id: number) { + try { + const documentData: DocumentData = await this.documentDataRepository.findOne({ + where: { dtid: dtid, document_type: { id: document_type_id } }, + join: { + alias: 'document_data', + leftJoinAndSelect: { + document_data_variables: 'document_data.document_data_variables', + document_variable: 'document_data_variables.document_variable', + }, + }, + }); + // if the documentData doesn't exist yet, return null. This null value is caught elsewhere. + if (!documentData) { + return null; + } + // saved variables attached to the documentData entry + const existingDataVariables: DocumentDataVariable[] = documentData.document_data_variables; + // all variables associated with the variant + const variables: ProvisionVariable[] = await this.provisionService.getVariablesByDocumentTypeId(document_type_id); + // inserting the existing variable_values to the set of all variables + for (const variable of variables) { + const existingDataVariable = existingDataVariables.find( + (dataVariable) => dataVariable.document_variable.id === variable.id + ); + if (existingDataVariable) { + variable.variable_value = existingDataVariable.data_variable_value; + } + } + const variableIds = existingDataVariables.map((dataVariable) => dataVariable.document_variable.id); + return { variables, variableIds }; + } catch (err) { + console.log('Error in getVariablesByDtidAndDocType'); + console.log(err); + return null; + } + } + + async getProvisionsByDocTypeIdAndDtid(document_type_id: number, dtid: number) { + try { + const documentData = await this.documentDataRepository + .createQueryBuilder('document_data') + .leftJoinAndSelect('document_data.document_data_provisions', 'document_data_provisions') + .leftJoinAndSelect('document_data_provisions.document_provision', 'provision') + .where('document_data.dtid = :dtid', { dtid }) + .andWhere('document_data."documentTypeId" = :document_type_id', { document_type_id }) + .getOne(); + console.log(documentData); + + // if the documentData doesn't exist yet, return null. This null value is caught elsewhere. + if (!documentData) { + return null; + } + + // saved provisions attached to the dtid + const existingDataProvisions: DocumentDataProvision[] = []; + existingDataProvisions.push(...documentData.document_data_provisions); + // all provisions + const provisions: Provision[] = await this.provisionService.getAllProvisionsByDocTypeId(document_type_id); + const provisionIds = existingDataProvisions.map((dataProvision) => dataProvision.document_provision.id); + return { provisions, provisionIds }; + } catch (err) { + console.log('Error in getProvisionsByDocTypeIdAndDtid'); + console.log(err); + return null; + } + } + + async getEnabledProvisionsByDocTypeIdAndDtid(document_type_id: number, dtid: number) { + try { + const documentData: DocumentData = await this.documentDataRepository.findOne({ + where: { dtid: dtid, document_type: { id: document_type_id } }, + join: { + alias: 'document_data', + leftJoinAndSelect: { + document_data_provisions: 'document_data.document_data_provisions', + provision: 'document_data_provisions.provision', + }, + }, + }); + const provisionIds = + documentData && documentData.document_data_provisions + ? documentData.document_data_provisions.map((dataProvision) => dataProvision.document_provision.id) + : []; + return provisionIds; + } catch (err) { + console.log('Error in getEnabledProvisionsByDocTypeIdAndDtid'); + console.log(err); + return null; + } + } + + async remove(dtid: number): Promise<{ deleted: boolean; message?: string }> { + try { + await this.documentDataRepository.delete({ dtid: dtid }); + return { deleted: true }; + } catch (err) { + return { deleted: false, message: err.message }; + } + } +} diff --git a/backend/src/document_data/dto/create-document_data.dto.ts b/backend/src/document_data/dto/create-document_data.dto.ts new file mode 100644 index 00000000..e2473dee --- /dev/null +++ b/backend/src/document_data/dto/create-document_data.dto.ts @@ -0,0 +1,10 @@ +import { PickType } from '@nestjs/swagger'; +import { DocumentDataDto } from './document_data.dto'; + +export class CreateDocumentDataDto extends PickType(DocumentDataDto, [ + 'dtid', + 'document_type_id', + 'template_id', + 'status', + 'create_userid', +] as const) {} diff --git a/backend/src/nfr_data/dto/nfr_data.dto.ts b/backend/src/document_data/dto/document_data.dto.ts similarity index 71% rename from backend/src/nfr_data/dto/nfr_data.dto.ts rename to backend/src/document_data/dto/document_data.dto.ts index 242093aa..ad586bd1 100644 --- a/backend/src/nfr_data/dto/nfr_data.dto.ts +++ b/backend/src/document_data/dto/document_data.dto.ts @@ -1,6 +1,6 @@ -export class NFRDataDto { +export class DocumentDataDto { dtid?: number; - variant_name?: string; + document_type_id?: number; template_id?: number; status?: string; enabled_provisions?: number[]; diff --git a/backend/src/document_data/dto/update-document_data.dto.ts b/backend/src/document_data/dto/update-document_data.dto.ts new file mode 100644 index 00000000..90744506 --- /dev/null +++ b/backend/src/document_data/dto/update-document_data.dto.ts @@ -0,0 +1,11 @@ +import { PickType } from '@nestjs/swagger'; +import { DocumentDataDto } from './document_data.dto'; + +export class UpdateDocumentDataDto extends PickType(DocumentDataDto, [ + 'dtid', + 'document_type_id', + 'template_id', + 'status', + 'enabled_provisions', + 'update_userid', +] as const) {} diff --git a/backend/src/document_data/entities/document_data.entity.ts b/backend/src/document_data/entities/document_data.entity.ts new file mode 100644 index 00000000..abfdad47 --- /dev/null +++ b/backend/src/document_data/entities/document_data.entity.ts @@ -0,0 +1,61 @@ +import { + Column, + CreateDateColumn, + Entity, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { DocumentDataProvision } from './document_data_provision.entity'; +import { DocumentDataVariable } from './document_data_variable.entity'; +import { DocumentType } from 'src/document_type/entities/document_type.entity'; + +@Entity() +export class DocumentData { + @PrimaryGeneratedColumn() + id: number; + @Column({ nullable: true }) + dtid: number; + @Column({ nullable: true }) + template_id: number; + @Column({ nullable: true }) + status: string; + @Column({ nullable: true }) + active: boolean; + @Column({ nullable: true }) + create_userid: string; + @Column({ nullable: true }) + update_userid: string; + @CreateDateColumn() + create_timestamp: Date; + @UpdateDateColumn() + update_timestamp: Date; + @OneToMany(() => DocumentDataProvision, (documentDataProvision) => documentDataProvision.document_data, { + nullable: true, + cascade: true, + }) + document_data_provisions: DocumentDataProvision[]; + @OneToMany(() => DocumentDataVariable, (documentDataVariable) => documentDataVariable.document_data, { + nullable: true, + cascade: true, + }) + document_data_variables: DocumentDataVariable[]; + @ManyToOne(() => DocumentType, (document_type) => document_type.document_data, {}) + document_type: DocumentType; + + public get getDocumentDataProvisions(): DocumentDataProvision[] { + return this.document_data_provisions; + } + public get getDocumentDataVariables(): DocumentDataVariable[] { + return this.document_data_variables; + } + + constructor(dtid?: number, template_id?: number, status?: string, create_userid?: string, update_userid?: string) { + this.dtid = dtid || null; + this.template_id = template_id || null; + this.status = status || ''; + this.create_userid = create_userid || ''; + this.update_userid = update_userid || ''; + } +} diff --git a/backend/src/document_data/entities/document_data_provision.entity.ts b/backend/src/document_data/entities/document_data_provision.entity.ts new file mode 100644 index 00000000..0a6ae7d8 --- /dev/null +++ b/backend/src/document_data/entities/document_data_provision.entity.ts @@ -0,0 +1,23 @@ +import { Provision } from 'src/provision/entities/provision.entity'; +import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; +import { DocumentData } from './document_data.entity'; + +@Entity() +export class DocumentDataProvision { + @PrimaryGeneratedColumn() + id: number; + @ManyToOne(() => Provision, (provision) => provision.document_data_provisions, { + onDelete: 'CASCADE', + }) + document_provision: Provision; + @ManyToOne(() => DocumentData, (document_data) => document_data.document_data_provisions, { + onDelete: 'CASCADE', + }) + document_data: DocumentData; + @Column({ nullable: true }) + provision_free_text: string; + + constructor(provision_free_text?: string) { + this.provision_free_text = provision_free_text || ''; + } +} diff --git a/backend/src/document_data/entities/document_data_variable.entity.ts b/backend/src/document_data/entities/document_data_variable.entity.ts new file mode 100644 index 00000000..a0d13b42 --- /dev/null +++ b/backend/src/document_data/entities/document_data_variable.entity.ts @@ -0,0 +1,23 @@ +import { ProvisionVariable } from 'src/provision/entities/provision_variable.entity'; +import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; +import { DocumentData } from './document_data.entity'; + +@Entity() +export class DocumentDataVariable { + @PrimaryGeneratedColumn() + id: number; + @ManyToOne(() => ProvisionVariable, (document_variable) => document_variable.document_data_variables, { + onDelete: 'CASCADE', + }) + document_variable: ProvisionVariable; + @ManyToOne(() => DocumentData, (document_data) => document_data.document_data_variables, { + onDelete: 'CASCADE', + }) + document_data: DocumentData; + @Column({ nullable: true }) + data_variable_value: string; + + constructor(data_variable_value?: string) { + this.data_variable_value = data_variable_value || ''; + } +} diff --git a/backend/src/document_data/entities/document_data_vw.ts b/backend/src/document_data/entities/document_data_vw.ts new file mode 100644 index 00000000..5041b4b6 --- /dev/null +++ b/backend/src/document_data/entities/document_data_vw.ts @@ -0,0 +1,223 @@ +import { DataSource, ViewColumn, ViewEntity } from 'typeorm'; +import { DocumentData } from './document_data.entity'; + +// very specific to old NFR... +// need to review how report generation relies on this +@ViewEntity({ + expression: (dataSource: DataSource) => + dataSource + .createQueryBuilder() + .select('document_data.id', 'DocumentDataId') + .addSelect('document_data.dtid', 'DTID') + .addSelect('document_data.db_address_regional_office', 'DB_Address_Regional_Office') + .addSelect('document_data.var_telephone_number', 'VAR_Telephone_Number') + .addSelect('document_data.var_facsimile_number', 'VAR_Facsimile_Number') + .addSelect('document_data.db_name_bcal_contact', 'DB_Name_BCAL_Contact') + .addSelect('document_data.db_file_number', 'DB_File_Number') + .addSelect('document_data.var_client_file_no', 'VAR_Client_File_No') + .addSelect('document_data.var_date_of_notice', 'VAR_Date_Of_Notice') + .addSelect('document_data.db_address_mailing_tenant', 'DB_Address_Mailing_Tenant') + .addSelect('document_data.var_attention_line', 'VAR_Attention_Line') + .addSelect('document_data.var_salutation', 'VAR_Salutation') + .addSelect('document_data.db_tenure_type', 'DB_Tenure_Type') + .addSelect('document_data.var_purpose_generic', 'VAR_Purpose_Generic') + .addSelect('document_data.db_legal_description', 'DB_Legal_Description') + .addSelect('document_data.show_section_five_1', 'showSectionFive_1') + .addSelect('document_data.section_five_1_text', 'SectionFive_1_Text') + .addSelect('document_data.insert_space', 'Insert_Space') + .addSelect('document_data.var_replacement_tenure_type', 'VAR_Replacement_Tenure_Type') + .addSelect('document_data.show_section_five_2', 'showSectionFive_2') + .addSelect('document_data.section_five_2_text', 'SectionFive_2_Text') + .addSelect('document_data.var_why_land_differs', 'VAR_Why_Land_Differs') + .addSelect('document_data.show_section_five_3', 'showSectionFive_3') + .addSelect('document_data.var_sect5_free_field', 'VAR_Sect5_Free_Field') + .addSelect('document_data.var_deadline_completion_requirements', 'VAR_Deadline_Completion_Requirements') + .addSelect('document_data.var_number_of_copies', 'VAR_Number_Of_Copies') + .addSelect('document_data.db_fee_payable_type', 'DB_Fee_Payable_Type') + .addSelect('document_data.db_fee_payable_amount_gst', 'DB_Fee_Payable_Amount_GST') + .addSelect('document_data.db_fee_payable_amount', 'DB_Fee_Payable_Amount') + .addSelect('document_data.db_fp_asterisk', 'DB_FP_Asterisk') + .addSelect('document_data.var_fee_occupational_rental_amount', 'VAR_Fee_Occupational_Rental_Amount') + .addSelect('document_data.var_fee_application_amount', 'VAR_Fee_Application_Amount') + .addSelect('document_data.var_fee_other_credit_amount', 'VAR_Fee_Other_Credit_Amount') + .addSelect('document_data.db_total_gst_amount', 'DB_Total_GST_Amount') + .addSelect('document_data.db_total_monies_payable', 'DB_Total_Monies_Payable') + .addSelect('document_data.db_address_line_regional_office', 'DB_Address_Line_Regional_Office') + .addSelect('document_data.var_interim_tenure_type', 'VAR_Interim_Tenure_Type') + .addSelect('document_data.show_section_fifteen_1', 'showSectionFifteen_1') + .addSelect('document_data.section_fifteen_1_text', 'SectionFifteen_1_Text') + .addSelect('document_data.var_occ_rent_details', 'VAR_Occ_Rent_Details') + .addSelect('document_data.show_section_twenty_1', 'showSectionTwenty_1') + .addSelect('document_data.section_twenty_1_text', 'SectionTwenty_1_Text') + .addSelect('document_data.show_section_twenty_2', 'showSectionTwenty_2') + .addSelect('document_data.section_twenty_2_text', 'SectionTwenty_2_Text') + .addSelect('document_data.show_section_twenty_3', 'showSectionTwenty_3') + .addSelect('document_data.section_twenty_3_text', 'SectionTwenty_3_Text') + .addSelect('document_data.show_section_twenty_4', 'showSectionTwenty_4') + .addSelect('document_data.section_twenty_4_text', 'SectionTwenty_4_Text') + .addSelect('document_data.show_section_twenty_5', 'showSectionTwenty_5') + .addSelect('document_data.section_twenty_5_text', 'SectionTwenty_5_Text') + .addSelect('document_data.show_section_twentyfive_1', 'showSectionTwentyFive_1') + .addSelect('document_data.section_twentyfive_1_text', 'SectionTwentyFive_1_Text') + .addSelect('document_data.show_section_twentyfive_2', 'showSectionTwentyFive_2') + .addSelect('document_data.section_twentyfive_2_text', 'SectionTwentyFive_2_Text') + .addSelect('document_data.show_section_twentyfive_3', 'showSectionTwentyFive_3') + .addSelect('document_data.section_twentyfive_3_text', 'SectionTwentyFive_3_Text') + .addSelect('document_data.show_section_twentyfive_4', 'showSectionTwentyFive_4') + .addSelect('document_data.section_twentyfive_4_text', 'SectionTwentyFive_4_Text') + .addSelect('document_data.show_section_twentyseven_1', 'showSectionTwentySeven_1') + .addSelect('document_data.section_twentyseven_1_text', 'SectionTwentySeven_1_Text') + .addSelect('document_data.show_section_twentyseven_2', 'showSectionTwentySeven_2') + .addSelect('document_data.section_twentyseven_2_text', 'SectionTwentySeven_2_Text') + .addSelect('document_data.show_section_twentyseven_3', 'showSectionTwentySeven_3') + .addSelect('document_data.section_twentyseven_3_text', 'SectionTwentySeven_3_Text') + .addSelect('document_data.show_section_twentyseven_4', 'showSectionTwentySeven_4') + .addSelect('document_data.section_twentyseven_4_text', 'SectionTwentySeven_4_Text') + .addSelect('document_data.show_section_twentyseven_5', 'showSectionTwentySeven_5') + .addSelect('document_data.section_twentyseven_5_text', 'SectionTwentySeven_5_Text') + .addSelect('document_data.show_section_twentyseven_6', 'showSectionTwentySeven_6') + .addSelect('document_data.section_twentyseven_6_text', 'SectionTwentySeven_6_Text') + .from(DocumentData, 'document_data'), +}) +export class DocumentDataView { + @ViewColumn() + DocumentDataId: number; + @ViewColumn() + DTID: number; + @ViewColumn() + DB_Address_Regional_Office: string; + @ViewColumn() + VAR_Telephone_Number: string; + @ViewColumn() + VAR_Facsimile_Number: string; + @ViewColumn() + DB_Name_BCAL_Contact: string; + @ViewColumn() + DB_File_Number: string; + @ViewColumn() + VAR_Client_File_No: string; + @ViewColumn() + VAR_Date_Of_Notice: string; + @ViewColumn() + DB_Address_Mailing_Tenant: string; + @ViewColumn() + VAR_Attention_Line: string; + @ViewColumn() + VAR_Salutation: string; + @ViewColumn() + DB_Tenure_Type: string; + @ViewColumn() + VAR_Purpose_Generic: string; + @ViewColumn() + DB_Legal_Description: string; + @ViewColumn() + showSectionFive_1: number; + @ViewColumn() + SectionFive_1_Text: string; + @ViewColumn() + Insert_Space: string; + @ViewColumn() + VAR_Replacement_Tenure_Type: string; + @ViewColumn() + showSectionFive_2: number; + @ViewColumn() + SectionFive_2_Text: string; + @ViewColumn() + VAR_Why_Land_Differs: string; + @ViewColumn() + showSectionFive_3: string; + @ViewColumn() + VAR_Sect5_Free_Field: string; + @ViewColumn() + VAR_Deadline_Completion_Requirements: string; + @ViewColumn() + VAR_Number_Of_Copies: string; + @ViewColumn() + DB_Fee_Payable_Type: string; + @ViewColumn() + DB_Fee_Payable_Amount_GST: string; + @ViewColumn() + DB_Fee_Payable_Amount: string; + @ViewColumn() + DB_FP_Asterisk: string; + @ViewColumn() + VAR_Fee_Occupational_Rental_Amount: string; + @ViewColumn() + VAR_Fee_Application_Amount: string; + @ViewColumn() + VAR_Fee_Other_Credit_Amount: string; + @ViewColumn() + DB_Total_GST_Amount: string; + @ViewColumn() + DB_Total_Monies_Payable: string; + @ViewColumn() + DB_Address_Line_Regional_Office: string; + @ViewColumn() + VAR_Interim_Tenure_Type: string; + @ViewColumn() + showSectionFifteen_1: number; + @ViewColumn() + SectionFifteen_1_Text: string; + @ViewColumn() + VAR_Occ_Rent_Details: string; + @ViewColumn() + showSectionTwenty_1: number; + @ViewColumn() + SectionTwenty_1_Text: string; + @ViewColumn() + showSectionTwenty_2: number; + @ViewColumn() + SectionTwenty_2_Text: string; + @ViewColumn() + showSectionTwenty_3: number; + @ViewColumn() + SectionTwenty_3_Text: string; + @ViewColumn() + showSectionTwenty_4: number; + @ViewColumn() + SectionTwenty_4_Text: string; + @ViewColumn() + showSectionTwenty_5: number; + @ViewColumn() + SectionTwenty_5_Text: string; + @ViewColumn() + showSectionTwentyFive_1: number; + @ViewColumn() + SectionTwentyFive_1_Text: string; + @ViewColumn() + showSectionTwentyFive_2: number; + @ViewColumn() + SectionTwentyFive_2_Text: string; + @ViewColumn() + showSectionTwentyFive_3: number; + @ViewColumn() + SectionTwentyFive_3_Text: string; + @ViewColumn() + showSectionTwentyFive_4: number; + @ViewColumn() + SectionTwentyFive_4_Text: string; + @ViewColumn() + showSectionTwentySeven_1: number; + @ViewColumn() + SectionTwentySeven_1_Text: string; + @ViewColumn() + showSectionTwentySeven_2: number; + @ViewColumn() + SectionTwentySeven_2_Text: string; + @ViewColumn() + showSectionTwentySeven_3: number; + @ViewColumn() + SectionTwentySeven_3_Text: string; + @ViewColumn() + showSectionTwentySeven_4: number; + @ViewColumn() + SectionTwentySeven_4_Text: string; + @ViewColumn() + showSectionTwentySeven_5: number; + @ViewColumn() + SectionTwentySeven_5_Text: string; + @ViewColumn() + showSectionTwentySeven_6: number; + @ViewColumn() + SectionTwentySeven_6_Text: string; +} diff --git a/backend/src/document_data_log/document_data_log.module.ts b/backend/src/document_data_log/document_data_log.module.ts new file mode 100644 index 00000000..8a75a250 --- /dev/null +++ b/backend/src/document_data_log/document_data_log.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { DocumentDataLogService } from './document_data_log.service'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { DocumentDataLog } from './entities/document_data_log.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([DocumentDataLog])], + providers: [DocumentDataLogService], + exports: [DocumentDataLogService, TypeOrmModule.forFeature([DocumentDataLog])], +}) +export class DocumentDataLogModule {} diff --git a/backend/src/document_data_log/document_data_log.service.ts b/backend/src/document_data_log/document_data_log.service.ts new file mode 100644 index 00000000..1ee4f1df --- /dev/null +++ b/backend/src/document_data_log/document_data_log.service.ts @@ -0,0 +1,51 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { DocumentDataLog } from './entities/document_data_log.entity'; +import { CreateDocumentDataLogDto } from './dto/create-document_data_log.dto'; +import { Repository } from 'typeorm'; + +@Injectable() +export class DocumentDataLogService { + constructor( + @InjectRepository(DocumentDataLog) + private documentDataLogRepository: Repository + ) {} + + async create(documentDataLog: CreateDocumentDataLogDto): Promise { + const newItem = new DocumentDataLog(); + newItem.document_template_id = documentDataLog.document_template_id; + newItem.dtid = documentDataLog.dtid; + newItem.request_app_user = documentDataLog.request_app_user; + newItem.request_json = documentDataLog.request_json; + newItem.create_userid = documentDataLog.request_app_user; // same as request_app_user + const newPRL = this.documentDataLogRepository.create(newItem); + return this.documentDataLogRepository.save(newPRL); + } + + async findAll(): Promise { + return this.documentDataLogRepository.find(); + } + + async findByDtid(dtid: number): Promise { + return this.documentDataLogRepository.find({ + where: { + document_template_id: dtid, + }, + }); + } + + async findNextVersion(dtid: number, document_type_id: number): Promise { + const requestLogs = await this.documentDataLogRepository.findAndCount({ + where: { + dtid: dtid, + document_type_id: document_type_id, + }, + }); + let version = (requestLogs[1] + 1).toString(); + // prepend zeroes to the version before returning + while (version.length < 4) { + version = '0' + version; + } + return version; + } +} diff --git a/backend/src/document_data_log/dto/create-document_data_log.dto.ts b/backend/src/document_data_log/dto/create-document_data_log.dto.ts new file mode 100644 index 00000000..dbc58bbc --- /dev/null +++ b/backend/src/document_data_log/dto/create-document_data_log.dto.ts @@ -0,0 +1,11 @@ +import { PickType } from '@nestjs/swagger'; +import { DocumentDataLogDto } from './document_data_log.dto'; + +export class CreateDocumentDataLogDto extends PickType(DocumentDataLogDto, [ + 'dtid', + 'document_type_id', + 'document_template_id', + 'request_app_user', + 'request_json', + 'create_userid', +] as const) {} diff --git a/backend/src/nfr_data_log/dto/nfr_data_log.dto.ts b/backend/src/document_data_log/dto/document_data_log.dto.ts similarity index 71% rename from backend/src/nfr_data_log/dto/nfr_data_log.dto.ts rename to backend/src/document_data_log/dto/document_data_log.dto.ts index 44e62622..a7dc8de7 100644 --- a/backend/src/nfr_data_log/dto/nfr_data_log.dto.ts +++ b/backend/src/document_data_log/dto/document_data_log.dto.ts @@ -1,7 +1,7 @@ -export class NFRDataLogDto { - document_template_id: number; - nfr_data_id: number; +export class DocumentDataLogDto { dtid: number; + document_type_id: number; + document_template_id: number; request_app_user: string; request_json: string; create_userid: string; diff --git a/backend/src/document_data_log/dto/update-document_data_log.dto.ts b/backend/src/document_data_log/dto/update-document_data_log.dto.ts new file mode 100644 index 00000000..9521ce57 --- /dev/null +++ b/backend/src/document_data_log/dto/update-document_data_log.dto.ts @@ -0,0 +1,11 @@ +import { PickType } from '@nestjs/swagger'; +import { DocumentDataLogDto } from './document_data_log.dto'; + +export class UpdateDocumentDataLogDto extends PickType(DocumentDataLogDto, [ + 'dtid', + 'document_type_id', + 'document_template_id', + 'request_app_user', + 'request_json', + 'update_userid', +] as const) {} diff --git a/backend/src/nfr_data_log/entities/nfr_data_log.entity.ts b/backend/src/document_data_log/entities/document_data_log.entity.ts similarity index 88% rename from backend/src/nfr_data_log/entities/nfr_data_log.entity.ts rename to backend/src/document_data_log/entities/document_data_log.entity.ts index 3c1d24bd..d8f1f19b 100644 --- a/backend/src/nfr_data_log/entities/nfr_data_log.entity.ts +++ b/backend/src/document_data_log/entities/document_data_log.entity.ts @@ -1,15 +1,15 @@ import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity() -export class NFRDataLog { +export class DocumentDataLog { @PrimaryGeneratedColumn() id: number; @Column({ nullable: true }) - document_template_id: number; + dtid: number; @Column({ nullable: true }) - nfr_data_id: number; + document_type_id: number; @Column({ nullable: true }) - dtid: number; + document_template_id: number; @Column({ nullable: true }) request_app_user: string; @Column({ nullable: true }) @@ -24,17 +24,17 @@ export class NFRDataLog { update_timestamp: Date; constructor( - document_template_id?: number, - nfr_data_id?: number, dtid?: number, + document_type_id?: number, + document_template_id?: number, request_app_user?: string, request_json?: string, create_userid?: string, update_userid?: string ) { - this.document_template_id = document_template_id || null; - this.nfr_data_id = nfr_data_id || null; this.dtid = dtid || null; + this.document_type_id = document_type_id || null; + this.document_template_id = document_template_id || null; this.request_app_user = request_app_user || ''; this.request_json = request_json || ''; this.create_userid = create_userid || ''; diff --git a/backend/src/document_template/document_template.controller.ts b/backend/src/document_template/document_template.controller.ts index 2f4701da..daa1ca7b 100644 --- a/backend/src/document_template/document_template.controller.ts +++ b/backend/src/document_template/document_template.controller.ts @@ -19,48 +19,46 @@ export class DocumentTemplateController { file: Express.Multer.File, @Body() params: CreateDocumentTemplateDto ): Promise { - console.log('Uploading new template!!!'); - // - const params2 = { - document_type: params.document_type, + const newDocumentParams: CreateDocumentTemplateDto = { + document_type_id: params.document_type_id, template_author: params.template_author, mime_type: params.mime_type, file_name: params.file_name, comments: params.comments, create_userid: params.create_userid, }; - const newTemplate = await this.templateService.create(params2, file); + const newTemplate: DocumentTemplate = await this.templateService.create(newDocumentParams, file); return await this.templateService.checkForActiveTemplates({ id: newTemplate.id, update_userid: newTemplate.update_userid, - document_type: newTemplate.document_type, + document_type_id: params.document_type_id, }); } @Post('activate-template') - activateTemplate(@Body() data: { id: number; update_userid: string; document_type: string }): Promise { + activateTemplate(@Body() data: { id: number; update_userid: string; document_type_id: number }): Promise { return this.templateService.activateTemplate(data); } - @Post('update') - update(@Body() data: UpdateDocumentTemplateDto): Promise { - return this.templateService.update(data); - } + // @Post('update') + // update(@Body() data: UpdateDocumentTemplateDto): Promise { + // return this.templateService.update(data); + // } @Get('remove/:document_type/:id') - remove(@Param('document_type') document_type: string, @Param('id') id: number): Promise<{ id: number }> { - return this.templateService.remove(document_type, id); + remove(@Param('document_type') document_type_id: number, @Param('id') id: number): Promise<{ id: number }> { + return this.templateService.remove(document_type_id, id); } - @Get(':document_type') - async findAll(@Param('document_type') document_type: string): Promise { - let documents: DocumentTemplate[] = await this.templateService.findAll(document_type); + @Get(':document_type_id') + async findAll(@Param('document_type_id') document_type_id: number): Promise { + let documents: DocumentTemplate[] = await this.templateService.findAll(document_type_id); return documents.map(({ the_file, ...rest }) => rest); } @Get('get-active-report/:document_type') - findActiveByDocumentType(@Param('document_type') document_type: string): Promise { - return this.templateService.findActiveByDocumentType(document_type); + findActiveByDocumentType(@Param('document_type') document_type_id: number): Promise { + return this.templateService.findActiveByDocumentType(document_type_id); } @Get('find-one/:id') @@ -68,7 +66,7 @@ export class DocumentTemplateController { return this.templateService.findOne(id); } - @Post('nfr-template-info') + @Post('document-template-info') getTemplatesInfoByIds(@Body() ids: number[]): Promise { return this.templateService.getTemplatesInfoByIds(ids); } diff --git a/backend/src/document_template/document_template.module.ts b/backend/src/document_template/document_template.module.ts index 7a08a7d8..0db22eba 100644 --- a/backend/src/document_template/document_template.module.ts +++ b/backend/src/document_template/document_template.module.ts @@ -3,10 +3,17 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { DocumentTemplateController } from './document_template.controller'; import { DocumentTemplateService } from './document_template.service'; import { DocumentTemplate } from './entities/document_template.entity'; -import { NFRData } from 'src/nfr_data/entities/nfr_data.entity'; +import { DocumentData } from 'src/document_data/entities/document_data.entity'; +import { DocumentTypeModule } from 'src/document_type/document_type.module'; +import { DocumentType } from 'src/document_type/entities/document_type.entity'; @Module({ - imports: [TypeOrmModule.forFeature([DocumentTemplate]), TypeOrmModule.forFeature([NFRData])], + imports: [ + TypeOrmModule.forFeature([DocumentTemplate]), + TypeOrmModule.forFeature([DocumentData]), + TypeOrmModule.forFeature([DocumentType]), + DocumentTypeModule, + ], controllers: [DocumentTemplateController], providers: [DocumentTemplateService], exports: [DocumentTemplateService], diff --git a/backend/src/document_template/document_template.service.ts b/backend/src/document_template/document_template.service.ts index b0425cca..15c035f3 100644 --- a/backend/src/document_template/document_template.service.ts +++ b/backend/src/document_template/document_template.service.ts @@ -4,21 +4,25 @@ import { In, Repository } from 'typeorm'; import { CreateDocumentTemplateDto } from './dto/create-document_template.dto'; import { UpdateDocumentTemplateDto } from './dto/update-document_template.dto'; import { DocumentTemplate } from './entities/document_template.entity'; -import { NFRData } from 'src/nfr_data/entities/nfr_data.entity'; +import { DocumentType } from '../document_type/entities/document_type.entity'; +import { DocumentData } from 'src/document_data/entities/document_data.entity'; +import { DocumentTypeService } from 'src/document_type/document_type.service'; @Injectable() export class DocumentTemplateService { constructor( + private documentTypeService: DocumentTypeService, @InjectRepository(DocumentTemplate) private documentTemplateRepository: Repository, - @InjectRepository(NFRData) - private nfrDataRepository: Repository + @InjectRepository(DocumentData) + private documentDataRepository: Repository ) {} async create(documentTemplate: CreateDocumentTemplateDto, file: any): Promise { const base64File = Buffer.from(file.buffer).toString('base64'); const newItem = new DocumentTemplate(); - newItem.document_type = documentTemplate.document_type; + const docType: DocumentType = await this.documentTypeService.findById(documentTemplate.document_type_id); + newItem.document_type = docType; newItem.template_author = documentTemplate.template_author; newItem.mime_type = documentTemplate.mime_type; newItem.file_name = documentTemplate.file_name; @@ -31,40 +35,42 @@ export class DocumentTemplateService { } async getTemplateVersion(documentTemplate: CreateDocumentTemplateDto): Promise { - const existingReports = await this.documentTemplateRepository.findBy({ - document_type: documentTemplate.document_type, - }); - if (!existingReports) { + const existingTemplates = await this.documentTemplateRepository + .createQueryBuilder('documentTemplate') + .leftJoin('documentTemplate.document_type', 'documentType') + .where('documentType.id = :documentTypeId', { documentTypeId: documentTemplate.document_type_id }) + .getMany(); + + if (!existingTemplates || existingTemplates.length === 0) { return 0; } else { - let currentVersion = 0; - for (let item of existingReports) { - if (item.template_version > currentVersion) { - currentVersion = item.template_version; - } - } + let currentVersion = existingTemplates.reduce((max, item) => Math.max(max, item.template_version), 0); return currentVersion + 1; } } - async activateTemplate(data: { id: number; update_userid: string; document_type: string }): Promise { - let allTemplates = await this.documentTemplateRepository.findBy({ - document_type: data.document_type.toUpperCase(), - }); + async activateTemplate(data: { id: number; update_userid: string; document_type_id: number }): Promise { + const allTemplates = await this.documentTemplateRepository + .createQueryBuilder('documentTemplate') + .leftJoin('documentTemplate.document_type', 'documentType') + .where('documentType.id = :documentTypeId', { documentTypeId: data.document_type_id }) + .getMany(); for (let entry of allTemplates) { if (entry.active_flag == true) { await this.documentTemplateRepository.update({ id: entry.id }, { active_flag: false }); } } const activatedTemplate = await this.documentTemplateRepository.update({ id: data.id }, { active_flag: true }); - await this.updateNfrTemplates(data.document_type.toUpperCase()); + await this.updateTemplates(data.document_type_id); return activatedTemplate; } - async checkForActiveTemplates(data: { id: number; update_userid: string; document_type: string }): Promise { - let allTemplates = await this.documentTemplateRepository.findBy({ - document_type: data.document_type, - }); + async checkForActiveTemplates(data: { id: number; update_userid: string; document_type_id: number }): Promise { + const allTemplates = await this.documentTemplateRepository + .createQueryBuilder('documentTemplate') + .leftJoin('documentTemplate.document_type', 'documentType') + .where('documentType.id = :documentTypeId', { documentTypeId: data.document_type_id }) + .getMany(); for (let entry of allTemplates) { if (entry.active_flag == true) { return true; @@ -95,13 +101,12 @@ export class DocumentTemplateService { return result; } - async remove(document_type: string, id: number): Promise<{ id: number }> { + async remove(document_type_id: number, id: number): Promise<{ id: number }> { // if the removed template was active, activate the highest version template const templateToRemove = await this.findOne(id); - const variantName = templateToRemove.document_type; await this.documentTemplateRepository.update({ id: id }, { is_deleted: true, active_flag: false }); if (templateToRemove.active_flag == true) { - const allTemplates = await this.findAll(templateToRemove.document_type); + const allTemplates: DocumentTemplate[] = await this.findAll(document_type_id); if (allTemplates.length != 0) { let newestVersionTemplate: DocumentTemplate; let currentVersion = 0; @@ -111,51 +116,58 @@ export class DocumentTemplateService { newestVersionTemplate = entry; } } - await this.activateTemplate(newestVersionTemplate); - await this.updateNfrTemplates(variantName); + await this.activateTemplate({ + id: newestVersionTemplate.id, + update_userid: newestVersionTemplate.update_userid, + document_type_id: document_type_id, + }); + await this.updateTemplates(document_type_id); return { id: newestVersionTemplate.id }; } } - await this.updateNfrTemplates(variantName); + await this.updateTemplates(document_type_id); return { id: 0 }; } // updates the updated_by and document_version columns // unused - needs to be updated - async update(templateData: UpdateDocumentTemplateDto): Promise { - let allTemplates = await this.documentTemplateRepository.findBy({ - document_type: templateData.document_type, - }); - let mostRecentTemplate = allTemplates[0]; - for (let template of allTemplates) { - if (template.template_version > mostRecentTemplate.template_version) { - mostRecentTemplate = template; - } - } - let templateToUpdate = await this.documentTemplateRepository.findOneByOrFail({ - document_type: templateData.document_type, - template_version: templateData.template_version, - }); - templateToUpdate.document_type = templateData.document_type; - templateToUpdate.template_version = mostRecentTemplate.template_version + 1; - templateToUpdate.template_author = templateData.template_author; - templateToUpdate.active_flag = templateData.active_flag; - templateToUpdate.mime_type = templateData.mime_type; - templateToUpdate.file_name = templateData.file_name; - templateToUpdate.the_file = templateData.the_file; - templateToUpdate.comments = templateData.comments; - return this.documentTemplateRepository.save(templateToUpdate); - } - - findAll(document_type: string): Promise { + // async update(templateData: UpdateDocumentTemplateDto): Promise { + // const docType: DocumentType = await this.documentTypeService.findById(templateData.document_type_id); + // const allTemplates = await this.documentTemplateRepository + // .createQueryBuilder('documentTemplate') + // .leftJoin('documentTemplate.document_type', 'documentType') + // .where('documentType.id = :documentTypeId', { documentTypeId: templateData.document_type_id }) + // .getMany(); + // let mostRecentTemplate = allTemplates[0]; + // for (let template of allTemplates) { + // if (template.template_version > mostRecentTemplate.template_version) { + // mostRecentTemplate = template; + // } + // } + // let templateToUpdate = await this.documentTemplateRepository.findOneByOrFail({ + // document_type: { id: templateData.document_type_id }, + // template_version: templateData.template_version, + // }); + // templateToUpdate.document_type = docType; + // templateToUpdate.template_version = mostRecentTemplate.template_version + 1; + // templateToUpdate.template_author = templateData.template_author; + // templateToUpdate.active_flag = templateData.active_flag; + // templateToUpdate.mime_type = templateData.mime_type; + // templateToUpdate.file_name = templateData.file_name; + // templateToUpdate.the_file = templateData.the_file; + // templateToUpdate.comments = templateData.comments; + // return this.documentTemplateRepository.save(templateToUpdate); + // } + + async findAll(document_type_id: number): Promise { return this.documentTemplateRepository.find({ - where: { is_deleted: false, document_type: document_type }, + where: { is_deleted: false, document_type: { id: document_type_id } }, }); } - findActiveByDocumentType(documentType: string): Promise { + async findActiveByDocumentType(document_type_id: number): Promise { return this.documentTemplateRepository.findOneBy({ - document_type: documentType, + document_type: { id: document_type_id }, active_flag: true, }); } @@ -173,21 +185,18 @@ export class DocumentTemplateService { }); } - // after removing a template, this updates nfrData that is now tied to inactive templates - async updateNfrTemplates(variantName: string) { - const nfrData: NFRData[] = await this.nfrDataRepository.find({ - where: { - variant_name: variantName, - }, + // after removing a template, this updates documentData that is now tied to inactive templates + async updateTemplates(document_type_id: number) { + const documentData: DocumentData[] = await this.documentDataRepository.findBy({ + document_type: { id: document_type_id }, }); - const activeTemplate = await this.documentTemplateRepository.findOne({ - where: { document_type: variantName, active_flag: true }, + where: { document_type: { id: document_type_id }, active_flag: true }, }); - for (let item of nfrData) { + for (let item of documentData) { if (item.template_id != activeTemplate.id) { - await this.nfrDataRepository.update(item.id, { + await this.documentDataRepository.update(item.id, { template_id: activeTemplate.id, }); } diff --git a/backend/src/document_template/dto/create-document_template.dto.ts b/backend/src/document_template/dto/create-document_template.dto.ts index 11760d90..2f299ed4 100644 --- a/backend/src/document_template/dto/create-document_template.dto.ts +++ b/backend/src/document_template/dto/create-document_template.dto.ts @@ -2,7 +2,7 @@ import { PickType } from '@nestjs/swagger'; import { DocumentTemplateDto } from './document_template.dto'; export class CreateDocumentTemplateDto extends PickType(DocumentTemplateDto, [ - 'document_type', + 'document_type_id', 'template_author', 'mime_type', 'file_name', diff --git a/backend/src/document_template/dto/document_template.dto.ts b/backend/src/document_template/dto/document_template.dto.ts index 1b1f8889..40130c30 100644 --- a/backend/src/document_template/dto/document_template.dto.ts +++ b/backend/src/document_template/dto/document_template.dto.ts @@ -1,5 +1,5 @@ export class DocumentTemplateDto { - document_type: string; + document_type_id: number; template_version: number; template_author: string; template_creation_date: string; diff --git a/backend/src/document_template/dto/update-document_template.dto.ts b/backend/src/document_template/dto/update-document_template.dto.ts index df00c273..d830bb4c 100644 --- a/backend/src/document_template/dto/update-document_template.dto.ts +++ b/backend/src/document_template/dto/update-document_template.dto.ts @@ -2,7 +2,7 @@ import { PickType } from '@nestjs/swagger'; import { DocumentTemplateDto } from './document_template.dto'; export class UpdateDocumentTemplateDto extends PickType(DocumentTemplateDto, [ - 'document_type', + 'document_type_id', 'template_version', 'template_author', 'template_creation_date', diff --git a/backend/src/document_template/entities/document_template.entity.ts b/backend/src/document_template/entities/document_template.entity.ts index ab057920..cad13408 100644 --- a/backend/src/document_template/entities/document_template.entity.ts +++ b/backend/src/document_template/entities/document_template.entity.ts @@ -1,11 +1,14 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; +import { Column, CreateDateColumn, Entity, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; +import { DocumentType } from '../../document_type/entities/document_type.entity'; @Entity() export class DocumentTemplate { @PrimaryGeneratedColumn() id: number; - @Column() - document_type: string; // the template type (Land Use Report / Notice of Final Review) + @ManyToOne(() => DocumentType, (documentType) => documentType.document_templates, { + nullable: true, + }) + document_type: DocumentType; @Column() template_version: number; @Column() @@ -32,7 +35,7 @@ export class DocumentTemplate { update_timestamp: Date; constructor( - document_type?: string, + document_type?: DocumentType, template_version?: number, template_author?: string, active_flag?: boolean, @@ -44,7 +47,7 @@ export class DocumentTemplate { create_userid?: string, update_userid?: string ) { - this.document_type = document_type || ''; + this.document_type = document_type || null; this.template_version = template_version || null; this.template_author = template_author || ''; this.active_flag = active_flag || false; diff --git a/backend/src/document_type/document_type.controller.ts b/backend/src/document_type/document_type.controller.ts new file mode 100644 index 00000000..fd4c522c --- /dev/null +++ b/backend/src/document_type/document_type.controller.ts @@ -0,0 +1,46 @@ +import { Body, Controller, Get, Param, Post, Session, UseFilters, UseGuards } from '@nestjs/common'; +import { AuthenticationFilter } from 'src/authentication/authentication.filter'; +import { AuthenticationGuard } from 'src/authentication/authentication.guard'; +import { GenerateReportGuard } from 'src/authentication/generate-report.guard'; +import { DocumentTypeService } from './document_type.service'; +import { SessionData } from 'utils/types'; + +// @UseFilters(AuthenticationFilter) +// @UseGuards(AuthenticationGuard) +// @UseGuards(GenerateReportGuard) +@Controller('document-type') +export class DocumentTypeController { + constructor(private documentTypeService: DocumentTypeService) {} + + @Get(':id') + findById(@Param('id') id: number) { + return this.documentTypeService.findById(id); + } + + @Post('add') + add(@Body() data: { name: string; created_by: string; created_date: string }, @Session() session: SessionData) { + const create_userid = session?.activeAccount?.idir_username; + console.log(data); + return this.documentTypeService.add(data.name, data.created_by, data.created_date, create_userid); + } + + @Post('update') + update( + @Body() data: { id: number; name: string; created_by: string; created_date: string }, + @Session() session: SessionData + ) { + const update_userid = session?.activeAccount?.idir_username; + return this.documentTypeService.update(data.id, data.name, data.created_by, data.created_date, update_userid); + } + + @Get('remove/:id') + remove(@Param('id') id: number) { + console.log('in remove'); + return this.documentTypeService.remove(id); + } + + @Get() + findAll() { + return this.documentTypeService.findAll(); + } +} diff --git a/backend/src/document_type/document_type.module.ts b/backend/src/document_type/document_type.module.ts new file mode 100644 index 00000000..ae2a3378 --- /dev/null +++ b/backend/src/document_type/document_type.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { DocumentTypeService } from './document_type.service'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { DocumentTypeController } from './document_type.controller'; +import { DocumentType } from './entities/document_type.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([DocumentType])], + providers: [DocumentTypeService], + controllers: [DocumentTypeController], + exports: [DocumentTypeService], +}) +export class DocumentTypeModule {} diff --git a/backend/src/document_type/document_type.service.ts b/backend/src/document_type/document_type.service.ts new file mode 100644 index 00000000..437db796 --- /dev/null +++ b/backend/src/document_type/document_type.service.ts @@ -0,0 +1,59 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { In, Repository } from 'typeorm'; +import { DocumentType } from './entities/document_type.entity'; + +@Injectable() +export class DocumentTypeService { + constructor( + @InjectRepository(DocumentType) + private documentTypeRepository: Repository + ) {} + + findById(id: number): Promise { + console.log('findById function'); + return this.documentTypeRepository.findOneBy({ id: id }); + } + + findByIds(ids: number[]): Promise { + return this.documentTypeRepository.findBy({ id: In(ids) }); + } + + findAll(): Promise { + return this.documentTypeRepository.find(); + } + + add(name: string, created_by: string, created_date: string, userid: string): Promise { + const newDocumentType = this.documentTypeRepository.create({ + name: name, + created_by: created_by, + created_date: created_date, + create_userid: userid, + update_userid: userid, + }); + return this.documentTypeRepository.save(newDocumentType); + } + + async update( + id: number, + name: string, + created_by: string, + created_date: string, + userid: string + ): Promise { + await this.documentTypeRepository.update(id, { name, created_by, created_date, update_userid: userid }); + const updatedDocumentType = await this.documentTypeRepository.findOneBy({ id }); + if (!updatedDocumentType) { + throw new Error('DocumentType not found'); + } + return updatedDocumentType; + } + + async remove(id: number): Promise { + const result = await this.documentTypeRepository.delete(id); + + if (result.affected === 0) { + throw new Error(`DocumentType with ID ${id} not found`); + } + } +} diff --git a/backend/src/document_type/entities/document_type.entity.ts b/backend/src/document_type/entities/document_type.entity.ts new file mode 100644 index 00000000..d90bb5e8 --- /dev/null +++ b/backend/src/document_type/entities/document_type.entity.ts @@ -0,0 +1,55 @@ +import { + Column, + CreateDateColumn, + Entity, + ManyToMany, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { DocumentTemplate } from '../../document_template/entities/document_template.entity'; +import { DocumentData } from 'src/document_data/entities/document_data.entity'; +import { Provision } from 'src/provision/entities/provision.entity'; +import { ProvisionGroup } from 'src/provision/entities/provision_group.entity'; + +@Entity() +export class DocumentType { + @PrimaryGeneratedColumn() + id: number; + @Column() + name: string; + @Column({ nullable: true }) + created_by: string; + @Column({ nullable: true }) + created_date: Date; + @Column() + create_userid: string; + @Column() + update_userid: string; + @CreateDateColumn() + create_timestamp: Date; + @UpdateDateColumn() + update_timestamp: Date; + @OneToMany(() => DocumentTemplate, (document_template) => document_template.document_type, { + nullable: true, + }) + document_templates: DocumentTemplate[]; + @OneToMany(() => DocumentData, (document_data) => document_data.document_type, { + nullable: true, + }) + document_data: DocumentData[]; + @ManyToMany(() => Provision, (provision) => provision.document_types) + provisions: Provision[]; + @OneToMany(() => ProvisionGroup, (provisionGroup) => provisionGroup.document_type, { + cascade: true, + }) + provision_groups: ProvisionGroup[]; + + constructor(name?: string, created_by?: string, created_date?: Date, create_userid?: string, update_userid?: string) { + this.name = name || ''; + this.created_by = created_by || ''; + this.created_date = created_date || null; + this.create_userid = create_userid || ''; + this.update_userid = update_userid || ''; + } +} diff --git a/backend/src/main.ts b/backend/src/main.ts index c0dcef8a..8dddd1e6 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -20,7 +20,7 @@ async function bootstrap() { const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup('api', app, document); const appService = app.get(AppService); - // await appService.initializeDb(); + await appService.initializeDb(); await app.listen(3001); } diff --git a/backend/src/nfr_data/dto/create-nfr_data.dto.ts b/backend/src/nfr_data/dto/create-nfr_data.dto.ts deleted file mode 100644 index 998f3dd6..00000000 --- a/backend/src/nfr_data/dto/create-nfr_data.dto.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { NFRDataDto } from './nfr_data.dto'; - -export class CreateNFRDataDto extends PickType(NFRDataDto, [ - 'dtid', - 'variant_name', - 'template_id', - 'status', - 'create_userid', -] as const) {} diff --git a/backend/src/nfr_data/dto/update-nfr_data.dto.ts b/backend/src/nfr_data/dto/update-nfr_data.dto.ts deleted file mode 100644 index 697d20f6..00000000 --- a/backend/src/nfr_data/dto/update-nfr_data.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { NFRDataDto } from './nfr_data.dto'; - -export class UpdateNFRDataDto extends PickType(NFRDataDto, [ - 'dtid', - 'variant_name', - 'template_id', - 'status', - 'enabled_provisions', - 'update_userid', -] as const) {} diff --git a/backend/src/nfr_data/entities/nfr_data.entity.ts b/backend/src/nfr_data/entities/nfr_data.entity.ts deleted file mode 100644 index 4dc28a5a..00000000 --- a/backend/src/nfr_data/entities/nfr_data.entity.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Column, CreateDateColumn, Entity, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; -import { NFRDataProvision } from './nfr_data_provision.entity'; -import { NFRDataVariable } from './nfr_data_variable.entity'; - -@Entity() -export class NFRData { - @PrimaryGeneratedColumn() - id: number; - @Column({ nullable: true }) - dtid: number; - @Column({ nullable: true }) - variant_name: string; - - @Column({ nullable: true }) - template_id: number; - @Column({ nullable: true }) - status: string; - @OneToMany(() => NFRDataProvision, (nfrDataProvision) => nfrDataProvision.nfr_data, { - nullable: true, - cascade: true, - }) - nfr_data_provisions: NFRDataProvision[]; - @OneToMany(() => NFRDataVariable, (nfrDataVariable) => nfrDataVariable.nfr_data, { - nullable: true, - cascade: true, - }) - nfr_data_variables: NFRDataVariable[]; - @Column({ nullable: true }) - active: boolean; - @Column({ nullable: true }) - create_userid: string; - @Column({ nullable: true }) - update_userid: string; - @CreateDateColumn() - create_timestamp: Date; - @UpdateDateColumn() - update_timestamp: Date; - - public get getNfrDataProvisions(): NFRDataProvision[] { - return this.nfr_data_provisions; - } - public get getNfrDataVariables(): NFRDataVariable[] { - return this.nfr_data_variables; - } - - constructor( - dtid?: number, - variant_name?: string, - template_id?: number, - status?: string, - create_userid?: string, - update_userid?: string - ) { - this.dtid = dtid || null; - this.variant_name = variant_name || ''; - this.template_id = template_id || null; - this.status = status || ''; - this.create_userid = create_userid || ''; - this.update_userid = update_userid || ''; - } -} diff --git a/backend/src/nfr_data/entities/nfr_data_provision.entity.ts b/backend/src/nfr_data/entities/nfr_data_provision.entity.ts deleted file mode 100644 index 0c2f1ec5..00000000 --- a/backend/src/nfr_data/entities/nfr_data_provision.entity.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NFRProvision } from 'src/nfr_provision/entities/nfr_provision.entity'; -import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; -import { NFRData } from './nfr_data.entity'; - -@Entity() -export class NFRDataProvision { - @PrimaryGeneratedColumn() - id: number; - @ManyToOne(() => NFRProvision, (nfr_provision) => nfr_provision.nfr_data_provisions, { onDelete: 'CASCADE' }) - nfr_provision: NFRProvision; - @ManyToOne(() => NFRData, (nfr_data) => nfr_data.nfr_data_provisions, { - onDelete: 'CASCADE', - }) - nfr_data: NFRData; - @Column({ nullable: true }) - provision_free_text: string; - - constructor(provision_free_text?: string) { - this.provision_free_text = provision_free_text || ''; - } -} diff --git a/backend/src/nfr_data/entities/nfr_data_variable.entity.ts b/backend/src/nfr_data/entities/nfr_data_variable.entity.ts deleted file mode 100644 index ed2ee031..00000000 --- a/backend/src/nfr_data/entities/nfr_data_variable.entity.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NFRProvisionVariable } from 'src/nfr_provision/entities/nfr_provision_variable.entity'; -import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; -import { NFRData } from './nfr_data.entity'; - -@Entity() -export class NFRDataVariable { - @PrimaryGeneratedColumn() - id: number; - @ManyToOne(() => NFRProvisionVariable, (nfr_variable) => nfr_variable.nfr_data_variables, { onDelete: 'CASCADE' }) - nfr_variable: NFRProvisionVariable; - @ManyToOne(() => NFRData, (nfr_data) => nfr_data.nfr_data_variables, { - onDelete: 'CASCADE', - }) - nfr_data: NFRData; - @Column({ nullable: true }) - data_variable_value: string; - - constructor(data_variable_value?: string) { - this.data_variable_value = data_variable_value || ''; - } -} diff --git a/backend/src/nfr_data/entities/nfr_data_vw.ts b/backend/src/nfr_data/entities/nfr_data_vw.ts deleted file mode 100644 index 3ea05416..00000000 --- a/backend/src/nfr_data/entities/nfr_data_vw.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { DataSource, ViewColumn, ViewEntity } from 'typeorm'; -import { NFRData } from './nfr_data.entity'; - -@ViewEntity({ - expression: (dataSource: DataSource) => - dataSource - .createQueryBuilder() - .select('nfr_data.id', 'NFRDataId') - .addSelect('nfr_data.dtid', 'DTID') - .addSelect('nfr_data.db_address_regional_office', 'DB_Address_Regional_Office') - .addSelect('nfr_data.var_telephone_number', 'VAR_Telephone_Number') - .addSelect('nfr_data.var_facsimile_number', 'VAR_Facsimile_Number') - .addSelect('nfr_data.db_name_bcal_contact', 'DB_Name_BCAL_Contact') - .addSelect('nfr_data.db_file_number', 'DB_File_Number') - .addSelect('nfr_data.var_client_file_no', 'VAR_Client_File_No') - .addSelect('nfr_data.var_date_of_notice', 'VAR_Date_Of_Notice') - .addSelect('nfr_data.db_address_mailing_tenant', 'DB_Address_Mailing_Tenant') - .addSelect('nfr_data.var_attention_line', 'VAR_Attention_Line') - .addSelect('nfr_data.var_salutation', 'VAR_Salutation') - .addSelect('nfr_data.db_tenure_type', 'DB_Tenure_Type') - .addSelect('nfr_data.var_purpose_generic', 'VAR_Purpose_Generic') - .addSelect('nfr_data.db_legal_description', 'DB_Legal_Description') - .addSelect('nfr_data.show_section_five_1', 'showSectionFive_1') - .addSelect('nfr_data.section_five_1_text', 'SectionFive_1_Text') - .addSelect('nfr_data.insert_space', 'Insert_Space') - .addSelect('nfr_data.var_replacement_tenure_type', 'VAR_Replacement_Tenure_Type') - .addSelect('nfr_data.show_section_five_2', 'showSectionFive_2') - .addSelect('nfr_data.section_five_2_text', 'SectionFive_2_Text') - .addSelect('nfr_data.var_why_land_differs', 'VAR_Why_Land_Differs') - .addSelect('nfr_data.show_section_five_3', 'showSectionFive_3') - .addSelect('nfr_data.var_sect5_free_field', 'VAR_Sect5_Free_Field') - .addSelect('nfr_data.var_deadline_completion_requirements', 'VAR_Deadline_Completion_Requirements') - .addSelect('nfr_data.var_number_of_copies', 'VAR_Number_Of_Copies') - .addSelect('nfr_data.db_fee_payable_type', 'DB_Fee_Payable_Type') - .addSelect('nfr_data.db_fee_payable_amount_gst', 'DB_Fee_Payable_Amount_GST') - .addSelect('nfr_data.db_fee_payable_amount', 'DB_Fee_Payable_Amount') - .addSelect('nfr_data.db_fp_asterisk', 'DB_FP_Asterisk') - .addSelect('nfr_data.var_fee_occupational_rental_amount', 'VAR_Fee_Occupational_Rental_Amount') - .addSelect('nfr_data.var_fee_application_amount', 'VAR_Fee_Application_Amount') - .addSelect('nfr_data.var_fee_other_credit_amount', 'VAR_Fee_Other_Credit_Amount') - .addSelect('nfr_data.db_total_gst_amount', 'DB_Total_GST_Amount') - .addSelect('nfr_data.db_total_monies_payable', 'DB_Total_Monies_Payable') - .addSelect('nfr_data.db_address_line_regional_office', 'DB_Address_Line_Regional_Office') - .addSelect('nfr_data.var_interim_tenure_type', 'VAR_Interim_Tenure_Type') - .addSelect('nfr_data.show_section_fifteen_1', 'showSectionFifteen_1') - .addSelect('nfr_data.section_fifteen_1_text', 'SectionFifteen_1_Text') - .addSelect('nfr_data.var_occ_rent_details', 'VAR_Occ_Rent_Details') - .addSelect('nfr_data.show_section_twenty_1', 'showSectionTwenty_1') - .addSelect('nfr_data.section_twenty_1_text', 'SectionTwenty_1_Text') - .addSelect('nfr_data.show_section_twenty_2', 'showSectionTwenty_2') - .addSelect('nfr_data.section_twenty_2_text', 'SectionTwenty_2_Text') - .addSelect('nfr_data.show_section_twenty_3', 'showSectionTwenty_3') - .addSelect('nfr_data.section_twenty_3_text', 'SectionTwenty_3_Text') - .addSelect('nfr_data.show_section_twenty_4', 'showSectionTwenty_4') - .addSelect('nfr_data.section_twenty_4_text', 'SectionTwenty_4_Text') - .addSelect('nfr_data.show_section_twenty_5', 'showSectionTwenty_5') - .addSelect('nfr_data.section_twenty_5_text', 'SectionTwenty_5_Text') - .addSelect('nfr_data.show_section_twentyfive_1', 'showSectionTwentyFive_1') - .addSelect('nfr_data.section_twentyfive_1_text', 'SectionTwentyFive_1_Text') - .addSelect('nfr_data.show_section_twentyfive_2', 'showSectionTwentyFive_2') - .addSelect('nfr_data.section_twentyfive_2_text', 'SectionTwentyFive_2_Text') - .addSelect('nfr_data.show_section_twentyfive_3', 'showSectionTwentyFive_3') - .addSelect('nfr_data.section_twentyfive_3_text', 'SectionTwentyFive_3_Text') - .addSelect('nfr_data.show_section_twentyfive_4', 'showSectionTwentyFive_4') - .addSelect('nfr_data.section_twentyfive_4_text', 'SectionTwentyFive_4_Text') - .addSelect('nfr_data.show_section_twentyseven_1', 'showSectionTwentySeven_1') - .addSelect('nfr_data.section_twentyseven_1_text', 'SectionTwentySeven_1_Text') - .addSelect('nfr_data.show_section_twentyseven_2', 'showSectionTwentySeven_2') - .addSelect('nfr_data.section_twentyseven_2_text', 'SectionTwentySeven_2_Text') - .addSelect('nfr_data.show_section_twentyseven_3', 'showSectionTwentySeven_3') - .addSelect('nfr_data.section_twentyseven_3_text', 'SectionTwentySeven_3_Text') - .addSelect('nfr_data.show_section_twentyseven_4', 'showSectionTwentySeven_4') - .addSelect('nfr_data.section_twentyseven_4_text', 'SectionTwentySeven_4_Text') - .addSelect('nfr_data.show_section_twentyseven_5', 'showSectionTwentySeven_5') - .addSelect('nfr_data.section_twentyseven_5_text', 'SectionTwentySeven_5_Text') - .addSelect('nfr_data.show_section_twentyseven_6', 'showSectionTwentySeven_6') - .addSelect('nfr_data.section_twentyseven_6_text', 'SectionTwentySeven_6_Text') - .from(NFRData, 'nfr_data'), -}) -export class NFRDataView { - @ViewColumn() - NFRDataId: number; - @ViewColumn() - DTID: number; - @ViewColumn() - DB_Address_Regional_Office: string; - @ViewColumn() - VAR_Telephone_Number: string; - @ViewColumn() - VAR_Facsimile_Number: string; - @ViewColumn() - DB_Name_BCAL_Contact: string; - @ViewColumn() - DB_File_Number: string; - @ViewColumn() - VAR_Client_File_No: string; - @ViewColumn() - VAR_Date_Of_Notice: string; - @ViewColumn() - DB_Address_Mailing_Tenant: string; - @ViewColumn() - VAR_Attention_Line: string; - @ViewColumn() - VAR_Salutation: string; - @ViewColumn() - DB_Tenure_Type: string; - @ViewColumn() - VAR_Purpose_Generic: string; - @ViewColumn() - DB_Legal_Description: string; - @ViewColumn() - showSectionFive_1: number; - @ViewColumn() - SectionFive_1_Text: string; - @ViewColumn() - Insert_Space: string; - @ViewColumn() - VAR_Replacement_Tenure_Type: string; - @ViewColumn() - showSectionFive_2: number; - @ViewColumn() - SectionFive_2_Text: string; - @ViewColumn() - VAR_Why_Land_Differs: string; - @ViewColumn() - showSectionFive_3: string; - @ViewColumn() - VAR_Sect5_Free_Field: string; - @ViewColumn() - VAR_Deadline_Completion_Requirements: string; - @ViewColumn() - VAR_Number_Of_Copies: string; - @ViewColumn() - DB_Fee_Payable_Type: string; - @ViewColumn() - DB_Fee_Payable_Amount_GST: string; - @ViewColumn() - DB_Fee_Payable_Amount: string; - @ViewColumn() - DB_FP_Asterisk: string; - @ViewColumn() - VAR_Fee_Occupational_Rental_Amount: string; - @ViewColumn() - VAR_Fee_Application_Amount: string; - @ViewColumn() - VAR_Fee_Other_Credit_Amount: string; - @ViewColumn() - DB_Total_GST_Amount: string; - @ViewColumn() - DB_Total_Monies_Payable: string; - @ViewColumn() - DB_Address_Line_Regional_Office: string; - @ViewColumn() - VAR_Interim_Tenure_Type: string; - @ViewColumn() - showSectionFifteen_1: number; - @ViewColumn() - SectionFifteen_1_Text: string; - @ViewColumn() - VAR_Occ_Rent_Details: string; - @ViewColumn() - showSectionTwenty_1: number; - @ViewColumn() - SectionTwenty_1_Text: string; - @ViewColumn() - showSectionTwenty_2: number; - @ViewColumn() - SectionTwenty_2_Text: string; - @ViewColumn() - showSectionTwenty_3: number; - @ViewColumn() - SectionTwenty_3_Text: string; - @ViewColumn() - showSectionTwenty_4: number; - @ViewColumn() - SectionTwenty_4_Text: string; - @ViewColumn() - showSectionTwenty_5: number; - @ViewColumn() - SectionTwenty_5_Text: string; - @ViewColumn() - showSectionTwentyFive_1: number; - @ViewColumn() - SectionTwentyFive_1_Text: string; - @ViewColumn() - showSectionTwentyFive_2: number; - @ViewColumn() - SectionTwentyFive_2_Text: string; - @ViewColumn() - showSectionTwentyFive_3: number; - @ViewColumn() - SectionTwentyFive_3_Text: string; - @ViewColumn() - showSectionTwentyFive_4: number; - @ViewColumn() - SectionTwentyFive_4_Text: string; - @ViewColumn() - showSectionTwentySeven_1: number; - @ViewColumn() - SectionTwentySeven_1_Text: string; - @ViewColumn() - showSectionTwentySeven_2: number; - @ViewColumn() - SectionTwentySeven_2_Text: string; - @ViewColumn() - showSectionTwentySeven_3: number; - @ViewColumn() - SectionTwentySeven_3_Text: string; - @ViewColumn() - showSectionTwentySeven_4: number; - @ViewColumn() - SectionTwentySeven_4_Text: string; - @ViewColumn() - showSectionTwentySeven_5: number; - @ViewColumn() - SectionTwentySeven_5_Text: string; - @ViewColumn() - showSectionTwentySeven_6: number; - @ViewColumn() - SectionTwentySeven_6_Text: string; -} diff --git a/backend/src/nfr_data/nfr_data.controller.ts b/backend/src/nfr_data/nfr_data.controller.ts deleted file mode 100644 index 43f09494..00000000 --- a/backend/src/nfr_data/nfr_data.controller.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; -import { ProvisionJSON, VariableJSON } from 'utils/types'; -import { CreateNFRDataDto } from './dto/create-nfr_data.dto'; -import { NFRDataService } from './nfr_data.service'; - -@Controller('nfr-data') -export class NFRDataController { - constructor(private readonly nfrDataService: NFRDataService) {} - - @Post() - async create( - @Body() - data: { - body: CreateNFRDataDto & { - provisionJsonArray: ProvisionJSON[]; - variableJsonArray: VariableJSON[]; - }; - } - ) { - const provArr = data.body.provisionJsonArray; - const varArr = data.body.variableJsonArray; - delete data.body['provisionJsonArray']; - delete data.body['variableJsonArray']; - return this.nfrDataService.createOrUpdate(data.body, provArr, varArr); - } - - @Get() - findAll() { - return this.nfrDataService.findAll(); - } - - @Get(':nfrDataId') - findById(@Param('nfrDataId') nfrDataId: number) { - if (nfrDataId && nfrDataId != 0) { - return this.nfrDataService.findByNfrDataId(nfrDataId); - } else { - return null; - } - } - - @Get('dtid/:dtid') - findActiveByDtid(@Param('dtid') dtid: number) { - return this.nfrDataService.findActiveByDtid(dtid); - } - - @Get('view/:nfrDataId') - findViewByPRDID(@Param('nfrDataId') nfrDataId: string) { - return this.nfrDataService.findViewByNFRDataId(+nfrDataId); - } - - @Get('variables/:variantName/:dtid') - getVariablesByVariantAndDtid(@Param('variantName') variantName: string, @Param('dtid') dtid: number) { - return this.nfrDataService.getVariablesByVariantAndDtid(variantName, dtid); - } - - @Get('provisions/:variantName/:dtid') - getProvisionsByVariantAndDtid(@Param('variantName') variantName: string, @Param('dtid') dtid: number) { - return this.nfrDataService.getProvisionsByVariantAndDtid(variantName, dtid); - } - - @Get('get-enabled-provisions/:variantName/:dtid') - getEnabledProvisionsByVariantAndDtid(@Param('variantName') variantName: string, @Param('dtid') dtid: number) { - return this.nfrDataService.getEnabledProvisionsByVariantAndDtid(variantName, dtid); - } - - @Delete(':dtid') - remove(@Param('dtid') dtid: string) { - return this.nfrDataService.remove(+dtid); - } -} diff --git a/backend/src/nfr_data/nfr_data.module.ts b/backend/src/nfr_data/nfr_data.module.ts deleted file mode 100644 index 61fa0ca6..00000000 --- a/backend/src/nfr_data/nfr_data.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { DocumentTemplateModule } from 'src/document_template/document_template.module'; -import { NFRProvisionVariable } from 'src/nfr_provision/entities/nfr_provision_variable.entity'; -import { NFRProvisionModule } from 'src/nfr_provision/nfr_provision.module'; -import { NFRProvisionService } from 'src/nfr_provision/nfr_provision.service'; -import { NFRProvision } from '../nfr_provision/entities/nfr_provision.entity'; -import { NFRProvisionVariant } from '../nfr_provision/entities/nfr_provision_variant.entity'; -import { NFRData } from './entities/nfr_data.entity'; -import { NFRDataProvision } from './entities/nfr_data_provision.entity'; -import { NFRDataVariable } from './entities/nfr_data_variable.entity'; -import { NFRDataController } from './nfr_data.controller'; -import { NFRDataService } from './nfr_data.service'; - -@Module({ - imports: [ - TypeOrmModule.forFeature([NFRData]), - TypeOrmModule.forFeature([NFRDataProvision]), - TypeOrmModule.forFeature([NFRProvisionVariable]), - TypeOrmModule.forFeature([NFRDataVariable]), - TypeOrmModule.forFeature([NFRProvision]), - TypeOrmModule.forFeature([NFRProvisionVariant]), - NFRProvisionModule, - DocumentTemplateModule, - ], - controllers: [NFRDataController], - providers: [NFRDataService], -}) -export class NFRDataModule {} diff --git a/backend/src/nfr_data/nfr_data.service.ts b/backend/src/nfr_data/nfr_data.service.ts deleted file mode 100644 index e51a25a4..00000000 --- a/backend/src/nfr_data/nfr_data.service.ts +++ /dev/null @@ -1,375 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { NFRProvision } from 'src/nfr_provision/entities/nfr_provision.entity'; -import { NFRProvisionVariable } from 'src/nfr_provision/entities/nfr_provision_variable.entity'; -import { DataSource, In, Repository } from 'typeorm'; -import { CreateNFRDataDto } from './dto/create-nfr_data.dto'; -import { NFRData } from './entities/nfr_data.entity'; -import { NFRDataProvision } from './entities/nfr_data_provision.entity'; -import { NFRDataVariable } from './entities/nfr_data_variable.entity'; -import { NFRDataView } from './entities/nfr_data_vw'; -import { NFRProvisionService } from 'src/nfr_provision/nfr_provision.service'; -import { DocumentTemplateService } from 'src/document_template/document_template.service'; - -@Injectable() -export class NFRDataService { - constructor( - @InjectRepository(NFRData) - private nfrDataRepository: Repository, - @InjectRepository(NFRProvision) - private nfrProvisionRepository: Repository, - @InjectRepository(NFRDataProvision) - private nfrDataProvisionRepository: Repository, - @InjectRepository(NFRProvisionVariable) - private nfrProvisionVariableRepository: Repository, - @InjectRepository(NFRDataVariable) - private nfrDataVariableRepository: Repository, - private nfrProvisionService: NFRProvisionService, - private documentTemplateService: DocumentTemplateService, - private dataSource: DataSource - ) {} - - async createOrUpdate( - nfrDataDto: CreateNFRDataDto, - provisionArray: { provision_id: number; free_text: string }[], - variableArray: { variable_id: number; variable_value: string }[] - ): Promise { - const { dtid, variant_name } = nfrDataDto; - const nfrData: NFRData = await this.nfrDataRepository.findOne({ - where: { dtid: dtid, variant_name: variant_name }, - relations: [ - 'nfr_data_variables', - 'nfr_data_provisions', - 'nfr_data_variables.nfr_variable', - 'nfr_data_provisions.nfr_provision', - ], - }); - - const nfrProvisionIds = provisionArray.map(({ provision_id }) => provision_id); - const nfrProvisions = await this.nfrProvisionRepository.findBy({ - id: In(nfrProvisionIds), - }); - const nfrVariableIds = variableArray.map(({ variable_id }) => variable_id); - const nfrVariables = await this.nfrProvisionVariableRepository.findBy({ - id: In(nfrVariableIds), - }); - - // if nfrData for this dtid+template exists, update it - if (nfrData) { - return await this.updateNfrData(nfrDataDto, nfrData, provisionArray, variableArray, nfrProvisions, nfrVariables); - } - // else create new nfrData - const documentTemplate = await this.documentTemplateService.findActiveByDocumentType(nfrDataDto.variant_name); - nfrDataDto['template_id'] = documentTemplate ? documentTemplate.id : null; - const newNfrData: NFRData = this.nfrDataRepository.create(nfrDataDto); - const updatedNfrData = await this.nfrDataRepository.save(newNfrData); - - const nfrDataProvisions = provisionArray.map(({ provision_id, free_text }) => { - const nfrProvision = nfrProvisions.find((provision) => provision.id === provision_id); - const nfrDataProvision = new NFRDataProvision(); - nfrDataProvision.nfr_data = updatedNfrData; - nfrDataProvision.nfr_provision = nfrProvision; - nfrDataProvision.provision_free_text = nfrProvision.free_text; // quick fix to not use the free_text from the nfr page - return nfrDataProvision; - }); - const nfrDataVariables = variableArray.map(({ variable_id, variable_value }) => { - const nfrVariable = nfrVariables.find((variable) => variable.id === variable_id); - const nfrDataVariable = new NFRDataVariable(); - nfrDataVariable.nfr_data = updatedNfrData; - nfrDataVariable.nfr_variable = nfrVariable; - nfrDataVariable.data_variable_value = variable_value; - return nfrDataVariable; - }); - if (nfrData) { - await this.deleteDataVarsAndProvs(nfrData, provisionArray, variableArray); - } - - await this.nfrDataProvisionRepository.save(nfrDataProvisions); - await this.nfrDataVariableRepository.save(nfrDataVariables); - - await this.makeActive(newNfrData.dtid, newNfrData.variant_name); - - return updatedNfrData; - } - - async updateNfrData( - nfrDataDto: CreateNFRDataDto, - nfrData: NFRData, - provisionArray: { provision_id: number; free_text: string }[], - variableArray: { variable_id: number; variable_value: string }[], - nfrProvisions: NFRProvision[], - nfrVariables: NFRProvisionVariable[] - ): Promise { - // Update NFRData entity - nfrData.variant_name = nfrDataDto.variant_name; - nfrData.template_id = nfrDataDto.template_id; - nfrData.status = nfrDataDto.status; - nfrData.update_userid = nfrDataDto.create_userid; - - const updatedNfrData = await this.nfrDataRepository.save(nfrData); - await this.makeActive(nfrData.dtid, nfrData.variant_name); - - // Update NFRDataProvision entities - for (const provision of provisionArray) { - const nfrDataProvision = nfrData.nfr_data_provisions.find((p) => p.nfr_provision.id === provision.provision_id); - const nfrProvision = nfrProvisions.find((p) => p.id === provision.provision_id); - - if (nfrDataProvision && nfrDataProvision.provision_free_text != nfrProvision.free_text) { - // Update an existing NFRDataProvision entry - nfrDataProvision.provision_free_text = nfrProvision.free_text; - await this.nfrDataProvisionRepository.save(nfrDataProvision); - } else if (!nfrDataProvision) { - // No data found for this specific provision so create a new entry in NFRDataProvision - const nfrProvisionToAdd = await this.nfrProvisionRepository.findOneBy({ - id: provision.provision_id, - }); - const newNfrDataProvision: NFRDataProvision = this.nfrDataProvisionRepository.create({ - nfr_provision: nfrProvisionToAdd, - nfr_data: updatedNfrData, - provision_free_text: nfrProvisionToAdd.free_text, // quick fix - }); - await this.nfrDataProvisionRepository.save(newNfrDataProvision); - } - } - - // Update NFRDataVariable entities - for (const variable of variableArray) { - const nfrDataVariable = nfrData.nfr_data_variables.find((v) => v.nfr_variable.id === variable.variable_id); - - if (nfrDataVariable && nfrDataVariable.data_variable_value != variable.variable_value) { - // Update an existing NFRDataVariable entry - nfrDataVariable.data_variable_value = variable.variable_value; - await this.nfrDataVariableRepository.save(nfrDataVariable); - } else if (!nfrDataVariable) { - // No data found for this specific variable so create a new entry in NFRDataVariable - const nfrVariable = await this.nfrProvisionVariableRepository.findOneBy({ - id: variable.variable_id, - }); - const newNfrDataVariable: NFRDataVariable = this.nfrDataVariableRepository.create({ - nfr_variable: nfrVariable, - nfr_data: updatedNfrData, - data_variable_value: variable.variable_value, - }); - await this.nfrDataVariableRepository.save(newNfrDataVariable); - } - } - await this.deleteDataVarsAndProvs(nfrData, provisionArray, variableArray); - - return updatedNfrData; - } - - async deleteDataVarsAndProvs( - nfrData: NFRData, - provisionArray: { provision_id: number; free_text: string }[], - variableArray: { variable_id: number; variable_value: string }[] - ) { - // Delete data provisions that have been removed by the user - const oldProvisionIds = nfrData - ? nfrData.nfr_data_provisions.map((dataProvision) => dataProvision.nfr_provision.id) - : []; - const newProvisionIds = provisionArray.map(({ provision_id }) => provision_id); - const provisionsToDelete = oldProvisionIds.filter((item) => !newProvisionIds.includes(item)); - const nfrDataProvisionsToDelete = nfrData.nfr_data_provisions - .filter((dataProvision) => provisionsToDelete.includes(dataProvision.nfr_provision.id)) - .map((dataProvision) => dataProvision.id); - if (nfrDataProvisionsToDelete.length > 0) { - await this.nfrDataProvisionRepository.delete(nfrDataProvisionsToDelete); - } - - // Delete data variables that have been removed by the user - const oldVariableIds = nfrData - ? nfrData.nfr_data_variables.map((dataVariable) => dataVariable.nfr_variable.id) - : []; - const newVariableIds = variableArray.map(({ variable_id }) => variable_id); - const variablesToDelete = oldVariableIds.filter((item) => !newVariableIds.includes(item)); - const nfrDataVariablesToDelete = nfrData.nfr_data_variables - .filter((dataVariable) => variablesToDelete.includes(dataVariable.nfr_variable.id)) - .map((dataVariable) => dataVariable.id); - if (nfrDataVariablesToDelete.length > 0) { - await this.nfrDataVariableRepository.delete(nfrDataVariablesToDelete); - } - return null; - } - - // Used by the search page. - // Variant data is persisted so only return the active variant foreach dtid. - async findAll(): Promise { - return await this.nfrDataRepository.find({ - where: { - active: true, - }, - }); - } - - async findByNfrDataId(nfrDataId: number): Promise<{ - nfrData: NFRData; - provisionIds: number[]; - variableIds: number[]; - }> { - try { - const nfrData = await this.nfrDataRepository.findOne({ - where: { id: nfrDataId }, - join: { - alias: 'nfr_data', - leftJoinAndSelect: { - nfr_data_provisions: 'nfr_data.nfr_data_provisions', - nfr_provision: 'nfr_data_provisions.nfr_provision', - nfr_data_variables: 'nfr_data.nfr_data_variables', - nfr_variable: 'nfr_data_variables.nfr_variable', - }, - }, - }); - const existingDataProvisions = nfrData.nfr_data_provisions; - const provisionIds = existingDataProvisions.map((dataProvision) => dataProvision.nfr_provision.id); - const existingDataVariables = nfrData.nfr_data_variables; - const variableIds = existingDataVariables.map((dataVariable) => dataVariable.nfr_variable.id); - return { nfrData, provisionIds, variableIds }; - } catch (err) { - console.log(err); - return null; - } - } - - async findActiveByDtid(dtid: number): Promise<{ - nfrData: NFRData; - provisionIds: number[]; - variableIds: number[]; - }> { - try { - const nfrData = await this.nfrDataRepository.findOne({ - where: { dtid: dtid, active: true }, - join: { - alias: 'nfr_data', - leftJoinAndSelect: { - nfr_data_provisions: 'nfr_data.nfr_data_provisions', - nfr_provision: 'nfr_data_provisions.nfr_provision', - nfr_data_variables: 'nfr_data.nfr_data_variables', - nfr_variable: 'nfr_data_variables.nfr_variable', - }, - }, - }); - const provisionIds = - nfrData && nfrData.nfr_data_provisions - ? nfrData.nfr_data_provisions.map((dataProvision) => dataProvision.nfr_provision.id) - : []; - const variableIds = - nfrData && nfrData.nfr_data_variables - ? nfrData.nfr_data_variables.map((dataVariable) => dataVariable.nfr_variable.id) - : []; - return { nfrData, provisionIds, variableIds }; - } catch (err) { - console.log(err); - return null; - } - } - - async findViewByNFRDataId(nfrDataId: number): Promise { - return this.dataSource.manager.findOneBy(NFRDataView, { - NFRDataId: nfrDataId, - }); - } - - async getVariablesByVariantAndDtid(variantName: string, dtid: number) { - const nfrData: NFRData = await this.nfrDataRepository.findOne({ - where: { dtid: dtid, variant_name: variantName }, - join: { - alias: 'nfr_data', - leftJoinAndSelect: { - nfr_data_variables: 'nfr_data.nfr_data_variables', - nfr_variable: 'nfr_data_variables.nfr_variable', - }, - }, - }); - // if the nfrData doesn't exist yet, return null. This null value is caught elsewhere. - if (!nfrData) { - return null; - } - // saved variables attached to the nfrData entry - const existingDataVariables: NFRDataVariable[] = nfrData.nfr_data_variables; - // all variables associated with the variant - const variables: NFRProvisionVariable[] = await this.nfrProvisionService.getVariablesByVariant( - nfrData.variant_name - ); - // inserting the existing variable_values to the set of all variables - for (const variable of variables) { - const existingDataVariable = existingDataVariables.find( - (dataVariable) => dataVariable.nfr_variable.id === variable.id - ); - if (existingDataVariable) { - variable.variable_value = existingDataVariable.data_variable_value; - } - } - const variableIds = existingDataVariables.map((dataVariable) => dataVariable.nfr_variable.id); - return { variables, variableIds }; - } - - async getProvisionsByVariantAndDtid(variantName: string, dtid: number) { - const nfrData: NFRData = await this.nfrDataRepository.findOne({ - where: { dtid: dtid, variant_name: variantName }, - join: { - alias: 'nfr_data', - leftJoinAndSelect: { - nfr_data_provisions: 'nfr_data.nfr_data_provisions', - nfr_provision: 'nfr_data_provisions.nfr_provision', - }, - }, - }); - // if the nfrData doesn't exist yet, return null. This null value is caught elsewhere. - if (!nfrData) { - return null; - } - // nfrData for all variants of this dtid - const fullNfrData: NFRData[] = await this.nfrDataRepository.find({ - where: { dtid: nfrData.dtid }, - join: { - alias: 'nfr_data', - leftJoinAndSelect: { - nfr_data_provisions: 'nfr_data.nfr_data_provisions', - nfr_provision: 'nfr_data_provisions.nfr_provision', - }, - }, - }); - - // saved provisions attached to the dtid - const existingDataProvisions: NFRDataProvision[] = []; - fullNfrData.forEach((nfrData) => { - existingDataProvisions.push(...nfrData.nfr_data_provisions); - }); - // all provisions - const provisions: NFRProvision[] = await this.nfrProvisionService.getAllProvisions(); - const provisionIds = existingDataProvisions.map((dataProvision) => dataProvision.nfr_provision.id); - return { provisions, provisionIds }; - } - - async getEnabledProvisionsByVariantAndDtid(variantName: string, dtid: number) { - const nfrData: NFRData = await this.nfrDataRepository.findOne({ - where: { variant_name: variantName, dtid: dtid }, - join: { - alias: 'nfr_data', - leftJoinAndSelect: { - nfr_data_provisions: 'nfr_data.nfr_data_provisions', - nfr_provision: 'nfr_data_provisions.nfr_provision', - }, - }, - }); - const provisionIds = - nfrData && nfrData.nfr_data_provisions - ? nfrData.nfr_data_provisions.map((dataProvision) => dataProvision.nfr_provision.id) - : []; - return provisionIds; - } - - async remove(dtid: number): Promise<{ deleted: boolean; message?: string }> { - try { - await this.nfrDataRepository.delete({ dtid: dtid }); - return { deleted: true }; - } catch (err) { - return { deleted: false, message: err.message }; - } - } - - async makeActive(dtid: number, variant_name: string): Promise { - await this.nfrDataRepository.update({ dtid: dtid }, { active: false }); - await this.nfrDataRepository.update({ dtid: dtid, variant_name: variant_name }, { active: true }); - } -} diff --git a/backend/src/nfr_data_log/dto/create-nfr_data_log.dto.ts b/backend/src/nfr_data_log/dto/create-nfr_data_log.dto.ts deleted file mode 100644 index 95de3a5e..00000000 --- a/backend/src/nfr_data_log/dto/create-nfr_data_log.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { NFRDataLogDto } from './nfr_data_log.dto'; - -export class CreateNFRDataLogDto extends PickType(NFRDataLogDto, [ - 'document_template_id', - 'nfr_data_id', - 'dtid', - 'request_app_user', - 'request_json', - 'create_userid', -] as const) {} diff --git a/backend/src/nfr_data_log/dto/update-nfr_data_log.dto.ts b/backend/src/nfr_data_log/dto/update-nfr_data_log.dto.ts deleted file mode 100644 index 4d7fc5be..00000000 --- a/backend/src/nfr_data_log/dto/update-nfr_data_log.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { NFRDataLogDto } from './nfr_data_log.dto'; - -export class UpdateNFRDataLogDto extends PickType(NFRDataLogDto, [ - 'document_template_id', - 'nfr_data_id', - 'dtid', - 'request_app_user', - 'request_json', - 'update_userid', -] as const) {} diff --git a/backend/src/nfr_data_log/nfr_data_log.controller.ts b/backend/src/nfr_data_log/nfr_data_log.controller.ts deleted file mode 100644 index 06d02b4b..00000000 --- a/backend/src/nfr_data_log/nfr_data_log.controller.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Body, Controller, Get, Param, Post } from '@nestjs/common'; -import { CreateNFRDataLogDto } from './dto/create-nfr_data_log.dto'; -import { NFRDataLog } from './entities/nfr_data_log.entity'; -import { NFRDataLogService } from './nfr_data_log.service'; - -@Controller('nfr-data-log') -export class NFRDataLogController { - constructor(private readonly nfrDataLogService: NFRDataLogService) {} - - @Post() - async create( - @Body() - nfrDataLog: CreateNFRDataLogDto - ): Promise { - return this.nfrDataLogService.create(nfrDataLog); - } - - @Get() - findAll(): Promise { - return this.nfrDataLogService.findAll(); - } - - @Get(':dtid') - findByDtid(@Param('dtid') dtid: string): Promise { - return this.nfrDataLogService.findByDtid(+dtid); - } - - @Get('version/:dtid') - findNextVersion(@Param('dtid') dtid: string): Promise { - return this.nfrDataLogService.findNextVersion(+dtid); - } -} diff --git a/backend/src/nfr_data_log/nfr_data_log.module.ts b/backend/src/nfr_data_log/nfr_data_log.module.ts deleted file mode 100644 index 9594d5de..00000000 --- a/backend/src/nfr_data_log/nfr_data_log.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { NFRDataLog } from './entities/nfr_data_log.entity'; -import { NFRDataLogController } from './nfr_data_log.controller'; -import { NFRDataLogService } from './nfr_data_log.service'; - -@Module({ - imports: [TypeOrmModule.forFeature([NFRDataLog])], - controllers: [NFRDataLogController], - providers: [NFRDataLogService], -}) -export class NFRDataLogModule {} diff --git a/backend/src/nfr_data_log/nfr_data_log.service.ts b/backend/src/nfr_data_log/nfr_data_log.service.ts deleted file mode 100644 index bee32fc7..00000000 --- a/backend/src/nfr_data_log/nfr_data_log.service.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { CreateNFRDataLogDto } from './dto/create-nfr_data_log.dto'; -import { NFRDataLog } from './entities/nfr_data_log.entity'; - -@Injectable() -export class NFRDataLogService { - constructor( - @InjectRepository(NFRDataLog) - private nfrDataLogRepository: Repository - ) {} - - async create(nfrDataLog: CreateNFRDataLogDto): Promise { - const newItem = new NFRDataLog(); - newItem.document_template_id = nfrDataLog.document_template_id; - newItem.nfr_data_id = nfrDataLog.nfr_data_id; - newItem.dtid = nfrDataLog.dtid; - newItem.request_app_user = nfrDataLog.request_app_user; - newItem.request_json = nfrDataLog.request_json; - newItem.create_userid = nfrDataLog.request_app_user; // same as request_app_user - const newPRL = this.nfrDataLogRepository.create(newItem); - return this.nfrDataLogRepository.save(newPRL); - } - - async findAll(): Promise { - return this.nfrDataLogRepository.find(); - } - - async findByDtid(dtid: number): Promise { - return this.nfrDataLogRepository.find({ - where: { - document_template_id: dtid, - }, - }); - } - - async findNextVersion(dtid: number): Promise { - const requestLogs = await this.nfrDataLogRepository.findAndCount({ - where: { - dtid: dtid, - }, - }); - let version = (requestLogs[1] + 1).toString(); - // prepend zeroes to the version before returning - while (version.length < 4) { - version = '0' + version; - } - return version; - } -} diff --git a/backend/src/nfr_provision/entities/nfr_provision.entity.ts b/backend/src/nfr_provision/entities/nfr_provision.entity.ts deleted file mode 100644 index 5a7d680e..00000000 --- a/backend/src/nfr_provision/entities/nfr_provision.entity.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { - Column, - CreateDateColumn, - Entity, - JoinTable, - ManyToMany, - ManyToOne, - OneToMany, - PrimaryGeneratedColumn, - UpdateDateColumn, -} from 'typeorm'; -import { NFRProvisionGroup } from './nfr_provision_group.entity'; -import { NFRProvisionVariant } from './nfr_provision_variant.entity'; -import { NFRProvisionVariable } from './nfr_provision_variable.entity'; -import { NFRDataProvision } from 'src/nfr_data/entities/nfr_data_provision.entity'; - -@Entity() -export class NFRProvision { - @PrimaryGeneratedColumn() - id: number; - @Column({ nullable: true }) - type: string; - @Column({ nullable: true }) - provision_name: string; - @Column({ nullable: true }) - free_text: string; - @Column({ nullable: true }) - help_text: string; - @Column({ nullable: true }) - category: string; - @Column({ nullable: true }) - active_flag: boolean; - @Column({ nullable: true }) - create_userid: string; - @Column({ nullable: true }) - update_userid: string; - @CreateDateColumn() - create_timestamp: Date; - @UpdateDateColumn() - update_timestamp: Date; - @ManyToOne(() => NFRProvisionGroup, (provisionGroup) => provisionGroup.provisions) - provision_group: NFRProvisionGroup; - @OneToMany(() => NFRProvisionVariable, (provisionVariable) => provisionVariable.provision, { - nullable: true, - cascade: true, - }) - provision_variables: NFRProvisionVariable[]; - @ManyToMany(() => NFRProvisionVariant, { - nullable: true, - eager: true, - }) - @JoinTable() - provision_variant: NFRProvisionVariant[]; - @OneToMany(() => NFRDataProvision, (nfrDataProvision) => nfrDataProvision.nfr_provision, { - nullable: true, - cascade: true, - }) - nfr_data_provisions: NFRDataProvision[]; - - constructor( - type?: string, - provision_name?: string, - free_text?: string, - category?: string, - active_flag?: boolean, - create_userid?: string, - update_userid?: string, - provision_group?: NFRProvisionGroup, - provision_variant?: NFRProvisionVariant[] - ) { - this.type = type || ''; - this.provision_name = provision_name || ''; - this.free_text = free_text || ''; - this.category = category || ''; - this.active_flag = active_flag; - this.create_userid = create_userid || ''; - this.update_userid = update_userid || ''; - this.provision_group = provision_group || null; - this.provision_variant = provision_variant; - } -} diff --git a/backend/src/nfr_provision/entities/nfr_provision_group.entity.ts b/backend/src/nfr_provision/entities/nfr_provision_group.entity.ts deleted file mode 100644 index 4adba13d..00000000 --- a/backend/src/nfr_provision/entities/nfr_provision_group.entity.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Entity, Column, PrimaryGeneratedColumn, OneToMany } from 'typeorm'; -import { NFRProvision } from './nfr_provision.entity'; - -/** - * This entity holds group descriptions and provision maximums - * based on group number. Every NFRProvision is associated with - * an NFRProvisionGroup. - */ -@Entity() -export class NFRProvisionGroup { - @PrimaryGeneratedColumn() - id: number; - - @Column({ nullable: true }) - provision_group: number; - - @Column({ nullable: true }) - provision_group_text: string; - - @Column({ nullable: true }) - max: number; - - @OneToMany(() => NFRProvision, (provision) => provision.provision_group, { - nullable: true, - }) - provisions: NFRProvision[]; -} diff --git a/backend/src/nfr_provision/entities/nfr_provision_variant.entity.ts b/backend/src/nfr_provision/entities/nfr_provision_variant.entity.ts deleted file mode 100644 index 72fe58e5..00000000 --- a/backend/src/nfr_provision/entities/nfr_provision_variant.entity.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Entity, Column, PrimaryGeneratedColumn, ManyToMany } from 'typeorm'; -import { NFRProvision } from './nfr_provision.entity'; - -/** - * This entity allows us to associate certain provisions with certain - * variants and to alter those associations easily. This is used - * when loading the NFR report page with relevant provisions. - */ -@Entity() -export class NFRProvisionVariant { - @PrimaryGeneratedColumn() - id: number; - - @Column({ nullable: true }) - variant_name: string; - - @ManyToMany(() => NFRProvision, (provision) => provision.provision_variant, { - nullable: true, - }) - provisions: NFRProvision[]; -} diff --git a/backend/src/nfr_provision/nfr_provision.controller.ts b/backend/src/nfr_provision/nfr_provision.controller.ts deleted file mode 100644 index 8296d6f2..00000000 --- a/backend/src/nfr_provision/nfr_provision.controller.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; -import { CreateNFRProvisionDto } from './dto/create-nfr_provision.dto'; -import { NFRProvisionService } from './nfr_provision.service'; - -@Controller('nfr-provision') -export class NFRProvisionController { - constructor(private readonly nfrProvisionService: NFRProvisionService) {} - - @Post() - async create( - @Body() - nfrProvision: CreateNFRProvisionDto - ) { - return this.nfrProvisionService.create(nfrProvision); - } - - @Post('update') - async update(@Body() nfrProvision: CreateNFRProvisionDto & { id: number }) { - const id = nfrProvision.id; - delete nfrProvision['id']; - return this.nfrProvisionService.update(id, nfrProvision); - } - - @Post('add-variable') - async addVariable( - @Body() - nfrVariable: { - variable_name: string; - variable_value: string; - help_text: string; - provision_id: number; - } - ) { - return this.nfrProvisionService.addVariable(nfrVariable); - } - - @Post('update-variable') - async updateVariable( - @Body() - nfrVariable: { - variable_name: string; - variable_value: string; - help_text: string; - provision_id: number; - id: number; - } - ) { - const id = nfrVariable.id; - delete nfrVariable['id']; - return this.nfrProvisionService.updateVariable(id, nfrVariable); - } - - @Get('remove-variable/:id') - async removeVariable(@Param('id') id: number) { - return this.nfrProvisionService.removeVariable(id); - } - - @Get() - findAll() { - return this.nfrProvisionService.findAll(); - } - - @Get('variables') - findAllVariables() { - return this.nfrProvisionService.findAllVariables(); - } - - @Get(':nfrProvisionId') - findById(@Param('nfrProvisionId') nfrProvisionId: number) { - if (nfrProvisionId && nfrProvisionId != 0) { - return this.nfrProvisionService.findById(nfrProvisionId); - } else { - return null; - } - } - - @Get('variant/:variant') - getProvisionsByVariant(@Param('variant') variantName: string) { - return this.nfrProvisionService.getProvisionsByVariant(variantName); - } - - @Get('enable/:id') - enableProvision(@Param('id') id: number) { - return this.nfrProvisionService.enable(id); - } - - @Get('disable/:id') - disableProvision(@Param('id') id: number) { - return this.nfrProvisionService.disable(id); - } - - // nestjs gets upset when there is no parameter, id is unused - @Get('get-group-max/:id') - getGroupMax(@Param('id') id: number) { - return this.nfrProvisionService.getGroupMax(); - } - - @Get('get-group-max/variant/:variant') - getGroupMaxByDTID(@Param('variant') variantName: string) { - return this.nfrProvisionService.getGroupMaxByVariant(variantName); - } - - @Get('get-provision-variables/variant/:variant') - getVariablesByVariant(@Param('variant') variantName: string) { - console.log('get-provision-variables'); - return this.nfrProvisionService.getVariablesByVariant(variantName); - } - - @Get('get-all-mandatory-provisions/:id') - getMandatoryProvisions() { - return this.nfrProvisionService.getMandatoryProvisions(); - } - - @Get('get-mandatory-provisions/variant/:variant') - getMandatoryProvisionsByVariant(@Param('variant') variantName: string) { - return this.nfrProvisionService.getMandatoryProvisionsByVariant(variantName); - } - - @Get('get-variants-with-ids/:id') - getVariantsWithIds() { - return this.nfrProvisionService.getVariantsWithIds(); - } - - @Delete(':id') - remove(@Param('id') id: number) { - return this.nfrProvisionService.remove(id); - } -} diff --git a/backend/src/nfr_provision/nfr_provision.module.ts b/backend/src/nfr_provision/nfr_provision.module.ts deleted file mode 100644 index 4d0b6da7..00000000 --- a/backend/src/nfr_provision/nfr_provision.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { NFRProvision } from './entities/nfr_provision.entity'; -import { NFRProvisionGroup } from './entities/nfr_provision_group.entity'; -import { NFRProvisionVariant } from './entities/nfr_provision_variant.entity'; -import { NFRProvisionController } from './nfr_provision.controller'; -import { NFRProvisionService } from './nfr_provision.service'; -import { NFRProvisionVariable } from './entities/nfr_provision_variable.entity'; - -@Module({ - imports: [ - TypeOrmModule.forFeature([NFRProvision]), - TypeOrmModule.forFeature([NFRProvisionGroup]), - TypeOrmModule.forFeature([NFRProvisionVariable]), - TypeOrmModule.forFeature([NFRProvisionVariant]), - ], - controllers: [NFRProvisionController], - providers: [NFRProvisionService], - exports: [NFRProvisionService], -}) -export class NFRProvisionModule {} diff --git a/backend/src/nfr_provision/nfr_provision.service.ts b/backend/src/nfr_provision/nfr_provision.service.ts deleted file mode 100644 index 0af752a5..00000000 --- a/backend/src/nfr_provision/nfr_provision.service.ts +++ /dev/null @@ -1,364 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { In, Repository } from 'typeorm'; -import { CreateNFRProvisionDto } from './dto/create-nfr_provision.dto'; -import { NFRProvision } from './entities/nfr_provision.entity'; -import { UpdateNFRProvisionDto } from './dto/update-nfr_provision.dto'; -import { NFRProvisionGroup } from './entities/nfr_provision_group.entity'; -import { NFRProvisionVariant } from './entities/nfr_provision_variant.entity'; -import { NFRProvisionVariable } from './entities/nfr_provision_variable.entity'; - -@Injectable() -export class NFRProvisionService { - constructor( - @InjectRepository(NFRProvision) - private nfrProvisionRepository: Repository, - @InjectRepository(NFRProvisionGroup) - private nfrProvisionGroupRepository: Repository, - @InjectRepository(NFRProvisionVariant) - private nfrProvisionVariantRepository: Repository, - @InjectRepository(NFRProvisionVariable) - private nfrProvisionVariableRepository: Repository - ) {} - - async create(nfrProvision: CreateNFRProvisionDto): Promise { - const variantIds = nfrProvision.variants; - const provision_group = Math.floor(nfrProvision.provision_group); - const provision_group_text = nfrProvision.provision_group_text; - delete nfrProvision['variants']; - delete nfrProvision['provision_group']; - delete nfrProvision['provision_group_text']; - nfrProvision.max = Math.floor(nfrProvision.max); - await this.updateGroupMaximums(provision_group, nfrProvision.max, provision_group_text); - if ((await this.nfrProvisionGroupRepository.countBy({ provision_group })) == 0) { - const newProvisionGroup = this.nfrProvisionGroupRepository.create({ - provision_group, - provision_group_text, - }); - await this.nfrProvisionGroupRepository.save(newProvisionGroup); - } - const nfrProvisionGroup = await this.nfrProvisionGroupRepository.findOneBy({ - provision_group, - }); - const nfrProvisionVariants = await this.nfrProvisionVariantRepository.find({ - where: { id: In(variantIds) }, - }); - const newProvision: NFRProvision = this.nfrProvisionRepository.create({ - ...nfrProvision, - provision_group: nfrProvisionGroup, - provision_variant: nfrProvisionVariants, - }); - return this.nfrProvisionRepository.save(newProvision); - } - - async update(id: number, nfrProvision: UpdateNFRProvisionDto): Promise { - const variantIds = nfrProvision.variants; - const provision_group = Math.floor(nfrProvision.provision_group); - const provision_group_text = nfrProvision.provision_group_text; - delete nfrProvision['variants']; - delete nfrProvision['provision_group']; - delete nfrProvision['provision_group_text']; - nfrProvision.max = Math.floor(nfrProvision.max); - await this.updateGroupMaximums(provision_group, nfrProvision.max, provision_group_text); - const nfrProvisionGroup = await this.nfrProvisionGroupRepository.findOneBy({ - provision_group, - }); - const nfrProvisionVariants = await this.nfrProvisionVariantRepository.find({ - where: { id: In(variantIds) }, - }); - const existingProvision: NFRProvision = await this.nfrProvisionRepository.findOneBy({ id }); - existingProvision.type = nfrProvision.type; - existingProvision.provision_name = nfrProvision.provision_name; - existingProvision.free_text = nfrProvision.free_text; - existingProvision.help_text = nfrProvision.help_text; - existingProvision.category = nfrProvision.category; - existingProvision.update_userid = nfrProvision.update_userid; - const updatedProvision = this.nfrProvisionRepository.create({ - ...existingProvision, - provision_group: nfrProvisionGroup, - provision_variant: nfrProvisionVariants, - }); - return this.nfrProvisionRepository.save(updatedProvision); - } - - async addVariable(nfrVariable: { - variable_name: string; - variable_value: string; - help_text: string; - provision_id: number; - }) { - const nfrProvision = await this.findById(nfrVariable.provision_id); - delete nfrVariable['provision_id']; - const newVariable = this.nfrProvisionVariableRepository.create({ - ...nfrVariable, - provision: nfrProvision, - }); - return this.nfrProvisionVariableRepository.save(newVariable); - } - - async updateVariable( - id: number, - nfrVariable: { - variable_name: string; - variable_value: string; - help_text: string; - provision_id: number; - } - ) { - const nfrProvision = await this.findById(nfrVariable.provision_id); - delete nfrVariable['provision_id']; - const variableToUpdate = await this.nfrProvisionVariableRepository.findOne({ - where: { id: id }, - }); - - if (!variableToUpdate) { - throw new Error('Variable not found'); - } - variableToUpdate.variable_name = nfrVariable.variable_name; - variableToUpdate.variable_value = nfrVariable.variable_value; - variableToUpdate.help_text = nfrVariable.help_text; - variableToUpdate.provision = nfrProvision; - - return this.nfrProvisionVariableRepository.save(variableToUpdate); - } - - async removeVariable(id: number): Promise { - return this.nfrProvisionVariableRepository.delete(id); - } - - async findAll(): Promise { - const nfrProvisions = await this.nfrProvisionRepository.find({ - relations: ['provision_group', 'provision_variant'], - }); - return nfrProvisions.map((nfrProvision) => { - const provisionVariantIds = nfrProvision.provision_variant.map((provisionVariant) => provisionVariant.id); - - delete nfrProvision.provision_group['id']; - delete nfrProvision['provision_variant']; - - return { - ...nfrProvision, - ...nfrProvision.provision_group, - variants: provisionVariantIds, - }; - }); - } - - async findAllVariables(): Promise { - const nfrVariables = await this.nfrProvisionVariableRepository.find({ - relations: ['provision'], - }); - return nfrVariables.map((variable) => { - return { - ...variable, - provision_id: variable.provision.id, - }; - }); - } - - async findById(provisionId: number): Promise { - try { - return this.nfrProvisionRepository.findOne({ - where: { id: provisionId }, - relations: ['provision_group'], - }); - } catch (err) { - console.log(err); - return null; - } - } - - async getAllProvisions(): Promise { - try { - const provisions: NFRProvision[] = await this.nfrProvisionRepository.find({ - relations: ['provision_group'], - }); - return provisions; - } catch (err) { - console.log(err); - return null; - } - } - - async getProvisionsByVariant(variantName: string): Promise { - try { - const variant = await this.nfrProvisionVariantRepository.findOne({ - where: { - variant_name: variantName, - }, - }); - if (!variant) { - return []; - } - const provisions: NFRProvision[] = await this.nfrProvisionRepository.find({ - where: { provision_variant: variant }, - relations: ['provision_group'], - }); - return provisions; - } catch (err) { - console.log(err); - return null; - } - } - - async enable(id: number): Promise { - await this.nfrProvisionRepository.update(id, { - active_flag: true, - }); - return { message: 'Provision Enabled' }; - } - - async disable(id: number): Promise { - await this.nfrProvisionRepository.update(id, { - active_flag: false, - }); - return { message: 'Provision Disabled' }; - } - - async getGroupMax(): Promise { - const nfrProvisions = await this.nfrProvisionRepository.find({ - relations: ['provision_group'], - }); - let nfrProvisionGroups: NFRProvisionGroup[] = []; - nfrProvisions.forEach((nfrProvision) => { - nfrProvisionGroups.push(nfrProvision.provision_group); - }); - nfrProvisionGroups = this.removeDuplicates(nfrProvisionGroups, 'provision_group'); - return Array.from(nfrProvisionGroups).sort((a, b) => a.provision_group - b.provision_group); - } - - async getGroupMaxByVariant(variantName: string): Promise { - try { - const variant = await this.nfrProvisionVariantRepository.findOne({ - where: { - variant_name: variantName.toUpperCase(), - }, - }); - if (!variant) { - return []; - } - const provisions = await this.nfrProvisionRepository.find({ - where: { provision_variant: variant }, - relations: ['provision_group'], - }); - let nfrProvisionGroups: NFRProvisionGroup[] = []; - provisions.forEach((nfrProvision) => { - nfrProvisionGroups.push(nfrProvision.provision_group); - }); - nfrProvisionGroups = this.removeDuplicates(nfrProvisionGroups, 'provision_group'); - return Array.from(nfrProvisionGroups).sort((a, b) => a.provision_group - b.provision_group); - } catch (err) { - console.log(err); - return null; - } - } - - async getVariablesByVariant(variantName: string): Promise { - const variant = await this.nfrProvisionVariantRepository.findOne({ - where: { - variant_name: variantName, - }, - }); - if (!variant) { - return []; - } - const provisions = await this.nfrProvisionRepository.find({ - where: { provision_variant: variant }, - relations: ['provision_variables'], - }); - - const provisionVariables: NFRProvisionVariable[] = []; - provisions.forEach((provision) => { - provision.provision_variables.forEach((variable) => { - variable['provisionId'] = provision.id; - provisionVariables.push(variable); - }); - }); - return provisionVariables; - } - - async getVariablesByDtid(dtid: number): Promise { - // gets ALL provisions - const provisions = await this.nfrProvisionRepository.find({ - relations: ['provision_variables'], - }); - - const provisionVariables: NFRProvisionVariable[] = []; - provisions.forEach((provision) => { - provision.provision_variables.forEach((variable) => { - variable['provisionId'] = provision.id; - provisionVariables.push(variable); - }); - }); - return provisionVariables; - } - - async getMandatoryProvisions(): Promise { - const provisions = await this.nfrProvisionRepository.find({ - where: { type: 'M' }, - }); - return provisions.map((provision) => provision.id); - } - - async getMandatoryProvisionsByVariant(variantName: string): Promise { - const variant = await this.nfrProvisionVariantRepository.findOne({ - where: { - variant_name: variantName, - }, - }); - if (!variant) { - return []; - } - const provisions = await this.nfrProvisionRepository.find({ - where: { provision_variant: variant, type: 'M' }, - }); - return provisions.map((provision) => provision.id); - } - - async getVariantsWithIds(): Promise<{ id: number; variant_name: string }[]> { - const variants = await this.nfrProvisionVariantRepository.find(); - const variantMap = variants.map((variant) => { - return { id: variant.id, variant_name: variant.variant_name }; - }); - return variantMap; - } - - async remove(id: number): Promise<{ deleted: boolean; message?: string }> { - try { - await this.nfrProvisionRepository.delete(id); - return { deleted: true }; - } catch (err) { - return { deleted: false, message: err.message }; - } - } - - async updateGroupMaximums(provision_group: number, max: number, provision_group_text: string) { - let nfrProvisionGroup: NFRProvisionGroup = await this.nfrProvisionGroupRepository.findOneBy({ - provision_group: provision_group, - }); - if (!nfrProvisionGroup) { - const newGroup = this.nfrProvisionGroupRepository.create({ - provision_group: provision_group, - max: max, - provision_group_text: provision_group_text, - }); - nfrProvisionGroup = await this.nfrProvisionGroupRepository.save(newGroup); - } - if (nfrProvisionGroup.max != max || nfrProvisionGroup.provision_group_text != provision_group_text) { - await this.nfrProvisionGroupRepository.update(nfrProvisionGroup.id, { - max: max, - provision_group_text: provision_group_text, - }); - } - } - - removeDuplicates(array: T[], property: keyof T): T[] { - return array.reduce((accumulator, currentObject) => { - const existingObject = accumulator.find((obj) => obj[property] === currentObject[property]); - if (!existingObject) { - accumulator.push(currentObject); - } - return accumulator; - }, []); - } -} diff --git a/backend/src/ormconfig.ts b/backend/src/ormconfig.ts index 21f72c22..39046219 100644 --- a/backend/src/ormconfig.ts +++ b/backend/src/ormconfig.ts @@ -1,16 +1,13 @@ import { TypeOrmModuleOptions } from '@nestjs/typeorm'; -import { PrintRequestDetail } from './print_request_detail/entities/print_request_detail.entity'; -import { PrintRequestLog } from './print_request_log/entities/print_request_log.entity'; +import { DocumentData } from './document_data/entities/document_data.entity'; +import { DocumentDataProvision } from './document_data/entities/document_data_provision.entity'; +import { DocumentDataVariable } from './document_data/entities/document_data_variable.entity'; +import { DocumentDataLog } from './document_data_log/entities/document_data_log.entity'; import { DocumentTemplate } from './document_template/entities/document_template.entity'; -import { PrintRequestDetailView } from './print_request_detail/entities/print_request_detail_vw'; -import { NFRData } from './nfr_data/entities/nfr_data.entity'; -import { NFRDataLog } from './nfr_data_log/entities/nfr_data_log.entity'; -import { NFRProvision } from './nfr_provision/entities/nfr_provision.entity'; -import { NFRProvisionGroup } from './nfr_provision/entities/nfr_provision_group.entity'; -import { NFRProvisionVariable } from './nfr_provision/entities/nfr_provision_variable.entity'; -import { NFRProvisionVariant } from './nfr_provision/entities/nfr_provision_variant.entity'; -import { NFRDataProvision } from './nfr_data/entities/nfr_data_provision.entity'; -import { NFRDataVariable } from './nfr_data/entities/nfr_data_variable.entity'; +import { DocumentType } from './document_type/entities/document_type.entity'; +import { Provision } from './provision/entities/provision.entity'; +import { ProvisionGroup } from './provision/entities/provision_group.entity'; +import { ProvisionVariable } from './provision/entities/provision_variable.entity'; const config: TypeOrmModuleOptions = { type: 'postgres', @@ -20,18 +17,15 @@ const config: TypeOrmModuleOptions = { username: process.env.POSTGRESQL_USER || 'postgres', password: process.env.POSTGRESQL_PASSWORD, entities: [ - PrintRequestDetail, - PrintRequestLog, - NFRData, - NFRDataProvision, - NFRDataVariable, - NFRDataLog, - NFRProvision, - NFRProvisionGroup, - NFRProvisionVariable, - NFRProvisionVariant, + DocumentData, + DocumentDataProvision, + DocumentDataVariable, + DocumentDataLog, + Provision, + ProvisionGroup, + ProvisionVariable, DocumentTemplate, - PrintRequestDetailView, + DocumentType, ], synchronize: true, }; diff --git a/backend/src/print_request_detail/dto/create-print_request_detail.dto.ts b/backend/src/print_request_detail/dto/create-print_request_detail.dto.ts deleted file mode 100644 index f17ded2d..00000000 --- a/backend/src/print_request_detail/dto/create-print_request_detail.dto.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { PrintRequestDetailDto } from './print_request_detail.dto'; - -export class CreatePrintRequestDetailDto extends PickType(PrintRequestDetailDto, [ - 'dtid', - 'tenure_file_number', - 'incorporation_number', - 'organization_unit', - 'purpose_name', - 'sub_purpose_name', - 'type_name', - 'sub_type_name', - 'first_name', - 'middle_name', - 'last_name', - 'legal_name', - 'licence_holder_name', - 'inspected_date', - 'email_address', - 'phone_number', - 'contact_agent', - 'contact_company_name', - 'contact_first_name', - 'contact_middle_name', - 'contact_last_name', - 'contact_phone_number', - 'contact_email_address', - 'mailing_address', - 'mailing_address_line_1', - 'mailing_address_line_2', - 'mailing_address_line_3', - 'mailing_city', - 'mailing_province_state_code', - 'mailing_postal_code', - 'mailing_zip', - 'mailing_country_code', - 'mailing_country', - 'location_description', - 'create_userid', - 'tenure', -] as const) {} diff --git a/backend/src/print_request_detail/dto/print_request_detail.dto.ts b/backend/src/print_request_detail/dto/print_request_detail.dto.ts deleted file mode 100644 index c16cb911..00000000 --- a/backend/src/print_request_detail/dto/print_request_detail.dto.ts +++ /dev/null @@ -1,39 +0,0 @@ -export class PrintRequestDetailDto { - dtid: number; - tenure_file_number: string; - incorporation_number: string; - organization_unit: string; - purpose_name: string; - sub_purpose_name: string; - type_name: string; - sub_type_name: string; - first_name: string; - middle_name: string; - last_name: string; - legal_name: string; - licence_holder_name: string; - email_address: string; - phone_number: string; - contact_agent: string; - contact_company_name: string; - contact_first_name: string; - contact_middle_name: string; - contact_last_name: string; - contact_phone_number: string; - contact_email_address: string; - inspected_date: string; - mailing_address: string; - mailing_address_line_1: string; - mailing_address_line_2: string; - mailing_address_line_3: string; - mailing_city: string; - mailing_province_state_code: string; - mailing_postal_code: string; - mailing_zip: string; - mailing_country_code: string; - mailing_country: string; - location_description: string; - create_userid: string; - update_userid: string; - tenure: string; -} diff --git a/backend/src/print_request_detail/dto/update-print_request_detail.dto.ts b/backend/src/print_request_detail/dto/update-print_request_detail.dto.ts deleted file mode 100644 index ce8b34b6..00000000 --- a/backend/src/print_request_detail/dto/update-print_request_detail.dto.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { PrintRequestDetailDto } from './print_request_detail.dto'; - -export class UpdatePrintRequestDetailDto extends PickType(PrintRequestDetailDto, [ - 'dtid', - 'tenure_file_number', - 'incorporation_number', - 'organization_unit', - 'purpose_name', - 'sub_purpose_name', - 'type_name', - 'sub_type_name', - 'first_name', - 'middle_name', - 'last_name', - 'legal_name', - 'licence_holder_name', - 'email_address', - 'phone_number', - 'contact_agent', - 'contact_company_name', - 'contact_first_name', - 'contact_middle_name', - 'contact_last_name', - 'contact_phone_number', - 'contact_email_address', - 'inspected_date', - 'mailing_address', - 'mailing_address_line_1', - 'mailing_address_line_2', - 'mailing_address_line_3', - 'mailing_city', - 'mailing_province_state_code', - 'mailing_postal_code', - 'mailing_zip', - 'mailing_country_code', - 'mailing_country', - 'location_description', - 'tenure', - 'update_userid', -] as const) {} diff --git a/backend/src/print_request_detail/entities/print_request_detail.entity.ts b/backend/src/print_request_detail/entities/print_request_detail.entity.ts deleted file mode 100644 index f9632d5e..00000000 --- a/backend/src/print_request_detail/entities/print_request_detail.entity.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; - -@Entity() -export class PrintRequestDetail { - @PrimaryGeneratedColumn() - id: number; - @Column({ nullable: true }) - dtid: number; - @Column({ nullable: true }) - tenure_file_number: string; - @Column({ nullable: true }) - incorporation_number: string; - @Column({ nullable: true }) - organization_unit: string; - @Column({ nullable: true }) - purpose_name: string; - @Column({ nullable: true }) - sub_purpose_name: string; - @Column({ nullable: true }) - type_name: string; - @Column({ nullable: true }) - sub_type_name: string; - @Column({ nullable: true }) - licence_holder_name: string; - @Column({ nullable: true }) - contact_agent: string; - @Column({ nullable: true }) - contact_company_name?: string; - @Column({ nullable: true }) - contact_first_name?: string; - @Column({ nullable: true }) - contact_middle_name?: string; - @Column({ nullable: true }) - contact_last_name?: string; - @Column({ nullable: true }) - contact_phone_number?: string; - @Column({ nullable: true }) - contact_email_address?: string; - @Column({ nullable: true }) - first_name: string; - @Column({ nullable: true }) - middle_name: string; - @Column({ nullable: true }) - last_name: string; - @Column({ nullable: true }) - legal_name: string; - @Column({ nullable: true }) - email_address: string; - @Column({ nullable: true }) - phone_number: string; - @Column({ nullable: true }) - inspected_date: string; - @Column({ nullable: true }) - mailing_address: string; - @Column({ nullable: true }) - mailing_address_line_1: string; - @Column({ nullable: true }) - mailing_address_line_2: string; - @Column({ nullable: true }) - mailing_address_line_3: string; - @Column({ nullable: true }) - mailing_city: string; - @Column({ nullable: true }) - mailing_province_state_code: string; - @Column({ nullable: true }) - mailing_postal_code: string; - @Column({ nullable: true }) - mailing_zip: string; - @Column({ nullable: true }) - mailing_country_code: string; - @Column({ nullable: true }) - mailing_country: string; - @Column({ nullable: true }) - location_description: string; - @Column({ nullable: true }) - tenure: string; - @Column({ nullable: true }) - create_userid: string; - @Column({ nullable: true }) - update_userid: string; - @CreateDateColumn() - create_timestamp: Date; - @UpdateDateColumn() - update_timestamp: Date; - - constructor( - dtid?: number, - tenure_file_number?: string, - incorporation_number?: string, - organization_unit?: string, - purpose_name?: string, - sub_purpose_name?: string, - type_name?: string, - sub_type_name?: string, - licence_holder_name?: string, - contact_agent?: string, - contact_company_name?: string, - contact_first_name?: string, - contact_middle_name?: string, - contact_last_name?: string, - contact_phone_number?: string, - contact_email_address?: string, - first_name?: string, - middle_name?: string, - last_name?: string, - legal_name?: string, - email_address?: string, - phone_number?: string, - inspected_date?: string, - mailing_address?: string, - mailing_address_line_1?: string, - mailing_address_line_2?: string, - mailing_address_line_3?: string, - mailing_city?: string, - mailing_province_state_code?: string, - mailing_postal_code?: string, - mailing_zip?: string, - mailing_country_code?: string, - mailing_country?: string, - location_description?: string, - tenure?: string, - create_userid?: string, - update_userid?: string - ) { - this.dtid = dtid || null; - this.tenure_file_number = tenure_file_number || ''; - this.incorporation_number = incorporation_number || ''; - this.organization_unit = organization_unit || ''; - this.purpose_name = purpose_name || ''; - this.sub_purpose_name = sub_purpose_name || ''; - this.type_name = type_name || ''; - this.sub_type_name = sub_type_name || ''; - this.licence_holder_name = licence_holder_name || ''; - this.contact_agent = contact_agent || ''; - this.contact_company_name = contact_company_name || ''; - this.contact_first_name = contact_first_name || ''; - this.contact_middle_name = contact_middle_name || ''; - this.contact_last_name = contact_last_name || ''; - this.contact_phone_number = contact_phone_number || ''; - this.contact_email_address = contact_email_address || ''; - this.first_name = first_name || ''; - this.middle_name = middle_name || ''; - this.last_name = last_name || ''; - this.legal_name = legal_name || ''; - this.email_address = email_address || ''; - this.phone_number = phone_number || ''; - this.inspected_date = inspected_date || ''; - this.mailing_address = mailing_address || ''; - this.mailing_address_line_1 = mailing_address_line_1 || ''; - this.mailing_address_line_2 = mailing_address_line_2 || ''; - this.mailing_address_line_3 = mailing_address_line_3 || ''; - this.mailing_city = mailing_city || ''; - this.mailing_province_state_code = mailing_province_state_code || ''; - this.mailing_postal_code = mailing_postal_code || ''; - this.mailing_zip = mailing_zip || ''; - this.mailing_country_code = mailing_country_code || ''; - this.mailing_country = mailing_country || ''; - this.location_description = location_description || ''; - this.tenure = tenure || ''; - this.create_userid = create_userid || ''; - this.update_userid = update_userid || ''; - } -} diff --git a/backend/src/print_request_detail/entities/print_request_detail_vw.ts b/backend/src/print_request_detail/entities/print_request_detail_vw.ts deleted file mode 100644 index 92811f08..00000000 --- a/backend/src/print_request_detail/entities/print_request_detail_vw.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { DataSource, ViewColumn, ViewEntity } from 'typeorm'; -import { PrintRequestDetail } from './print_request_detail.entity'; - -@ViewEntity({ - expression: (dataSource: DataSource) => - dataSource - .createQueryBuilder() - .select('print_request_detail.id', 'PRDID') - .addSelect('print_request_detail.dtid', 'DTID') - .addSelect('print_request_detail.tenure_file_number', 'FileNum') - .addSelect('print_request_detail.organization_unit', 'OrganizationUnit') - .addSelect('print_request_detail.purpose_name', 'Purpose') - .addSelect('print_request_detail.sub_purpose_name', 'SubPurpose') - .addSelect('print_request_detail.type_name', 'TenureType') - .addSelect('print_request_detail.sub_type_name', 'TenureSubType') - .addSelect('print_request_detail.licence_holder_name', 'LicenceHolderName') - .addSelect('print_request_detail.mailing_address', 'MailingAddress') - .addSelect('print_request_detail.mailing_city', 'MailingCity') - .addSelect('print_request_detail.mailing_province_state_code', 'MailingProv') - .addSelect('print_request_detail.mailing_postal_code', 'PostCode') - .addSelect('print_request_detail.email_address', 'PrimaryContactEmail') - .addSelect('print_request_detail.phone_number', 'PrimaryContactPhone') - .addSelect('print_request_detail.location_description', 'Location') - .addSelect('print_request_detail.tenure', 'Tenure') - .addSelect('print_request_detail.contact_agent', 'ContactAgent') - .addSelect('print_request_detail.contact_email_address', 'ContactAgentEmail') - .addSelect('print_request_detail.contact_phone_number', 'ContactAgentPhone') - .addSelect('print_request_detail.inspected_date', 'InspectionDate') - .addSelect('print_request_detail.incorporation_number', 'IncorporationNumber') - .from(PrintRequestDetail, 'print_request_detail'), -}) -export class PrintRequestDetailView { - @ViewColumn() - DTID: number; - @ViewColumn() - PRDID: number; - @ViewColumn() - FileNum: string; - @ViewColumn() - OrganizationUnit: string; - @ViewColumn() - Purpose: string; - @ViewColumn() - SubPurpose: string; - @ViewColumn() - TenureType: string; - @ViewColumn() - TenureSubType: string; - @ViewColumn() - LicenceHolderName: string; - @ViewColumn() - MailingAddress: string; - @ViewColumn() - MailingCity: string; - @ViewColumn() - MailingProv: string; - @ViewColumn() - PostCode: string; - @ViewColumn() - ContactAgent: string; - @ViewColumn() - ContactAgentEmail: string; - @ViewColumn() - ContactAgentPhone: string; - @ViewColumn() - Tenure: string; - @ViewColumn() - Location: string; - @ViewColumn() - PrimaryContactEmail: string; - @ViewColumn() - PrimaryContactPhone: string; - @ViewColumn() - InspectionDate: string; - @ViewColumn() - IncorporationNumber: string; -} diff --git a/backend/src/print_request_detail/print_request_detail.controller.ts b/backend/src/print_request_detail/print_request_detail.controller.ts deleted file mode 100644 index e2ee6a7d..00000000 --- a/backend/src/print_request_detail/print_request_detail.controller.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; -import { CreatePrintRequestDetailDto } from './dto/create-print_request_detail.dto'; -import { PrintRequestDetailService } from './print_request_detail.service'; - -@Controller('print-request-detail') -export class PrintRequestDetailController { - constructor(private readonly printRequestDetailService: PrintRequestDetailService) {} - - @Post() - async create( - @Body() - data: { - printRequestDetail: CreatePrintRequestDetailDto; - } - ) { - let printRequestDetail = data.printRequestDetail; - return this.printRequestDetailService.create(printRequestDetail); - } - - @Get() - findAll() { - return this.printRequestDetailService.findAll(); - } - - @Get(':dtid') - findByDtid(@Param('dtid') dtid: string) { - return this.printRequestDetailService.findByDtid(+dtid); - } - - @Get('view/:prdid') - findViewByPRDID(@Param('prdid') prdid: string) { - return this.printRequestDetailService.findViewByPRDID(+prdid); - } - - @Delete(':dtid') - remove(@Param('dtid') dtid: string) { - return this.printRequestDetailService.remove(+dtid); - } -} diff --git a/backend/src/print_request_detail/print_request_detail.module.ts b/backend/src/print_request_detail/print_request_detail.module.ts deleted file mode 100644 index 330d5565..00000000 --- a/backend/src/print_request_detail/print_request_detail.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { PrintRequestDetail } from './entities/print_request_detail.entity'; -import { PrintRequestDetailController } from './print_request_detail.controller'; -import { PrintRequestDetailService } from './print_request_detail.service'; - -@Module({ - imports: [TypeOrmModule.forFeature([PrintRequestDetail])], - controllers: [PrintRequestDetailController], - providers: [PrintRequestDetailService], -}) -export class PrintRequestDetailModule {} diff --git a/backend/src/print_request_detail/print_request_detail.service.ts b/backend/src/print_request_detail/print_request_detail.service.ts deleted file mode 100644 index 079e8cef..00000000 --- a/backend/src/print_request_detail/print_request_detail.service.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { DataSource, Repository } from 'typeorm'; -import { CreatePrintRequestDetailDto } from './dto/create-print_request_detail.dto'; -import { PrintRequestDetail } from './entities/print_request_detail.entity'; -import { PrintRequestDetailView } from './entities/print_request_detail_vw'; - -@Injectable() -export class PrintRequestDetailService { - constructor( - @InjectRepository(PrintRequestDetail) - private printRequestDetailRepository: Repository, - private dataSource: DataSource - ) {} - - async create(printRequestDetail: CreatePrintRequestDetailDto): Promise { - const newItem = new PrintRequestDetail(); - newItem.dtid = printRequestDetail.dtid; - newItem.tenure_file_number = printRequestDetail.tenure_file_number; - newItem.incorporation_number = printRequestDetail.incorporation_number; - newItem.organization_unit = printRequestDetail.organization_unit; - newItem.purpose_name = printRequestDetail.purpose_name; - newItem.sub_purpose_name = printRequestDetail.sub_purpose_name; - newItem.type_name = printRequestDetail.type_name; - newItem.sub_type_name = printRequestDetail.sub_type_name; - newItem.first_name = printRequestDetail.first_name; - newItem.middle_name = printRequestDetail.middle_name; - newItem.last_name = printRequestDetail.last_name; - newItem.legal_name = printRequestDetail.legal_name; - newItem.licence_holder_name = printRequestDetail.licence_holder_name; - newItem.contact_agent = printRequestDetail.contact_agent; - newItem.contact_company_name = printRequestDetail.contact_company_name; - newItem.contact_first_name = printRequestDetail.contact_first_name; - newItem.contact_middle_name = printRequestDetail.contact_middle_name; - newItem.contact_last_name = printRequestDetail.contact_last_name; - newItem.contact_phone_number = printRequestDetail.contact_phone_number; - newItem.contact_email_address = printRequestDetail.contact_email_address; - newItem.email_address = printRequestDetail.email_address; - newItem.phone_number = printRequestDetail.phone_number; - newItem.inspected_date = printRequestDetail.inspected_date; - newItem.mailing_address = printRequestDetail.mailing_address; - newItem.mailing_address_line_1 = printRequestDetail.mailing_address_line_1; - newItem.mailing_address_line_2 = printRequestDetail.mailing_address_line_2; - newItem.mailing_address_line_3 = printRequestDetail.mailing_address_line_3; - newItem.mailing_city = printRequestDetail.mailing_city; - newItem.mailing_province_state_code = printRequestDetail.mailing_province_state_code; - newItem.mailing_postal_code = printRequestDetail.mailing_postal_code; - newItem.mailing_zip = printRequestDetail.mailing_zip; - newItem.mailing_country_code = printRequestDetail.mailing_country_code; - newItem.mailing_country = printRequestDetail.mailing_country; - newItem.location_description = printRequestDetail.location_description; - newItem.tenure = printRequestDetail.tenure; - newItem.create_userid = printRequestDetail.create_userid; - - const newPRD = this.printRequestDetailRepository.create(newItem); - return this.convertTenureToJson(await this.printRequestDetailRepository.save(newPRD)); - } - - async findAll(): Promise { - return this.convertTenureToJson(await this.printRequestDetailRepository.find()); - } - - async findByDtid(dtid: number): Promise { - try { - const prd = await this.printRequestDetailRepository.find({ - where: { - dtid: dtid, - }, - }); - return this.convertTenureToJson(prd); - } catch (err) { - console.log(err); - } - } - - async findViewByPRDID(prdid: number): Promise { - let view = await this.dataSource.manager.findOneBy(PrintRequestDetailView, { - PRDID: prdid, - }); - return this.convertTenureToJson(view); - } - - async remove(dtid: number): Promise<{ deleted: boolean; message?: string }> { - try { - await this.printRequestDetailRepository.delete({ dtid: dtid }); - return { deleted: true }; - } catch (err) { - return { deleted: false, message: err.message }; - } - } - - // converts the tenure/Tenure from a json string to a json object before returning - convertTenureToJson(prd: any) { - let p; - if (Array.isArray(prd)) { - if (prd[0].tenure) { - prd = prd.map(function (entry) { - if (entry.tenure) { - p = JSON.parse(entry.tenure); - entry['tenure'] = p; - return entry; - } - }); - return prd; - } else if (prd[0].Tenure) { - prd = prd.map(function (entry) { - if (entry.Tenure) { - p = JSON.parse(entry.Tenure); - entry['Tenure'] = p; - return entry; - } - }); - return prd; - } - } else { - if (prd.tenure) { - p = JSON.parse(prd.tenure); - prd['tenure'] = p; - return prd; - } else if (prd.Tenure) { - p = JSON.parse(prd.Tenure); - prd['Tenure'] = p; - return prd; - } - } - } -} diff --git a/backend/src/print_request_log/dto/create-print_request_log.dto.ts b/backend/src/print_request_log/dto/create-print_request_log.dto.ts deleted file mode 100644 index aafd8209..00000000 --- a/backend/src/print_request_log/dto/create-print_request_log.dto.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { PrintRequestLogDto } from './print_request_log.dto'; - -export class CreatePrintRequestLogDto extends PickType(PrintRequestLogDto, [ - 'document_template_id', - 'print_request_detail_id', - 'dtid', - 'document_type', - 'request_app_user', - 'request_json', - 'create_userid', -] as const) {} diff --git a/backend/src/print_request_log/dto/print_request_log.dto.ts b/backend/src/print_request_log/dto/print_request_log.dto.ts deleted file mode 100644 index a9f34bdc..00000000 --- a/backend/src/print_request_log/dto/print_request_log.dto.ts +++ /dev/null @@ -1,10 +0,0 @@ -export class PrintRequestLogDto { - document_template_id: number; - print_request_detail_id: number; - dtid: number; - document_type: string; - request_app_user: string; - request_json: string; - create_userid: string; - update_userid: string; -} diff --git a/backend/src/print_request_log/dto/update-print_request_log.dto.ts b/backend/src/print_request_log/dto/update-print_request_log.dto.ts deleted file mode 100644 index 7ef40925..00000000 --- a/backend/src/print_request_log/dto/update-print_request_log.dto.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { PickType } from '@nestjs/swagger'; -import { PrintRequestLogDto } from './print_request_log.dto'; - -export class UpdatePrintRequestLogDto extends PickType(PrintRequestLogDto, [ - 'document_template_id', - 'print_request_detail_id', - 'dtid', - 'document_type', - 'request_app_user', - 'request_json', - 'update_userid', -] as const) {} diff --git a/backend/src/print_request_log/entities/print_request_log.entity.ts b/backend/src/print_request_log/entities/print_request_log.entity.ts deleted file mode 100644 index 2bf8ff37..00000000 --- a/backend/src/print_request_log/entities/print_request_log.entity.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; - -@Entity() -export class PrintRequestLog { - @PrimaryGeneratedColumn() - id: number; - @Column({ nullable: true }) - document_template_id: number; - @Column({ nullable: true }) - print_request_detail_id: number; - @Column({ nullable: true }) - dtid: number; - @Column({ nullable: true }) - document_type: string; - @Column({ nullable: true }) - request_app_user: string; - @Column({ nullable: true }) - request_json: string; - @Column({ nullable: true }) - create_userid: string; - @Column({ nullable: true }) - update_userid: string; - @CreateDateColumn({ nullable: true }) - create_timestamp: Date; - @UpdateDateColumn({ nullable: true }) - update_timestamp: Date; - - constructor( - document_template_id?: number, - print_request_detail_id?: number, - dtid?: number, - document_type?: string, - request_app_user?: string, - request_json?: string, - create_userid?: string, - update_userid?: string - ) { - this.document_template_id = document_template_id || null; - this.print_request_detail_id = print_request_detail_id || null; - this.dtid = dtid || null; - this.document_type = document_type || ''; - this.request_app_user = request_app_user || ''; - this.request_json = request_json || ''; - this.create_userid = create_userid || ''; - this.update_userid = update_userid || ''; - } -} diff --git a/backend/src/print_request_log/print_request_log.controller.ts b/backend/src/print_request_log/print_request_log.controller.ts deleted file mode 100644 index be8e7728..00000000 --- a/backend/src/print_request_log/print_request_log.controller.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Body, Controller, Get, Param, Post } from '@nestjs/common'; -import { CreatePrintRequestLogDto } from './dto/create-print_request_log.dto'; -import { PrintRequestLog } from './entities/print_request_log.entity'; -import { PrintRequestLogService } from './print_request_log.service'; -// -@Controller('print-request-log') -export class PrintRequestLogController { - constructor(private readonly printRequestLogService: PrintRequestLogService) {} - - @Post() - async create( - @Body() - printRequestLog: CreatePrintRequestLogDto - ): Promise { - console.log('Creating log entry for requested document!!!'); - return this.printRequestLogService.create(printRequestLog); - } - - @Get() - findAll(): Promise { - return this.printRequestLogService.findAll(); - } - - @Get(':dtid') - findByDtid(@Param('dtid') dtid: string): Promise { - return this.printRequestLogService.findByDtid(+dtid); - } - - @Get('version/:dtid/:documentType') - findNextVersion(@Param('dtid') dtid: string, @Param('documentType') documentType: string): Promise { - return this.printRequestLogService.findNextVersion(+dtid, documentType); - } -} diff --git a/backend/src/print_request_log/print_request_log.module.ts b/backend/src/print_request_log/print_request_log.module.ts deleted file mode 100644 index 2a2000a9..00000000 --- a/backend/src/print_request_log/print_request_log.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { PrintRequestLog } from './entities/print_request_log.entity'; -import { PrintRequestLogController } from './print_request_log.controller'; -import { PrintRequestLogService } from './print_request_log.service'; - -@Module({ - imports: [TypeOrmModule.forFeature([PrintRequestLog])], - controllers: [PrintRequestLogController], - providers: [PrintRequestLogService], - exports: [PrintRequestLogService], -}) -export class PrintRequestLogModule {} diff --git a/backend/src/print_request_log/print_request_log.service.ts b/backend/src/print_request_log/print_request_log.service.ts deleted file mode 100644 index 4fad5350..00000000 --- a/backend/src/print_request_log/print_request_log.service.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { CreatePrintRequestLogDto } from './dto/create-print_request_log.dto'; -import { PrintRequestLog } from './entities/print_request_log.entity'; - -@Injectable() -export class PrintRequestLogService { - constructor( - @InjectRepository(PrintRequestLog) - private printRequestLogRepository: Repository - ) {} - - async create(printRequestLog: CreatePrintRequestLogDto): Promise { - const newItem = new PrintRequestLog(); - newItem.document_template_id = printRequestLog.document_template_id; - newItem.print_request_detail_id = printRequestLog.print_request_detail_id; - newItem.dtid = printRequestLog.dtid; - newItem.document_type = printRequestLog.document_type; - newItem.request_app_user = printRequestLog.request_app_user; - newItem.request_json = printRequestLog.request_json; - newItem.create_userid = printRequestLog.request_app_user; // same as request_app_user - const newPRL = this.printRequestLogRepository.create(newItem); - return this.printRequestLogRepository.save(newPRL); - } - - async findAll(): Promise { - return this.printRequestLogRepository.find(); - } - - async findByDtid(dtid: number): Promise { - return this.printRequestLogRepository.find({ - where: { - document_template_id: dtid, - }, - }); - } - - async findNextVersion(dtid: number, documentType: string): Promise { - let fullDocumentType = ''; - switch (documentType) { - case 'LUR': - fullDocumentType = 'LAND USE REPORT'; - break; - case 'GL': - fullDocumentType = 'GRAZING LEASE'; - break; - default: - fullDocumentType = 'LAND USE REPORT'; - break; - } - const requestLogs = await this.printRequestLogRepository.findAndCount({ - where: { - dtid: dtid, - document_type: fullDocumentType, - }, - }); - let version = (requestLogs[1] + 1).toString(); - // prepend zeroes to the version before returning - while (version.length < 4) { - version = '0' + version; - } - return version; - } -} diff --git a/backend/src/nfr_provision/dto/create-nfr_provision.dto.ts b/backend/src/provision/dto/create-provision.dto.ts similarity index 61% rename from backend/src/nfr_provision/dto/create-nfr_provision.dto.ts rename to backend/src/provision/dto/create-provision.dto.ts index 1b28772f..6f6a32a0 100644 --- a/backend/src/nfr_provision/dto/create-nfr_provision.dto.ts +++ b/backend/src/provision/dto/create-provision.dto.ts @@ -1,7 +1,7 @@ import { PickType } from '@nestjs/swagger'; -import { NFRProvisionDto } from './nfr_provision.dto'; +import { ProvisionDto } from './provision.dto'; -export class CreateNFRProvisionDto extends PickType(NFRProvisionDto, [ +export class CreateProvisionDto extends PickType(ProvisionDto, [ 'dtid', 'type', 'provision_group', @@ -11,6 +11,6 @@ export class CreateNFRProvisionDto extends PickType(NFRProvisionDto, [ 'free_text', 'help_text', 'category', - 'variants', + 'order_value', 'create_userid', ] as const) {} diff --git a/backend/src/nfr_provision/dto/nfr_provision.dto.ts b/backend/src/provision/dto/provision.dto.ts similarity index 82% rename from backend/src/nfr_provision/dto/nfr_provision.dto.ts rename to backend/src/provision/dto/provision.dto.ts index dec487f7..f96e6e59 100644 --- a/backend/src/nfr_provision/dto/nfr_provision.dto.ts +++ b/backend/src/provision/dto/provision.dto.ts @@ -1,4 +1,4 @@ -export class NFRProvisionDto { +export class ProvisionDto { dtid?: number; type?: string; provision_group?: number; @@ -8,7 +8,7 @@ export class NFRProvisionDto { free_text?: string; help_text?: string; category?: string; - variants?: number[]; + order_value?: number; create_userid?: string; update_userid?: string; } diff --git a/backend/src/nfr_provision/dto/update-nfr_provision.dto.ts b/backend/src/provision/dto/update-provision.dto.ts similarity index 61% rename from backend/src/nfr_provision/dto/update-nfr_provision.dto.ts rename to backend/src/provision/dto/update-provision.dto.ts index d986c128..bf5b4c86 100644 --- a/backend/src/nfr_provision/dto/update-nfr_provision.dto.ts +++ b/backend/src/provision/dto/update-provision.dto.ts @@ -1,7 +1,7 @@ import { PickType } from '@nestjs/swagger'; -import { NFRProvisionDto } from './nfr_provision.dto'; +import { ProvisionDto } from './provision.dto'; -export class UpdateNFRProvisionDto extends PickType(NFRProvisionDto, [ +export class UpdateProvisionDto extends PickType(ProvisionDto, [ 'dtid', 'type', 'provision_group', @@ -11,6 +11,6 @@ export class UpdateNFRProvisionDto extends PickType(NFRProvisionDto, [ 'free_text', 'help_text', 'category', - 'variants', + 'order_value', 'update_userid', ] as const) {} diff --git a/backend/src/provision/entities/provision.entity.ts b/backend/src/provision/entities/provision.entity.ts new file mode 100644 index 00000000..1c75b21e --- /dev/null +++ b/backend/src/provision/entities/provision.entity.ts @@ -0,0 +1,93 @@ +import { + Column, + CreateDateColumn, + Entity, + JoinTable, + ManyToMany, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { ProvisionGroup } from './provision_group.entity'; +import { ProvisionVariable } from './provision_variable.entity'; +import { DocumentDataProvision } from 'src/document_data/entities/document_data_provision.entity'; +import { DocumentType } from 'src/document_type/entities/document_type.entity'; + +@Entity() +export class Provision { + @PrimaryGeneratedColumn() + id: number; + @Column({ nullable: true }) + type: string; + @Column({ nullable: true }) + provision_name: string; + @Column({ nullable: true }) + free_text: string; + @Column({ nullable: true }) + help_text: string; + @Column({ nullable: true }) + category: string; + @Column({ nullable: true }) + order_value: number; + @Column({ nullable: true }) + active_flag: boolean; + @Column({ nullable: true }) + is_deleted: boolean; + @Column({ nullable: true }) + create_userid: string; + @Column({ nullable: true }) + update_userid: string; + @CreateDateColumn() + create_timestamp: Date; + @UpdateDateColumn() + update_timestamp: Date; + @ManyToOne(() => ProvisionGroup, (provisionGroup) => provisionGroup.provisions) + provision_group: ProvisionGroup; + @OneToMany(() => ProvisionVariable, (provisionVariable) => provisionVariable.provision, { + nullable: true, + cascade: true, + }) + provision_variables: ProvisionVariable[]; + @OneToMany(() => DocumentDataProvision, (documentDataProvision) => documentDataProvision.document_provision, { + nullable: true, + cascade: true, + }) + document_data_provisions: DocumentDataProvision[]; + @ManyToMany(() => DocumentType) + @JoinTable({ + name: 'provision_document_type', + joinColumn: { + name: 'provision_id', + referencedColumnName: 'id', + }, + inverseJoinColumn: { + name: 'document_type_id', + referencedColumnName: 'id', + }, + }) + document_types: DocumentType[]; + + constructor( + type?: string, + provision_name?: string, + free_text?: string, + category?: string, + active_flag?: boolean, + order_value?: number, + create_userid?: string, + update_userid?: string, + provision_group?: ProvisionGroup + ) { + this.type = type || ''; + this.provision_name = provision_name || ''; + this.free_text = free_text || ''; + this.category = category || ''; + this.active_flag = active_flag || true; + this.order_value = order_value || null; + this.create_userid = create_userid || ''; + this.update_userid = update_userid || ''; + this.provision_group = provision_group || null; + this.is_deleted = false; + } +} diff --git a/backend/src/provision/entities/provision_group.entity.ts b/backend/src/provision/entities/provision_group.entity.ts new file mode 100644 index 00000000..29cbee24 --- /dev/null +++ b/backend/src/provision/entities/provision_group.entity.ts @@ -0,0 +1,31 @@ +import { Entity, Column, PrimaryGeneratedColumn, OneToMany, ManyToMany, ManyToOne } from 'typeorm'; +import { Provision } from './provision.entity'; +import { DocumentType } from 'src/document_type/entities/document_type.entity'; + +/** + * This entity holds group descriptions and provision maximums + * based on group number. Every Provision is associated with + * a ProvisionGroup. + */ +@Entity() +export class ProvisionGroup { + @PrimaryGeneratedColumn() + id: number; + + @Column({ nullable: true }) + provision_group: number; + + @Column({ nullable: true }) + provision_group_text: string; + + @Column({ nullable: true }) + max: number; + + @ManyToOne(() => DocumentType, (documentType) => documentType.provision_groups) + document_type: DocumentType; + + @OneToMany(() => Provision, (provision) => provision.provision_group, { + nullable: true, + }) + provisions: Provision[]; +} diff --git a/backend/src/nfr_provision/entities/nfr_provision_variable.entity.ts b/backend/src/provision/entities/provision_variable.entity.ts similarity index 64% rename from backend/src/nfr_provision/entities/nfr_provision_variable.entity.ts rename to backend/src/provision/entities/provision_variable.entity.ts index 850884c8..a277dafd 100644 --- a/backend/src/nfr_provision/entities/nfr_provision_variable.entity.ts +++ b/backend/src/provision/entities/provision_variable.entity.ts @@ -1,4 +1,4 @@ -import { NFRDataVariable } from 'src/nfr_data/entities/nfr_data_variable.entity'; +import { DocumentDataVariable } from 'src/document_data/entities/document_data_variable.entity'; import { Entity, Column, @@ -8,7 +8,7 @@ import { CreateDateColumn, UpdateDateColumn, } from 'typeorm'; -import { NFRProvision } from './nfr_provision.entity'; +import { Provision } from './provision.entity'; /** * This entity holds variables associated with a provision. @@ -16,7 +16,7 @@ import { NFRProvision } from './nfr_provision.entity'; * inserted into the provision text. */ @Entity() -export class NFRProvisionVariable { +export class ProvisionVariable { @PrimaryGeneratedColumn() id: number; @Column({ nullable: true }) @@ -33,13 +33,13 @@ export class NFRProvisionVariable { create_timestamp: Date; @UpdateDateColumn() update_timestamp: Date; - @ManyToOne(() => NFRProvision, (provision) => provision.provision_variables, { + @ManyToOne(() => Provision, (provision) => provision.provision_variables, { nullable: true, }) - provision: NFRProvision; - @OneToMany(() => NFRDataVariable, (nfrDataVariable) => nfrDataVariable.nfr_variable, { + provision: Provision; + @OneToMany(() => DocumentDataVariable, (documentDataVariable) => documentDataVariable.document_variable, { nullable: true, cascade: true, }) - nfr_data_variables: NFRDataVariable[]; + document_data_variables: DocumentDataVariable[]; } diff --git a/backend/src/provision/provision.controller.ts b/backend/src/provision/provision.controller.ts new file mode 100644 index 00000000..99d3b5ae --- /dev/null +++ b/backend/src/provision/provision.controller.ts @@ -0,0 +1,102 @@ +import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; +import { CreateProvisionDto } from './dto/create-provision.dto'; +import { ProvisionService } from './provision.service'; + +@Controller('provision') +export class ProvisionController { + constructor(private readonly provisionService: ProvisionService) {} + + @Post() + async create( + @Body() + provision: CreateProvisionDto + ) { + return this.provisionService.create(provision); + } + + // @Post('update') + // async update(@Body() provision: CreateProvisionDto & { id: number }) { + // const id = provision.id; + // delete provision['id']; + // return this.provisionService.update(id, provision); + // } + + @Post('add-variable') + async addVariable( + @Body() + variable: { + variable_name: string; + variable_value: string; + help_text: string; + provision_id: number; + create_userid: string; + } + ) { + return this.provisionService.addVariable(variable); + } + + @Post('update-variable') + async updateVariable( + @Body() + variable: { + variable_name: string; + variable_value: string; + help_text: string; + provision_id: number; + id: number; + update_userid: string; + } + ) { + return this.provisionService.updateVariable(variable); + } + + @Get('remove-variable/:id') + async removeVariable(@Param('id') id: number) { + return this.provisionService.removeVariable(id); + } + + @Get() + findAll() { + return this.provisionService.findAll(); + } + + @Get('variables') + findAllVariables() { + return this.provisionService.findAllVariables(); + } + + @Get(':provisionId') + findById(@Param('provisionId') provisionId: number) { + if (provisionId && provisionId != 0) { + return this.provisionService.findById(provisionId); + } else { + return null; + } + } + + @Get('enable/:id') + enableProvision(@Param('id') id: number) { + return this.provisionService.enable(id); + } + + @Get('disable/:id') + disableProvision(@Param('id') id: number) { + return this.provisionService.disable(id); + } + + // nestjs gets upset when there is no parameter, id is unused + @Get('get-group-max/:id') + getGroupMax(@Param('id') id: number) { + return this.provisionService.getGroupMax(); + } + + @Get('get-all-mandatory-provisions/:id') + getMandatoryProvisions() { + return this.provisionService.getMandatoryProvisions(); + } + + @Get('remove/:id') + remove(@Param('id') id: number) { + return this.provisionService.remove(id); + } +} diff --git a/backend/src/provision/provision.module.ts b/backend/src/provision/provision.module.ts new file mode 100644 index 00000000..a3e714a4 --- /dev/null +++ b/backend/src/provision/provision.module.ts @@ -0,0 +1,21 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Provision } from './entities/provision.entity'; +import { ProvisionGroup } from './entities/provision_group.entity'; +import { ProvisionController } from './provision.controller'; +import { ProvisionService } from './provision.service'; +import { ProvisionVariable } from './entities/provision_variable.entity'; +import { DocumentTypeModule } from 'src/document_type/document_type.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([Provision]), + TypeOrmModule.forFeature([ProvisionGroup]), + TypeOrmModule.forFeature([ProvisionVariable]), + DocumentTypeModule, + ], + controllers: [ProvisionController], + providers: [ProvisionService], + exports: [ProvisionService], +}) +export class ProvisionModule {} diff --git a/backend/src/provision/provision.service.ts b/backend/src/provision/provision.service.ts new file mode 100644 index 00000000..056181cc --- /dev/null +++ b/backend/src/provision/provision.service.ts @@ -0,0 +1,325 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { CreateProvisionDto } from './dto/create-provision.dto'; +import { Provision } from './entities/provision.entity'; +import { UpdateProvisionDto } from './dto/update-provision.dto'; +import { ProvisionGroup } from './entities/provision_group.entity'; +import { ProvisionVariable } from './entities/provision_variable.entity'; +import { DocumentTypeService } from 'src/document_type/document_type.service'; +import { DocumentType } from 'src/document_type/entities/document_type.entity'; + +@Injectable() +export class ProvisionService { + constructor( + @InjectRepository(Provision) + private provisionRepository: Repository, + @InjectRepository(ProvisionGroup) + private provisionGroupRepository: Repository, + @InjectRepository(ProvisionVariable) + private provisionVariableRepository: Repository, + private documentTypeService: DocumentTypeService + ) {} + + async create(provision: CreateProvisionDto): Promise { + const provision_group = Math.floor(provision.provision_group); + const provision_group_text = provision.provision_group_text; + delete provision['provision_group']; + delete provision['provision_group_text']; + provision.max = Math.floor(provision.max); + await this.updateGroupMaximums(provision_group, provision.max, provision_group_text); + if ((await this.provisionGroupRepository.countBy({ provision_group })) == 0) { + const newProvisionGroup = this.provisionGroupRepository.create({ + provision_group, + provision_group_text, + }); + await this.provisionGroupRepository.save(newProvisionGroup); + } + const provisionGroup = await this.provisionGroupRepository.findOneBy({ + provision_group, + }); + const newProvision: Provision = this.provisionRepository.create({ + ...provision, + provision_group: provisionGroup, + }); + return this.provisionRepository.save(newProvision); + } + + async update(id: number, document_type_ids: number[], provision: UpdateProvisionDto): Promise { + const provision_group = Math.floor(provision.provision_group); + const provision_group_text = provision.provision_group_text; + delete provision['provision_group']; + delete provision['provision_group_text']; + provision.max = Math.floor(provision.max); + await this.updateGroupMaximums(provision_group, provision.max, provision_group_text); + const provisionGroup = await this.provisionGroupRepository.findOneBy({ + provision_group, + }); + const existingProvision: Provision = await this.provisionRepository.findOneBy({ id }); + + const documentTypes: DocumentType[] = await this.documentTypeService.findByIds(document_type_ids); + + existingProvision.type = provision.type; + existingProvision.provision_name = provision.provision_name; + existingProvision.free_text = provision.free_text; + existingProvision.help_text = provision.help_text; + existingProvision.category = provision.category; + existingProvision.order_value = provision.order_value; + existingProvision.update_userid = provision.update_userid; + existingProvision.document_types = documentTypes; + const updatedProvision = this.provisionRepository.create({ + ...existingProvision, + provision_group: provisionGroup, + }); + return this.provisionRepository.save(updatedProvision); + } + + async addVariable(variable: { + variable_name: string; + variable_value: string; + help_text: string; + provision_id: number; + create_userid: string; + }) { + const provision = await this.findById(variable.provision_id); + delete variable['provision_id']; + const newVariable = this.provisionVariableRepository.create({ + ...variable, + provision: provision, + }); + return this.provisionVariableRepository.save(newVariable); + } + + async updateVariable(variable: { + id: number; + variable_name: string; + variable_value: string; + help_text: string; + provision_id: number; + update_userid: string; + }) { + const provision = await this.findById(variable.provision_id); + delete variable['provision_id']; + const variableToUpdate = await this.provisionVariableRepository.findOne({ + where: { id: variable.id }, + }); + + if (!variableToUpdate) { + throw new Error('Variable not found'); + } + variableToUpdate.variable_name = variable.variable_name; + variableToUpdate.variable_value = variable.variable_value; + variableToUpdate.help_text = variable.help_text; + variableToUpdate.provision = provision; + variableToUpdate.update_userid = variable.update_userid; + + return this.provisionVariableRepository.save(variableToUpdate); + } + + async removeVariable(id: number): Promise { + return this.provisionVariableRepository.delete(id); + } + + async findAll(): Promise { + const provisions = await this.provisionRepository.find({ + where: { is_deleted: false }, + relations: ['provision_group', 'document_types'], + }); + return provisions.map((provision) => { + const { provision_group, document_types, ...restOfProvision } = provision; + delete provision_group['id']; + + return { + ...provision, + ...provision_group, + document_types, + }; + }); + } + + async findAllVariables(): Promise { + const variables = await this.provisionVariableRepository.find({ + relations: ['provision'], + }); + return variables.map((variable) => { + return { + ...variable, + provision_id: variable.provision.id, + }; + }); + } + + async getProvisionsByDocumentTypeId(document_type_id: number): Promise { + const provisions: Provision[] = await this.provisionRepository + .createQueryBuilder('provision') + .innerJoinAndSelect('provision.document_types', 'documentType') + .innerJoinAndSelect('provision.provision_group', 'provisionGroup') + .where('documentType.id = :documentTypeId', { documentTypeId: document_type_id }) + .andWhere('is_deleted = false') + .getMany(); + + return provisions; + } + + // querybuilder is more efficient here + async getVariablesByDocumentTypeId(document_type_id: number) { + const provisions = await this.provisionRepository + .createQueryBuilder('provision') + .innerJoin('provision.document_types', 'documentType', 'documentType.id = :document_type_id', { + document_type_id, + }) + .where('is_deleted = false') + .getMany(); + if (!provisions.length) { + return []; + } + const provisionIds = provisions.map((provision) => provision.id); + const provisionVariables = await this.provisionVariableRepository + .createQueryBuilder('provisionVariable') + .where('provisionVariable.provisionId IN (:...provisionIds)', { provisionIds }) + .leftJoinAndSelect('provisionVariable.provision', 'provision') + .getMany(); + return provisionVariables; + } + + async findById(provisionId: number): Promise { + try { + return this.provisionRepository.findOne({ + where: { id: provisionId }, + relations: ['provision_group'], + }); + } catch (err) { + console.log(err); + return null; + } + } + + async getAllProvisionsByDocTypeId(document_type_id: number): Promise { + try { + const provisions: Provision[] = await this.provisionRepository + .createQueryBuilder('provision') + .innerJoinAndSelect('provision.provision_group', 'provision_group') + .innerJoin('provision_group.document_type', 'document_type') + .where('document_type.id = :document_type_id', { document_type_id }) + .andWhere('is_deleted = false') + .getMany(); + + return provisions; + } catch (err) { + console.log('Error in getAllProvisionsByDocTypeId'); + console.log(err); + return null; + } + } + + async enable(id: number): Promise { + await this.provisionRepository.update(id, { + active_flag: true, + }); + return { message: 'Provision Enabled' }; + } + + async disable(id: number): Promise { + await this.provisionRepository.update(id, { + active_flag: false, + }); + return { message: 'Provision Disabled' }; + } + + async remove(id: number): Promise { + await this.provisionRepository.update(id, { is_deleted: true }); + return { message: 'Provision deleted' }; + } + + async getGroupMax(): Promise { + const provisions = await this.provisionRepository.find({ + relations: ['provision_group'], + }); + let provisionGroups: ProvisionGroup[] = []; + provisions.forEach((provision) => { + provisionGroups.push(provision.provision_group); + }); + provisionGroups = this.removeDuplicates(provisionGroups, 'provision_group'); + return Array.from(provisionGroups).sort((a, b) => a.provision_group - b.provision_group); + } + + async getGroupMaxByDocTypeId(document_type_id: number): Promise { + const provisionGroups = await this.provisionGroupRepository.find({ + where: { document_type: { id: document_type_id } }, + }); + return Array.from(provisionGroups).sort((a, b) => a.provision_group - b.provision_group); + } + + // async getVariablesByDtid(dtid: number): Promise { + // // gets ALL provisions + // const provisions = await this.provisionRepository.find({ + // relations: ['provision_variables'], + // }); + + // const provisionVariables: ProvisionVariable[] = []; + // provisions.forEach((provision) => { + // provision.provision_variables.forEach((variable) => { + // variable['provisionId'] = provision.id; + // provisionVariables.push(variable); + // }); + // }); + // return provisionVariables; + // } + + async getMandatoryProvisions(): Promise { + const provisions = await this.provisionRepository.find({ + where: { type: 'M' }, + }); + return provisions.map((provision) => provision.id); + } + + async getMandatoryProvisionsByDocumentTypeId(document_type_id: number): Promise { + const provisions = await this.provisionRepository + .createQueryBuilder('provision') + .innerJoinAndSelect('provision.document_types', 'documentType') + .where('provision.type = :type', { type: 'M' }) + .andWhere('documentType.id = :documentTypeId', { documentTypeId: document_type_id }) + .getMany(); + + return provisions.map((provision) => provision.id); + } + + // async remove(id: number): Promise<{ deleted: boolean; message?: string }> { + // try { + // await this.provisionRepository.delete(id); + // return { deleted: true }; + // } catch (err) { + // return { deleted: false, message: err.message }; + // } + // } + + async updateGroupMaximums(provision_group: number, max: number, provision_group_text: string) { + let provisionGroup: ProvisionGroup = await this.provisionGroupRepository.findOneBy({ + provision_group: provision_group, + }); + if (!provisionGroup) { + const newGroup = this.provisionGroupRepository.create({ + provision_group: provision_group, + max: max, + provision_group_text: provision_group_text, + }); + provisionGroup = await this.provisionGroupRepository.save(newGroup); + } + if (provisionGroup.max != max || provisionGroup.provision_group_text != provision_group_text) { + await this.provisionGroupRepository.update(provisionGroup.id, { + max: max, + provision_group_text: provision_group_text, + }); + } + } + + removeDuplicates(array: T[], property: keyof T): T[] { + return array.reduce((accumulator, currentObject) => { + const existingObject = accumulator.find((obj) => obj[property] === currentObject[property]); + if (!existingObject) { + accumulator.push(currentObject); + } + return accumulator; + }, []); + } +} diff --git a/backend/src/report/report.controller.ts b/backend/src/report/report.controller.ts index f9e9c8f9..4d582a98 100644 --- a/backend/src/report/report.controller.ts +++ b/backend/src/report/report.controller.ts @@ -38,94 +38,57 @@ export class ReportController { }; } - @Get('get-data/:dtid') - async getData(@Session() session: { data?: SessionData }, @Param('dtid') dtid: number) { - console.log(dtid); - console.log(session); - await this.reportService.getActiveNfrDataByDtid(dtid); - await this.ttlsService.setWebadeToken(); - const response: any = await firstValueFrom(this.ttlsService.callHttp(dtid)) - .then((res) => { - return res; - }) - .catch((err) => { - console.log('callHttp failed'); - console.log(err); - console.log(err.response.data); - }); - return response; - } - - @Get('get-nfr-data/:dtid') - getNfrData(@Session() session: { data?: SessionData }, @Param('dtid') dtid: number) { - console.log('get-nfr-data ~ ' + dtid); - return this.reportService.getActiveNfrDataByDtid(dtid); - } - - @Get('get-report-name/:dtid/:tfn/:documentType') - getReportName( - @Param('dtid') dtid: number, - @Param('tfn') tenureFileNumber: string, - @Param('documentType') documentType: string - ): Promise<{ reportName: string }> { - return this.reportService.generateReportName(dtid, tenureFileNumber, documentType); + // @Get('get-data/:dtid') + // async getData(@Session() session: { data?: SessionData }, @Param('dtid') dtid: number) { + // console.log(dtid); + // console.log(session); + // await this.reportService.getTtlsDataByDtid(dtid); + // await this.ttlsService.setWebadeToken(); + // const response: any = await firstValueFrom(this.ttlsService.callHttp(dtid)) + // .then((res) => { + // return res; + // }) + // .catch((err) => { + // console.log('callHttp failed'); + // console.log(err); + // console.log(err.response.data); + // }); + // return response; + // } + + @Get('get-document-data/:document_type_id/:dtid') + getDocumentDataByDocTypeIdAndDtid( + @Session() session: { data?: SessionData }, + @Param('document_type_id') document_type_id: number, + @Param('dtid') dtid: number + ) { + console.log('get-document-data ~ dtid:' + dtid + ', doctypeid: ' + document_type_id); + return this.reportService.getDocumentDataByDocTypeIdAndDtid(document_type_id, dtid); } - @Get('get-nfr-report-name/:dtid/:tfn') - getNFRReportName( + @Get('get-report-name/:dtid/:tfn/:document_type_id') + getReportNameNew( @Param('dtid') dtid: number, - @Param('tfn') tenureFileNumber: string + @Param('tfn') tenure_file_number: string, + @Param('document_type_id') document_type_id: number ): Promise<{ reportName: string }> { - return this.reportService.generateNFRReportName(dtid, tenureFileNumber); + return this.reportService.generateReportName(dtid, tenure_file_number, document_type_id); } + // remember to update @Post('generate-report') @Header('Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') - @Header('Content-Disposition', 'attachment; filename=landusereport.docx') + @Header('Content-Disposition', 'attachment; filename=report.docx') async generateReport( - @Session() session: { data: SessionData }, - @Body() data: { prdid: string; document_type: string; dtid: number } - ) { - // this should eventually check permissions and prevent unauthorized users from generating documents - let idir_username = ''; - session = { - data: { - activeAccount: { - idir_username: 'mtennant', - name: '', - full_name: '', - client_roles: [''], - }, - }, - ...session, - }; - if (session.data.activeAccount) { - idir_username = session?.data?.activeAccount.idir_username; - console.log('active account found'); - } else { - console.log('no active account found'); - } - if (data.document_type == 'GL') { - return new StreamableFile(await this.reportService.generateGLReport(+data.dtid, idir_username)); - } else { - return new StreamableFile(await this.reportService.generateLURReport(+data.prdid, idir_username)); - } - } - - @Post('generate-nfr-report') - @Header('Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') - @Header('Content-Disposition', 'attachment; filename=nfr-report.docx') - async generateNFRReport( @Session() session: { data: SessionData }, @Body() data: { dtid: number; - variantName: string; + document_type_id: number; variableJson: VariableJSON[]; provisionJson: ProvisionJSON[]; } ) { - // this should eventually check permissions and prevent unauthorized users from generating documents let idir_username = ''; let idir_full_name = ''; if (session?.data?.activeAccount) { @@ -136,9 +99,9 @@ export class ReportController { console.log('no active account found'); } return new StreamableFile( - await this.reportService.generateNFRReport( + await this.reportService.generateReport( data.dtid, - data.variantName, + data.document_type_id, idir_username, idir_full_name, data.variableJson, @@ -147,31 +110,35 @@ export class ReportController { ); } - @Get('get-group-max/:variant') - getGroupMaxByVariant(@Param('variant') variantName: string) { - console.log('variantName: ' + variantName); - return this.reportService.getGroupMaxByVariant(variantName); + @Get('get-group-max/:document_type_id') + getGroupMaxByVariant(@Param('document_type_id') document_type_id: number) { + return this.reportService.getGroupMaxByDocTypeId(document_type_id); } - @Get('nfr-provisions/:variantName/:dtid') - getNFRProvisionsByVariant(@Param('variantName') variantName: string, @Param('dtid') dtid: number): any { - return this.reportService.getNFRProvisionsByVariantAndDtid(variantName, dtid); + @Get('provisions/:document_type_id/:dtid') + getDocumentProvisionsByDocumentTypeId( + @Param('document_type_id') document_type_id: number, + @Param('dtid') dtid: number + ): any { + return this.reportService.getDocumentProvisionsByDocTypeIdAndDtid(document_type_id, dtid); } - @Get('get-provision-variables/:variantName/:dtid') - async getNFRVariablesByVariant(@Param('variantName') variantName: string, @Param('dtid') dtid: number) { - console.log('getting variables for NFR'); - const variables = await this.reportService.getNFRVariablesByVariantAndDtid(variantName, dtid); + @Get('get-provision-variables/:document_type_id/:dtid') + async getDocumentVariablesByDocumentTypeIdAndDtid( + @Param('document_type_id') document_type_id: number, + @Param('dtid') dtid: number + ) { + const variables = await this.reportService.getDocumentVariablesByDocumentTypeIdAndDtid(document_type_id, dtid); return variables; } - @Post('save-nfr') - saveNFR( + @Post('save-document') + saveDocument( @Session() session: { data: SessionData }, @Body() data: { dtid: number; - variant_name: string; + document_type_id: number; status: string; provisionArray: ProvisionJSON[]; variableArray: VariableJSON[]; @@ -184,9 +151,9 @@ export class ReportController { } else { console.log('no active account found'); } - return this.reportService.saveNFR( + return this.reportService.saveDocument( data.dtid, - data.variant_name, + data.document_type_id, data.status, data.provisionArray, data.variableArray, @@ -194,23 +161,26 @@ export class ReportController { ); } - @Get('enabled-provisions/:variantName') - getEnabledProvisionsByVariant(@Param('variantName') variantName: string) { - return this.reportService.getEnabledProvisionsByVariant(variantName); + @Get('enabled-provisions/:document_type_id') + getEnabledProvisionsByDocTypeId(@Param('document_type_id') document_type_id: number) { + return this.reportService.getEnabledProvisionsByDocTypeId(document_type_id); } - @Get('enabled-provisions2/:variantName/:dtid') - getEnabledProvisionsByVariantAndDtid(@Param('variantName') variantName: string, @Param('dtid') dtid: number) { - return this.reportService.getEnabledProvisionsByVariantAndDtid(variantName, dtid); + @Get('enabled-provisions2/:document_type_id/:dtid') + getEnabledProvisionsByDocumentTypeIdDtid( + @Param('document_type_id') document_type_id: number, + @Param('dtid') dtid: number + ) { + return this.reportService.getEnabledProvisionsByDocTypeIdDtid(document_type_id, dtid); } - @Get('search-nfr-data') - getNFRData() { - return this.reportService.getNFRData(); + @Get('search-document-data') + getDocumentData() { + return this.reportService.getDocumentData(); } - @Get('get-mandatory-provisions-by-variant/:variant') - getMandatoryProvisionsByVariant(@Param('variant') variant: string) { - return this.reportService.getMandatoryProvisionsByVariant(variant); + @Get('get-mandatory-provisions-by-document-type-id/:document_type_id') + getMandatoryProvisionsByDocumentTypeId(@Param('document_type_id') document_type_id: number) { + return this.reportService.getMandatoryProvisionsByDocumentTypeId(document_type_id); } } diff --git a/backend/src/report/report.module.ts b/backend/src/report/report.module.ts index 99de75dc..860f6fe2 100644 --- a/backend/src/report/report.module.ts +++ b/backend/src/report/report.module.ts @@ -5,12 +5,23 @@ import { AuthenticationModule } from 'src/authentication/authentication.module'; import { ReportService } from './report.service'; import { HttpModule } from '@nestjs/axios'; import { DocumentTemplateModule } from 'src/document_template/document_template.module'; -import { PrintRequestLogModule } from 'src/print_request_log/print_request_log.module'; -import { NFRProvisionModule } from 'src/nfr_provision/nfr_provision.module'; +import { ProvisionModule } from 'src/provision/provision.module'; +import { DocumentDataModule } from 'src/document_data/document_data.module'; +import { DocumentDataLogModule } from 'src/document_data_log/document_data_log.module'; +import { DocumentDataLogService } from 'src/document_data_log/document_data_log.service'; +import { DocumentTypeModule } from 'src/document_type/document_type.module'; @Module({ - imports: [HttpModule, AuthenticationModule, DocumentTemplateModule, PrintRequestLogModule, NFRProvisionModule], - providers: [TTLSService, ReportService], + imports: [ + HttpModule, + AuthenticationModule, + DocumentTemplateModule, + ProvisionModule, + DocumentDataModule, + DocumentDataLogModule, + DocumentTypeModule, + ], + providers: [TTLSService, ReportService, DocumentDataLogService], exports: [ReportService], controllers: [ReportController], }) diff --git a/backend/src/report/report.service.ts b/backend/src/report/report.service.ts index 6f99c902..a3a652ce 100644 --- a/backend/src/report/report.service.ts +++ b/backend/src/report/report.service.ts @@ -2,14 +2,19 @@ import { Injectable } from '@nestjs/common'; import * as dotenv from 'dotenv'; import { firstValueFrom } from 'rxjs'; import { DocumentTemplateService } from 'src/document_template/document_template.service'; -import { NFRProvisionService } from 'src/nfr_provision/nfr_provision.service'; -import { PrintRequestLogService } from 'src/print_request_log/print_request_log.service'; +import { ProvisionService } from 'src/provision/provision.service'; import { TTLSService } from 'src/ttls/ttls.service'; import { GL_REPORT_TYPE, LUR_REPORT_TYPE, numberWords, sectionTitles } from 'utils/constants'; import { ProvisionJSON, VariableJSON } from 'utils/types'; import { convertToSpecialCamelCase, formatMoney, grazingLeaseVariables, nfrAddressBuilder } from 'utils/util'; +import { DocumentDataService } from 'src/document_data/document_data.service'; +import { DocumentTemplate } from 'src/document_template/entities/document_template.entity'; +import { DocumentDataLogService } from 'src/document_data_log/document_data_log.service'; +import { DocumentTypeService } from 'src/document_type/document_type.service'; const axios = require('axios'); +// generate report needs to be consolidated which is impossible until we figure out how provisions & variables will be dynamically inserted into the docx files + dotenv.config(); let hostname: string; let port: number; @@ -19,39 +24,81 @@ export class ReportService { constructor( private readonly ttlsService: TTLSService, private readonly documentTemplateService: DocumentTemplateService, - private readonly printRequestLogService: PrintRequestLogService, - private readonly nfrProvisionService: NFRProvisionService + private readonly documentDataLogService: DocumentDataLogService, + private readonly provisionService: ProvisionService, + private readonly documentDataService: DocumentDataService, + private readonly documentTypeService: DocumentTypeService ) { hostname = process.env.backend_url ? process.env.backend_url : `http://localhost`; // local development backend port is 3001, docker backend port is 3000 port = process.env.backend_url ? 3000 : 3001; } - /** - * Generates a LUR report name using tenure file number - * and a version number. The version number is incremented - * each time someone generates a LUR report. - * - * @param tenureFileNumber - * @returns - */ - async generateReportName(dtid: number, tenureFileNumber: string, documentType: string) { - const url = `${hostname}:${port}/print-request-log/version/${dtid}/${documentType}`; - // grab the next version string for the dtid - const version = await axios - .get(url, { - headers: { - 'Content-Type': 'application/json', - }, - }) - .then((res) => { - return res.data; - }); + // /** + // * Generates a LUR report name using tenure file number + // * and a version number. The version number is incremented + // * each time someone generates a LUR report. + // * + // * @param tenureFileNumber + // * @returns + // */ + // async generateReportName(dtid: number, tenureFileNumber: string, documentType: string) { + // const url = `${hostname}:${port}/print-request-log/version/${dtid}/${documentType}`; + // // grab the next version string for the dtid + // const version = await axios + // .get(url, { + // headers: { + // 'Content-Type': 'application/json', + // }, + // }) + // .then((res) => { + // return res.data; + // }); + // return { + // reportName: documentType + '_' + tenureFileNumber + '_' + version + '.docx', + // }; + // } + + async generateReportName(dtid: number, tenure_file_number: string, document_type_id: number) { + const version = await this.documentDataLogService.findNextVersion(dtid, document_type_id); + const documentType = await this.documentTypeService.findById(document_type_id); + // probably a better way of doing this + let prefix = 'report'; + if (documentType) { + if (documentType.name.toLowerCase().includes('notice of final review')) { + prefix = 'NFR'; + } else if (documentType.name.toLowerCase().includes('land use report')) { + prefix = 'LUR'; + } else if (documentType.name.toLowerCase().includes('grazing')) { + prefix = 'GL'; + } + } return { - reportName: documentType + '_' + tenureFileNumber + '_' + version + '.docx', + reportName: prefix + '_' + tenure_file_number + '_' + version + '.docx', }; } + async generateReport( + dtid: number, + document_type_id: number, + idirUsername: string, + idirName: string, + variableJson: VariableJSON[], + provisionJson: ProvisionJSON[] + ) { + // For now, hardcode this to call the different static report routes based on document type + const documentType = await this.documentTypeService.findById(document_type_id); + if (documentType) { + if (documentType.name.toLowerCase().includes('notice of final review')) { + return this.generateNFRReport(dtid, document_type_id, idirUsername, idirName, variableJson, provisionJson); + } else if (documentType.name.toLowerCase().includes('land use report')) { + return this.generateLURReport(dtid, idirUsername); + } else if (documentType.name.toLowerCase().includes('grazing')) { + return this.generateGLReport(dtid, idirUsername); + } + } + } + /** * Generates the Land Use Report using CDOGS * @@ -59,6 +106,7 @@ export class ReportService { * @param username * @returns */ + // needs a rewrite as prdid is being removed... async generateLURReport(prdid: number, username: string) { prdid = 1; const documentType = LUR_REPORT_TYPE; @@ -295,40 +343,37 @@ export class ReportService { // return response.data; // } - /** - * Generates an NFR report name using tenure file number - * and a version number. The version number is incremented - * each time someone generates a NFR report. - * - * @param tenureFileNumber - * @returns - */ - async generateNFRReportName(dtid: number, tenureFileNumber: string) { - const url = `${hostname}:${port}/nfr-data-log/version/` + dtid; - // grab the next version string for the dtid - const version = await axios - .get(url, { - headers: { - 'Content-Type': 'application/json', - }, - }) - .then((res) => { - return res.data; - }); - return { reportName: 'NFR_' + tenureFileNumber + '_' + version + '.docx' }; - } + // /** + // * Generates an NFR report name using tenure file number + // * and a version number. The version number is incremented + // * each time someone generates a NFR report. + // * + // * @param tenureFileNumber + // * @returns + // */ + // async generateNFRReportName(dtid: number, tenureFileNumber: string) { + // const url = `${hostname}:${port}/document-data-log/version/` + dtid; + // // grab the next version string for the dtid + // const version = await axios + // .get(url, { + // headers: { + // 'Content-Type': 'application/json', + // }, + // }) + // .then((res) => { + // return res.data; + // }); + // return { reportName: 'NFR_' + tenureFileNumber + '_' + version + '.docx' }; + // } async generateNFRReport( dtid: number, - variantName: string, + document_type_id: number, idirUsername: string, idirName: string, variableJson: VariableJSON[], provisionJson: ProvisionJSON[] ) { - const templateUrl = `${hostname}:${port}/document-template/get-active-report/${variantName}`; - const logUrl = `${hostname}:${port}/nfr-data-log/`; - // get raw ttls data for later await this.ttlsService.setWebadeToken(); const rawData: any = await firstValueFrom(this.ttlsService.callHttp(dtid)) @@ -339,14 +384,7 @@ export class ReportService { console.log(err); }); - // get the document template - const documentTemplateObject: { - id: number; - the_file: string; - document_template: string; - } = await axios.get(templateUrl).then((res) => { - return res.data; - }); + const documentTemplateObject = await this.documentTemplateService.findActiveByDocumentType(document_type_id); // Format variables with names that the document template expects const variables: any = {}; @@ -642,16 +680,17 @@ export class ReportService { const data = Object.assign({}, ttlsData, variables, showProvisionSections); // Log the request - const document_template_id = documentTemplateObject.id; - await axios.post(logUrl, { - document_template_id: document_template_id, + await this.documentDataLogService.create({ dtid: dtid, + document_type_id: document_type_id, + document_template_id: documentTemplateObject?.id, request_app_user: idirUsername, request_json: JSON.stringify(data), + create_userid: idirUsername, }); // Save the NFR Data - await this.saveNFR(dtid, variantName, 'Complete', provisionJson, variableJson, idirUsername); + await this.saveDocument(dtid, document_type_id, 'Complete', provisionJson, variableJson, idirUsername); // Generate the report const cdogsToken = await this.ttlsService.callGetToken(); @@ -703,7 +742,7 @@ export class ReportService { return response2.data; } - async getNFRProvisionsByVariantAndDtid(variantName: string, dtid: number): Promise { + async getDocumentProvisionsByDocTypeIdAndDtid(document_type_id: number, dtid: number): Promise { const returnItems = [ 'type', 'provision_name', @@ -716,16 +755,10 @@ export class ReportService { ]; let reduced, provisions; // nfrDataId exists so return a list of provisions with pre-existing free_text data inserted, certain provisions preselected - const url = `${hostname}:${port}/nfr-data/provisions/${variantName}/${dtid}`; - const nfrProvisions = await axios - .get(url) - .then((res) => { - return res.data; - }) - .catch((err) => console.log(err.response.data)); - if (nfrProvisions) { - const provisionIds = nfrProvisions.provisionIds; - provisions = nfrProvisions.provisions; + const documentProvisions = await this.documentDataService.getProvisionsByDocTypeIdAndDtid(document_type_id, dtid); + if (documentProvisions) { + const provisionIds = documentProvisions.provisionIds; + provisions = documentProvisions.provisions; reduced = provisions.map((obj) => { if (provisionIds.includes(obj.id)) { obj.select = true; @@ -736,13 +769,7 @@ export class ReportService { }); } else { // no nfrDataId so just return generic provisions with all of them deselected by default - const url2 = `${hostname}:${port}/nfr-provision/variant/${variantName}`; - provisions = await axios - .get(url2) - .then((res) => { - return res.data; - }) - .catch((err) => console.log(err.response.data)); + provisions = await this.provisionService.getProvisionsByDocumentTypeId(document_type_id); reduced = provisions.map((obj) => Object.keys(obj) .filter((key) => returnItems.includes(key)) @@ -765,64 +792,34 @@ export class ReportService { }); } - getGroupMaxByVariant(variantName: string): Promise { - return this.nfrProvisionService.getGroupMaxByVariant(variantName); + getGroupMaxByDocTypeId(document_type_id: number): Promise { + return this.provisionService.getGroupMaxByDocTypeId(document_type_id); } - async getNFRVariablesByVariantAndDtid(variantName: string, dtid: number): Promise { - // if an nfrId is provided, get the variables with any existing user specified values - const url = `${hostname}:${port}/nfr-data/variables/${variantName}/${dtid}`; - const variables = await axios - .get(url) - .then((res) => { - return res.data.variables; - }) - .catch((err) => console.log(err.response.data)); + async getDocumentVariablesByDocumentTypeIdAndDtid(document_type_id: number, dtid: number): Promise { + // if a dtid & document_type_id are provided, get the variables with any existing user specified values + const variables = await this.documentDataService.getVariablesByDtidAndDocType(dtid, document_type_id); if (variables) { return variables; } else { - // grab the basic variable list corresponding to the variant - const url2 = `${hostname}:${port}/nfr-provision/get-provision-variables/variant/${variantName}`; - return axios.get(url2).then((res) => { - return res.data; - }); + // grab the basic variable list corresponding to the document type + const basicVariables = await this.provisionService.getVariablesByDocumentTypeId(document_type_id); + return { variables: basicVariables, variableIds: [] }; } } getMandatoryProvisions() { - return this.nfrProvisionService.getMandatoryProvisions(); + return this.provisionService.getMandatoryProvisions(); } - getMandatoryProvisionsByVariant(variantName: string) { - return this.nfrProvisionService.getMandatoryProvisionsByVariant(variantName); + getMandatoryProvisionsByDocumentTypeId(document_type_id: number) { + return this.provisionService.getMandatoryProvisionsByDocumentTypeId(document_type_id); } - async getNFRData() { - const nfrDataUrl = `${hostname}:${port}/nfr-data`; - const templateUrl = `${hostname}:${port}/document-template/nfr-template-info`; - - // get NFR data - let nfrData; - try { - const response = await axios.get(nfrDataUrl); - nfrData = response.data; - } catch (err) { - console.log(err.response.data); - return; - } - - // get template IDs from NFR data - const templateIds = nfrData.map((entry) => entry.template_id); - - // get templates using template IDs - let allTemplates; - try { - const response = await axios.post(templateUrl, templateIds); - allTemplates = response.data; - } catch (err) { - console.log(err.response.data); - return; - } + async getDocumentData() { + const documentData = await this.documentDataService.findAll(); + const templateIds = documentData.map((d) => d.template_id); + const allTemplates = await this.documentTemplateService.getTemplatesInfoByIds(templateIds); // filter out deleted templates and create a lookup table const templatesLookup = allTemplates.reduce((acc, template) => { @@ -832,101 +829,110 @@ export class ReportService { return acc; }, {}); - // combine NFR data with their corresponding templates - const combinedArray = nfrData - .filter((nfr) => templatesLookup[nfr.template_id]) - .map((nfr) => ({ - dtid: nfr.dtid, - version: templatesLookup[nfr.template_id].template_version, - file_name: templatesLookup[nfr.template_id].file_name, - updated_date: nfr.update_timestamp.split('T')[0], - status: nfr.status, - active: templatesLookup[nfr.template_id].active_flag, - nfr_id: nfr.id, - variant_name: nfr.variant_name, + // combine Document data with their corresponding templates + const combinedArray = documentData + .filter((document) => templatesLookup[document.template_id]) + .map((document) => ({ + dtid: document.dtid, + version: templatesLookup[document.template_id].template_version, + file_name: templatesLookup[document.template_id].file_name, + updated_date: document.update_timestamp.toString().split('T')[0], + status: document.status, + active: templatesLookup[document.template_id].active_flag, + document_data_id: document.id, + document_type: document.document_type, })); return combinedArray; } - async getActiveNfrDataByDtid(dtid: number): Promise { - const url = `${hostname}:${port}/nfr-data/dtid/${dtid}`; - const response = await axios - .get(url, { - headers: { - 'Content-Type': 'application/json', - }, - }) - .then((res) => { - return res.data; - }); - // console.log('!!!~~~~~~~~'); - // console.log("this.getGroupMaxByVariant('NOTICE OF FINAL REVIEW')"); - // const groupMax = await this.getGroupMaxByVariant('NOTICE OF FINAL REVIEW'); - // // console.log(groupMax); - // console.log('\ngetActiveNfrDataByDtid'); - // console.log(response); - // console.log('\nnfr_data_provisions'); - // // console.log(response.nfrData.nfr_data_provisions); - // console.log('\nnfr_data_variables'); - // // console.log(response.nfrData.nfr_data_variables); - // console.log('\nthis.getMandatoryProvisionsByVariant(NOTICE OF FINAL REVIEW)'); - // const mandatoryProvisions = await this.getMandatoryProvisionsByVariant('NOTICE OF FINAL REVIEW'); - // // console.log(mandatoryProvisions); - // console.log('~~~~~~~~!!!'); - return response; + async getDocumentDataByDocTypeIdAndDtid(document_type_id: number, dtid: number): Promise { + return this.documentDataService.findDocumentDataByDocTypeIdAndDtid(document_type_id, dtid); + // const url = `${hostname}:${port}/document-data/dtid/${dtid}`; + // const response = await axios + // .get(url, { + // headers: { + // 'Content-Type': 'application/json', + // }, + // }) + // .then((res) => { + // return res.data; + // }); + // // const documentData = await this.documentDataService.findActiveByDtid(dtid); + // // console.log('!!!~~~~~~~~'); + // // console.log("this.getGroupMaxByVariant('NOTICE OF FINAL REVIEW')"); + // // const groupMax = await this.getGroupMaxByVariant('NOTICE OF FINAL REVIEW'); + // // // console.log(groupMax); + // // console.log('\ngetActiveNfrDataByDtid'); + // // console.log(response); + // // console.log('\ndocument_data_provisions'); + // // // console.log(response.nfrData.document_data_provisions); + // // console.log('\ndocument_data_variables'); + // // // console.log(response.nfrData.document_data_variables); + // // console.log('\nthis.getMandatoryProvisionsByVariant(NOTICE OF FINAL REVIEW)'); + // // const mandatoryProvisions = await this.getMandatoryProvisionsByVariant('NOTICE OF FINAL REVIEW'); + // // // console.log(mandatoryProvisions); + // // console.log('~~~~~~~~!!!'); + // return response; } - async saveNFR( + // async saveNFR( + // dtid: number, + // variant_name: string, + // status: string, + // provisionJsonArray: ProvisionJSON[], + // variableJsonArray: VariableJSON[], + // idir_username: string + // ) { + // const templateUrl = `${hostname}:${port}/document-template/get-active-report/${variant_name}`; + // const documentTemplate = await axios.get(templateUrl).then((res) => { + // return res.data; + // }); + // const url = `${hostname}:${port}/document-data`; + // const data = { + // dtid: dtid, + // variant_name: variant_name, + // template_id: documentTemplate.id, + // status: status, + // create_userid: idir_username, + // ttls_data: [], + // provisionJsonArray, + // variableJsonArray, + // }; + // await axios + // .post(url, { + // body: data, + // }) + // .then((res) => { + // return res.data; + // }); + // } + + async saveDocument( dtid: number, - variant_name: string, + document_type_id: number, status: string, provisionJsonArray: ProvisionJSON[], variableJsonArray: VariableJSON[], idir_username: string ) { - const templateUrl = `${hostname}:${port}/document-template/get-active-report/${variant_name}`; - const documentTemplate = await axios.get(templateUrl).then((res) => { - return res.data; - }); - const url = `${hostname}:${port}/nfr-data`; + const documentTemplate = await this.documentTemplateService.findActiveByDocumentType(document_type_id); const data = { dtid: dtid, - variant_name: variant_name, + document_type_id: document_type_id, template_id: documentTemplate.id, status: status, create_userid: idir_username, ttls_data: [], - provisionJsonArray, - variableJsonArray, }; - await axios - .post(url, { - body: data, - }) - .then((res) => { - return res.data; - }); + return this.documentDataService.createOrUpdate(data, provisionJsonArray, variableJsonArray); } - async getEnabledProvisionsByVariant(variantName: string) { - const url = `${hostname}:${port}/nfr-provision/get-mandatory-provisions/variant/${variantName}`; - return axios.get(url).then((res) => { - return res.data; - }); + async getEnabledProvisionsByDocTypeId(document_type_id: number) { + return this.provisionService.getMandatoryProvisionsByDocumentTypeId(document_type_id); } - async getEnabledProvisionsByVariantAndDtid(variantName: string, dtid: number) { - const url = `${hostname}:${port}/nfr-data/get-enabled-provisions/${variantName}/${dtid}`; - return axios.get(url).then((res) => { - return res.data; - }); - } - - async getVariantsWithIds() { - const url = `${hostname}:${port}/nfr-provision/get-variants-with-ids/0`; - return axios.get(url).then((res) => { - return res.data; - }); + getEnabledProvisionsByDocTypeIdDtid(document_type_id: number, dtid: number) { + return this.documentDataService.getEnabledProvisionsByDocTypeIdAndDtid(document_type_id, dtid); } } diff --git a/backend/src/ttls/ttls.service.ts b/backend/src/ttls/ttls.service.ts index f2224ea2..c8ff3c48 100644 --- a/backend/src/ttls/ttls.service.ts +++ b/backend/src/ttls/ttls.service.ts @@ -347,73 +347,73 @@ export class TTLSService { }); } - // TODO - async generateNFRReport(prdid: number, templateId: number, variables: any, username: string) { - const url = `${hostname}:${port}/nfr-data/view/${prdid}`; - const templateUrl = `${hostname}:${port}/document-template/find-one/${templateId}`; - const logUrl = `${hostname}:${port}/print-request-log/`; - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // TODO get the view for specified prdid from the new NFR entity - const data = await axios - .get(url, { - headers: { - 'Content-Type': 'application/json', - }, - }) - .then((res) => { - return res.data; - }); - if (data.InspectionDate) { - data['InspectionDate'] = this.formatInspectedDate(data.InspectionDate); - } - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // get the document template - const documentTemplateObject: { id: number; the_file: string } = await axios.get(templateUrl).then((res) => { - return res.data; - }); + // // TODO + // async generateNFRReport(prdid: number, templateId: number, variables: any, username: string) { + // const url = `${hostname}:${port}/document-data/view/${prdid}`; + // const templateUrl = `${hostname}:${port}/document-template/find-one/${templateId}`; + // const logUrl = `${hostname}:${port}/print-request-log/`; + // // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // // TODO get the view for specified prdid from the new NFR entity + // const data = await axios + // .get(url, { + // headers: { + // 'Content-Type': 'application/json', + // }, + // }) + // .then((res) => { + // return res.data; + // }); + // if (data.InspectionDate) { + // data['InspectionDate'] = this.formatInspectedDate(data.InspectionDate); + // } + // // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // // get the document template + // const documentTemplateObject: { id: number; the_file: string } = await axios.get(templateUrl).then((res) => { + // return res.data; + // }); - // log the request - await axios.post(logUrl, { - document_template_id: templateId, - print_request_detail_id: prdid, - dtid: data.DTID, - request_app_user: username, - request_json: JSON.stringify(data), - }); + // // log the request + // await axios.post(logUrl, { + // document_template_id: templateId, + // print_request_detail_id: prdid, + // dtid: data.DTID, + // request_app_user: username, + // request_json: JSON.stringify(data), + // }); - const cdogsToken = await this.callGetToken(); - let bufferBase64 = documentTemplateObject.the_file; - const md = JSON.stringify({ - data, - formatters: - '{"myFormatter":"_function_myFormatter|function(data) { return data.slice(1); }","myOtherFormatter":"_function_myOtherFormatter|function(data) {return data.slice(2);}"}', - options: { - cacheReport: false, - convertTo: 'docx', - overwrite: true, - reportName: 'nfr-report', - }, - template: { - content: `${bufferBase64}`, - encodingType: 'base64', - fileType: 'docx', - }, - }); + // const cdogsToken = await this.callGetToken(); + // let bufferBase64 = documentTemplateObject.the_file; + // const md = JSON.stringify({ + // data, + // formatters: + // '{"myFormatter":"_function_myFormatter|function(data) { return data.slice(1); }","myOtherFormatter":"_function_myOtherFormatter|function(data) {return data.slice(2);}"}', + // options: { + // cacheReport: false, + // convertTo: 'docx', + // overwrite: true, + // reportName: 'nfr-report', + // }, + // template: { + // content: `${bufferBase64}`, + // encodingType: 'base64', + // fileType: 'docx', + // }, + // }); - const conf = { - method: 'post', - url: process.env.cdogs_url, - headers: { - Authorization: `Bearer ${cdogsToken}`, - 'Content-Type': 'application/json', - }, - responseType: 'arraybuffer', - data: md, - }; - const ax = require('axios'); - const response = await ax(conf).catch((error) => { - console.log(error.response); - }); - return response.data; - } + // const conf = { + // method: 'post', + // url: process.env.cdogs_url, + // headers: { + // Authorization: `Bearer ${cdogsToken}`, + // 'Content-Type': 'application/json', + // }, + // responseType: 'arraybuffer', + // data: md, + // }; + // const ax = require('axios'); + // const response = await ax(conf).catch((error) => { + // console.log(error.response); + // }); + // return response.data; + // } } diff --git a/backend/utils/db/init-db.sql b/backend/utils/db/init-db.sql index 7e6231a3..3c6ddf8c 100644 --- a/backend/utils/db/init-db.sql +++ b/backend/utils/db/init-db.sql @@ -1,31 +1,30 @@ -- Initialize Database Provisions -- Create groups -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (1,999,'DOCUMENT TYPE'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (2,999,'FEES'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (5,3,'PREAMBLE'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (10,3,'SURVEY REQUIREMENTS'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (12,3,'SURVEY FEES'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (14,3,'OBTAIN SURVEY'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (15,1,'OCCUPATIONAL RENT'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (20,2,'SECURITY'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (25,2,'INSURANCE'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (27,3,'ADDITIONAL REQUIREMENTS'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (28,3,'ADDITIONAL REQUIREMENTS'); -INSERT INTO nfr_provision_group (provision_group, max, provision_group_text) VALUES (34,999,'ADDITIONAL REQUIREMENTS'); - --- Create variants -INSERT INTO nfr_provision_variant (variant_name) VALUES ('NOTICE OF FINAL REVIEW'); -INSERT INTO nfr_provision_variant (variant_name) VALUES ('NOTICE OF FINAL REVIEW (DELAYED)'); -INSERT INTO nfr_provision_variant (variant_name) VALUES ('NOTICE OF FINAL REVIEW (NO FEES)'); -INSERT INTO nfr_provision_variant (variant_name) VALUES ('NOTICE OF FINAL REVIEW (SURVEY REQUIRED)'); -INSERT INTO nfr_provision_variant (variant_name) VALUES ('NOTICE OF FINAL REVIEW (TO OBTAIN SURVEY)'); - --- Helper functions for grabbing variant ids, group ids, current variable id, and current provision id. +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (1,999,'DOCUMENT TYPE'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (2,999,'FEES'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (5,3,'PREAMBLE'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (10,3,'SURVEY REQUIREMENTS'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (12,3,'SURVEY FEES'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (14,3,'OBTAIN SURVEY'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (15,1,'OCCUPATIONAL RENT'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (20,2,'SECURITY'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (25,2,'INSURANCE'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (27,3,'ADDITIONAL REQUIREMENTS'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (28,3,'ADDITIONAL REQUIREMENTS'); +INSERT INTO provision_group (provision_group, max, provision_group_text) VALUES (34,999,'ADDITIONAL REQUIREMENTS'); + +INSERT INTO document_type (name, created_by, created_date, create_userid, update_userid) VALUES ('Notice of Final Review', 'system', '2024-03-19 00:00:00', 'system', 'system'); +INSERT INTO document_type (name, created_by, created_date, create_userid, update_userid) VALUES ('Notice of Final Review (Delayed)', 'system', '2024-03-19 00:00:00', 'system', 'system'); +INSERT INTO document_type (name, created_by, created_date, create_userid, update_userid) VALUES ('Notice of Final Review (No Fees)', 'system', '2024-03-19 00:00:00', 'system', 'system'); +INSERT INTO document_type (name, created_by, created_date, create_userid, update_userid) VALUES ('Notice of Final Review (Survey Required)', 'system', '2024-03-19 00:00:00', 'system', 'system'); +INSERT INTO document_type (name, created_by, created_date, create_userid, update_userid) VALUES ('Notice of Final Review (To Obtain Survey)', 'system', '2024-03-19 00:00:00', 'system', 'system'); + +-- Helper functions for grabbing document type ids, group ids, current variable id, and current provision id. CREATE OR REPLACE FUNCTION get_current_provision_id() RETURNS INTEGER AS $$ DECLARE provision_id INTEGER; BEGIN - SELECT max(id) INTO provision_id FROM nfr_provision; + SELECT max(id) INTO provision_id FROM provision; return provision_id; END; $$ LANGUAGE PLPGSQL; @@ -34,53 +33,53 @@ CREATE OR REPLACE FUNCTION get_last_provision_variable_id() RETURNS INTEGER AS $ DECLARE provision_variable_id INTEGER; BEGIN - SELECT max(id) INTO provision_variable_id FROM nfr_provision_variable; + SELECT max(id) INTO provision_variable_id FROM provision_variable; return provision_variable_id; END; $$ LANGUAGE PLPGSQL; -CREATE OR REPLACE FUNCTION get_variant_default() RETURNS INTEGER AS $$ +CREATE OR REPLACE FUNCTION get_doc_type_default() RETURNS INTEGER AS $$ DECLARE - variant_id INTEGER; + document_type_id INTEGER; BEGIN - SELECT id INTO variant_id FROM nfr_provision_variant WHERE variant_name = 'NOTICE OF FINAL REVIEW'; - RETURN variant_id; + SELECT id INTO document_type_id FROM document_type WHERE name = 'Notice of Final Review'; + RETURN document_type_id; END; $$ LANGUAGE PLPGSQL; -CREATE OR REPLACE FUNCTION get_variant_delayed() RETURNS INTEGER AS $$ +CREATE OR REPLACE FUNCTION get_doc_type_delayed() RETURNS INTEGER AS $$ DECLARE - variant_id INTEGER; + document_type_id INTEGER; BEGIN - SELECT id INTO variant_id FROM nfr_provision_variant WHERE variant_name = 'NOTICE OF FINAL REVIEW (DELAYED)'; - RETURN variant_id; + SELECT id INTO document_type_id FROM document_type WHERE name = 'Notice of Final Review (Delayed)'; + RETURN document_type_id; END; $$ LANGUAGE PLPGSQL; -CREATE OR REPLACE FUNCTION get_variant_nofees() RETURNS INTEGER AS $$ +CREATE OR REPLACE FUNCTION get_doc_type_nofees() RETURNS INTEGER AS $$ DECLARE - variant_id INTEGER; + document_type_id INTEGER; BEGIN - SELECT id INTO variant_id FROM nfr_provision_variant WHERE variant_name = 'NOTICE OF FINAL REVIEW (NO FEES)'; - RETURN variant_id; + SELECT id INTO document_type_id FROM document_type WHERE name = 'Notice of Final Review (No Fees)'; + RETURN document_type_id; END; $$ LANGUAGE PLPGSQL; -CREATE OR REPLACE FUNCTION get_variant_surveyreq() RETURNS INTEGER AS $$ +CREATE OR REPLACE FUNCTION get_doc_type_surveyreq() RETURNS INTEGER AS $$ DECLARE - variant_id INTEGER; + document_type_id INTEGER; BEGIN - SELECT id INTO variant_id FROM nfr_provision_variant WHERE variant_name = 'NOTICE OF FINAL REVIEW (SURVEY REQUIRED)'; - RETURN variant_id; + SELECT id INTO document_type_id FROM document_type WHERE name = 'Notice of Final Review (Survey Required)'; + RETURN document_type_id; END; $$ LANGUAGE PLPGSQL; -CREATE OR REPLACE FUNCTION get_variant_toobtain() RETURNS INTEGER AS $$ +CREATE OR REPLACE FUNCTION get_doc_type_toobtain() RETURNS INTEGER AS $$ DECLARE - variant_id INTEGER; + document_type_id INTEGER; BEGIN - SELECT id INTO variant_id FROM nfr_provision_variant WHERE variant_name = 'NOTICE OF FINAL REVIEW (TO OBTAIN SURVEY)'; - RETURN variant_id; + SELECT id INTO document_type_id FROM document_type WHERE name = 'Notice of Final Review (To Obtain Survey)'; + RETURN document_type_id; END; $$ LANGUAGE PLPGSQL; @@ -89,232 +88,232 @@ RETURNS INTEGER AS $$ DECLARE pg_id INTEGER; BEGIN - SELECT id INTO pg_id FROM nfr_provision_group WHERE provision_group = p_provision_group; + SELECT id INTO pg_id FROM provision_group WHERE provision_group = p_provision_group; RETURN pg_id; END; $$ LANGUAGE plpgsql; --- Create Provisions and relations to variants --- Variant 'NOTICE OF FINAL REVIEW' -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW','','Use this to enter values for each of the variables in the boilerplate of the NOTICE OF FINAL REVIEW letter.','DOCUMENT TYPE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(2),'FEES','','Use this to create a table listing all the fees to be paid. Table is unprotected, so you will be able to modify text ','FEES',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_APPLICATION_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_DOCUMENTATION_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_OCCUPATIONAL_RENTAL_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_OTHER_CREDIT_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(5),'REPLACEMENT STATEMENT','',' Use this when tenure is being replaced','PREAMBLE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('REPLACEMENT_TENURE_TYPE','','____No. #. Use to specify type and number of tenure being replaced e.g. lease No. 999.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(5),'LAND DIFFERS FROM STATEMENT','','Use when land being offered differs from the applied area','OFFER PREAMBLE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('WHY_LAND_DIFFERS','','The Land differs from what you applied for because "____". Explain why you are offering some...',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(5),'FREE FIELD - PREAMBLE INFORMATION','','Use when you want to enter additonal information for the preamble','OFFER PREAMBLE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(15),'OCCUPATIONAL RENT STATEMENT','','Use this where occupational rent is payable','OFFER - MONIES - PAYABLE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('OCC_RENT_DETAILS','','Occupatianal Rental is payable for your occupation of the Land for the period from "___". Set out ...',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT - NOTICE OF FINAL REVIEW','','Use this to require delivery of security deposit','OFFER - SECURITY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(20),'BLANKET SECURITY STATEMENT','','Use this when client is covered by blanket security agreement','OFFER - SECURITY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('BLANKET_BOND_NAME','','You are currently covered by a blanket bond between MELP and "____". S...',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(20),'FREE FIELD FOR SECURITY SECTION','','Use where you need to add information regarding security','OFFER - SECURITY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(25),'INSURANCE REQUIRED - NOTICE OF FINAL REVIEW - OTHER','','Use when insurance is required for other tenures eg. homeowners','OFFER - INSURANCE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(25),'INSURANCE REQUIRED - NOTICE OF FINAL REVIEW - CERTIFICATE REQUIRED','','Use when insurance along with a Certificate of Insurance is required.','OFFER - INSURANCE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(25),'FREE FIELD FOR INSURANCE','','Use where you want to enter additonal information on insurance','OFFER - INSURANCE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'FREE FIELD - ADDITIONAL REQUIREMENTS','','Use where you want to state additional conditions of the offer','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'FREE FIELD - ADDITIONAL REQUIREMENTS - 2','','Use where you want to state additional conditions of the offer','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - MANAGEMENT PLAN','','Use to require delivery of a management plan.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - ZONING APPROVAL','','Use to require confirmation that a zoning bylaw permitting use of the Land for the intended purposes has been adopted.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('LOCAL_GOVERNMENT','','Type in the name of the local government.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - IMPROVEMENTS STAT DEC','','Use this when a statutory declaration is required regarding ownership of improvements.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - TAX CLEARANCE CERTIFICATE','','Use when a tax clearance certificate is required verifying that there are no arrears of taxes.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TAX_COLLECTOR_OFFICE','','Type in the address of the local Provincial Tax Collector’s office.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - AFFILIATE STATUS CERTIFICATE','','Use when a certificate of affiliate status is required for each affiliate of your company using the communication site.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - OBTAIN AND DELIVER','','Use when you require immediate delivery of documentation.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()), (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_nofees()), (get_current_provision_id(), get_variant_toobtain()), (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_TO_DELIVER','','Enter "on or before [date]" OR "within [45] days from the date of this letter.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DOCUMENT_TO_OBTAIN','','You must obtain the [specify the name of the document(s)] and ....',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - FISHERIES AND OCEANS APPROVAL','','Use to require delivery of a copy of a permit from Fisheries and Oceans for aquaculture purposes.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - COAST GUARD APPROVAL','','Use to require delivery of a letter of approval from the Canadian Coast Guard for the proposed construction.','ADDITIONAL REQUIREMENTS',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_default()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('COAST_GUARD_ADDRESS','','Type in the address of the Canadian Coast Guard office.',get_current_provision_id()); - --- Variant 'NOTICE OF FINAL REVIEW (NO FEES)' -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - NO FEES','','require message from POLICY','DOCUMENT TYPE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_nofees()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('REPLACEMENT_TENURE_TYPE','','____No. #. Use to specify type and number of tenure being replaced e.g. lease No. 999.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); - - --- Variant 'NOTICE OF FINAL REVIEW (DELAYED)' -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - DELAYED','','require message from POLICY','DOCUMENT TYPE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_delayed()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TENURE_TYPE','','Type in the tenure type. e.g. Lease',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(10),'SURVEY CONFIRMATION - CLIENT PAYS - DELAYED','','Use when the client pays for survey.','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_delayed()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETE_SURVEY','','on or before "month day, year"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" OR "Within [45] days from the date of this letter". Capitalize first character as this is the start of a sentence.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('MAXIMUM_AREA','','# hectares',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(10),'SURVEY DEPOSIT - DELAYED','','Use to require payment of a deposit where Province is to pay for a survey.','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_delayed()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SURVEY_DEPOSIT_DELAYED','','Deadline to pay survey deposit. Enter Month, Day, Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('MAXIMUM_AREA','','# hectares',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(10),'PREPARE BOUNDARY PLAN (CLIENT PAYS)','','require message from POLICY','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_delayed()), (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(12),'MONIES PAYABLE - NOTICE OF FINAL REVIEW - DELAYED','','Use when you are providing a firm amount payable.','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_delayed()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(12),'ESTIMATED MONIES PAYABLE - NOTICE OF FINAL REVIEW - DELAYED','','Use when you are providing an estimated amount payable.','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_delayed()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT (& SURVEY DEPOSIT) - NOTICE OF FINAL REVIEW','','Use this where 2 deposits are to be delivered: one for the survey and another for clean-up under the terms of the tenure to be issued','OFFER - SECURITY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_delayed()); - - --- Variant 'NOTICE OF FINAL REVIEW (TO OBTAIN SURVEY)' -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - TO OBTAIN SURVEY','','require message from POLICY','DOCUMENT TYPE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('INTERIM_TENURE_TYPE','','Insert the type of tenure now being used. e.g. Licence.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(10),'BOUNDARY SURVEY (WE PAY)','','Use where we will pay a B.C.L.S. to prepare a boundary survey','OFFER PREAMBLE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(12),'SURVEY DEPOSIT','','Use to require payment of a deposit where Province is to pay for a survey','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_SURVEY_DEPOSIT','','Deadline to pay survey deposit. Enter Month, Day, Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(14),'LETTER AFFIRMING BC LAND SURVEYOR WAS HIRED','','Use to require client to submit letter confirming B.C.L.S. has been hired','OFFER - OBTAIN SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" OR "Within [45] days from the date of this letter". Capitalize first character as this is the start of a sentence.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(14),'LETTER AFFIRMING BOUNDARY SURVEY','','Use to remind client that surveyor’s letter must confirm that location of improvements will be on boundary plan','OFFER - OBTAIN SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT - OS','','require message from POLICY','OFFER - SECURITY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('INTERIM_TENURE_TYPE','','Insert the type of tenure now being used. e.g. Licence.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(20),'BLANKET SECURITY STATEMENT - OS','','Use this when client is covered by blanket security agreement.','OFFER - SECURITY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('BLANKET_BOND_NAME','','You are currently covered by a blanket bond between MELP and "____". S...',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('INTERIM_TENURE_TYPE','','Insert the type of tenure now being used. e.g. Licence.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(25),'INSURANCE REQUIRED - NOTICE OF FINAL REVIEW - OTHER - OS','','Use when insurance is required for other tenures eg. homeowners','OFFER - INSURANCE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_toobtain()); - - --- Variant 'NOTICE OF FINAL REVIEW (SURVEY REQUIRED)' -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - SURVEY REQUIRED','','require message from POLICY','DOCUMENT TYPE',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DAYS_TO_DELIVER_DOCUMENTS','','# days in the sentence: We will forward the documents to you within ___of the survey being completed.....',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DAYS_TO_RETURN_DOCUMENTS','','__ days - You must sign and return them to us within _____ of our letter to you .......',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('MAXIMUM_AREA','','# hectares',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(10),'SURVEY - MINISTRY PAYS','','Use where ministry pays fro survey','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_surveyreq()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(10),'SURVEY DEPOSIT - DEL','','Use to require payment of a deposit where Province is to pay for a survey.','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_SURVEY_DEPOSIT','','Deadline to pay survey deposit. Enter Month, Day, Year',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(10),'SURVEY - CLIENT - PAYS','','Use when client pays for survey','OFFER SURVEY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETE_SURVEY','','on or before "month day, year"',get_current_provision_id()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" OR "Within [45] days from the date of this letter". Capitalize first character as this is the start of a sentence.',get_current_provision_id()); - -INSERT INTO nfr_provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT (& SURVEY DEPOSIT) - NOTICE OF FINAL REVIEW','','Use this where 2 deposits are to be delivered: one for the survey and another for clean-up under the terms of the tenure to be issued','OFFER - SECURITY',true); -INSERT INTO nfr_provision_provision_variant_nfr_provision_variant ("nfrProvisionId", "nfrProvisionVariantId") VALUES (get_current_provision_id(), get_variant_surveyreq()); -INSERT INTO nfr_provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',get_current_provision_id()); \ No newline at end of file +-- Create Provisions and relations to document types +-- Document Type 'NOTICE OF FINAL REVIEW' +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW','','Use this to enter values for each of the variables in the boilerplate of the NOTICE OF FINAL REVIEW letter.','DOCUMENT TYPE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(2),'FEES','','Use this to create a table listing all the fees to be paid. Table is unprotected, so you will be able to modify text ','FEES', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_APPLICATION_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_DOCUMENTATION_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_OCCUPATIONAL_RENTAL_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FEE_OTHER_CREDIT_AMOUNT','','$"#.##" payable. Fill in either amount, or "0" if nothing payable for this category of fee. Put in decimals.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(5),'REPLACEMENT STATEMENT','',' Use this when tenure is being replaced','PREAMBLE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('REPLACEMENT_TENURE_TYPE','','____No. #. Use to specify type and number of tenure being replaced e.g. lease No. 999.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(5),'LAND DIFFERS FROM STATEMENT','','Use when land being offered differs from the applied area','OFFER PREAMBLE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('WHY_LAND_DIFFERS','','The Land differs from what you applied for because "____". Explain why you are offering some...',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(5),'FREE FIELD - PREAMBLE INFORMATION','','Use when you want to enter additonal information for the preamble','OFFER PREAMBLE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(15),'OCCUPATIONAL RENT STATEMENT','','Use this where occupational rent is payable','OFFER - MONIES - PAYABLE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('OCC_RENT_DETAILS','','Occupatianal Rental is payable for your occupation of the Land for the period from "___". Set out ...',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT - NOTICE OF FINAL REVIEW','','Use this to require delivery of security deposit','OFFER - SECURITY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(20),'BLANKET SECURITY STATEMENT','','Use this when client is covered by blanket security agreement','OFFER - SECURITY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('BLANKET_BOND_NAME','','You are currently covered by a blanket bond between MELP and "____". S...',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(20),'FREE FIELD FOR SECURITY SECTION','','Use where you need to add information regarding security','OFFER - SECURITY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(25),'INSURANCE REQUIRED - NOTICE OF FINAL REVIEW - OTHER','','Use when insurance is required for other tenures eg. homeowners','OFFER - INSURANCE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(25),'INSURANCE REQUIRED - NOTICE OF FINAL REVIEW - CERTIFICATE REQUIRED','','Use when insurance along with a Certificate of Insurance is required.','OFFER - INSURANCE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(25),'FREE FIELD FOR INSURANCE','','Use where you want to enter additonal information on insurance','OFFER - INSURANCE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'FREE FIELD - ADDITIONAL REQUIREMENTS','','Use where you want to state additional conditions of the offer','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'FREE FIELD - ADDITIONAL REQUIREMENTS - 2','','Use where you want to state additional conditions of the offer','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - MANAGEMENT PLAN','','Use to require delivery of a management plan.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - ZONING APPROVAL','','Use to require confirmation that a zoning bylaw permitting use of the Land for the intended purposes has been adopted.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('LOCAL_GOVERNMENT','','Type in the name of the local government.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - IMPROVEMENTS STAT DEC','','Use this when a statutory declaration is required regarding ownership of improvements.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - TAX CLEARANCE CERTIFICATE','','Use when a tax clearance certificate is required verifying that there are no arrears of taxes.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TAX_COLLECTOR_OFFICE','','Type in the address of the local Provincial Tax Collector’s office.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - AFFILIATE STATUS CERTIFICATE','','Use when a certificate of affiliate status is required for each affiliate of your company using the communication site.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - OBTAIN AND DELIVER','','Use when you require immediate delivery of documentation.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()), (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_nofees()), (get_current_provision_id(), get_doc_type_toobtain()), (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_TO_DELIVER','','Enter "on or before [date]" OR "within [45] days from the date of this letter.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DOCUMENT_TO_OBTAIN','','You must obtain the [specify the name of the document(s)] and ....',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - FISHERIES AND OCEANS APPROVAL','','Use to require delivery of a copy of a permit from Fisheries and Oceans for aquaculture purposes.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(27),'ADDITIONAL REQUIREMENTS - COAST GUARD APPROVAL','','Use to require delivery of a letter of approval from the Canadian Coast Guard for the proposed construction.','ADDITIONAL REQUIREMENTS', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_default()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('COAST_GUARD_ADDRESS','','Type in the address of the Canadian Coast Guard office.',get_current_provision_id()); + +-- Document Type 'NOTICE OF FINAL REVIEW (NO FEES)' +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - NO FEES','','require message from POLICY','DOCUMENT TYPE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_nofees()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('REPLACEMENT_TENURE_TYPE','','____No. #. Use to specify type and number of tenure being replaced e.g. lease No. 999.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); + + +-- Document Type 'NOTICE OF FINAL REVIEW (DELAYED)' +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - DELAYED','','require message from POLICY','DOCUMENT TYPE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_delayed()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TENURE_TYPE','','Type in the tenure type. e.g. Lease',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(10),'SURVEY CONFIRMATION - CLIENT PAYS - DELAYED','','Use when the client pays for survey.','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_delayed()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETE_SURVEY','','on or before "month day, year"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" OR "Within [45] days from the date of this letter". Capitalize first character as this is the start of a sentence.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('MAXIMUM_AREA','','# hectares',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(10),'SURVEY DEPOSIT - DELAYED','','Use to require payment of a deposit where Province is to pay for a survey.','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_delayed()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SURVEY_DEPOSIT_DELAYED','','Deadline to pay survey deposit. Enter Month, Day, Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('MAXIMUM_AREA','','# hectares',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(10),'PREPARE BOUNDARY PLAN (CLIENT PAYS)','','require message from POLICY','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_delayed()), (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(12),'MONIES PAYABLE - NOTICE OF FINAL REVIEW - DELAYED','','Use when you are providing a firm amount payable.','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_delayed()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(12),'ESTIMATED MONIES PAYABLE - NOTICE OF FINAL REVIEW - DELAYED','','Use when you are providing an estimated amount payable.','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_delayed()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT (& SURVEY DEPOSIT) - NOTICE OF FINAL REVIEW','','Use this where 2 deposits are to be delivered: one for the survey and another for clean-up under the terms of the tenure to be issued','OFFER - SECURITY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_delayed()); + + +-- Document Type 'NOTICE OF FINAL REVIEW (TO OBTAIN SURVEY)' +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - TO OBTAIN SURVEY','','require message from POLICY','DOCUMENT TYPE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('INTERIM_TENURE_TYPE','','Insert the type of tenure now being used. e.g. Licence.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(10),'BOUNDARY SURVEY (WE PAY)','','Use where we will pay a B.C.L.S. to prepare a boundary survey','OFFER PREAMBLE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(12),'SURVEY DEPOSIT','','Use to require payment of a deposit where Province is to pay for a survey','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_SURVEY_DEPOSIT','','Deadline to pay survey deposit. Enter Month, Day, Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(14),'LETTER AFFIRMING BC LAND SURVEYOR WAS HIRED','','Use to require client to submit letter confirming B.C.L.S. has been hired','OFFER - OBTAIN SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" OR "Within [45] days from the date of this letter". Capitalize first character as this is the start of a sentence.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(14),'LETTER AFFIRMING BOUNDARY SURVEY','','Use to remind client that surveyor’s letter must confirm that location of improvements will be on boundary plan','OFFER - OBTAIN SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT - OS','','require message from POLICY','OFFER - SECURITY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('INTERIM_TENURE_TYPE','','Insert the type of tenure now being used. e.g. Licence.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(20),'BLANKET SECURITY STATEMENT - OS','','Use this when client is covered by blanket security agreement.','OFFER - SECURITY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('BLANKET_BOND_NAME','','You are currently covered by a blanket bond between MELP and "____". S...',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('INTERIM_TENURE_TYPE','','Insert the type of tenure now being used. e.g. Licence.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(25),'INSURANCE REQUIRED - NOTICE OF FINAL REVIEW - OTHER - OS','','Use when insurance is required for other tenures eg. homeowners','OFFER - INSURANCE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_toobtain()); + + +-- Document Type 'NOTICE OF FINAL REVIEW (SURVEY REQUIRED)' +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('M',get_provision_group_id(1),'TEMPLATE VARIABLES - NOTICE OF FINAL REVIEW - SURVEY REQUIRED','','require message from POLICY','DOCUMENT TYPE', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('ATTENTION_LINE','','Attention: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('CLIENT_FILE_NO','','Your file: "______" - MUST FILL A VALUE IN - IF NOT REQUIRED, DELETE AFTER MERGING PROCESS.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DATE_OF_NOTICE','','Date of letter: Month Day ,Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DAYS_TO_DELIVER_DOCUMENTS','','# days in the sentence: We will forward the documents to you within ___of the survey being completed.....',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DAYS_TO_RETURN_DOCUMENTS','','__ days - You must sign and return them to us within _____ of our letter to you .......',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETION_REQUIREMENTS','','Enter the date (month day, year) for completion of requirements',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('FACSIMILE_NUMBER','','Type in your facsimile number - "250 ___-____"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('MAXIMUM_AREA','','# hectares',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('NUMBER_OF_COPIES','','three copies of tenure documents which are being forwarded to client to sign. The number should be typed as a word, not a number.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('PURPOSE_GENERIC','','used for "_________" purposes.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('RATE_PER_METRE','','$"#.## per square metre/per hectare" Put in the decimal.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SALUTATION','','Dear "______": Type in the person’s name or Sir or Madam.',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('TELEPHONE_NUMBER','','Type in your telephone number - "250 ___-____"',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(10),'SURVEY - MINISTRY PAYS','','Use where ministry pays fro survey','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_surveyreq()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(10),'SURVEY DEPOSIT - DEL','','Use to require payment of a deposit where Province is to pay for a survey.','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_SURVEY_DEPOSIT','','Deadline to pay survey deposit. Enter Month, Day, Year',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEPOSIT_AMOUNT_SURVEY','','$"#.##" Enter amount of survey deposit. Put in the decimal.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(10),'SURVEY - CLIENT - PAYS','','Use when client pays for survey','OFFER SURVEY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_COMPLETE_SURVEY','','on or before "month day, year"',get_current_provision_id()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('DEADLINE_CONFIRM_SURVEY','','Enter "On or before [date]" OR "Within [45] days from the date of this letter". Capitalize first character as this is the start of a sentence.',get_current_provision_id()); + +INSERT INTO provision (type, "provisionGroupId", provision_name, free_text, help_text, category, active_flag, order_value, is_deleted) VALUES ('V',get_provision_group_id(20),'DELIVER SECURITY DEPOSIT (& SURVEY DEPOSIT) - NOTICE OF FINAL REVIEW','','Use this where 2 deposits are to be delivered: one for the survey and another for clean-up under the terms of the tenure to be issued','OFFER - SECURITY', true, 1, false); +INSERT INTO provision_document_type (provision_id, document_type_id) VALUES (get_current_provision_id(), get_doc_type_surveyreq()); +INSERT INTO provision_variable (variable_name, variable_value, help_text, "provisionId") VALUES ('SECURITY_AMOUNT','','#.## to post as security - indicate an amount even if blanket bond applies. Put in Decimal.',get_current_provision_id()); \ No newline at end of file diff --git a/backend/utils/types.ts b/backend/utils/types.ts index 6e6233d8..91ca7637 100644 --- a/backend/utils/types.ts +++ b/backend/utils/types.ts @@ -2,7 +2,7 @@ * DocumentTemplate object without the base64 file. */ export type TrimmedDocumentTemplate = { - document_type?: string; + document_type_id?: number; template_version?: number; template_author?: string; active_flag?: boolean; @@ -38,7 +38,7 @@ export type SessionData = { accounts: AccountObject[]; activeAccount: AccountObject; selected_document: { - nfr_id: number; + document_id: number; }; }; diff --git a/docker-compose.yml b/docker-compose.yml index 32a4a947..9938b279 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: "3.8" +version: '3.8' services: database: @@ -17,9 +17,9 @@ services: backend: container_name: backend entrypoint: - - "sh" - - "-c" - - "npm i && npm run start" + - 'sh' + - '-c' + - 'npm i && npm run start' environment: NODE_ENV: development POSTGRESQL_HOST: database @@ -27,7 +27,7 @@ services: POSTGRESQL_PASSWORD: default POSTGRESQL_DATABASE: default healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000"] + test: ['CMD', 'curl', '-f', 'http://localhost:3000'] interval: 1m30s timeout: 10s retries: 3 @@ -37,25 +37,25 @@ services: links: - database ports: - - "3001:3000" + - '3001:3000' volumes: - ./backend:/app:z - /app/node_modules - working_dir: "/app" + working_dir: '/app' frontend: container_name: frontend entrypoint: - - "sh" - - "-c" - - "apt-get update && apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev && npm i && npm run start" + - 'sh' + - '-c' + - 'apt-get update && apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev && npm i && npm run start' environment: NODE_ENV: development backend_url: http://backend COOKIE_SECRET: asdf SESSION_SECRET: fdsa healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000"] + test: ['CMD', 'curl', '-f', 'http://localhost:3000'] interval: 1m30s timeout: 10s retries: 3 @@ -65,8 +65,18 @@ services: links: - backend ports: - - "3000:3000" + - '3000:3000' volumes: - ./frontend:/app:z - /app/node_modules - working_dir: "/app" + working_dir: '/app' + + flyway: + container_name: flyway + image: flyway/flyway:latest + command: + ['-url=jdbc:postgresql://database:5432/default', '-user=default', '-password=default', 'baseline', 'migrate'] + volumes: + - ./backend/db/migrations:/flyway/sql + depends_on: + - database diff --git a/frontend/public/js/manage-templates.js b/frontend/public/js/manage-templates.js deleted file mode 100644 index f5cbb487..00000000 --- a/frontend/public/js/manage-templates.js +++ /dev/null @@ -1,1393 +0,0 @@ -var documentTable; // main template upload table -var groupMaxTable, provisionTable, editProvisionVariableTable; -var documentTable2, documentTable3, documentTable4, documentTable5; // nfr variants -var reportType = ""; -var reportTitle = ""; -var nfrDelayed = "NOTICE OF FINAL REVIEW (DELAYED)"; -var nfrNoFees = "NOTICE OF FINAL REVIEW (NO FEES)"; -var nfrSurveyReq = "NOTICE OF FINAL REVIEW (SURVEY REQUIRED)"; -var nfrToObtain = "NOTICE OF FINAL REVIEW (TO OBTAIN SURVEY)"; -$(document).ready(function () { - const urlParams = new URLSearchParams(window.location.search); - const reportIndex = parseInt(urlParams.get("report")); - if (reportIndex != 2) { - $(".nofr-section").hide(); - } - switch (reportIndex) { - case 1: - reportType = "LAND USE REPORT"; - reportTitle = "Land Use Report"; - break; - case 2: - reportType = "NOTICE OF FINAL REVIEW"; - reportTitle = "Notice of Final Review"; - break; - case 3: - reportType = "GRAZING LEASE"; - reportTitle = "Grazing Lease"; - break; - default: - break; - } - $("#reportTitle").text(reportTitle); - // used for sorting the radio buttons - $.fn.dataTable.ext.order["dom-checkbox"] = function (settings, col) { - return this.api() - .column(col, { order: "index" }) - .nodes() - .map(function (td, i) { - return $("input", td).prop("checked") ? "1" : "0"; - }); - }; - documentTable = $("#documentTable").DataTable({ - ajax: { - url: `admin/get-templates/${encodeURIComponent(reportType)}`, - dataSrc: "", - }, - paging: true, - bFilter: true, - columns: [ - { data: "template_version" }, - { data: "file_name" }, - { data: "update_timestamp" }, - { data: "active_flag" }, - { data: "preview" }, - { data: "view" }, - { data: "remove" }, - { data: "id" }, - ], - columnDefs: [ - { - targets: [0, 1, 2, 3, 4, 5, 6, 7], - render: function (data, type, row, meta) { - if (type === "display") { - var columnTypes = [ - "template_version", - "file_name", - "update_timestamp", - "active_flag", - "preview", - "view", - "remove", - "id", - ]; - var columnType = columnTypes[meta.col]; - var id = row["id"]; - const checked = data === true ? "checked" : ""; - - if (columnType === "active_flag") { - return ``; - } else if (columnType === "remove") { - return ` + + + + + ); +}; + +export default AddDocTypeModal; diff --git a/frontend/src/app/components/modal/admin/manage-doc-types/EditDocTypeModal.tsx b/frontend/src/app/components/modal/admin/manage-doc-types/EditDocTypeModal.tsx new file mode 100644 index 00000000..344123e4 --- /dev/null +++ b/frontend/src/app/components/modal/admin/manage-doc-types/EditDocTypeModal.tsx @@ -0,0 +1,118 @@ +import { FC, useEffect, useState } from 'react'; +import { Button, Col, Form, Modal, Row, Spinner } from 'react-bootstrap'; +import { DocType } from '../../../../types/types'; + +interface EditDocTypeModalProps { + documentType: DocType; + allDocTypes: DocType[]; + show: boolean; + onHide: () => void; + onEdit: (id: number, name: string, created_by: string, created_date: string) => void; +} + +const EditDocTypeModal: FC = ({ documentType, allDocTypes, show, onHide, onEdit }) => { + const [name, setName] = useState(''); + const [createdBy, setCreatedBy] = useState(''); + const [createdDate, setCreatedDate] = useState(''); + const [defaultDisabled, setDefaultDisabled] = useState(true); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(''); + const [showError, setShowError] = useState(false); + + useEffect(() => { + setName(documentType.name); + setCreatedBy(documentType.created_by); + setCreatedDate(documentType.created_date?.substring(0, 10)); + }, [documentType]); + + const editDocTypeHandler = async () => { + try { + setLoading(true); + setShowError(false); + const sameDocTypes = allDocTypes.filter((docType) => { + return docType.name === name; + }); + const isNameUnique = sameDocTypes.length <= 1; // there should only be up to one docType (the current one) that has the same name + const isNameNotEmpty = name.length !== 0; + console.log('name: ' + name); + console.log(sameDocTypes); + console.log(isNameUnique); + if (isNameUnique && isNameNotEmpty) { + onEdit(documentType.id, name, createdBy, createdDate); + onHide(); + } else { + setError('That document type name already exists'); + setShowError(true); + } + } catch (err) { + setError('Error updating Document Type'); + setShowError(true); + console.log(err); + } finally { + setLoading(false); + } + }; + + const handleNameChange = (e: React.ChangeEvent) => { + if (defaultDisabled) setDefaultDisabled(false); + setName(e.target.value); + }; + + const handleCreatedByChange = (e: React.ChangeEvent) => { + if (defaultDisabled) setDefaultDisabled(false); + setCreatedBy(e.target.value); + }; + + const handleCreatedDateChange = (e: React.ChangeEvent) => { + if (defaultDisabled) setDefaultDisabled(false); + setCreatedDate(e.target.value); + }; + + return ( + + + Edit Document Type + + +
+ + + Name: + + + + + + + + Created By: + + + + + + + + Created Date: + + + + + +
+ {showError &&
{error}
} +
+ + + + + +
+ ); +}; + +export default EditDocTypeModal; diff --git a/frontend/src/app/components/modal/admin/manage-doc-types/RemoveDocTypeModal.tsx b/frontend/src/app/components/modal/admin/manage-doc-types/RemoveDocTypeModal.tsx new file mode 100644 index 00000000..6f3c91ac --- /dev/null +++ b/frontend/src/app/components/modal/admin/manage-doc-types/RemoveDocTypeModal.tsx @@ -0,0 +1,61 @@ +import { FC, useState } from 'react'; +import { Button, Form, Modal, Row, Spinner } from 'react-bootstrap'; +import { DocType } from '../../../../types/types'; + +interface RemoveDocTypeModalProps { + documentType: DocType; + show: boolean; + onHide: () => void; + onRemove: (id: number) => void; +} + +const RemoveDocTypeModal: FC = ({ documentType, show, onHide, onRemove }) => { + const [loading, setLoading] = useState(false); + const [error, setError] = useState(''); + const [showError, setShowError] = useState(false); + + const removeDocTypeHandler = async () => { + try { + setLoading(true); + setShowError(false); + onRemove(documentType.id); + onHide(); + } catch (err) { + setError('Error removing Document Type'); + setShowError(true); + console.log(err); + } finally { + setLoading(false); + } + }; + + return ( + + + Remove Document Type + + +
+

Are you sure you want to remove this document type?

+ + + Document Type: {documentType.name} + + +
+ {showError &&
{error}
} +
+ + + + + +
+ ); +}; + +export default RemoveDocTypeModal; diff --git a/frontend/src/app/components/modal/manage-templates/AddProvisionModal.tsx b/frontend/src/app/components/modal/admin/manage-templates/AddProvisionModal.tsx similarity index 79% rename from frontend/src/app/components/modal/manage-templates/AddProvisionModal.tsx rename to frontend/src/app/components/modal/admin/manage-templates/AddProvisionModal.tsx index f531f193..e8f51de8 100644 --- a/frontend/src/app/components/modal/manage-templates/AddProvisionModal.tsx +++ b/frontend/src/app/components/modal/admin/manage-templates/AddProvisionModal.tsx @@ -1,10 +1,11 @@ import { useEffect, useState } from 'react'; -import { GroupMax, ProvisionUpload } from '../../../types/types'; +import { DocType, GroupMax, ProvisionUpload } from '../../../../types/types'; import { Button, Col, Form, Modal, Row, Spinner } from 'react-bootstrap'; interface AddProvisionModalProps { groupMaxArray: GroupMax[] | undefined; show: boolean; + documentTypes: DocType[] | undefined; addProvisionHandler: (provision: ProvisionUpload) => void; onHide: () => void; refreshTables: () => void; @@ -13,6 +14,7 @@ interface AddProvisionModalProps { const AddProvisionModal: React.FC = ({ groupMaxArray, show, + documentTypes, addProvisionHandler, onHide, refreshTables, @@ -28,7 +30,8 @@ const AddProvisionModal: React.FC = ({ const [freeText, setFreeText] = useState(''); const [helpText, setHelpText] = useState(''); const [category, setCategory] = useState(''); - const [variants, setVariants] = useState([]); + const [order, setOrder] = useState(1); + const [documentTypeIds, setDocumentTypeIds] = useState([]); useEffect(() => { setIsMaxUnlimited(max ? max >= 999 : false); @@ -102,12 +105,16 @@ const AddProvisionModal: React.FC = ({ setCategory(e.target.value); }; - const handleVariantIdUpdate = (e: React.ChangeEvent) => { - const variantId: number = parseInt(e.target.value); + const handleOrderChange = (e: React.ChangeEvent) => { + setOrder(parseInt(e.target.value)); + }; + + const handleDocumentTypeIdUpdate = (e: React.ChangeEvent) => { + const documentTypeId: number = parseInt(e.target.value); if (e.target.checked) { - setVariants((prevVariants) => [...prevVariants, variantId]); + setDocumentTypeIds((prevDocTypeIds) => [...prevDocTypeIds, documentTypeId]); } else { - setVariants(variants.filter((v) => v === variantId)); + setDocumentTypeIds(documentTypeIds.filter((v) => v === documentTypeId)); } }; @@ -125,9 +132,11 @@ const AddProvisionModal: React.FC = ({ free_text: freeText, help_text: helpText, category: category, - variants: variants, + order_value: order, + document_type_ids: documentTypeIds, }; addProvisionHandler(provisionUpload); + onHide(); refreshTables(); } } catch (err) { @@ -164,9 +173,8 @@ const AddProvisionModal: React.FC = ({ - - + @@ -252,50 +260,35 @@ const AddProvisionModal: React.FC = ({ + + + Order + + + + + - Variants + Document Types - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + {documentTypes && + documentTypes.map((docType, index) => { + return ( + + + + + + + + + ); + })} + + + + + ); +}; + +export default RemoveProvisionModal; diff --git a/frontend/src/app/components/modal/manage-templates/RemoveTemplateModal.tsx b/frontend/src/app/components/modal/admin/manage-templates/RemoveTemplateModal.tsx similarity index 80% rename from frontend/src/app/components/modal/manage-templates/RemoveTemplateModal.tsx rename to frontend/src/app/components/modal/admin/manage-templates/RemoveTemplateModal.tsx index fe9d6eb9..85d18490 100644 --- a/frontend/src/app/components/modal/manage-templates/RemoveTemplateModal.tsx +++ b/frontend/src/app/components/modal/admin/manage-templates/RemoveTemplateModal.tsx @@ -1,18 +1,25 @@ import { FC, useState } from 'react'; -import '../modals.css'; import Modal from 'react-bootstrap/Modal'; import Button from 'react-bootstrap/Button'; -import { removeTemplate } from '../../../common/manage-templates'; +import { removeTemplate } from '../../../../common/manage-templates'; type RemoveTemplateModalProps = { templateId: number; - reportType: string; + documentTypeId: number; + documentTypeName: string; show: boolean; onHide: () => void; onRemove: () => void; }; -const RemoveTemplateModal: FC = ({ templateId, reportType, show, onHide, onRemove }) => { +const RemoveTemplateModal: FC = ({ + templateId, + documentTypeId, + documentTypeName, + show, + onHide, + onRemove, +}) => { const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [showError, setShowError] = useState(false); @@ -21,7 +28,7 @@ const RemoveTemplateModal: FC = ({ templateId, reportT try { setLoading(true); setShowError(false); - await removeTemplate(templateId, reportType); + await removeTemplate(templateId, documentTypeId); onRemove(); onHide(); } catch (error) { @@ -37,7 +44,7 @@ const RemoveTemplateModal: FC = ({ templateId, reportT return ( - Remove Administrator + Remove Template: {documentTypeName} + ), + header: () => null, + meta: { customCss: { width: '10%' } }, + }), + columnHelper.display({ + id: 'remove', + cell: (info) => ( + + ), + header: () => null, + meta: { customCss: { width: '10%' } }, + }), + ]; + + return ; +}; + +export default ManageDocTypesTable; diff --git a/frontend/src/app/components/table/manage-templates/ManageProvisionsTable.tsx b/frontend/src/app/components/table/manage-templates/ManageProvisionsTable.tsx index 35060675..147e1acd 100644 --- a/frontend/src/app/components/table/manage-templates/ManageProvisionsTable.tsx +++ b/frontend/src/app/components/table/manage-templates/ManageProvisionsTable.tsx @@ -9,16 +9,17 @@ interface ManageProvisionsTableProps { provisions: Provision[] | undefined; variables: Variable[] | undefined; editProvisionHandler: (provision: Provision, variables: Variable[]) => void; + removeProvisionHandler: (provision: Provision) => void; } const ManageProvisionsTable: React.FC = ({ provisions, variables, editProvisionHandler, + removeProvisionHandler, }) => { const [allProvisions, setProvisions] = useState([]); const [allVariables, setVariables] = useState([]); - // const [currentlyActiveProvision, setCurrentlyActiveProvision] = useState(); const [loading, setLoading] = useState(false); useEffect(() => { @@ -72,18 +73,23 @@ const ManageProvisionsTable: React.FC = ({ }; const openEditProvisionModal = async (provisionId: number) => { - const selectedProvision = allProvisions.find((p) => p.id === provisionId); - const selectedVariables = allVariables.filter((v) => v.provision_id === provisionId); - if (selectedProvision) editProvisionHandler(selectedProvision, selectedVariables); + const selectedProvision = allProvisions ? allProvisions.find((p) => p.id === provisionId) : undefined; + const selectedVariables = allVariables ? allVariables.filter((v) => v.provision_id === provisionId) : undefined; + if (selectedProvision && selectedVariables) editProvisionHandler(selectedProvision, selectedVariables); + }; + + const openRemoveProvisionModal = async (provision: Provision) => { + const selectedProvision = allProvisions ? allProvisions.find((p) => p.id === provision.id) : undefined; + if (selectedProvision) removeProvisionHandler(selectedProvision); }; const columnHelper = createColumnHelper(); const columns: ColumnDef[] = [ - columnHelper.accessor('type', { - id: 'type', + columnHelper.accessor('id', { + id: 'id', cell: (info) => , - header: () => 'Type', + header: () => 'ID', meta: { customCss: { width: '5%' } }, }), columnHelper.accessor('provision_group', { @@ -92,34 +98,18 @@ const ManageProvisionsTable: React.FC = ({ header: () => 'Group', meta: { customCss: { width: '5%' } }, }), - columnHelper.accessor('max', { - id: 'max', - cell: (info) => { - const displayValue = info.getValue() >= 999 ? '-' : info.getValue(); - return ; - }, - header: () => 'Max', - meta: { customCss: { width: '5%' } }, - }), columnHelper.accessor('provision_name', { id: 'provision_name', cell: (info) => , header: () => 'Provision', meta: { customCss: { width: '35%' } }, }), - columnHelper.accessor('free_text', { - id: 'free_text', - cell: (info) => , - header: () => 'Free Text', - meta: { customCss: { width: '5%' } }, - }), columnHelper.accessor('category', { id: 'category', cell: (info) => , header: () => 'Category', - meta: { customCss: { width: '25%' } }, + meta: { customCss: { width: '20%' } }, }), - // add component that allows individual rendering columnHelper.accessor('active_flag', { id: 'active_flag', cell: (info) => ( @@ -133,17 +123,17 @@ const ManageProvisionsTable: React.FC = ({ header: () => 'Active', meta: { customCss: { width: '5%' } }, }), - columnHelper.accessor('edit', { + columnHelper.display({ id: 'edit', cell: (info) => openEditProvisionModal(info.row.original.id)} />, header: () => null, meta: { customCss: { width: '5%' } }, }), - columnHelper.accessor('id', { - id: 'id', - cell: () => null, + columnHelper.display({ + id: 'remove', + cell: (info) => openRemoveProvisionModal(info.row.original)} />, header: () => null, - meta: { customCss: { display: 'none' } }, + meta: { customCss: { width: '5%' } }, }), ]; diff --git a/frontend/src/app/components/table/manage-templates/TemplateInfoTable.tsx b/frontend/src/app/components/table/manage-templates/TemplateInfoTable.tsx index 96c17322..9850ddd1 100644 --- a/frontend/src/app/components/table/manage-templates/TemplateInfoTable.tsx +++ b/frontend/src/app/components/table/manage-templates/TemplateInfoTable.tsx @@ -2,23 +2,23 @@ import React, { useEffect, useState } from 'react'; import { DataTable } from '../common/DataTable'; import { ColumnDef, createColumnHelper } from '@tanstack/react-table'; import { activateTemplate, downloadTemplate, getTemplatesInfo } from '../../../common/manage-templates'; -import { TemplateInfo } from '../../../types/types'; +import { DocType, TemplateInfo } from '../../../types/types'; import { Button } from 'react-bootstrap'; interface TemplateInfoTableProps { - reportType: string; + documentType: DocType; refreshVersion: number; - handleRemove: (id: number, reportType: string) => void; + handleRemove: (id: number) => void; } -const TemplateInfoTable: React.FC = ({ reportType, refreshVersion, handleRemove }) => { +const TemplateInfoTable: React.FC = ({ documentType, refreshVersion, handleRemove }) => { const [templateData, setTemplateData] = useState([]); const [currentlyActive, setCurrentlyActive] = useState(); const [loading, setLoading] = useState(false); useEffect(() => { const fetchData = async () => { - const data = await getTemplatesInfo(reportType); + const data = await getTemplatesInfo(documentType.id); setTemplateData(data); for (let template of data) { if (template.active_flag === true) { @@ -28,12 +28,12 @@ const TemplateInfoTable: React.FC = ({ reportType, refre }; fetchData(); - }, [reportType, refreshVersion]); + }, [documentType, refreshVersion]); const activeRadioHandler = async (id: number) => { try { setLoading(true); - await activateTemplate(id, reportType); + await activateTemplate(id, documentType.id); setCurrentlyActive(id); } catch (error) { console.log('Error activating template'); @@ -57,7 +57,7 @@ const TemplateInfoTable: React.FC = ({ reportType, refre // this opens a modal which is handled on the ManageTemplatesPage const handleRemoveButton = (id: number) => { - handleRemove(id, reportType); + handleRemove(id); }; const columnHelper = createColumnHelper(); @@ -86,7 +86,7 @@ const TemplateInfoTable: React.FC = ({ reportType, refre cell: (info) => ( activeRadioHandler(info.row.original.id)} style={{ width: '100%' }} @@ -99,10 +99,7 @@ const TemplateInfoTable: React.FC = ({ reportType, refre columnHelper.accessor('preview', { id: 'preview', cell: (info) => ( - ), diff --git a/frontend/src/app/components/table/reports/ProvisionsTable.tsx b/frontend/src/app/components/table/reports/ProvisionsTable.tsx index 9a45ea7d..33b447da 100644 --- a/frontend/src/app/components/table/reports/ProvisionsTable.tsx +++ b/frontend/src/app/components/table/reports/ProvisionsTable.tsx @@ -1,12 +1,13 @@ import React, { useEffect, useState } from 'react'; import { DataTable } from '../common/DataTable'; import { ColumnDef, createColumnHelper } from '@tanstack/react-table'; -import { getNfrProvisionsByVariantDtid } from '../../../common/report'; +import { getDocumentProvisionsByDocTypeIdDtid } from '../../../common/report'; import { ProvisionData } from '../../../content/display/Provisions'; +import { DocType } from '../../../types/types'; interface ProvisionsTableProps { dtid: number; - variant: string; + docType: DocType; currentGroupNumber: number | null; currentGroupMax: number | null; selectedProvisionIds: number[] | undefined; @@ -15,7 +16,7 @@ interface ProvisionsTableProps { const ProvisionsTable: React.FC = ({ dtid, - variant, + docType, currentGroupNumber, currentGroupMax, selectedProvisionIds, @@ -28,22 +29,17 @@ const ProvisionsTable: React.FC = ({ // get data useEffect(() => { const fetchData = async () => { - setAllProvisions(await getNfrProvisionsByVariantDtid(variant, dtid)); + setAllProvisions(await getDocumentProvisionsByDocTypeIdDtid(docType.id, dtid)); }; fetchData(); - }, [dtid, variant, currentGroupNumber]); + }, [dtid, docType, currentGroupNumber]); // filter based on current group useEffect(() => { let filtered = allProvisions.filter((provision) => provision.provision_group === currentGroupNumber); - if (allProvisions[0] && allProvisions[0].provision_variant) { - filtered = filtered.filter((provision) => - provision.provision_variant.some((v) => v.variant_name.toUpperCase() === variant.toUpperCase()) - ); - } setFilteredProvisions(filtered); - }, [allProvisions, currentGroupNumber, variant]); + }, [allProvisions, currentGroupNumber]); // xor logic for the two provisions which can't be selected at the same time. const isCheckboxDisabled = (provisionId: number, provisionName: string): boolean => { diff --git a/frontend/src/app/components/table/reports/SelectedProvisionsTable.tsx b/frontend/src/app/components/table/reports/SelectedProvisionsTable.tsx index fedea0d9..66930db1 100644 --- a/frontend/src/app/components/table/reports/SelectedProvisionsTable.tsx +++ b/frontend/src/app/components/table/reports/SelectedProvisionsTable.tsx @@ -1,11 +1,12 @@ import React, { useEffect, useState } from 'react'; import { DataTable } from '../common/DataTable'; import { ColumnDef, createColumnHelper } from '@tanstack/react-table'; -import { getNfrProvisionsByVariantDtid } from '../../../common/report'; +import { getDocumentProvisionsByDocTypeIdDtid } from '../../../common/report'; import { ProvisionData } from '../../../content/display/Provisions'; +import { DocType } from '../../../types/types'; interface SelectedProvisionsTableTableProps { - variant: string; + docType: DocType; dtid: number; selectedProvisionIds: number[] | undefined; updateHandler: (provisionJson: ProvisionJson[]) => void; @@ -20,7 +21,7 @@ export type ProvisionJson = { }; const SelectedProvisionsTable: React.FC = ({ - variant, + docType, dtid, selectedProvisionIds, updateHandler, @@ -31,10 +32,10 @@ const SelectedProvisionsTable: React.FC = ({ // grab all provisions useEffect(() => { const fetchData = async () => { - setAllProvisions(await getNfrProvisionsByVariantDtid(variant, dtid)); + setAllProvisions(await getDocumentProvisionsByDocTypeIdDtid(docType.id, dtid)); }; fetchData(); - }, [variant, dtid]); + }, [docType, dtid]); // filter/sort allProvisions to find selected ones for displaying useEffect(() => { @@ -47,7 +48,7 @@ const SelectedProvisionsTable: React.FC = ({ }); setSelectedProvisions(filteredAndSorted); } - }, [allProvisions, selectedProvisionIds, variant]); + }, [allProvisions, selectedProvisionIds, docType]); // update provision save data array in ReportPage when selectedProvisions changes useEffect(() => { diff --git a/frontend/src/app/components/table/reports/VariablesTable.tsx b/frontend/src/app/components/table/reports/VariablesTable.tsx index 0b81a8b7..f21df826 100644 --- a/frontend/src/app/components/table/reports/VariablesTable.tsx +++ b/frontend/src/app/components/table/reports/VariablesTable.tsx @@ -28,7 +28,7 @@ const VariablesTable: React.FC = React.memo(({ variables, u variable.id === variableId ? { ...variable, variable_value: newValue } : variable ); const variableJson = updatedVariables.map((variable) => ({ - provision_id: variable.provisionId, + provision_id: variable.provision.id, variable_id: variable.id, variable_name: variable.variable_name, variable_value: variable.variable_value, @@ -42,7 +42,7 @@ const VariablesTable: React.FC = React.memo(({ variables, u setInitialized(true); updateHandler( variables.map((variable) => ({ - provision_id: variable.provisionId, + provision_id: variable.provision.id, variable_id: variable.id, variable_name: variable.variable_name, variable_value: variable.variable_value, diff --git a/frontend/src/app/components/table/search/SearchDataTable.tsx b/frontend/src/app/components/table/search/SearchDataTable.tsx index c254c7e3..a5af7013 100644 --- a/frontend/src/app/components/table/search/SearchDataTable.tsx +++ b/frontend/src/app/components/table/search/SearchDataTable.tsx @@ -2,17 +2,19 @@ import React, { useEffect, useState } from 'react'; import { DataTable } from '../common/DataTable'; import { ColumnDef, createColumnHelper } from '@tanstack/react-table'; import { getSearchData } from '../../../common/search'; -import { SearchData } from '../../../types/types'; +import { DocType, SearchData } from '../../../types/types'; interface SearchDataTableProps { searchTerm: string; - setSelectedDocumentChange: (dtid: number, variant_name: string) => void; + setSelectedDocumentChange: (dtid: number, documentType: DocType) => void; } +// TODO - update this table to receive / handle documents using document type instead of variant + const SearchDataTable: React.FC = ({ searchTerm, setSelectedDocumentChange }) => { const [searchData, setSearchData] = useState([]); const [filteredSearchData, setFilteredSearchData] = useState([]); - const [selectedDocument, setSelectedDocument] = useState<{ dtid: number; variant_name: string } | null>(null); + const [selectedDocument, setSelectedDocument] = useState<{ dtid: number; document_type: DocType } | null>(null); useEffect(() => { const fetchData = async () => { @@ -20,9 +22,9 @@ const SearchDataTable: React.FC = ({ searchTerm, setSelect data.sort((a, b) => a.dtid - b.dtid); // sort by dtid for now const firstItem: SearchData | null = data[0] ? data[0] : null; if (firstItem) { - const { dtid, variant_name } = firstItem; - setSelectedDocument({ dtid, variant_name }); - setSelectedDocumentChange(dtid, variant_name); + const { dtid, document_type } = firstItem; + setSelectedDocument({ dtid, document_type }); + setSelectedDocumentChange(dtid, document_type); } setSearchData(data); }; @@ -50,13 +52,14 @@ const SearchDataTable: React.FC = ({ searchTerm, setSelect filterData(); }, [searchTerm, searchData]); - const activeRadioHandler = (dtid: number, variant_name: string) => { - setSelectedDocument({ dtid, variant_name }); - setSelectedDocumentChange(dtid, variant_name); + const activeRadioHandler = (dtid: number, document_type: DocType) => { + setSelectedDocument({ dtid, document_type }); + setSelectedDocumentChange(dtid, document_type); }; const columnHelper = createColumnHelper(); + // may need to adjust const columns: ColumnDef[] = [ columnHelper.accessor('dtid', { id: 'dtid', @@ -95,21 +98,21 @@ const SearchDataTable: React.FC = ({ searchTerm, setSelect type="radio" name="activeSelection" checked={info.row.original.dtid === selectedDocument?.dtid} - onChange={() => activeRadioHandler(info.row.original.dtid, info.row.original.variant_name)} + onChange={() => activeRadioHandler(info.row.original.dtid, info.row.original.document_type)} style={{ width: '100%' }} /> ), header: () => '', meta: { customCss: { width: '5%' } }, }), - columnHelper.accessor('nfr_id', { + columnHelper.accessor('document_data_id', { id: 'nfr_id', cell: () => null, header: () => null, meta: { customCss: { display: 'none' } }, }), - columnHelper.accessor('variant_name', { - id: 'variant_name', + columnHelper.accessor('document_type', { + id: 'document_type', cell: () => null, header: () => null, meta: { customCss: { display: 'none' } }, diff --git a/frontend/src/app/content/Content.tsx b/frontend/src/app/content/Content.tsx deleted file mode 100644 index c9b9433e..00000000 --- a/frontend/src/app/content/Content.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { FC } from 'react'; -import ReportPage from './pages/ReportPage'; -import SearchPage from './pages/SearchPage'; -import AdminPage from './pages/AdminPage'; -import ManageTemplatesPage from './pages/ManageTemplatesPage'; -import { CURRENT_REPORT_PAGES } from '../util/constants'; -import DocumentPreview from './pages/documentpreview/DocumentPreview'; -import ManageTemplates from './pages/ManageTemplates'; -import SystemAdministration from './pages/SystemAdministration'; - -interface ContentProps { - pageTitle: string; -} - -const Content: FC = ({ pageTitle }) => { - return ( -
-
-
-
-
-
- {Object.values(CURRENT_REPORT_PAGES).includes(pageTitle) && ( - - )} - - {pageTitle === 'Search' && } - {pageTitle === 'System Administration' && } - {pageTitle === 'Manage Templates' && } - {pageTitle === 'Document Preview' && } - {pageTitle === 'Select Manage Templates' && } - {pageTitle === 'System Administration Menu' && } -
-
-
-
-
-
- ); -}; - -export default Content; diff --git a/frontend/src/app/content/ContentWrapper.tsx b/frontend/src/app/content/ContentWrapper.tsx new file mode 100644 index 00000000..07bb20bd --- /dev/null +++ b/frontend/src/app/content/ContentWrapper.tsx @@ -0,0 +1,23 @@ +import { FC, ReactNode } from 'react'; + +interface ContentWrapperProps { + children: ReactNode; +} + +const ContentWrapper: FC = ({ children }) => { + return ( +
+
+
+
+
+
{children}
+
+
+
+
+
+ ); +}; + +export default ContentWrapper; diff --git a/frontend/src/app/content/display/Header.tsx b/frontend/src/app/content/display/Header.tsx index d84fbaeb..35cd04fe 100644 --- a/frontend/src/app/content/display/Header.tsx +++ b/frontend/src/app/content/display/Header.tsx @@ -42,7 +42,7 @@ const Header: FC = ({ isAdmin, idirUsername }) => {
{isAdmin && ( diff --git a/frontend/src/app/content/display/Provisions.tsx b/frontend/src/app/content/display/Provisions.tsx index 51c29aca..b0dec14c 100644 --- a/frontend/src/app/content/display/Provisions.tsx +++ b/frontend/src/app/content/display/Provisions.tsx @@ -1,17 +1,19 @@ import { FC, useEffect, useState } from 'react'; -import { NfrDataObject, ProvisionGroup } from '../../types/types'; -import { NFR_VARIANTS } from '../../util/constants'; -import { getGroupMaxByVariant, getNfrDataByDtid } from '../../common/report'; +import { DocType, DocumentDataObject, ProvisionGroup } from '../../types/types'; +import { getDocumentDataByDocTypeIdAndDtid } from '../../common/report'; import ProvisionsTable from '../../components/table/reports/ProvisionsTable'; import SelectedProvisionsTable, { ProvisionJson } from '../../components/table/reports/SelectedProvisionsTable'; interface ProvisionsProps { dtid: number; - variantName: string; + documentType: DocType; + provisionGroups: ProvisionGroup[] | undefined; updateHandler: (provisionJson: ProvisionJson[]) => void; updateSelectedProvisionIds: (selectedProvisionIds: number[]) => void; } +// TODO - variants are being removed, provisions will now have an array of document types instead of variants + export type ProvisionData = { type: string; provision_name: string; @@ -20,12 +22,6 @@ export type ProvisionData = { active_flag: boolean; create_userid: string; update_userid: string; - provision_variant: [ - { - id: number; - variant_name: string; - } - ]; id: number; help_text: string; create_timestamp: string; @@ -35,10 +31,15 @@ export type ProvisionData = { provision_group: number; }; -const Provisions: FC = ({ dtid, variantName, updateHandler, updateSelectedProvisionIds }) => { - const [nfrData, setNfrData] = useState(null); +const Provisions: FC = ({ + dtid, + documentType, + provisionGroups, + updateHandler, + updateSelectedProvisionIds, +}) => { + const [documentData, setDocumentData] = useState(null); const [selectedProvisionIds, setSelectedProvisionIds] = useState([]); - const [provisionGroups, setProvisionGroups] = useState(null); const [selectedProvisionGroup, setSelectedProvisionGroup] = useState(null); const [selectedProvisionGroupMax, setSelectedProvisionGroupMax] = useState(null); const [viewedProvisionGroups, setViewedProvisionGroups] = useState>(new Set()); @@ -46,26 +47,19 @@ const Provisions: FC = ({ dtid, variantName, updateHandler, upd // Fetch NFR data if we are on the NFR page useEffect(() => { const fetchData = async () => { - if (NFR_VARIANTS.includes(variantName?.toUpperCase())) { + if (documentType && documentType.name) { if (dtid) { - const nfrData: NfrDataObject = await getNfrDataByDtid(dtid); - if (nfrData) { - setNfrData(nfrData); - setSelectedProvisionIds(nfrData.provisionIds); + const documentData: DocumentDataObject = await getDocumentDataByDocTypeIdAndDtid(documentType.id, dtid); + console.log(documentData); + if (documentData) { + setDocumentData(documentData); + setSelectedProvisionIds(documentData.provisionIds); } } - const provisionGroupsObject: ProvisionGroup[] = await getGroupMaxByVariant(variantName); - setProvisionGroups(provisionGroupsObject); } }; fetchData(); - }, [dtid, variantName]); - - // reset the selected and viewed provisions on variant change - useEffect(() => { - setViewedProvisionGroups(new Set()); - setSelectedProvisionGroup(null); - }, [variantName]); + }, [dtid, documentType]); const handleProvisionGroupChange = (event: React.ChangeEvent) => { const value = parseInt(event.target.value); @@ -125,7 +119,7 @@ const Provisions: FC = ({ dtid, variantName, updateHandler, upd
= ({ dtid, variantName, updateHandler, upd
Selected Provisions
diff --git a/frontend/src/app/content/display/Variables.tsx b/frontend/src/app/content/display/Variables.tsx index 10dd2160..f0fb4edc 100644 --- a/frontend/src/app/content/display/Variables.tsx +++ b/frontend/src/app/content/display/Variables.tsx @@ -1,10 +1,12 @@ import { FC, useEffect, useState } from 'react'; -import { getNfrVariablesByVariantDtid } from '../../common/report'; +import { getDocumentVariablesByDocTypeIdDtid } from '../../common/report'; import VariablesTable, { VariableJson } from '../../components/table/reports/VariablesTable'; +import { DocType } from '../../types/types'; +import { ProvisionData } from './Provisions'; interface VariablesProps { dtid: number; - variantName: string; + documentType: DocType; updateHandler: (variableJson: VariableJson[]) => void; selectedProvisionIds: number[]; } @@ -18,26 +20,30 @@ export type VariableData = { update_userid: string; create_timestamp: string; update_timestamp: string; - provisionId: number; + provision: ProvisionData; }; -const Variables: FC = ({ dtid, variantName, updateHandler, selectedProvisionIds }) => { +const Variables: FC = ({ dtid, documentType, updateHandler, selectedProvisionIds }) => { const [allVariables, setAllVariables] = useState([]); + const [variableIds, setVariableIds] = useState([]); const [filteredVariables, setFilteredVariables] = useState([]); // provisions in the currently selected group useEffect(() => { const getData = async () => { - const variables: VariableData[] = await getNfrVariablesByVariantDtid(variantName, dtid); - setAllVariables(variables); + const variableData: { variables: VariableData[]; variableIds: number[] } = + await getDocumentVariablesByDocTypeIdDtid(documentType.id, dtid); + setAllVariables(variableData.variables); + setVariableIds(variableIds); }; getData(); - }, [dtid, variantName]); + }, [dtid, documentType]); useEffect(() => { - const filtered: VariableData[] = allVariables.filter((variable) => - selectedProvisionIds.includes(variable.provisionId) - ); - setFilteredVariables(filtered); + console.log(allVariables); + const filtered: VariableData[] | null = allVariables + ? allVariables.filter((variable) => selectedProvisionIds.includes(variable.provision.id)) + : null; + if (filtered) setFilteredVariables(filtered); }, [allVariables, selectedProvisionIds]); return ( diff --git a/frontend/src/app/content/pages/AdminPage.tsx b/frontend/src/app/content/pages/AdminPage.tsx index c9b9430c..1c936545 100644 --- a/frontend/src/app/content/pages/AdminPage.tsx +++ b/frontend/src/app/content/pages/AdminPage.tsx @@ -1,17 +1,17 @@ import { FC, useState } from 'react'; -import { REPORT_TYPES } from '../../util/constants'; -import AddAdmin from '../../components/modal/admin/AddAdmin'; -import RemoveAdmin from '../../components/modal/admin/RemoveAdmin'; -import { useNavigate } from 'react-router-dom'; +// import { REPORT_TYPES } from '../../util/constants'; +import AddAdmin from '../../components/modal/admin/manage-admins/AddAdmin'; +import RemoveAdmin from '../../components/modal/admin/manage-admins/RemoveAdmin'; +// import { useNavigate } from 'react-router-dom'; import { exportUsers } from '../../common/admin'; import AdminDataTable, { AdminData } from '../../components/table/admin/AdminDataTable'; const AdminPage: FC = () => { - const navigate = useNavigate(); + // const navigate = useNavigate(); const [selectedAdmin, setSelectedAdmin] = useState(null); const [showAddAdminModal, setShowAddAdminModal] = useState(false); const [showRemoveAdminModal, setShowRemoveAdminModal] = useState(false); - const [selectedReport, setSelectedReport] = useState('0'); + // const [selectedReport, setSelectedReport] = useState('0'); const [searchTerm, setSearchTerm] = useState(''); const showAddAdminModalHandler = (e: React.MouseEvent) => { @@ -29,18 +29,18 @@ const AdminPage: FC = () => { setShowRemoveAdminModal(false); }; - const selectedReportHandler = (event: React.ChangeEvent) => { - setSelectedReport(event.target.value); - }; + // const selectedReportHandler = (event: React.ChangeEvent) => { + // setSelectedReport(event.target.value); + // }; const exportUserListHandler = async (event: React.MouseEvent) => { event.preventDefault(); await exportUsers(); }; - const manageReportsHandler = () => { - navigate(`/manage-templates/${selectedReport}`); - }; + // const manageReportsHandler = () => { + // navigate(`/manage-templates/${selectedReport}`); + // }; const handleSearchChange = (e: React.ChangeEvent) => { setSearchTerm(e.target.value); @@ -48,7 +48,7 @@ const AdminPage: FC = () => { return ( <> -

System Administration

+

Manage Administrators


List of TICDI Administrators

@@ -85,7 +85,7 @@ const AdminPage: FC = () => {
-
+ {/*

Manage Templates

@@ -118,7 +118,7 @@ const AdminPage: FC = () => { Manage - + */} {showAddAdminModal && } {selectedAdmin && showRemoveAdminModal && ( diff --git a/frontend/src/app/content/pages/IndexPage.tsx b/frontend/src/app/content/pages/IndexPage.tsx index 01248f47..b838ee14 100644 --- a/frontend/src/app/content/pages/IndexPage.tsx +++ b/frontend/src/app/content/pages/IndexPage.tsx @@ -1,3 +1,5 @@ +// Unused page + import { FC } from 'react'; import Collapsible from '../../../app/components/common/Collapsible'; import { DTRDisplayObject } from '../../../app/types/types'; @@ -5,7 +7,7 @@ import TenureDetails from '../display/TenureDetails'; import AreaDetails from '../display/AreaDetails'; import DtidDetails from '../display/DtidDetails'; import { Button } from 'react-bootstrap'; -import { generateReport } from '../../common/report'; +// import { generateReportNew } from '../../common/report'; import { useParams } from 'react-router'; export interface IndexPageProps { @@ -17,7 +19,7 @@ const IndexPage: FC = ({ data }) => { const dtidNumber = dtid ? parseInt(dtid, 10) : null; const generateReportHandler = () => { if (dtidNumber) { - generateReport(dtidNumber, data!.fileNum, 'Land Use Report'); + // generateReportNew(dtidNumber, data!.fileNum, 'Land Use Report'); } }; diff --git a/frontend/src/app/content/pages/ManageDocumentsPage.tsx b/frontend/src/app/content/pages/ManageDocumentsPage.tsx new file mode 100644 index 00000000..5ddfc557 --- /dev/null +++ b/frontend/src/app/content/pages/ManageDocumentsPage.tsx @@ -0,0 +1,133 @@ +import { FC, useEffect, useState } from 'react'; +import { Button } from 'react-bootstrap'; +import { DocType } from '../../types/types'; +import { getDocumentTypes } from '../../common/report'; +import ManageDocTypesTable from '../../components/table/admin/ManageDocTypesTable'; +import AddDocTypeModal from '../../components/modal/admin/manage-doc-types/AddDocTypeModal'; +import EditDocTypeModal from '../../components/modal/admin/manage-doc-types/EditDocTypeModal'; +import RemoveDocTypeModal from '../../components/modal/admin/manage-doc-types/RemoveDocTypeModal'; +import { addDocType, removeDocType, updateDocType } from '../../common/manage-doc-types'; + +const ManageDocumentsPage: FC = () => { + const [currentDocType, setCurrentDocType] = useState({ + id: -1, + name: '', + created_by: '', + created_date: '', + create_userid: '', + create_timestamp: '', + update_timestamp: '', + update_userid: '', + }); + const [allDocTypes, setAllDocTypes] = useState([]); + + const [showAddDocTypeModal, setShowAddDocTypeModal] = useState(false); + const [showEditDocTypeModal, setShowEditDocTypeModal] = useState(false); + const [showRemoveDocTypeModal, setShowRemoveDocTypeModal] = useState(false); + + const [refreshTrigger, setRefreshTrigger] = useState(0); + + useEffect(() => { + const getData = async () => { + const docTypeData = await getDocumentTypes(); + setAllDocTypes(docTypeData); + }; + getData(); + }, [refreshTrigger]); + + const refreshTables = () => { + setRefreshTrigger((prev) => prev + 1); + }; + + const openAddDocTypeModal = () => { + setShowAddDocTypeModal(true); + }; + + const addDocTypeHandler = async (name: string, created_by: string, created_date: string) => { + try { + await addDocType(name, created_by, created_date); + refreshTables(); + } catch (err) { + console.log('Error adding doc type'); + console.log(err); + } + }; + + const openEditDocTypeModal = (id: number) => { + const selectedDocType = allDocTypes.find((docType) => docType.id === id); + if (selectedDocType) { + setCurrentDocType(selectedDocType); + setShowEditDocTypeModal(true); + } + }; + + const editDocTypeHandler = async (id: number, name: string, created_by: string, created_date: string) => { + try { + await updateDocType(id, name, created_by, created_date); + refreshTables(); + } catch (err) { + console.log('Error updating doc type'); + console.log(err); + } + }; + + const openRemoveDocTypeModal = (id: number) => { + const selectedDocType = allDocTypes.find((docType) => docType.id === id); + if (selectedDocType) { + setCurrentDocType(selectedDocType); + setShowRemoveDocTypeModal(true); + } + }; + + const removeDocTypeHandler = async (id: number) => { + try { + await removeDocType(id); + refreshTables(); + } catch (err) { + console.log('Error removing doc type'); + console.log(err); + } + }; + + return ( + <> +

Manage Document Types

+
+ + + setShowAddDocTypeModal(false)} + onAdd={addDocTypeHandler} + /> + + {currentDocType && ( + setShowEditDocTypeModal(false)} + onEdit={editDocTypeHandler} + /> + )} + + {currentDocType && ( + setShowRemoveDocTypeModal(false)} + onRemove={removeDocTypeHandler} + /> + )} + + ); +}; + +export default ManageDocumentsPage; diff --git a/frontend/src/app/content/pages/ManageProvisionsPage.tsx b/frontend/src/app/content/pages/ManageProvisionsPage.tsx new file mode 100644 index 00000000..7abd5e74 --- /dev/null +++ b/frontend/src/app/content/pages/ManageProvisionsPage.tsx @@ -0,0 +1,121 @@ +import { FC, useEffect, useState } from 'react'; +import ManageProvisionsTable from '../../components/table/manage-templates/ManageProvisionsTable'; +import { Button } from 'react-bootstrap'; +import { DocType, GroupMax, Provision, ProvisionUpload, Variable } from '../../types/types'; +import { + addProvision, + getGroupMax, + getProvisions, + getVariables, + removeProvision, + updateProvision, +} from '../../common/manage-templates'; +import EditProvisionModal from '../../components/modal/admin/manage-templates/EditProvisionModal'; +import AddProvisionModal from '../../components/modal/admin/manage-templates/AddProvisionModal'; +import { getDocumentTypes } from '../../common/report'; +import RemoveProvisionModal from '../../components/modal/admin/manage-templates/RemoveProvisionModal'; + +interface ManageProvisionsPageProps {} + +const ManageProvisionsPage: FC = () => { + const [data, setData] = useState<{ + allProvisions?: Provision[]; + allVariables?: Variable[]; + groupMaxArray?: GroupMax[]; + documentTypes?: DocType[]; + }>({}); + const [currentProvision, setCurrentProvision] = useState(); + const [showEditProvisionModal, setShowEditProvisionModal] = useState(false); + const [showAddProvisionModal, setShowAddProvisionModal] = useState(false); + const [showRemoveProvisionModal, setShowRemoveProvisionModal] = useState(false); + const [refreshTrigger, setRefreshTrigger] = useState(0); + + useEffect(() => { + const getData = async () => { + const groupMaxArray = await getGroupMax(); + const provisions = await getProvisions(); + const variables = await getVariables(); + const documentTypes = await getDocumentTypes(); + setData({ allProvisions: provisions, allVariables: variables, groupMaxArray, documentTypes }); + }; + getData(); + }, [refreshTrigger]); + + useEffect(() => { + if (currentProvision && data.allProvisions) { + const updatedProvision: Provision | undefined = data.allProvisions.find((p) => p.id === currentProvision.id); + if (updatedProvision) setCurrentProvision(updatedProvision); + } + }, [currentProvision, data.allProvisions]); + + const refreshTables = () => { + setRefreshTrigger((prev) => prev + 1); + }; + + const openEditProvisionModal = (provision: Provision, variables: Variable[]) => { + setCurrentProvision(provision); + setShowEditProvisionModal(true); + }; + + const openRemoveProvisionModal = (provision: Provision) => { + setCurrentProvision(provision); + setShowRemoveProvisionModal(true); + }; + + const updateProvisionHandler = async (provisionUpload: ProvisionUpload, provisionId: number) => { + await updateProvision({ ...provisionUpload, id: provisionId }); + }; + + const addProvisionHandler = async (provisionUpload: ProvisionUpload) => { + await addProvision(provisionUpload); + }; + const removeProvisionHandler = async (id: number) => { + await removeProvision(id); + refreshTables(); + }; + + const currentVariables = data.allVariables?.filter((v) => v.provision_id === currentProvision?.id) || []; + + return ( + <> +

Manage Provisions

+
+ + + + setShowEditProvisionModal(false)} + updateProvisionHandler={updateProvisionHandler} + refreshTables={refreshTables} + /> + setShowAddProvisionModal(false)} + addProvisionHandler={addProvisionHandler} + refreshTables={refreshTables} + /> + setShowRemoveProvisionModal(false)} + onRemove={removeProvisionHandler} + /> + + ); +}; + +export default ManageProvisionsPage; diff --git a/frontend/src/app/content/pages/ManageTemplates.tsx b/frontend/src/app/content/pages/ManageTemplates.tsx deleted file mode 100644 index 6b3e982d..00000000 --- a/frontend/src/app/content/pages/ManageTemplates.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { FC, useState } from 'react'; -import { useNavigate } from 'react-router-dom'; -import { REPORT_TYPES } from '../../util/constants'; - -const ManageTemplates: FC = () => { - - const [selectedReport, setSelectedReport] = useState('0'); - const navigate = useNavigate(); - - const selectedReportHandler = (event: React.ChangeEvent) => { - setSelectedReport(event.target.value); - }; - - const manageReportsHandler = () => { - navigate(`/manage-templates/${selectedReport}`); - }; - - - return ( - <> -
-

Manage Templates

-
-
-
-

Select a Template:

-
-
-
- -
-
- -
-
- - ); -}; - -export default ManageTemplates; \ No newline at end of file diff --git a/frontend/src/app/content/pages/ManageTemplatesPage.tsx b/frontend/src/app/content/pages/ManageTemplatesPage.tsx index 6f64d711..603b1f30 100644 --- a/frontend/src/app/content/pages/ManageTemplatesPage.tsx +++ b/frontend/src/app/content/pages/ManageTemplatesPage.tsx @@ -1,196 +1,100 @@ import { FC, useEffect, useState } from 'react'; -import { useParams } from 'react-router'; -import { NFR_REPORT_PAGES, REPORT_TYPES } from '../../util/constants'; -import Collapsible from '../../components/common/Collapsible'; import TemplateInfoTable from '../../components/table/manage-templates/TemplateInfoTable'; -import AddProvisionModal from '../../components/modal/manage-templates/AddProvisionModal'; -import UploadTemplateModal from '../../components/modal/manage-templates/UploadTemplateModal'; -import RemoveTemplateModal from '../../components/modal/manage-templates/RemoveTemplateModal'; -import ManageProvisionsTable from '../../components/table/manage-templates/ManageProvisionsTable'; -import { GroupMax, Provision, ProvisionUpload, Variable } from '../../types/types'; -import EditProvisionModal from '../../components/modal/manage-templates/EditProvisionModal'; -import { addProvision, getGroupMax, getProvisions, getVariables, updateProvision } from '../../common/manage-templates'; import { Button } from 'react-bootstrap'; +import { DocType } from '../../types/types'; +import UploadTemplateModal from '../../components/modal/admin/manage-templates/UploadTemplateModal'; +import RemoveTemplateModal from '../../components/modal/admin/manage-templates/RemoveTemplateModal'; +import { getDocumentTypes } from '../../common/report'; -export interface ManageTemplatesPageProps {} - -const ManageTemplatesPage: FC = () => { +const ManageTemplatesPage: FC = () => { const [showUploadModal, setShowUploadModal] = useState(false); const [showRemoveTemplateModal, setShowRemoveTemplateModal] = useState(false); - const [showEditProvisionModal, setShowEditProvisionModal] = useState(false); - const [showAddProvisionModal, setShowAddProvisionModal] = useState(false); - const [currentReportType, setCurrentReportType] = useState(''); const [currentReportId, setCurrentReportId] = useState(-1); - const [currentProvision, setCurrentProvision] = useState(); - const [currentVariables, setCurrentVariables] = useState(); - const [groupMaxArray, setGroupMaxArray] = useState(); - const [allProvisions, setAllProvisions] = useState(); - const [allVariables, setAllVariables] = useState(); const [refreshTrigger, setRefreshTrigger] = useState(0); - const { id } = useParams<{ id: string }>(); - let idNum: number; - idNum = id ? parseInt(id) : 0; - const reportType: string = REPORT_TYPES.filter((report) => report.reportIndex === idNum).map( - (report) => report.reportType - )[0]; + const [selectedDocType, setSelectedDocType] = useState(); + const [allDocTypes, setAllDocTypes] = useState([]); useEffect(() => { const getData = async () => { - const fetchedGroupMaxArray: GroupMax[] = await getGroupMax(); - setGroupMaxArray(fetchedGroupMaxArray); - const provisionData: Provision[] = await getProvisions(); - setAllProvisions(provisionData); - const variablesData: Variable[] = await getVariables(); - setAllVariables(variablesData); - if (currentProvision && currentVariables) { - const updatedProvision: Provision | undefined = provisionData.find((p) => p.id === currentProvision.id); - if (updatedProvision) setCurrentProvision(updatedProvision); - const updatedVariables: Variable[] | undefined = variablesData.filter( - (v) => v.provision_id === currentProvision.id - ); - setCurrentVariables(updatedVariables); - } + const docTypeData = await getDocumentTypes(); + setAllDocTypes(docTypeData); }; getData(); - }, [refreshTrigger]); + }, []); - const openUploadModal = (report: string) => { - setCurrentReportType(report); - setShowUploadModal(true); - }; - - const openRemoveTemplateModal = (id: number, report: string) => { - setCurrentReportType(report); - setCurrentReportId(id); - setShowRemoveTemplateModal(true); - }; + useEffect(() => { + refreshTables(); + }, [selectedDocType]); - const openEditProvisionModal = (provision: Provision, variables: Variable[]) => { - setCurrentProvision(provision); - setCurrentVariables(variables); - setShowEditProvisionModal(true); + const refreshTables = () => { + setRefreshTrigger((prev) => prev + 1); }; - const updateProvisionHandler = async (provisionUpload: ProvisionUpload, provisionId: number) => { - await updateProvision({ ...provisionUpload, id: provisionId }); + const openUploadModal = () => { + setShowUploadModal(true); }; - const addProvisionHandler = async (provisionUpload: ProvisionUpload) => { - await addProvision(provisionUpload); + const openRemoveTemplateModal = (id: number) => { + setCurrentReportId(id); + setShowRemoveTemplateModal(true); }; - const refreshTables = () => { - setRefreshTrigger((prev) => prev + 1); + const selectedDocTypeHandler = (event: React.ChangeEvent) => { + const docTypeId: number = parseInt(event.target.value); + setSelectedDocType(allDocTypes.find((docType) => docType.id === docTypeId)); }; return ( <>

Manage Templates


- {reportType === 'Notice of Final Review' ? ( +
+

Select a Template:

+
+
+
+ +
+
+ {selectedDocType && ( <> - - - - - - - - - - - - - - - - - - - - - - - - - - ) : ( - - - + setShowUploadModal(false)} + onUpload={refreshTables} + documentTypeId={selectedDocType.id} + documentTypeName={selectedDocType.name} + /> + setShowRemoveTemplateModal(false)} + onRemove={refreshTables} + documentTypeId={selectedDocType.id} + documentTypeName={selectedDocType.name} + templateId={currentReportId} + /> + )} - setShowUploadModal(false)} - onUpload={refreshTables} - reportType={currentReportType} - /> - setShowRemoveTemplateModal(false)} - onRemove={refreshTables} - reportType={currentReportType} - templateId={currentReportId} - /> - setShowEditProvisionModal(false)} - updateProvisionHandler={updateProvisionHandler} - refreshTables={refreshTables} - /> - setShowAddProvisionModal(false)} - addProvisionHandler={addProvisionHandler} - refreshTables={refreshTables} - /> ); }; diff --git a/frontend/src/app/content/pages/ReportPage.tsx b/frontend/src/app/content/pages/ReportPage.tsx index 63e3b765..1d7bc78f 100644 --- a/frontend/src/app/content/pages/ReportPage.tsx +++ b/frontend/src/app/content/pages/ReportPage.tsx @@ -1,21 +1,20 @@ import { FC, useCallback, useEffect, useState } from 'react'; import Collapsible from '../../../app/components/common/Collapsible'; -import { DTRDisplayObject } from '../../../app/types/types'; +import { DTRDisplayObject, DocType, ProvisionGroup } from '../../../app/types/types'; import TenureDetails from '../display/TenureDetails'; import AreaDetails from '../display/AreaDetails'; import DtidDetails from '../display/DtidDetails'; import { - generateNfrReport, generateReport, getData, - getMandatoryProvisionsByVariant, - getNfrProvisionsByVariantDtid, - saveNfr, + getDocumentProvisionsByDocTypeIdDtid, + saveDocument, + getMandatoryProvisionsByDocTypeId, + getGroupMaxByDocTypeId, } from '../../common/report'; -import VariantDropdown from '../../components/common/VariantDropdown'; -import { CURRENT_REPORT_PAGES, NFR_REPORT_PAGES, NFR_VARIANTS } from '../../util/constants'; +import { CURRENT_REPORT_PAGES } from '../../util/constants'; import InterestedParties from '../display/InterestedParties'; -import { useParams, useNavigate } from 'react-router-dom'; +import { useParams } from 'react-router-dom'; import Skeleton from 'react-loading-skeleton'; import Provisions, { ProvisionData } from '../display/Provisions'; import Variables from '../display/Variables'; @@ -24,15 +23,14 @@ import { SaveVariableData, VariableJson } from '../../components/table/reports/V import { Button } from 'react-bootstrap'; export interface ReportPageProps { - documentDescription: string; + documentType: DocType; } -const ReportPage: FC = ({ documentDescription }) => { +const ReportPage: FC = ({ documentType }) => { const { dtid } = useParams<{ dtid: string }>(); const dtidNumber = dtid ? parseInt(dtid, 10) : null; const [loading, setLoading] = useState(false); const [data, setData] = useState(null); - const [showNfr, setShowNfr] = useState(false); const [allProvisions, setAllProvisions] = useState([]); const [variableArray, setVariableArray] = useState([]); const [provisionArray, setProvisionArray] = useState([]); @@ -40,21 +38,24 @@ const ReportPage: FC = ({ documentDescription }) => { const [provisionJsonArray, setProvisionJsonArray] = useState([]); const [selectedProvisionIds, setSelectedProvisionIds] = useState([]); const [mandatoryProvisionIds, setMandatoryProvisionIds] = useState([]); - - const navigate = useNavigate(); + const [provisionGroups, setProvisionGroups] = useState([]); useEffect(() => { - setShowNfr(NFR_VARIANTS.includes(documentDescription.toUpperCase())); const fetchData = async () => { if (dtidNumber) { try { setLoading(true); - const fetchedData: DTRDisplayObject = await getData(dtidNumber); + const fetchedData: DTRDisplayObject = await getData(documentType.id, dtidNumber); setData(fetchedData); - const fetchProvisions: ProvisionData[] = await getNfrProvisionsByVariantDtid(documentDescription, dtidNumber); + const fetchProvisions: ProvisionData[] = await getDocumentProvisionsByDocTypeIdDtid( + documentType.id, + dtidNumber + ); setAllProvisions(fetchProvisions); - const mpIds: number[] = await getMandatoryProvisionsByVariant(documentDescription); + const mpIds: number[] = await getMandatoryProvisionsByDocTypeId(documentType.id); setMandatoryProvisionIds(mpIds); + const provisionGroupsObject: ProvisionGroup[] = await getGroupMaxByDocTypeId(documentType.id); + setProvisionGroups(provisionGroupsObject); } catch (error) { console.error('Failed to fetch data', error); setData(null); @@ -64,26 +65,14 @@ const ReportPage: FC = ({ documentDescription }) => { } }; fetchData(); - }, [dtidNumber, documentDescription]); + }, [dtidNumber, documentType]); - const generateReportHandler = () => { - if (dtidNumber) { - generateReport(dtidNumber, data!.fileNum, documentDescription); - } - }; - - const handleNfrGenerate = () => { + const handleGenerateReport = () => { if (dtidNumber) { const errorMessage = validateProvisions(); if (!errorMessage) { if (data) { - generateNfrReport( - dtidNumber, - data.fileNum, - documentDescription.toUpperCase(), - provisionJsonArray, - variableJsonArray - ); + generateReport(dtidNumber, data!.fileNum, documentType.id, provisionJsonArray, variableJsonArray); } } else { alert(errorMessage); @@ -104,11 +93,6 @@ const ReportPage: FC = ({ documentDescription }) => { } }; - const variantChangeHandler = (variant: string) => { - const upperCaseVariant = variant.toUpperCase(); - navigate(`/dtid/${dtid}/${upperCaseVariant}`); - }; - const updateSelectedProvisionIds = useCallback((selectedProvisionIds: number[]) => { setSelectedProvisionIds(selectedProvisionIds); }, []); @@ -139,14 +123,14 @@ const ReportPage: FC = ({ documentDescription }) => { setProvisionJsonArray(provisionJsonData); }, []); - const handleNfrSave = () => { + const handleDocumentSave = () => { const saveData = async () => { if (dtidNumber) { try { setLoading(true); - await saveNfr(dtidNumber, documentDescription.toUpperCase(), provisionArray, variableArray); + await saveDocument(dtidNumber, documentType.id, provisionArray, variableArray); } catch (err) { - console.log('Error saving NFR Data'); + console.log('Error saving Document Data'); console.log(err); } finally { setLoading(false); @@ -160,18 +144,8 @@ const ReportPage: FC = ({ documentDescription }) => { return ( <> -
Preview - {documentDescription} (Draft)
+
Preview - {documentType.name} (Draft)

- {Object.values(NFR_REPORT_PAGES).includes(documentDescription) && ( -
- -
-
- )}
DTID:
@@ -192,47 +166,43 @@ const ReportPage: FC = ({ documentDescription }) => { {data ? : } {data ? : } - {documentDescription === CURRENT_REPORT_PAGES.LUR ? ( + {documentType.name === CURRENT_REPORT_PAGES.LUR ? ( {data ? : } ) : ( {data ? : } )} - {showNfr && ( - - - - )} - {showNfr && ( - - - + {provisionGroups && ( + <> + + + + + + + + )}
- {showNfr ? ( - <> - - - - ) : ( - + - )} +
); diff --git a/frontend/src/app/content/pages/SearchPage.tsx b/frontend/src/app/content/pages/SearchPage.tsx index 376de5ca..382edfd0 100644 --- a/frontend/src/app/content/pages/SearchPage.tsx +++ b/frontend/src/app/content/pages/SearchPage.tsx @@ -7,15 +7,18 @@ import { FC, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import SearchDataTable from '../../components/table/search/SearchDataTable'; +import { DocType } from '../../types/types'; + +// TODO - redo page to include all document types, replace variant with document type const SearchPage: FC = () => { - const [selectedDocument, setSelectedDocument] = useState<{ dtid: number; variant: string } | null>(null); + const [selectedDocument, setSelectedDocument] = useState<{ dtid: number; documentType: DocType } | null>(null); const [searchTerm, setSearchTerm] = useState(''); const navigate = useNavigate(); const handleOpenDocument = async () => { if (selectedDocument) { - navigate(`/dtid/${selectedDocument.dtid}/${selectedDocument.variant}`); + navigate(`/dtid/${selectedDocument.dtid}/${selectedDocument.documentType.name}`); } }; @@ -23,8 +26,8 @@ const SearchPage: FC = () => { setSearchTerm(e.target.value); }; - const handleSelectedDocumentChange = (dtid: number, variant: string) => { - setSelectedDocument({ dtid, variant }); + const handleSelectedDocumentChange = (dtid: number, documentType: DocType) => { + setSelectedDocument({ dtid, documentType }); }; return ( diff --git a/frontend/src/app/content/pages/SystemAdministration.tsx b/frontend/src/app/content/pages/SystemAdministration.tsx index 6d0b243b..84e675a0 100644 --- a/frontend/src/app/content/pages/SystemAdministration.tsx +++ b/frontend/src/app/content/pages/SystemAdministration.tsx @@ -1,66 +1,58 @@ import React from 'react'; +import { Button } from 'react-bootstrap'; import { useNavigate } from 'react-router-dom'; interface ManagementOption { - id: string; - label: string; + id: string; + label: string; } const managementOptions: ManagementOption[] = [ - { id: 'administrators', label: 'Manage Administrators' }, - { id: 'documentTypes', label: 'Manage Document Types' }, - { id: 'templates', label: 'Manage Templates' }, - { id: 'provisions', label: 'Manage Provisions' }, + { id: 'administrators', label: 'Manage Administrators' }, + { id: 'documentTypes', label: 'Manage Document Types' }, + { id: 'templates', label: 'Manage Templates' }, + { id: 'provisions', label: 'Manage Provisions' }, ]; const SystemAdministration: React.FC = () => { - const navigate = useNavigate(); + const navigate = useNavigate(); + const handleGoClick = (optionId: string) => { + switch (optionId) { + case 'administrators': + navigate(`/manage-admins`); + break; + case 'documentTypes': + navigate(`/manage-doc-types`); + break; + case 'templates': + navigate(`/manage-templates`); + break; + case 'provisions': + navigate(`/manage-provisions`); + break; + default: + break; + } + }; - const handleGoClick = (optionId: string) => { - switch (optionId) { - case 'administrators': - console.log('Go to Manage Administrators'); - navigate(`/system-admin`); - break; - case 'documentTypes': - console.log('Go to Manage Document Types'); - break; - case 'templates': - console.log('Go to Manage Templates'); - navigate(`/manage-templates-select`); - break; - case 'provisions': - console.log('Go to Manage Provisions'); - break; - default: - console.log('Unknown option'); - break; - } - }; - - return ( -
-

System Administration

-
- {managementOptions.map((option) => ( -
- {option.label} - -
- ))} + return ( +
+

System Administration

+
+ {managementOptions.map((option) => ( +
+ {option.label} +
- ); + ))} +
+ ); }; export default SystemAdministration; diff --git a/frontend/src/app/content/pages/documentpreview/DocumentPreview.tsx b/frontend/src/app/content/pages/documentpreview/DocumentPreview.tsx index 8788882b..26a2b0a4 100644 --- a/frontend/src/app/content/pages/documentpreview/DocumentPreview.tsx +++ b/frontend/src/app/content/pages/documentpreview/DocumentPreview.tsx @@ -1,5 +1,9 @@ import React, { useState } from 'react'; -import { getData, getNfrProvisionsByVariantDtid, getNfrVariablesByVariantDtid } from '../../../common/report'; +import { + getData, + getDocumentProvisionsByDocTypeIdDtid, + getDocumentVariablesByDocTypeIdDtid, +} from '../../../common/report'; import DocumentPreviewForm from './DocumentPreviewForm'; import ContactInfoDisplay from './ContactInfoDisplay'; import LicenseDetailDisplay from './LicenseDetailDisplay'; @@ -9,7 +13,6 @@ import ProvisionsTable from './ProvisionsTable'; import './DocumentPreview.scss'; import CustomCollapsible from './CustomCollapsible'; - interface DocumentPreviewResponse { dtid: number; fileNum: string; @@ -40,7 +43,6 @@ interface DocumentPreviewResponse { }>; } - interface Provision { type: string; provision: string; @@ -85,8 +87,8 @@ const DocumentPreview: React.FC = () => { const handleClear = () => { setTenureFileNumber(''); setDtid(''); - setIsOpen(false) - setDocumentPreviewResponse(null) + setIsOpen(false); + setDocumentPreviewResponse(null); }; const [provisions, setProvisions] = useState([ @@ -97,25 +99,22 @@ const DocumentPreview: React.FC = () => { const [documentType, setDocumentType] = useState('STANDARD_LICENSE'); - const handleCheckboxChange = (index: number) => { provisions[index].included = !provisions[index].included; }; - - const fetchData = async () => { - const nfrData = await getData(parseInt(dtid)) as DocumentPreviewResponse; + const nfrData = (await getData(1, parseInt(dtid))) as DocumentPreviewResponse; if (nfrData) { - setDocumentPreviewResponse(nfrData) - const dataProvisions = await getNfrProvisionsByVariantDtid("NOTICE OF FINAL REVIEW", 928437); - const dataVariables = await getNfrVariablesByVariantDtid("NOTICE OF FINAL REVIEW", 928437); + setDocumentPreviewResponse(nfrData); + const dataProvisions = await getDocumentProvisionsByDocTypeIdDtid(1, 928437); + const dataVariables = await getDocumentVariablesByDocTypeIdDtid(1, 928437); setIsOpen(true); } }; const handleRetrieve = () => { - if (tenureFileNumber !== "" && dtid !== "") { + if (tenureFileNumber !== '' && dtid !== '') { fetchData(); } }; @@ -123,83 +122,91 @@ const DocumentPreview: React.FC = () => { const toggleCollapsible = () => setIsOpen(!isOpen); - - - - return (
- - - {documentPreviewResponse !== null ? : ""} + isSpanRequired={false} + > + {documentPreviewResponse !== null ? ( + + ) : ( + '' + )} - - - {documentPreviewResponse !== null ? : ""} + isSpanRequired={false} + > + {documentPreviewResponse !== null ? ( + + ) : ( + '' + )} - - - {documentPreviewResponse !== null ? : ""} + isSpanRequired={false} + > + {documentPreviewResponse !== null ? ( + + ) : ( + '' + )}

Create Document


-
- - + { /> - - +
- - + +
); diff --git a/frontend/src/app/types/types.ts b/frontend/src/app/types/types.ts index 6b90058f..04263488 100644 --- a/frontend/src/app/types/types.ts +++ b/frontend/src/app/types/types.ts @@ -112,13 +112,13 @@ export interface InterestedParties { address: string | null; } -export type NfrDataVariableObject = { +export type DocumentDataVariableObject = { data_variable_value: string; id: number; - nfr_variable: NfrVariableObject; + provision_variable: ProvisionVariableObject; }; -export type NfrVariableObject = { +export type ProvisionVariableObject = { id: number; variable_name: string; variable_value: string; @@ -129,13 +129,13 @@ export type NfrVariableObject = { update_timestamp: string; }; -export type NfrDataProvisionObject = { +export type DocumentDataProvisionObject = { provision_free_text: string; id: number; - nfr_provision: NfrProvisionObject; + provision: ProvisionObject; }; -export type NfrProvisionObject = { +export type ProvisionObject = { type: string; provision_name: string; free_text: string; @@ -146,6 +146,7 @@ export type NfrProvisionObject = { provision_group: number; // will always be null id: number; help_text: string; + order_value: number; create_timestamp: string; update_timestamp: string; }; @@ -157,10 +158,9 @@ export type ProvisionGroup = { max: number; }; -export type NfrDataObject = { - nfrData: { +export type DocumentDataObject = { + documentData: { dtid: number; - variant_name: string; template_id: number; status: string; create_userid: string; @@ -169,8 +169,9 @@ export type NfrDataObject = { active: boolean; create_timestamp: string; update_timestamp: string; - nfr_data_provisions: NfrDataProvisionObject; - nfr_data_variables: NfrDataVariableObject; + document_data_provisions: DocumentDataProvisionObject; + document_data_variables: DocumentDataVariableObject; + document_type: any; // }; provisionIds: number[]; variableIds: number[]; @@ -203,8 +204,9 @@ export type Provision = { active_flag: boolean; edit: any; // remove from route help_text: string; + order_value: number; id: number; - variants: any; // seems to be a string array which gets converted to string and saved in the cell + document_type_ids: number[]; // }; export type Variable = { @@ -226,7 +228,8 @@ export type ProvisionUpload = { free_text: string; help_text: string; category: string; - variants: any; + order_value: number; + document_type_ids: number[]; // }; export type VariableUpload = { @@ -243,6 +246,17 @@ export type SearchData = { updated_date: string; status: string; active: boolean; - nfr_id: number; - variant_name: string; + document_data_id: number; // + document_type: DocType; // +}; + +export type DocType = { + id: number; + name: string; + created_by: string; + created_date: string; + create_userid: string; + update_userid: string; + create_timestamp: string; + update_timestamp: string; }; diff --git a/frontend/src/app/util/constants.ts b/frontend/src/app/util/constants.ts index 0c6fac31..a6460a2b 100644 --- a/frontend/src/app/util/constants.ts +++ b/frontend/src/app/util/constants.ts @@ -1,32 +1,32 @@ export const PAGE = [ - { - title: 'Land Use Report', - path: '', - }, - { - title: 'Grazing Lease', - path: 'Grazing Lease', - }, - { - title: 'Notice of Final Review', - path: 'Notice of Final Review', - }, - { - title: 'Notice of Final Review (Delayed)', - path: 'Notice of Final Review (Delayed)', - }, - { - title: 'Notice of Final Review (No Fees)', - path: 'Notice of Final Review (No Fees)', - }, - { - title: 'Notice of Final Review (Survey Required)', - path: 'Notice of Final Review (Survey Required)', - }, - { - title: 'Notice of Final Review (To Obtain Survey)', - path: 'Notice of Final Review (To Obtain Survey)', - }, + // { + // title: 'Land Use Report', + // path: '', + // }, + // { + // title: 'Grazing Lease', + // path: 'Grazing Lease', + // }, + // { + // title: 'Notice of Final Review', + // path: 'Notice of Final Review', + // }, + // { + // title: 'Notice of Final Review (Delayed)', + // path: 'Notice of Final Review (Delayed)', + // }, + // { + // title: 'Notice of Final Review (No Fees)', + // path: 'Notice of Final Review (No Fees)', + // }, + // { + // title: 'Notice of Final Review (Survey Required)', + // path: 'Notice of Final Review (Survey Required)', + // }, + // { + // title: 'Notice of Final Review (To Obtain Survey)', + // path: 'Notice of Final Review (To Obtain Survey)', + // }, { title: 'Search', path: 'search', @@ -41,16 +41,16 @@ export const PAGE = [ }, { title: 'Document Preview', - path: '/' + path: '/', }, { title: 'Select Manage Templates', - path: 'manage-templates-select' + path: 'manage-templates-select', }, { title: 'System Administration Menu', - path: 'system-admin-menu', - } + path: 'system-admin', + }, ]; // should eventually be stored in a table in the db and obtained from there diff --git a/frontend_old/.env.example b/frontend_old/.env.example deleted file mode 100644 index c7087ab9..00000000 --- a/frontend_old/.env.example +++ /dev/null @@ -1,16 +0,0 @@ -# .env -cdogs_service_client_id=TICDI_SERVICE_CLIENT -cdogs_service_client_secret= -cdogs_url=https://cdogs-dev.apps.silver.devops.gov.bc.ca/api/v2/template/render -cdogs_token_endpoint=https://dev.oidc.gov.bc.ca/auth/realms/jbd6rnxw/protocol/openid-connect/token -ttls_api_key= -ttls_url=https://i1api.nrs.gov.bc.ca/ttls-api/v1/dispositionTrans/info/ -ticdi_environment=DEVELOPMENT -session_path=/tmp/sessions -cookie_secret= -session_secret= -keycloak_base_url=https://dev.oidc.gov.bc.ca/auth -keycloak_client_id=ticdi-3202 -keycloak_realm=onestopauth -keycloak_secret=https://bcgov.github.io/sso-requests -keycloak_xapi_key= \ No newline at end of file diff --git a/frontend_old/Dockerfile b/frontend_old/Dockerfile deleted file mode 100644 index 4ecde7c5..00000000 --- a/frontend_old/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# RedHat UBI 8 with nodejs 14 -FROM registry.access.redhat.com/ubi8/ubi as builder -RUN dnf module install -y nodejs:14 - -# Install packages, build and keep only prod packages -WORKDIR /app -COPY . ./ -RUN npm ci --only=prod && \ - npm run build - -# Deployment container -FROM registry.access.redhat.com/ubi8/ubi-micro - -# Set node to production -ENV NODE_ENV production - -# Node packages and dependencies -COPY --from=builder /usr/bin/node /usr/bin/ -COPY --from=builder /usr/lib64/libz.so.1 /usr/lib64/ -COPY --from=builder /usr/lib64/libbrotlidec.so.1 /usr/lib64/ -COPY --from=builder /usr/lib64/libbrotlienc.so.1 /usr/lib64/ -COPY --from=builder /usr/lib64/libcrypto.so.1.1 /usr/lib64/ -COPY --from=builder /usr/lib64/libssl.so.1.1 /usr/lib64/ -COPY --from=builder /usr/lib64/libstdc++.so.6 /usr/lib64/ -COPY --from=builder /usr/lib64/libgcc_s.so.1 /usr/lib64/ -COPY --from=builder /usr/lib64/libbrotlicommon.so.1 /usr/lib64/ - -# Copy over app -WORKDIR /app -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./dist - -# Expose port - mostly a convention, for readability -EXPOSE 3000 - -# Start up command -ENTRYPOINT ["node", "dist/src/main"] \ No newline at end of file diff --git a/frontend_old/nest-cli.json b/frontend_old/nest-cli.json deleted file mode 100644 index c349ea95..00000000 --- a/frontend_old/nest-cli.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "collection": "@nestjs/schematics", - "sourceRoot": "src", - "compilerOptions": { - "assets": [ - { - "include": "../public", - "outDir": "dist/public", - "watchAssets": true - }, - { - "include": "../views", - "outDir": "dist/views", - "watchAssets": true - } - ], - "watchAssets": true - } - -} diff --git a/frontend_old/nodemon.json b/frontend_old/nodemon.json deleted file mode 100644 index 45d53986..00000000 --- a/frontend_old/nodemon.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "watch": ["src"], - "ext": "ts", - "ignore": ["src/**/*.spec.ts"], - "exec": "ts-node ./src/main" - } \ No newline at end of file diff --git a/frontend_old/package-lock.json b/frontend_old/package-lock.json deleted file mode 100644 index 0827ece1..00000000 --- a/frontend_old/package-lock.json +++ /dev/null @@ -1,18373 +0,0 @@ -{ - "name": "TICDI", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "TICDI", - "version": "0.0.1", - "license": "Apache-2.0", - "dependencies": { - "@nestjs/axios": "^1.0.0", - "@nestjs/cli": "^9.1.5", - "@nestjs/common": "^9.2.0", - "@nestjs/config": "^2.0.1", - "@nestjs/core": "^9.2.0", - "@nestjs/platform-express": "^9.2.0", - "@nestjs/schedule": "^2.0.1", - "@nestjs/schematics": "^9.0.3", - "@nestjs/testing": "^9.2.0", - "@types/multer": "^1.4.7", - "axios": "^1.1.3", - "base-64": "^1.0.0", - "class-transformer": "^0.5.1", - "class-validator": "^0.14.0", - "dotenv": "^16.0.3", - "express-session": "^1.17.3", - "handlebars": "^4.7.7", - "hbs": "^4.2.0", - "joi": "^17.6.0", - "jwt-decode": "^3.1.2", - "nestjs-session": "^2.0.0", - "node-fetch": "^2.6.7", - "qs": "^6.10.3", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.5.5", - "session-file-store": "^1.5.0", - "utf8": "^3.0.0", - "uuid": "^8.3.2" - }, - "devDependencies": { - "@bcgov/bootstrap-theme": "https://github.com/bcgov/bootstrap-theme/releases/download/v1.1.1/bcgov-bootstrap-theme-1.1.1.tgz", - "@types/base-64": "^1.0.0", - "@types/express": "^4.17.14", - "@types/express-session": "^1.17.4", - "@types/html5-to-pdf": "^4.0.0", - "@types/jest": "^27.0.2", - "@types/joi": "^17.2.3", - "@types/node": "^16.11.1", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.10.1", - "@typescript-eslint/parser": "^5.10.1", - "bootstrap": "~4.3.1", - "eslint": "^7.32.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "^8.3.0", - "eslint-config-standard": "^16.0.3", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.4.1", - "eslint-plugin-promise": "^5.2.0", - "istanbul-badges-readme": "^1.8.1", - "jest": "^27.3.0", - "jest-badges": "^0.1.3", - "jest-sonar-reporter": "^2.0.0", - "lint-staged": "^12.3.1", - "prettier": "^2.4.1", - "rimraf": "^3.0.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.6", - "ts-jest": "^27.0.7", - "ts-loader": "^9.2.6", - "ts-node": "^10.3.0", - "tsconfig-paths": "^3.11.0", - "typescript": "^4.4.4", - "webpack": "^5.75.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.2.tgz", - "integrity": "sha512-ofDhTmJqoAkmkJP0duwUaCxDBMxPlc+AWYwgs3rKKZeJBb0d+tchEXHXevD5bYbbRfXtnwM+Vye2XYHhA4nWAA==", - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@angular-devkit/schematics": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.2.tgz", - "integrity": "sha512-90hseNg1yQ2AR+lVr/NByZRHnYAlzCL6hr9p9q1KPHxA3Owo04yX6n6dvR/xf27hCopXInXKPsasR59XCx5ZOQ==", - "dependencies": { - "@angular-devkit/core": "14.2.2", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-14.2.2.tgz", - "integrity": "sha512-timCty5tO1A5VOcy8nVJ+jL98i6+ct5/Hg+4rQxc3J6agmmNL9fALboJBEz1ckTt7MewlGtrpohMMy+YGhuWOg==", - "dependencies": { - "@angular-devkit/core": "14.2.2", - "@angular-devkit/schematics": "14.2.2", - "ansi-colors": "4.1.3", - "inquirer": "8.2.4", - "symbol-observable": "4.0.0", - "yargs-parser": "21.1.1" - }, - "bin": { - "schematics": "bin/schematics.js" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/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==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcgov/bootstrap-theme": { - "version": "1.1.1", - "resolved": "https://github.com/bcgov/bootstrap-theme/releases/download/v1.1.1/bcgov-bootstrap-theme-1.1.1.tgz", - "integrity": "sha512-0DiU/PxSNjV/wMwFJXjX3ewx5iDbmTuqjs6uwfxP52B/Crp1fJh8/0ZrgVmwS/ry3ICV8b2/l+XSoaiD1ff6Qw==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "bootstrap": "~4.3.1" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "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", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@nestjs/axios": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-1.0.0.tgz", - "integrity": "sha512-DzBIhmBPgPAf/Hf4oHVgNNrcYcmAwV6v1TeZFkEaotO5AtXEfCJ6c07Po4EmylAA0PFp+8+S77PBEcLNEMOCGQ==", - "dependencies": { - "axios": "1.1.3" - }, - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0", - "reflect-metadata": "^0.1.12", - "rxjs": "^6.0.0 || ^7.0.0" - } - }, - "node_modules/@nestjs/cli": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-9.1.5.tgz", - "integrity": "sha512-rSp26+Nv7PFtYrRSP18Gv5ZK8rRSc2SCCF5wh4SdZaVGgkxShpNq9YEfI+ik/uziN3KC5o74ppYRXGj+aHGVsA==", - "dependencies": { - "@angular-devkit/core": "14.2.2", - "@angular-devkit/schematics": "14.2.2", - "@angular-devkit/schematics-cli": "14.2.2", - "@nestjs/schematics": "^9.0.0", - "chalk": "3.0.0", - "chokidar": "3.5.3", - "cli-table3": "0.6.2", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "7.2.13", - "inquirer": "7.3.3", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "os-name": "4.0.1", - "rimraf": "3.0.2", - "shelljs": "0.8.5", - "source-map-support": "0.5.21", - "tree-kill": "1.2.2", - "tsconfig-paths": "4.1.0", - "tsconfig-paths-webpack-plugin": "4.0.0", - "typescript": "4.8.4", - "webpack": "5.74.0", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" - }, - "engines": { - "node": ">= 12.9.0" - } - }, - "node_modules/@nestjs/cli/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@nestjs/cli/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/@nestjs/cli/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@nestjs/cli/node_modules/tsconfig-paths": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz", - "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==", - "dependencies": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@nestjs/cli/node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@nestjs/cli/node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/@nestjs/common": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-9.2.0.tgz", - "integrity": "sha512-Ndcqak/ETYi+n1c5lFRPbxKLyUuM6DIOxcvfEFGfi0f6ad4dWDXRDx7z/n8V0l8+Y8djvvOHgf3t0e93w963Qg==", - "dependencies": { - "iterare": "1.2.1", - "tslib": "2.4.1", - "uuid": "9.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "cache-manager": "<=5", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "cache-manager": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/common/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@nestjs/config": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.2.0.tgz", - "integrity": "sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg==", - "dependencies": { - "dotenv": "16.0.1", - "dotenv-expand": "8.0.3", - "lodash": "4.17.21", - "uuid": "8.3.2" - }, - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0", - "reflect-metadata": "^0.1.13", - "rxjs": "^6.0.0 || ^7.2.0" - } - }, - "node_modules/@nestjs/config/node_modules/dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@nestjs/core": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-9.2.0.tgz", - "integrity": "sha512-eVN7aXAavV+ImVt8mO+rQ5YyUP6lJtQKUtQHxHKzz6Wg+9Y67WWZS2uDcDX5NNcNijbWky5bqad86fgcK9Oqig==", - "hasInstallScript": true, - "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.4.1", - "uuid": "9.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^9.0.0", - "@nestjs/microservices": "^9.0.0", - "@nestjs/platform-express": "^9.0.0", - "@nestjs/websockets": "^9.0.0", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/core/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@nestjs/platform-express": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-9.2.0.tgz", - "integrity": "sha512-J1+nnzjC9ATSb0jSHBqAE6D4o+PIbGPItEfYTOZ0rkE5bvqnRfgO4q94SXhfri+5PaNx2vM8tOZsKaD0QmQRGQ==", - "dependencies": { - "body-parser": "1.20.1", - "cors": "2.8.5", - "express": "4.18.2", - "multer": "1.4.4-lts.1", - "tslib": "2.4.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^9.0.0", - "@nestjs/core": "^9.0.0" - } - }, - "node_modules/@nestjs/platform-express/node_modules/multer": { - "version": "1.4.4-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", - "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@nestjs/schedule": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-2.1.0.tgz", - "integrity": "sha512-4Xaw56WiW3VsxEPPnj/iDtfjcO+sUZyYAeRxD0gnF5havncxjAnv52Iw7UH3DuzzUA784xPGgGje3Fq0Gu925g==", - "dependencies": { - "cron": "2.0.0", - "uuid": "8.3.2" - }, - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0", - "@nestjs/core": "^7.0.0 || ^8.0.0 || ^9.0.0", - "reflect-metadata": "^0.1.12" - } - }, - "node_modules/@nestjs/schematics": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.0.3.tgz", - "integrity": "sha512-kZrU/lrpVd2cnK8I3ibDb3Wi1ppl3wX3U3lVWoL+DzRRoezWKkh8upEL4q0koKmuXnsmLiu3UPxFeMOrJV7TSA==", - "dependencies": { - "@angular-devkit/core": "14.2.1", - "@angular-devkit/schematics": "14.2.1", - "fs-extra": "10.1.0", - "jsonc-parser": "3.2.0", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": "^4.3.5" - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.1.tgz", - "integrity": "sha512-lW8oNGuJqr4r31FWBjfWQYkSXdiOHBGOThIEtHvUVBKfPF/oVrupLueCUgBPel+NvxENXdo93uPsqHN7bZbmsQ==", - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core/node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.1.tgz", - "integrity": "sha512-0U18FwDYt4zROBPrvewH6iBTkf2ozVHN4/gxUb9jWrqVw8mPU5AWc/iYxQLHBSinkr2Egjo1H/i9aBqgJSeh3g==", - "dependencies": { - "@angular-devkit/core": "14.2.1", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" - }, - "node_modules/@nestjs/schematics/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@nestjs/testing": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-9.2.0.tgz", - "integrity": "sha512-Lj6UXmBJKcXB16bZzu0IG7GpH7hl5Cn71OcPSrVVuPrFd5kDYqFbodfE9OkAKaHjEhOvZ2ynoo/i6cyfX4yOvQ==", - "dependencies": { - "tslib": "2.4.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^9.0.0", - "@nestjs/core": "^9.0.0", - "@nestjs/microservices": "^9.0.0", - "@nestjs/platform-express": "^9.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", - "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", - "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-AvCJx/HrfYHmOQRFdVvgKMplXfzTUizmh0tz9GFTpDePWgCY4uoKll84zKlaRoeiYiCr7c9ZnqSTzkl0BUVD6g==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/express-session": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.5.tgz", - "integrity": "sha512-l0DhkvNVfyUPEEis8fcwbd46VptfA/jmMwHfob2TfDMf3HyPLiB9mKD71LXhz5TMUobODXPD27zXSwtFQLHm+w==", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/html5-to-pdf": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/html5-to-pdf/-/html5-to-pdf-4.0.1.tgz", - "integrity": "sha512-rMQtsgW3GbHZ98w0C9jMCIYmtNAaStlfWyIroHJ0BpEUSSd7B83PnhQ6DbsLgsBi4bRCgAv1qNLrH2hQrmDwTw==", - "dev": true, - "dependencies": { - "@types/puppeteer": "^5.0.0" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dev": true, - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/joi": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/@types/joi/-/joi-17.2.3.tgz", - "integrity": "sha512-dGjs/lhrWOa+eO0HwgxCSnDm5eMGCsXuvLglMghJq32F6q5LyyNuXb41DHzrg501CKNOSSAHmfB7FDGeUnDmzw==", - "deprecated": "This is a stub types definition. joi provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "joi": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - }, - "node_modules/@types/multer": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.7.tgz", - "integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/node": { - "version": "16.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", - "dev": true - }, - "node_modules/@types/puppeteer": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.7.tgz", - "integrity": "sha512-JdGWZZYL0vKapXF4oQTC5hLVNfOgdPrqeZ1BiQnGk5cB7HeE91EWUiTdVSdQPobRN8rIcdffjiOgCYJ/S8QrnQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/superagent": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", - "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", - "dev": true, - "dependencies": { - "@types/cookiejar": "*", - "@types/node": "*" - } - }, - "node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", - "dev": true, - "dependencies": { - "@types/superagent": "*" - } - }, - "node_modules/@types/validator": { - "version": "13.7.12", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.12.tgz", - "integrity": "sha512-YVtyAPqpefU+Mm/qqnOANW6IkqKpCSrarcyV269C8MA8Ux0dbkEuQwM/4CjL47kVEM2LgBef/ETfkH+c6+moFA==" - }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", - "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", - "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "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/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/bagpipe": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/bagpipe/-/bagpipe-0.3.5.tgz", - "integrity": "sha512-42sAlmPDKes1nLm/aly+0VdaopSU9br+jkRELedhQxI5uXHgtk47I83Mpmf4zoNTRMASdLFtUkimlu/Z9zQ8+g==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "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==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/bootstrap": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", - "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.14.7" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001434", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", - "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.2.tgz", - "integrity": "sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" - }, - "node_modules/class-validator": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", - "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", - "dependencies": { - "@types/validator": "^13.7.10", - "libphonenumber-js": "^1.10.14", - "validator": "^13.7.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-nestjs-middleware-module": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/create-nestjs-middleware-module/-/create-nestjs-middleware-module-0.2.2.tgz", - "integrity": "sha512-S9+DdSEQE1dNVIxIoaJ05ZvxaRiRCH0lBguU90/MCASMFXfYDQAY3HE75/iJlH2nM6ARSsVuoVYJp4YehglDEQ==", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@nestjs/common": ">=6.0.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cron": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cron/-/cron-2.0.0.tgz", - "integrity": "sha512-RPeRunBCFr/WEo7WLp8Jnm45F/ziGJiHVvVQEBSDTSGu6uHW49b2FOP2O14DcXlGJRLhwE7TIoDzHHK4KmlL6g==", - "dependencies": { - "luxon": "^1.23.x" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", - "dev": true - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.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==", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/dotenv-expand": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", - "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.11.0.tgz", - "integrity": "sha512-0Gcraf7gAJSQoPg+bTSXNhuzAYtXqLc4C011vb8S3B8XUSEkGYNBk20c68X9291VF4vvsCD8SPkr6Mza+DwU+g==", - "dependencies": { - "graceful-fs": "^4.2.9", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-promise": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", - "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", - "dev": true, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "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/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-session": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", - "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", - "dependencies": { - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-headers": "~1.0.2", - "parseurl": "~1.3.3", - "safe-buffer": "5.2.1", - "uid-safe": "~2.1.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express-session/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express-session/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express-session/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "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==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==" - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", - "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "vue-template-compiler": "*", - "webpack": "^5.11.0" - }, - "peerDependenciesMeta": { - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formidable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", - "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", - "dev": true, - "dependencies": { - "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", - "once": "^1.4.0", - "qs": "^6.11.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "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/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hbs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hbs/-/hbs-4.2.0.tgz", - "integrity": "sha512-dQwHnrfWlTk5PvG9+a45GYpg0VpX47ryKF8dULVd6DtwOE6TEcYQXQ5QM6nyOx/h7v3bvEQbdn19EDAcfUAgZg==", - "dependencies": { - "handlebars": "4.7.7", - "walk": "2.3.15" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "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/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/inquirer/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-badges-readme": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/istanbul-badges-readme/-/istanbul-badges-readme-1.8.2.tgz", - "integrity": "sha512-GUSoxOMAIackozEEuLQkRF8DsfA4AYEED42CgTKx6BesziVe+YYLn8Wa4svGHgGGeuhHo+6a6owxi7mNPhYnBg==", - "dev": true, - "bin": { - "istanbul-badges-readme": "lib/index.js" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-badges": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/jest-badges/-/jest-badges-0.1.3.tgz", - "integrity": "sha512-7Mc3oacFiSmUi6iDtPT1fAXkjnQhh/q1g3+lUT+Ldz8zwK0ZrNbnE25HHTtfXl5pYZagMseSuNaQj59j3bVYow==", - "dev": true, - "dependencies": { - "istanbul-lib-report": "^3.0.0" - } - }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-sonar-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz", - "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==", - "dev": true, - "dependencies": { - "xml": "^1.0.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/joi": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", - "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/jquery": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", - "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==", - "dev": true, - "peer": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "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==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/kruptein": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-2.2.3.tgz", - "integrity": "sha512-BTwprBPTzkFT9oTugxKd3WnWrX630MqUDsnmBuoa98eQs12oD4n4TeI0GbpdGcYn/73Xueg2rfnw+oK4dovnJg==", - "dependencies": { - "asn1.js": "^5.4.1" - }, - "engines": { - "node": ">6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libphonenumber-js": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.14.tgz", - "integrity": "sha512-McGS7GV/WjJ2KjfOGhJU1oJn29RYeo7Q+RpANRbUNMQ9gj5XArpbjurSuyYPTejFwbaUojstQ4XyWCrAzGOUXw==" - }, - "node_modules/lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/lint-staged": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", - "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", - "dev": true, - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^9.3.0", - "debug": "^4.3.4", - "execa": "^5.1.1", - "lilconfig": "2.0.5", - "listr2": "^4.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.5.0", - "string-argv": "^0.3.1", - "supports-color": "^9.2.2", - "yaml": "^1.10.2" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.3.tgz", - "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/listr2": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.5", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/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/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==", - "engines": { - "node": "*" - } - }, - "node_modules/macos-release": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", - "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "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/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.12", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", - "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", - "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/nestjs-session": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nestjs-session/-/nestjs-session-2.0.0.tgz", - "integrity": "sha512-Li5VbSyRuSZzaIuPGm+m9bmrF7nciZBjZVAi1mP0RrfmL7RcItP7pMfj64JTtUZrPNR+QczcHlnqNFnCjL04wg==", - "dependencies": { - "create-nestjs-middleware-module": "^0.2.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express-session": "^1.17.4", - "express-session": "^1.17.2" - } - }, - "node_modules/node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "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==", - "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/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/os-name": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", - "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", - "dependencies": { - "macos-release": "^2.5.0", - "windows-release": "^4.0.0" - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", - "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "dev": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "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", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/session-file-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/session-file-store/-/session-file-store-1.5.0.tgz", - "integrity": "sha512-60IZaJNzyu2tIeHutkYE8RiXVx3KRvacOxfLr2Mj92SIsRIroDsH0IlUUR6fJAjoTW4RQISbaOApa2IZpIwFdQ==", - "dependencies": { - "bagpipe": "^0.3.5", - "fs-extra": "^8.0.1", - "kruptein": "^2.0.4", - "object-assign": "^4.1.1", - "retry": "^0.12.0", - "write-file-atomic": "3.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/session-file-store/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/session-file-store/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/session-file-store/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superagent": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.3.tgz", - "integrity": "sha512-oBC+aNsCjzzjmO5AOPBPFS+Z7HPzlx+DQr/aHwM08kI+R24gsDmAS1LMfza1fK+P+SKlTAoNZpOvooE/pRO1HA==", - "dev": true, - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.11.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=6.4.0 <13 || >=14" - } - }, - "node_modules/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/supertest": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.1.tgz", - "integrity": "sha512-hRohNeIfk/cA48Cxpa/w48hktP6ZaRqXb0QV5rLvW0C7paRsBU3Q5zydzYrslOJtj/gd48qx540jKtcs6vG1fQ==", - "dev": true, - "dependencies": { - "methods": "^1.1.2", - "superagent": "^8.0.3" - }, - "engines": { - "node": ">=6.4.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-loader": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", - "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz", - "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==", - "dependencies": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "dependencies": { - "random-bytes": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/walk": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", - "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", - "dependencies": { - "foreachasync": "^3.0.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/windows-release": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", - "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", - "dependencies": { - "execa": "^4.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/windows-release/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/windows-release/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/windows-release/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", - "dev": true - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/core": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.2.tgz", - "integrity": "sha512-ofDhTmJqoAkmkJP0duwUaCxDBMxPlc+AWYwgs3rKKZeJBb0d+tchEXHXevD5bYbbRfXtnwM+Vye2XYHhA4nWAA==", - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@angular-devkit/schematics": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.2.tgz", - "integrity": "sha512-90hseNg1yQ2AR+lVr/NByZRHnYAlzCL6hr9p9q1KPHxA3Owo04yX6n6dvR/xf27hCopXInXKPsasR59XCx5ZOQ==", - "requires": { - "@angular-devkit/core": "14.2.2", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@angular-devkit/schematics-cli": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-14.2.2.tgz", - "integrity": "sha512-timCty5tO1A5VOcy8nVJ+jL98i6+ct5/Hg+4rQxc3J6agmmNL9fALboJBEz1ckTt7MewlGtrpohMMy+YGhuWOg==", - "requires": { - "@angular-devkit/core": "14.2.2", - "@angular-devkit/schematics": "14.2.2", - "ansi-colors": "4.1.3", - "inquirer": "8.2.4", - "symbol-observable": "4.0.0", - "yargs-parser": "21.1.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - } - } - } - }, - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true - }, - "@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - } - } - }, - "@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@bcgov/bootstrap-theme": { - "version": "https://github.com/bcgov/bootstrap-theme/releases/download/v1.1.1/bcgov-bootstrap-theme-1.1.1.tgz", - "integrity": "sha512-0DiU/PxSNjV/wMwFJXjX3ewx5iDbmTuqjs6uwfxP52B/Crp1fJh8/0ZrgVmwS/ry3ICV8b2/l+XSoaiD1ff6Qw==", - "dev": true, - "requires": {} - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - } - }, - "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - } - }, - "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - } - }, - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@nestjs/axios": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-1.0.0.tgz", - "integrity": "sha512-DzBIhmBPgPAf/Hf4oHVgNNrcYcmAwV6v1TeZFkEaotO5AtXEfCJ6c07Po4EmylAA0PFp+8+S77PBEcLNEMOCGQ==", - "requires": { - "axios": "1.1.3" - } - }, - "@nestjs/cli": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-9.1.5.tgz", - "integrity": "sha512-rSp26+Nv7PFtYrRSP18Gv5ZK8rRSc2SCCF5wh4SdZaVGgkxShpNq9YEfI+ik/uziN3KC5o74ppYRXGj+aHGVsA==", - "requires": { - "@angular-devkit/core": "14.2.2", - "@angular-devkit/schematics": "14.2.2", - "@angular-devkit/schematics-cli": "14.2.2", - "@nestjs/schematics": "^9.0.0", - "chalk": "3.0.0", - "chokidar": "3.5.3", - "cli-table3": "0.6.2", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "7.2.13", - "inquirer": "7.3.3", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "os-name": "4.0.1", - "rimraf": "3.0.2", - "shelljs": "0.8.5", - "source-map-support": "0.5.21", - "tree-kill": "1.2.2", - "tsconfig-paths": "4.1.0", - "tsconfig-paths-webpack-plugin": "4.0.0", - "typescript": "4.8.4", - "webpack": "5.74.0", - "webpack-node-externals": "3.0.0" - }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "tsconfig-paths": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz", - "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==", - "requires": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" - }, - "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - } - } - } - }, - "@nestjs/common": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-9.2.0.tgz", - "integrity": "sha512-Ndcqak/ETYi+n1c5lFRPbxKLyUuM6DIOxcvfEFGfi0f6ad4dWDXRDx7z/n8V0l8+Y8djvvOHgf3t0e93w963Qg==", - "requires": { - "iterare": "1.2.1", - "tslib": "2.4.1", - "uuid": "9.0.0" - }, - "dependencies": { - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - } - } - }, - "@nestjs/config": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.2.0.tgz", - "integrity": "sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg==", - "requires": { - "dotenv": "16.0.1", - "dotenv-expand": "8.0.3", - "lodash": "4.17.21", - "uuid": "8.3.2" - }, - "dependencies": { - "dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" - } - } - }, - "@nestjs/core": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-9.2.0.tgz", - "integrity": "sha512-eVN7aXAavV+ImVt8mO+rQ5YyUP6lJtQKUtQHxHKzz6Wg+9Y67WWZS2uDcDX5NNcNijbWky5bqad86fgcK9Oqig==", - "requires": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "3.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.4.1", - "uuid": "9.0.0" - }, - "dependencies": { - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - } - } - }, - "@nestjs/platform-express": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-9.2.0.tgz", - "integrity": "sha512-J1+nnzjC9ATSb0jSHBqAE6D4o+PIbGPItEfYTOZ0rkE5bvqnRfgO4q94SXhfri+5PaNx2vM8tOZsKaD0QmQRGQ==", - "requires": { - "body-parser": "1.20.1", - "cors": "2.8.5", - "express": "4.18.2", - "multer": "1.4.4-lts.1", - "tslib": "2.4.1" - }, - "dependencies": { - "multer": { - "version": "1.4.4-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", - "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", - "requires": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - } - } - } - }, - "@nestjs/schedule": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-2.1.0.tgz", - "integrity": "sha512-4Xaw56WiW3VsxEPPnj/iDtfjcO+sUZyYAeRxD0gnF5havncxjAnv52Iw7UH3DuzzUA784xPGgGje3Fq0Gu925g==", - "requires": { - "cron": "2.0.0", - "uuid": "8.3.2" - } - }, - "@nestjs/schematics": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.0.3.tgz", - "integrity": "sha512-kZrU/lrpVd2cnK8I3ibDb3Wi1ppl3wX3U3lVWoL+DzRRoezWKkh8upEL4q0koKmuXnsmLiu3UPxFeMOrJV7TSA==", - "requires": { - "@angular-devkit/core": "14.2.1", - "@angular-devkit/schematics": "14.2.1", - "fs-extra": "10.1.0", - "jsonc-parser": "3.2.0", - "pluralize": "8.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.1.tgz", - "integrity": "sha512-lW8oNGuJqr4r31FWBjfWQYkSXdiOHBGOThIEtHvUVBKfPF/oVrupLueCUgBPel+NvxENXdo93uPsqHN7bZbmsQ==", - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "dependencies": { - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" - } - } - }, - "@angular-devkit/schematics": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.1.tgz", - "integrity": "sha512-0U18FwDYt4zROBPrvewH6iBTkf2ozVHN4/gxUb9jWrqVw8mPU5AWc/iYxQLHBSinkr2Egjo1H/i9aBqgJSeh3g==", - "requires": { - "@angular-devkit/core": "14.2.1", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" - } - } - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@nestjs/testing": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-9.2.0.tgz", - "integrity": "sha512-Lj6UXmBJKcXB16bZzu0IG7GpH7hl5Cn71OcPSrVVuPrFd5kDYqFbodfE9OkAKaHjEhOvZ2ynoo/i6cyfX4yOvQ==", - "requires": { - "tslib": "2.4.1" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "requires": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@sinonjs/commons": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", - "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", - "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-AvCJx/HrfYHmOQRFdVvgKMplXfzTUizmh0tz9GFTpDePWgCY4uoKll84zKlaRoeiYiCr7c9ZnqSTzkl0BUVD6g==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/express-session": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.5.tgz", - "integrity": "sha512-l0DhkvNVfyUPEEis8fcwbd46VptfA/jmMwHfob2TfDMf3HyPLiB9mKD71LXhz5TMUobODXPD27zXSwtFQLHm+w==", - "requires": { - "@types/express": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/html5-to-pdf": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/html5-to-pdf/-/html5-to-pdf-4.0.1.tgz", - "integrity": "sha512-rMQtsgW3GbHZ98w0C9jMCIYmtNAaStlfWyIroHJ0BpEUSSd7B83PnhQ6DbsLgsBi4bRCgAv1qNLrH2hQrmDwTw==", - "dev": true, - "requires": { - "@types/puppeteer": "^5.0.0" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dev": true, - "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "@types/joi": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/@types/joi/-/joi-17.2.3.tgz", - "integrity": "sha512-dGjs/lhrWOa+eO0HwgxCSnDm5eMGCsXuvLglMghJq32F6q5LyyNuXb41DHzrg501CKNOSSAHmfB7FDGeUnDmzw==", - "dev": true, - "requires": { - "joi": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - }, - "@types/multer": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.7.tgz", - "integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==", - "requires": { - "@types/express": "*" - } - }, - "@types/node": { - "version": "16.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", - "dev": true - }, - "@types/puppeteer": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.7.tgz", - "integrity": "sha512-JdGWZZYL0vKapXF4oQTC5hLVNfOgdPrqeZ1BiQnGk5cB7HeE91EWUiTdVSdQPobRN8rIcdffjiOgCYJ/S8QrnQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/superagent": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", - "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", - "dev": true, - "requires": { - "@types/cookiejar": "*", - "@types/node": "*" - } - }, - "@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", - "dev": true, - "requires": { - "@types/superagent": "*" - } - }, - "@types/validator": { - "version": "13.7.12", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.12.tgz", - "integrity": "sha512-YVtyAPqpefU+Mm/qqnOANW6IkqKpCSrarcyV269C8MA8Ux0dbkEuQwM/4CjL47kVEM2LgBef/ETfkH+c6+moFA==" - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", - "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", - "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": { - "ajv": "^8.0.0" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "bagpipe": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/bagpipe/-/bagpipe-0.3.5.tgz", - "integrity": "sha512-42sAlmPDKes1nLm/aly+0VdaopSU9br+jkRELedhQxI5uXHgtk47I83Mpmf4zoNTRMASdLFtUkimlu/Z9zQ8+g==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "bootstrap": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", - "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==", - "dev": true, - "requires": {} - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001434", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", - "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==" - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.2.tgz", - "integrity": "sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" - }, - "class-validator": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", - "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", - "requires": { - "@types/validator": "^13.7.10", - "libphonenumber-js": "^1.10.14", - "validator": "^13.7.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" - }, - "cli-table3": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-nestjs-middleware-module": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/create-nestjs-middleware-module/-/create-nestjs-middleware-module-0.2.2.tgz", - "integrity": "sha512-S9+DdSEQE1dNVIxIoaJ05ZvxaRiRCH0lBguU90/MCASMFXfYDQAY3HE75/iJlH2nM6ARSsVuoVYJp4YehglDEQ==", - "requires": {} - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cron": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cron/-/cron-2.0.0.tgz", - "integrity": "sha512-RPeRunBCFr/WEo7WLp8Jnm45F/ziGJiHVvVQEBSDTSGu6uHW49b2FOP2O14DcXlGJRLhwE7TIoDzHHK4KmlL6g==", - "requires": { - "luxon": "^1.23.x" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "dotenv-expand": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", - "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==" - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.11.0.tgz", - "integrity": "sha512-0Gcraf7gAJSQoPg+bTSXNhuzAYtXqLc4C011vb8S3B8XUSEkGYNBk20c68X9291VF4vvsCD8SPkr6Mza+DwU+g==", - "requires": { - "graceful-fs": "^4.2.9", - "tapable": "^2.2.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} - }, - "eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-promise": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", - "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "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" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - } - } - }, - "express-session": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", - "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", - "requires": { - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-headers": "~1.0.2", - "parseurl": "~1.3.3", - "safe-buffer": "5.2.1", - "uid-safe": "~2.1.5" - }, - "dependencies": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==" - }, - "fork-ts-checker-webpack-plugin": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", - "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", - "requires": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", - "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", - "dev": true, - "requires": { - "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", - "once": "^1.4.0", - "qs": "^6.11.0" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "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 - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "requires": { - "minimist": "1.2.6", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hbs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hbs/-/hbs-4.2.0.tgz", - "integrity": "sha512-dQwHnrfWlTk5PvG9+a45GYpg0VpX47ryKF8dULVd6DtwOE6TEcYQXQ5QM6nyOx/h7v3bvEQbdn19EDAcfUAgZg==", - "requires": { - "handlebars": "4.7.7", - "walk": "2.3.15" - } - }, - "hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "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 - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "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==" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "istanbul-badges-readme": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/istanbul-badges-readme/-/istanbul-badges-readme-1.8.2.tgz", - "integrity": "sha512-GUSoxOMAIackozEEuLQkRF8DsfA4AYEED42CgTKx6BesziVe+YYLn8Wa4svGHgGGeuhHo+6a6owxi7mNPhYnBg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" - }, - "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - } - }, - "jest-badges": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/jest-badges/-/jest-badges-0.1.3.tgz", - "integrity": "sha512-7Mc3oacFiSmUi6iDtPT1fAXkjnQhh/q1g3+lUT+Ldz8zwK0ZrNbnE25HHTtfXl5pYZagMseSuNaQj59j3bVYow==", - "dev": true, - "requires": { - "istanbul-lib-report": "^3.0.0" - } - }, - "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - } - }, - "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - } - }, - "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true - }, - "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - } - }, - "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, - "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-sonar-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz", - "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==", - "dev": true, - "requires": { - "xml": "^1.0.1" - } - }, - "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "joi": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", - "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "jquery": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", - "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==", - "dev": true, - "peer": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "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==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "kruptein": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-2.2.3.tgz", - "integrity": "sha512-BTwprBPTzkFT9oTugxKd3WnWrX630MqUDsnmBuoa98eQs12oD4n4TeI0GbpdGcYn/73Xueg2rfnw+oK4dovnJg==", - "requires": { - "asn1.js": "^5.4.1" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "libphonenumber-js": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.14.tgz", - "integrity": "sha512-McGS7GV/WjJ2KjfOGhJU1oJn29RYeo7Q+RpANRbUNMQ9gj5XArpbjurSuyYPTejFwbaUojstQ4XyWCrAzGOUXw==" - }, - "lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "lint-staged": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", - "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", - "dev": true, - "requires": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^9.3.0", - "debug": "^4.3.4", - "execa": "^5.1.1", - "lilconfig": "2.0.5", - "listr2": "^4.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.5.0", - "string-argv": "^0.3.1", - "supports-color": "^9.2.2", - "yaml": "^1.10.2" - }, - "dependencies": { - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true - }, - "supports-color": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.3.tgz", - "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==", - "dev": true - } - } - }, - "listr2": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.5", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } - } - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "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, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==" - }, - "macos-release": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", - "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==" - }, - "magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "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, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "memfs": { - "version": "3.4.12", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", - "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "nestjs-session": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nestjs-session/-/nestjs-session-2.0.0.tgz", - "integrity": "sha512-Li5VbSyRuSZzaIuPGm+m9bmrF7nciZBjZVAi1mP0RrfmL7RcItP7pMfj64JTtUZrPNR+QczcHlnqNFnCjL04wg==", - "requires": { - "create-nestjs-middleware-module": "^0.2.1" - } - }, - "node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==" - }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "requires": { - "lodash": "^4.17.21" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "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" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "os-name": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", - "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", - "requires": { - "macos-release": "^2.5.0", - "windows-release": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pidtree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", - "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", - "dev": true - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "dev": true, - "peer": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "requires": { - "resolve": "^1.1.6" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - } - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "session-file-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/session-file-store/-/session-file-store-1.5.0.tgz", - "integrity": "sha512-60IZaJNzyu2tIeHutkYE8RiXVx3KRvacOxfLr2Mj92SIsRIroDsH0IlUUR6fJAjoTW4RQISbaOApa2IZpIwFdQ==", - "requires": { - "bagpipe": "^0.3.5", - "fs-extra": "^8.0.1", - "kruptein": "^2.0.4", - "object-assign": "^4.1.1", - "retry": "^0.12.0", - "write-file-atomic": "3.0.3" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - } - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - } - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "superagent": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.3.tgz", - "integrity": "sha512-oBC+aNsCjzzjmO5AOPBPFS+Z7HPzlx+DQr/aHwM08kI+R24gsDmAS1LMfza1fK+P+SKlTAoNZpOvooE/pRO1HA==", - "dev": true, - "requires": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.11.0", - "semver": "^7.3.8" - }, - "dependencies": { - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - } - } - }, - "supertest": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.1.tgz", - "integrity": "sha512-hRohNeIfk/cA48Cxpa/w48hktP6ZaRqXb0QV5rLvW0C7paRsBU3Q5zydzYrslOJtj/gd48qx540jKtcs6vG1fQ==", - "dev": true, - "requires": { - "methods": "^1.1.2", - "superagent": "^8.0.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "dependencies": { - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - }, - "ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "dependencies": { - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "ts-loader": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", - "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - } - } - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - } - } - }, - "tsconfig-paths-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "tsconfig-paths": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz", - "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==", - "requires": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - } - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==" - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true - }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "requires": { - "random-bytes": "~1.0.0" - } - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - } - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, - "walk": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", - "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", - "requires": { - "foreachasync": "^3.0.0" - } - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - } - } - }, - "webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==" - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "windows-release": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", - "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", - "requires": { - "execa": "^4.0.2" - }, - "dependencies": { - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" - } - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} - }, - "xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", - "dev": true - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/frontend_old/package.json b/frontend_old/package.json deleted file mode 100644 index bf7fd4e6..00000000 --- a/frontend_old/package.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "name": "TICDI", - "version": "0.0.1", - "description": "TICDI Frontend Application", - "main": "index.js", - "scripts": { - "prebuild": "rimraf dist", - "build": "nest build", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "lint:staged": "./node_modules/.bin/lint-staged", - "make-badges": "istanbul-badges-readme --logo=jest --exitCode=1", - "make-badges:ci": "npm run make-badges -- --ci", - "test": "jest", - "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/bcgov/greenfield-template.git" - }, - "keywords": [ - "openshift", - "pipeline", - "node", - "node", - "js", - "devops" - ], - "author": "Derek Roberts", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/bcgov/greenfield-template/issues" - }, - "homepage": "https://github.com/bcgov/greenfield-template#readme", - "dependencies": { - "@nestjs/axios": "^1.0.0", - "@nestjs/cli": "^9.1.5", - "@nestjs/common": "^9.2.0", - "@nestjs/config": "^2.0.1", - "@nestjs/core": "^9.2.0", - "@nestjs/platform-express": "^9.2.0", - "@nestjs/schedule": "^2.0.1", - "@nestjs/schematics": "^9.0.3", - "@nestjs/testing": "^9.2.0", - "@types/multer": "^1.4.7", - "axios": "^1.1.3", - "base-64": "^1.0.0", - "class-transformer": "^0.5.1", - "class-validator": "^0.14.0", - "dotenv": "^16.0.3", - "express-session": "^1.17.3", - "handlebars": "^4.7.7", - "hbs": "^4.2.0", - "joi": "^17.6.0", - "jwt-decode": "^3.1.2", - "nestjs-session": "^2.0.0", - "node-fetch": "^2.6.7", - "qs": "^6.10.3", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.5.5", - "session-file-store": "^1.5.0", - "utf8": "^3.0.0", - "uuid": "^8.3.2" - }, - "devDependencies": { - "@bcgov/bootstrap-theme": "https://github.com/bcgov/bootstrap-theme/releases/download/v1.1.1/bcgov-bootstrap-theme-1.1.1.tgz", - "@types/base-64": "^1.0.0", - "@types/express": "^4.17.14", - "@types/express-session": "^1.17.4", - "@types/html5-to-pdf": "^4.0.0", - "@types/jest": "^27.0.2", - "@types/joi": "^17.2.3", - "@types/node": "^16.11.1", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.10.1", - "@typescript-eslint/parser": "^5.10.1", - "bootstrap": "~4.3.1", - "eslint": "^7.32.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "^8.3.0", - "eslint-config-standard": "^16.0.3", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.4.1", - "eslint-plugin-promise": "^5.2.0", - "istanbul-badges-readme": "^1.8.1", - "jest": "^27.3.0", - "jest-badges": "^0.1.3", - "jest-sonar-reporter": "^2.0.0", - "lint-staged": "^12.3.1", - "prettier": "^2.4.1", - "rimraf": "^3.0.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.6", - "ts-jest": "^27.0.7", - "ts-loader": "^9.2.6", - "ts-node": "^10.3.0", - "tsconfig-paths": "^3.11.0", - "typescript": "^4.4.4", - "webpack": "^5.75.0" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverage": true, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "coveragePathIgnorePatterns": [ - "/node_modules/", - "/test/" - ], - "coverageReporters": [ - "text", - "lcov", - "jest-badges" - ], - "testEnvironment": "node", - "testResultsProcessor": "jest-sonar-reporter" - }, - "lint-staged": { - "*.{js,ts}": "./node_modules/.bin/eslint --cache --fix" - }, - "overrides": { - "minimist@<1.2.6": "1.2.6" - } -} diff --git a/frontend_old/src/app.module.ts b/frontend_old/src/app.module.ts deleted file mode 100644 index ad59abd0..00000000 --- a/frontend_old/src/app.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Module } from "@nestjs/common"; -import { AppController } from "./app.controller"; -import { AppService } from "./app.service"; -import { TTLSService } from "./ttls/ttls.service"; -import { ConfigModule } from "@nestjs/config"; -import { AuthenticationModule } from "./authentication/authentication.module"; -import { SessionModule } from "nestjs-session"; -import { HttpModule } from "@nestjs/axios"; -import { AdminController } from "./admin/admin.controller"; -import { AdminModule } from "./admin/admin.module"; -import { ReportModule } from "./report/report.module"; -import { HttpExceptionFilter } from "./authentication/http-exception.filter"; -import { APP_FILTER } from "@nestjs/core"; - -@Module({ - imports: [ - ConfigModule.forRoot(), - HttpModule, - AuthenticationModule, - AdminModule, - ReportModule, - SessionModule.forRoot({ - session: { secret: process.env.session_secret }, - }), - ], - controllers: [AppController, AdminController], - providers: [ - AppService, - TTLSService, - { - provide: APP_FILTER, - useClass: HttpExceptionFilter, - }, - ], -}) -export class AppModule {} diff --git a/frontend_old/src/app.service.ts b/frontend_old/src/app.service.ts deleted file mode 100644 index 85611a18..00000000 --- a/frontend_old/src/app.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Injectable } from '@nestjs/common' - -@Injectable() -export class AppService { - getHello (): string { - return 'Hello World!' - } -} \ No newline at end of file diff --git a/frontend_old/src/main.ts b/frontend_old/src/main.ts deleted file mode 100644 index a0515058..00000000 --- a/frontend_old/src/main.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { NestFactory } from "@nestjs/core"; -import { NestExpressApplication } from "@nestjs/platform-express"; -import path, { join, resolve } from "path"; -import { AppModule } from "./app.module"; -import * as hbs from "hbs"; -import * as expressSession from "express-session"; -const fileSession = require("session-file-store")(expressSession); - -async function bootstrap() { - const app = await NestFactory.create(AppModule, { - cors: true, - }); - - app.useStaticAssets(join(__dirname, "..", "public")); - app.setBaseViewsDir(join(__dirname, "..", "views/pages")); - hbs.registerPartials(join(__dirname, "..", "views/partials")); - hbs.registerPartials(join(__dirname, "..", "views/layout")); - app.setViewEngine("hbs"); - hbs.registerHelper("json", function (context) { - return JSON.stringify(context); - }); - // used on the manage-templates page - hbs.registerHelper("dots", function (variant_name) { - const count = 100 - variant_name.length; - return ".".repeat(count); - }); - - let sessionOptions: expressSession.SessionOptions; - sessionOptions = { - secret: process.env.cookie_secret, - resave: false, - saveUninitialized: false, - store: new fileSession({ path: resolve("./", process.env.session_path) }), - cookie: { maxAge: 1800000, secure: false, httpOnly: true }, - }; - - app.use(expressSession(sessionOptions)); - - await app.listen(3000); -} -bootstrap(); diff --git a/frontend_old/test-report.xml b/frontend_old/test-report.xml deleted file mode 100644 index fcc2257f..00000000 --- a/frontend_old/test-report.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend_old/tsconfig.build.json b/frontend_old/tsconfig.build.json deleted file mode 100644 index 2fe1df27..00000000 --- a/frontend_old/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] -} diff --git a/frontend_old/tsconfig.json b/frontend_old/tsconfig.json deleted file mode 100644 index cf52d738..00000000 --- a/frontend_old/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "target": "es2017", - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", - "incremental": true, - "skipLibCheck": true - }, - "include": ["src/**/*.ts"] -} diff --git a/frontend_old/views/layout/template.hbs b/frontend_old/views/layout/template.hbs deleted file mode 100644 index 7b2e4741..00000000 --- a/frontend_old/views/layout/template.hbs +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - {{title}} - - {{> style}} - - -
- {{> navbar }} -
-
- {{> content}} -
-
- {{> footer}} -
- {{> scripts}} - - \ No newline at end of file diff --git a/frontend_old/views/pages/404.hbs b/frontend_old/views/pages/404.hbs deleted file mode 100644 index 01bb8cba..00000000 --- a/frontend_old/views/pages/404.hbs +++ /dev/null @@ -1,13 +0,0 @@ -{{#> template}} - {{#*inline "content"}} -
-
-

{{title}}

-
-
-

{{message}}

-
-
-
- {{/inline}} -{{/template}} \ No newline at end of file diff --git a/frontend_old/views/pages/grazing-lease.hbs b/frontend_old/views/pages/grazing-lease.hbs deleted file mode 100644 index 274510dc..00000000 --- a/frontend_old/views/pages/grazing-lease.hbs +++ /dev/null @@ -1,137 +0,0 @@ -{{#> template}} - {{#*inline "content"}} -
-
-
-

Preview - Grazing Lease

-
- -
DTID: {{message.dtid}}
-
Tenure File Number: {{message.fileNum}}
-
Primary Contact Name: {{primaryContactName}}
- -
- Disposition Transaction ID Details - -
-
- Tenure Details - -
-
- Interested Parties - -
-
-
- -
-
-
-
- -
- - {{/inline}} -{{/template}} \ No newline at end of file diff --git a/frontend_old/views/pages/index.hbs b/frontend_old/views/pages/index.hbs deleted file mode 100644 index 51bbb3e1..00000000 --- a/frontend_old/views/pages/index.hbs +++ /dev/null @@ -1,154 +0,0 @@ -{{#> template}} - {{#*inline "content"}} -
-
-
-

Preview - Land Use Report (Draft)

-
- -
DTID: {{message.dtid}}
-
Tenure File Number: {{message.tenure_file_number}}
-
Primary Contact Name: {{primaryContactName}}
- -
- Disposition Transaction ID Details - -
-
- Tenure Details - -
-
- Area - -
-
-
- -
-
-
-
- -
- - {{/inline}} -{{/template}} \ No newline at end of file diff --git a/frontend_old/views/pages/index.html b/frontend_old/views/pages/index.html deleted file mode 100644 index 29602cb3..00000000 --- a/frontend_old/views/pages/index.html +++ /dev/null @@ -1,154 +0,0 @@ - - -
-
-
-

Preview - Land Use Report (Draft)

-
- -
DTID: {message.dtid}
-
Tenure File Number: {message.tenure_file_number}
-
Primary Contact Name: {primaryContactName}
- -
- Disposition Transaction ID Details - -
-
- Tenure Details - -
-
- Area - -
-
-
- -
-
-
-
- -
- - - \ No newline at end of file diff --git a/frontend_old/views/pages/manage-templates.hbs b/frontend_old/views/pages/manage-templates.hbs deleted file mode 100644 index b01f96ed..00000000 --- a/frontend_old/views/pages/manage-templates.hbs +++ /dev/null @@ -1,513 +0,0 @@ -{{#> template}} - {{#*inline "content"}} -
-
-

Manage Templates

-
- -
- - -
-
- Notice of Final Review (Delayed) - -
-
- Notice of Final Review (No Fees) - -
-
- Notice of Final Review (Survey Required) - -
-
- Notice of Final Review (To Obtain Survey) - -
-
- Manage NFR Provisions - -
-
-
-
-
- -
- - - -
- - - {{/inline}} -{{/template}} \ No newline at end of file diff --git a/frontend_old/views/pages/nfr.hbs b/frontend_old/views/pages/nfr.hbs deleted file mode 100644 index de383ae6..00000000 --- a/frontend_old/views/pages/nfr.hbs +++ /dev/null @@ -1,190 +0,0 @@ -{{#> template}} - {{#*inline "content"}} -
-
-
-

Preview - Notice of Final Review

-
-
-
-

Select an NFR Variant

-
-
- -
-
-
- -
DTID: {{message.dtid}}
-
Tenure File Number: {{message.fileNum}}
-
Primary Contact Name: {{primaryContactName}}
- -
- Disposition Transaction ID Details - -
-
- Tenure Details - -
-
- Interested Parties - -
-
- Provisions - -
-
- Variables - -
- -
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
-
-
-
- - - -
- - - {{/inline}} -{{/template}} \ No newline at end of file diff --git a/frontend_old/views/pages/search.hbs b/frontend_old/views/pages/search.hbs deleted file mode 100644 index 6fd74a08..00000000 --- a/frontend_old/views/pages/search.hbs +++ /dev/null @@ -1,181 +0,0 @@ -{{#> template}} - {{#*inline "content"}} -
-
-

{{title}}

-
-
-
- - - - - - - - {{!-- Active --}} - {{!-- NFR_ID --}} - {{!-- variant_name --}} - - - - -
DTIDDoc No.Template NameUploaded DateStatus
-
-
-
-
- -
-
-
-
- - - {{/inline}} -{{/template}} \ No newline at end of file diff --git a/frontend_old/views/pages/system-admin.hbs b/frontend_old/views/pages/system-admin.hbs deleted file mode 100644 index 9ac3347e..00000000 --- a/frontend_old/views/pages/system-admin.hbs +++ /dev/null @@ -1,422 +0,0 @@ -{{#> template}} - {{#*inline "content"}} -
-
-

System Administration

-
-
-

List of TICDI Administrators

-
- {{!--
-
- -
-
- -
-
--}} - {{!--
--}} -
-
- - - - - - - - - -
NameUser NameEmail
-
-
-
-
-
- -
-
- -
-
-
-
-

Manage Templates

-
- {{!--
--}} -
-

Select a Template:

-
-
-
- -
-
- -
-
-
- - -
- - {{/inline}} -{{/template}} \ No newline at end of file diff --git a/frontend_old/views/partials/footer.hbs b/frontend_old/views/partials/footer.hbs deleted file mode 100644 index c479fe99..00000000 --- a/frontend_old/views/partials/footer.hbs +++ /dev/null @@ -1,45 +0,0 @@ - \ No newline at end of file diff --git a/frontend_old/views/partials/navbar.hbs b/frontend_old/views/partials/navbar.hbs deleted file mode 100644 index bed2dad0..00000000 --- a/frontend_old/views/partials/navbar.hbs +++ /dev/null @@ -1,55 +0,0 @@ -
- -
\ No newline at end of file diff --git a/frontend_old/views/partials/scripts.hbs b/frontend_old/views/partials/scripts.hbs deleted file mode 100644 index fce242c5..00000000 --- a/frontend_old/views/partials/scripts.hbs +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/frontend_old/views/partials/style.hbs b/frontend_old/views/partials/style.hbs deleted file mode 100644 index 01d78033..00000000 --- a/frontend_old/views/partials/style.hbs +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - -{{! }} - - - - - - - - - - - - - - - \ No newline at end of file