diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..c25925208 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +*/**/node_modules diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2cf042711..9a2af6430 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -2,9 +2,9 @@ name: Node.js CI on: push: - branches: [main, staging] + branches: [main, staging, "release/**"] pull_request: - branches: [main, staging] + branches: [main, staging, "release/**"] jobs: test: diff --git a/docker-compose.yml b/docker-compose.yml index 417b15002..8c948fcd0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,10 +19,12 @@ services: - DATABASE_URL=postgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch?connect_timeout=300 - PORT=3000 volumes: - - ./packages/hoppscotch-backend/:/usr/src/app + # Uncomment the line below when modifying code. Only applicable when using the "dev" target. + # - ./packages/hoppscotch-backend/:/usr/src/app - /usr/src/app/node_modules/ depends_on: - - hoppscotch-db + hoppscotch-db: + condition: service_healthy ports: - "3170:3000" @@ -60,12 +62,20 @@ services: # you are using an external postgres instance # This will be exposed at port 5432 hoppscotch-db: - image: postgres + image: postgres:15 ports: - "5432:5432" + user: postgres environment: + # The default user defined by the docker image + POSTGRES_USER: postgres # NOTE: Please UPDATE THIS PASSWORD! POSTGRES_PASSWORD: testpass POSTGRES_DB: hoppscotch + healthcheck: + test: ["CMD-SHELL", "sh -c 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'"] + interval: 5s + timeout: 5s + retries: 10 diff --git a/packages/hoppscotch-backend/package.json b/packages/hoppscotch-backend/package.json index eaf675eaf..e0ad0802a 100644 --- a/packages/hoppscotch-backend/package.json +++ b/packages/hoppscotch-backend/package.json @@ -1,6 +1,6 @@ { "name": "hoppscotch-backend", - "version": "2023.4.7", + "version": "2023.4.8", "description": "", "author": "", "private": true, diff --git a/packages/hoppscotch-backend/src/team-environments/team-environments.service.spec.ts b/packages/hoppscotch-backend/src/team-environments/team-environments.service.spec.ts index 719e58007..254936460 100644 --- a/packages/hoppscotch-backend/src/team-environments/team-environments.service.spec.ts +++ b/packages/hoppscotch-backend/src/team-environments/team-environments.service.spec.ts @@ -306,8 +306,8 @@ describe('TeamEnvironmentsService', () => { ); mockPrisma.teamEnvironment.create.mockResolvedValueOnce({ - ...teamEnvironment, id: 'newid', + ...teamEnvironment, }); const result = await teamEnvironmentsService.createDuplicateEnvironment( @@ -337,8 +337,8 @@ describe('TeamEnvironmentsService', () => { ); mockPrisma.teamEnvironment.create.mockResolvedValueOnce({ - ...teamEnvironment, id: 'newid', + ...teamEnvironment, }); const result = await teamEnvironmentsService.createDuplicateEnvironment( diff --git a/packages/hoppscotch-common/locales/tw.json b/packages/hoppscotch-common/locales/tw.json index 6d58298c9..cce86a565 100644 --- a/packages/hoppscotch-common/locales/tw.json +++ b/packages/hoppscotch-common/locales/tw.json @@ -19,7 +19,7 @@ "edit": "編輯", "filter": "篩選回應", "go_back": "返回", - "go_forward": "Go forward", + "go_forward": "向前", "group_by": "分組方式", "label": "標籤", "learn_more": "瞭解更多", @@ -117,37 +117,37 @@ "username": "使用者名稱" }, "collection": { - "created": "組合已建立", - "different_parent": "Cannot reorder collection with different parent", - "edit": "編輯組合", - "invalid_name": "請提供有效的組合名稱", - "invalid_root_move": "Collection already in the root", - "moved": "Moved Successfully", - "my_collections": "我的組合", - "name": "我的新組合", - "name_length_insufficient": "組合名稱至少要有 3 個字元。", - "new": "建立組合", - "order_changed": "Collection Order Updated", - "renamed": "組合已重新命名", + "created": "集合已建立", + "different_parent": "無法為父集合不同的集合重新排序", + "edit": "編輯集合", + "invalid_name": "請提供有效的集合名稱", + "invalid_root_move": "集合已在根目錄", + "moved": "移動成功", + "my_collections": "我的集合", + "name": "我的新集合", + "name_length_insufficient": "集合名稱至少要有 3 個字元。", + "new": "建立集合", + "order_changed": "集合順序已更新", + "renamed": "集合已重新命名", "request_in_use": "請求正在使用中", "save_as": "另存為", - "select": "選擇一個組合", + "select": "選擇一個集合", "select_location": "選擇位置", "select_team": "選擇一個團隊", - "team_collections": "團隊組合" + "team_collections": "團隊集合" }, "confirm": { "exit_team": "您確定要離開此團隊嗎?", "logout": "您確定要登出嗎?", - "remove_collection": "您確定要永久刪除該組合嗎?", + "remove_collection": "您確定要永久刪除該集合嗎?", "remove_environment": "您確定要永久刪除該環境嗎?", "remove_folder": "您確定要永久刪除該資料夾嗎?", "remove_history": "您確定要永久刪除全部歷史記錄嗎?", "remove_request": "您確定要永久刪除該請求嗎?", "remove_team": "您確定要刪除該團隊嗎?", "remove_telemetry": "您確定要退出遙測服務嗎?", - "request_change": "您確定要捨棄當前請求嗎?未儲存的變更將遺失。", - "save_unsaved_tab": "Do you want to save changes made in this tab?", + "request_change": "您確定要捨棄目前的請求嗎?未儲存的變更將遺失。", + "save_unsaved_tab": "您要儲存在此分頁做出的改動嗎?", "sync": "您想從雲端恢復您的工作區嗎?這將丟棄您的本地進度。" }, "count": { @@ -160,13 +160,13 @@ }, "documentation": { "generate": "產生文件", - "generate_message": "匯入 Hoppscotch 組合以隨時隨地產生 API 文件。" + "generate_message": "匯入 Hoppscotch 集合以隨時隨地產生 API 文件。" }, "empty": { "authorization": "該請求沒有使用任何授權", "body": "該請求沒有任何請求主體", - "collection": "組合為空", - "collections": "組合為空", + "collection": "集合為空", + "collections": "集合為空", "documentation": "連線到 GraphQL 端點以檢視文件", "endpoint": "端點不能留空", "environments": "環境為空", @@ -209,7 +209,7 @@ "browser_support_sse": "此瀏覽器似乎不支援 SSE。", "check_console_details": "檢查控制台日誌以獲悉詳情", "curl_invalid_format": "cURL 格式不正確", - "danger_zone": "Danger zone", + "danger_zone": "危險地帶", "delete_account": "您的帳號目前為這些團隊的擁有者:", "delete_account_description": "您在刪除帳號前必須先將您自己從團隊中移除、轉移擁有權,或是刪除團隊。", "empty_req_name": "空請求名稱", @@ -277,38 +277,38 @@ "tests": "編寫測試指令碼以自動除錯。" }, "hide": { - "collection": "隱藏組合面板", + "collection": "隱藏集合面板", "more": "隱藏更多", "preview": "隱藏預覽", "sidebar": "隱藏側邊欄" }, "import": { - "collections": "匯入組合", + "collections": "匯入集合", "curl": "匯入 cURL", "failed": "匯入失敗", "from_gist": "從 Gist 匯入", "from_gist_description": "從 Gist 網址匯入", "from_insomnia": "從 Insomnia 匯入", - "from_insomnia_description": "從 Insomnia 組合匯入", + "from_insomnia_description": "從 Insomnia 集合匯入", "from_json": "從 Hoppscotch 匯入", - "from_json_description": "從 Hoppscotch 組合檔匯入", - "from_my_collections": "從我的組合匯入", - "from_my_collections_description": "從我的組合檔匯入", + "from_json_description": "從 Hoppscotch 集合檔匯入", + "from_my_collections": "從我的集合匯入", + "from_my_collections_description": "從我的集合檔匯入", "from_openapi": "從 OpenAPI 匯入", "from_openapi_description": "從 OpenAPI 規格檔 (YML/JSON) 匯入", "from_postman": "從 Postman 匯入", - "from_postman_description": "從 Postman 組合匯入", + "from_postman_description": "從 Postman 集合匯入", "from_url": "從網址匯入", "gist_url": "輸入 Gist 網址", "import_from_url_invalid_fetch": "無法從網址取得資料", - "import_from_url_invalid_file_format": "匯入組合時發生錯誤", + "import_from_url_invalid_file_format": "匯入集合時發生錯誤", "import_from_url_invalid_type": "不支援此類型。可接受的值為 'hoppscotch'、'openapi'、'postman'、'insomnia'", - "import_from_url_success": "已匯入組合", - "json_description": "從 Hoppscotch 組合 JSON 檔匯入組合", + "import_from_url_success": "已匯入集合", + "json_description": "從 Hoppscotch 集合 JSON 檔匯入集合", "title": "匯入" }, "layout": { - "collapse_collection": "隱藏或顯示組合", + "collapse_collection": "隱藏或顯示集合", "collapse_sidebar": "隱藏或顯示側邊欄", "column": "垂直版面", "name": "配置", @@ -316,8 +316,8 @@ "zen_mode": "專注模式" }, "modal": { - "close_unsaved_tab": "You have unsaved changes", - "collections": "組合", + "close_unsaved_tab": "您有未儲存的改動", + "collections": "集合", "confirm": "確認", "edit_request": "編輯請求", "import_export": "匯入/匯出" @@ -374,9 +374,9 @@ "email_verification_mail": "已將驗證信寄送至您的電子郵件地址。請點擊信中連結以驗證您的電子郵件地址。", "no_permission": "您沒有權限執行此操作。", "owner": "擁有者", - "owner_description": "擁有者可以新增、編輯和刪除請求、組合和團隊成員。", + "owner_description": "擁有者可以新增、編輯和刪除請求、集合和團隊成員。", "roles": "角色", - "roles_description": "角色用來控制對共用組合的存取權。", + "roles_description": "角色用來控制對共用集合的存取權。", "updated": "已更新個人檔案", "viewer": "檢視者", "viewer_description": "檢視者只能檢視和使用請求。" @@ -396,8 +396,8 @@ "text": "文字" }, "copy_link": "複製連結", - "different_collection": "Cannot reorder requests from different collections", - "duplicated": "Request duplicated", + "different_collection": "無法重新排列來自不同集合的請求", + "duplicated": "已複製請求", "duration": "持續時間", "enter_curl": "輸入 cURL", "generate_code": "產生程式碼", @@ -405,10 +405,10 @@ "header_list": "請求標頭列表", "invalid_name": "請提供請求名稱", "method": "方法", - "moved": "Request moved", + "moved": "已移動請求", "name": "請求名稱", "new": "新請求", - "order_changed": "Request Order Updated", + "order_changed": "已更新請求順序", "override": "覆寫", "override_help": "在標頭設置 Content-Type", "overriden": "已覆寫", @@ -432,7 +432,7 @@ "view_my_links": "檢視我的連結" }, "response": { - "audio": "Audio", + "audio": "音訊", "body": "回應本體", "filter_response_body": "篩選 JSON 回應本體 (使用 JSONPath 語法)", "headers": "回應標頭", @@ -446,7 +446,7 @@ "status": "狀態", "time": "時間", "title": "回應", - "video": "Video", + "video": "視訊", "waiting_for_connection": "等待連線", "xml": "XML" }, @@ -494,7 +494,7 @@ "short_codes_description": "我們為您打造的快捷碼。", "sidebar_on_left": "左側邊欄", "sync": "同步", - "sync_collections": "組合", + "sync_collections": "集合", "sync_description": "這些設定會同步到雲端。", "sync_environments": "環境", "sync_history": "歷史", @@ -551,7 +551,7 @@ "previous_method": "選擇上一個方法", "put_method": "選擇 PUT 方法", "reset_request": "重置請求", - "save_to_collections": "儲存到組合", + "save_to_collections": "儲存到集合", "send_request": "傳送請求", "title": "請求" }, @@ -570,7 +570,7 @@ }, "show": { "code": "顯示程式碼", - "collection": "顯示組合面板", + "collection": "顯示集合面板", "more": "顯示更多", "sidebar": "顯示側邊欄" }, @@ -639,9 +639,9 @@ "tab": { "authorization": "授權", "body": "請求本體", - "collections": "組合", + "collections": "集合", "documentation": "幫助文件", - "environments": "Environments", + "environments": "環境", "headers": "請求標頭", "history": "歷史記錄", "mqtt": "MQTT", @@ -666,7 +666,7 @@ "email_do_not_match": "電子信箱與您的帳號資料不一致。請聯絡您的團隊擁有者。", "exit": "退出團隊", "exit_disabled": "團隊擁有者無法退出團隊", - "invalid_coll_id": "Invalid collection ID", + "invalid_coll_id": "集合 ID 無效", "invalid_email_format": "電子信箱格式無效", "invalid_id": "團隊 ID 無效。請聯絡您的團隊擁有者。", "invalid_invite_link": "邀請連結無效", @@ -690,21 +690,21 @@ "member_removed": "使用者已移除", "member_role_updated": "使用者角色已更新", "members": "成員", - "more_members": "+{count} more", + "more_members": "還有 {count} 位", "name_length_insufficient": "團隊名稱至少為 6 個字元", "name_updated": "團隊名稱已更新", "new": "新團隊", "new_created": "已建立新團隊", "new_name": "我的新團隊", - "no_access": "您沒有編輯組合的許可權", + "no_access": "您沒有編輯集合的許可權", "no_invite_found": "未找到邀請。請聯絡您的團隊擁有者。", - "no_request_found": "Request not found.", + "no_request_found": "找不到請求。", "not_found": "找不到團隊。請聯絡您的團隊擁有者。", "not_valid_viewer": "您不是一個有效的檢視者。請聯絡您的團隊擁有者。", - "parent_coll_move": "Cannot move collection to a child collection", + "parent_coll_move": "無法將集合移動至子集合", "pending_invites": "待定邀請", "permissions": "許可權", - "same_target_destination": "Same target and destination", + "same_target_destination": "目標和目的地相同", "saved": "團隊已儲存", "select_a_team": "選擇團隊", "title": "團隊", @@ -734,9 +734,9 @@ "url": "網址" }, "workspace": { - "change": "Change workspace", - "personal": "My Workspace", - "team": "Team Workspace", - "title": "Workspaces" + "change": "切換工作區", + "personal": "我的工作區", + "team": "團隊工作區", + "title": "工作區" } } diff --git a/packages/hoppscotch-common/package.json b/packages/hoppscotch-common/package.json index b9b5f1c04..700043e71 100644 --- a/packages/hoppscotch-common/package.json +++ b/packages/hoppscotch-common/package.json @@ -1,7 +1,7 @@ { "name": "@hoppscotch/common", "private": true, - "version": "2023.4.7", + "version": "2023.4.8", "scripts": { "dev": "pnpm exec npm-run-all -p -l dev:*", "test": "vitest --run", diff --git a/packages/hoppscotch-common/public/badge.svg b/packages/hoppscotch-common/public/badge.svg new file mode 100644 index 000000000..2c4897b13 --- /dev/null +++ b/packages/hoppscotch-common/public/badge.svg @@ -0,0 +1 @@ +▶ Run in Hoppscotch diff --git a/packages/hoppscotch-common/src/components.d.ts b/packages/hoppscotch-common/src/components.d.ts index 86af05744..7ceddf987 100644 --- a/packages/hoppscotch-common/src/components.d.ts +++ b/packages/hoppscotch-common/src/components.d.ts @@ -7,6 +7,7 @@ export {} declare module "@vue/runtime-core" { export interface GlobalComponents { +<<<<<<< HEAD AppActionHandler: typeof import("./components/app/ActionHandler.vue")["default"] AppAnnouncement: typeof import("./components/app/Announcement.vue")["default"] AppDeveloperOptions: typeof import("./components/app/DeveloperOptions.vue")["default"] @@ -199,5 +200,158 @@ declare module "@vue/runtime-core" { Tippy: typeof import("vue-tippy")["Tippy"] WorkspaceCurrent: typeof import("./components/workspace/Current.vue")["default"] WorkspaceSelector: typeof import("./components/workspace/Selector.vue")["default"] +======= + AppActionHandler: typeof import('./components/app/ActionHandler.vue')['default'] + AppAnnouncement: typeof import('./components/app/Announcement.vue')['default'] + AppDeveloperOptions: typeof import('./components/app/DeveloperOptions.vue')['default'] + AppFooter: typeof import('./components/app/Footer.vue')['default'] + AppFuse: typeof import('./components/app/Fuse.vue')['default'] + AppGitHubStarButton: typeof import('./components/app/GitHubStarButton.vue')['default'] + AppHeader: typeof import('./components/app/Header.vue')['default'] + AppInterceptor: typeof import('./components/app/Interceptor.vue')['default'] + AppLogo: typeof import('./components/app/Logo.vue')['default'] + AppOptions: typeof import('./components/app/Options.vue')['default'] + AppPaneLayout: typeof import('./components/app/PaneLayout.vue')['default'] + AppPowerSearch: typeof import('./components/app/PowerSearch.vue')['default'] + AppPowerSearchEntry: typeof import('./components/app/PowerSearchEntry.vue')['default'] + AppShare: typeof import('./components/app/Share.vue')['default'] + AppShortcuts: typeof import('./components/app/Shortcuts.vue')['default'] + AppShortcutsEntry: typeof import('./components/app/ShortcutsEntry.vue')['default'] + AppShortcutsPrompt: typeof import('./components/app/ShortcutsPrompt.vue')['default'] + AppSidenav: typeof import('./components/app/Sidenav.vue')['default'] + AppSupport: typeof import('./components/app/Support.vue')['default'] + ButtonPrimary: typeof import('./../../hoppscotch-ui/src/components/button/Primary.vue')['default'] + ButtonSecondary: typeof import('./../../hoppscotch-ui/src/components/button/Secondary.vue')['default'] + Collections: typeof import('./components/collections/index.vue')['default'] + CollectionsAdd: typeof import('./components/collections/Add.vue')['default'] + CollectionsAddFolder: typeof import('./components/collections/AddFolder.vue')['default'] + CollectionsAddRequest: typeof import('./components/collections/AddRequest.vue')['default'] + CollectionsCollection: typeof import('./components/collections/Collection.vue')['default'] + CollectionsEdit: typeof import('./components/collections/Edit.vue')['default'] + CollectionsEditFolder: typeof import('./components/collections/EditFolder.vue')['default'] + CollectionsEditRequest: typeof import('./components/collections/EditRequest.vue')['default'] + CollectionsGraphql: typeof import('./components/collections/graphql/index.vue')['default'] + CollectionsGraphqlAdd: typeof import('./components/collections/graphql/Add.vue')['default'] + CollectionsGraphqlAddFolder: typeof import('./components/collections/graphql/AddFolder.vue')['default'] + CollectionsGraphqlAddRequest: typeof import('./components/collections/graphql/AddRequest.vue')['default'] + CollectionsGraphqlCollection: typeof import('./components/collections/graphql/Collection.vue')['default'] + CollectionsGraphqlEdit: typeof import('./components/collections/graphql/Edit.vue')['default'] + CollectionsGraphqlEditFolder: typeof import('./components/collections/graphql/EditFolder.vue')['default'] + CollectionsGraphqlEditRequest: typeof import('./components/collections/graphql/EditRequest.vue')['default'] + CollectionsGraphqlFolder: typeof import('./components/collections/graphql/Folder.vue')['default'] + CollectionsGraphqlImportExport: typeof import('./components/collections/graphql/ImportExport.vue')['default'] + CollectionsGraphqlRequest: typeof import('./components/collections/graphql/Request.vue')['default'] + CollectionsImportExport: typeof import('./components/collections/ImportExport.vue')['default'] + CollectionsMyCollections: typeof import('./components/collections/MyCollections.vue')['default'] + CollectionsRequest: typeof import('./components/collections/Request.vue')['default'] + CollectionsSaveRequest: typeof import('./components/collections/SaveRequest.vue')['default'] + CollectionsTeamCollections: typeof import('./components/collections/TeamCollections.vue')['default'] + Environments: typeof import('./components/environments/index.vue')['default'] + EnvironmentsImportExport: typeof import('./components/environments/ImportExport.vue')['default'] + EnvironmentsMy: typeof import('./components/environments/my/index.vue')['default'] + EnvironmentsMyDetails: typeof import('./components/environments/my/Details.vue')['default'] + EnvironmentsMyEnvironment: typeof import('./components/environments/my/Environment.vue')['default'] + EnvironmentsSelector: typeof import('./components/environments/Selector.vue')['default'] + EnvironmentsTeams: typeof import('./components/environments/teams/index.vue')['default'] + EnvironmentsTeamsDetails: typeof import('./components/environments/teams/Details.vue')['default'] + EnvironmentsTeamsEnvironment: typeof import('./components/environments/teams/Environment.vue')['default'] + FirebaseLogin: typeof import('./components/firebase/Login.vue')['default'] + FirebaseLogout: typeof import('./components/firebase/Logout.vue')['default'] + GraphqlAuthorization: typeof import('./components/graphql/Authorization.vue')['default'] + GraphqlField: typeof import('./components/graphql/Field.vue')['default'] + GraphqlRequest: typeof import('./components/graphql/Request.vue')['default'] + GraphqlRequestOptions: typeof import('./components/graphql/RequestOptions.vue')['default'] + GraphqlResponse: typeof import('./components/graphql/Response.vue')['default'] + GraphqlSidebar: typeof import('./components/graphql/Sidebar.vue')['default'] + GraphqlType: typeof import('./components/graphql/Type.vue')['default'] + GraphqlTypeLink: typeof import('./components/graphql/TypeLink.vue')['default'] + History: typeof import('./components/history/index.vue')['default'] + HistoryGraphqlCard: typeof import('./components/history/graphql/Card.vue')['default'] + HistoryRestCard: typeof import('./components/history/rest/Card.vue')['default'] + HttpAuthorization: typeof import('./components/http/Authorization.vue')['default'] + HttpAuthorizationApiKey: typeof import('./components/http/authorization/ApiKey.vue')['default'] + HttpAuthorizationBasic: typeof import('./components/http/authorization/Basic.vue')['default'] + HttpBody: typeof import('./components/http/Body.vue')['default'] + HttpBodyParameters: typeof import('./components/http/BodyParameters.vue')['default'] + HttpCodegenModal: typeof import('./components/http/CodegenModal.vue')['default'] + HttpHeaders: typeof import('./components/http/Headers.vue')['default'] + HttpImportCurl: typeof import('./components/http/ImportCurl.vue')['default'] + HttpOAuth2Authorization: typeof import('./components/http/OAuth2Authorization.vue')['default'] + HttpParameters: typeof import('./components/http/Parameters.vue')['default'] + HttpPreRequestScript: typeof import('./components/http/PreRequestScript.vue')['default'] + HttpRawBody: typeof import('./components/http/RawBody.vue')['default'] + HttpReqChangeConfirmModal: typeof import('./components/http/ReqChangeConfirmModal.vue')['default'] + HttpRequest: typeof import('./components/http/Request.vue')['default'] + HttpRequestOptions: typeof import('./components/http/RequestOptions.vue')['default'] + HttpRequestTab: typeof import('./components/http/RequestTab.vue')['default'] + HttpResponse: typeof import('./components/http/Response.vue')['default'] + HttpResponseMeta: typeof import('./components/http/ResponseMeta.vue')['default'] + HttpSidebar: typeof import('./components/http/Sidebar.vue')['default'] + HttpTestResult: typeof import('./components/http/TestResult.vue')['default'] + HttpTestResultEntry: typeof import('./components/http/TestResultEntry.vue')['default'] + HttpTestResultEnv: typeof import('./components/http/TestResultEnv.vue')['default'] + HttpTestResultReport: typeof import('./components/http/TestResultReport.vue')['default'] + HttpTests: typeof import('./components/http/Tests.vue')['default'] + HttpURLEncodedParams: typeof import('./components/http/URLEncodedParams.vue')['default'] + LensesHeadersRenderer: typeof import('./components/lenses/HeadersRenderer.vue')['default'] + LensesHeadersRendererEntry: typeof import('./components/lenses/HeadersRendererEntry.vue')['default'] + LensesRenderersAudioLensRenderer: typeof import('./components/lenses/renderers/AudioLensRenderer.vue')['default'] + LensesRenderersHTMLLensRenderer: typeof import('./components/lenses/renderers/HTMLLensRenderer.vue')['default'] + LensesRenderersImageLensRenderer: typeof import('./components/lenses/renderers/ImageLensRenderer.vue')['default'] + LensesRenderersJSONLensRenderer: typeof import('./components/lenses/renderers/JSONLensRenderer.vue')['default'] + LensesRenderersPDFLensRenderer: typeof import('./components/lenses/renderers/PDFLensRenderer.vue')['default'] + LensesRenderersRawLensRenderer: typeof import('./components/lenses/renderers/RawLensRenderer.vue')['default'] + LensesRenderersVideoLensRenderer: typeof import('./components/lenses/renderers/VideoLensRenderer.vue')['default'] + LensesRenderersXMLLensRenderer: typeof import('./components/lenses/renderers/XMLLensRenderer.vue')['default'] + LensesResponseBodyRenderer: typeof import('./components/lenses/ResponseBodyRenderer.vue')['default'] + ProfileShortcode: typeof import('./components/profile/Shortcode.vue')['default'] + ProfileShortcodes: typeof import('./components/profile/Shortcodes.vue')['default'] + ProfileUserDelete: typeof import('./components/profile/UserDelete.vue')['default'] + RealtimeCommunication: typeof import('./components/realtime/Communication.vue')['default'] + RealtimeConnectionConfig: typeof import('./components/realtime/ConnectionConfig.vue')['default'] + RealtimeLog: typeof import('./components/realtime/Log.vue')['default'] + RealtimeLogEntry: typeof import('./components/realtime/LogEntry.vue')['default'] + RealtimeSubscription: typeof import('./components/realtime/Subscription.vue')['default'] + SmartAccentModePicker: typeof import('./components/smart/AccentModePicker.vue')['default'] + SmartAnchor: typeof import('./../../hoppscotch-ui/src/components/smart/Anchor.vue')['default'] + SmartAutoComplete: typeof import('./../../hoppscotch-ui/src/components/smart/AutoComplete.vue')['default'] + SmartChangeLanguage: typeof import('./components/smart/ChangeLanguage.vue')['default'] + SmartCheckbox: typeof import('./../../hoppscotch-ui/src/components/smart/Checkbox.vue')['default'] + SmartColorModePicker: typeof import('./components/smart/ColorModePicker.vue')['default'] + SmartConfirmModal: typeof import('./../../hoppscotch-ui/src/components/smart/ConfirmModal.vue')['default'] + SmartEnvInput: typeof import('./components/smart/EnvInput.vue')['default'] + SmartExpand: typeof import('./../../hoppscotch-ui/src/components/smart/Expand.vue')['default'] + SmartFileChip: typeof import('./../../hoppscotch-ui/src/components/smart/FileChip.vue')['default'] + SmartFontSizePicker: typeof import('./components/smart/FontSizePicker.vue')['default'] + SmartIntersection: typeof import('./../../hoppscotch-ui/src/components/smart/Intersection.vue')['default'] + SmartItem: typeof import('./../../hoppscotch-ui/src/components/smart/Item.vue')['default'] + SmartLink: typeof import('./../../hoppscotch-ui/src/components/smart/Link.vue')['default'] + SmartModal: typeof import('./../../hoppscotch-ui/src/components/smart/Modal.vue')['default'] + SmartPicture: typeof import('./../../hoppscotch-ui/src/components/smart/Picture.vue')['default'] + SmartProgressRing: typeof import('./../../hoppscotch-ui/src/components/smart/ProgressRing.vue')['default'] + SmartRadio: typeof import('./../../hoppscotch-ui/src/components/smart/Radio.vue')['default'] + SmartRadioGroup: typeof import('./../../hoppscotch-ui/src/components/smart/RadioGroup.vue')['default'] + SmartSlideOver: typeof import('./../../hoppscotch-ui/src/components/smart/SlideOver.vue')['default'] + SmartSpinner: typeof import('./../../hoppscotch-ui/src/components/smart/Spinner.vue')['default'] + SmartTab: typeof import('./../../hoppscotch-ui/src/components/smart/Tab.vue')['default'] + SmartTabs: typeof import('./../../hoppscotch-ui/src/components/smart/Tabs.vue')['default'] + SmartToggle: typeof import('./../../hoppscotch-ui/src/components/smart/Toggle.vue')['default'] + SmartTree: typeof import('./components/smart/Tree.vue')['default'] + SmartTreeBranch: typeof import('./components/smart/TreeBranch.vue')['default'] + SmartWindow: typeof import('./../../hoppscotch-ui/src/components/smart/Window.vue')['default'] + SmartWindows: typeof import('./../../hoppscotch-ui/src/components/smart/Windows.vue')['default'] + TabPrimary: typeof import('./components/tab/Primary.vue')['default'] + TabSecondary: typeof import('./components/tab/Secondary.vue')['default'] + Teams: typeof import('./components/teams/index.vue')['default'] + TeamsAdd: typeof import('./components/teams/Add.vue')['default'] + TeamsEdit: typeof import('./components/teams/Edit.vue')['default'] + TeamsInvite: typeof import('./components/teams/Invite.vue')['default'] + TeamsMemberStack: typeof import('./components/teams/MemberStack.vue')['default'] + TeamsModal: typeof import('./components/teams/Modal.vue')['default'] + TeamsTeam: typeof import('./components/teams/Team.vue')['default'] + Tippy: typeof import('vue-tippy')['Tippy'] + WorkspaceCurrent: typeof import('./components/workspace/Current.vue')['default'] + WorkspaceSelector: typeof import('./components/workspace/Selector.vue')['default'] +>>>>>>> upstream/main } } diff --git a/packages/hoppscotch-common/src/helpers/keybindings.ts b/packages/hoppscotch-common/src/helpers/keybindings.ts index d672386f4..e08149996 100644 --- a/packages/hoppscotch-common/src/helpers/keybindings.ts +++ b/packages/hoppscotch-common/src/helpers/keybindings.ts @@ -14,7 +14,13 @@ let keybindingsEnabled = true * Alt is also regarded as macOS OPTION (⌥) key * Ctrl is also regarded as macOS COMMAND (⌘) key (NOTE: this differs from HTML Keyboard spec where COMMAND is Meta key!) */ -type ModifierKeys = "ctrl" | "alt" | "ctrl-shift" | "alt-shift" +type ModifierKeys = + | "ctrl" + | "alt" + | "ctrl-shift" + | "alt-shift" + | "ctrl-alt" + | "ctrl-alt-shift" /* eslint-disable prettier/prettier */ // prettier-ignore @@ -143,18 +149,19 @@ function getPressedKey(ev: KeyboardEvent): Key | null { } function getActiveModifier(ev: KeyboardEvent): ModifierKeys | null { - const isShiftKey = ev.shiftKey + const modifierKeys = { + ctrl: isAppleDevice() ? ev.metaKey : ev.ctrlKey, + alt: ev.altKey, + shift: ev.shiftKey, + } - // We only allow one modifier key to be pressed (for now) - // Control key (+ Command) gets priority and if Alt is also pressed, it is ignored - if (isAppleDevice() && ev.metaKey) return isShiftKey ? "ctrl-shift" : "ctrl" - else if (!isAppleDevice() && ev.ctrlKey) - return isShiftKey ? "ctrl-shift" : "ctrl" + // active modifier: ctrl | alt | ctrl-alt | ctrl-shift | ctrl-alt-shift | alt-shift + // modiferKeys object's keys are sorted to match the above order + const activeModifier = Object.keys(modifierKeys) + .filter((key) => modifierKeys[key as keyof typeof modifierKeys]) + .join("-") - // Test for Alt key - if (ev.altKey) return isShiftKey ? "alt-shift" : "alt" - - return null + return activeModifier === "" ? null : (activeModifier as ModifierKeys) } /** diff --git a/packages/hoppscotch-selfhost-web/Dockerfile b/packages/hoppscotch-selfhost-web/Dockerfile index bd35ab288..b43ae334d 100644 --- a/packages/hoppscotch-selfhost-web/Dockerfile +++ b/packages/hoppscotch-selfhost-web/Dockerfile @@ -6,7 +6,7 @@ WORKDIR /usr/src/app RUN npm i -g pnpm COPY . . -RUN pnpm install +RUN pnpm install --force --frozen-lockfile WORKDIR /usr/src/app/packages/hoppscotch-selfhost-web/ RUN pnpm run build diff --git a/packages/hoppscotch-selfhost-web/package.json b/packages/hoppscotch-selfhost-web/package.json index 215c07367..3db12fc01 100644 --- a/packages/hoppscotch-selfhost-web/package.json +++ b/packages/hoppscotch-selfhost-web/package.json @@ -1,13 +1,13 @@ { "name": "@hoppscotch/selfhost-web", "private": true, - "version": "2023.4.7", + "version": "2023.4.8", "type": "module", "scripts": { "dev:vite": "vite", "dev:gql-codegen": "graphql-codegen --require dotenv/config --config gql-codegen.yml dotenv_config_path=\"../../.env\" --watch", "dev": "pnpm exec npm-run-all -p -l dev:*", - "build": "node --max_old_space_size=16384 ./node_modules/vite/bin/vite.js build", + "build": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build", "preview": "vite preview", "lint": "eslint src --ext .ts,.js,.vue --ignore-path .gitignore .", "lint:ts": "vue-tsc --noEmit", diff --git a/packages/hoppscotch-sh-admin/Dockerfile b/packages/hoppscotch-sh-admin/Dockerfile index 9795de122..9a1f98f38 100644 --- a/packages/hoppscotch-sh-admin/Dockerfile +++ b/packages/hoppscotch-sh-admin/Dockerfile @@ -6,7 +6,7 @@ WORKDIR /usr/src/app RUN npm i -g pnpm COPY . . -RUN pnpm install +RUN pnpm install --force --frozen-lockfile WORKDIR /usr/src/app/packages/hoppscotch-sh-admin/ RUN pnpm run build diff --git a/packages/hoppscotch-sh-admin/package.json b/packages/hoppscotch-sh-admin/package.json index 758627e99..359f173dd 100644 --- a/packages/hoppscotch-sh-admin/package.json +++ b/packages/hoppscotch-sh-admin/package.json @@ -1,7 +1,7 @@ { "name": "hoppscotch-sh-admin", "private": true, - "version": "2023.4.7", + "version": "2023.4.8", "type": "module", "scripts": { "dev": "pnpm exec npm-run-all -p -l dev:*", diff --git a/packages/hoppscotch-ui/package.json b/packages/hoppscotch-ui/package.json index de94378f7..784a5c013 100644 --- a/packages/hoppscotch-ui/package.json +++ b/packages/hoppscotch-ui/package.json @@ -75,7 +75,8 @@ "unplugin-vue-components": "^0.21.0", "vite": "^3.2.3", "vite-plugin-checker": "^0.5.1", - "vite-plugin-dts": "2.0.0-beta.3", + "vite-plugin-dts": "3.2.0", + "vite-plugin-fonts": "^0.6.0", "vite-plugin-html-config": "^1.0.10", "vite-plugin-inspect": "^0.7.4", "vite-plugin-pages": "^0.26.0", diff --git a/packages/hoppscotch-ui/src/components/smart/Anchor.vue b/packages/hoppscotch-ui/src/components/smart/Anchor.vue index 3a18a7d70..b6bf55839 100644 --- a/packages/hoppscotch-ui/src/components/smart/Anchor.vue +++ b/packages/hoppscotch-ui/src/components/smart/Anchor.vue @@ -1,62 +1,55 @@ - diff --git a/packages/hoppscotch-ui/vite.config.ts b/packages/hoppscotch-ui/vite.config.ts index 28834e426..3f6b56d7e 100644 --- a/packages/hoppscotch-ui/vite.config.ts +++ b/packages/hoppscotch-ui/vite.config.ts @@ -11,14 +11,13 @@ export default defineConfig({ vue(), dts({ insertTypesEntry: true, - skipDiagnostics: true, - outputDir: ['dist'] + outDir: ["dist"], }), WindiCSS({ root: path.resolve(__dirname), }), Icons({ - compiler: "vue3" + compiler: "vue3", }), Unfonts({ fontsource: { @@ -54,6 +53,6 @@ export default defineConfig({ exports: "named", }, }, - emptyOutDir: true + emptyOutDir: true, }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aeb84de41..94dd7db30 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1350,8 +1350,11 @@ importers: specifier: ^0.5.1 version: 0.5.1(eslint@8.29.0)(typescript@4.9.3)(vite@3.2.4) vite-plugin-dts: - specifier: 2.0.0-beta.3 - version: 2.0.0-beta.3(@types/node@17.0.45)(rollup@2.79.1)(vite@3.2.4) + specifier: 3.2.0 + version: 3.2.0(@types/node@17.0.45)(sass@1.53.0)(terser@5.14.1)(typescript@4.9.3) + vite-plugin-fonts: + specifier: ^0.6.0 + version: 0.6.0(vite@3.2.4) vite-plugin-html-config: specifier: ^1.0.10 version: 1.0.10(vite@3.2.4) @@ -2050,14 +2053,6 @@ packages: dependencies: '@babel/types': 7.18.7 - /@babel/parser@7.20.15: - resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.20.7 - dev: true - /@babel/parser@7.22.5: resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} @@ -6672,32 +6667,32 @@ packages: resolution: {integrity: sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA==} dev: true - /@microsoft/api-extractor-model@7.26.4(@types/node@17.0.45): - resolution: {integrity: sha512-PDCgCzXDo+SLY5bsfl4bS7hxaeEtnXj7XtuzEE+BtALp7B5mK/NrS2kHWU69pohgsRmEALycQdaQPXoyT2i5MQ==} + /@microsoft/api-extractor-model@7.27.5(@types/node@17.0.45): + resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@17.0.45) + '@rushstack/node-core-library': 3.59.6(@types/node@17.0.45) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.34.4(@types/node@17.0.45): - resolution: {integrity: sha512-HOdcci2nT40ejhwPC3Xja9G+WSJmWhCUKKryRfQYsmE9cD+pxmBaKBKCbuS9jUcl6bLLb4Gz+h7xEN5r0QiXnQ==} + /@microsoft/api-extractor@7.36.3(@types/node@17.0.45): + resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.26.4(@types/node@17.0.45) + '@microsoft/api-extractor-model': 7.27.5(@types/node@17.0.45) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.55.2(@types/node@17.0.45) - '@rushstack/rig-package': 0.3.18 - '@rushstack/ts-command-line': 4.13.2 + '@rushstack/node-core-library': 3.59.6(@types/node@17.0.45) + '@rushstack/rig-package': 0.4.0 + '@rushstack/ts-command-line': 4.15.1 colors: 1.2.5 lodash: 4.17.21 resolve: 1.22.1 - semver: 7.3.8 + semver: 7.5.4 source-map: 0.6.1 - typescript: 4.8.4 + typescript: 5.0.4 transitivePeerDependencies: - '@types/node' dev: true @@ -7277,8 +7272,8 @@ packages: resolution: {integrity: sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==} dev: true - /@rushstack/node-core-library@3.55.2(@types/node@17.0.45): - resolution: {integrity: sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==} + /@rushstack/node-core-library@3.59.6(@types/node@17.0.45): + resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -7291,19 +7286,19 @@ packages: import-lazy: 4.0.0 jju: 1.4.0 resolve: 1.22.1 - semver: 7.3.8 + semver: 7.5.4 z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.3.18: - resolution: {integrity: sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ==} + /@rushstack/rig-package@0.4.0: + resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} dependencies: resolve: 1.22.1 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line@4.13.2: - resolution: {integrity: sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==} + /@rushstack/ts-command-line@4.15.1: + resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -7565,15 +7560,6 @@ packages: engines: {node: '>= 10'} dev: true - /@ts-morph/common@0.18.1: - resolution: {integrity: sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA==} - dependencies: - fast-glob: 3.2.12 - minimatch: 5.1.0 - mkdirp: 1.0.4 - path-browserify: 1.0.1 - dev: true - /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} @@ -8785,6 +8771,12 @@ packages: muggle-string: 0.1.0 dev: true + /@volar/language-core@1.10.0: + resolution: {integrity: sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ==} + dependencies: + '@volar/source-map': 1.10.0 + dev: true + /@volar/shared@0.27.24: resolution: {integrity: sha512-Mi8a4GQaiorfb+o4EqOXDZm9E/uBJXgScFgF+NhtcMBOUKHNMKQyLI7YRGumtyJTTdaX7nSDJjGGTkv23tcOtQ==} dependencies: @@ -8809,6 +8801,12 @@ packages: muggle-string: 0.1.0 dev: true + /@volar/source-map@1.10.0: + resolution: {integrity: sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw==} + dependencies: + muggle-string: 0.3.1 + dev: true + /@volar/transforms@0.27.24: resolution: {integrity: sha512-sOHi1ZSapFlxn7yPl4MO5TXd9aWC0BVq2CgXAJ2EESb+ddh2uJbGQgLLNocX+MDh419cUuuFT2QAJpuWHhJcng==} dependencies: @@ -8822,6 +8820,12 @@ packages: '@volar/language-core': 1.0.9 dev: true + /@volar/typescript@1.10.0: + resolution: {integrity: sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg==} + dependencies: + '@volar/language-core': 1.10.0 + dev: true + /@volar/vue-code-gen@0.38.2: resolution: {integrity: sha512-whLunD6phSGWBUHZKdTxeglrpzQu26ii8CRVapFdjfyMaVhQ7ESNeIAhkTVyg2ovOPc0PiDYPQEPzfWAADIWog==} dependencies: @@ -9043,6 +9047,25 @@ packages: - supports-color dev: true + /@vue/language-core@1.8.8(typescript@4.9.3): + resolution: {integrity: sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.10.0 + '@volar/source-map': 1.10.0 + '@vue/compiler-dom': 3.3.4 + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + minimatch: 9.0.3 + muggle-string: 0.3.1 + typescript: 4.9.3 + vue-template-compiler: 2.7.14 + dev: true + /@vue/reactivity-transform@3.2.37: resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==} dependencies: @@ -9086,6 +9109,12 @@ packages: dependencies: '@vue/shared': 3.2.45 + /@vue/reactivity@3.3.4: + resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + dependencies: + '@vue/shared': 3.3.4 + dev: true + /@vue/runtime-core@3.2.37: resolution: {integrity: sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==} dependencies: @@ -9150,6 +9179,15 @@ packages: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true + /@vue/typescript@1.8.8(typescript@4.9.3): + resolution: {integrity: sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==} + dependencies: + '@volar/typescript': 1.10.0 + '@vue/language-core': 1.8.8(typescript@4.9.3) + transitivePeerDependencies: + - typescript + dev: true + /@vueuse/core@8.7.5(vue@3.2.45): resolution: {integrity: sha512-tqgzeZGoZcXzoit4kOGLWJibDMLp0vdm6ZO41SSUQhkhtrPhAg6dbIEPiahhUu6sZAmSYvVrZgEr5aKD51nrLA==} peerDependencies: @@ -10728,10 +10766,6 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /code-block-writer@11.0.3: - resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} - dev: true - /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true @@ -16443,6 +16477,10 @@ packages: resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} dev: true + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + /leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} dev: false @@ -16813,13 +16851,6 @@ packages: dependencies: sourcemap-codec: 1.4.8 - /magic-string@0.29.0: - resolution: {integrity: sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /magic-string@0.30.0: resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} engines: {node: '>=12'} @@ -17082,6 +17113,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -17564,6 +17602,10 @@ packages: resolution: {integrity: sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==} dev: true + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + /multer@1.4.4-lts.1: resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} engines: {node: '>= 6.0.0'} @@ -17708,7 +17750,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.9.0 - semver: 7.3.8 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -18168,10 +18210,6 @@ packages: utils-merge: 1.0.1 dev: false - /path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true - /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: @@ -19379,6 +19417,13 @@ packages: dependencies: lru-cache: 6.0.0 + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -20041,7 +20086,7 @@ packages: methods: 1.1.2 mime: 2.6.0 qs: 6.11.0 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: false @@ -20537,13 +20582,6 @@ packages: resolution: {integrity: sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ==} dev: true - /ts-morph@17.0.1: - resolution: {integrity: sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g==} - dependencies: - '@ts-morph/common': 0.18.1 - code-block-writer: 11.0.3 - dev: true - /ts-node-dev@2.0.0(@types/node@18.16.17)(typescript@4.9.3): resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} engines: {node: '>=0.8.0'} @@ -20882,6 +20920,12 @@ packages: hasBin: true dev: true + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + /ua-parser-js@0.7.31: resolution: {integrity: sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==} dev: true @@ -21473,27 +21517,31 @@ packages: vscode-uri: 3.0.3 dev: true - /vite-plugin-dts@2.0.0-beta.3(@types/node@17.0.45)(rollup@2.79.1)(vite@3.2.4): - resolution: {integrity: sha512-QrsbTxyt0choSYXPxPfmN9XcSvxcVZk0zticxLrI5DkECs9KhDrSVGok1YP/UPkoKpfF9ThtOJcM5Rjuesxv/w==} + /vite-plugin-dts@3.2.0(@types/node@17.0.45)(sass@1.53.0)(terser@5.14.1)(typescript@4.9.3): + resolution: {integrity: sha512-s+dwJvDcb/AWgb49oVbq9JiUSIMwaVpFfV4SVIaBZmv9OZyeyDGxujaq+z4HJ4LB4hUG5c4oRAJyLfV66c763Q==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: '>=2.9.0' + typescript: '*' dependencies: - '@babel/parser': 7.20.15 - '@microsoft/api-extractor': 7.34.4(@types/node@17.0.45) + '@microsoft/api-extractor': 7.36.3(@types/node@17.0.45) '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - '@rushstack/node-core-library': 3.55.2(@types/node@17.0.45) + '@rushstack/node-core-library': 3.59.6(@types/node@17.0.45) + '@vue/language-core': 1.8.8(typescript@4.9.3) debug: 4.3.4(supports-color@9.2.2) - fast-glob: 3.2.12 - fs-extra: 10.1.0 - kolorist: 1.7.0 - magic-string: 0.29.0 - ts-morph: 17.0.1 + kolorist: 1.8.0 + typescript: 4.9.3 + vue-tsc: 1.8.8(typescript@4.9.3) + optionalDependencies: + rollup: 2.79.1 vite: 3.2.4(@types/node@17.0.45)(sass@1.53.0)(terser@5.14.1) transitivePeerDependencies: - '@types/node' - - rollup + - less + - sass + - stylus + - sugarss - supports-color + - terser dev: true /vite-plugin-eslint@1.8.1(eslint@8.29.0)(vite@3.2.4): @@ -21509,6 +21557,15 @@ packages: vite: 3.2.4(@types/node@17.0.45)(sass@1.53.0)(terser@5.14.1) dev: false + /vite-plugin-fonts@0.6.0(vite@3.2.4): + resolution: {integrity: sha512-dV6nnLEju8k5EmvlBH6egxkVZ+rgc5zWsJr9+cNRXBMEDnpRGHcZPI260UEDNg2yB99wSTNER2eduEvZFbMIGw==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 + dependencies: + fast-glob: 3.2.12 + vite: 3.2.4(@types/node@17.0.45)(sass@1.53.0)(terser@5.14.1) + dev: true + /vite-plugin-html-config@1.0.10(vite@3.1.4): resolution: {integrity: sha512-qJCVKC/mR4BIy4EG7AHQ3nGo1BF+3fOjVIka0kXKQMlxT12dl9G5YKmjhLohDzySijOb03R2PzYiAdavwKkqQQ==} engines: {node: '>=12.0.0'} @@ -22390,6 +22447,18 @@ packages: typescript: 4.9.3 dev: true + /vue-tsc@1.8.8(typescript@4.9.3): + resolution: {integrity: sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@vue/language-core': 1.8.8(typescript@4.9.3) + '@vue/typescript': 1.8.8(typescript@4.9.3) + semver: 7.3.8 + typescript: 4.9.3 + dev: true + /vue@2.7.1: resolution: {integrity: sha512-X1YkFddhbTAU2FPK0gBZ/vDOcOMA8ZT4uHoFVor1bUb7BpVGdEswS286YGtODsf/Ghfr1LM1sBMFAY8XT+dVhA==} dependencies: