diff --git a/sfj-backend/.idea/.gitignore b/sfj-backend/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/sfj-backend/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/sfj-backend/.idea/compiler.xml b/sfj-backend/.idea/compiler.xml new file mode 100644 index 0000000..855cbac --- /dev/null +++ b/sfj-backend/.idea/compiler.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/dataSources.xml b/sfj-backend/.idea/dataSources.xml new file mode 100644 index 0000000..12c0a0b --- /dev/null +++ b/sfj-backend/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306/sfj + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/sfj-backend/.idea/encodings.xml b/sfj-backend/.idea/encodings.xml new file mode 100644 index 0000000..a96d384 --- /dev/null +++ b/sfj-backend/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/jarRepositories.xml b/sfj-backend/.idea/jarRepositories.xml new file mode 100644 index 0000000..22e83c6 --- /dev/null +++ b/sfj-backend/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/leetcode/editor.xml b/sfj-backend/.idea/leetcode/editor.xml new file mode 100644 index 0000000..203fb9c --- /dev/null +++ b/sfj-backend/.idea/leetcode/editor.xml @@ -0,0 +1,207 @@ + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/leetcode/statistics.xml b/sfj-backend/.idea/leetcode/statistics.xml new file mode 100644 index 0000000..28be487 --- /dev/null +++ b/sfj-backend/.idea/leetcode/statistics.xml @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_4_14.xml b/sfj-backend/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_4_14.xml new file mode 100644 index 0000000..ac6986a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_4_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__ch_qos_logback_logback_core_1_4_14.xml b/sfj-backend/.idea/libraries/Maven__ch_qos_logback_logback_core_1_4_14.xml new file mode 100644 index 0000000..7a38623 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__ch_qos_logback_logback_core_1_4_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson2_fastjson2_2_0_25.xml b/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson2_fastjson2_2_0_25.xml new file mode 100644 index 0000000..1c55beb --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson2_fastjson2_2_0_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson2_fastjson2_extension_2_0_25.xml b/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson2_fastjson2_extension_2_0_25.xml new file mode 100644 index 0000000..3913683 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson2_fastjson2_extension_2_0_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson_2_0_25.xml b/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson_2_0_25.xml new file mode 100644 index 0000000..b348431 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_alibaba_fastjson_2_0_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_carrotsearch_thirdparty_simple_xml_safe_2_7_1.xml b/sfj-backend/.idea/libraries/Maven__com_carrotsearch_thirdparty_simple_xml_safe_2_7_1.xml new file mode 100644 index 0000000..a918945 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_carrotsearch_thirdparty_simple_xml_safe_2_7_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_fasterxml_classmate_1_6_0.xml b/sfj-backend/.idea/libraries/Maven__com_fasterxml_classmate_1_6_0.xml new file mode 100644 index 0000000..fb8a548 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_fasterxml_classmate_1_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_15_3.xml b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_15_3.xml new file mode 100644 index 0000000..b194d9d --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_15_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_15_3.xml b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_15_3.xml new file mode 100644 index 0000000..b1af432 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_15_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_15_3.xml b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_15_3.xml new file mode 100644 index 0000000..86cd658 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_15_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_15_3.xml b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_15_3.xml new file mode 100644 index 0000000..bffd290 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_15_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_15_3.xml b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_15_3.xml new file mode 100644 index 0000000..50fc069 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_15_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_15_3.xml b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_15_3.xml new file mode 100644 index 0000000..65bce52 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_15_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_4_6.xml b/sfj-backend/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_4_6.xml new file mode 100644 index 0000000..889972a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_4_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml b/sfj-backend/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml new file mode 100644 index 0000000..1c380d0 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_5_1.xml b/sfj-backend/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_5_1.xml new file mode 100644 index 0000000..800c4b4 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml b/sfj-backend/.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml new file mode 100644 index 0000000..36e948e --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_google_guava_guava_30_1_1_jre.xml b/sfj-backend/.idea/libraries/Maven__com_google_guava_guava_30_1_1_jre.xml new file mode 100644 index 0000000..c937fa2 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_google_guava_guava_30_1_1_jre.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml b/sfj-backend/.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml new file mode 100644 index 0000000..4e15702 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_3.xml b/sfj-backend/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_3.xml new file mode 100644 index 0000000..bacaa45 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_8_0.xml b/sfj-backend/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_8_0.xml new file mode 100644 index 0000000..2cb631f --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_8_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_1_0.xml b/sfj-backend/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_1_0.xml new file mode 100644 index 0000000..68368de --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_4_12_0.xml b/sfj-backend/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_4_12_0.xml new file mode 100644 index 0000000..f9d3d6b --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_4_12_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_squareup_okio_okio_3_6_0.xml b/sfj-backend/.idea/libraries/Maven__com_squareup_okio_okio_3_6_0.xml new file mode 100644 index 0000000..0d9725c --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_squareup_okio_okio_3_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_squareup_okio_okio_jvm_3_6_0.xml b/sfj-backend/.idea/libraries/Maven__com_squareup_okio_okio_jvm_3_6_0.xml new file mode 100644 index 0000000..ec1ad85 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_squareup_okio_okio_jvm_3_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_sun_istack_istack_commons_runtime_4_1_2.xml b/sfj-backend/.idea/libraries/Maven__com_sun_istack_istack_commons_runtime_4_1_2.xml new file mode 100644 index 0000000..b7cd780 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_sun_istack_istack_commons_runtime_4_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/sfj-backend/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml new file mode 100644 index 0000000..b8581a6 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__com_zaxxer_HikariCP_5_0_1.xml b/sfj-backend/.idea/libraries/Maven__com_zaxxer_HikariCP_5_0_1.xml new file mode 100644 index 0000000..40ae747 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__com_zaxxer_HikariCP_5_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__io_micrometer_micrometer_commons_1_12_1.xml b/sfj-backend/.idea/libraries/Maven__io_micrometer_micrometer_commons_1_12_1.xml new file mode 100644 index 0000000..7d2821a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__io_micrometer_micrometer_commons_1_12_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__io_micrometer_micrometer_observation_1_12_1.xml b/sfj-backend/.idea/libraries/Maven__io_micrometer_micrometer_observation_1_12_1.xml new file mode 100644 index 0000000..ceb1115 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__io_micrometer_micrometer_observation_1_12_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__io_minio_minio_8_3_9.xml b/sfj-backend/.idea/libraries/Maven__io_minio_minio_8_3_9.xml new file mode 100644 index 0000000..ba443d7 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__io_minio_minio_8_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__io_smallrye_jandex_3_1_2.xml b/sfj-backend/.idea/libraries/Maven__io_smallrye_jandex_3_1_2.xml new file mode 100644 index 0000000..30f6f47 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__io_smallrye_jandex_3_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_2_1_2.xml b/sfj-backend/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_2_1_2.xml new file mode 100644 index 0000000..58afa68 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_2_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_2_1_1.xml b/sfj-backend/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_2_1_1.xml new file mode 100644 index 0000000..3f660ae --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_2_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__jakarta_inject_jakarta_inject_api_2_0_1.xml b/sfj-backend/.idea/libraries/Maven__jakarta_inject_jakarta_inject_api_2_0_1.xml new file mode 100644 index 0000000..2ac1a9b --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__jakarta_inject_jakarta_inject_api_2_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__jakarta_persistence_jakarta_persistence_api_3_1_0.xml b/sfj-backend/.idea/libraries/Maven__jakarta_persistence_jakarta_persistence_api_3_1_0.xml new file mode 100644 index 0000000..b5b2267 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__jakarta_persistence_jakarta_persistence_api_3_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__jakarta_transaction_jakarta_transaction_api_2_0_1.xml b/sfj-backend/.idea/libraries/Maven__jakarta_transaction_jakarta_transaction_api_2_0_1.xml new file mode 100644 index 0000000..605cbd9 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__jakarta_transaction_jakarta_transaction_api_2_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_4_0_1.xml b/sfj-backend/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_4_0_1.xml new file mode 100644 index 0000000..75d958a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_4_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_14_10.xml b/sfj-backend/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_14_10.xml new file mode 100644 index 0000000..4c5d9c6 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_14_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_14_10.xml b/sfj-backend/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_14_10.xml new file mode 100644 index 0000000..734884c --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_14_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__net_minidev_accessors_smart_2_5_0.xml b/sfj-backend/.idea/libraries/Maven__net_minidev_accessors_smart_2_5_0.xml new file mode 100644 index 0000000..67b8687 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__net_minidev_accessors_smart_2_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__net_minidev_json_smart_2_5_0.xml b/sfj-backend/.idea/libraries/Maven__net_minidev_json_smart_2_5_0.xml new file mode 100644 index 0000000..32246c4 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__net_minidev_json_smart_2_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_13_0.xml b/sfj-backend/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_13_0.xml new file mode 100644 index 0000000..cecaf8e --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_apache_commons_commons_compress_1_21.xml b/sfj-backend/.idea/libraries/Maven__org_apache_commons_commons_compress_1_21.xml new file mode 100644 index 0000000..49cd123 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_apache_commons_commons_compress_1_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_21_1.xml b/sfj-backend/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_21_1.xml new file mode 100644 index 0000000..ba17f0e --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_21_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_21_1.xml b/sfj-backend/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_21_1.xml new file mode 100644 index 0000000..30065dd --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_21_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_10_1_17.xml b/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_10_1_17.xml new file mode 100644 index 0000000..3468595 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_10_1_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_10_1_17.xml b/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_10_1_17.xml new file mode 100644 index 0000000..da8d99e --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_10_1_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_10_1_17.xml b/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_10_1_17.xml new file mode 100644 index 0000000..d7cebc9 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_10_1_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml new file mode 100644 index 0000000..6ac1c42 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_21.xml b/sfj-backend/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_21.xml new file mode 100644 index 0000000..af68770 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_assertj_assertj_core_3_24_2.xml b/sfj-backend/.idea/libraries/Maven__org_assertj_assertj_core_3_24_2.xml new file mode 100644 index 0000000..8fa9524 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_assertj_assertj_core_3_24_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_awaitility_awaitility_4_2_0.xml b/sfj-backend/.idea/libraries/Maven__org_awaitility_awaitility_4_2_0.xml new file mode 100644 index 0000000..cd03dd9 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_awaitility_awaitility_4_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_69.xml b/sfj-backend/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_69.xml new file mode 100644 index 0000000..004e4d3 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_69.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_checkerframework_checker_qual_3_8_0.xml b/sfj-backend/.idea/libraries/Maven__org_checkerframework_checker_qual_3_8_0.xml new file mode 100644 index 0000000..8c0570b --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_checkerframework_checker_qual_3_8_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_eclipse_angus_angus_activation_2_0_1.xml b/sfj-backend/.idea/libraries/Maven__org_eclipse_angus_angus_activation_2_0_1.xml new file mode 100644 index 0000000..166f6ae --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_eclipse_angus_angus_activation_2_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_core_4_0_4.xml b/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_core_4_0_4.xml new file mode 100644 index 0000000..2484f99 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_core_4_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_4_0_4.xml b/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_4_0_4.xml new file mode 100644 index 0000000..a453d90 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_4_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_txw2_4_0_4.xml b/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_txw2_4_0_4.xml new file mode 100644 index 0000000..81e19b6 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_glassfish_jaxb_txw2_4_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml b/sfj-backend/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml new file mode 100644 index 0000000..6b5496f --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_6_0_6_Final.xml b/sfj-backend/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_6_0_6_Final.xml new file mode 100644 index 0000000..f191f57 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_6_0_6_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_hibernate_orm_hibernate_core_6_4_1_Final.xml b/sfj-backend/.idea/libraries/Maven__org_hibernate_orm_hibernate_core_6_4_1_Final.xml new file mode 100644 index 0000000..1276831 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_hibernate_orm_hibernate_core_6_4_1_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_5_3_Final.xml b/sfj-backend/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_5_3_Final.xml new file mode 100644 index 0000000..d63874a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_5_3_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml b/sfj-backend/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml new file mode 100644 index 0000000..e2c8297 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_9_21.xml b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_9_21.xml new file mode 100644 index 0000000..16385da --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_9_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_9_21.xml b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_9_21.xml new file mode 100644 index 0000000..0125d4a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_9_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_21.xml b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_21.xml new file mode 100644 index 0000000..40be6cd --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_21.xml b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_21.xml new file mode 100644 index 0000000..64d1fde --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_10_1.xml b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_10_1.xml new file mode 100644 index 0000000..6e86eeb --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_10_1.xml b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_10_1.xml new file mode 100644 index 0000000..3135587 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_10_1.xml b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_10_1.xml new file mode 100644 index 0000000..68b7903 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_10_1.xml b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_10_1.xml new file mode 100644 index 0000000..dad8df0 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_10_1.xml b/sfj-backend/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_10_1.xml new file mode 100644 index 0000000..a0f728d --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_10_1.xml b/sfj-backend/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_10_1.xml new file mode 100644 index 0000000..90b8509 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mockito_mockito_core_5_7_0.xml b/sfj-backend/.idea/libraries/Maven__org_mockito_mockito_core_5_7_0.xml new file mode 100644 index 0000000..99bc624 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mockito_mockito_core_5_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_5_7_0.xml b/sfj-backend/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_5_7_0.xml new file mode 100644 index 0000000..2b6be62 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_5_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mybatis_mybatis_3_5_14.xml b/sfj-backend/.idea/libraries/Maven__org_mybatis_mybatis_3_5_14.xml new file mode 100644 index 0000000..c16e264 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mybatis_mybatis_3_5_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mybatis_mybatis_spring_3_0_3.xml b/sfj-backend/.idea/libraries/Maven__org_mybatis_mybatis_spring_3_0_3.xml new file mode 100644 index 0000000..5100020 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mybatis_mybatis_spring_3_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_3_0_3.xml b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_3_0_3.xml new file mode 100644 index 0000000..8a657ae --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_3_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_3_0_3.xml b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_3_0_3.xml new file mode 100644 index 0000000..538eb82 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_3_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_test_3_0_3.xml b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_test_3_0_3.xml new file mode 100644 index 0000000..39dbbb4 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_test_3_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_test_autoconfigure_3_0_3.xml b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_test_autoconfigure_3_0_3.xml new file mode 100644 index 0000000..06a391e --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_test_autoconfigure_3_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_objenesis_objenesis_3_3.xml b/sfj-backend/.idea/libraries/Maven__org_objenesis_objenesis_3_3.xml new file mode 100644 index 0000000..3a3576c --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_objenesis_objenesis_3_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_opentest4j_opentest4j_1_3_0.xml b/sfj-backend/.idea/libraries/Maven__org_opentest4j_opentest4j_1_3_0.xml new file mode 100644 index 0000000..87e7ec8 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_opentest4j_opentest4j_1_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_ow2_asm_asm_9_3.xml b/sfj-backend/.idea/libraries/Maven__org_ow2_asm_asm_9_3.xml new file mode 100644 index 0000000..ce5a26c --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_ow2_asm_asm_9_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_projectlombok_lombok_1_18_30.xml b/sfj-backend/.idea/libraries/Maven__org_projectlombok_lombok_1_18_30.xml new file mode 100644 index 0000000..291270e --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_projectlombok_lombok_1_18_30.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_1.xml b/sfj-backend/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_1.xml new file mode 100644 index 0000000..56582d6 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_2_0_9.xml b/sfj-backend/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_2_0_9.xml new file mode 100644 index 0000000..0baef43 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_2_0_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_slf4j_slf4j_api_2_0_9.xml b/sfj-backend/.idea/libraries/Maven__org_slf4j_slf4j_api_2_0_9.xml new file mode 100644 index 0000000..4a7ab1d --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_slf4j_slf4j_api_2_0_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_3_2_1.xml new file mode 100644 index 0000000..a38a657 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_3_2_1.xml new file mode 100644 index 0000000..e583437 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_3_2_1.xml new file mode 100644 index 0000000..cd1d1b5 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_3_2_1.xml new file mode 100644 index 0000000..8f5f333 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jdbc_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jdbc_3_2_1.xml new file mode 100644 index 0000000..7f8b4bb --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jdbc_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_3_2_1.xml new file mode 100644 index 0000000..5ba10a4 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_3_2_1.xml new file mode 100644 index 0000000..6bd2e7a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_3_2_1.xml new file mode 100644 index 0000000..5fdbce5 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_3_2_1.xml new file mode 100644 index 0000000..224d644 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_3_2_1.xml new file mode 100644 index 0000000..1b87070 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_3_2_1.xml new file mode 100644 index 0000000..8118a0c --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_3_2_1.xml new file mode 100644 index 0000000..91d5cd9 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_3_2_1.xml new file mode 100644 index 0000000..3eca095 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_3_2_1.xml new file mode 100644 index 0000000..f0a92cf --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_3_2_1.xml new file mode 100644 index 0000000..3b10baf --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_commons_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_commons_3_2_1.xml new file mode 100644 index 0000000..ccf2462 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_commons_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_jdbc_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_jdbc_3_2_1.xml new file mode 100644 index 0000000..532a7d2 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_jdbc_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_3_2_1.xml new file mode 100644 index 0000000..cb1be44 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_relational_3_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_relational_3_2_1.xml new file mode 100644 index 0000000..40f5869 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_data_spring_data_relational_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_config_6_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_config_6_2_1.xml new file mode 100644 index 0000000..88ded5f --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_config_6_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_core_6_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_core_6_2_1.xml new file mode 100644 index 0000000..c30851e --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_core_6_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_6_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_6_2_1.xml new file mode 100644 index 0000000..9dec22c --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_6_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_test_6_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_test_6_2_1.xml new file mode 100644 index 0000000..a539200 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_test_6_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_web_6_2_1.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_web_6_2_1.xml new file mode 100644 index 0000000..47d1870 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_security_spring_security_web_6_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_aop_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_aop_6_1_2.xml new file mode 100644 index 0000000..ed9d6bf --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_aop_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_aspects_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_aspects_6_1_2.xml new file mode 100644 index 0000000..495a7b3 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_aspects_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_beans_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_beans_6_1_2.xml new file mode 100644 index 0000000..9732021 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_beans_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_context_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_context_6_1_2.xml new file mode 100644 index 0000000..7b2f4a6 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_context_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_core_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_core_6_1_2.xml new file mode 100644 index 0000000..ae33ff2 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_core_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_expression_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_expression_6_1_2.xml new file mode 100644 index 0000000..a4053a6 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_expression_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_jcl_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_jcl_6_1_2.xml new file mode 100644 index 0000000..45ce026 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_jcl_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_jdbc_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_jdbc_6_1_2.xml new file mode 100644 index 0000000..2e22420 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_jdbc_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_orm_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_orm_6_1_2.xml new file mode 100644 index 0000000..17e5921 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_orm_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_test_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_test_6_1_2.xml new file mode 100644 index 0000000..6389a3a --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_test_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_tx_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_tx_6_1_2.xml new file mode 100644 index 0000000..64877af --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_tx_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_web_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_web_6_1_2.xml new file mode 100644 index 0000000..8c0b774 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_web_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_springframework_spring_webmvc_6_1_2.xml b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_webmvc_6_1_2.xml new file mode 100644 index 0000000..c3cc0ba --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_springframework_spring_webmvc_6_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_8_4.xml b/sfj-backend/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_8_4.xml new file mode 100644 index 0000000..e3db53d --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_8_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_9_1.xml b/sfj-backend/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_9_1.xml new file mode 100644 index 0000000..e2f6d14 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_9_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/libraries/Maven__org_yaml_snakeyaml_2_2.xml b/sfj-backend/.idea/libraries/Maven__org_yaml_snakeyaml_2_2.xml new file mode 100644 index 0000000..998e133 --- /dev/null +++ b/sfj-backend/.idea/libraries/Maven__org_yaml_snakeyaml_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/misc.xml b/sfj-backend/.idea/misc.xml new file mode 100644 index 0000000..0b8b341 --- /dev/null +++ b/sfj-backend/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/modules.xml b/sfj-backend/.idea/modules.xml new file mode 100644 index 0000000..d5c4605 --- /dev/null +++ b/sfj-backend/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/.idea/uiDesigner.xml b/sfj-backend/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/sfj-backend/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfj-backend/sfj-project-backend/.gitignore b/sfj-backend/sfj-project-backend/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/sfj-backend/sfj-project-backend/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/sfj-backend/sfj-project-backend/pom.xml b/sfj-backend/sfj-project-backend/pom.xml new file mode 100644 index 0000000..e86381b --- /dev/null +++ b/sfj-backend/sfj-project-backend/pom.xml @@ -0,0 +1,111 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.1 + + + com.upsfj + sfj-project-backend + 0.0.1-SNAPSHOT + sfj-project-backend + sfj-project-backend + + 17 + + + + org.springframework.boot + spring-boot-starter-data-jdbc + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-web + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.3 + + + + com.mysql + mysql-connector-j + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.mybatis.spring.boot + mybatis-spring-boot-starter-test + 3.0.3 + test + + + org.springframework.security + spring-security-test + test + + + com.alibaba + fastjson + 2.0.25 + + + org.springframework.boot + spring-boot-starter-data-jpa + + + io.minio + minio + 8.3.9 + + + + + + + + + + + jakarta.persistence + jakarta.persistence-api + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/SfjProjectBackendApplication.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/SfjProjectBackendApplication.java new file mode 100644 index 0000000..6c316b2 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/SfjProjectBackendApplication.java @@ -0,0 +1,13 @@ +package com.upsfj.sfjprojectbackend; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SfjProjectBackendApplication { + + public static void main(String[] args) { + SpringApplication.run(SfjProjectBackendApplication.class, args); + } + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/CorsConfig.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/CorsConfig.java new file mode 100644 index 0000000..77d75b8 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/CorsConfig.java @@ -0,0 +1,25 @@ +package com.upsfj.sfjprojectbackend.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class CorsConfig implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + // 设置允许跨域的路径 + registry.addMapping("/**") + // 设置允许跨域请求的域名 + .allowedOriginPatterns("*") + // 是否允许cookie + .allowCredentials(true) + // 设置允许的请求方式 + .allowedMethods("GET", "POST", "DELETE", "PUT") + // 设置允许的header属性 + .allowedHeaders("*") + // 跨域允许时间 + .maxAge(5000); + } +} \ No newline at end of file diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/MinioConfiguration.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/MinioConfiguration.java new file mode 100644 index 0000000..449badf --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/MinioConfiguration.java @@ -0,0 +1,19 @@ +package com.upsfj.sfjprojectbackend.config; + +import io.minio.MinioClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MinioConfiguration { + + @Bean + public MinioClient client(){ + return MinioClient.builder() + .endpoint("http://192.168.1.133:9000") + .credentials("minioadmin","minioadmin") + .build(); + } + + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/SecurityConfiguration.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/SecurityConfiguration.java new file mode 100644 index 0000000..f6ea38f --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/SecurityConfiguration.java @@ -0,0 +1,87 @@ +package com.upsfj.sfjprojectbackend.config; + +import com.alibaba.fastjson.JSONObject; +import com.upsfj.sfjprojectbackend.entity.RestBean; +import com.upsfj.sfjprojectbackend.service.AuthorizeService; +import jakarta.annotation.Resource; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.AuthenticationEntryPointFailureHandler; +import org.springframework.security.web.authentication.AuthenticationFailureHandler; +import org.springframework.security.web.authentication.AuthenticationSuccessHandler; + +import java.io.IOException; + +@Configuration +@EnableWebSecurity +public class SecurityConfiguration { + @Resource + AuthorizeService authorizeService; + + + @Bean + public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { + return httpSecurity + .authorizeHttpRequests() + .requestMatchers("/api/algorithm/**","/api/field/**","/api/use/**","/api/file/**").permitAll() + .anyRequest().authenticated() + .and() + .formLogin() + .loginProcessingUrl("/api/auth/login") + .successHandler(this::onAuthenticationSuccess) + .failureHandler(this::onAuthenticationFailure) + .and() + .logout() + .logoutUrl("/api/auth/logout") + .logoutSuccessHandler(this::onAuthenticationSuccess) + .and() + .csrf() + .disable() + .exceptionHandling() + .authenticationEntryPoint(this::onAuthenticationFailure) + .and() + .build(); + } + @Bean + public AuthenticationManager authenticationManager(HttpSecurity security) throws Exception{ + return security + .getSharedObject(AuthenticationManagerBuilder.class) + .userDetailsService(authorizeService) + .and() + .build(); + } + @Bean + public BCryptPasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + + + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { + response.setCharacterEncoding("utf-8"); + if (request.getRequestURI().endsWith("/login")){ + response.getWriter().write(JSONObject.toJSONString(RestBean.success("登录成功"))); + }else { + response.getWriter().write(JSONObject.toJSONString(RestBean.success("退出成功"))); + } + + } + public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { + response.setCharacterEncoding("utf-8"); + response.getWriter().write(JSONObject.toJSONString(RestBean.failure(401,exception.getMessage()))); + } + + + + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/WebConfiguration.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/WebConfiguration.java new file mode 100644 index 0000000..21131bc --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/config/WebConfiguration.java @@ -0,0 +1,20 @@ +//package com.upsfj.sfjprojectbackend.config; +// +//import com.upsfj.sfjprojectbackend.interceptor.AuthorizeInterceptor; +//import jakarta.annotation.Resource; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +//@Configuration +//public class WebConfiguration implements WebMvcConfigurer { +// @Resource +// AuthorizeInterceptor interceptor; +// +// +// @Override +// public void addInterceptors(InterceptorRegistry registry) { +// registry +// .addInterceptor(interceptor) +// .addPathPatterns("/**"); +// } +//} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/AlgorithmController.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/AlgorithmController.java new file mode 100644 index 0000000..bed44c2 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/AlgorithmController.java @@ -0,0 +1,95 @@ +package com.upsfj.sfjprojectbackend.controller; + + +import com.upsfj.sfjprojectbackend.entity.*; +import com.upsfj.sfjprojectbackend.service.impl.AlgorithmServiceImpl; +import jakarta.annotation.Resource; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.userdetails.UserCache; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/api/algorithm") +public class AlgorithmController { + @Resource + AlgorithmServiceImpl algorithmService; + + + @GetMapping("/findall") + public List getAllAlgorithms(){ + List algorithms = algorithmService.getAllAlgorithms(); + for (Algorithm algorithm:algorithms){ +// System.out.println(algorithm); +// System.out.println(algorithm.getFieldStr()); + String fieldStr = algorithm.getFieldStr(); + String useStr = algorithm.getUserStr(); + List fieldList = Arrays.asList(fieldStr.split(",")); + List useList = Arrays.asList(useStr.split(",")); + algorithm.setUseList(useList); + algorithm.setFieldList(fieldList); + } +// for (Algorithm algorithm : algorithms){ +// System.out.println(algorithm); +// } +// for (Algorithm algorithm : algorithms){ +// List algorithmFields = (List) algorithm.getAlgorithmFields(); +// System.out.println("输出algorithmFields"); +// System.out.println(algorithmFields); +// String fields = (String) algorithmFields +// .stream() +// .map(field -> field.getField().toString()) +// .collect(Collectors.joining(",")); +// +//// algorithm.setAlgorithmFields(fields); +// +// List algorithmUserCases = (List) algorithm.getAlgorithmUserCases(); +// String useCases = algorithmUserCases.stream() +// .map(userCase -> userCase.getUsecase().toString()) +// .collect(Collectors.joining(",")); +// +// } + + return algorithms; + } + + @GetMapping("/findfield") + public List getAllField(){ + return algorithmService.getAllField(); + } + + + @GetMapping("/finduse") + public List getAllUsecase(){ + return algorithmService.getAllUsecase(); + } + + + @PostMapping("/updateAlgorithm") + public ResponseEntity updateAlgorithm(@RequestBody Algorithm algorithm){ + System.out.println("打印接收值"); + System.out.println(algorithm); + algorithmService.updateAlgorithm(algorithm); + + + return ResponseEntity.ok().build(); + } + + @PostMapping("/addAlgorithm") + public ResponseEntity addAlgorithm(@RequestBody Algorithm algorithm){ + algorithmService.addAlgorithm(algorithm); + return ResponseEntity.ok().build(); + } + + @PostMapping("/deleteAlgorithm") + public ResponseEntity deleteAlgorithm(@RequestBody Algorithm algorithm){ + algorithmService.deleteAlgorithm(algorithm); + return ResponseEntity.ok().build(); + } + + + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/FieldController.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/FieldController.java new file mode 100644 index 0000000..56f3fe9 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/FieldController.java @@ -0,0 +1,33 @@ +package com.upsfj.sfjprojectbackend.controller; + + +import com.upsfj.sfjprojectbackend.entity.Algorithm; +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.service.impl.FieldServiceImpl; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/field") +public class FieldController { + @Resource + FieldServiceImpl fieldService; + + @PostMapping("/addField") + public void addField(@RequestBody Field field){ + fieldService.addField(field.getField_name()); + } + + @PostMapping("/updateField") + public void updateField(@RequestBody Field field){ + fieldService.updateField(field); + } + + @PostMapping("/deleteField") + public void deleteField(@RequestBody Field field){ + fieldService.deleteField(field); + } +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/FileController.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/FileController.java new file mode 100644 index 0000000..4bc0a0b --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/FileController.java @@ -0,0 +1,60 @@ +package com.upsfj.sfjprojectbackend.controller; + +import com.upsfj.sfjprojectbackend.mapper.AlgorithmMapper; +import io.minio.GetObjectArgs; +import io.minio.GetObjectResponse; +import io.minio.MinioClient; +import io.minio.PutObjectArgs; +import io.minio.errors.*; +import jakarta.annotation.Resource; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.UUID; + +@RestController +@RequestMapping("/api/file") +public class FileController { + @Resource + MinioClient client; + + @Resource + AlgorithmMapper algorithmMapper; + + @PostMapping("/upload") + public String upload(@RequestParam("file")MultipartFile file,@RequestParam("algorithm_id") Integer algorithm_id) throws IOException, ServerException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + System.out.println(file); + System.out.println(algorithm_id); + InputStream stream = file.getInputStream(); + String name = UUID.randomUUID().toString()+".jpg"; + PutObjectArgs args = PutObjectArgs.builder() + .bucket("algorithm") + .object(name) + .stream(stream, file.getSize(), -1) + .contentType("image/jpeg") + .build(); + + client.putObject(args); +// name = +name; + if (algorithm_id != 999){ + algorithmMapper.updateAlgorithmImg("http://192.168.1.133:9000/algorithm/"+name,algorithm_id); + } + + return name; + } + + @GetMapping("/getimg/{name}") + public void file(@PathVariable("name") String name, HttpServletResponse response) throws Exception{ + GetObjectResponse object = client.getObject(GetObjectArgs.builder().bucket("algorithm").object(name).build()); + ServletOutputStream stream = response.getOutputStream(); +// response.setContentType(object.contentType()); + stream.write(object.readAllBytes()); + + } +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/UseController.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/UseController.java new file mode 100644 index 0000000..c1897de --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/UseController.java @@ -0,0 +1,37 @@ +package com.upsfj.sfjprojectbackend.controller; + +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.entity.UseCase; +import com.upsfj.sfjprojectbackend.service.impl.FieldServiceImpl; +import com.upsfj.sfjprojectbackend.service.impl.UsecaseServiceImpl; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/use") +public class UseController { + @Resource + UsecaseServiceImpl usecaseService; + + @PostMapping("/addUse") + public void addField(@RequestBody UseCase useCase){ + usecaseService.addUsecase(useCase.getUsecase_name()); + } + + + + @PostMapping("/updateUse") + public void updateField(@RequestBody UseCase useCase){ + usecaseService.updateUsecase(useCase); + } + + @PostMapping("/deleteUse") + public void deleteField(@RequestBody UseCase useCase){ + usecaseService.deleteUsecase(useCase); + } + + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/UserController.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/UserController.java new file mode 100644 index 0000000..7b064b4 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/controller/UserController.java @@ -0,0 +1,19 @@ +package com.upsfj.sfjprojectbackend.controller; + + +import com.upsfj.sfjprojectbackend.entity.RestBean; +import com.upsfj.sfjprojectbackend.entity.user.AccountUser; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.SessionAttribute; + +@RestController +@RequestMapping("/api/user") +public class UserController { + @GetMapping("/me") + public RestBean me(@SessionAttribute("account") AccountUser user){ + return RestBean.success(user); + } + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/Algorithm.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/Algorithm.java new file mode 100644 index 0000000..eda1a06 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/Algorithm.java @@ -0,0 +1,39 @@ +package com.upsfj.sfjprojectbackend.entity; + +import jakarta.persistence.*; +import lombok.Data; +import org.springframework.data.relational.core.mapping.Table; + +import java.util.List; +import java.util.Set; + +@Data +@Entity +@Table(name = "sfj_algorithms") +public class Algorithm { + + @Id + int algorithm_id; + String algorithm_name; + String algorithm_img; + String algorithm_coder; + @Column(columnDefinition = "TEXT") + String algorithm_description; + +// +// @OneToMany() + + @Column(name = "algorithmFields") + String fieldStr; + @Column(name = "algorithmUserCases") + String userStr; + @Transient + List fieldList; + @Transient + List useList; + + @OneToMany(mappedBy = "algorithm") + Set algorithmFields; + @OneToMany(mappedBy = "algorithm") + Set algorithmUserCases; +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmField.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmField.java new file mode 100644 index 0000000..4a493ae --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmField.java @@ -0,0 +1,25 @@ +package com.upsfj.sfjprojectbackend.entity; + +import jakarta.persistence.*; +import lombok.Data; +import org.springframework.data.relational.core.mapping.Table; + +@Data +@Entity +@Table(name = "sfj_algorithm_field") +@IdClass(AlgorithmFieldId.class) + +public class AlgorithmField { + + @Id + @ManyToOne + @JoinColumn(name = "algorithm_id") + Algorithm algorithm; + + + @Id + @ManyToOne + @JoinColumn(name = "field_id") + Field field; + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmFieldDescription.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmFieldDescription.java new file mode 100644 index 0000000..eef956d --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmFieldDescription.java @@ -0,0 +1,7 @@ +package com.upsfj.sfjprojectbackend.entity; + +import lombok.Data; + +@Data +public class AlgorithmFieldDescription { +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmFieldId.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmFieldId.java new file mode 100644 index 0000000..5f23273 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmFieldId.java @@ -0,0 +1,13 @@ +package com.upsfj.sfjprojectbackend.entity; + +import lombok.Data; + +import java.io.Serializable; +@Data +public class AlgorithmFieldId implements Serializable { +// int algorithm_id; +// int field_id; + + Algorithm algorithm; + Field field; +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmUseCaseId.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmUseCaseId.java new file mode 100644 index 0000000..4298ff4 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmUseCaseId.java @@ -0,0 +1,14 @@ +package com.upsfj.sfjprojectbackend.entity; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class AlgorithmUseCaseId implements Serializable { +// int algorithm_id; +// int usecase_id; + + Algorithm algorithm; + UseCase usecase; +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmUserCase.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmUserCase.java new file mode 100644 index 0000000..28b0b0e --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/AlgorithmUserCase.java @@ -0,0 +1,26 @@ +package com.upsfj.sfjprojectbackend.entity; + +import jakarta.persistence.*; +import lombok.Data; +import org.springframework.data.relational.core.mapping.Table; + +@Data +@Entity +@Table(name = "sfj_algorithm_usecases") +@IdClass(AlgorithmUseCaseId.class) +public class AlgorithmUserCase { + @Id + @ManyToOne + @JoinColumn(name = "algorithm_id") + Algorithm algorithm; + + @Id + @ManyToOne + @JoinColumn(name = "usecase_id") + UseCase usecase; + + + @Column(columnDefinition = "TEXT") + String description; + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/Field.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/Field.java new file mode 100644 index 0000000..4304607 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/Field.java @@ -0,0 +1,21 @@ +package com.upsfj.sfjprojectbackend.entity; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import lombok.Data; +import org.springframework.data.relational.core.mapping.Table; + +import java.util.Set; + +@Data +@Entity +@Table(name = "sfj_field") +public class Field { + @Id + int field_id; + String field_name; + + @OneToMany(mappedBy = "field") + Set algorithemFields; +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/RestBean.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/RestBean.java new file mode 100644 index 0000000..7993c2a --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/RestBean.java @@ -0,0 +1,32 @@ +package com.upsfj.sfjprojectbackend.entity; + +import lombok.Data; + +@Data +public class RestBean { + private int status; + private boolean success; + private T message; + + + private RestBean(int status,boolean success,T message){ + this.status = status; + this.success = success; + this.message = message; + } + + public static RestBean success(){ + return new RestBean<>(200,true,null); + } + public static RestBean success(T data){ + return new RestBean<>(200,true,data); + } + public static RestBean failure(int status){ + return new RestBean<>(status,false,null); + } + + public static RestBean failure(int status,T data){ + return new RestBean<>(status,false,data); + } + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/UseCase.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/UseCase.java new file mode 100644 index 0000000..44d78c0 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/UseCase.java @@ -0,0 +1,22 @@ +package com.upsfj.sfjprojectbackend.entity; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import lombok.Data; +import org.springframework.data.relational.core.mapping.Table; + +import java.util.Set; + +@Data +@Table(name = "sfj_usecase") +@Entity +public class UseCase { + @Id + int usecase_id; + + String usecase_name; + + @OneToMany(mappedBy = "usecase") + Set algorithmUserCases; +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/auth/AccountBean.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/auth/AccountBean.java new file mode 100644 index 0000000..95d6fc6 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/auth/AccountBean.java @@ -0,0 +1,13 @@ +package com.upsfj.sfjprojectbackend.entity.auth; + + +import lombok.Data; + +@Data +public class AccountBean { + int id; + String username; + String password; + String email; + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/user/AccountUser.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/user/AccountUser.java new file mode 100644 index 0000000..5f8bbc4 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/entity/user/AccountUser.java @@ -0,0 +1,10 @@ +package com.upsfj.sfjprojectbackend.entity.user; + +import lombok.Data; + +@Data +public class AccountUser { + int id; + String username; + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/interceptor/AuthorizeInterceptor.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/interceptor/AuthorizeInterceptor.java new file mode 100644 index 0000000..e235f76 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/interceptor/AuthorizeInterceptor.java @@ -0,0 +1,37 @@ +//package com.upsfj.sfjprojectbackend.interceptor; +// +//import com.upsfj.sfjprojectbackend.entity.user.AccountUser; +//import com.upsfj.sfjprojectbackend.mapper.UserMapper; +//import jakarta.annotation.Resource; +//import jakarta.servlet.http.HttpServletRequest; +//import jakarta.servlet.http.HttpServletResponse; +//import org.springframework.security.core.Authentication; +//import org.springframework.security.core.context.SecurityContext; +//import org.springframework.security.core.context.SecurityContextHolder; +//import org.springframework.security.core.userdetails.User; +//import org.springframework.stereotype.Component; +//import org.springframework.web.servlet.HandlerInterceptor; +//@Component +//public class AuthorizeInterceptor implements HandlerInterceptor{ +// @Resource +// UserMapper mapper; +// +// +// @Override +// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { +//// SecurityContext context = SecurityContextHolder.getContext(); +//// Authentication authentication = context.getAuthentication(); +////// System.out.println(authentication.getPrincipal()); +//// if (authentication.isAuthenticated()) { +//// User user = (User) authentication.getPrincipal(); +//// String username = user.getUsername(); +//// AccountUser accountUser = mapper.fingAccountUserByName(username); +//// request.getSession().setAttribute("account", accountUser); +//// return true; +//// } +//// return false; +// return true; +// +// +// } +//} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/AlgorithmMapper.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/AlgorithmMapper.java new file mode 100644 index 0000000..deb1178 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/AlgorithmMapper.java @@ -0,0 +1,114 @@ +package com.upsfj.sfjprojectbackend.mapper; + +import com.upsfj.sfjprojectbackend.entity.Algorithm; +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.entity.UseCase; +import org.apache.ibatis.annotations.*; +import org.springframework.data.relational.core.sql.In; + +import java.util.List; + +@Mapper +public interface AlgorithmMapper { +// 查询算法的所有相关信息 + @Select("SELECT \n" + + " a.algorithm_id, \n" + + " a.algorithm_name, \n" + + " a.algorithm_description, \n" + + " a.algorithm_img, \n" + + " a.algorithm_coder, \n" + + " GROUP_CONCAT(DISTINCT i.field_name) AS algorithmFields, \n" + + " GROUP_CONCAT(DISTINCT uc.usecase_name) AS algorithmUserCases\n" + + "FROM \n" + + " sfj_algorithms a \n" + + "LEFT JOIN \n" + + " sfj_algorithm_field ai ON a.algorithm_id = ai.algorithm_id \n" + + "LEFT JOIN \n" + + " sfj_field i ON ai.field_id = i.field_id \n" + + "LEFT JOIN \n" + + " sfj_algorithm_usecases auc ON a.algorithm_id = auc.algorithm_id \n" + + "LEFT JOIN \n" + + " sfj_usecase uc ON auc.usecase_id = uc.usecase_id\n" + + "GROUP BY \n" + + " a.algorithm_id;") + @Results({ + @Result(property = "algorithm_id", column = "algorithm_id"), + @Result(property = "algorithm_name", column = "algorithm_name"), + @Result(property = "algorithm_description", column = "algorithm_description"), + @Result(property = "algorithm_img", column = "algorithm_img"), + @Result(property = "algorithm_coder", column = "algorithm_coder"), + @Result(property = "fieldStr", column = "algorithmFields"), + @Result(property = "userStr", column = "algorithmUserCases") + }) + List findAllAlgorithm(); + + +// + + @Select("select * from sfj_field") + List findAllField(); + + +// @Select("select ") + + + + + @Select("select * from sfj_usecase") + List findAllUseCase(); + + + @Update("UPDATE sfj_algorithms SET algorithm_name=#{algorithm_name},algorithm_description=#{algorithm_description} ,algorithm_coder=#{algorithm_coder}WHERE algorithm_id=#{algorithm_id}") + void updateAlgorithmById(Algorithm algorithm); + + @Insert("INSERT INTO sfj_algorithms(algorithm_id,algorithm_name,algorithm_description,algorithm_img,algorithm_coder) VALUES(#{algorithm_id},#{algorithm_name},#{algorithm_description},#{algorithm_img},#{algorithm_coder})") + void addAlgorithm(Algorithm algorithm); + + @Delete("DELETE FROM sfj_algorithms WHERE algorithm_id=#{algorithm_id}") + void deleteAlgorithm(Algorithm algorithm); + + + + @Delete("DELETE FROM sfj_algorithm_field WHERE algorithm_id=#{algorithm_id} AND field_id=#{field_id}") + void deleteFieldForAlgorithm(@Param("algorithm_id") int algorithmId,@Param("field_id") int fieldId); + + @Insert("INSERT INTO sfj_algorithm_field(algorithm_id, field_id) VALUES(#{algorithm_id}, #{field_id})") + void addFieldForAlgorithm(@Param("algorithm_id") int algorithmId,@Param("field_id") int fieldId); + + + @Select("SELECT field_id FROM sfj_algorithm_field WHERE algorithm_id=#{algorithm_id}") + List getFieldIdsForAlgorithm(int algorithmId); + + + @Select("select field_id from sfj_field where field_name=#{name}") + Integer findFieldIdByName(String name); + + @Select("SELECT COUNT(*) FROM sfj_algorithms") + Integer getAlgorithmCount(); + + + @Delete("DELETE FROM sfj_algorithm_usecases WHERE algorithm_id=#{algorithm_id} AND usecase_id=#{use_id}") + void deleteUSeForAlgorithm(@Param("algorithm_id") int algorithmId,@Param("use_id") int usecaseId); + + + @Insert("INSERT INTO sfj_algorithm_usecases(algorithm_id, usecase_id) VALUES(#{algorithm_id}, #{use_id})") + void addUseForAlgorithm(@Param("algorithm_id") int algorithmId,@Param("use_id") int usecaseId); + + @Select("SELECT usecase_id FROM sfj_algorithm_usecases WHERE algorithm_id=#{algorithmId}") + List getUseIdForAlgorithm(int algorithmId); + + @Select("select usecase_id from sfj_usecase where usecase_name=#{name}") + Integer findUseIdByName(String name); + +// +// @Insert("INSERT INTO sfj_algorithms(algorithm_img) VALUES(#{algorithm_img})") +// void addAlgorithmImg(String algorithm_img); +// +// + @Update("UPDATE sfj_algorithms SET algorithm_img=#{algorithm_img} WHERE algorithm_id=#{algorithm_id}" ) + void updateAlgorithmImg(String algorithm_img,Integer algorithm_id); + + + + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/FieldMapper.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/FieldMapper.java new file mode 100644 index 0000000..500c83e --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/FieldMapper.java @@ -0,0 +1,27 @@ +package com.upsfj.sfjprojectbackend.mapper; + + +import com.upsfj.sfjprojectbackend.entity.Field; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Update; + +@Mapper +public interface FieldMapper { + + @Insert("INSERT INTO sfj_field (field_name) VALUES (#{field_name}) ") + void AddField(String field_name); + + + @Update("UPDATE sfj_field SET field_name=#{field_name} WHERE field_id = #{field_id}") + void UpdateField(Field field); + + + @Delete("DELETE FROM sfj_field WHERE field_id = #{field_id}") + void DeleteField(Field field); + + + @Delete("DELETE FROM sfj_algorithm_field WHERE field_id = #{field_id}") + void DeleteAlgorithmForField(Field field); +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/UseMapper.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/UseMapper.java new file mode 100644 index 0000000..66f4e0b --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/UseMapper.java @@ -0,0 +1,29 @@ +package com.upsfj.sfjprojectbackend.mapper; + + +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.entity.UseCase; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Update; + +@Mapper +public interface UseMapper { + @Insert("INSERT INTO sfj_usecase (usecase_name) VALUES (#{usecase_name}) ") + void AddUsecase(String usecase_name); + + + @Update("UPDATE sfj_usecase SET usecase_name=#{usecase_name} WHERE usecase_id = #{usecase_id}") + void UpdateUsecase(UseCase usecase); + + + @Delete("DELETE FROM sfj_usecase WHERE usecase_id = #{usecase_id}") + void DeleteUsecase(UseCase usecase); + + + @Delete("DELETE FROM sfj_algorithm_usecases WHERE usecase_id = #{usecase_id}") + void DeleteAlgorithmForUse(UseCase usecase); + + +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/UserMapper.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/UserMapper.java new file mode 100644 index 0000000..124f16c --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/mapper/UserMapper.java @@ -0,0 +1,17 @@ +package com.upsfj.sfjprojectbackend.mapper; + +import com.upsfj.sfjprojectbackend.entity.auth.AccountBean; +import com.upsfj.sfjprojectbackend.entity.user.AccountUser; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface UserMapper { + + @Select("select * from sfj_account where username = #{text} ") + AccountUser fingAccountUserByName(String text); + + + @Select("select * from sfj_account where username = #{text} or email = #{text}") + AccountBean findAccountByNameOrEmail(String text); +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/AlgorithmService.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/AlgorithmService.java new file mode 100644 index 0000000..dcb3335 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/AlgorithmService.java @@ -0,0 +1,25 @@ +package com.upsfj.sfjprojectbackend.service; + +import com.upsfj.sfjprojectbackend.entity.Algorithm; +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.entity.UseCase; + +import java.util.List; + +public interface AlgorithmService { + +// 获取算法具体的所有信息 + public List getAllAlgorithms(); +// 获取所有的应用领域 + + public List getAllField(); + + + public List getAllUsecase(); + + public void updateAlgorithm(Algorithm algorithm); + + public void addAlgorithm(Algorithm algorithm); + + public void deleteAlgorithm(Algorithm algorithm); +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/AuthorizeService.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/AuthorizeService.java new file mode 100644 index 0000000..703dba2 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/AuthorizeService.java @@ -0,0 +1,35 @@ +package com.upsfj.sfjprojectbackend.service; + +import com.upsfj.sfjprojectbackend.entity.auth.AccountBean; +import com.upsfj.sfjprojectbackend.mapper.UserMapper; +import jakarta.annotation.Resource; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + + +@Service +public class AuthorizeService implements UserDetailsService { + + @Resource + UserMapper mapper; + + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + if (username == null) + throw new UsernameNotFoundException("用户名不能为空"); + AccountBean account = mapper.findAccountByNameOrEmail(username); + if (account == null) + throw new UsernameNotFoundException("用户名或密码错误"); + return User + .withUsername(account.getUsername()) + .password(account.getPassword()) + .roles("user") + .build(); + + + } +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/FieldService.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/FieldService.java new file mode 100644 index 0000000..81aebf4 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/FieldService.java @@ -0,0 +1,14 @@ +package com.upsfj.sfjprojectbackend.service; + +import com.upsfj.sfjprojectbackend.entity.Field; + +public interface FieldService { + + public void addField(String fieldName); + + + public void updateField(Field field); + + + public void deleteField(Field field); +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/UsecaseService.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/UsecaseService.java new file mode 100644 index 0000000..135e61e --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/UsecaseService.java @@ -0,0 +1,15 @@ +package com.upsfj.sfjprojectbackend.service; + +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.entity.UseCase; + +public interface UsecaseService { + + public void addUsecase(String usecaseName); + + + public void updateUsecase(UseCase usecase); + + + public void deleteUsecase(UseCase usecase); +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/AlgorithmServiceImpl.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/AlgorithmServiceImpl.java new file mode 100644 index 0000000..4f088be --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/AlgorithmServiceImpl.java @@ -0,0 +1,141 @@ +package com.upsfj.sfjprojectbackend.service.impl; + +import com.upsfj.sfjprojectbackend.entity.Algorithm; +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.entity.UseCase; +import com.upsfj.sfjprojectbackend.mapper.AlgorithmMapper; +import com.upsfj.sfjprojectbackend.service.AlgorithmService; +import jakarta.annotation.Resource; +import jakarta.persistence.Transient; +import jakarta.transaction.Transactional; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +@Service +public class AlgorithmServiceImpl implements AlgorithmService { + @Resource + AlgorithmMapper algorithmMapper; + + + + @Override + public List getAllAlgorithms() { + return algorithmMapper.findAllAlgorithm(); + } + + @Override + public List getAllField() { + return algorithmMapper.findAllField(); + } + + @Override + public List getAllUsecase() { + return algorithmMapper.findAllUseCase(); + } + + @Override + @Transactional + public void updateAlgorithm(Algorithm algorithm) { + algorithmMapper.updateAlgorithmById(algorithm); + + List oldFieldId = algorithmMapper.getFieldIdsForAlgorithm(algorithm.getAlgorithm_id()); + + List fieldList = algorithm.getFieldList(); + List fieldIdList = new ArrayList<>(); + +// 根据名字 创建最新的field id列表 + for (String fieldName : fieldList){ + Integer fieldId = algorithmMapper.findFieldIdByName(fieldName); + fieldIdList.add(fieldId); + } +// 删除不再关联的field + for (Integer fieldId :oldFieldId){ + if (!fieldIdList.contains(fieldId)){ + algorithmMapper.deleteFieldForAlgorithm(algorithm.getAlgorithm_id(), fieldId); + } + } +// 添加关联的field + for (Integer field : fieldIdList){ + if (!oldFieldId.contains(field)){ + algorithmMapper.addFieldForAlgorithm(algorithm.getAlgorithm_id(), field); + } + } + +// 下面对use的处理也是类似 + List oldUseList = algorithmMapper.getUseIdForAlgorithm(algorithm.getAlgorithm_id()); + + List useList = algorithm.getUseList(); + + List useIdList = new ArrayList<>(); + + + for (String useName : useList){ + Integer useId = algorithmMapper.findUseIdByName(useName); + useIdList.add(useId); + } + + for (Integer useId : oldUseList){ + if (!useIdList.contains(useId)){ + algorithmMapper.deleteUSeForAlgorithm(algorithm.getAlgorithm_id(), useId); + } + } + + for (Integer useId : useIdList){ + if (!oldUseList.contains(useId)){ + System.out.println("输出要添加的id"); + System.out.println(algorithm.getAlgorithm_id()+""+useId); + algorithmMapper.addUseForAlgorithm(algorithm.getAlgorithm_id(), useId); + } + } + + + } + + @Override + @Transactional + public void addAlgorithm(Algorithm algorithm) { + System.out.println("打印添加"); + System.out.println(algorithm); + Integer algorithmCount = algorithmMapper.getAlgorithmCount(); + algorithm.setAlgorithm_id(algorithmCount+1); + algorithmMapper.addAlgorithm(algorithm); + + List fieldList = algorithm.getFieldList(); + List useList = algorithm.getUseList(); + for (String field :fieldList){ + Integer fieldId = algorithmMapper.findFieldIdByName(field); + + algorithmMapper.addFieldForAlgorithm(algorithm.getAlgorithm_id(), fieldId); + } + + for (String useName : useList){ + Integer useId = algorithmMapper.findUseIdByName(useName); + + algorithmMapper.addUseForAlgorithm(algorithm.getAlgorithm_id(), useId); + } + + + + } + + @Override + @Transactional + public void deleteAlgorithm(Algorithm algorithm) { + List fieldList = algorithm.getFieldList(); + List useList = algorithm.getUseList(); + + for (String fieldName :fieldList){ + Integer fieldId = algorithmMapper.findFieldIdByName(fieldName); + algorithmMapper.deleteFieldForAlgorithm(algorithm.getAlgorithm_id(), fieldId); + } + + for (String useName : useList){ + Integer usedId = algorithmMapper.findUseIdByName(useName); + algorithmMapper.deleteUSeForAlgorithm(algorithm.getAlgorithm_id(), usedId); + } + + algorithmMapper.deleteAlgorithm(algorithm); + + } +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/FieldServiceImpl.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/FieldServiceImpl.java new file mode 100644 index 0000000..bc60857 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/FieldServiceImpl.java @@ -0,0 +1,34 @@ +package com.upsfj.sfjprojectbackend.service.impl; + +import com.upsfj.sfjprojectbackend.entity.Field; +import com.upsfj.sfjprojectbackend.mapper.FieldMapper; +import com.upsfj.sfjprojectbackend.service.FieldService; +import jakarta.annotation.Resource; +import jakarta.transaction.Transactional; +import org.springframework.stereotype.Service; + +@Service +public class FieldServiceImpl implements FieldService { + @Resource + FieldMapper fieldMapper; + + + + @Override + public void addField(String fieldName) { + fieldMapper.AddField(fieldName); + + } + + @Override + public void updateField(Field field) { + fieldMapper.UpdateField(field); + } + + @Override + @Transactional + public void deleteField(Field field) { + fieldMapper.DeleteAlgorithmForField(field); + fieldMapper.DeleteField(field); + } +} diff --git a/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/UsecaseServiceImpl.java b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/UsecaseServiceImpl.java new file mode 100644 index 0000000..0cf49f9 --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/java/com/upsfj/sfjprojectbackend/service/impl/UsecaseServiceImpl.java @@ -0,0 +1,32 @@ +package com.upsfj.sfjprojectbackend.service.impl; + +import com.upsfj.sfjprojectbackend.entity.UseCase; +import com.upsfj.sfjprojectbackend.mapper.UseMapper; +import com.upsfj.sfjprojectbackend.mapper.UserMapper; +import com.upsfj.sfjprojectbackend.service.UsecaseService; +import jakarta.annotation.Resource; +import jakarta.transaction.Transactional; +import org.springframework.stereotype.Service; + +@Service +public class UsecaseServiceImpl implements UsecaseService { + @Resource + UseMapper useMapper; + + @Override + public void addUsecase(String usecaseName) { + useMapper.AddUsecase(usecaseName); + } + + @Override + public void updateUsecase(UseCase usecase) { + useMapper.UpdateUsecase(usecase); + } + + @Override + @Transactional + public void deleteUsecase(UseCase usecase) { + useMapper.DeleteAlgorithmForUse(usecase); + useMapper.DeleteUsecase(usecase); + } +} diff --git a/sfj-backend/sfj-project-backend/src/main/resources/application.yaml b/sfj-backend/sfj-project-backend/src/main/resources/application.yaml new file mode 100644 index 0000000..432956a --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/main/resources/application.yaml @@ -0,0 +1,6 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/sfj?useUnicode=true&characterEncoding=utf-8 + username: root + password: zxc632132 \ No newline at end of file diff --git a/sfj-backend/sfj-project-backend/src/test/java/com/upsfj/sfjprojectbackend/SfjProjectBackendApplicationTests.java b/sfj-backend/sfj-project-backend/src/test/java/com/upsfj/sfjprojectbackend/SfjProjectBackendApplicationTests.java new file mode 100644 index 0000000..292a41d --- /dev/null +++ b/sfj-backend/sfj-project-backend/src/test/java/com/upsfj/sfjprojectbackend/SfjProjectBackendApplicationTests.java @@ -0,0 +1,16 @@ +package com.upsfj.sfjprojectbackend; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +@SpringBootTest +class SfjProjectBackendApplicationTests { + + @Test + void contextLoads() { +// BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); +// System.out.println(encoder.encode("123456")); + } + +} diff --git a/sfj-backend/sfj-project.iml b/sfj-backend/sfj-project.iml new file mode 100644 index 0000000..9a5cfce --- /dev/null +++ b/sfj-backend/sfj-project.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/sfj-managementfrontend/.gitignore b/sfj-managementfrontend/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/sfj-managementfrontend/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/sfj-managementfrontend/.vscode/extensions.json b/sfj-managementfrontend/.vscode/extensions.json new file mode 100644 index 0000000..c0a6e5a --- /dev/null +++ b/sfj-managementfrontend/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] +} diff --git a/sfj-managementfrontend/README.md b/sfj-managementfrontend/README.md new file mode 100644 index 0000000..dfb8d62 --- /dev/null +++ b/sfj-managementfrontend/README.md @@ -0,0 +1,40 @@ +# sfj-admin + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` diff --git a/sfj-managementfrontend/env.d.ts b/sfj-managementfrontend/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/sfj-managementfrontend/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/sfj-managementfrontend/index.html b/sfj-managementfrontend/index.html new file mode 100644 index 0000000..a888544 --- /dev/null +++ b/sfj-managementfrontend/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/sfj-managementfrontend/package-lock.json b/sfj-managementfrontend/package-lock.json new file mode 100644 index 0000000..5a84ebd --- /dev/null +++ b/sfj-managementfrontend/package-lock.json @@ -0,0 +1,2204 @@ +{ + "name": "sfj-admin", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sfj-admin", + "version": "0.0.0", + "dependencies": { + "axios": "^1.6.5", + "element-plus": "^2.4.4", + "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", + "vue": "^3.3.11", + "vue-axios": "^3.5.2", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/node": "^18.19.3", + "@vitejs/plugin-vue": "^4.5.2", + "@vue/tsconfig": "^0.5.0", + "npm-run-all2": "^6.1.1", + "sass": "^1.69.7", + "typescript": "~5.3.0", + "vite": "^5.0.10", + "vue-tsc": "^1.8.25" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz", + "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz", + "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==", + "dependencies": { + "@floating-ui/core": "^1.5.3", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.4.tgz", + "integrity": "sha512-ub/SN3yWqIv5CWiAZPHVS1DloyZsJbtXmX4HxUTIpS0BHm9pW5iYBo2mIZi+hE3AeiTzHz33blwSnhdUo+9NpA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.4.tgz", + "integrity": "sha512-ehcBrOR5XTl0W0t2WxfTyHCR/3Cq2jfb+I4W+Ch8Y9b5G+vbAecVv0Fx/J1QKktOrgUYsIKxWAKgIpvw56IFNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.4.tgz", + "integrity": "sha512-1fzh1lWExwSTWy8vJPnNbNM02WZDS8AW3McEOb7wW+nPChLKf3WG2aG7fhaUmfX5FKw9zhsF5+MBwArGyNM7NA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.4.tgz", + "integrity": "sha512-Gc6cukkF38RcYQ6uPdiXi70JB0f29CwcQ7+r4QpfNpQFVHXRd0DfWFidoGxjSx1DwOETM97JPz1RXL5ISSB0pA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.4.tgz", + "integrity": "sha512-g21RTeFzoTl8GxosHbnQZ0/JkuFIB13C3T7Y0HtKzOXmoHhewLbVTFBQZu+z5m9STH6FZ7L/oPgU4Nm5ErN2fw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.4.tgz", + "integrity": "sha512-TVYVWD/SYwWzGGnbfTkrNpdE4HON46orgMNHCivlXmlsSGQOx/OHHYiQcMIOx38/GWgwr/po2LBn7wypkWw/Mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.4.tgz", + "integrity": "sha512-XcKvuendwizYYhFxpvQ3xVpzje2HHImzg33wL9zvxtj77HvPStbSGI9czrdbfrf8DGMcNNReH9pVZv8qejAQ5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.4.tgz", + "integrity": "sha512-LFHS/8Q+I9YA0yVETyjonMJ3UA+DczeBd/MqNEzsGSTdNvSJa1OJZcSH8GiXLvcizgp9AlHs2walqRcqzjOi3A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.4.tgz", + "integrity": "sha512-dIYgo+j1+yfy81i0YVU5KnQrIJZE8ERomx17ReU4GREjGtDW4X+nvkBak2xAUpyqLs4eleDSj3RrV72fQos7zw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.4.tgz", + "integrity": "sha512-RoaYxjdHQ5TPjaPrLsfKqR3pakMr3JGqZ+jZM0zP2IkDtsGa4CqYaWSfQmZVgFUCgLrTnzX+cnHS3nfl+kB6ZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.4.tgz", + "integrity": "sha512-T8Q3XHV+Jjf5e49B4EAaLKV74BbX7/qYBRQ8Wop/+TyyU0k+vSjiLVSHNWdVd1goMjZcbhDmYZUYW5RFqkBNHQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.4.tgz", + "integrity": "sha512-z+JQ7JirDUHAsMecVydnBPWLwJjbppU+7LZjffGf+Jvrxq+dVjIE7By163Sc9DKc3ADSU50qPVw0KonBS+a+HQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.4.tgz", + "integrity": "sha512-LfdGXCV9rdEify1oxlN9eamvDSjv9md9ZVMAbNHA87xqIfFCxImxan9qZ8+Un54iK2nnqPlbnSi4R54ONtbWBw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", + "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "18.19.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.5.tgz", + "integrity": "sha512-22MG6T02Hos2JWfa1o5jsIByn+bc5iOt1IS4xyg6OG68Bu+wMonVZzdrgCw693++rpLE9RUT/Bx15BeDzO0j+g==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.5.tgz", + "integrity": "sha512-Daka7P1z2AgKjzuueWXhwzIsKu0NkLB6vGbNVEV2iJ8GJTrzraZo/Sk4GWCMRtd/qVi3zwnk+Owbd/xSZbwHtQ==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/shared": "3.4.5", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.5.tgz", + "integrity": "sha512-J8YlxknJVd90SXFJ4HwGANSAXsx5I0lK30sO/zvYV7s5gXf7gZR7r/1BmZ2ju7RGH1lnc6bpBc6nL61yW+PsAQ==", + "dependencies": { + "@vue/compiler-core": "3.4.5", + "@vue/shared": "3.4.5" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.5.tgz", + "integrity": "sha512-jauvkDuSSUbP0ebhfNqljhShA90YEfX/0wZ+w40oZF43IjGyWYjqYaJbvMJwGOd+9+vODW6eSvnk28f0SGV7OQ==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/compiler-core": "3.4.5", + "@vue/compiler-dom": "3.4.5", + "@vue/compiler-ssr": "3.4.5", + "@vue/shared": "3.4.5", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.5.tgz", + "integrity": "sha512-DDdEcDzj2lWTMfUMMtEpLDhURai9LhM0zSZ219jCt7b2Vyl0/jy3keFgCPMitG0V1S1YG4Cmws3lWHWdxHQOpg==", + "dependencies": { + "@vue/compiler-dom": "3.4.5", + "@vue/shared": "3.4.5" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.5.tgz", + "integrity": "sha512-BcWkKvjdvqJwb7BhhFkXPLDCecX4d4a6GATvCduJQDLv21PkPowAE5GKuIE5p6RC07/Lp9FMkkq4AYCTVF5KlQ==", + "dependencies": { + "@vue/shared": "3.4.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.5.tgz", + "integrity": "sha512-wh9ELIOQKeWT9SaUPdLrsxRkZv14jp+SJm9aiQGWio+/MWNM3Lib0wE6CoKEqQ9+SCYyGjDBhTOTtO47kCgbkg==", + "dependencies": { + "@vue/reactivity": "3.4.5", + "@vue/shared": "3.4.5" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.5.tgz", + "integrity": "sha512-n5ewvOjyG3IEpqGBahdPXODFSpVlSz3H4LF76Sx0XAqpIOqyJ5bIb2PrdYuH2ogBMAQPh+o5tnoH4nJpBr8U0Q==", + "dependencies": { + "@vue/runtime-core": "3.4.5", + "@vue/shared": "3.4.5", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.5.tgz", + "integrity": "sha512-jOFc/VE87yvifQpNju12VcqimH8pBLxdcT+t3xMeiED1K6DfH9SORyhFEoZlW5TG2Vwfn3Ul5KE+1aC99xnSBg==", + "dependencies": { + "@vue/compiler-ssr": "3.4.5", + "@vue/shared": "3.4.5" + }, + "peerDependencies": { + "vue": "3.4.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.5.tgz", + "integrity": "sha512-6XptuzlMvN4l4cDnDw36pdGEV+9njYkQ1ZE0Q6iZLwrKefKaOJyiFmcP3/KBDHbt72cJZGtllAc1GaHe6XGAyg==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz", + "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "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/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "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.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "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/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/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/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "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/element-plus": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.4.tgz", + "integrity": "sha512-TlKubXJgxwhER0dw+8ULn9hr9kZjraV4R6Q/eidwWUwCKxwXYPBGmMKsZ/85tlxlhMYbcLZd/YZh6G3QkHX4fg==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "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": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "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==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "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/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": 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==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "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-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "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/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0", + "npm": ">= 8" + } + }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia-plugin-persistedstate": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.1.tgz", + "integrity": "sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==", + "peerDependencies": { + "pinia": "^2.0.0" + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rollup": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.4.tgz", + "integrity": "sha512-2ztU7pY/lrQyXSCnnoU4ICjT/tCG9cdH3/G25ERqE3Lst6vl2BCM5hL2Nw+sslAvAf+ccKsAq1SkKQALyqhR7g==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.4", + "@rollup/rollup-android-arm64": "4.9.4", + "@rollup/rollup-darwin-arm64": "4.9.4", + "@rollup/rollup-darwin-x64": "4.9.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.4", + "@rollup/rollup-linux-arm64-gnu": "4.9.4", + "@rollup/rollup-linux-arm64-musl": "4.9.4", + "@rollup/rollup-linux-riscv64-gnu": "4.9.4", + "@rollup/rollup-linux-x64-gnu": "4.9.4", + "@rollup/rollup-linux-x64-musl": "4.9.4", + "@rollup/rollup-win32-arm64-msvc": "4.9.4", + "@rollup/rollup-win32-ia32-msvc": "4.9.4", + "@rollup/rollup-win32-x64-msvc": "4.9.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.69.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", + "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/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==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.5.tgz", + "integrity": "sha512-VH6nHFhLPjgu2oh5vEBXoNZxsGHuZNr3qf4PHClwJWw6IDqw6B3x+4J+ABdoZ0aJuT8Zi0zf3GpGlLQCrGWHrw==", + "dependencies": { + "@vue/compiler-dom": "3.4.5", + "@vue/compiler-sfc": "3.4.5", + "@vue/runtime-dom": "3.4.5", + "@vue/server-renderer": "3.4.5", + "@vue/shared": "3.4.5" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-axios": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-3.5.2.tgz", + "integrity": "sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==", + "peerDependencies": { + "axios": "*", + "vue": "^3.0.0 || ^2.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", + "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", + "dev": true, + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/sfj-managementfrontend/package.json b/sfj-managementfrontend/package.json new file mode 100644 index 0000000..3151afd --- /dev/null +++ b/sfj-managementfrontend/package.json @@ -0,0 +1,33 @@ +{ + "name": "sfj-admin", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build --force" + }, + "dependencies": { + "axios": "^1.6.5", + "element-plus": "^2.4.4", + "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", + "vue": "^3.3.11", + "vue-axios": "^3.5.2", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/node": "^18.19.3", + "@vitejs/plugin-vue": "^4.5.2", + "@vue/tsconfig": "^0.5.0", + "npm-run-all2": "^6.1.1", + "sass": "^1.69.7", + "typescript": "~5.3.0", + "vite": "^5.0.10", + "vue-tsc": "^1.8.25" + } +} diff --git a/sfj-managementfrontend/public/favicon.ico b/sfj-managementfrontend/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/sfj-managementfrontend/public/favicon.ico differ diff --git a/sfj-managementfrontend/src/App.vue b/sfj-managementfrontend/src/App.vue new file mode 100644 index 0000000..fd6b44c --- /dev/null +++ b/sfj-managementfrontend/src/App.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/sfj-managementfrontend/src/assets/base.css b/sfj-managementfrontend/src/assets/base.css new file mode 100644 index 0000000..8816868 --- /dev/null +++ b/sfj-managementfrontend/src/assets/base.css @@ -0,0 +1,86 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: + color 0.5s, + background-color 0.5s; + line-height: 1.6; + font-family: + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/sfj-managementfrontend/src/assets/bg.jpg b/sfj-managementfrontend/src/assets/bg.jpg new file mode 100644 index 0000000..981b1d9 Binary files /dev/null and b/sfj-managementfrontend/src/assets/bg.jpg differ diff --git a/sfj-managementfrontend/src/assets/logo.png b/sfj-managementfrontend/src/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/sfj-managementfrontend/src/assets/logo.png differ diff --git a/sfj-managementfrontend/src/assets/logo.svg b/sfj-managementfrontend/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/sfj-managementfrontend/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/sfj-managementfrontend/src/assets/main.css b/sfj-managementfrontend/src/assets/main.css new file mode 100644 index 0000000..36fb845 --- /dev/null +++ b/sfj-managementfrontend/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; + padding: 3px; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} + +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} diff --git a/sfj-managementfrontend/src/components/HelloWorld.vue b/sfj-managementfrontend/src/components/HelloWorld.vue new file mode 100644 index 0000000..38d821e --- /dev/null +++ b/sfj-managementfrontend/src/components/HelloWorld.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/sfj-managementfrontend/src/components/TheWelcome.vue b/sfj-managementfrontend/src/components/TheWelcome.vue new file mode 100644 index 0000000..49d8f73 --- /dev/null +++ b/sfj-managementfrontend/src/components/TheWelcome.vue @@ -0,0 +1,88 @@ + + + diff --git a/sfj-managementfrontend/src/components/WelcomeItem.vue b/sfj-managementfrontend/src/components/WelcomeItem.vue new file mode 100644 index 0000000..6d7086a --- /dev/null +++ b/sfj-managementfrontend/src/components/WelcomeItem.vue @@ -0,0 +1,87 @@ + + + diff --git a/sfj-managementfrontend/src/components/icons/IconCommunity.vue b/sfj-managementfrontend/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/sfj-managementfrontend/src/components/icons/IconDocumentation.vue b/sfj-managementfrontend/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/sfj-managementfrontend/src/components/icons/IconEcosystem.vue b/sfj-managementfrontend/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/sfj-managementfrontend/src/components/icons/IconSupport.vue b/sfj-managementfrontend/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/sfj-managementfrontend/src/components/icons/IconTooling.vue b/sfj-managementfrontend/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/sfj-managementfrontend/src/main.ts b/sfj-managementfrontend/src/main.ts new file mode 100644 index 0000000..fb78a83 --- /dev/null +++ b/sfj-managementfrontend/src/main.ts @@ -0,0 +1,19 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' + +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' + +const app = createApp(App) +const store = createPinia() +store.use(piniaPluginPersistedstate) +app.use(store) +app.use(router) +app.use(ElementPlus) +app.mount('#app') diff --git a/sfj-managementfrontend/src/request/api.ts b/sfj-managementfrontend/src/request/api.ts new file mode 100644 index 0000000..6e3b13e --- /dev/null +++ b/sfj-managementfrontend/src/request/api.ts @@ -0,0 +1,122 @@ +import { servicesVersion } from "typescript"; +import service from "."; +import postservice from "./postindex"; + +interface loginData{ + username:string, + password:string +} +export function login(data:any){ + return service({ + url:"/api/auth/login", + method:"post", + data + }) +} +export function logout(){ + return service({ + url:"/api/auth/logout", + method:"get", + }) +} +export function authorize(){ + return service({ + url:"/api/user/me", + method:"get" + }) +} + +// 商品列表接口 + +export function getAllAlgorithm(){ + return service({ + url:"/api/algorithm/findall", + method:"get" + }) +} + +export function getAllField(){ + return service({ + url:"/api/algorithm/findfield", + method:"get" + }) +} + + +export function getAllUse(){ + return service({ + url:"/api/algorithm/finduse", + method:"get" + }) +} + + +export function updatePostAlgorithm(data:any){ + return postservice({ + url:"/api/algorithm/updateAlgorithm", + method:"post", + data + }) +} + + +export function addPostAlgorithm(data:any){ + return postservice({ + url:"/api/algorithm/addAlgorithm", + method:"post", + data + }) +} + +export function deleteAlgorithm(data:any){ + return postservice({ + url:"/api/algorithm/deleteAlgorithm", + method:"post", + data + }) +} + +export function updateField(data:any){ + return postservice({ + url:"api/field/updateField", + method:"post", + data + }) +} + +export function deleteField(data:any){ + return postservice({ + url:"api/field/deleteField", + method:"post", + data + }) +} + +export function addField(data:any){ + return postservice({ + url:"/api/field/addField", + method:"post", + data + }) +} +export function addUse(data:any){ + return postservice({ + url:"/api/use/addUse", + method:"post", + data + }) +} +export function deleteUse(data:any){ + return postservice({ + url:"/api/use/deleteUse", + method:"post", + data + }) +} +export function updateUse(data:any){ + return postservice({ + url:"/api/use/updateUse", + method:"post", + data + }) +} diff --git a/sfj-managementfrontend/src/request/index.ts b/sfj-managementfrontend/src/request/index.ts new file mode 100644 index 0000000..309cf42 --- /dev/null +++ b/sfj-managementfrontend/src/request/index.ts @@ -0,0 +1,75 @@ +import axios from 'axios' + + +import { ElMessage } from 'element-plus' +import { da } from 'element-plus/es/locales.mjs' + +// const defaultError = ()=> ElMessage.error('发生了一些错误,请联系管理员') +// const defaultFailure = (message:any,status:any) => ElMessage.warning(message) + + +// export function post(url:any,data:any,success:any,failure = defaultFailure,error = defaultError){ +// axios.post(url,data,{ +// headers:{ +// 'Content-Type':'application/x-www-form-urlencoded' +// }, +// withCredentials:true +// }).then(({data})=>{ +// if(data.success) +// success(data.message, data.status) +// else +// failure(data.message, data.status) +// }).catch(error) +// } +// export function get(url:any,success:any,failure = defaultFailure,error = defaultError){ +// axios.post(url,{ +// withCredentials:true +// }).then(({data})=>{ +// if(data.success) +// success(data.message, data.status) +// else +// failure(data.message, data.status) +// }).catch(error) +// } + +// 创建axios实例 +const service = axios.create({ + baseURL:"http://192.168.2.107:8080", + timeout:5000, + headers:{ + 'Content-Type':'application/x-www-form-urlencoded;charset=utf-8' + // 'Content-Type':'application/json;charset=utf-8' + }, + withCredentials:true + +}) + + + +// 请求拦截 +service.interceptors.request.use((config)=>{ + config.headers=config.headers || {} + if(localStorage.getItem('token')){ + config.headers.token=localStorage.getItem('token') || "" + } + return config +}) + + +// 相应拦截 +service.interceptors.response.use((res) => { + + const status:number = res.data.status + if(status!=200){ + // console.log("dddd"); + // ElMessage.error(res.data.message) + // return Promise.reject(res.data) + + } + return res +},(err)=>{ + // ElMessage.error(err); +}) + + +export default service; diff --git a/sfj-managementfrontend/src/request/postindex.ts b/sfj-managementfrontend/src/request/postindex.ts new file mode 100644 index 0000000..db5bb87 --- /dev/null +++ b/sfj-managementfrontend/src/request/postindex.ts @@ -0,0 +1,38 @@ +import axios from 'axios' + +const postservice = axios.create({ + baseURL:"http://192.168.2.107:8080", + timeout:5000, + headers:{ + 'Content-Type':'application/json;charset=utf-8' + }, + withCredentials:true + +}) + + +postservice.interceptors.request.use((config)=>{ + config.headers=config.headers || {} + if(localStorage.getItem('token')){ + config.headers.token=localStorage.getItem('token') || "" + } + return config +}) + + + +postservice.interceptors.response.use((res) => { + + const status:number = res.data.status + if(status!=200){ + // console.log("dddd"); + // ElMessage.error(res.data.message) + // return Promise.reject(res.data) + + } + return res +},(err)=>{ + // ElMessage.error(err); +}) + +export default postservice; \ No newline at end of file diff --git a/sfj-managementfrontend/src/router/index.ts b/sfj-managementfrontend/src/router/index.ts new file mode 100644 index 0000000..5bbd3f9 --- /dev/null +++ b/sfj-managementfrontend/src/router/index.ts @@ -0,0 +1,82 @@ +import { createRouter, createWebHistory } from 'vue-router' +import HomeView from '../views/HomeView.vue' +import { useStore } from "@/stores/counter"; +import { el } from 'element-plus/es/locales.mjs'; +// import { log } from 'console'; +// import { log } from 'console'; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path:'/login', + name:'login', + component: () => import('../views/LoginView.vue') + }, + { + path:'/home', + name:'home', + component:() => import('../views/HomeView.vue'), + redirect:"/home/algorithem", + children:[ + { + path:"algorithem", + name:"algorithem", + meta:{ + isShow:true, + title:"算法管理" + }, + component:()=> import('../views/AlgorithemView.vue') + }, + + { + path:"field", + name:"field", + meta:{ + isShow:true, + title:"领域管理" + }, + component:()=> import('../views/FieldView.vue') + }, + { + path:"use", + name:"use", + meta:{ + isShow:true, + title:"场景管理" + }, + component:()=> import('../views/UseView.vue') + } + ] + }, + { + path:"/", + redirect:"/login" + } + + + + ] +}) +router.beforeEach((to,from,next)=>{ + const store = useStore(); + const storeuser = store.auth.user + // console.log(store.auth.user); + // const username :string | null = sessionStorage.getItem("username") + if(!storeuser && to.path !== '/login'){ + console.log(33); + console.log(store.auth.user); + + // console.log("username") + // console.log(username); + next('/login') + }else if(storeuser != null && to.matched.length === 0) { + next('/home') + }else if(storeuser && to.path === '/login'){ + next('/home') + }else{ + next() + } + +}) +export default router diff --git a/sfj-managementfrontend/src/stores/counter.ts b/sfj-managementfrontend/src/stores/counter.ts new file mode 100644 index 0000000..bab995a --- /dev/null +++ b/sfj-managementfrontend/src/stores/counter.ts @@ -0,0 +1,29 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +// export const useStore = defineStore('store', () => { +// const auth = ref({ +// user:null + + +// }) + + +// return {auth} + + + +// }) +export const useStore = defineStore('store', { + state: () => ({ + auth: { + user: null + } + }), + actions: { + setUser(user:any) { + this.auth.user = user; + } + }, + persist:true +}); diff --git a/sfj-managementfrontend/src/type/algorithm.ts b/sfj-managementfrontend/src/type/algorithm.ts new file mode 100644 index 0000000..5860b99 --- /dev/null +++ b/sfj-managementfrontend/src/type/algorithm.ts @@ -0,0 +1,94 @@ +// import { interceptors } from "node_modules/axios/index.cjs" + +export interface ALgorithmInt{ + algorithm_id:number, + algorithm_name:string, + algorithm_description:string, + fieldStr:string, + userStr:string, + fieldList:FieldInt[], + useList:UseInt[], + algorithm_img:string, + algorithm_coder:string +} +interface selectDataInt{ + name:string, + description:string, + page:number,//页码 + count:number,//总条数 + pagesize:number,//默认一页显示几条 +} +interface activeint{ + algorithm_id:number, + algorithm_name:string, + algorithm_description:string, + fieldStr:string, + userStr:string, + fieldList:FieldInt[], + useList:UseInt[], + algorithm_img:string, + algorithm_coder:string +} +interface addListInt { + algorithm_name:string, + algorithm_description:string, + fieldStr:string, + userStr:string, + fieldList:FieldInt[], + useList:UseInt[], + algorithm_img:string, + algorithm_coder:string +} +interface ListInt{ + field_id:number, + field_name:string +} +interface useListInt{ + usecase_id:number, + usecase_name:string +} +interface FieldInt { + fieldname:String +} +interface UseInt { + usename:string +} +export class InitData{ + selectData:selectDataInt={ + name:"", + description:"", + page:1, + count:0, + pagesize:10 + + } + list:ALgorithmInt[]=[] + isShow=false + isAddShow=false + //选中的的对象 + active:activeint={ + algorithm_id:0, + algorithm_name:"", + algorithm_description:"", + fieldStr:"", + userStr:"", + fieldList:[], + useList:[], + algorithm_img:"", + algorithm_coder:"" + } + addList: addListInt = { + algorithm_name:"", + algorithm_description:"", + algorithm_img:"", + algorithm_coder:"", + fieldStr:"", + userStr:"", + fieldList:[], + useList:[], + + + } + fieldList:ListInt[]=[] + useList:useListInt[]=[] +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/type/fields.ts b/sfj-managementfrontend/src/type/fields.ts new file mode 100644 index 0000000..fc5f87d --- /dev/null +++ b/sfj-managementfrontend/src/type/fields.ts @@ -0,0 +1,41 @@ +export interface fieldsData { + field_id: string; + field_name: string; + algorithemFields:null; +} +interface selectDataInt{ + name:string, + description:string, + page:number,//页码 + count:number,//总条数 + pagesize:number,//默认一页显示几条 +} + +interface Active{ + field_id: string; + field_name: string; + algorithemFields:null; +} + +export class InitData { + selectData:selectDataInt={ + name:"", + description:"", + page:1,//页码 + count:0,//总条数 + pagesize:5,//默认一页显示几条 + } + list:fieldsData[]=[]//展示的内容数据,接收从后台返回来的数据 + isShow1 = false + isShow = false + active:Active={ + field_id: '0', + field_name: '', + algorithemFields:null, + } + active1:Active={ + field_id: '0', + field_name: '', + algorithemFields:null, + } +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/type/login.ts b/sfj-managementfrontend/src/type/login.ts new file mode 100644 index 0000000..480b85c --- /dev/null +++ b/sfj-managementfrontend/src/type/login.ts @@ -0,0 +1,12 @@ +export interface LoginFormInt{ + username:string + password:string + } + + export class LoginData{ + ruleForm:LoginFormInt={ + username:"", + password:"" + } + +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/type/use.ts b/sfj-managementfrontend/src/type/use.ts new file mode 100644 index 0000000..caba0d4 --- /dev/null +++ b/sfj-managementfrontend/src/type/use.ts @@ -0,0 +1,42 @@ +export interface usecaseInt{ + usecase_id:number, + usecase_name:string, + +} +interface selectDataInt{ + name:string, + page:number,//页码 + count:number,//总条数 + pagesize:number,//默认一页显示几条 +} +interface activeint{ + usecase_id:number, + usecase_name:string, + +} +interface addListInt { + usecase_name:string, + +} + + +export class InitData{ + selectData:selectDataInt={ + name:"", + page:1, + count:0, + pagesize:10 + + } + list:usecaseInt[]=[] + isShow=false + isAddShow=false + //选中的的对象 + active:activeint={ + usecase_id:0, + usecase_name:"", + } + addList: addListInt = { + usecase_name:"", + } +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/views/AboutView.vue b/sfj-managementfrontend/src/views/AboutView.vue new file mode 100644 index 0000000..756ad2a --- /dev/null +++ b/sfj-managementfrontend/src/views/AboutView.vue @@ -0,0 +1,15 @@ + + + diff --git a/sfj-managementfrontend/src/views/AlgorithemView.vue b/sfj-managementfrontend/src/views/AlgorithemView.vue new file mode 100644 index 0000000..d1b4220 --- /dev/null +++ b/sfj-managementfrontend/src/views/AlgorithemView.vue @@ -0,0 +1,557 @@ + + + + + + + diff --git a/sfj-managementfrontend/src/views/FieldView.vue b/sfj-managementfrontend/src/views/FieldView.vue new file mode 100644 index 0000000..f8f972e --- /dev/null +++ b/sfj-managementfrontend/src/views/FieldView.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/sfj-managementfrontend/src/views/HomeView.vue b/sfj-managementfrontend/src/views/HomeView.vue new file mode 100644 index 0000000..521f51f --- /dev/null +++ b/sfj-managementfrontend/src/views/HomeView.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/sfj-managementfrontend/src/views/LoginView.vue b/sfj-managementfrontend/src/views/LoginView.vue new file mode 100644 index 0000000..b1d0ee4 --- /dev/null +++ b/sfj-managementfrontend/src/views/LoginView.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/sfj-managementfrontend/src/views/UseView.vue b/sfj-managementfrontend/src/views/UseView.vue new file mode 100644 index 0000000..c6c9c4e --- /dev/null +++ b/sfj-managementfrontend/src/views/UseView.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/sfj-managementfrontend/tsconfig.app.json b/sfj-managementfrontend/tsconfig.app.json new file mode 100644 index 0000000..491e093 --- /dev/null +++ b/sfj-managementfrontend/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "noEmit": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/sfj-managementfrontend/tsconfig.json b/sfj-managementfrontend/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/sfj-managementfrontend/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/sfj-managementfrontend/tsconfig.node.json b/sfj-managementfrontend/tsconfig.node.json new file mode 100644 index 0000000..46cf2e1 --- /dev/null +++ b/sfj-managementfrontend/tsconfig.node.json @@ -0,0 +1,17 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "noEmit": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/sfj-managementfrontend/vite.config.ts b/sfj-managementfrontend/vite.config.ts new file mode 100644 index 0000000..e5c6c96 --- /dev/null +++ b/sfj-managementfrontend/vite.config.ts @@ -0,0 +1,23 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + server:{ + port: 5175, + host:'0.0.0.0' + }, + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + optimizeDeps: { + include: ['element-plus'] + } +}) diff --git a/sfj-vue3/.gitignore b/sfj-vue3/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/sfj-vue3/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/sfj-vue3/.vscode/extensions.json b/sfj-vue3/.vscode/extensions.json new file mode 100644 index 0000000..c0a6e5a --- /dev/null +++ b/sfj-vue3/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] +} diff --git a/sfj-vue3/Dockerfile b/sfj-vue3/Dockerfile new file mode 100644 index 0000000..0445cf9 --- /dev/null +++ b/sfj-vue3/Dockerfile @@ -0,0 +1,20 @@ +# 基于Node.js的Alpine Linux作为基础镜像 +FROM node:alpine + +# 设置工作目录 +WORKDIR /app + +# 复制package.json和package-lock.json到容器内 +COPY package*.json ./ + +# 运行npm install命令来安装依赖包 +RUN npm ci --only=production + +# 复制src目录及其他需要的文件到容器内 +COPY . . + +# 打开80端口 +EXPOSE 80 + +# 定义入口点 +CMD ["npm", "run", "serve"] \ No newline at end of file diff --git a/sfj-vue3/README.md b/sfj-vue3/README.md new file mode 100644 index 0000000..160e579 --- /dev/null +++ b/sfj-vue3/README.md @@ -0,0 +1,40 @@ +# vue_project3 + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` diff --git a/sfj-vue3/env.d.ts b/sfj-vue3/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/sfj-vue3/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/sfj-vue3/index.html b/sfj-vue3/index.html new file mode 100644 index 0000000..1bc1369 --- /dev/null +++ b/sfj-vue3/index.html @@ -0,0 +1,18 @@ + + + + + + + Vite App + + +
+ + + + diff --git a/sfj-vue3/package-lock.json b/sfj-vue3/package-lock.json new file mode 100644 index 0000000..3690528 --- /dev/null +++ b/sfj-vue3/package-lock.json @@ -0,0 +1,2912 @@ +{ + "name": "vue_project3", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vue_project3", + "version": "0.0.0", + "dependencies": { + "aos": "^2.3.4", + "axios": "^1.6.5", + "element-plus": "^2.5.1", + "particles.vue3": "^2.12.0", + "tsparticles": "^3.0.3", + "tsparticles-slim": "^2.12.0", + "vue": "^3.3.11", + "vue-axios": "^3.5.2", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/aos": "^3.0.7", + "@types/node": "^18.19.3", + "@vitejs/plugin-vue": "^4.5.2", + "@vue/tsconfig": "^0.5.0", + "npm-run-all2": "^6.1.1", + "typescript": "~5.3.0", + "vite": "^5.0.10", + "vue-tsc": "^1.8.25" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz", + "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz", + "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==", + "dependencies": { + "@floating-ui/core": "^1.5.3", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.2.tgz", + "integrity": "sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.2.tgz", + "integrity": "sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.2.tgz", + "integrity": "sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.2.tgz", + "integrity": "sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.2.tgz", + "integrity": "sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.2.tgz", + "integrity": "sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.2.tgz", + "integrity": "sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.2.tgz", + "integrity": "sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.2.tgz", + "integrity": "sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.2.tgz", + "integrity": "sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.2.tgz", + "integrity": "sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.2.tgz", + "integrity": "sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.2.tgz", + "integrity": "sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", + "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", + "dev": true + }, + "node_modules/@tsparticles/basic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/basic/-/basic-3.0.3.tgz", + "integrity": "sha512-hMzHTuKhMoTNiqkcEnlGZ3Aa15o3tLcjVDTtuNhZlrONgu7KwVUR4mpxxWUyJHNYlho7VHtZvUU8XAYmN/uAFw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/move-base": "^3.0.3", + "@tsparticles/shape-circle": "^3.0.3", + "@tsparticles/updater-color": "^3.0.3", + "@tsparticles/updater-opacity": "^3.0.3", + "@tsparticles/updater-out-modes": "^3.0.3", + "@tsparticles/updater-size": "^3.0.3" + } + }, + "node_modules/@tsparticles/engine": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/engine/-/engine-3.0.3.tgz", + "integrity": "sha512-1yGci0gMF9uBIVPXBYekORq8UYf8Twz3Xy/ZWWVCFWeVh90Amdns3fad2pf2HicZe8HZqpa1cN2Io1MOHAlO8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "hasInstallScript": true + }, + "node_modules/@tsparticles/interaction-external-attract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-attract/-/interaction-external-attract-3.0.3.tgz", + "integrity": "sha512-Fnb556N/i7wEj+ziLLkU4dOJWYm31OKyAd8CItsC9/mVtd01jCnBR57rcR3KdlKhknzDrPAWPG0CV29PdZWmXg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-bounce": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.0.3.tgz", + "integrity": "sha512-Uc7VNQxeb4KMGTmzIn3/35t0FPFFTSn8sUNyUyE24nlmSZBE1PwxuyMbCCzyj2VYGgdx4PXoijY1tLN9FGfIQg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-bubble": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bubble/-/interaction-external-bubble-3.0.3.tgz", + "integrity": "sha512-tA3OZfoMhYsy/cY90z8GolGjH9B+r29CplTKiAbOk+CdNFZ9oMBuMXfDhMCFURxbb1Ak4SFhwCSnsTZOokrZeQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-connect": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-connect/-/interaction-external-connect-3.0.3.tgz", + "integrity": "sha512-KtPxzxuG+GLfejSAoQ9d2apYEBt6PnuzNtRuASbnZFMZ8xS9wXcS+6Jn3JCBx6wq7hXJY3yvX86MtIsArVS/cg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-grab": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-grab/-/interaction-external-grab-3.0.3.tgz", + "integrity": "sha512-5JlZRpz4qB1ukcJquhnyETJdSMPu/t7ZNNgecWgiDd1akN3/zQAUp6cY918C1Mtq3J7vElBcyqf/6mY6wApmzg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-pause": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-pause/-/interaction-external-pause-3.0.3.tgz", + "integrity": "sha512-iQnN9cEhInQpGEaYe03L7Y603MuSwBco4FaMYcPcZxHCf6uEAag6zQPxdIZjF/a49dVUuEKv6elW+y07DTVYBg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-push": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-push/-/interaction-external-push-3.0.3.tgz", + "integrity": "sha512-Tiw/o+2jJwpIGPSez8pQSUAzoSSga5q33qtwJgWcjiMedBRnwSJNIdShkR5g5EiWop8GSN9U8AnCA3UrG3cq6Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-remove": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-remove/-/interaction-external-remove-3.0.3.tgz", + "integrity": "sha512-Vo38bKAzFyJDLE6WNespJJn/cIEm9qFZZ6ZVwPbdFDI9rK8gmIqHgmHudQduVPvs2Co9oIjfQq0OgVG70bHFvQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-repulse": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-repulse/-/interaction-external-repulse-3.0.3.tgz", + "integrity": "sha512-6OOk2NzhVsLu7xp8fyn6xw+zVUYlmGcIMgJSa5LzaUZ/gHoVZ2f7UKdtKxZVnqOCWO+Ff8P7rRtm5q39JS8Pvg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-slow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-slow/-/interaction-external-slow-3.0.3.tgz", + "integrity": "sha512-+oNTTpMjHooMD/+BVtk6xllpVimcRoXlMPrQ+Pj7CndhoQNR6s8MacUyw2HPYO9epuItGui9qq1HyFWqZRQtSA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-trail": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-trail/-/interaction-external-trail-3.0.3.tgz", + "integrity": "sha512-qP5820gtY2DsIMC8BodFu0cr+f4jvAlnXT3nwpf2N4Rfcn1c0bhzJI8TNtBB/z9wkY8xBKZFhJBwGnNn8sqyrg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-particles-attract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-attract/-/interaction-particles-attract-3.0.3.tgz", + "integrity": "sha512-3DdFXxMujkLRZAAnid8eBW3BwKe3SGoXzVaSaiht7tq/Q0H98h3ryMJNeD6Rr0PbxGFWid3zmwk8+gdhQyOqZg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-particles-collisions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-collisions/-/interaction-particles-collisions-3.0.3.tgz", + "integrity": "sha512-pYxzrmvwLj4gwQdg33xTDm6670lQExLoCmeATNAukN4qTFWqYnS45AWrUsedKAverDMcnu1iT2Vs+xmEwtSFcw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-particles-links": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-links/-/interaction-particles-links-3.0.3.tgz", + "integrity": "sha512-is2I/GTz2nC+2zupyVGbr2tbtp5qGRiwkC3lMWpmvfMWiXxs0iW4w7o/eFy6W5n1Sw2GKLjLUxMn0+xLwRVOEQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/move-base": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/move-base/-/move-base-3.0.3.tgz", + "integrity": "sha512-4OFyZ55zWGgw1di1R7hgjlqySE+SEHrAHEqoEq8x14/D1Zg3ai/6BRFqze161ybtwddpz/ukrFy9cpJaUDH1kA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/move-parallax": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/move-parallax/-/move-parallax-3.0.3.tgz", + "integrity": "sha512-LP9b+Yz3MpnReAgSQrBIINg+fQMzmKlYZ79FQLZdI5UlnyGEarYTYEpcg6VyBWb+QVPDCE+RfOQINfUPI5PB4A==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-absorbers": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-absorbers/-/plugin-absorbers-3.0.3.tgz", + "integrity": "sha512-mpAgIRdAmbb3+SX3KNGbmS0YsMJYx711/dV3e3kCu1M/k7ptFze/oFDLMb1f3614WWRlJCwQGdtmAAv517tpWg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-easing-quad": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-easing-quad/-/plugin-easing-quad-3.0.3.tgz", + "integrity": "sha512-KgzX9VzkPO61GTcLUHGx+wbiBdnxxp7174zICUiLZxYUuKYkn31k00MPsbja3HgW5lSZ6ruFh4RERi8nVwXo/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-emitters": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters/-/plugin-emitters-3.0.3.tgz", + "integrity": "sha512-Rt1Hrp/teqz6sLPwHShR8L7AWfQCLttXtf7r1VW7iKUhSou7Ye2L77ZCKzqq7xvEszPztYEVMLqjttccGzfs8Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-emitters-shape-circle": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters-shape-circle/-/plugin-emitters-shape-circle-3.0.3.tgz", + "integrity": "sha512-TDB0cw7P27orHwm51Uq6OZoQ3iiZOl948//q6WFvQrufR+TaKCkoyttqzgdV7OKVaMNZa+YlUZ6BIDv5aj5PSA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/plugin-emitters": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-emitters-shape-square": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters-shape-square/-/plugin-emitters-shape-square-3.0.3.tgz", + "integrity": "sha512-gYIN24gqDkzQMfNMdlUqWQBHTvugghRMkEw42FxllKtHZ9urNBWqPA3EGrNL1Z6ZXZI8UuG18udUZKQsxq36vg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/plugin-emitters": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-circle": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-circle/-/shape-circle-3.0.3.tgz", + "integrity": "sha512-BXolExTzU8wKbV9XvYwYmsYVMBFpx6kb+k880Do+HMp9qUvnJ4G7jshwPp7Ns8svoN4EvbqqhacNd029ESMMYw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-emoji": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-emoji/-/shape-emoji-3.0.3.tgz", + "integrity": "sha512-THOeWohtdXQpI3xUjVAcL4XVIWjE66MpGcq1w4Jo+V8luab1fCEKT6GQPPINmkiQe7lWChdz6qUX/FfPYmWG4A==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-image": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.0.3.tgz", + "integrity": "sha512-xc2HAmmF1iffOzit3UnIJGQuNX6gqxpO4srm3EOQEoWcS62v2Dr+tI6pEhY60RoVrDhBzdRI2da3+EvL5J39ag==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-line": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-line/-/shape-line-3.0.3.tgz", + "integrity": "sha512-JOJrFKcnDgKJlD2YlJGISyuMRMKCdEuqYvUuXD4JqBR7XP8hoAgMEx2Of3rJ7sZyoAo2pdYEqDoSGWq0vgLuvQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-polygon": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-polygon/-/shape-polygon-3.0.3.tgz", + "integrity": "sha512-gl+XW46oOudD84lgano6exNEKLyXwOXpHJPRm+dz2HLbRuuU6wCFd5isY4YCr47HJL7wJ7u7pm9LF1kkMk68Sg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-square": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-square/-/shape-square-3.0.3.tgz", + "integrity": "sha512-FACZ0OFPMhdeRnspgU8CJimEyNhXNdmP/l5i8booj9ECvuYATy4yRvTbtktBy/mVuehinM8tgFYKgg8UF/as6Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-star": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-star/-/shape-star-3.0.3.tgz", + "integrity": "sha512-P6C+oFneM75Sx2iuLnyNEZR+Cd7V3IIi7lYws54pcUdrYfvQ0lXdQZpUf3noHXoi03c+PnVvEsXvC+fX/+Zdlw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-text": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-text/-/shape-text-3.0.3.tgz", + "integrity": "sha512-OoGA6193n6NXDJrLovmaa9Yu+ErfwrVRoxiAK5mVayM5ecZX6vhD8+c0H+pR2nY6iOn0h8GXU/FYmX9RFaIaOw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/slim": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/slim/-/slim-3.0.3.tgz", + "integrity": "sha512-E6ci6uEujJLaoY1JuFwDDOlJHaAAWbQiSEpgQUqETjD9+yEiiQ0zhxrua4HImU2+JhA6vSi7b1rTc7TYBjRRnQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/basic": "^3.0.3", + "@tsparticles/engine": "^3.0.3", + "@tsparticles/interaction-external-attract": "^3.0.3", + "@tsparticles/interaction-external-bounce": "^3.0.3", + "@tsparticles/interaction-external-bubble": "^3.0.3", + "@tsparticles/interaction-external-connect": "^3.0.3", + "@tsparticles/interaction-external-grab": "^3.0.3", + "@tsparticles/interaction-external-pause": "^3.0.3", + "@tsparticles/interaction-external-push": "^3.0.3", + "@tsparticles/interaction-external-remove": "^3.0.3", + "@tsparticles/interaction-external-repulse": "^3.0.3", + "@tsparticles/interaction-external-slow": "^3.0.3", + "@tsparticles/interaction-particles-attract": "^3.0.3", + "@tsparticles/interaction-particles-collisions": "^3.0.3", + "@tsparticles/interaction-particles-links": "^3.0.3", + "@tsparticles/move-base": "^3.0.3", + "@tsparticles/move-parallax": "^3.0.3", + "@tsparticles/plugin-easing-quad": "^3.0.3", + "@tsparticles/shape-circle": "^3.0.3", + "@tsparticles/shape-emoji": "^3.0.3", + "@tsparticles/shape-image": "^3.0.3", + "@tsparticles/shape-line": "^3.0.3", + "@tsparticles/shape-polygon": "^3.0.3", + "@tsparticles/shape-square": "^3.0.3", + "@tsparticles/shape-star": "^3.0.3", + "@tsparticles/updater-color": "^3.0.3", + "@tsparticles/updater-life": "^3.0.3", + "@tsparticles/updater-opacity": "^3.0.3", + "@tsparticles/updater-out-modes": "^3.0.3", + "@tsparticles/updater-rotate": "^3.0.3", + "@tsparticles/updater-size": "^3.0.3", + "@tsparticles/updater-stroke-color": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-color": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-color/-/updater-color-3.0.3.tgz", + "integrity": "sha512-zOQuO+nJIGcYK2iS4k6+HyO+APfJ58OiZVvkerZaI/on5yE5Cq4goqCrjJBkRWo6WimdhDJjS9vxAyon8Y7CPQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-destroy": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-destroy/-/updater-destroy-3.0.3.tgz", + "integrity": "sha512-nCOP2oxg9Qy5h9WLpR46sZLp0X6Y7/0LVw2Jf7Kz+BNO9aqYW54tRS8AiG9j6DpMmt0HWbiB37Nv05s7/bZnKQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-life": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-life/-/updater-life-3.0.3.tgz", + "integrity": "sha512-2YZoK13qqPB+m2QgcmStiZdCdvmkhIYHCv5fVqHFXrghS6IMqxEOAh+WV5FRcnL19UvMvKZUFLxmubrKnsi1RA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-opacity": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-opacity/-/updater-opacity-3.0.3.tgz", + "integrity": "sha512-B+tCeItEEKfwJMeZ5l7jdggFDdt2Rzo3GSWrbTzsa4RxTlzNBZcuFp5qNOuwnBUERBM9u7wxPnfF+x0fDJlGgw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-out-modes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-out-modes/-/updater-out-modes-3.0.3.tgz", + "integrity": "sha512-3tJ9UKc00KalPVmEfrHUDaXcOAJNjG/83ufiLnj4ZVec4PeibSck7OGkYgNht8O5CR93ZxONNI85DcUHCkBXXg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-roll": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-roll/-/updater-roll-3.0.3.tgz", + "integrity": "sha512-OH1iyHAUvdqKOQN94isViQVUORNUqBDDkgkukvRp6La0Xjk1sop3pVtfH5kADkuolunzD17SlKWup75AUGZKIw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-rotate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-rotate/-/updater-rotate-3.0.3.tgz", + "integrity": "sha512-447je9lpU++TxPcZjUlit1NaBctIyT2x6W5NevVjrxckoAWoW2OYuy4mhuJRxn3SZHJ7/t2Wt6Es1g3DR4plRA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-size": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.0.3.tgz", + "integrity": "sha512-mgo7VXJR6rfeSuVT2alxzdYs9BO2tr0iWiBKkbQMH/GSpLI4juijvHxUKC7MXk5E8C0f9ZLfoeSDH1NaeizbDw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-stroke-color": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-stroke-color/-/updater-stroke-color-3.0.3.tgz", + "integrity": "sha512-8CdRz5KE3RxmuJlao92w0Fo1BtwMLSkZIATMLkzuJYUu0Fq5AWnBkUxxe7r5Qk015n9qaMo8aWiQFwrYJ+FGAg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-tilt": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-tilt/-/updater-tilt-3.0.3.tgz", + "integrity": "sha512-vdw5pBuBosWIq54u7CJD71r2P0UqlMZpOLof8So+Wacm92khZ3ONMpnPbvo0ghBVpZQENvpm5yqJPnroD8KP4Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-twinkle": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-twinkle/-/updater-twinkle-3.0.3.tgz", + "integrity": "sha512-5ejosaUYLji5Wr7uT9bqNae1L0PVb4XOY9a6bhMfoWEQQ8MAGFDFLcSF8ilgL0xpp6GsyF646rM8caIERLUvpQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-wobble": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-wobble/-/updater-wobble-3.0.3.tgz", + "integrity": "sha512-PwO53o1Cb8Wwt5jv6hwJ1zBgSH0L6Hz4FD1uJGW/VcYYUg+/NIlUWKpC77PIqS8NE9hiX0c8Yjg1hw60bHR75Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@types/aos": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@types/aos/-/aos-3.0.7.tgz", + "integrity": "sha512-sEhyFqvKauUJZDbvAB3Pggynrq6g+2PS4XB3tmUr+mDL1gfDJnwslUC4QQ7/l8UD+LWpr3RxZVR/rHoZrLqZVg==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "18.19.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.4.tgz", + "integrity": "sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.4.tgz", + "integrity": "sha512-U5AdCN+6skzh2bSJrkMj2KZsVkUpgK8/XlxjSRYQZhNPcvt9/kmgIMpFEiTyK+Dz5E1J+8o8//BEIX+bakgVSw==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/shared": "3.4.4", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.4.tgz", + "integrity": "sha512-iSwkdDULCN+Vr8z6uwdlL044GJ/nUmECxP9vu7MzEs4Qma0FwDLYvnvRcyO0ZITuu3Os4FptGUDnhi1kOLSaGw==", + "dependencies": { + "@vue/compiler-core": "3.4.4", + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.4.tgz", + "integrity": "sha512-OTFcU6vUxUNHBcarzkp4g6d25nvcmDvFDzPRvSrIsByFFPRYN+y3b+j9HxYwt6nlWvGyFCe0roeJdJlfYxbCBg==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/compiler-core": "3.4.4", + "@vue/compiler-dom": "3.4.4", + "@vue/compiler-ssr": "3.4.4", + "@vue/shared": "3.4.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.4.tgz", + "integrity": "sha512-1DU9DflSSQlx/M61GEBN+NbT/anUki2ooDo9IXfTckCeKA/2IKNhY8KbG3x6zkd3KGrxzteC7de6QL88vEb41Q==", + "dependencies": { + "@vue/compiler-dom": "3.4.4", + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.4.tgz", + "integrity": "sha512-DFsuJBf6sfhd5SYzJmcBTUG9+EKqjF31Gsk1NJtnpJm9liSZ806XwGJUeNBVQIanax7ODV7Lmk/k17BgxXNuTg==", + "dependencies": { + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.4.tgz", + "integrity": "sha512-zWWwNQAj5JdxrmOA1xegJm+c4VtyIbDEKgQjSb4va5v7gGTCh0ZjvLI+htGFdVXaO9bs2J3C81p5p+6jrPK8Bw==", + "dependencies": { + "@vue/reactivity": "3.4.4", + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.4.tgz", + "integrity": "sha512-Nlh2ap1J/eJQ6R0g+AIRyGNwpTJQACN0dk8I8FRLH8Ev11DSvfcPOpn4+Kbg5xAMcuq0cHB8zFYxVrOgETrrvg==", + "dependencies": { + "@vue/runtime-core": "3.4.4", + "@vue/shared": "3.4.4", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.4.tgz", + "integrity": "sha512-+AjoiKcC41k7SMJBYkDO9xs79/Of8DiThS9mH5l2MK+EY0to3psI0k+sElvVqQvsoZTjHMEuMz0AEgvm2T+CwA==", + "dependencies": { + "@vue/compiler-ssr": "3.4.4", + "@vue/shared": "3.4.4" + }, + "peerDependencies": { + "vue": "3.4.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.4.tgz", + "integrity": "sha512-abSgiVRhfjfl3JALR/cSuBl74hGJ3SePgf1mKzodf1eMWLwHZbfEGxT2cNJSsNiw44jEgrO7bNkhchaWA7RwNw==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz", + "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "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/aos": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/aos/-/aos-2.3.4.tgz", + "integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==", + "dependencies": { + "classlist-polyfill": "^1.0.3", + "lodash.debounce": "^4.0.6", + "lodash.throttle": "^4.0.1" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.5", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "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==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/classlist-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", + "integrity": "sha512-GzIjNdcEtH4ieA2S8NmrSxv7DfEV5fmixQeyTmqmRmRJPGpRBaSnA2a0VrCjyT8iW8JjEdMbKzDotAJf+ajgaQ==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/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/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/element-plus": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.5.1.tgz", + "integrity": "sha512-ylX9h2U125/nesPlLWgfPkI1rID9EiGROlgf0QkzBUjx+/d4w/YqS+IqZZZC5yvQPhKYu9aMDqEBzOurwn4Cnw==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "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": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/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/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": 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==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "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-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0", + "npm": ">= 8" + } + }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/particles.vue3": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/particles.vue3/-/particles.vue3-2.12.0.tgz", + "integrity": "sha512-t1AFUSuL+zzXO5fvBq6y76DAyy6sXtBOVY3UirNzaRQ0JCqSV3wCQwQ2N51tJRG6V952ARi87NMcQP5VwfTkqA==", + "deprecated": "@tsparticles/vue3 is the new package for v3, please use that", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0", + "vue": "^3.3.4" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "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==", + "dev": true, + "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/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rollup": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.2.tgz", + "integrity": "sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.2", + "@rollup/rollup-android-arm64": "4.9.2", + "@rollup/rollup-darwin-arm64": "4.9.2", + "@rollup/rollup-darwin-x64": "4.9.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.2", + "@rollup/rollup-linux-arm64-gnu": "4.9.2", + "@rollup/rollup-linux-arm64-musl": "4.9.2", + "@rollup/rollup-linux-riscv64-gnu": "4.9.2", + "@rollup/rollup-linux-x64-gnu": "4.9.2", + "@rollup/rollup-linux-x64-musl": "4.9.2", + "@rollup/rollup-win32-arm64-msvc": "4.9.2", + "@rollup/rollup-win32-ia32-msvc": "4.9.2", + "@rollup/rollup-win32-x64-msvc": "4.9.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/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==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsparticles": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tsparticles/-/tsparticles-3.0.3.tgz", + "integrity": "sha512-chClgQd4ePebjMk0UtK91ELPsOCcA7pBvDrzb54Yyzy66S5Ksa8oEhuepCfVAREyrAzn0YVuEue07SXvWXS88Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/interaction-external-trail": "^3.0.3", + "@tsparticles/plugin-absorbers": "^3.0.3", + "@tsparticles/plugin-emitters": "^3.0.3", + "@tsparticles/plugin-emitters-shape-circle": "^3.0.3", + "@tsparticles/plugin-emitters-shape-square": "^3.0.3", + "@tsparticles/shape-text": "^3.0.3", + "@tsparticles/slim": "^3.0.3", + "@tsparticles/updater-destroy": "^3.0.3", + "@tsparticles/updater-roll": "^3.0.3", + "@tsparticles/updater-tilt": "^3.0.3", + "@tsparticles/updater-twinkle": "^3.0.3", + "@tsparticles/updater-wobble": "^3.0.3" + } + }, + "node_modules/tsparticles-basic": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-basic/-/tsparticles-basic-2.12.0.tgz", + "integrity": "sha512-pN6FBpL0UsIUXjYbiui5+IVsbIItbQGOlwyGV55g6IYJBgdTNXgFX0HRYZGE9ZZ9psEXqzqwLM37zvWnb5AG9g==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0", + "tsparticles-move-base": "^2.12.0", + "tsparticles-shape-circle": "^2.12.0", + "tsparticles-updater-color": "^2.12.0", + "tsparticles-updater-opacity": "^2.12.0", + "tsparticles-updater-out-modes": "^2.12.0", + "tsparticles-updater-size": "^2.12.0" + } + }, + "node_modules/tsparticles-engine": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.12.0.tgz", + "integrity": "sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "hasInstallScript": true + }, + "node_modules/tsparticles-interaction-external-attract": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-attract/-/tsparticles-interaction-external-attract-2.12.0.tgz", + "integrity": "sha512-0roC6D1QkFqMVomcMlTaBrNVjVOpyNzxIUsjMfshk2wUZDAvTNTuWQdUpmsLS4EeSTDN3rzlGNnIuuUQqyBU5w==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-bounce": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bounce/-/tsparticles-interaction-external-bounce-2.12.0.tgz", + "integrity": "sha512-MMcqKLnQMJ30hubORtdq+4QMldQ3+gJu0bBYsQr9BsThsh8/V0xHc1iokZobqHYVP5tV77mbFBD8Z7iSCf0TMQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-bubble": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bubble/-/tsparticles-interaction-external-bubble-2.12.0.tgz", + "integrity": "sha512-5kImCSCZlLNccXOHPIi2Yn+rQWTX3sEa/xCHwXW19uHxtILVJlnAweayc8+Zgmb7mo0DscBtWVFXHPxrVPFDUA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-connect": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-connect/-/tsparticles-interaction-external-connect-2.12.0.tgz", + "integrity": "sha512-ymzmFPXz6AaA1LAOL5Ihuy7YSQEW8MzuSJzbd0ES13U8XjiU3HlFqlH6WGT1KvXNw6WYoqrZt0T3fKxBW3/C3A==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-grab": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-grab/-/tsparticles-interaction-external-grab-2.12.0.tgz", + "integrity": "sha512-iQF/A947hSfDNqAjr49PRjyQaeRkYgTYpfNmAf+EfME8RsbapeP/BSyF6mTy0UAFC0hK2A2Hwgw72eT78yhXeQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-pause": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-pause/-/tsparticles-interaction-external-pause-2.12.0.tgz", + "integrity": "sha512-4SUikNpsFROHnRqniL+uX2E388YTtfRWqqqZxRhY0BrijH4z04Aii3YqaGhJxfrwDKkTQlIoM2GbFT552QZWjw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-push": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-push/-/tsparticles-interaction-external-push-2.12.0.tgz", + "integrity": "sha512-kqs3V0dgDKgMoeqbdg+cKH2F+DTrvfCMrPF1MCCUpBCqBiH+TRQpJNNC86EZYHfNUeeLuIM3ttWwIkk2hllR/Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-remove": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-remove/-/tsparticles-interaction-external-remove-2.12.0.tgz", + "integrity": "sha512-2eNIrv4m1WB2VfSVj46V2L/J9hNEZnMgFc+A+qmy66C8KzDN1G8aJUAf1inW8JVc0lmo5+WKhzex4X0ZSMghBg==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-repulse": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-repulse/-/tsparticles-interaction-external-repulse-2.12.0.tgz", + "integrity": "sha512-rSzdnmgljeBCj5FPp4AtGxOG9TmTsK3AjQW0vlyd1aG2O5kSqFjR+FuT7rfdSk9LEJGH5SjPFE6cwbuy51uEWA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-slow": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-slow/-/tsparticles-interaction-external-slow-2.12.0.tgz", + "integrity": "sha512-2IKdMC3om7DttqyroMtO//xNdF0NvJL/Lx7LDo08VpfTgJJozxU+JAUT8XVT7urxhaDzbxSSIROc79epESROtA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-particles-attract": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-attract/-/tsparticles-interaction-particles-attract-2.12.0.tgz", + "integrity": "sha512-Hl8qwuwF9aLq3FOkAW+Zomu7Gb8IKs6Y3tFQUQScDmrrSCaeRt2EGklAiwgxwgntmqzL7hbMWNx06CHHcUQKdQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-particles-collisions": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-collisions/-/tsparticles-interaction-particles-collisions-2.12.0.tgz", + "integrity": "sha512-Se9nPWlyPxdsnHgR6ap4YUImAu3W5MeGKJaQMiQpm1vW8lSMOUejI1n1ioIaQth9weKGKnD9rvcNn76sFlzGBA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-particles-links": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-links/-/tsparticles-interaction-particles-links-2.12.0.tgz", + "integrity": "sha512-e7I8gRs4rmKfcsHONXMkJnymRWpxHmeaJIo4g2NaDRjIgeb2AcJSWKWZvrsoLnm7zvaf/cMQlbN6vQwCixYq3A==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-move-base": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-move-base/-/tsparticles-move-base-2.12.0.tgz", + "integrity": "sha512-oSogCDougIImq+iRtIFJD0YFArlorSi8IW3HD2gO3USkH+aNn3ZqZNTqp321uB08K34HpS263DTbhLHa/D6BWw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-move-parallax": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-move-parallax/-/tsparticles-move-parallax-2.12.0.tgz", + "integrity": "sha512-58CYXaX8Ih5rNtYhpnH0YwU4Ks7gVZMREGUJtmjhuYN+OFr9FVdF3oDIJ9N6gY5a5AnAKz8f5j5qpucoPRcYrQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-particles.js": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-particles.js/-/tsparticles-particles.js-2.12.0.tgz", + "integrity": "sha512-LyOuvYdhbUScmA4iDgV3LxA0HzY1DnOwQUy3NrPYO393S2YwdDjdwMod6Btq7EBUjg9FVIh+sZRizgV5elV2dg==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-plugin-easing-quad": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-plugin-easing-quad/-/tsparticles-plugin-easing-quad-2.12.0.tgz", + "integrity": "sha512-2mNqez5pydDewMIUWaUhY5cNQ80IUOYiujwG6qx9spTq1D6EEPLbRNAEL8/ecPdn2j1Um3iWSx6lo340rPkv4Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-circle": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-circle/-/tsparticles-shape-circle-2.12.0.tgz", + "integrity": "sha512-L6OngbAlbadG7b783x16ns3+SZ7i0SSB66M8xGa5/k+YcY7zm8zG0uPt1Hd+xQDR2aNA3RngVM10O23/Lwk65Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-image": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-image/-/tsparticles-shape-image-2.12.0.tgz", + "integrity": "sha512-iCkSdUVa40DxhkkYjYuYHr9MJGVw+QnQuN5UC+e/yBgJQY+1tQL8UH0+YU/h0GHTzh5Sm+y+g51gOFxHt1dj7Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-line": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-line/-/tsparticles-shape-line-2.12.0.tgz", + "integrity": "sha512-RcpKmmpKlk+R8mM5wA2v64Lv1jvXtU4SrBDv3vbdRodKbKaWGGzymzav1Q0hYyDyUZgplEK/a5ZwrfrOwmgYGA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-polygon": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-polygon/-/tsparticles-shape-polygon-2.12.0.tgz", + "integrity": "sha512-5YEy7HVMt1Obxd/jnlsjajchAlYMr9eRZWN+lSjcFSH6Ibra7h59YuJVnwxOxAobpijGxsNiBX0PuGQnB47pmA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-square": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-square/-/tsparticles-shape-square-2.12.0.tgz", + "integrity": "sha512-33vfajHqmlODKaUzyPI/aVhnAOT09V7nfEPNl8DD0cfiNikEuPkbFqgJezJuE55ebtVo7BZPDA9o7GYbWxQNuw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-star": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-star/-/tsparticles-shape-star-2.12.0.tgz", + "integrity": "sha512-4sfG/BBqm2qBnPLASl2L5aBfCx86cmZLXeh49Un+TIR1F5Qh4XUFsahgVOG0vkZQa+rOsZPEH04xY5feWmj90g==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-text": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-text/-/tsparticles-shape-text-2.12.0.tgz", + "integrity": "sha512-v2/FCA+hyTbDqp2ymFOe97h/NFb2eezECMrdirHWew3E3qlvj9S/xBibjbpZva2gnXcasBwxn0+LxKbgGdP0rA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-slim": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-slim/-/tsparticles-slim-2.12.0.tgz", + "integrity": "sha512-27w9aGAAAPKHvP4LHzWFpyqu7wKyulayyaZ/L6Tuuejy4KP4BBEB4rY5GG91yvAPsLtr6rwWAn3yS+uxnBDpkA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-basic": "^2.12.0", + "tsparticles-engine": "^2.12.0", + "tsparticles-interaction-external-attract": "^2.12.0", + "tsparticles-interaction-external-bounce": "^2.12.0", + "tsparticles-interaction-external-bubble": "^2.12.0", + "tsparticles-interaction-external-connect": "^2.12.0", + "tsparticles-interaction-external-grab": "^2.12.0", + "tsparticles-interaction-external-pause": "^2.12.0", + "tsparticles-interaction-external-push": "^2.12.0", + "tsparticles-interaction-external-remove": "^2.12.0", + "tsparticles-interaction-external-repulse": "^2.12.0", + "tsparticles-interaction-external-slow": "^2.12.0", + "tsparticles-interaction-particles-attract": "^2.12.0", + "tsparticles-interaction-particles-collisions": "^2.12.0", + "tsparticles-interaction-particles-links": "^2.12.0", + "tsparticles-move-base": "^2.12.0", + "tsparticles-move-parallax": "^2.12.0", + "tsparticles-particles.js": "^2.12.0", + "tsparticles-plugin-easing-quad": "^2.12.0", + "tsparticles-shape-circle": "^2.12.0", + "tsparticles-shape-image": "^2.12.0", + "tsparticles-shape-line": "^2.12.0", + "tsparticles-shape-polygon": "^2.12.0", + "tsparticles-shape-square": "^2.12.0", + "tsparticles-shape-star": "^2.12.0", + "tsparticles-shape-text": "^2.12.0", + "tsparticles-updater-color": "^2.12.0", + "tsparticles-updater-life": "^2.12.0", + "tsparticles-updater-opacity": "^2.12.0", + "tsparticles-updater-out-modes": "^2.12.0", + "tsparticles-updater-rotate": "^2.12.0", + "tsparticles-updater-size": "^2.12.0", + "tsparticles-updater-stroke-color": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-color": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-color/-/tsparticles-updater-color-2.12.0.tgz", + "integrity": "sha512-KcG3a8zd0f8CTiOrylXGChBrjhKcchvDJjx9sp5qpwQK61JlNojNCU35xoaSk2eEHeOvFjh0o3CXWUmYPUcBTQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-life": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-life/-/tsparticles-updater-life-2.12.0.tgz", + "integrity": "sha512-J7RWGHAZkowBHpcLpmjKsxwnZZJ94oGEL2w+wvW1/+ZLmAiFFF6UgU0rHMC5CbHJT4IPx9cbkYMEHsBkcRJ0Bw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-opacity": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-opacity/-/tsparticles-updater-opacity-2.12.0.tgz", + "integrity": "sha512-YUjMsgHdaYi4HN89LLogboYcCi1o9VGo21upoqxq19yRy0hRCtx2NhH22iHF/i5WrX6jqshN0iuiiNefC53CsA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-out-modes": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-out-modes/-/tsparticles-updater-out-modes-2.12.0.tgz", + "integrity": "sha512-owBp4Gk0JNlSrmp12XVEeBroDhLZU+Uq3szbWlHGSfcR88W4c/0bt0FiH5bHUqORIkw+m8O56hCjbqwj69kpOQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-rotate": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-rotate/-/tsparticles-updater-rotate-2.12.0.tgz", + "integrity": "sha512-waOFlGFmEZOzsQg4C4VSejNVXGf4dMf3fsnQrEROASGf1FCd8B6WcZau7JtXSTFw0OUGuk8UGz36ETWN72DkCw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-size": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-size/-/tsparticles-updater-size-2.12.0.tgz", + "integrity": "sha512-B0yRdEDd/qZXCGDL/ussHfx5YJ9UhTqNvmS5X2rR2hiZhBAE2fmsXLeWkdtF2QusjPeEqFDxrkGiLOsh6poqRA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-stroke-color": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-stroke-color/-/tsparticles-updater-stroke-color-2.12.0.tgz", + "integrity": "sha512-MPou1ZDxsuVq6SN1fbX+aI5yrs6FyP2iPCqqttpNbWyL+R6fik1rL0ab/x02B57liDXqGKYomIbBQVP3zUTW1A==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.4.tgz", + "integrity": "sha512-suZXgDVT8lRNhKmxdkwOsR0oyUi8is7mtqI18qW97JLoyorEbE9B2Sb4Ws/mR/+0AgA/JUtsv1ytlRSH3/pDIA==", + "dependencies": { + "@vue/compiler-dom": "3.4.4", + "@vue/compiler-sfc": "3.4.4", + "@vue/runtime-dom": "3.4.4", + "@vue/server-renderer": "3.4.4", + "@vue/shared": "3.4.4" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-axios": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/vue-axios/-/vue-axios-3.5.2.tgz", + "integrity": "sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==", + "peerDependencies": { + "axios": "*", + "vue": "^3.0.0 || ^2.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", + "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", + "dev": true, + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/sfj-vue3/package.json b/sfj-vue3/package.json new file mode 100644 index 0000000..78f5bd5 --- /dev/null +++ b/sfj-vue3/package.json @@ -0,0 +1,35 @@ +{ + "name": "vue_project3", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build --force" + }, + "dependencies": { + "aos": "^2.3.4", + "axios": "^1.6.5", + "element-plus": "^2.5.1", + "particles.vue3": "^2.12.0", + "tsparticles": "^3.0.3", + "tsparticles-slim": "^2.12.0", + "vue": "^3.3.11", + "vue-axios": "^3.5.2", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/aos": "^3.0.7", + "@types/node": "^18.19.3", + "@vitejs/plugin-vue": "^4.5.2", + "@vue/tsconfig": "^0.5.0", + "npm-run-all2": "^6.1.1", + "typescript": "~5.3.0", + "vite": "^5.0.10", + "vue-tsc": "^1.8.25" + } +} diff --git a/sfj-vue3/public/favicon.ico b/sfj-vue3/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/sfj-vue3/public/favicon.ico differ diff --git a/sfj-vue3/src/App.vue b/sfj-vue3/src/App.vue new file mode 100644 index 0000000..ef225f6 --- /dev/null +++ b/sfj-vue3/src/App.vue @@ -0,0 +1,25 @@ + + + + + + diff --git a/sfj-vue3/src/api/data.ts b/sfj-vue3/src/api/data.ts new file mode 100644 index 0000000..0e94ab4 --- /dev/null +++ b/sfj-vue3/src/api/data.ts @@ -0,0 +1,103 @@ +//定义一个接口用于限制第二页面的数据 +export interface data { + id: number; + url: string; + title: string; + data1:string; + data2:string; + data3:string; +} + +import anquanmao from '../assets/image/anquanmao.jpg' +import banyi from '../assets/image/banyi.jpg' +import duanxiu from '../assets/image/duanxiu.jpg' +import facesb from '../assets/image/facesb.png' +import fall from '../assets/image/fall.jpg' +import fanguangyi from '../assets/image/fanguangyi.jpg' +import fight from '../assets/image/fight.jpg' +import mask from '../assets/image/mask.jpg' +import sleep from '../assets/image/sleep.jpg' +import smoke from '../assets/image/smoke.jpg' +import tuogang from '../assets/image/tuogang.jpg' +import yanwu from '../assets/image/yanwu.jpg' +import zhuapai from '../assets/image/zhuapai.jpg' +import yiliu from '../assets/image/yiliu.jpg' +import weiting from '../assets/image/weiting.jpg' +import zhandao from '../assets/image/zhandao.jpg' +import redlight from '../assets/image/redlight.jpg' +import helmet from '../assets/image/helmet.jpg' +import chepai from '../assets/image/chepai.jpg' +import trafficbz from '../assets/image/trafficbz.jpg' +import pilao from '../assets/image/pilao.jpg' +import yongdu from '../assets/image/yongdu.jpg' +import chedaoxian from '../assets/image/chedaoxian.jpg' +import gongfu from '../assets/image/gongfu.jpg' +import gaokongpw from '../assets/image/gaokongpw.jpg' +import miehuoqi from '../assets/image/miehuoqi.jpg' +import fire from '../assets/image/fire.jpg' +import bike from '../assets/image/e-bike.jpg' +import climb from '../assets/image/climb.jpg' +import playphone from '../assets/image/playphone.jpg' +import gather from '../assets/image/gather.jpg' +import keliu from '../assets/image/keliu.jpg' +import midu from '../assets/image/midu.jpg' +import paihuai from '../assets/image/paihuai.jpg' +import phone from '../assets/image/phone.jpg' + +let data_list:Array = [ + {id:1,url:anquanmao,title:'安全帽识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:2,url:banyi,title:'物品搬移',data1:'建筑地产',data2:'智慧银行',data3:'建筑地产'}, + {id:3,url:duanxiu,title:'短袖短裤识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:4,url:facesb,title:'人脸识别',data1:'建筑地产',data2:'智慧园区',data3:'智慧银行'}, + {id:5,url:fall,title:'摔倒检测',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:6,url:fanguangyi,title:'反光衣识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:7,url:fight,title:'打架识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:8,url:mask,title:'戴口罩识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:9,url:sleep,title:'睡岗识别',data1:'建筑地产',data2:'智慧园区',data3:'建筑地产'}, + {id:10,url:smoke,title:'抽烟识别',data1:'建筑地产',data2:'智慧园区',data3:'智慧银行'}, + {id:11,url:tuogang,title:'脱岗检测',data1:'建筑地产',data2:'智慧交通',data3:'智慧银行'}, + {id:12,url:yanwu,title:'烟雾识别',data1:'建筑地产',data2:'智慧园区',data3:'智慧零售'}, + {id:13,url:zhuapai,title:'人脸抓拍',data1:'建筑地产',data2:'智慧园区',data3:'智慧银行'}, + {id:14,url:yiliu,title:'物品遗留',data1:'建筑地产',data2:'智慧银行',data3:'建筑地产'}, + {id:15,url:weiting,title:'车辆违停识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:16,url:zhandao,title:'机动车占道识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:17,url:redlight,title:'行人闯红灯识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:18,url:helmet,title:'电动车头盔识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:19,url:chepai,title:'车牌识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:20,url:mask,title:'流量和方向异常检测',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:21,url:redlight,title:'交通灯识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:22,url:trafficbz,title:'交通标志识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:23,url:pilao,title:'人员疲劳检测',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:24,url:yongdu,title:'交通拥堵识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:25,url:chedaoxian,title:'车道线',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:26,url:tuogang,title:'离岗识别',data1:'建筑地产',data2:'智慧交通',data3:'智慧银行'}, + {id:27,url:gongfu,title:'工服识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:28,url:gaokongpw,title:'高空抛物识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:29,url:fire,title:'火焰识别',data1:'智慧园区',data2:'智慧零售',data3:'智慧银行'}, + {id:30,url:bike,title:'电梯间电动车识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:31,url:climb,title:'攀爬识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:32,url:playphone,title:'玩手机检测',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:33,url:smoke,title:'入侵检测',data1:'智慧园区',data2:'智慧零售',data3:'智慧园区'}, + {id:34,url:gather,title:'聚集发散检测',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:35,url:miehuoqi,title:'灭火器识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:36,url:gather,title:'聚众检测',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:37,url:keliu,title:'客流特征识别',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:38,url:midu,title:'客流密度统计',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:39,url:keliu,title:'客流统计',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:40,url:facesb,title:'人员热力图',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:41,url:fall,title:'跌倒检测',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:42,url:fight,title:'打架、剧烈运动',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:43,url:fight,title:'人员尾随识别',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:44,url:mask,title:'间距异常',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:45,url:sleep,title:'堵截识别',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:46,url:smoke,title:'区域入侵、离开',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:47,url:keliu,title:'人数统计',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:48,url:gather,title:'区域人数统计',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:49,url:gather,title:'人员聚集',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:50,url:gather,title:'多人侦测',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:51,url:paihuai,title:'徘徊检测',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:52,url:phone,title:'打电话检测',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:53,url:fall,title:'表情识别',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, +] + +export {data_list} \ No newline at end of file diff --git a/sfj-vue3/src/api/interface.ts b/sfj-vue3/src/api/interface.ts new file mode 100644 index 0000000..d877f1d --- /dev/null +++ b/sfj-vue3/src/api/interface.ts @@ -0,0 +1,47 @@ +//算法类选择 +export interface Item { + name: string; + url: string; + selected: boolean; +} + +//数据库获得数据 +export interface alList { + algorithmFields: string + algorithmUserCases: string + algorithm_description: string + algorithm_id: number + algorithm_name: string + fieldList:fieldList[] + fieldStr: string + useList:useList[] + userStr: string + length: number +} + +interface alMes { + algorithm_name:string, + fieldList:fieldList[], + page:number, + pagesize:number, + count:number +} + +interface fieldList{ + fieldname:string +} + +interface useList { + usename: string +} + +export class MyClass{ + select:alMes={ + algorithm_name:'', + fieldList:[], + page:1, + pagesize:12, + count:0 + } + list:alList[]=[] +} \ No newline at end of file diff --git a/sfj-vue3/src/api/uesr.ts b/sfj-vue3/src/api/uesr.ts new file mode 100644 index 0000000..66c07f3 --- /dev/null +++ b/sfj-vue3/src/api/uesr.ts @@ -0,0 +1,43 @@ +import { servicesVersion } from "typescript"; +import service from "@/utils/axios"; + +//登录接口 +interface loginData{ + username:string, + password:string +} +export function login(data:any){ + return service({ + url:"/api/auth/login", + method:"post", + data + }) +} +export function logout(){ + return service({ + url:"/api/auth/logout", + method:"get", + }) +} +export function authorize(){ + return service({ + url:"/api/user/me", + method:"get" + }) +} + +export function getAlgorithemList(){ + + return service({ + url:"", + method:"get" + }) +} +//查询所有信息接口 +export function getAllAlgorithm(){ + return service({ + url:"/api/algorithm/findall", + method:"get" + }) +} + diff --git a/sfj-vue3/src/assets/1-1.png b/sfj-vue3/src/assets/1-1.png new file mode 100644 index 0000000..7837d48 Binary files /dev/null and b/sfj-vue3/src/assets/1-1.png differ diff --git a/sfj-vue3/src/assets/1-2.png b/sfj-vue3/src/assets/1-2.png new file mode 100644 index 0000000..c2451be Binary files /dev/null and b/sfj-vue3/src/assets/1-2.png differ diff --git a/sfj-vue3/src/assets/1-3.png b/sfj-vue3/src/assets/1-3.png new file mode 100644 index 0000000..7df5e12 Binary files /dev/null and b/sfj-vue3/src/assets/1-3.png differ diff --git a/sfj-vue3/src/assets/1-4.png b/sfj-vue3/src/assets/1-4.png new file mode 100644 index 0000000..1cbfb79 Binary files /dev/null and b/sfj-vue3/src/assets/1-4.png differ diff --git a/sfj-vue3/src/assets/1-5.png b/sfj-vue3/src/assets/1-5.png new file mode 100644 index 0000000..ae42e43 Binary files /dev/null and b/sfj-vue3/src/assets/1-5.png differ diff --git a/sfj-vue3/src/assets/1-6.png b/sfj-vue3/src/assets/1-6.png new file mode 100644 index 0000000..df9ca26 Binary files /dev/null and b/sfj-vue3/src/assets/1-6.png differ diff --git a/sfj-vue3/src/assets/1.png b/sfj-vue3/src/assets/1.png new file mode 100644 index 0000000..987a7bd Binary files /dev/null and b/sfj-vue3/src/assets/1.png differ diff --git a/sfj-vue3/src/assets/11.jpg b/sfj-vue3/src/assets/11.jpg new file mode 100644 index 0000000..30f8dc4 Binary files /dev/null and b/sfj-vue3/src/assets/11.jpg differ diff --git a/sfj-vue3/src/assets/2.png b/sfj-vue3/src/assets/2.png new file mode 100644 index 0000000..47e2dcf Binary files /dev/null and b/sfj-vue3/src/assets/2.png differ diff --git a/sfj-vue3/src/assets/bankbg.jpg b/sfj-vue3/src/assets/bankbg.jpg new file mode 100644 index 0000000..5ba0888 Binary files /dev/null and b/sfj-vue3/src/assets/bankbg.jpg differ diff --git a/sfj-vue3/src/assets/bg.jpg b/sfj-vue3/src/assets/bg.jpg new file mode 100644 index 0000000..27e7995 Binary files /dev/null and b/sfj-vue3/src/assets/bg.jpg differ diff --git a/sfj-vue3/src/assets/bg3.jpg b/sfj-vue3/src/assets/bg3.jpg new file mode 100644 index 0000000..20cb48f Binary files /dev/null and b/sfj-vue3/src/assets/bg3.jpg differ diff --git a/sfj-vue3/src/assets/campusBg.jpg b/sfj-vue3/src/assets/campusBg.jpg new file mode 100644 index 0000000..be2f5dd Binary files /dev/null and b/sfj-vue3/src/assets/campusBg.jpg differ diff --git a/sfj-vue3/src/assets/dcbg.jpg b/sfj-vue3/src/assets/dcbg.jpg new file mode 100644 index 0000000..c669417 Binary files /dev/null and b/sfj-vue3/src/assets/dcbg.jpg differ diff --git a/sfj-vue3/src/assets/image/anquanmao.jpg b/sfj-vue3/src/assets/image/anquanmao.jpg new file mode 100644 index 0000000..ada2366 Binary files /dev/null and b/sfj-vue3/src/assets/image/anquanmao.jpg differ diff --git a/sfj-vue3/src/assets/image/banyi.jpg b/sfj-vue3/src/assets/image/banyi.jpg new file mode 100644 index 0000000..9621bf7 Binary files /dev/null and b/sfj-vue3/src/assets/image/banyi.jpg differ diff --git a/sfj-vue3/src/assets/image/chedaoxian.jpg b/sfj-vue3/src/assets/image/chedaoxian.jpg new file mode 100644 index 0000000..e71076c Binary files /dev/null and b/sfj-vue3/src/assets/image/chedaoxian.jpg differ diff --git a/sfj-vue3/src/assets/image/chepai.jpg b/sfj-vue3/src/assets/image/chepai.jpg new file mode 100644 index 0000000..3674a68 Binary files /dev/null and b/sfj-vue3/src/assets/image/chepai.jpg differ diff --git a/sfj-vue3/src/assets/image/climb.jpg b/sfj-vue3/src/assets/image/climb.jpg new file mode 100644 index 0000000..ed6a2d5 Binary files /dev/null and b/sfj-vue3/src/assets/image/climb.jpg differ diff --git a/sfj-vue3/src/assets/image/duanxiu.jpg b/sfj-vue3/src/assets/image/duanxiu.jpg new file mode 100644 index 0000000..d429452 Binary files /dev/null and b/sfj-vue3/src/assets/image/duanxiu.jpg differ diff --git a/sfj-vue3/src/assets/image/e-bike.jpg b/sfj-vue3/src/assets/image/e-bike.jpg new file mode 100644 index 0000000..f991275 Binary files /dev/null and b/sfj-vue3/src/assets/image/e-bike.jpg differ diff --git a/sfj-vue3/src/assets/image/facesb.png b/sfj-vue3/src/assets/image/facesb.png new file mode 100644 index 0000000..3ad63f1 Binary files /dev/null and b/sfj-vue3/src/assets/image/facesb.png differ diff --git a/sfj-vue3/src/assets/image/fall.jpg b/sfj-vue3/src/assets/image/fall.jpg new file mode 100644 index 0000000..e1d6d7d Binary files /dev/null and b/sfj-vue3/src/assets/image/fall.jpg differ diff --git a/sfj-vue3/src/assets/image/fanguangyi.jpg b/sfj-vue3/src/assets/image/fanguangyi.jpg new file mode 100644 index 0000000..14d9b3f Binary files /dev/null and b/sfj-vue3/src/assets/image/fanguangyi.jpg differ diff --git a/sfj-vue3/src/assets/image/fight.jpg b/sfj-vue3/src/assets/image/fight.jpg new file mode 100644 index 0000000..f146a98 Binary files /dev/null and b/sfj-vue3/src/assets/image/fight.jpg differ diff --git a/sfj-vue3/src/assets/image/fire.jpg b/sfj-vue3/src/assets/image/fire.jpg new file mode 100644 index 0000000..26dea66 Binary files /dev/null and b/sfj-vue3/src/assets/image/fire.jpg differ diff --git a/sfj-vue3/src/assets/image/gaokongpw.jpg b/sfj-vue3/src/assets/image/gaokongpw.jpg new file mode 100644 index 0000000..8c8e43d Binary files /dev/null and b/sfj-vue3/src/assets/image/gaokongpw.jpg differ diff --git a/sfj-vue3/src/assets/image/gather.jpg b/sfj-vue3/src/assets/image/gather.jpg new file mode 100644 index 0000000..0f904e1 Binary files /dev/null and b/sfj-vue3/src/assets/image/gather.jpg differ diff --git a/sfj-vue3/src/assets/image/gongfu.jpg b/sfj-vue3/src/assets/image/gongfu.jpg new file mode 100644 index 0000000..7162c5c Binary files /dev/null and b/sfj-vue3/src/assets/image/gongfu.jpg differ diff --git a/sfj-vue3/src/assets/image/helmet.jpg b/sfj-vue3/src/assets/image/helmet.jpg new file mode 100644 index 0000000..9326a28 Binary files /dev/null and b/sfj-vue3/src/assets/image/helmet.jpg differ diff --git a/sfj-vue3/src/assets/image/icon.png b/sfj-vue3/src/assets/image/icon.png new file mode 100644 index 0000000..42641f5 Binary files /dev/null and b/sfj-vue3/src/assets/image/icon.png differ diff --git a/sfj-vue3/src/assets/image/keliu.jpg b/sfj-vue3/src/assets/image/keliu.jpg new file mode 100644 index 0000000..2a7dce0 Binary files /dev/null and b/sfj-vue3/src/assets/image/keliu.jpg differ diff --git a/sfj-vue3/src/assets/image/llyfangx.jpg b/sfj-vue3/src/assets/image/llyfangx.jpg new file mode 100644 index 0000000..b24529d Binary files /dev/null and b/sfj-vue3/src/assets/image/llyfangx.jpg differ diff --git a/sfj-vue3/src/assets/image/mask.jpg b/sfj-vue3/src/assets/image/mask.jpg new file mode 100644 index 0000000..a342734 Binary files /dev/null and b/sfj-vue3/src/assets/image/mask.jpg differ diff --git a/sfj-vue3/src/assets/image/midu.jpg b/sfj-vue3/src/assets/image/midu.jpg new file mode 100644 index 0000000..99b9e95 Binary files /dev/null and b/sfj-vue3/src/assets/image/midu.jpg differ diff --git a/sfj-vue3/src/assets/image/miehuoqi.jpg b/sfj-vue3/src/assets/image/miehuoqi.jpg new file mode 100644 index 0000000..47e596f Binary files /dev/null and b/sfj-vue3/src/assets/image/miehuoqi.jpg differ diff --git a/sfj-vue3/src/assets/image/paihuai.jpg b/sfj-vue3/src/assets/image/paihuai.jpg new file mode 100644 index 0000000..8ae1ae3 Binary files /dev/null and b/sfj-vue3/src/assets/image/paihuai.jpg differ diff --git a/sfj-vue3/src/assets/image/phone.jpg b/sfj-vue3/src/assets/image/phone.jpg new file mode 100644 index 0000000..ee826db Binary files /dev/null and b/sfj-vue3/src/assets/image/phone.jpg differ diff --git a/sfj-vue3/src/assets/image/pilao.jpg b/sfj-vue3/src/assets/image/pilao.jpg new file mode 100644 index 0000000..c07da8b Binary files /dev/null and b/sfj-vue3/src/assets/image/pilao.jpg differ diff --git a/sfj-vue3/src/assets/image/playphone.jpg b/sfj-vue3/src/assets/image/playphone.jpg new file mode 100644 index 0000000..67c7430 Binary files /dev/null and b/sfj-vue3/src/assets/image/playphone.jpg differ diff --git a/sfj-vue3/src/assets/image/redlight.jpg b/sfj-vue3/src/assets/image/redlight.jpg new file mode 100644 index 0000000..7593cf1 Binary files /dev/null and b/sfj-vue3/src/assets/image/redlight.jpg differ diff --git a/sfj-vue3/src/assets/image/safe.jpg b/sfj-vue3/src/assets/image/safe.jpg new file mode 100644 index 0000000..e3cbafb Binary files /dev/null and b/sfj-vue3/src/assets/image/safe.jpg differ diff --git a/sfj-vue3/src/assets/image/sleep.jpg b/sfj-vue3/src/assets/image/sleep.jpg new file mode 100644 index 0000000..1a9c69f Binary files /dev/null and b/sfj-vue3/src/assets/image/sleep.jpg differ diff --git a/sfj-vue3/src/assets/image/smoke.jpg b/sfj-vue3/src/assets/image/smoke.jpg new file mode 100644 index 0000000..cc924e4 Binary files /dev/null and b/sfj-vue3/src/assets/image/smoke.jpg differ diff --git a/sfj-vue3/src/assets/image/trafficbz.jpg b/sfj-vue3/src/assets/image/trafficbz.jpg new file mode 100644 index 0000000..f0dc272 Binary files /dev/null and b/sfj-vue3/src/assets/image/trafficbz.jpg differ diff --git a/sfj-vue3/src/assets/image/tuogang.jpg b/sfj-vue3/src/assets/image/tuogang.jpg new file mode 100644 index 0000000..ef05176 Binary files /dev/null and b/sfj-vue3/src/assets/image/tuogang.jpg differ diff --git a/sfj-vue3/src/assets/image/weiting.jpg b/sfj-vue3/src/assets/image/weiting.jpg new file mode 100644 index 0000000..0727652 Binary files /dev/null and b/sfj-vue3/src/assets/image/weiting.jpg differ diff --git a/sfj-vue3/src/assets/image/yanwu.jpg b/sfj-vue3/src/assets/image/yanwu.jpg new file mode 100644 index 0000000..a1e16e8 Binary files /dev/null and b/sfj-vue3/src/assets/image/yanwu.jpg differ diff --git a/sfj-vue3/src/assets/image/yiliu.jpg b/sfj-vue3/src/assets/image/yiliu.jpg new file mode 100644 index 0000000..ebbf6c6 Binary files /dev/null and b/sfj-vue3/src/assets/image/yiliu.jpg differ diff --git a/sfj-vue3/src/assets/image/yongdu.jpg b/sfj-vue3/src/assets/image/yongdu.jpg new file mode 100644 index 0000000..e3e49d0 Binary files /dev/null and b/sfj-vue3/src/assets/image/yongdu.jpg differ diff --git a/sfj-vue3/src/assets/image/zhandao.jpg b/sfj-vue3/src/assets/image/zhandao.jpg new file mode 100644 index 0000000..b24529d Binary files /dev/null and b/sfj-vue3/src/assets/image/zhandao.jpg differ diff --git a/sfj-vue3/src/assets/image/zhuapai.jpg b/sfj-vue3/src/assets/image/zhuapai.jpg new file mode 100644 index 0000000..e3f2576 Binary files /dev/null and b/sfj-vue3/src/assets/image/zhuapai.jpg differ diff --git a/sfj-vue3/src/assets/jtbg.jpg b/sfj-vue3/src/assets/jtbg.jpg new file mode 100644 index 0000000..85e7a37 Binary files /dev/null and b/sfj-vue3/src/assets/jtbg.jpg differ diff --git a/sfj-vue3/src/assets/logo.png b/sfj-vue3/src/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/sfj-vue3/src/assets/logo.png differ diff --git a/sfj-vue3/src/assets/lsbg.jpg b/sfj-vue3/src/assets/lsbg.jpg new file mode 100644 index 0000000..3f14ae2 Binary files /dev/null and b/sfj-vue3/src/assets/lsbg.jpg differ diff --git a/sfj-vue3/src/components/detail.vue b/sfj-vue3/src/components/detail.vue new file mode 100644 index 0000000..a20adbf --- /dev/null +++ b/sfj-vue3/src/components/detail.vue @@ -0,0 +1,340 @@ + + + + + \ No newline at end of file diff --git a/sfj-vue3/src/components/home.vue b/sfj-vue3/src/components/home.vue new file mode 100644 index 0000000..20d1ed0 --- /dev/null +++ b/sfj-vue3/src/components/home.vue @@ -0,0 +1,453 @@ + + + + + \ No newline at end of file diff --git a/sfj-vue3/src/main.ts b/sfj-vue3/src/main.ts new file mode 100644 index 0000000..52c7dac --- /dev/null +++ b/sfj-vue3/src/main.ts @@ -0,0 +1,18 @@ +// import './assets/main.css' + +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' +import Particles from 'particles.vue3' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' + +const app = createApp(App) +app.use(Particles) +app.use(router) +app.use(ElementPlus) +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) + } +app.mount('#app') diff --git a/sfj-vue3/src/pages/anquan.vue b/sfj-vue3/src/pages/anquan.vue new file mode 100644 index 0000000..ad9f063 --- /dev/null +++ b/sfj-vue3/src/pages/anquan.vue @@ -0,0 +1,366 @@ + + + + + \ No newline at end of file diff --git a/sfj-vue3/src/pages/gengduo.vue b/sfj-vue3/src/pages/gengduo.vue new file mode 100644 index 0000000..ecb7e1b --- /dev/null +++ b/sfj-vue3/src/pages/gengduo.vue @@ -0,0 +1,31 @@ + + + + + \ No newline at end of file diff --git a/sfj-vue3/src/router/index.ts b/sfj-vue3/src/router/index.ts new file mode 100644 index 0000000..ec2e0ab --- /dev/null +++ b/sfj-vue3/src/router/index.ts @@ -0,0 +1,30 @@ +import {createRouter,createWebHistory,createWebHashHistory} from 'vue-router' + +import Home from '@/components/home.vue' +import anquan from '@/pages/anquan.vue' +import gengduo from '@/pages/gengduo.vue' +import detail from '@/components/detail.vue' + +const router = createRouter({ + history:createWebHistory(), //路由器的工作模式(稍后讲解) + routes:[ //一个一个的路由规则 + { + name:'home', + path:'/', + component:Home, + + }, + { + name:'algorithm', + path:'/algorithm:need', + component:anquan, + }, + { + name:'detail', + path:'/detail:algorithm_name', + component:detail + } + ] + }) + + export default router \ No newline at end of file diff --git a/sfj-vue3/src/utils/axios.ts b/sfj-vue3/src/utils/axios.ts new file mode 100644 index 0000000..9eafb6d --- /dev/null +++ b/sfj-vue3/src/utils/axios.ts @@ -0,0 +1,37 @@ +import axios from 'axios' +// 创建一个 axios 实例 +const service = axios.create({ + baseURL:"http://192.168.2.107:8080", + timeout:5000, + headers:{ + 'Content-Type':'application/x-www-form-urlencoded;charset=utf-8' + }, + withCredentials:true + +}) + +// 请求拦截 +service.interceptors.request.use((config)=>{ + config.headers=config.headers || {} + if(localStorage.getItem('token')){ + config.headers.token=localStorage.getItem('token') || "" + } + return config +}) + +// 相应拦截 +service.interceptors.response.use((res) => { + + const status:number = res.data.status + if(status!=200){ + // console.log("dddd"); + // ElMessage.error(res.data.message) + // return Promise.reject(res.data) + + } + return res +},(err)=>{ + // ElMessage.error(err); +}) + +export default service \ No newline at end of file diff --git a/sfj-vue3/tsconfig.app.json b/sfj-vue3/tsconfig.app.json new file mode 100644 index 0000000..eb629bd --- /dev/null +++ b/sfj-vue3/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "noEmit": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + } +} diff --git a/sfj-vue3/tsconfig.json b/sfj-vue3/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/sfj-vue3/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/sfj-vue3/tsconfig.node.json b/sfj-vue3/tsconfig.node.json new file mode 100644 index 0000000..ff8fd31 --- /dev/null +++ b/sfj-vue3/tsconfig.node.json @@ -0,0 +1,17 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "noEmit": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"], + } +} diff --git a/sfj-vue3/vite.config.ts b/sfj-vue3/vite.config.ts new file mode 100644 index 0000000..fdd84d8 --- /dev/null +++ b/sfj-vue3/vite.config.ts @@ -0,0 +1,17 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import { tr } from 'element-plus/es/locales.mjs' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, +})