gitextract_obtgc54t/ ├── .dockerignore ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report_en-US.md │ │ ├── bug_report_zh-CN.md │ │ ├── feature_request_en-US.md │ │ └── feature_request_zh-CN.md │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .prettierrc ├── .yarnrc ├── LICENSE ├── README.md ├── bin/ │ ├── index.js │ ├── main.ts │ └── scripts/ │ ├── format.ts │ └── index.ts ├── chrome/ │ ├── html/ │ │ └── error.html │ └── js/ │ └── icon.js ├── config.json ├── global.d.ts ├── package.json ├── script/ │ ├── build.js │ ├── release.ts │ └── utils/ │ └── pack.ts ├── src/ │ ├── __test__/ │ │ └── utils.ts │ ├── actions/ │ │ ├── account.ts │ │ ├── clipper.ts │ │ └── userPreference.ts │ ├── common/ │ │ ├── backend/ │ │ │ ├── clients/ │ │ │ │ ├── github/ │ │ │ │ │ ├── client.test.ts │ │ │ │ │ ├── client.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── joplin/ │ │ │ │ │ ├── LegacyJoplinClient.ts │ │ │ │ │ ├── basic.ts │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── leanote/ │ │ │ │ │ ├── client.test.ts │ │ │ │ │ ├── client.ts │ │ │ │ │ └── interface.ts │ │ │ │ └── siyuan/ │ │ │ │ ├── client.ts │ │ │ │ └── types.ts │ │ │ ├── imageHosting/ │ │ │ │ ├── baklib/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── github/ │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── service.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── imgur/ │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── interface.ts │ │ │ │ ├── joplin/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── leanote/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── piclist/ │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── qcloud/ │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── siyuan/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── sm.ms/ │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── wiznote/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── service.ts │ │ │ │ └── yuque_oauth/ │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── index.ts │ │ │ ├── interface.ts │ │ │ └── services/ │ │ │ ├── baklib/ │ │ │ │ ├── complete.tsx │ │ │ │ ├── form.tsx │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── bear/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── buildin/ │ │ │ │ ├── index.ts │ │ │ │ ├── service.ts │ │ │ │ └── type.ts │ │ │ ├── confluence/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── dida365/ │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── flomo/ │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── flowus/ │ │ │ │ ├── index.ts │ │ │ │ ├── service.ts │ │ │ │ └── type.ts │ │ │ ├── github/ │ │ │ │ ├── form.tsx │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── github_repository/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── interface.ts │ │ │ ├── joplin/ │ │ │ │ ├── form.tsx │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── leanote/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── memos/ │ │ │ │ ├── form.tsx │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── notion/ │ │ │ │ ├── index.ts │ │ │ │ ├── service.ts │ │ │ │ └── types.ts │ │ │ ├── obsidian/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── onenote_oauth/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── server_chan/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── siyuan/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── ticktick/ │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── ulysses/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── webdav/ │ │ │ │ ├── form.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── wiznote/ │ │ │ │ ├── form.tsx │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ ├── wolai/ │ │ │ │ ├── index.ts │ │ │ │ ├── service.ts │ │ │ │ └── type.ts │ │ │ ├── youdao/ │ │ │ │ ├── index.ts │ │ │ │ └── service.ts │ │ │ ├── yuque/ │ │ │ │ ├── form.tsx │ │ │ │ ├── headerForm.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── service.ts │ │ │ └── yuque_oauth/ │ │ │ ├── form.tsx │ │ │ ├── headerForm.tsx │ │ │ ├── index.ts │ │ │ ├── interface.ts │ │ │ └── service.ts │ │ ├── blob.ts │ │ ├── buffer.ts │ │ ├── chrome/ │ │ │ └── storage.ts │ │ ├── error.ts │ │ ├── getResource.ts │ │ ├── hooks/ │ │ │ ├── useFilterExtensions.ts │ │ │ ├── useFilterImageHostingServices.ts │ │ │ ├── useOriginPermission.ts │ │ │ └── useVerifiedAccount.tsx │ │ ├── loading.test.ts │ │ ├── loading.ts │ │ ├── locales/ │ │ │ ├── antd.ts │ │ │ ├── data/ │ │ │ │ ├── de-DE.json │ │ │ │ ├── de-DE.ts │ │ │ │ ├── en-US.json │ │ │ │ ├── en-US.ts │ │ │ │ ├── ja-JP.json │ │ │ │ ├── ja-JP.ts │ │ │ │ ├── ko-KR.json │ │ │ │ ├── ko-KR.ts │ │ │ │ ├── ru-RU.json │ │ │ │ ├── ru-RU.ts │ │ │ │ ├── zh-CN.json │ │ │ │ ├── zh-CN.ts │ │ │ │ ├── zh-TW.json │ │ │ │ └── zh-TW.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ └── interface.ts │ │ ├── matchUrl.test.ts │ │ ├── matchUrl.ts │ │ ├── modelTypes/ │ │ │ ├── account.ts │ │ │ ├── clipper.ts │ │ │ ├── extensions.ts │ │ │ └── userPreference.ts │ │ ├── object.ts │ │ ├── storage/ │ │ │ ├── __test__/ │ │ │ │ └── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── interface.ts │ │ │ └── typedCommonStorage.ts │ │ ├── strings.ts │ │ ├── types.ts │ │ └── version/ │ │ ├── index.test.ts │ │ └── index.ts │ ├── components/ │ │ ├── ExtensionCard/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── IconFont.tsx │ │ ├── ImageHostingSelect.less │ │ ├── ImageHostingSelect.tsx │ │ ├── LinkRender/ │ │ │ └── index.tsx │ │ ├── RepositorySelect.tsx │ │ ├── accountItem/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── avatar/ │ │ │ └── index.tsx │ │ ├── container/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── imageHostingSelectOption/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── imagehostingListItem/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── section/ │ │ │ ├── __snapshots__/ │ │ │ │ └── index.test.tsx.snap │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── share/ │ │ │ └── index.tsx │ │ └── userItem/ │ │ ├── index.less │ │ └── index.tsx │ ├── config.ts │ ├── extensions/ │ │ ├── common.ts │ │ ├── contextMenus/ │ │ │ └── saveSelection/ │ │ │ └── saveSelection.ts │ │ ├── contextMenus.ts │ │ ├── extensions/ │ │ │ ├── bookmark.ts │ │ │ ├── extensions/ │ │ │ │ ├── remove.ts │ │ │ │ ├── selectTool.ts │ │ │ │ └── uploadImage.ts │ │ │ ├── fullPage.ts │ │ │ ├── qrcode.ts │ │ │ ├── readability.ts │ │ │ ├── screenshot.ts │ │ │ ├── select.ts │ │ │ └── web-clipper/ │ │ │ ├── clear.ts │ │ │ ├── copyToClipboard.ts │ │ │ ├── download.ts │ │ │ ├── link.tsx │ │ │ └── pangu.ts │ │ └── index.ts │ ├── hooks/ │ │ └── useOriginForm.tsx │ ├── index.html │ ├── main/ │ │ ├── background.worker.ts │ │ ├── contentScript.main.ts │ │ └── tool.main.chrome.ts │ ├── models/ │ │ ├── account.ts │ │ ├── clipper.tsx │ │ └── userPreference.ts │ ├── pages/ │ │ ├── app.less │ │ ├── app.tsx │ │ ├── auth.tsx │ │ ├── complete/ │ │ │ ├── complete.less │ │ │ └── complete.tsx │ │ ├── locale.tsx │ │ ├── plugin/ │ │ │ ├── Page.tsx │ │ │ ├── TextEditor.tsx │ │ │ └── index.less │ │ ├── preference/ │ │ │ ├── account/ │ │ │ │ ├── index.less │ │ │ │ ├── index.tsx │ │ │ │ └── modal/ │ │ │ │ ├── createAccountModal.tsx │ │ │ │ ├── editAccountModal.tsx │ │ │ │ └── index.less │ │ │ ├── base.tsx │ │ │ ├── changelog/ │ │ │ │ └── index.tsx │ │ │ ├── extensions/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── imageHosting/ │ │ │ │ ├── form/ │ │ │ │ │ └── addImageHosting.tsx │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── index.less │ │ │ ├── index.tsx │ │ │ └── privacy/ │ │ │ └── index.tsx │ │ └── tool/ │ │ ├── ClipExtension.tsx │ │ ├── Header.tsx │ │ ├── index.less │ │ ├── index.tsx │ │ └── toolExtensions.tsx │ ├── service/ │ │ ├── common/ │ │ │ ├── config.ts │ │ │ ├── configuration.ts │ │ │ ├── contentScript.ts │ │ │ ├── cookie.ts │ │ │ ├── extension.ts │ │ │ ├── ipc.ts │ │ │ ├── locale.ts │ │ │ ├── permissions.ts │ │ │ ├── preference.ts │ │ │ ├── request.ts │ │ │ ├── storage.ts │ │ │ ├── tab.ts │ │ │ └── webRequest.ts │ │ ├── config/ │ │ │ └── browser/ │ │ │ └── configService.ts │ │ ├── configuration/ │ │ │ ├── common/ │ │ │ │ └── generate-local-config.ts │ │ │ └── configuration.ts │ │ ├── contentScript/ │ │ │ ├── browser/ │ │ │ │ └── contentScript/ │ │ │ │ ├── contentScript.less │ │ │ │ └── contentScript.ts │ │ │ └── common/ │ │ │ └── contentScriptIPC.ts │ │ ├── cookie/ │ │ │ ├── background/ │ │ │ │ └── cookieService.ts │ │ │ └── common/ │ │ │ └── cookieIpc.ts │ │ ├── extension/ │ │ │ └── browser/ │ │ │ ├── extensionContainer.ts │ │ │ └── extensionService.ts │ │ ├── ipc/ │ │ │ └── browser/ │ │ │ ├── background-main/ │ │ │ │ └── ipcService.ts │ │ │ ├── contentScript/ │ │ │ │ └── contentScriptIPCServer.ts │ │ │ └── popup/ │ │ │ └── ipcClient.ts │ │ ├── permissions/ │ │ │ ├── chrome/ │ │ │ │ └── permissionsService.ts │ │ │ └── common/ │ │ │ └── permissionsIpc.ts │ │ ├── preference/ │ │ │ └── browser/ │ │ │ └── preferenceService.ts │ │ ├── request/ │ │ │ ├── common/ │ │ │ │ ├── request.test.ts │ │ │ │ └── request.ts │ │ │ └── tool/ │ │ │ └── basic.ts │ │ ├── tab/ │ │ │ ├── browser/ │ │ │ │ └── background/ │ │ │ │ └── tabService.ts │ │ │ └── common/ │ │ │ └── tabIpc.ts │ │ ├── webRequest/ │ │ │ ├── browser/ │ │ │ │ └── background/ │ │ │ │ └── tabService.ts │ │ │ ├── chrome/ │ │ │ │ └── background/ │ │ │ │ └── tabService.ts │ │ │ └── common/ │ │ │ └── webRequestIPC.ts │ │ └── worker/ │ │ ├── common/ │ │ │ ├── index.ts │ │ │ └── workserServiceIPC.ts │ │ └── worker/ │ │ └── workerService.ts │ ├── services/ │ │ ├── account/ │ │ │ └── common.ts │ │ ├── configuration/ │ │ │ └── common/ │ │ │ ├── configuration.ts │ │ │ └── configurationService.ts │ │ ├── environment/ │ │ │ └── common/ │ │ │ ├── changelog/ │ │ │ │ ├── CHANGELOG.en-US.md │ │ │ │ └── CHANGELOG.zh-CN.md │ │ │ ├── environment.ts │ │ │ ├── environmentService.ts │ │ │ └── privacy/ │ │ │ ├── PRIVACY.en-US.md │ │ │ └── PRIVACY.zh-CN.md │ │ └── log/ │ │ └── common/ │ │ └── index.ts │ ├── setupTests.ts │ └── vendor/ │ └── global.d.ts ├── tsconfig.json ├── vitest.config.ts └── webpack/ ├── plugin/ │ └── webpack-create-extension-manifest-plugin.js ├── webpack.common.js ├── webpack.dev.js └── webpack.prod.js