comfyui-frontend-package 1.38.5__py3-none-any.whl → 1.38.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- comfyui_frontend_package/static/assets/{AboutPanel-CHse5rOA.js → AboutPanel-lkjGFasi.js} +2 -2
- comfyui_frontend_package/static/assets/{AboutPanel-CHse5rOA.js.map → AboutPanel-lkjGFasi.js.map} +1 -1
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CAa8V66L.js → AudioPreviewPlayer-BxCSKPl9.js} +2 -2
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CAa8V66L.js.map → AudioPreviewPlayer-BxCSKPl9.js.map} +1 -1
- comfyui_frontend_package/static/assets/AudioPreviewPlayer-CkxKvcVf.js +1 -0
- comfyui_frontend_package/static/assets/{BaseViewTemplate-DA6zfigT.js → BaseViewTemplate-CjODF2hh.js} +2 -2
- comfyui_frontend_package/static/assets/{BaseViewTemplate-DA6zfigT.js.map → BaseViewTemplate-CjODF2hh.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudAuthTimeoutView-9OPBS1hE.js → CloudAuthTimeoutView-D-QkjPNh.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudAuthTimeoutView-9OPBS1hE.js.map → CloudAuthTimeoutView-D-QkjPNh.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudBadge-BnLiAHDN.js → CloudBadge-B4nmLus2.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudBadge-BnLiAHDN.js.map → CloudBadge-B4nmLus2.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudForgotPasswordView-BqDR_C7K.js → CloudForgotPasswordView-DOEV9hGr.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudForgotPasswordView-BqDR_C7K.js.map → CloudForgotPasswordView-DOEV9hGr.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudLayoutView-vTrrVUOY.js → CloudLayoutView-ShKH6rRV.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudLayoutView-vTrrVUOY.js.map → CloudLayoutView-ShKH6rRV.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudLoginView-T17euJly.js → CloudLoginView-C3Te42U9.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudLoginView-T17euJly.js.map → CloudLoginView-C3Te42U9.js.map} +1 -1
- comfyui_frontend_package/static/assets/CloudRunButtonWrapper-Cub7EB34.js +3 -0
- comfyui_frontend_package/static/assets/{CloudRunButtonWrapper-hQc4BNkX.js.map → CloudRunButtonWrapper-Cub7EB34.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudSignupView-vEDby5k3.js → CloudSignupView-X2oiL3ZR.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudSignupView-vEDby5k3.js.map → CloudSignupView-X2oiL3ZR.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudSubscriptionRedirectView-DPyO745g.js → CloudSubscriptionRedirectView-UjNv8emo.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudSubscriptionRedirectView-DPyO745g.js.map → CloudSubscriptionRedirectView-UjNv8emo.js.map} +1 -1
- comfyui_frontend_package/static/assets/{CloudSurveyView-CBtTd9Ru.js → CloudSurveyView-IaiucCTP.js} +2 -2
- comfyui_frontend_package/static/assets/{CloudSurveyView-CBtTd9Ru.js.map → CloudSurveyView-IaiucCTP.js.map} +1 -1
- comfyui_frontend_package/static/assets/ComfyQueueButton-BppnHbrl.js +1 -0
- comfyui_frontend_package/static/assets/{ComfyQueueButton-MZrp7wYJ.js → ComfyQueueButton-HjSIKZKO.js} +2 -2
- comfyui_frontend_package/static/assets/{ComfyQueueButton-MZrp7wYJ.js.map → ComfyQueueButton-HjSIKZKO.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ExtensionPanel-CrWVGUtg.js → ExtensionPanel-Bzb9QtKj.js} +2 -2
- comfyui_frontend_package/static/assets/{ExtensionPanel-CrWVGUtg.js.map → ExtensionPanel-Bzb9QtKj.js.map} +1 -1
- comfyui_frontend_package/static/assets/{GlobalToast-BiCmpIvO.js → GlobalToast-BSCvu6Hw.js} +2 -2
- comfyui_frontend_package/static/assets/{GlobalToast-BiCmpIvO.js.map → GlobalToast-BSCvu6Hw.js.map} +1 -1
- comfyui_frontend_package/static/assets/{GraphView-BCkpNGgz.js → GraphView-gYVCtm1V.js} +5 -5
- comfyui_frontend_package/static/assets/GraphView-gYVCtm1V.js.map +1 -0
- comfyui_frontend_package/static/assets/{KeybindingPanel-CAXL5TlV.js → KeybindingPanel-DF-bG4iO.js} +2 -2
- comfyui_frontend_package/static/assets/{KeybindingPanel-CAXL5TlV.js.map → KeybindingPanel-DF-bG4iO.js.map} +1 -1
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-6vR8koQy.js → LegacyCreditsPanel-D-CboO8k.js} +2 -2
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-6vR8koQy.js.map → LegacyCreditsPanel-D-CboO8k.js.map} +1 -1
- comfyui_frontend_package/static/assets/Load3D-c9UwgGoI.js +1 -0
- comfyui_frontend_package/static/assets/{Load3D-ei1BUF9O.js → Load3D-vYr8M3jJ.js} +2 -2
- comfyui_frontend_package/static/assets/{Load3D-ei1BUF9O.js.map → Load3D-vYr8M3jJ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{PanelTemplate-BjN5XNg2.js → PanelTemplate-BJda9e5J.js} +2 -2
- comfyui_frontend_package/static/assets/{PanelTemplate-BjN5XNg2.js.map → PanelTemplate-BJda9e5J.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ServerConfigPanel-CxovH9Qk.js → ServerConfigPanel-VsC6xlZJ.js} +2 -2
- comfyui_frontend_package/static/assets/{ServerConfigPanel-CxovH9Qk.js.map → ServerConfigPanel-VsC6xlZJ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{SubscribeButton-CTOQRkfg.js → SubscribeButton-DZBycfCA.js} +2 -2
- comfyui_frontend_package/static/assets/{SubscribeButton-CTOQRkfg.js.map → SubscribeButton-DZBycfCA.js.map} +1 -1
- comfyui_frontend_package/static/assets/{SubscribeToRun-DnXzV8y0.js → SubscribeToRun-4YolxBOL.js} +2 -2
- comfyui_frontend_package/static/assets/{SubscribeToRun-DnXzV8y0.js.map → SubscribeToRun-4YolxBOL.js.map} +1 -1
- comfyui_frontend_package/static/assets/{SubscriptionPanel-D9uv7z8f.js → SubscriptionPanel-B6txX4Vm.js} +2 -2
- comfyui_frontend_package/static/assets/{SubscriptionPanel-D9uv7z8f.js.map → SubscriptionPanel-B6txX4Vm.js.map} +1 -1
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent--VmT16oc.js → SubscriptionRequiredDialogContent-COEF2VQ_.js} +2 -2
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent--VmT16oc.js.map → SubscriptionRequiredDialogContent-COEF2VQ_.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserCheckView-spD3LyMu.js → UserCheckView-x-fkcYzc.js} +2 -2
- comfyui_frontend_package/static/assets/{UserCheckView-spD3LyMu.js.map → UserCheckView-x-fkcYzc.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserPanel-Su6NtJ5q.js → UserPanel-7N9QknQj.js} +2 -2
- comfyui_frontend_package/static/assets/{UserPanel-Su6NtJ5q.js.map → UserPanel-7N9QknQj.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserSelectView-C5LBOPcv.js → UserSelectView-BYjOkfSa.js} +2 -2
- comfyui_frontend_package/static/assets/{UserSelectView-C5LBOPcv.js.map → UserSelectView-BYjOkfSa.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ValueControlPopover-BdlDzT8l.js → ValueControlPopover-BPAa35QG.js} +2 -2
- comfyui_frontend_package/static/assets/{ValueControlPopover-BdlDzT8l.js.map → ValueControlPopover-BPAa35QG.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetAudioUI-BDZxDx_r.js → WidgetAudioUI-Dw-r3Ews.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetAudioUI-BDZxDx_r.js.map → WidgetAudioUI-Dw-r3Ews.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetImageCrop-CYRW7t2Q.js → WidgetImageCrop-kERy9g5I.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetImageCrop-CYRW7t2Q.js.map → WidgetImageCrop-kERy9g5I.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetInputNumber-BOKO36G3.js → WidgetInputNumber-BaClCNAC.js} +1 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-DU_D0Fzy.js +3 -0
- comfyui_frontend_package/static/assets/WidgetInputNumber-DU_D0Fzy.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetLegacy-Bslv9wZZ.js → WidgetLegacy-B4nipUM9.js} +1 -1
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-Bzy8PIzN.js → WidgetRecordAudio-Nk8dH238.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-Bzy8PIzN.js.map → WidgetRecordAudio-Nk8dH238.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetSelect-DzZPpO_-.js +1 -0
- comfyui_frontend_package/static/assets/{WidgetSelect-zgrFVzHH.js → WidgetSelect-nSQrk_hd.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetSelect-zgrFVzHH.js.map → WidgetSelect-nSQrk_hd.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetWithControl-Dh2FWOiA.js → WidgetWithControl-Da6zUB5e.js} +3 -3
- comfyui_frontend_package/static/assets/{WidgetWithControl-Dh2FWOiA.js.map → WidgetWithControl-Da6zUB5e.js.map} +1 -1
- comfyui_frontend_package/static/assets/{api-CUAc7rDA.js → api-Dwq2LQIW.js} +4 -4
- comfyui_frontend_package/static/assets/api-Dwq2LQIW.js.map +1 -0
- comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js → audioService-DvVaKhuU.js} +2 -2
- comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js.map → audioService-DvVaKhuU.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioUtils-DpjpcKbH.js → audioUtils-DD4rUYVZ.js} +2 -2
- comfyui_frontend_package/static/assets/{audioUtils-DpjpcKbH.js.map → audioUtils-DD4rUYVZ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{auth-B8ZZ0KKQ.js → auth-B9axG-yZ.js} +2 -2
- comfyui_frontend_package/static/assets/{auth-B8ZZ0KKQ.js.map → auth-B9axG-yZ.js.map} +1 -1
- comfyui_frontend_package/static/assets/auth-D74DTev8.js +1 -0
- comfyui_frontend_package/static/assets/{cloudBadges-C1a7fBky.js → cloudBadges-D5mGJbRy.js} +2 -2
- comfyui_frontend_package/static/assets/{cloudBadges-C1a7fBky.js.map → cloudBadges-D5mGJbRy.js.map} +1 -1
- comfyui_frontend_package/static/assets/{cloudFeedbackTopbarButton-DR0T8sWG.js → cloudFeedbackTopbarButton-RZUssOmb.js} +2 -2
- comfyui_frontend_package/static/assets/{cloudFeedbackTopbarButton-DR0T8sWG.js.map → cloudFeedbackTopbarButton-RZUssOmb.js.map} +1 -1
- comfyui_frontend_package/static/assets/{cloudRemoteConfig-DhMjC5TB.js → cloudRemoteConfig-F9J0iGyF.js} +2 -2
- comfyui_frontend_package/static/assets/{cloudRemoteConfig-DhMjC5TB.js.map → cloudRemoteConfig-F9J0iGyF.js.map} +1 -1
- comfyui_frontend_package/static/assets/{cloudSessionCookie-Duxk6ux1.js → cloudSessionCookie-MEORlqtg.js} +2 -2
- comfyui_frontend_package/static/assets/{cloudSessionCookie-Duxk6ux1.js.map → cloudSessionCookie-MEORlqtg.js.map} +1 -1
- comfyui_frontend_package/static/assets/{cloudSubscription-B8l6B9Nx.js → cloudSubscription-CuWNXKVx.js} +2 -2
- comfyui_frontend_package/static/assets/{cloudSubscription-B8l6B9Nx.js.map → cloudSubscription-CuWNXKVx.js.map} +1 -1
- comfyui_frontend_package/static/assets/{core-DBfeqMDR.js → core-IYu8XAIx.js} +4 -4
- comfyui_frontend_package/static/assets/{core-DBfeqMDR.js.map → core-IYu8XAIx.js.map} +1 -1
- comfyui_frontend_package/static/assets/{dialogService-BZ1FmjZL.js → dialogService-YG0RH337.js} +9 -9
- comfyui_frontend_package/static/assets/{dialogService-BZ1FmjZL.js.map → dialogService-YG0RH337.js.map} +1 -1
- comfyui_frontend_package/static/assets/firebaseAuthStore-DnNaPbuZ.js +1 -0
- comfyui_frontend_package/static/assets/{graphHasMissingNodes-C79Wi51S.js → graphHasMissingNodes-BhD1N6zI.js} +2 -2
- comfyui_frontend_package/static/assets/{graphHasMissingNodes-C79Wi51S.js.map → graphHasMissingNodes-BhD1N6zI.js.map} +1 -1
- comfyui_frontend_package/static/assets/{index-CGxJFSof.js → index-BMy3twho.js} +3 -3
- comfyui_frontend_package/static/assets/{index-CGxJFSof.js.map → index-BMy3twho.js.map} +1 -1
- comfyui_frontend_package/static/assets/{index-DNpOhRra.css → index-KMO9qFHH.css} +1 -1
- comfyui_frontend_package/static/assets/{keybindingService-B88NjeAU.js → keybindingService-CBLPjYHI.js} +2 -2
- comfyui_frontend_package/static/assets/{keybindingService-B88NjeAU.js.map → keybindingService-CBLPjYHI.js.map} +1 -1
- comfyui_frontend_package/static/assets/{releaseStore-x0vHjxrw.js → releaseStore-DDOxzkVb.js} +2 -2
- comfyui_frontend_package/static/assets/{releaseStore-x0vHjxrw.js.map → releaseStore-DDOxzkVb.js.map} +1 -1
- comfyui_frontend_package/static/assets/releaseStore-iVkqunL8.js +1 -0
- comfyui_frontend_package/static/assets/{subscriptionCheckoutUtil-B_OvUP2T.js → subscriptionCheckoutUtil-DswSOreM.js} +2 -2
- comfyui_frontend_package/static/assets/{subscriptionCheckoutUtil-B_OvUP2T.js.map → subscriptionCheckoutUtil-DswSOreM.js.map} +1 -1
- comfyui_frontend_package/static/assets/{useCurrentUser-BJcn2Vgo.js → useCurrentUser-NdaCJzIK.js} +1 -1
- comfyui_frontend_package/static/assets/{useErrorHandling-CI8_F4yx.js → useErrorHandling-Cfa5N_7c.js} +2 -2
- comfyui_frontend_package/static/assets/{useErrorHandling-CI8_F4yx.js.map → useErrorHandling-Cfa5N_7c.js.map} +1 -1
- comfyui_frontend_package/static/assets/{useSubscriptionDialog-Chxkdny5.js → useSubscriptionDialog-792qfEJ2.js} +3 -3
- comfyui_frontend_package/static/assets/{useSubscriptionDialog-Chxkdny5.js.map → useSubscriptionDialog-792qfEJ2.js.map} +1 -1
- comfyui_frontend_package/static/assets/useSubscriptionDialog-B-eGeK3j.js +1 -0
- comfyui_frontend_package/static/assets/{userStore-BkgQPjq6.js → userStore-BAS9m9W6.js} +2 -2
- comfyui_frontend_package/static/assets/{userStore-BkgQPjq6.js.map → userStore-BAS9m9W6.js.map} +1 -1
- comfyui_frontend_package/static/assets/vendor-three-BFcUNSs9.js.map +1 -1
- comfyui_frontend_package/static/index.html +1 -1
- {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/METADATA +1 -1
- {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/RECORD +126 -126
- comfyui_frontend_package/static/assets/AudioPreviewPlayer-BoEdyGI_.js +0 -1
- comfyui_frontend_package/static/assets/CloudRunButtonWrapper-hQc4BNkX.js +0 -3
- comfyui_frontend_package/static/assets/ComfyQueueButton-BbQnRThI.js +0 -1
- comfyui_frontend_package/static/assets/GraphView-BCkpNGgz.js.map +0 -1
- comfyui_frontend_package/static/assets/Load3D-DHBmC_AU.js +0 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-DGKypM5j.js +0 -3
- comfyui_frontend_package/static/assets/WidgetInputNumber-DGKypM5j.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetSelect-DsJGH12l.js +0 -1
- comfyui_frontend_package/static/assets/api-CUAc7rDA.js.map +0 -1
- comfyui_frontend_package/static/assets/auth-D3RiiqZ8.js +0 -1
- comfyui_frontend_package/static/assets/firebaseAuthStore-CZgxeMyf.js +0 -1
- comfyui_frontend_package/static/assets/releaseStore-CubqSv5t.js +0 -1
- comfyui_frontend_package/static/assets/useSubscriptionDialog-BzMzio2H.js +0 -1
- {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/WHEEL +0 -0
- {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/top_level.txt +0 -0
comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js → audioService-DvVaKhuU.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var l=Object.defineProperty;var r=(s,c)=>l(s,"name",{value:c,configurable:!0});import{r as p,t as u}from"./vendor-other-DlQF6V2E.js";import{It as m,r as f}from"./api-
|
|
1
|
+
var l=Object.defineProperty;var r=(s,c)=>l(s,"name",{value:c,configurable:!0});import{r as p,t as u}from"./vendor-other-DlQF6V2E.js";import{It as m,r as f}from"./api-Dwq2LQIW.js";var i=!1;const y=r(()=>{const s=r((e,t,n)=>{console.error(`Audio Service Error (${e}):`,t,n)},"handleError");return{convertBlobToFileAndSubmit:r(async e=>{const t=`recording-${Date.now()}.wav`,n=new File([e],t,{type:e.type||"audio/wav"}),o=new FormData;o.append("image",n),o.append("subfolder","audio"),o.append("type","temp");const a=await f.fetchApi("/upload/image",{method:"POST",body:o});if(a.status!==200){const d=`Error uploading temp file: ${a.status} - ${a.statusText}`;throw m().addAlert(d),new Error(d)}return`audio/${(await a.json()).name} [temp]`},"convertBlobToFileAndSubmit"),registerWavEncoder:r(async()=>{if(!i)try{await p(await u()),i=!0}catch(e){e instanceof Error&&e.message.includes("already an encoder stored")?i=!0:s("encoder","Failed to register WAV encoder",e)}},"registerWavEncoder"),stopAllTracks:r(e=>{e&&(e.getTracks().forEach(t=>{t.stop()}),e=null)},"stopAllTracks")}},"useAudioService");export{y as t};
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=audioService-
|
|
3
|
+
//# sourceMappingURL=audioService-DvVaKhuU.js.map
|
comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js.map → audioService-DvVaKhuU.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioService-
|
|
1
|
+
{"version":3,"file":"audioService-DvVaKhuU.js","names":[],"sources":["../../src/services/audioService.ts"],"sourcesContent":["import { register } from 'extendable-media-recorder'\nimport { connect } from 'extendable-media-recorder-wav-encoder'\n\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport { api } from '@/scripts/api'\n\nexport interface AudioRecordingError {\n type: 'permission' | 'not_supported' | 'encoder' | 'recording' | 'unknown'\n message: string\n originalError?: unknown\n}\n\nlet isEncoderRegistered: boolean = false\n\nexport const useAudioService = () => {\n const handleError = (\n type: AudioRecordingError['type'],\n message: string,\n originalError?: unknown\n ) => {\n console.error(`Audio Service Error (${type}):`, message, originalError)\n }\n\n const stopAllTracks = (currentStream: MediaStream | null) => {\n if (currentStream) {\n currentStream.getTracks().forEach((track) => {\n track.stop()\n })\n currentStream = null\n }\n }\n\n const registerWavEncoder = async (): Promise<void> => {\n if (isEncoderRegistered) {\n return\n }\n\n try {\n await register(await connect())\n isEncoderRegistered = true\n } catch (err) {\n if (\n err instanceof Error &&\n err.message.includes('already an encoder stored')\n ) {\n isEncoderRegistered = true\n } else {\n handleError('encoder', 'Failed to register WAV encoder', err)\n }\n }\n }\n\n const convertBlobToFileAndSubmit = async (blob: Blob): Promise<string> => {\n const name = `recording-${Date.now()}.wav`\n const file = new File([blob], name, { type: blob.type || 'audio/wav' })\n\n const body = new FormData()\n body.append('image', file)\n body.append('subfolder', 'audio')\n body.append('type', 'temp')\n\n const resp = await api.fetchApi('/upload/image', {\n method: 'POST',\n body\n })\n\n if (resp.status !== 200) {\n const err = `Error uploading temp file: ${resp.status} - ${resp.statusText}`\n useToastStore().addAlert(err)\n throw new Error(err)\n }\n\n const tempAudio = await resp.json()\n\n return `audio/${tempAudio.name} [temp]`\n }\n\n return {\n // Methods\n convertBlobToFileAndSubmit,\n registerWavEncoder,\n stopAllTracks\n }\n}\n"],"mappings":"mLAYA,IAAI,EAA+B,GAEnC,MAAa,EAAA,EAAA,IAAwB,CACnC,MAAM,EAAA,EAAA,CACJ,EACA,EACA,IACG,CACH,QAAQ,MAAM,wBAAwB,CAAA,KAAU,EAAS,CAAA,GALrD,eA8DN,MAAO,CAEL,2BA3BiC,EAAA,MAAO,GAAgC,CACxE,MAAM,EAAO,aAAa,KAAK,IAAA,CAAK,OAC9B,EAAO,IAAI,KAAK,CAAC,CAAA,EAAO,EAAM,CAAE,KAAM,EAAK,MAAQ,WAAA,CAAa,EAEhE,EAAO,IAAI,SACjB,EAAK,OAAO,QAAS,CAAA,EACrB,EAAK,OAAO,YAAa,OAAA,EACzB,EAAK,OAAO,OAAQ,MAAA,EAEpB,MAAM,EAAO,MAAM,EAAI,SAAS,gBAAiB,CAC/C,OAAQ,OACR,KAAA,EACD,EAED,GAAI,EAAK,SAAW,IAAK,CACvB,MAAM,EAAM,8BAA8B,EAAK,MAAA,MAAY,EAAK,UAAA,GAChE,MAAA,EAAA,EAAgB,SAAS,CAAA,EACnB,IAAI,MAAM,CAAA,EAKlB,MAAO,UAFW,MAAM,EAAK,KAAA,GAEH,IAAA,WAtBO,8BA4BjC,mBAhDyB,EAAA,SAA2B,CACpD,GAAI,CAAA,EAIJ,GAAI,CACF,MAAM,EAAS,MAAM,EAAA,CAAS,EAC9B,EAAsB,SACf,EAAK,CAEV,aAAe,OACf,EAAI,QAAQ,SAAS,2BAAA,EAErB,EAAsB,GAEtB,EAAY,UAAW,iCAAkC,CAAA,IAfpC,sBAiDzB,cA1DI,EAAiB,GAAsC,CACvD,IACF,EAAc,UAAA,EAAY,QAAS,GAAU,CAC3C,EAAM,KAAA,IAER,EAAgB,OALd,mBATK"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var o=Object.defineProperty;var n=(r,t)=>o(r,"name",{value:t,configurable:!0});import{r as a}from"./api-
|
|
1
|
+
var o=Object.defineProperty;var n=(r,t)=>o(r,"name",{value:t,configurable:!0});import{r as a}from"./api-Dwq2LQIW.js";import{P as u}from"./dialogService-YG0RH337.js";function g(r){return isNaN(r)||r===0?"0:00":`${Math.floor(r/60)}:${Math.floor(r%60).toString().padStart(2,"0")}`}n(g,"formatTime");function b(r,t="input"){const[i,e]=s(r);return a.apiURL(f(i,e,t))}n(b,"getAudioUrlFromPath");function f(r,t,i="input"){return`/view?${["filename="+encodeURIComponent(t),"type="+i,"subfolder="+r,u.getRandParam().substring(1)].join("&")}`}n(f,"getResourceURL");function s(r){const t=r.lastIndexOf("/");return t===-1?["",r]:[r.substring(0,t),r.substring(t+1)]}n(s,"splitFilePath");export{s as i,b as n,f as r,g as t};
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=audioUtils-
|
|
3
|
+
//# sourceMappingURL=audioUtils-DD4rUYVZ.js.map
|
comfyui_frontend_package/static/assets/{audioUtils-DpjpcKbH.js.map → audioUtils-DD4rUYVZ.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioUtils-
|
|
1
|
+
{"version":3,"file":"audioUtils-DD4rUYVZ.js","names":[],"sources":["../../src/renderer/extensions/vueNodes/widgets/utils/audioUtils.ts"],"sourcesContent":["import type { ResultItemType } from '@/schemas/apiSchema'\nimport { api } from '@/scripts/api'\nimport { app } from '@/scripts/app'\n\n/**\n * Format time in MM:SS format\n */\nexport function formatTime(seconds: number): string {\n if (isNaN(seconds) || seconds === 0) return '0:00'\n\n const mins = Math.floor(seconds / 60)\n const secs = Math.floor(seconds % 60)\n return `${mins}:${secs.toString().padStart(2, '0')}`\n}\n\n/**\n * Get full audio URL from path\n */\nexport function getAudioUrlFromPath(\n path: string,\n type: ResultItemType = 'input'\n): string {\n const [subfolder, filename] = splitFilePath(path)\n return api.apiURL(getResourceURL(subfolder, filename, type))\n}\n\nexport function getResourceURL(\n subfolder: string,\n filename: string,\n type: ResultItemType = 'input'\n): string {\n const params = [\n 'filename=' + encodeURIComponent(filename),\n 'type=' + type,\n 'subfolder=' + subfolder,\n app.getRandParam().substring(1)\n ].join('&')\n\n return `/view?${params}`\n}\n\nexport function splitFilePath(path: string): [string, string] {\n const folder_separator = path.lastIndexOf('/')\n if (folder_separator === -1) {\n return ['', path]\n }\n return [\n path.substring(0, folder_separator),\n path.substring(folder_separator + 1)\n ]\n}\n"],"mappings":"qKAOA,SAAgB,EAAW,EAAyB,CAClD,OAAI,MAAM,CAAA,GAAY,IAAY,EAAU,OAIrC,GAFM,KAAK,MAAM,EAAU,EAAA,CAAG,IACxB,KAAK,MAAM,EAAU,EAAA,EACX,SAAA,EAAW,SAAS,EAAG,GAAA,CAAI,GALpC,EAAA,EAAA,cAWhB,SAAgB,EACd,EACA,EAAuB,QACf,CACR,KAAM,CAAC,EAAW,CAAA,EAAY,EAAc,CAAA,EAC5C,OAAO,EAAI,OAAO,EAAe,EAAW,EAAU,CAAA,CAAK,EAL7C,EAAA,EAAA,uBAQhB,SAAgB,EACd,EACA,EACA,EAAuB,QACf,CAQR,MAAO,SAPQ,CACb,YAAc,mBAAmB,CAAA,EACjC,QAAU,EACV,aAAe,EACf,EAAI,aAAA,EAAe,UAAU,CAAA,GAC7B,KAAK,GAAA,CAAI,GAVG,EAAA,EAAA,kBAehB,SAAgB,EAAc,EAAgC,CAC5D,MAAM,EAAmB,EAAK,YAAY,GAAA,EAC1C,OAAI,IAAqB,GAChB,CAAC,GAAI,CAAA,EAEP,CACL,EAAK,UAAU,EAAG,CAAA,EAClB,EAAK,UAAU,EAAmB,CAAA,CAAE,EAPxB,EAAA,EAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var g=Object.defineProperty;var s=(t,e)=>g(t,"name",{value:e,configurable:!0});import{Rr as h,ls as y,os as i}from"./vendor-other-DlQF6V2E.js";import{r as u}from"./api-
|
|
1
|
+
var g=Object.defineProperty;var s=(t,e)=>g(t,"name",{value:e,configurable:!0});import{Rr as h,ls as y,os as i}from"./vendor-other-DlQF6V2E.js";import{r as u}from"./api-Dwq2LQIW.js";var o="onboarding_survey";function a(t,e,r,c,p,d){const n={api_endpoint:e,error_type:r};c!==void 0&&(n.http_status=c),p&&(n.operation=p);const f={tags:n,extra:d?{...d}:void 0};y(t,f)}s(a,"captureApiError");function l(t,e){return t instanceof Error&&t.message.startsWith(e)}s(l,"isHttpError");async function w(){try{const t=await u.fetchApi("/user",{method:"GET",headers:{"Content-Type":"application/json"}});if(!t.ok){const e=new Error(`Failed to get user: ${t.statusText}`);throw a(e,"/user","http_error",t.status,void 0,{api:{method:"GET",endpoint:"/user",status_code:t.status,status_text:t.statusText}}),e}return t.json()}catch(t){throw l(t,"Failed to get user:")||a(t,"/user","network_error"),t}}s(w,"getUserCloudStatus");async function b(){try{const t=await u.fetchApi(`/settings/${o}`,{method:"GET",headers:{"Content-Type":"application/json"}});return t.ok?!h((await t.json()).value):(i({category:"auth",message:"Survey status check returned non-ok response",level:"info",data:{status:t.status,endpoint:`/settings/${o}`}}),!1)}catch(t){return y(t,{tags:{api_endpoint:"/settings/{key}",error_type:"network_error"},extra:{route_template:"/settings/{key}",route_actual:`/settings/${o}`},level:"warning"}),!1}}s(b,"getSurveyCompletedStatus");async function k(t){try{i({category:"auth",message:"Submitting survey",level:"info",data:{survey_fields:Object.keys(t)}});const e=await u.fetchApi("/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[o]:t})});if(!e.ok){const r=new Error(`Failed to submit survey: ${e.statusText}`);throw a(r,"/settings","http_error",e.status,"submit_survey",{survey:{field_count:Object.keys(t).length,field_names:Object.keys(t)}}),r}i({category:"auth",message:"Survey submitted successfully",level:"info"})}catch(e){throw l(e,"Failed to submit survey:")||a(e,"/settings","network_error",void 0,"submit_survey"),e}}s(k,"submitSurvey");export{w as n,k as r,b as t};
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=auth-
|
|
3
|
+
//# sourceMappingURL=auth-B9axG-yZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-
|
|
1
|
+
{"version":3,"file":"auth-B9axG-yZ.js","names":[],"sources":["../../src/platform/cloud/onboarding/auth.ts"],"sourcesContent":["import * as Sentry from '@sentry/vue'\nimport { isEmpty } from 'es-toolkit/compat'\n\nimport { api } from '@/scripts/api'\n\ninterface UserCloudStatus {\n status: 'active'\n}\n\nconst ONBOARDING_SURVEY_KEY = 'onboarding_survey'\n\n/**\n * Helper function to capture API errors with Sentry\n */\nfunction captureApiError(\n error: Error,\n endpoint: string,\n errorType: 'http_error' | 'network_error',\n httpStatus?: number,\n operation?: string,\n extraContext?: Record<string, any>\n) {\n const tags: Record<string, any> = {\n api_endpoint: endpoint,\n error_type: errorType\n }\n\n if (httpStatus !== undefined) {\n tags.http_status = httpStatus\n }\n\n if (operation) {\n tags.operation = operation\n }\n\n const sentryOptions: any = {\n tags,\n extra: extraContext ? { ...extraContext } : undefined\n }\n\n Sentry.captureException(error, sentryOptions)\n}\n\n/**\n * Helper function to check if error is already handled HTTP error\n */\nfunction isHttpError(error: unknown, errorMessagePrefix: string): boolean {\n return error instanceof Error && error.message.startsWith(errorMessagePrefix)\n}\n\nexport async function getUserCloudStatus(): Promise<UserCloudStatus> {\n try {\n const response = await api.fetchApi('/user', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n if (!response.ok) {\n const error = new Error(`Failed to get user: ${response.statusText}`)\n captureApiError(\n error,\n '/user',\n 'http_error',\n response.status,\n undefined,\n {\n api: {\n method: 'GET',\n endpoint: '/user',\n status_code: response.status,\n status_text: response.statusText\n }\n }\n )\n throw error\n }\n\n return response.json()\n } catch (error) {\n // Only capture network errors (not HTTP errors we already captured)\n if (!isHttpError(error, 'Failed to get user:')) {\n captureApiError(error as Error, '/user', 'network_error')\n }\n throw error\n }\n}\n\nexport async function getSurveyCompletedStatus(): Promise<boolean> {\n try {\n const response = await api.fetchApi(`/settings/${ONBOARDING_SURVEY_KEY}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n if (!response.ok) {\n // Not an error case - survey not completed is a valid state\n Sentry.addBreadcrumb({\n category: 'auth',\n message: 'Survey status check returned non-ok response',\n level: 'info',\n data: {\n status: response.status,\n endpoint: `/settings/${ONBOARDING_SURVEY_KEY}`\n }\n })\n return false\n }\n const data = await response.json()\n // Check if data exists and is not empty\n return !isEmpty(data.value)\n } catch (error) {\n // Network error - still capture it as it's not thrown from above\n Sentry.captureException(error, {\n tags: {\n api_endpoint: '/settings/{key}',\n error_type: 'network_error'\n },\n extra: {\n route_template: '/settings/{key}',\n route_actual: `/settings/${ONBOARDING_SURVEY_KEY}`\n },\n level: 'warning'\n })\n return false\n }\n}\n\nexport async function submitSurvey(\n survey: Record<string, unknown>\n): Promise<void> {\n try {\n Sentry.addBreadcrumb({\n category: 'auth',\n message: 'Submitting survey',\n level: 'info',\n data: {\n survey_fields: Object.keys(survey)\n }\n })\n\n const response = await api.fetchApi('/settings', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ [ONBOARDING_SURVEY_KEY]: survey })\n })\n\n if (!response.ok) {\n const error = new Error(`Failed to submit survey: ${response.statusText}`)\n captureApiError(\n error,\n '/settings',\n 'http_error',\n response.status,\n 'submit_survey',\n {\n survey: {\n field_count: Object.keys(survey).length,\n field_names: Object.keys(survey)\n }\n }\n )\n throw error\n }\n\n // Log successful survey submission\n Sentry.addBreadcrumb({\n category: 'auth',\n message: 'Survey submitted successfully',\n level: 'info'\n })\n } catch (error) {\n // Only capture network errors (not HTTP errors we already captured)\n if (!isHttpError(error, 'Failed to submit survey:')) {\n captureApiError(\n error as Error,\n '/settings',\n 'network_error',\n undefined,\n 'submit_survey'\n )\n }\n throw error\n }\n}\n"],"mappings":"qLASA,IAAM,EAAwB,oBAK9B,SAAS,EACP,EACA,EACA,EACA,EACA,EACA,EACA,CACA,MAAM,EAA4B,CAChC,aAAc,EACd,WAAY,GAGV,IAAe,SACjB,EAAK,YAAc,GAGjB,IACF,EAAK,UAAY,GAGnB,MAAM,EAAqB,CACzB,KAAA,EACA,MAAO,EAAe,CAAE,GAAG,CAAA,EAAiB,QAG9C,EAAwB,EAAO,CAAA,EA1BxB,EAAA,EAAA,mBAgCT,SAAS,EAAY,EAAgB,EAAqC,CACxE,OAAO,aAAiB,OAAS,EAAM,QAAQ,WAAW,CAAA,EADnD,EAAA,EAAA,eAIT,eAAsB,GAA+C,CACnE,GAAI,CACF,MAAM,EAAW,MAAM,EAAI,SAAS,QAAS,CAC3C,OAAQ,MACR,QAAS,CACP,eAAgB,kBAAA,EAEnB,EACD,GAAI,CAAC,EAAS,GAAI,CAChB,MAAM,EAAQ,IAAI,MAAM,uBAAuB,EAAS,UAAA,EAAA,EACxD,MAAA,EACE,EACA,QACA,aACA,EAAS,OACT,OACA,CACE,IAAK,CACH,OAAQ,MACR,SAAU,QACV,YAAa,EAAS,OACtB,YAAa,EAAS,WACvB,CACF,EAEG,EAGR,OAAO,EAAS,KAAA,QACT,EAAO,CAEd,MAAK,EAAY,EAAO,qBAAA,GACtB,EAAgB,EAAgB,QAAS,eAAA,EAErC,GAlCY,EAAA,EAAA,sBAsCtB,eAAsB,GAA6C,CACjE,GAAI,CACF,MAAM,EAAW,MAAM,EAAI,SAAS,aAAa,CAAA,GAAyB,CACxE,OAAQ,MACR,QAAS,CACP,eAAgB,kBAAA,EAEnB,EACD,OAAK,EAAS,GAeP,CAAC,GAFK,MAAM,EAAS,KAAA,GAEP,KAAA,GAbnB,EAAqB,CACnB,SAAU,OACV,QAAS,+CACT,MAAO,OACP,KAAM,CACJ,OAAQ,EAAS,OACjB,SAAU,aAAa,CAAA,IAE1B,EACM,UAKF,EAAO,CAEd,OAAA,EAAwB,EAAO,CAC7B,KAAM,CACJ,aAAc,kBACd,WAAY,iBAEd,MAAO,CACL,eAAgB,kBAChB,aAAc,aAAa,CAAA,IAE7B,MAAO,UACR,EACM,IArCW,EAAA,EAAA,4BAyCtB,eAAsB,EACpB,EACe,CACf,GAAI,CACF,EAAqB,CACnB,SAAU,OACV,QAAS,oBACT,MAAO,OACP,KAAM,CACJ,cAAe,OAAO,KAAK,CAAA,CAAO,EAErC,EAED,MAAM,EAAW,MAAM,EAAI,SAAS,YAAa,CAC/C,OAAQ,OACR,QAAS,CACP,eAAgB,kBAAA,EAElB,KAAM,KAAK,UAAU,CAAA,CAAG,CAAA,EAAwB,CAAA,CAAQ,EACzD,EAED,GAAI,CAAC,EAAS,GAAI,CAChB,MAAM,EAAQ,IAAI,MAAM,4BAA4B,EAAS,UAAA,EAAA,EAC7D,MAAA,EACE,EACA,YACA,aACA,EAAS,OACT,gBACA,CACE,OAAQ,CACN,YAAa,OAAO,KAAK,CAAA,EAAQ,OACjC,YAAa,OAAO,KAAK,CAAA,EAC1B,CACF,EAEG,EAIR,EAAqB,CACnB,SAAU,OACV,QAAS,gCACT,MAAO,OACR,QACM,EAAO,CAEd,MAAK,EAAY,EAAO,0BAAA,GACtB,EACE,EACA,YACA,gBACA,OACA,eAAA,EAGE,GAxDY,EAAA,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vendor-primevue-DcMRXJN3.js";import"./vendor-other-DlQF6V2E.js";import"./api-Dwq2LQIW.js";import"./colorUtil-CzxntCbX.js";import{t as i}from"./auth-B9axG-yZ.js";export{i as getSurveyCompletedStatus};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import"./vendor-primevue-DcMRXJN3.js";import{za as e}from"./vendor-other-DlQF6V2E.js";import{A as o}from"./api-
|
|
1
|
+
import"./vendor-primevue-DcMRXJN3.js";import{za as e}from"./vendor-other-DlQF6V2E.js";import{A as o}from"./api-Dwq2LQIW.js";import{r as i}from"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Sn as m}from"./dialogService-YG0RH337.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";var a=e(()=>{const r=[],t=i.value.server_health_alert;return t&&r.push({text:t.message,label:t.badge,variant:t.severity??"error",tooltip:t.tooltip}),r.push({label:o("g.beta"),text:"Comfy Cloud"}),r});m().registerExtension({name:"Comfy.Cloud.Badges",get topbarBadges(){return a.value}});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=cloudBadges-
|
|
3
|
+
//# sourceMappingURL=cloudBadges-D5mGJbRy.js.map
|
comfyui_frontend_package/static/assets/{cloudBadges-C1a7fBky.js.map → cloudBadges-D5mGJbRy.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudBadges-
|
|
1
|
+
{"version":3,"file":"cloudBadges-D5mGJbRy.js","names":[],"sources":["../../src/extensions/core/cloudBadges.ts"],"sourcesContent":["import { computed } from 'vue'\n\nimport { remoteConfig } from '@/platform/remoteConfig/remoteConfig'\nimport { t } from '@/i18n'\nimport { useExtensionService } from '@/services/extensionService'\nimport type { TopbarBadge } from '@/types/comfy'\n\nconst badges = computed<TopbarBadge[]>(() => {\n const result: TopbarBadge[] = []\n\n // Add server health alert first (if present)\n const alert = remoteConfig.value.server_health_alert\n if (alert) {\n result.push({\n text: alert.message,\n label: alert.badge,\n variant: alert.severity ?? 'error',\n tooltip: alert.tooltip\n })\n }\n\n // Always add cloud badge last (furthest right)\n result.push({\n label: t('g.beta'),\n text: 'Comfy Cloud'\n })\n\n return result\n})\n\nuseExtensionService().registerExtension({\n name: 'Comfy.Cloud.Badges',\n get topbarBadges() {\n return badges.value\n }\n})\n"],"mappings":"yhBAOA,IAAM,EAAS,EAAA,IAA8B,CAC3C,MAAM,EAAwB,CAAA,EAGxB,EAAQ,EAAa,MAAM,oBACjC,OAAI,GACF,EAAO,KAAK,CACV,KAAM,EAAM,QACZ,MAAO,EAAM,MACb,QAAS,EAAM,UAAY,QAC3B,QAAS,EAAM,QAChB,EAIH,EAAO,KAAK,CACV,MAAO,EAAE,QAAA,EACT,KAAM,cACP,EAEM,IAGT,EAAA,EAAsB,kBAAkB,CACtC,KAAM,qBACN,IAAI,cAAe,CACjB,OAAO,EAAO,OAEjB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var e=Object.defineProperty;var o=(r,i)=>e(r,"name",{value:i,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import"./vendor-other-DlQF6V2E.js";import{A as t}from"./api-
|
|
1
|
+
var e=Object.defineProperty;var o=(r,i)=>e(r,"name",{value:i,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import"./vendor-other-DlQF6V2E.js";import{A as t}from"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Sn as n}from"./dialogService-YG0RH337.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";var m="https://support.comfy.org/hc/en-us/requests/new?ticket_form_id=43066738713236",p=[{icon:"icon-[lucide--message-circle-question-mark]",label:t("actionbar.feedback"),tooltip:t("actionbar.feedbackTooltip"),onClick:o(()=>{window.open(m,"_blank","noopener,noreferrer")},"onClick")}];n().registerExtension({name:"Comfy.Cloud.FeedbackButton",actionBarButtons:p});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=cloudFeedbackTopbarButton-
|
|
3
|
+
//# sourceMappingURL=cloudFeedbackTopbarButton-RZUssOmb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudFeedbackTopbarButton-
|
|
1
|
+
{"version":3,"file":"cloudFeedbackTopbarButton-RZUssOmb.js","names":[],"sources":["../../src/extensions/core/cloudFeedbackTopbarButton.ts"],"sourcesContent":["import { t } from '@/i18n'\nimport { useExtensionService } from '@/services/extensionService'\nimport type { ActionBarButton } from '@/types/comfy'\n\n// Zendesk feedback URL - update this with the actual URL\nconst ZENDESK_FEEDBACK_URL =\n 'https://support.comfy.org/hc/en-us/requests/new?ticket_form_id=43066738713236'\n\nconst buttons: ActionBarButton[] = [\n {\n icon: 'icon-[lucide--message-circle-question-mark]',\n label: t('actionbar.feedback'),\n tooltip: t('actionbar.feedbackTooltip'),\n onClick: () => {\n window.open(ZENDESK_FEEDBACK_URL, '_blank', 'noopener,noreferrer')\n }\n }\n]\n\nuseExtensionService().registerExtension({\n name: 'Comfy.Cloud.FeedbackButton',\n actionBarButtons: buttons\n})\n"],"mappings":"+kBAKA,IAAM,EACJ,gFAEI,EAA6B,CACjC,CACE,KAAM,8CACN,MAAO,EAAE,oBAAA,EACT,QAAS,EAAE,2BAAA,EACX,QAAA,EAAA,IAAe,CACb,OAAO,KAAK,EAAsB,SAAU,qBAAA,GAD9C,WAGD,EAGH,EAAA,EAAsB,kBAAkB,CACtC,KAAM,6BACN,iBAAkB,EACnB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var i=Object.defineProperty;var t=(o,e)=>i(o,"name",{value:e,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import{ea as s}from"./vendor-other-DlQF6V2E.js";import{r as n}from"./api-
|
|
1
|
+
var i=Object.defineProperty;var t=(o,e)=>i(o,"name",{value:e,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import{ea as s}from"./vendor-other-DlQF6V2E.js";import{r as n}from"./api-Dwq2LQIW.js";import{n as a,r}from"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Dr as m,Nr as c,Sn as u}from"./dialogService-YG0RH337.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";async function f(){try{const o=await n.fetchApi("/features",{cache:"no-store"});if(o.ok){const e=await o.json();window.__CONFIG__=e,r.value=e;return}console.warn("Failed to load remote config:",o.statusText),(o.status===401||o.status===403)&&(window.__CONFIG__={},r.value={})}catch(o){console.error("Failed to fetch remote config:",o)}}t(f,"refreshRemoteConfig");u().registerExtension({name:"Comfy.Cloud.RemoteConfig",setup:t(async()=>{const{isLoggedIn:o}=m(),{isActiveSubscription:e}=c();s([o,e],()=>{o.value&&f()},{debounce:256,immediate:!0}),setInterval(()=>{a()},6e5)},"setup")});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=cloudRemoteConfig-
|
|
3
|
+
//# sourceMappingURL=cloudRemoteConfig-F9J0iGyF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudRemoteConfig-
|
|
1
|
+
{"version":3,"file":"cloudRemoteConfig-F9J0iGyF.js","names":[],"sources":["../../src/platform/remoteConfig/refreshRemoteConfig.ts","../../src/extensions/core/cloudRemoteConfig.ts"],"sourcesContent":["import { api } from '@/scripts/api'\n\nimport { remoteConfig } from './remoteConfig'\n\nexport async function refreshRemoteConfig(): Promise<void> {\n try {\n const response = await api.fetchApi('/features', { cache: 'no-store' })\n if (response.ok) {\n const config = await response.json()\n window.__CONFIG__ = config\n remoteConfig.value = config\n return\n }\n\n console.warn('Failed to load remote config:', response.statusText)\n if (response.status === 401 || response.status === 403) {\n window.__CONFIG__ = {}\n remoteConfig.value = {}\n }\n } catch (error) {\n console.error('Failed to fetch remote config:', error)\n }\n}\n","import { watchDebounced } from '@vueuse/core'\n\nimport { useCurrentUser } from '@/composables/auth/useCurrentUser'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport { loadRemoteConfig } from '@/platform/remoteConfig/remoteConfig'\nimport { refreshRemoteConfig } from '@/platform/remoteConfig/refreshRemoteConfig'\nimport { useExtensionService } from '@/services/extensionService'\n\n/**\n * Cloud-only extension that polls for remote config updates\n * Initial config load happens in main.ts before any other imports\n */\nuseExtensionService().registerExtension({\n name: 'Comfy.Cloud.RemoteConfig',\n\n setup: async () => {\n const { isLoggedIn } = useCurrentUser()\n const { isActiveSubscription } = useSubscription()\n\n watchDebounced(\n [isLoggedIn, isActiveSubscription],\n () => {\n if (!isLoggedIn.value) return\n void refreshRemoteConfig()\n },\n { debounce: 256, immediate: true }\n )\n\n // Poll for config updates every 10 minutes\n setInterval(() => void loadRemoteConfig(), 600_000)\n }\n})\n"],"mappings":"0nBAIA,eAAsB,GAAqC,CACzD,GAAI,CACF,MAAM,EAAW,MAAM,EAAI,SAAS,YAAa,CAAE,MAAO,UAAA,CAAY,EACtE,GAAI,EAAS,GAAI,CACf,MAAM,EAAS,MAAM,EAAS,KAAA,EAC9B,OAAO,WAAa,EACpB,EAAa,MAAQ,EACrB,OAGF,QAAQ,KAAK,gCAAiC,EAAS,UAAA,GACnD,EAAS,SAAW,KAAO,EAAS,SAAW,OACjD,OAAO,WAAa,CAAA,EACpB,EAAa,MAAQ,CAAA,SAEhB,EAAO,CACd,QAAQ,MAAM,iCAAkC,CAAA,GAhB9B,EAAA,EAAA,uBCQtB,EAAA,EAAsB,kBAAkB,CACtC,KAAM,2BAEN,MAAO,EAAA,SAAY,CACjB,KAAM,CAAE,WAAA,CAAA,EAAe,EAAA,EACjB,CAAE,qBAAA,CAAA,EAAyB,EAAA,EAEjC,EACE,CAAC,EAAY,CAAA,EAAqB,IAC5B,CACC,EAAW,OACX,EAAA,GAEP,CAAE,SAAU,IAAK,UAAW,GAAM,EAIpC,YAAA,IAAA,CAAuB,EAAA,GAAoB,GAAA,GAdtC,SAgBR"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var d=Object.defineProperty;var t=(o,n)=>d(o,"name",{value:n,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import"./vendor-other-DlQF6V2E.js";import{Lt as c,r as l}from"./api-
|
|
1
|
+
var d=Object.defineProperty;var t=(o,n)=>d(o,"name",{value:n,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import"./vendor-other-DlQF6V2E.js";import{Lt as c,r as l}from"./api-Dwq2LQIW.js";import{r as u}from"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Sn as m,Vr as h}from"./dialogService-YG0RH337.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";const r=t(()=>({createSession:t(async()=>{if(c)try{const e=h();let a;if(u.value.team_workspaces_enabled){const s=await e.getIdToken();if(!s){console.warn("Failed to create session cookie:","No Firebase token available for session creation");return}a={Authorization:`Bearer ${s}`}}else{const s=await e.getAuthHeader();if(!s){console.warn("Failed to create session cookie:","No auth header available for session creation");return}a=s}const i=await fetch(l.apiURL("/auth/session"),{method:"POST",credentials:"include",headers:{...a,"Content-Type":"application/json"}});if(!i.ok){const s=await i.json().catch(()=>({}));console.warn("Failed to create session cookie:",s.message||i.statusText)}}catch(e){console.warn("Failed to create session cookie:",e)}},"createSession"),deleteSession:t(async()=>{if(c)try{const e=await fetch(l.apiURL("/auth/session"),{method:"DELETE",credentials:"include"});if(!e.ok){const a=await e.json().catch(()=>({}));console.warn("Failed to delete session cookie:",a.message||e.statusText)}}catch(e){console.warn("Failed to delete session cookie:",e)}},"deleteSession")}),"useSessionCookie");m().registerExtension({name:"Comfy.Cloud.SessionCookie",onAuthUserResolved:t(async()=>{const{createSession:o}=r();await o()},"onAuthUserResolved"),onAuthTokenRefreshed:t(async()=>{const{createSession:o}=r();await o()},"onAuthTokenRefreshed"),onAuthUserLogout:t(async()=>{const{deleteSession:o}=r();await o()},"onAuthUserLogout")});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=cloudSessionCookie-
|
|
3
|
+
//# sourceMappingURL=cloudSessionCookie-MEORlqtg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudSessionCookie-
|
|
1
|
+
{"version":3,"file":"cloudSessionCookie-MEORlqtg.js","names":[],"sources":["../../src/platform/auth/session/useSessionCookie.ts","../../src/extensions/core/cloudSessionCookie.ts"],"sourcesContent":["import { isCloud } from '@/platform/distribution/types'\nimport { remoteConfig } from '@/platform/remoteConfig/remoteConfig'\nimport { api } from '@/scripts/api'\nimport { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'\n\n/**\n * Session cookie management for cloud authentication.\n * Creates and deletes session cookies on the ComfyUI server.\n */\nexport const useSessionCookie = () => {\n /**\n * Creates or refreshes the session cookie.\n * Called after login and on token refresh.\n *\n * When team_workspaces_enabled is true, uses Firebase token directly\n * (since getAuthHeader() returns workspace token which shouldn't be used for session creation).\n * When disabled, uses getAuthHeader() for backward compatibility.\n */\n const createSession = async (): Promise<void> => {\n if (!isCloud) return\n\n try {\n const authStore = useFirebaseAuthStore()\n\n let authHeader: Record<string, string>\n\n if (remoteConfig.value.team_workspaces_enabled) {\n const firebaseToken = await authStore.getIdToken()\n if (!firebaseToken) {\n console.warn(\n 'Failed to create session cookie:',\n 'No Firebase token available for session creation'\n )\n return\n }\n authHeader = { Authorization: `Bearer ${firebaseToken}` }\n } else {\n const header = await authStore.getAuthHeader()\n if (!header) {\n console.warn(\n 'Failed to create session cookie:',\n 'No auth header available for session creation'\n )\n return\n }\n authHeader = header\n }\n\n const response = await fetch(api.apiURL('/auth/session'), {\n method: 'POST',\n credentials: 'include',\n headers: {\n ...authHeader,\n 'Content-Type': 'application/json'\n }\n })\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}))\n console.warn(\n 'Failed to create session cookie:',\n errorData.message || response.statusText\n )\n }\n } catch (error) {\n console.warn('Failed to create session cookie:', error)\n }\n }\n\n /**\n * Deletes the session cookie.\n * Called on logout.\n */\n const deleteSession = async (): Promise<void> => {\n if (!isCloud) return\n\n try {\n const response = await fetch(api.apiURL('/auth/session'), {\n method: 'DELETE',\n credentials: 'include'\n })\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}))\n console.warn(\n 'Failed to delete session cookie:',\n errorData.message || response.statusText\n )\n }\n } catch (error) {\n console.warn('Failed to delete session cookie:', error)\n }\n }\n\n return {\n createSession,\n deleteSession\n }\n}\n","import { useSessionCookie } from '@/platform/auth/session/useSessionCookie'\nimport { useExtensionService } from '@/services/extensionService'\n\n/**\n * Cloud-only extension that manages session cookies for authentication.\n * Creates session cookie on login, refreshes it when token refreshes, and deletes on logout.\n */\nuseExtensionService().registerExtension({\n name: 'Comfy.Cloud.SessionCookie',\n\n onAuthUserResolved: async () => {\n const { createSession } = useSessionCookie()\n await createSession()\n },\n\n onAuthTokenRefreshed: async () => {\n const { createSession } = useSessionCookie()\n await createSession()\n },\n\n onAuthUserLogout: async () => {\n const { deleteSession } = useSessionCookie()\n await deleteSession()\n }\n})\n"],"mappings":"2mBASA,MAAa,EAAA,EAAA,KAqFJ,CACL,cA7EoB,EAAA,SAA2B,CAC/C,GAAK,EAEL,GAAI,CACF,MAAM,EAAY,EAAA,EAElB,IAAI,EAEJ,GAAI,EAAa,MAAM,wBAAyB,CAC9C,MAAM,EAAgB,MAAM,EAAU,WAAA,EACtC,GAAI,CAAC,EAAe,CAClB,QAAQ,KACN,mCACA,kDAAA,EAEF,OAEF,EAAa,CAAE,cAAe,UAAU,CAAA,EAAA,MACnC,CACL,MAAM,EAAS,MAAM,EAAU,cAAA,EAC/B,GAAI,CAAC,EAAQ,CACX,QAAQ,KACN,mCACA,+CAAA,EAEF,OAEF,EAAa,EAGf,MAAM,EAAW,MAAM,MAAM,EAAI,OAAO,eAAA,EAAkB,CACxD,OAAQ,OACR,YAAa,UACb,QAAS,CACP,GAAG,EACH,eAAgB,oBAEnB,EAED,GAAI,CAAC,EAAS,GAAI,CAChB,MAAM,EAAY,MAAM,EAAS,KAAA,EAAO,MAAA,KAAa,CAAA,EAAE,EACvD,QAAQ,KACN,mCACA,EAAU,SAAW,EAAS,UAAA,SAG3B,EAAO,CACd,QAAQ,KAAK,mCAAoC,CAAA,IA/C/B,iBA8EpB,cAvBoB,EAAA,SAA2B,CAC/C,GAAK,EAEL,GAAI,CACF,MAAM,EAAW,MAAM,MAAM,EAAI,OAAO,eAAA,EAAkB,CACxD,OAAQ,SACR,YAAa,UACd,EAED,GAAI,CAAC,EAAS,GAAI,CAChB,MAAM,EAAY,MAAM,EAAS,KAAA,EAAO,MAAA,KAAa,CAAA,EAAE,EACvD,QAAQ,KACN,mCACA,EAAU,SAAW,EAAS,UAAA,SAG3B,EAAO,CACd,QAAQ,KAAK,mCAAoC,CAAA,IAjB/B,mBAhEX,oBCFb,EAAA,EAAsB,kBAAkB,CACtC,KAAM,4BAEN,mBAAoB,EAAA,SAAY,CAC9B,KAAM,CAAE,cAAA,CAAA,EAAkB,EAAA,EAC1B,MAAM,EAAA,GAFY,sBAKpB,qBAAsB,EAAA,SAAY,CAChC,KAAM,CAAE,cAAA,CAAA,EAAkB,EAAA,EAC1B,MAAM,EAAA,GAFc,wBAKtB,iBAAkB,EAAA,SAAY,CAC5B,KAAM,CAAE,cAAA,CAAA,EAAkB,EAAA,EAC1B,MAAM,EAAA,GAFU,oBAInB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var o=Object.defineProperty;var r=(t,i)=>o(t,"name",{value:i,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import{wo as e}from"./vendor-other-DlQF6V2E.js";import"./api-
|
|
1
|
+
var o=Object.defineProperty;var r=(t,i)=>o(t,"name",{value:i,configurable:!0});import"./vendor-primevue-DcMRXJN3.js";import{wo as e}from"./vendor-other-DlQF6V2E.js";import"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Dr as s,Nr as m,Sn as p}from"./dialogService-YG0RH337.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";p().registerExtension({name:"Comfy.Cloud.Subscription",setup:r(async()=>{const{isLoggedIn:t}=s(),{requireActiveSubscription:i}=m();e(()=>t.value,r(()=>{t.value&&i()},"checkSubscriptionStatus"),{immediate:!0})},"setup")});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=cloudSubscription-
|
|
3
|
+
//# sourceMappingURL=cloudSubscription-CuWNXKVx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudSubscription-
|
|
1
|
+
{"version":3,"file":"cloudSubscription-CuWNXKVx.js","names":[],"sources":["../../src/extensions/core/cloudSubscription.ts"],"sourcesContent":["import { watch } from 'vue'\n\nimport { useCurrentUser } from '@/composables/auth/useCurrentUser'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport { useExtensionService } from '@/services/extensionService'\n\n/**\n * Cloud-only extension that enforces active subscription requirement\n */\nuseExtensionService().registerExtension({\n name: 'Comfy.Cloud.Subscription',\n\n setup: async () => {\n const { isLoggedIn } = useCurrentUser()\n const { requireActiveSubscription } = useSubscription()\n\n const checkSubscriptionStatus = () => {\n if (!isLoggedIn.value) return\n void requireActiveSubscription()\n }\n\n watch(() => isLoggedIn.value, checkSubscriptionStatus, {\n immediate: true\n })\n }\n})\n"],"mappings":"gmBASA,EAAA,EAAsB,kBAAkB,CACtC,KAAM,2BAEN,MAAO,EAAA,SAAY,CACjB,KAAM,CAAE,WAAA,CAAA,EAAe,EAAA,EACjB,CAAE,0BAAA,CAAA,EAA8B,EAAA,EAOtC,EAAA,IAAY,EAAW,MALjB,EAAA,IAAgC,CAC/B,EAAW,OACX,EAAA,GAFD,2BAKiD,CACrD,UAAW,EAAA,CACZ,GAXI,SAaR"}
|