@vived/host 5.3.1 → 5.4.0
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.
- package/dist/cjs/AppSandbox/Adapters/babylonInspectorSupportedAdapter.js.map +1 -1
- package/dist/cjs/AppSandbox/Adapters/devFeaturesEnabledAdapter.js.map +1 -1
- package/dist/cjs/AppSandbox/Adapters/sandboxStateAdapter.js.map +1 -1
- package/dist/cjs/AppSandbox/Adapters/showInspectorAdapter.js.map +1 -1
- package/dist/cjs/AppSandbox/Adapters/startInZSpaceAdapter.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/clearSandboxAppContainer.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/mountSandboxApp.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/setBabylonInspectorSupported.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/setSandboxAppContainer.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/setSandboxAppState.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/startSandboxApp.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/stopSandboxApp.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/toggleAllowDevFeatures.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/toggleShowInspector.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/toggleStartInZSpace.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/unmountSandboxApp.js.map +1 -1
- package/dist/cjs/AppSandbox/Entities/index.js.map +1 -1
- package/dist/cjs/AppSandbox/Factories/index.js.map +1 -1
- package/dist/cjs/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.js.map +1 -1
- package/dist/cjs/AppSandbox/Mocks/DevFeaturesEnabledPMMock.js.map +1 -1
- package/dist/cjs/AppSandbox/Mocks/MockShowBabylonInspectorUC.js.map +1 -1
- package/dist/cjs/AppSandbox/Mocks/RenderAppPMMock.js.map +1 -1
- package/dist/cjs/AppSandbox/Mocks/ShowInspectorPMMock.js.map +1 -1
- package/dist/cjs/AppSandbox/Mocks/StartInZSpacePMMock.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/BabylonInspectorSupportedPM.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/DevFeaturesEnabledPM.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/SandboxStatePM.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/ShowInspectorPM.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/StartInZSpacePM.js.map +1 -1
- package/dist/cjs/AppSandbox/UCs/ShowBabylonInspectorUC.js.map +1 -1
- package/dist/cjs/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js.map +1 -1
- package/dist/cjs/AppSandbox/index.js.map +1 -1
- package/dist/cjs/Apps/Adapters/activeAppPMAdapter.js.map +1 -1
- package/dist/cjs/Apps/Adapters/appListPMAdapter.js.map +1 -1
- package/dist/cjs/Apps/Adapters/appPMAdapter.js.map +1 -1
- package/dist/cjs/Apps/Adapters/index.js.map +1 -1
- package/dist/cjs/Apps/Controllers/index.js.map +1 -1
- package/dist/cjs/Apps/Controllers/updateApp.js.map +1 -1
- package/dist/cjs/Apps/Entities/AppEntity.js.map +1 -1
- package/dist/cjs/Apps/Entities/AppRepo.js.map +1 -1
- package/dist/cjs/Apps/Entities/index.js.map +1 -1
- package/dist/cjs/Apps/Factories/AppsFeatureFactory.js.map +1 -1
- package/dist/cjs/Apps/Factories/index.js.map +1 -1
- package/dist/cjs/Apps/Mocks/MockActiveAppPM.js.map +1 -1
- package/dist/cjs/Apps/Mocks/MockAppListPM.js.map +1 -1
- package/dist/cjs/Apps/Mocks/MockAppMounterUC.js.map +1 -1
- package/dist/cjs/Apps/Mocks/MockAppPM.js.map +1 -1
- package/dist/cjs/Apps/Mocks/MockStartAppUC.js.map +1 -1
- package/dist/cjs/Apps/Mocks/MockStopAppUC.js.map +1 -1
- package/dist/cjs/Apps/Mocks/MockUpdateAppUC.js.map +1 -1
- package/dist/cjs/Apps/Mocks/index.js.map +1 -1
- package/dist/cjs/Apps/PMs/ActiveAppPM.js.map +1 -1
- package/dist/cjs/Apps/PMs/AppPM.js.map +1 -1
- package/dist/cjs/Apps/PMs/AppsListPM.js.map +1 -1
- package/dist/cjs/Apps/PMs/index.js.map +1 -1
- package/dist/cjs/Apps/UCs/Mounters/MounterUC.js.map +1 -1
- package/dist/cjs/Apps/UCs/Mounters/index.js.map +1 -1
- package/dist/cjs/Apps/UCs/StartAppUC.js.map +1 -1
- package/dist/cjs/Apps/UCs/StopAppUC.js.map +1 -1
- package/dist/cjs/Apps/UCs/UpdateAppUC.js.map +1 -1
- package/dist/cjs/Apps/UCs/formAppIDWithVersion.js.map +1 -1
- package/dist/cjs/Apps/UCs/index.js.map +1 -1
- package/dist/cjs/Apps/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/Adapters/assetPluginPMAdapter.js.map +1 -1
- package/dist/cjs/AssetPlugin/Adapters/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/Controllers/clearAssetPluginContainer.js.map +1 -1
- package/dist/cjs/AssetPlugin/Controllers/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/Controllers/setAssetPluginContainer.js.map +1 -1
- package/dist/cjs/AssetPlugin/Entities/AssetPluginEntity.js.map +1 -1
- package/dist/cjs/AssetPlugin/Entities/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/Factories/AssetPluginFeatureFactory.js.map +1 -1
- package/dist/cjs/AssetPlugin/Factories/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/Factories/setupAssetsPluginForSandbox.js.map +1 -1
- package/dist/cjs/AssetPlugin/Mocks/MockAssetPluginContainerUC.js.map +1 -1
- package/dist/cjs/AssetPlugin/Mocks/MockAssetPluginPM.js.map +1 -1
- package/dist/cjs/AssetPlugin/Mocks/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/PM/AssetPluginPM.js.map +1 -1
- package/dist/cjs/AssetPlugin/PM/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/UCs/AssetPluginContainerUC.js.map +1 -1
- package/dist/cjs/AssetPlugin/UCs/SandboxAssetPluginContainerUC.js.map +1 -1
- package/dist/cjs/AssetPlugin/UCs/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/index.js.map +1 -1
- package/dist/cjs/Assets/Adapters/appAssetListAdapter.js.map +1 -1
- package/dist/cjs/Assets/Adapters/assetAdapter.js.map +1 -1
- package/dist/cjs/Assets/Adapters/assetFileAdapter.js.map +1 -1
- package/dist/cjs/Assets/Adapters/editingAppAssetAdapter.js.map +1 -1
- package/dist/cjs/Assets/Adapters/index.js.map +1 -1
- package/dist/cjs/Assets/Adapters/showArchivedAppAssetAdapter.js.map +1 -1
- package/dist/cjs/Assets/Controllers/archiveAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/deleteAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/downloadAssetFile.js.map +1 -1
- package/dist/cjs/Assets/Controllers/editAppAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/fetchAssetFile.js.map +1 -1
- package/dist/cjs/Assets/Controllers/getAppAssets.js.map +1 -1
- package/dist/cjs/Assets/Controllers/index.js.map +1 -1
- package/dist/cjs/Assets/Controllers/newAppAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/toggleShowArchivedAssets.js.map +1 -1
- package/dist/cjs/Assets/Controllers/updateAppAssetMeta.js.map +1 -1
- package/dist/cjs/Assets/Controllers/updateAssetFile.js.map +1 -1
- package/dist/cjs/Assets/Entities/AppAssetsEntity.js.map +1 -1
- package/dist/cjs/Assets/Entities/AssetEntity.js.map +1 -1
- package/dist/cjs/Assets/Entities/AssetRepo.js.map +1 -1
- package/dist/cjs/Assets/Entities/index.js.map +1 -1
- package/dist/cjs/Assets/Factories/AssetsFactory.js.map +1 -1
- package/dist/cjs/Assets/Factories/SandboxAssetsFactory.js.map +1 -1
- package/dist/cjs/Assets/Factories/index.js.map +1 -1
- package/dist/cjs/Assets/Factories/setupAssetsForSandbox.js.map +1 -1
- package/dist/cjs/Assets/Mocks/AppAssetListPMMock.js.map +1 -1
- package/dist/cjs/Assets/Mocks/AssetFilePMMock.js.map +1 -1
- package/dist/cjs/Assets/Mocks/AssetPMMock.js.map +1 -1
- package/dist/cjs/Assets/Mocks/EditingAppAssetPMMock.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockArchiveAsset.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockDeleteAssetUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockDownloadAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockEditAppAssetUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockGetAppAssetsUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockGetAssetBlobURLUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockGetAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockGetAssetUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockNewAppAsset.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockNewAssetUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockPrefetchAssets.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockUpdateAppAssetMetaUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/MockUpdateAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/Mocks/ShowArchivedAppAssetPMMock.js.map +1 -1
- package/dist/cjs/Assets/Mocks/index.js.map +1 -1
- package/dist/cjs/Assets/PMs/AppAssetListPM.js.map +1 -1
- package/dist/cjs/Assets/PMs/AssetFilePM.js.map +1 -1
- package/dist/cjs/Assets/PMs/AssetPM.js.map +1 -1
- package/dist/cjs/Assets/PMs/EditingAppAssetPM.js.map +1 -1
- package/dist/cjs/Assets/PMs/ShowArchivedAppAssetPM.js.map +1 -1
- package/dist/cjs/Assets/PMs/index.js.map +1 -1
- package/dist/cjs/Assets/UCs/ArchiveAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/DeleteAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/DownloadAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/EditAppAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAppAssetsUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAssetBlobURLUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/NewAppAssetUC.js +5 -1
- package/dist/cjs/Assets/UCs/NewAppAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/NewAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/PrefetchAssetsUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/UpdateAppAssetMetaUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/UpdateAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/index.js.map +1 -1
- package/dist/cjs/Assets/index.js.map +1 -1
- package/dist/cjs/Cache/Controllers/clearCache.js.map +1 -1
- package/dist/cjs/Cache/Controllers/index.js.map +1 -1
- package/dist/cjs/Cache/Entities/AssetCacheEntity.js.map +1 -1
- package/dist/cjs/Cache/Entities/CacheEntity.js.map +1 -1
- package/dist/cjs/Cache/Entities/ScriptCacheEntity.js.map +1 -1
- package/dist/cjs/Cache/Entities/index.js.map +1 -1
- package/dist/cjs/Cache/Factories/CacheFeatureFactory.js.map +1 -1
- package/dist/cjs/Cache/Factories/index.js.map +1 -1
- package/dist/cjs/Cache/Factories/setupCache.js.map +1 -1
- package/dist/cjs/Cache/Mocks/MockCacheEntity.js.map +1 -1
- package/dist/cjs/Cache/Mocks/MockGetAssetFromCacheUC.js.map +1 -1
- package/dist/cjs/Cache/Mocks/MockGetScriptFromCacheUC.js.map +1 -1
- package/dist/cjs/Cache/Mocks/MockStoreAssetInCacheUC.js.map +1 -1
- package/dist/cjs/Cache/Mocks/MockStoreScriptInCacheUC.js.map +1 -1
- package/dist/cjs/Cache/Mocks/index.js.map +1 -1
- package/dist/cjs/Cache/UCs/GetAssetFromCacheUC.js.map +1 -1
- package/dist/cjs/Cache/UCs/GetScriptFromCacheUC.js.map +1 -1
- package/dist/cjs/Cache/UCs/StoreAssetInCacheUC.js.map +1 -1
- package/dist/cjs/Cache/UCs/StoreScriptInCacheUC.js.map +1 -1
- package/dist/cjs/Cache/UCs/index.js.map +1 -1
- package/dist/cjs/Cache/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/Adapters/challengeResultsListAdapter.js.map +1 -1
- package/dist/cjs/ChallengeResults/Adapters/challengeScoreListAdapter.js.map +1 -1
- package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -1
- package/dist/cjs/ChallengeResults/Adapters/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/Entities/ChallengeResults.js.map +1 -1
- package/dist/cjs/ChallengeResults/Entities/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/Factories/ChallengeResultsFactory.js.map +1 -1
- package/dist/cjs/ChallengeResults/Factories/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/Factories/setupChallengeResults.js.map +1 -1
- package/dist/cjs/ChallengeResults/Mocks/ChallengeResultsListPMMock.js.map +1 -1
- package/dist/cjs/ChallengeResults/Mocks/MockChallengeScoreListPM.js.map +1 -1
- package/dist/cjs/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -1
- package/dist/cjs/ChallengeResults/Mocks/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/ChallengeScoreListPM.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/index.js.map +1 -1
- package/dist/cjs/Dialog/Adapters/alertDialogAdapter.js.map +1 -1
- package/dist/cjs/Dialog/Adapters/confirmDialogAdapter.js.map +1 -1
- package/dist/cjs/Dialog/Adapters/dialogQueueAdapter.js.map +1 -1
- package/dist/cjs/Dialog/Adapters/index.js.map +1 -1
- package/dist/cjs/Dialog/Adapters/markDownEditorDialogAdapters.js.map +1 -1
- package/dist/cjs/Dialog/Adapters/spinnerDialogAdapter.js.map +1 -1
- package/dist/cjs/Dialog/Controllers/activeDialogHasClosed.js.map +1 -1
- package/dist/cjs/Dialog/Controllers/index.js.map +1 -1
- package/dist/cjs/Dialog/Entities/Alert.js.map +1 -1
- package/dist/cjs/Dialog/Entities/Confirm.js.map +1 -1
- package/dist/cjs/Dialog/Entities/DialogQueue.js.map +1 -1
- package/dist/cjs/Dialog/Entities/MarkDownEditor.js.map +1 -1
- package/dist/cjs/Dialog/Entities/SelectModel.js.map +1 -1
- package/dist/cjs/Dialog/Entities/Spinner.js.map +1 -1
- package/dist/cjs/Dialog/Entities/index.js.map +1 -1
- package/dist/cjs/Dialog/Factories/SandboxDialogFactory.js.map +1 -1
- package/dist/cjs/Dialog/Factories/alertDialogFactory.js.map +1 -1
- package/dist/cjs/Dialog/Factories/confirmDialogFactory.js.map +1 -1
- package/dist/cjs/Dialog/Factories/index.js.map +1 -1
- package/dist/cjs/Dialog/Factories/markdownDialogEditorFactory.js.map +1 -1
- package/dist/cjs/Dialog/Factories/selectDialogModelFactory.js.map +1 -1
- package/dist/cjs/Dialog/Factories/setupDialogForSandbox.js.map +1 -1
- package/dist/cjs/Dialog/Factories/spinnerDialogFactory.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockAlertDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockConfirmDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockDialogQueuePM.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockMakeAlertDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockMakeConfirmDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockMakeMarkdownDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockMakeSelectModelDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockMakeSpinnerDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockMarkDownEditorDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/MockSpinnerDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/Mocks/index.js.map +1 -1
- package/dist/cjs/Dialog/PMs/AlertDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/PMs/ConfirmDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/PMs/DialogQueuePM.js.map +1 -1
- package/dist/cjs/Dialog/PMs/MarkDownEditorDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/PMs/SpinnerDialogPM.js.map +1 -1
- package/dist/cjs/Dialog/PMs/index.js.map +1 -1
- package/dist/cjs/Dialog/UCs/MakeAlertDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/UCs/MakeConfirmDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/UCs/MakeMarkdownDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/UCs/MakeSelectModelDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/UCs/MakeSpinnerDialogUC.js.map +1 -1
- package/dist/cjs/Dialog/UCs/index.js.map +1 -1
- package/dist/cjs/Dialog/index.js.map +1 -1
- package/dist/cjs/Dispatcher/Entities/HostDispatchEntity.js.map +1 -1
- package/dist/cjs/Dispatcher/Entities/index.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/DispatchEnableFeatureUCMock.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchAppDispatcherUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchIsAuthoringUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchSetStateUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchShowBabylonInspectorUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchStartAppUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchStartBrowseChannelsUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchStartZSpaceUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchStopAppUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchStopZSpaceUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatchThemeUC.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockHostDispatcher.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchDisposeAppUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchEnableFeatureUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchIsAuthoringUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchSetStateUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchShowBabylonInspectorUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchStartAppUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchStartBrowseChannelsUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchStartZSpaceUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchStopAppUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchStopZSpaceUC.js.map +1 -1
- package/dist/cjs/Dispatcher/UCs/DispatchThemeUC.js.map +1 -1
- package/dist/cjs/Dispatcher/index.js.map +1 -1
- package/dist/cjs/Events/Types/EventTypes.js.map +1 -1
- package/dist/cjs/Events/Types/PayloadTypes.js.map +1 -1
- package/dist/cjs/Events/Types/index.js.map +1 -1
- package/dist/cjs/Events/index.js.map +1 -1
- package/dist/cjs/Handler/Entities/HostHandler.js.map +1 -1
- package/dist/cjs/Handler/Entities/index.js.map +1 -1
- package/dist/cjs/Handler/UCs/CallbackAssetDTO.js.map +1 -1
- package/dist/cjs/Handler/UCs/CloseAssetSystemPlugin.js.map +1 -1
- package/dist/cjs/Handler/UCs/GetAssetBlobURLHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/GetAssetFolderURLHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/GetAssetMetaHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/GetAssetsForOwnerHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/GetLinkedAssetsHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/GoToNextStateHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/GoToPreviousStateHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/HasNextStateHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/HasPreviousStateHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/IsAssetFetchedHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/IsZSpaceAvailableHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/NewActivityAssetHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/OnAppIsReadyHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/OnStateChangeHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/OnStateCompleteHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/RegisterExternalStyleSheetsHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/RestoreCurrentStateHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/ShowAlertHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/ShowConfirmHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/ShowMarkDownEditorHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/ShowSelectModelHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/ShowSpinnerHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/StartZSpaceHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/StopZSpaceHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/SubmitActivityAssetHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/SubmitLogHandler.js.map +1 -1
- package/dist/cjs/Handler/UCs/SubmitResultHandler.js.map +1 -1
- package/dist/cjs/Handler/index.js.map +1 -1
- package/dist/cjs/Logger/Adapters/fatalErrorAdapter.js.map +1 -1
- package/dist/cjs/Logger/Adapters/forwardLogsToConsoleAdapter.js.map +1 -1
- package/dist/cjs/Logger/Adapters/index.js.map +1 -1
- package/dist/cjs/Logger/Adapters/logSummaryAdapter.js.map +1 -1
- package/dist/cjs/Logger/Controllers/clickDownloadLog.js.map +1 -1
- package/dist/cjs/Logger/Controllers/index.js.map +1 -1
- package/dist/cjs/Logger/Controllers/toggleForwardLogs.js.map +1 -1
- package/dist/cjs/Logger/Entities/LoggerEntity.js.map +1 -1
- package/dist/cjs/Logger/Entities/index.js.map +1 -1
- package/dist/cjs/Logger/Factories/SandboxLoggerFactory.js.map +1 -1
- package/dist/cjs/Logger/Factories/index.js.map +1 -1
- package/dist/cjs/Logger/Factories/setupLoggerForSandbox.js.map +1 -1
- package/dist/cjs/Logger/Mocks/ForwardLogsToConsolePMMock.js.map +1 -1
- package/dist/cjs/Logger/Mocks/LogSummaryPMMock.js.map +1 -1
- package/dist/cjs/Logger/Mocks/MockDownloadLogUC.js.map +1 -1
- package/dist/cjs/Logger/Mocks/MockFatalErrorPM.js.map +1 -1
- package/dist/cjs/Logger/Mocks/index.js.map +1 -1
- package/dist/cjs/Logger/PMs/FatalErrorPM.js.map +1 -1
- package/dist/cjs/Logger/PMs/ForwardLogsToConsolePM.js.map +1 -1
- package/dist/cjs/Logger/PMs/LogSummaryPM.js.map +1 -1
- package/dist/cjs/Logger/PMs/index.js.map +1 -1
- package/dist/cjs/Logger/UCs/DownloadLogUC.js.map +1 -1
- package/dist/cjs/Logger/UCs/index.js.map +1 -1
- package/dist/cjs/Logger/index.js.map +1 -1
- package/dist/cjs/Snackbar/Adapters/index.js.map +1 -1
- package/dist/cjs/Snackbar/Adapters/snackbarAdapter.js.map +1 -1
- package/dist/cjs/Snackbar/Controllers/callActiveSnackbarAction.js.map +1 -1
- package/dist/cjs/Snackbar/Controllers/dismissActiveSnackbar.js.map +1 -1
- package/dist/cjs/Snackbar/Controllers/index.js.map +1 -1
- package/dist/cjs/Snackbar/Controllers/makeSnackbar.js.map +1 -1
- package/dist/cjs/Snackbar/Entities/SnackbarRepo.js.map +1 -1
- package/dist/cjs/Snackbar/Entities/index.js.map +1 -1
- package/dist/cjs/Snackbar/Factories/index.js.map +1 -1
- package/dist/cjs/Snackbar/Factories/setupSnackbar.js.map +1 -1
- package/dist/cjs/Snackbar/Mocks/SnackbarPMMock.js.map +1 -1
- package/dist/cjs/Snackbar/Mocks/index.js.map +1 -1
- package/dist/cjs/Snackbar/PMs/SnackbarPM.js.map +1 -1
- package/dist/cjs/Snackbar/PMs/index.js.map +1 -1
- package/dist/cjs/Snackbar/index.js.map +1 -1
- package/dist/cjs/StateMachine/Adapters/editingStateAdapter.js.map +1 -1
- package/dist/cjs/StateMachine/Adapters/hostStateAdapter.js.map +1 -1
- package/dist/cjs/StateMachine/Adapters/hostStateMachinePMAdapter.js.map +1 -1
- package/dist/cjs/StateMachine/Adapters/index.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/cancelEditing.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/consumeState.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/deleteState.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/duplicateState.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/editActiveState.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/editState.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/editStateName.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/endActivity.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/index.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/newState.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/saveAuthoring.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/savePersistentStates.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/setTransitionDuration.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/transitionToState.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/HostEditingStateEntity.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/HostStateEntity.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/HostStateMachine.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/index.js.map +1 -1
- package/dist/cjs/StateMachine/Factories/SandboxStateMachineFactory.js.map +1 -1
- package/dist/cjs/StateMachine/Factories/index.js.map +1 -1
- package/dist/cjs/StateMachine/Factories/setupStateMachineForSandbox.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/CancelEditingUCMock.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/ConsumeStateUCMock.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/EditStateUCMock.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/EndActivityUCMock.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockDeleteStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockDuplicateStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockEditActiveStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockHostEditingStateEntity.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockHostStateEntity.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockHostStateMachinePM.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockHostStatePM.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockIsEditingStatePM.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockSaveAuthoringUC.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockTransitionToStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/NewStateUCMock.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/SavePersistentStatesMock.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/index.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/EditingStatePM.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/HostStatePM.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/CancelEditing/CancelEditingUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/CancelEditing/CancelSandboxEditingUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/CancelEditing/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/ConsumeState/ConsumeSandboxStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/ConsumeState/ConsumeStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/ConsumeState/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/DeleteStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/DuplicateStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditActiveState/EditActiveSandboxStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditActiveState/EditActiveStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditActiveState/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditState/EditSandboxStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditState/EditStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditState/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditStateNameUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EndActivity/EndActivityUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EndActivity/EndSandboxActivityUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EndActivity/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/NewState/NewSandboxStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/NewState/NewStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/NewState/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/SaveAuthoring/SaveAuthoringSandboxUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/SaveAuthoring/SaveAuthoringUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/SaveAuthoring/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/SavePersistentStates.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/TransitionToState/TransitionToSandboxStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/TransitionToState/TransitionToStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/TransitionToState/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/setSandboxStatesFromData.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/setSandboxStatesFromStringData.js.map +1 -1
- package/dist/cjs/StateMachine/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Adapter/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Adapter/themeColorAdapter.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/getOnPrimaryColor.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/getOnSurfaceColor.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/getPrimaryColor.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/getSurfaceColor.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/getSurfaceContainerColor.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/setThemeByName.js.map +1 -1
- package/dist/cjs/ThemeColors/Data/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Entities/HostThemeEntity.js.map +1 -1
- package/dist/cjs/ThemeColors/Entities/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Factories/ThemeFactory.js.map +1 -1
- package/dist/cjs/ThemeColors/Factories/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Factories/setupTheme.js.map +1 -1
- package/dist/cjs/ThemeColors/Mocks/MockSetThemeUC.js.map +1 -1
- package/dist/cjs/ThemeColors/Mocks/MockThemeColorPM.js.map +1 -1
- package/dist/cjs/ThemeColors/Mocks/index.js.map +1 -1
- package/dist/cjs/ThemeColors/PM/ThemeColorsPM.js.map +1 -1
- package/dist/cjs/ThemeColors/PM/index.js.map +1 -1
- package/dist/cjs/ThemeColors/UCs/SetThemeUC.js.map +1 -1
- package/dist/cjs/ThemeColors/UCs/index.js.map +1 -1
- package/dist/cjs/ThemeColors/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Adapters/apiStageAdapter.js.map +1 -1
- package/dist/cjs/VivedAPI/Adapters/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Adapters/userTokenAdapter.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/loginUser.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/logoutUser.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/refreshAuthenticatedUser.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/setApiStage.js.map +1 -1
- package/dist/cjs/VivedAPI/Entities/VivedAPIEntity.js.map +1 -1
- package/dist/cjs/VivedAPI/Entities/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/SandboxVivedAPIFactory.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/VivedAPIFactory.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/setupAPI.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/setupVivedAPIForSandbox.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/ApiStagePMMock.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockBasicFetchUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockBlobRequestUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockDeleteAssetOnAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockFetchAssetFileFromAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockFetchAssetMetaFromAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockFileUpload.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockGetAppFromAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockGetAssetsForOwnerUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockJsonRequestUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockPatchAssetFileUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockPatchAssetIsArchivedUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockPatchAssetMetaUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockPatchAssetUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockPostNewAssetUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockSignedAuthToken.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockUserLoginUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/UserTokenPMMock.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/index.js.map +1 -1
- package/dist/cjs/VivedAPI/PMs/ApiStagePM.js.map +1 -1
- package/dist/cjs/VivedAPI/PMs/UserTokenPM.js.map +1 -1
- package/dist/cjs/VivedAPI/PMs/index.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/BasicFetchUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/BlobRequestUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/DeleteAssetOnAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/FetchAssetFileFromAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/FetchAssetMetaFromAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/FileUploadUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/GetAppFromAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/JsonRequestUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/PatchAssetFileUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/PatchAssetIsArchivedUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/PatchAssetMetaUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/PatchAssetUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.js +7 -2
- package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/SignedAuthTokenUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/UserAuthUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/index.js.map +1 -1
- package/dist/cjs/VivedAPI/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Adapters/emulateZSpaceAdapter.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Adapters/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Adapters/zSpaceIsActiveAdapter.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Controllers/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Controllers/setZSpaceIsSupported.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Controllers/startZSpace.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Controllers/stopZSpace.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Controllers/toggleEmulateZSpace.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Entities/ZSpaceHost.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Entities/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Factories/SandboxZSpaceFactory.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Factories/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Factories/setupZSpaceForSandbox.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/EmulateZSpacePMMock.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/MockStartZSpaceUC.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/MockStopZSpaceUC.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/MockXRSession.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/ZSpaceIsActivePMMock.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/PMs/EmulateZSpacePM.js.map +1 -1
- package/dist/cjs/ZSpaceHost/PMs/ZSpaceIsActivePM.js.map +1 -1
- package/dist/cjs/ZSpaceHost/PMs/ZSpaceIsSupportedPM.js.map +1 -1
- package/dist/cjs/ZSpaceHost/PMs/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/StartZSpace/StartSandboxZSpaceUC.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/StartZSpace/StartZSpaceUC.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/StartZSpace/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/StopZSpace/StopSandboxZSpaceUC.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/StopZSpace/StopZSpaceUC.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/StopZSpace/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/checkForZSpaceSupport.js.map +1 -1
- package/dist/cjs/ZSpaceHost/UCs/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/index.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/AppSandbox/Adapters/babylonInspectorSupportedAdapter.js.map +1 -1
- package/dist/esm/AppSandbox/Adapters/devFeaturesEnabledAdapter.js.map +1 -1
- package/dist/esm/AppSandbox/Adapters/sandboxStateAdapter.js.map +1 -1
- package/dist/esm/AppSandbox/Adapters/showInspectorAdapter.js.map +1 -1
- package/dist/esm/AppSandbox/Adapters/startInZSpaceAdapter.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/clearSandboxAppContainer.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/mountSandboxApp.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/setBabylonInspectorSupported.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/setSandboxAppContainer.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/setSandboxAppState.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/startSandboxApp.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/stopSandboxApp.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/toggleAllowDevFeatures.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/toggleShowInspector.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/toggleStartInZSpace.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/unmountSandboxApp.js.map +1 -1
- package/dist/esm/AppSandbox/Entities/index.js.map +1 -1
- package/dist/esm/AppSandbox/Factories/index.js.map +1 -1
- package/dist/esm/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.js.map +1 -1
- package/dist/esm/AppSandbox/Mocks/DevFeaturesEnabledPMMock.js.map +1 -1
- package/dist/esm/AppSandbox/Mocks/MockShowBabylonInspectorUC.js.map +1 -1
- package/dist/esm/AppSandbox/Mocks/RenderAppPMMock.js.map +1 -1
- package/dist/esm/AppSandbox/Mocks/ShowInspectorPMMock.js.map +1 -1
- package/dist/esm/AppSandbox/Mocks/StartInZSpacePMMock.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/BabylonInspectorSupportedPM.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/DevFeaturesEnabledPM.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/SandboxStatePM.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/ShowInspectorPM.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/StartInZSpacePM.js.map +1 -1
- package/dist/esm/AppSandbox/UCs/ShowBabylonInspectorUC.js.map +1 -1
- package/dist/esm/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js.map +1 -1
- package/dist/esm/AppSandbox/index.js.map +1 -1
- package/dist/esm/Apps/Adapters/activeAppPMAdapter.js.map +1 -1
- package/dist/esm/Apps/Adapters/appListPMAdapter.js.map +1 -1
- package/dist/esm/Apps/Adapters/appPMAdapter.js.map +1 -1
- package/dist/esm/Apps/Adapters/index.js.map +1 -1
- package/dist/esm/Apps/Controllers/index.js.map +1 -1
- package/dist/esm/Apps/Controllers/updateApp.js.map +1 -1
- package/dist/esm/Apps/Entities/AppEntity.js.map +1 -1
- package/dist/esm/Apps/Entities/AppRepo.js.map +1 -1
- package/dist/esm/Apps/Entities/index.js.map +1 -1
- package/dist/esm/Apps/Factories/AppsFeatureFactory.js.map +1 -1
- package/dist/esm/Apps/Factories/index.js.map +1 -1
- package/dist/esm/Apps/Mocks/MockActiveAppPM.js.map +1 -1
- package/dist/esm/Apps/Mocks/MockAppListPM.js.map +1 -1
- package/dist/esm/Apps/Mocks/MockAppMounterUC.js.map +1 -1
- package/dist/esm/Apps/Mocks/MockAppPM.js.map +1 -1
- package/dist/esm/Apps/Mocks/MockStartAppUC.js.map +1 -1
- package/dist/esm/Apps/Mocks/MockStopAppUC.js.map +1 -1
- package/dist/esm/Apps/Mocks/MockUpdateAppUC.js.map +1 -1
- package/dist/esm/Apps/Mocks/index.js.map +1 -1
- package/dist/esm/Apps/PMs/ActiveAppPM.js.map +1 -1
- package/dist/esm/Apps/PMs/AppPM.js.map +1 -1
- package/dist/esm/Apps/PMs/AppsListPM.js.map +1 -1
- package/dist/esm/Apps/PMs/index.js.map +1 -1
- package/dist/esm/Apps/UCs/Mounters/MounterUC.js.map +1 -1
- package/dist/esm/Apps/UCs/Mounters/index.js.map +1 -1
- package/dist/esm/Apps/UCs/StartAppUC.js.map +1 -1
- package/dist/esm/Apps/UCs/StopAppUC.js.map +1 -1
- package/dist/esm/Apps/UCs/UpdateAppUC.js.map +1 -1
- package/dist/esm/Apps/UCs/formAppIDWithVersion.js.map +1 -1
- package/dist/esm/Apps/UCs/index.js.map +1 -1
- package/dist/esm/Apps/index.js.map +1 -1
- package/dist/esm/AssetPlugin/Adapters/assetPluginPMAdapter.js.map +1 -1
- package/dist/esm/AssetPlugin/Adapters/index.js.map +1 -1
- package/dist/esm/AssetPlugin/Controllers/clearAssetPluginContainer.js.map +1 -1
- package/dist/esm/AssetPlugin/Controllers/index.js.map +1 -1
- package/dist/esm/AssetPlugin/Controllers/setAssetPluginContainer.js.map +1 -1
- package/dist/esm/AssetPlugin/Entities/AssetPluginEntity.js.map +1 -1
- package/dist/esm/AssetPlugin/Entities/index.js.map +1 -1
- package/dist/esm/AssetPlugin/Factories/AssetPluginFeatureFactory.js.map +1 -1
- package/dist/esm/AssetPlugin/Factories/index.js.map +1 -1
- package/dist/esm/AssetPlugin/Factories/setupAssetsPluginForSandbox.js.map +1 -1
- package/dist/esm/AssetPlugin/Mocks/MockAssetPluginContainerUC.js.map +1 -1
- package/dist/esm/AssetPlugin/Mocks/MockAssetPluginPM.js.map +1 -1
- package/dist/esm/AssetPlugin/Mocks/index.js.map +1 -1
- package/dist/esm/AssetPlugin/PM/AssetPluginPM.js.map +1 -1
- package/dist/esm/AssetPlugin/PM/index.js.map +1 -1
- package/dist/esm/AssetPlugin/UCs/AssetPluginContainerUC.js.map +1 -1
- package/dist/esm/AssetPlugin/UCs/SandboxAssetPluginContainerUC.js.map +1 -1
- package/dist/esm/AssetPlugin/UCs/index.js.map +1 -1
- package/dist/esm/AssetPlugin/index.js.map +1 -1
- package/dist/esm/Assets/Adapters/appAssetListAdapter.js.map +1 -1
- package/dist/esm/Assets/Adapters/assetAdapter.js.map +1 -1
- package/dist/esm/Assets/Adapters/assetFileAdapter.js.map +1 -1
- package/dist/esm/Assets/Adapters/editingAppAssetAdapter.js.map +1 -1
- package/dist/esm/Assets/Adapters/index.js.map +1 -1
- package/dist/esm/Assets/Adapters/showArchivedAppAssetAdapter.js.map +1 -1
- package/dist/esm/Assets/Controllers/archiveAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/deleteAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/downloadAssetFile.js.map +1 -1
- package/dist/esm/Assets/Controllers/editAppAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/fetchAssetFile.js.map +1 -1
- package/dist/esm/Assets/Controllers/getAppAssets.js.map +1 -1
- package/dist/esm/Assets/Controllers/index.js.map +1 -1
- package/dist/esm/Assets/Controllers/newAppAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/toggleShowArchivedAssets.js.map +1 -1
- package/dist/esm/Assets/Controllers/updateAppAssetMeta.js.map +1 -1
- package/dist/esm/Assets/Controllers/updateAssetFile.js.map +1 -1
- package/dist/esm/Assets/Entities/AppAssetsEntity.js.map +1 -1
- package/dist/esm/Assets/Entities/AssetEntity.js.map +1 -1
- package/dist/esm/Assets/Entities/AssetRepo.js.map +1 -1
- package/dist/esm/Assets/Entities/index.js.map +1 -1
- package/dist/esm/Assets/Factories/AssetsFactory.js.map +1 -1
- package/dist/esm/Assets/Factories/SandboxAssetsFactory.js.map +1 -1
- package/dist/esm/Assets/Factories/index.js.map +1 -1
- package/dist/esm/Assets/Factories/setupAssetsForSandbox.js.map +1 -1
- package/dist/esm/Assets/Mocks/AppAssetListPMMock.js.map +1 -1
- package/dist/esm/Assets/Mocks/AssetFilePMMock.js.map +1 -1
- package/dist/esm/Assets/Mocks/AssetPMMock.js.map +1 -1
- package/dist/esm/Assets/Mocks/EditingAppAssetPMMock.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockArchiveAsset.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockDeleteAssetUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockDownloadAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockEditAppAssetUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockGetAppAssetsUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockGetAssetBlobURLUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockGetAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockGetAssetUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockNewAppAsset.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockNewAssetUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockPrefetchAssets.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockUpdateAppAssetMetaUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/MockUpdateAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/Mocks/ShowArchivedAppAssetPMMock.js.map +1 -1
- package/dist/esm/Assets/Mocks/index.js.map +1 -1
- package/dist/esm/Assets/PMs/AppAssetListPM.js.map +1 -1
- package/dist/esm/Assets/PMs/AssetFilePM.js.map +1 -1
- package/dist/esm/Assets/PMs/AssetPM.js.map +1 -1
- package/dist/esm/Assets/PMs/EditingAppAssetPM.js.map +1 -1
- package/dist/esm/Assets/PMs/ShowArchivedAppAssetPM.js.map +1 -1
- package/dist/esm/Assets/PMs/index.js.map +1 -1
- package/dist/esm/Assets/UCs/ArchiveAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/DeleteAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/DownloadAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/UCs/EditAppAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAppAssetsUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetBlobURLUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/NewAppAssetUC.js +5 -1
- package/dist/esm/Assets/UCs/NewAppAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/NewAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/PrefetchAssetsUC.js.map +1 -1
- package/dist/esm/Assets/UCs/UpdateAppAssetMetaUC.js.map +1 -1
- package/dist/esm/Assets/UCs/UpdateAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/UCs/index.js.map +1 -1
- package/dist/esm/Assets/index.js.map +1 -1
- package/dist/esm/Cache/Controllers/clearCache.js.map +1 -1
- package/dist/esm/Cache/Controllers/index.js.map +1 -1
- package/dist/esm/Cache/Entities/AssetCacheEntity.js.map +1 -1
- package/dist/esm/Cache/Entities/CacheEntity.js.map +1 -1
- package/dist/esm/Cache/Entities/ScriptCacheEntity.js.map +1 -1
- package/dist/esm/Cache/Entities/index.js.map +1 -1
- package/dist/esm/Cache/Factories/CacheFeatureFactory.js.map +1 -1
- package/dist/esm/Cache/Factories/index.js.map +1 -1
- package/dist/esm/Cache/Factories/setupCache.js.map +1 -1
- package/dist/esm/Cache/Mocks/MockCacheEntity.js.map +1 -1
- package/dist/esm/Cache/Mocks/MockGetAssetFromCacheUC.js.map +1 -1
- package/dist/esm/Cache/Mocks/MockGetScriptFromCacheUC.js.map +1 -1
- package/dist/esm/Cache/Mocks/MockStoreAssetInCacheUC.js.map +1 -1
- package/dist/esm/Cache/Mocks/MockStoreScriptInCacheUC.js.map +1 -1
- package/dist/esm/Cache/Mocks/index.js.map +1 -1
- package/dist/esm/Cache/UCs/GetAssetFromCacheUC.js.map +1 -1
- package/dist/esm/Cache/UCs/GetScriptFromCacheUC.js.map +1 -1
- package/dist/esm/Cache/UCs/StoreAssetInCacheUC.js.map +1 -1
- package/dist/esm/Cache/UCs/StoreScriptInCacheUC.js.map +1 -1
- package/dist/esm/Cache/UCs/index.js.map +1 -1
- package/dist/esm/Cache/index.js.map +1 -1
- package/dist/esm/ChallengeResults/Adapters/challengeResultsListAdapter.js.map +1 -1
- package/dist/esm/ChallengeResults/Adapters/challengeScoreListAdapter.js.map +1 -1
- package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -1
- package/dist/esm/ChallengeResults/Adapters/index.js.map +1 -1
- package/dist/esm/ChallengeResults/Entities/ChallengeResults.js.map +1 -1
- package/dist/esm/ChallengeResults/Entities/index.js.map +1 -1
- package/dist/esm/ChallengeResults/Factories/ChallengeResultsFactory.js.map +1 -1
- package/dist/esm/ChallengeResults/Factories/index.js.map +1 -1
- package/dist/esm/ChallengeResults/Factories/setupChallengeResults.js.map +1 -1
- package/dist/esm/ChallengeResults/Mocks/ChallengeResultsListPMMock.js.map +1 -1
- package/dist/esm/ChallengeResults/Mocks/MockChallengeScoreListPM.js.map +1 -1
- package/dist/esm/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -1
- package/dist/esm/ChallengeResults/Mocks/index.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/ChallengeScoreListPM.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/index.js.map +1 -1
- package/dist/esm/ChallengeResults/index.js.map +1 -1
- package/dist/esm/Dialog/Adapters/alertDialogAdapter.js.map +1 -1
- package/dist/esm/Dialog/Adapters/confirmDialogAdapter.js.map +1 -1
- package/dist/esm/Dialog/Adapters/dialogQueueAdapter.js.map +1 -1
- package/dist/esm/Dialog/Adapters/index.js.map +1 -1
- package/dist/esm/Dialog/Adapters/markDownEditorDialogAdapters.js.map +1 -1
- package/dist/esm/Dialog/Adapters/spinnerDialogAdapter.js.map +1 -1
- package/dist/esm/Dialog/Controllers/activeDialogHasClosed.js.map +1 -1
- package/dist/esm/Dialog/Controllers/index.js.map +1 -1
- package/dist/esm/Dialog/Entities/Alert.js.map +1 -1
- package/dist/esm/Dialog/Entities/Confirm.js.map +1 -1
- package/dist/esm/Dialog/Entities/DialogQueue.js.map +1 -1
- package/dist/esm/Dialog/Entities/MarkDownEditor.js.map +1 -1
- package/dist/esm/Dialog/Entities/SelectModel.js.map +1 -1
- package/dist/esm/Dialog/Entities/Spinner.js.map +1 -1
- package/dist/esm/Dialog/Entities/index.js.map +1 -1
- package/dist/esm/Dialog/Factories/SandboxDialogFactory.js.map +1 -1
- package/dist/esm/Dialog/Factories/alertDialogFactory.js.map +1 -1
- package/dist/esm/Dialog/Factories/confirmDialogFactory.js.map +1 -1
- package/dist/esm/Dialog/Factories/index.js.map +1 -1
- package/dist/esm/Dialog/Factories/markdownDialogEditorFactory.js.map +1 -1
- package/dist/esm/Dialog/Factories/selectDialogModelFactory.js.map +1 -1
- package/dist/esm/Dialog/Factories/setupDialogForSandbox.js.map +1 -1
- package/dist/esm/Dialog/Factories/spinnerDialogFactory.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockAlertDialogPM.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockConfirmDialogPM.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockDialogQueuePM.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockMakeAlertDialogUC.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockMakeConfirmDialogUC.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockMakeMarkdownDialogUC.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockMakeSelectModelDialogUC.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockMakeSpinnerDialogUC.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockMarkDownEditorDialogPM.js.map +1 -1
- package/dist/esm/Dialog/Mocks/MockSpinnerDialogPM.js.map +1 -1
- package/dist/esm/Dialog/Mocks/index.js.map +1 -1
- package/dist/esm/Dialog/PMs/AlertDialogPM.js.map +1 -1
- package/dist/esm/Dialog/PMs/ConfirmDialogPM.js.map +1 -1
- package/dist/esm/Dialog/PMs/DialogQueuePM.js.map +1 -1
- package/dist/esm/Dialog/PMs/MarkDownEditorDialogPM.js.map +1 -1
- package/dist/esm/Dialog/PMs/SpinnerDialogPM.js.map +1 -1
- package/dist/esm/Dialog/PMs/index.js.map +1 -1
- package/dist/esm/Dialog/UCs/MakeAlertDialogUC.js.map +1 -1
- package/dist/esm/Dialog/UCs/MakeConfirmDialogUC.js.map +1 -1
- package/dist/esm/Dialog/UCs/MakeMarkdownDialogUC.js.map +1 -1
- package/dist/esm/Dialog/UCs/MakeSelectModelDialogUC.js.map +1 -1
- package/dist/esm/Dialog/UCs/MakeSpinnerDialogUC.js.map +1 -1
- package/dist/esm/Dialog/UCs/index.js.map +1 -1
- package/dist/esm/Dialog/index.js.map +1 -1
- package/dist/esm/Dispatcher/Entities/HostDispatchEntity.js.map +1 -1
- package/dist/esm/Dispatcher/Entities/index.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/DispatchEnableFeatureUCMock.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchAppDispatcherUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchIsAuthoringUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchSetStateUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchShowBabylonInspectorUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchStartAppUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchStartBrowseChannelsUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchStartZSpaceUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchStopAppUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchStopZSpaceUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatchThemeUC.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockHostDispatcher.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchDisposeAppUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchEnableFeatureUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchIsAuthoringUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchSetStateUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchShowBabylonInspectorUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchStartAppUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchStartBrowseChannelsUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchStartZSpaceUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchStopAppUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchStopZSpaceUC.js.map +1 -1
- package/dist/esm/Dispatcher/UCs/DispatchThemeUC.js.map +1 -1
- package/dist/esm/Dispatcher/index.js.map +1 -1
- package/dist/esm/Events/Types/EventTypes.js.map +1 -1
- package/dist/esm/Events/Types/PayloadTypes.js.map +1 -1
- package/dist/esm/Events/Types/index.js.map +1 -1
- package/dist/esm/Events/index.js.map +1 -1
- package/dist/esm/Handler/Entities/HostHandler.js.map +1 -1
- package/dist/esm/Handler/Entities/index.js.map +1 -1
- package/dist/esm/Handler/UCs/CallbackAssetDTO.js.map +1 -1
- package/dist/esm/Handler/UCs/CloseAssetSystemPlugin.js.map +1 -1
- package/dist/esm/Handler/UCs/GetAssetBlobURLHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/GetAssetFolderURLHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/GetAssetMetaHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/GetAssetsForOwnerHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/GetLinkedAssetsHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/GoToNextStateHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/GoToPreviousStateHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/HasNextStateHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/HasPreviousStateHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/IsAssetFetchedHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/IsZSpaceAvailableHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/NewActivityAssetHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/OnAppIsReadyHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/OnStateChangeHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/OnStateCompleteHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/RegisterExternalStyleSheetsHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/RestoreCurrentStateHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/ShowAlertHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/ShowConfirmHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/ShowMarkDownEditorHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/ShowSelectModelHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/ShowSpinnerHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/StartZSpaceHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/StopZSpaceHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/SubmitActivityAssetHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/SubmitLogHandler.js.map +1 -1
- package/dist/esm/Handler/UCs/SubmitResultHandler.js.map +1 -1
- package/dist/esm/Handler/index.js.map +1 -1
- package/dist/esm/Logger/Adapters/fatalErrorAdapter.js.map +1 -1
- package/dist/esm/Logger/Adapters/forwardLogsToConsoleAdapter.js.map +1 -1
- package/dist/esm/Logger/Adapters/index.js.map +1 -1
- package/dist/esm/Logger/Adapters/logSummaryAdapter.js.map +1 -1
- package/dist/esm/Logger/Controllers/clickDownloadLog.js.map +1 -1
- package/dist/esm/Logger/Controllers/index.js.map +1 -1
- package/dist/esm/Logger/Controllers/toggleForwardLogs.js.map +1 -1
- package/dist/esm/Logger/Entities/LoggerEntity.js.map +1 -1
- package/dist/esm/Logger/Entities/index.js.map +1 -1
- package/dist/esm/Logger/Factories/SandboxLoggerFactory.js.map +1 -1
- package/dist/esm/Logger/Factories/index.js.map +1 -1
- package/dist/esm/Logger/Factories/setupLoggerForSandbox.js.map +1 -1
- package/dist/esm/Logger/Mocks/ForwardLogsToConsolePMMock.js.map +1 -1
- package/dist/esm/Logger/Mocks/LogSummaryPMMock.js.map +1 -1
- package/dist/esm/Logger/Mocks/MockDownloadLogUC.js.map +1 -1
- package/dist/esm/Logger/Mocks/MockFatalErrorPM.js.map +1 -1
- package/dist/esm/Logger/Mocks/index.js.map +1 -1
- package/dist/esm/Logger/PMs/FatalErrorPM.js.map +1 -1
- package/dist/esm/Logger/PMs/ForwardLogsToConsolePM.js.map +1 -1
- package/dist/esm/Logger/PMs/LogSummaryPM.js.map +1 -1
- package/dist/esm/Logger/PMs/index.js.map +1 -1
- package/dist/esm/Logger/UCs/DownloadLogUC.js.map +1 -1
- package/dist/esm/Logger/UCs/index.js.map +1 -1
- package/dist/esm/Logger/index.js.map +1 -1
- package/dist/esm/Snackbar/Adapters/index.js.map +1 -1
- package/dist/esm/Snackbar/Adapters/snackbarAdapter.js.map +1 -1
- package/dist/esm/Snackbar/Controllers/callActiveSnackbarAction.js.map +1 -1
- package/dist/esm/Snackbar/Controllers/dismissActiveSnackbar.js.map +1 -1
- package/dist/esm/Snackbar/Controllers/index.js.map +1 -1
- package/dist/esm/Snackbar/Controllers/makeSnackbar.js.map +1 -1
- package/dist/esm/Snackbar/Entities/SnackbarRepo.js.map +1 -1
- package/dist/esm/Snackbar/Entities/index.js.map +1 -1
- package/dist/esm/Snackbar/Factories/index.js.map +1 -1
- package/dist/esm/Snackbar/Factories/setupSnackbar.js.map +1 -1
- package/dist/esm/Snackbar/Mocks/SnackbarPMMock.js.map +1 -1
- package/dist/esm/Snackbar/Mocks/index.js.map +1 -1
- package/dist/esm/Snackbar/PMs/SnackbarPM.js.map +1 -1
- package/dist/esm/Snackbar/PMs/index.js.map +1 -1
- package/dist/esm/Snackbar/index.js.map +1 -1
- package/dist/esm/StateMachine/Adapters/editingStateAdapter.js.map +1 -1
- package/dist/esm/StateMachine/Adapters/hostStateAdapter.js.map +1 -1
- package/dist/esm/StateMachine/Adapters/hostStateMachinePMAdapter.js.map +1 -1
- package/dist/esm/StateMachine/Adapters/index.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/cancelEditing.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/consumeState.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/deleteState.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/duplicateState.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/editActiveState.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/editState.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/editStateName.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/endActivity.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/index.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/newState.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/saveAuthoring.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/savePersistentStates.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/setTransitionDuration.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/transitionToState.js.map +1 -1
- package/dist/esm/StateMachine/Entities/HostEditingStateEntity.js.map +1 -1
- package/dist/esm/StateMachine/Entities/HostStateEntity.js.map +1 -1
- package/dist/esm/StateMachine/Entities/HostStateMachine.js.map +1 -1
- package/dist/esm/StateMachine/Entities/index.js.map +1 -1
- package/dist/esm/StateMachine/Factories/SandboxStateMachineFactory.js.map +1 -1
- package/dist/esm/StateMachine/Factories/index.js.map +1 -1
- package/dist/esm/StateMachine/Factories/setupStateMachineForSandbox.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/CancelEditingUCMock.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/ConsumeStateUCMock.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/EditStateUCMock.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/EndActivityUCMock.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockDeleteStateUC.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockDuplicateStateUC.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockEditActiveStateUC.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockHostEditingStateEntity.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockHostStateEntity.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockHostStateMachinePM.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockHostStatePM.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockIsEditingStatePM.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockSaveAuthoringUC.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockTransitionToStateUC.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/NewStateUCMock.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/SavePersistentStatesMock.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/index.js.map +1 -1
- package/dist/esm/StateMachine/PMs/EditingStatePM.js.map +1 -1
- package/dist/esm/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
- package/dist/esm/StateMachine/PMs/HostStatePM.js.map +1 -1
- package/dist/esm/StateMachine/PMs/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/CancelEditing/CancelEditingUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/CancelEditing/CancelSandboxEditingUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/CancelEditing/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/ConsumeState/ConsumeSandboxStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/ConsumeState/ConsumeStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/ConsumeState/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/DeleteStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/DuplicateStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditActiveState/EditActiveSandboxStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditActiveState/EditActiveStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditActiveState/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditState/EditSandboxStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditState/EditStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditState/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditStateNameUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EndActivity/EndActivityUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EndActivity/EndSandboxActivityUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EndActivity/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/NewState/NewSandboxStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/NewState/NewStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/NewState/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/SaveAuthoring/SaveAuthoringSandboxUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/SaveAuthoring/SaveAuthoringUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/SaveAuthoring/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/SavePersistentStates.js.map +1 -1
- package/dist/esm/StateMachine/UCs/TransitionToState/TransitionToSandboxStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/TransitionToState/TransitionToStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/TransitionToState/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/setSandboxStatesFromData.js.map +1 -1
- package/dist/esm/StateMachine/UCs/setSandboxStatesFromStringData.js.map +1 -1
- package/dist/esm/StateMachine/index.js.map +1 -1
- package/dist/esm/ThemeColors/Adapter/index.js.map +1 -1
- package/dist/esm/ThemeColors/Adapter/themeColorAdapter.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/getOnPrimaryColor.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/getOnSurfaceColor.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/getPrimaryColor.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/getSurfaceColor.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/getSurfaceContainerColor.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/index.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/setThemeByName.js.map +1 -1
- package/dist/esm/ThemeColors/Data/index.js.map +1 -1
- package/dist/esm/ThemeColors/Entities/HostThemeEntity.js.map +1 -1
- package/dist/esm/ThemeColors/Entities/index.js.map +1 -1
- package/dist/esm/ThemeColors/Factories/ThemeFactory.js.map +1 -1
- package/dist/esm/ThemeColors/Factories/index.js.map +1 -1
- package/dist/esm/ThemeColors/Factories/setupTheme.js.map +1 -1
- package/dist/esm/ThemeColors/Mocks/MockSetThemeUC.js.map +1 -1
- package/dist/esm/ThemeColors/Mocks/MockThemeColorPM.js.map +1 -1
- package/dist/esm/ThemeColors/Mocks/index.js.map +1 -1
- package/dist/esm/ThemeColors/PM/ThemeColorsPM.js.map +1 -1
- package/dist/esm/ThemeColors/PM/index.js.map +1 -1
- package/dist/esm/ThemeColors/UCs/SetThemeUC.js.map +1 -1
- package/dist/esm/ThemeColors/UCs/index.js.map +1 -1
- package/dist/esm/ThemeColors/index.js.map +1 -1
- package/dist/esm/VivedAPI/Adapters/apiStageAdapter.js.map +1 -1
- package/dist/esm/VivedAPI/Adapters/index.js.map +1 -1
- package/dist/esm/VivedAPI/Adapters/userTokenAdapter.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/index.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/loginUser.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/logoutUser.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/refreshAuthenticatedUser.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/setApiStage.js.map +1 -1
- package/dist/esm/VivedAPI/Entities/VivedAPIEntity.js.map +1 -1
- package/dist/esm/VivedAPI/Entities/index.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/SandboxVivedAPIFactory.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/VivedAPIFactory.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/index.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/setupAPI.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/setupVivedAPIForSandbox.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/ApiStagePMMock.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockBasicFetchUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockBlobRequestUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockDeleteAssetOnAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockFetchAssetFileFromAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockFetchAssetMetaFromAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockFileUpload.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockGetAppFromAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockGetAssetsForOwnerUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockJsonRequestUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockPatchAssetFileUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockPatchAssetIsArchivedUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockPatchAssetMetaUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockPatchAssetUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockPostNewAssetUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockSignedAuthToken.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockUserLoginUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/UserTokenPMMock.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/index.js.map +1 -1
- package/dist/esm/VivedAPI/PMs/ApiStagePM.js.map +1 -1
- package/dist/esm/VivedAPI/PMs/UserTokenPM.js.map +1 -1
- package/dist/esm/VivedAPI/PMs/index.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/BasicFetchUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/BlobRequestUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/DeleteAssetOnAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/FetchAssetFileFromAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/FetchAssetMetaFromAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/FileUploadUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/GetAppFromAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/JsonRequestUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/PatchAssetFileUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/PatchAssetIsArchivedUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/PatchAssetMetaUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/PatchAssetUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/PostNewAssetUC.js +7 -2
- package/dist/esm/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/SignedAuthTokenUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/UserAuthUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/index.js.map +1 -1
- package/dist/esm/VivedAPI/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Adapters/emulateZSpaceAdapter.js.map +1 -1
- package/dist/esm/ZSpaceHost/Adapters/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Adapters/zSpaceIsActiveAdapter.js.map +1 -1
- package/dist/esm/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.js.map +1 -1
- package/dist/esm/ZSpaceHost/Controllers/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Controllers/setZSpaceIsSupported.js.map +1 -1
- package/dist/esm/ZSpaceHost/Controllers/startZSpace.js.map +1 -1
- package/dist/esm/ZSpaceHost/Controllers/stopZSpace.js.map +1 -1
- package/dist/esm/ZSpaceHost/Controllers/toggleEmulateZSpace.js.map +1 -1
- package/dist/esm/ZSpaceHost/Entities/ZSpaceHost.js.map +1 -1
- package/dist/esm/ZSpaceHost/Entities/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Factories/SandboxZSpaceFactory.js.map +1 -1
- package/dist/esm/ZSpaceHost/Factories/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Factories/setupZSpaceForSandbox.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/EmulateZSpacePMMock.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/MockStartZSpaceUC.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/MockStopZSpaceUC.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/MockXRSession.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/ZSpaceIsActivePMMock.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/PMs/EmulateZSpacePM.js.map +1 -1
- package/dist/esm/ZSpaceHost/PMs/ZSpaceIsActivePM.js.map +1 -1
- package/dist/esm/ZSpaceHost/PMs/ZSpaceIsSupportedPM.js.map +1 -1
- package/dist/esm/ZSpaceHost/PMs/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/StartZSpace/StartSandboxZSpaceUC.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/StartZSpace/StartZSpaceUC.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/StartZSpace/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/StopZSpace/StopSandboxZSpaceUC.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/StopZSpace/StopZSpaceUC.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/StopZSpace/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/checkForZSpaceSupport.js.map +1 -1
- package/dist/esm/ZSpaceHost/UCs/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/index.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/VivedAPI/UCs/PostNewAssetUC.d.ts +7 -0
- package/dist/types/VivedAPI/UCs/PostNewAssetUC.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArchiveAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/ArchiveAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ArchiveAssetUC.ts\n *\n * This use case handles the archiving and unarchiving of assets, providing\n * a reversible soft-deletion mechanism that hides assets from normal views\n * while preserving them in the system.\n *\n * Key Concepts:\n * - Archive operations are reversible soft-deletion mechanisms\n * - Archived assets remain in the system but are hidden from normal views\n * - Uses API calls to persist archive state changes\n * - Provides user feedback through spinner and error dialogs\n * - Updates both local entity state and collection notifications\n *\n * Usage Patterns:\n * - Created per-asset during factory setup\n * - Accessed through static get() method with asset ID\n * - Handles both archiving (hiding) and unarchiving (showing) operations\n * - Manages async API calls with proper error handling and user feedback\n */\n\nimport { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\nimport {\n DialogAlertDTO,\n MakeAlertDialogUC,\n MakeSpinnerDialogUC\n} from \"../../Dialog\";\nimport { PatchAssetIsArchivedUC } from \"../../VivedAPI\";\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\nimport { AssetEntity } from \"../Entities/AssetEntity\";\n\n/**\n * ArchiveAssetUC manages the archiving and unarchiving operations for individual assets.\n *\n * This use case provides the business logic for toggling asset archive status,\n * handling API persistence, and managing user feedback during the operation.\n * Archive operations are reversible and provide a soft-deletion mechanism.\n */\nexport abstract class ArchiveAssetUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"ArchiveAssetUC\";\n\n /**\n * Sets the archived status of the associated asset.\n *\n * @param archived - True to archive (hide) the asset, false to unarchive (show) it\n * @returns Promise that resolves when the operation completes successfully\n */\n abstract setArchived(archived: boolean): Promise<void>;\n\n /**\n * Retrieves an ArchiveAssetUC component for a specific asset.\n *\n * @param assetID - The unique identifier of the asset\n * @param appObjects - Repository for accessing app objects and components\n * @returns ArchiveAssetUC instance or undefined if not found\n */\n static get(\n assetID: string,\n appObjects: AppObjectRepo\n ): ArchiveAssetUC | undefined {\n const appObject = appObjects.get(assetID);\n if (!appObject) {\n appObjects.submitWarning(\n \"ArchiveAssetUC.get\",\n \"Unable to find app object\"\n );\n return undefined;\n }\n\n const uc = appObject.getComponent<ArchiveAssetUC>(ArchiveAssetUC.type);\n if (!uc) {\n appObjects.submitWarning(\n \"ArchiveAssetUC.get\",\n \"App Object does not have ArchiveAssetUC\"\n );\n return undefined;\n }\n\n return uc;\n }\n}\n\n/**\n * Factory function to create a new ArchiveAssetUC instance.\n *\n * @param appObject - The AppObject that will host this use case (should contain an AssetEntity)\n * @returns A new ArchiveAssetUC implementation instance\n */\nexport function makeArchiveAssetUC(appObject: AppObject): ArchiveAssetUC {\n return new ArchiveAssetUCImp(appObject);\n}\n\n/**\n * Private implementation of ArchiveAssetUC that handles the concrete archive operations.\n *\n * Key Implementation Details:\n * - Validates asset entity existence and current archive state\n * - Uses PatchAssetIsArchivedUC for API persistence\n * - Provides user feedback through spinner dialogs during operations\n * - Handles errors gracefully with alert dialogs and logging\n * - Updates local asset state and triggers collection change notifications\n * - Prevents redundant operations when archive state hasn't changed\n */\nclass ArchiveAssetUCImp extends ArchiveAssetUC {\n /** The asset entity this use case operates on */\n private asset?: AssetEntity;\n\n /**\n * Gets the API use case for patching asset archive status\n * Cached for efficient repeated access during operations\n */\n private get patchAssetIsArchived() {\n return this.getCachedSingleton<PatchAssetIsArchivedUC>(\n PatchAssetIsArchivedUC.type\n )?.doPatch;\n }\n\n /**\n * Gets the app assets collection entity for triggering collection updates\n * Used to notify UI components when asset visibility changes\n */\n private get appAssets() {\n return this.getCachedSingleton<AppAssetsEntity>(AppAssetsEntity.type);\n }\n\n /**\n * Sets the archived status of the asset with full error handling and user feedback.\n *\n * This method handles the complete archive workflow:\n * 1. Validates the asset exists and state change is needed\n * 2. Shows a spinner dialog during the API operation\n * 3. Updates the asset entity and collection on success\n * 4. Shows error dialogs and logs failures appropriately\n *\n * @param archived - True to archive the asset, false to unarchive it\n * @returns Promise that resolves when the operation completes (successfully or with handled error)\n */\n setArchived = (archived: boolean): Promise<void> => {\n const asset = this.asset;\n\n if (!asset) {\n return Promise.reject(new Error(\"No Asset Entity\"));\n }\n\n // Prevent redundant operations\n if (asset.archived === archived) {\n return Promise.resolve();\n }\n\n const patchAssetIsArchived = this.patchAssetIsArchived;\n if (!patchAssetIsArchived) {\n return Promise.reject();\n }\n\n // Show user feedback during operation\n const title = archived ? \"Archiving Asset\" : \"Unarchive Asset\";\n const spinner = MakeSpinnerDialogUC.make(\n {\n title,\n message: \"Updating asset's archived flag...\"\n },\n this.appObjects\n );\n\n return new Promise((resolve, reject) => {\n patchAssetIsArchived(asset.id, archived)\n .then(() => {\n // Update local state\n asset.archived = archived;\n\n // Notify collections if this asset is part of them\n if (this.appAssets && this.appAssets.has(asset.id)) {\n this.appAssets.notifyOnChange();\n }\n spinner?.close();\n resolve();\n })\n .catch((e) => {\n // Handle errors with user feedback\n this.error(\"Archive asset error: \" + e.message);\n spinner?.close();\n const dialogDTO: DialogAlertDTO = {\n buttonLabel: \"OK\",\n message: `Something went wrong when setting the asset's archived flag. Check the console. ${e.message}`,\n title: \"Archive Asset Error\"\n };\n\n MakeAlertDialogUC.make(dialogDTO, this.appObjects);\n resolve(); // Resolve to prevent unhandled rejections, error is already handled\n });\n });\n };\n\n /**\n * Initializes the ArchiveAssetUC with validation of required components.\n *\n * @param appObject - The AppObject that should contain the AssetEntity this UC will operate on\n */\n constructor(appObject: AppObject) {\n super(appObject, ArchiveAssetUC.type);\n\n this.asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\n if (!this.asset) {\n this.error(\n \"UC has been added to an App Object that does not have ArchiveAssetUC\"\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ArchiveAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/ArchiveAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ArchiveAssetUC.ts\r\n *\r\n * This use case handles the archiving and unarchiving of assets, providing\r\n * a reversible soft-deletion mechanism that hides assets from normal views\r\n * while preserving them in the system.\r\n *\r\n * Key Concepts:\r\n * - Archive operations are reversible soft-deletion mechanisms\r\n * - Archived assets remain in the system but are hidden from normal views\r\n * - Uses API calls to persist archive state changes\r\n * - Provides user feedback through spinner and error dialogs\r\n * - Updates both local entity state and collection notifications\r\n *\r\n * Usage Patterns:\r\n * - Created per-asset during factory setup\r\n * - Accessed through static get() method with asset ID\r\n * - Handles both archiving (hiding) and unarchiving (showing) operations\r\n * - Manages async API calls with proper error handling and user feedback\r\n */\r\n\r\nimport { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\r\nimport {\r\n DialogAlertDTO,\r\n MakeAlertDialogUC,\r\n MakeSpinnerDialogUC\r\n} from \"../../Dialog\";\r\nimport { PatchAssetIsArchivedUC } from \"../../VivedAPI\";\r\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\r\nimport { AssetEntity } from \"../Entities/AssetEntity\";\r\n\r\n/**\r\n * ArchiveAssetUC manages the archiving and unarchiving operations for individual assets.\r\n *\r\n * This use case provides the business logic for toggling asset archive status,\r\n * handling API persistence, and managing user feedback during the operation.\r\n * Archive operations are reversible and provide a soft-deletion mechanism.\r\n */\r\nexport abstract class ArchiveAssetUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"ArchiveAssetUC\";\r\n\r\n /**\r\n * Sets the archived status of the associated asset.\r\n *\r\n * @param archived - True to archive (hide) the asset, false to unarchive (show) it\r\n * @returns Promise that resolves when the operation completes successfully\r\n */\r\n abstract setArchived(archived: boolean): Promise<void>;\r\n\r\n /**\r\n * Retrieves an ArchiveAssetUC component for a specific asset.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param appObjects - Repository for accessing app objects and components\r\n * @returns ArchiveAssetUC instance or undefined if not found\r\n */\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): ArchiveAssetUC | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"ArchiveAssetUC.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<ArchiveAssetUC>(ArchiveAssetUC.type);\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"ArchiveAssetUC.get\",\r\n \"App Object does not have ArchiveAssetUC\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new ArchiveAssetUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this use case (should contain an AssetEntity)\r\n * @returns A new ArchiveAssetUC implementation instance\r\n */\r\nexport function makeArchiveAssetUC(appObject: AppObject): ArchiveAssetUC {\r\n return new ArchiveAssetUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of ArchiveAssetUC that handles the concrete archive operations.\r\n *\r\n * Key Implementation Details:\r\n * - Validates asset entity existence and current archive state\r\n * - Uses PatchAssetIsArchivedUC for API persistence\r\n * - Provides user feedback through spinner dialogs during operations\r\n * - Handles errors gracefully with alert dialogs and logging\r\n * - Updates local asset state and triggers collection change notifications\r\n * - Prevents redundant operations when archive state hasn't changed\r\n */\r\nclass ArchiveAssetUCImp extends ArchiveAssetUC {\r\n /** The asset entity this use case operates on */\r\n private asset?: AssetEntity;\r\n\r\n /**\r\n * Gets the API use case for patching asset archive status\r\n * Cached for efficient repeated access during operations\r\n */\r\n private get patchAssetIsArchived() {\r\n return this.getCachedSingleton<PatchAssetIsArchivedUC>(\r\n PatchAssetIsArchivedUC.type\r\n )?.doPatch;\r\n }\r\n\r\n /**\r\n * Gets the app assets collection entity for triggering collection updates\r\n * Used to notify UI components when asset visibility changes\r\n */\r\n private get appAssets() {\r\n return this.getCachedSingleton<AppAssetsEntity>(AppAssetsEntity.type);\r\n }\r\n\r\n /**\r\n * Sets the archived status of the asset with full error handling and user feedback.\r\n *\r\n * This method handles the complete archive workflow:\r\n * 1. Validates the asset exists and state change is needed\r\n * 2. Shows a spinner dialog during the API operation\r\n * 3. Updates the asset entity and collection on success\r\n * 4. Shows error dialogs and logs failures appropriately\r\n *\r\n * @param archived - True to archive the asset, false to unarchive it\r\n * @returns Promise that resolves when the operation completes (successfully or with handled error)\r\n */\r\n setArchived = (archived: boolean): Promise<void> => {\r\n const asset = this.asset;\r\n\r\n if (!asset) {\r\n return Promise.reject(new Error(\"No Asset Entity\"));\r\n }\r\n\r\n // Prevent redundant operations\r\n if (asset.archived === archived) {\r\n return Promise.resolve();\r\n }\r\n\r\n const patchAssetIsArchived = this.patchAssetIsArchived;\r\n if (!patchAssetIsArchived) {\r\n return Promise.reject();\r\n }\r\n\r\n // Show user feedback during operation\r\n const title = archived ? \"Archiving Asset\" : \"Unarchive Asset\";\r\n const spinner = MakeSpinnerDialogUC.make(\r\n {\r\n title,\r\n message: \"Updating asset's archived flag...\"\r\n },\r\n this.appObjects\r\n );\r\n\r\n return new Promise((resolve, reject) => {\r\n patchAssetIsArchived(asset.id, archived)\r\n .then(() => {\r\n // Update local state\r\n asset.archived = archived;\r\n\r\n // Notify collections if this asset is part of them\r\n if (this.appAssets && this.appAssets.has(asset.id)) {\r\n this.appAssets.notifyOnChange();\r\n }\r\n spinner?.close();\r\n resolve();\r\n })\r\n .catch((e) => {\r\n // Handle errors with user feedback\r\n this.error(\"Archive asset error: \" + e.message);\r\n spinner?.close();\r\n const dialogDTO: DialogAlertDTO = {\r\n buttonLabel: \"OK\",\r\n message: `Something went wrong when setting the asset's archived flag. Check the console. ${e.message}`,\r\n title: \"Archive Asset Error\"\r\n };\r\n\r\n MakeAlertDialogUC.make(dialogDTO, this.appObjects);\r\n resolve(); // Resolve to prevent unhandled rejections, error is already handled\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Initializes the ArchiveAssetUC with validation of required components.\r\n *\r\n * @param appObject - The AppObject that should contain the AssetEntity this UC will operate on\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, ArchiveAssetUC.type);\r\n\r\n this.asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\r\n if (!this.asset) {\r\n this.error(\r\n \"UC has been added to an App Object that does not have ArchiveAssetUC\"\r\n );\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/DeleteAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DeleteAssetUC.ts\n *\n * This use case handles the permanent deletion of assets from the system,\n * including user confirmation dialogs and cleanup of all related data.\n *\n * Key Concepts:\n * - Permanent deletion removes assets completely from the system\n * - Includes mandatory user confirmation to prevent accidental deletions\n * - Cleans up asset from all collections and repositories\n * - Uses API calls to persist deletion on the backend\n * - Provides user feedback through dialogs during the operation\n *\n * Usage Patterns:\n * - Created per-asset during factory setup\n * - Accessed through static get() method with asset ID\n * - Provides both confirmed and unconfirmed deletion methods\n * - Handles async operations with proper error handling and user feedback\n */\n\nimport { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\nimport {\n DialogAlertDTO,\n MakeAlertDialogUC,\n MakeConfirmDialogUC,\n MakeSpinnerDialogUC\n} from \"../../Dialog\";\nimport { DeleteAssetOnAPIUC } from \"../../VivedAPI\";\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\nimport { AssetEntity } from \"../Entities/AssetEntity\";\nimport { AssetRepo } from \"../Entities/AssetRepo\";\n\n/**\n * DeleteAssetUC manages the permanent deletion of individual assets.\n *\n * This use case provides both confirmed and unconfirmed deletion methods,\n * handling complete cleanup of asset data from all system components.\n */\nexport abstract class DeleteAssetUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"DeleteAssetUC\";\n\n /**\n * Permanently deletes the associated asset without user confirmation.\n *\n * @returns Promise that resolves when the deletion completes successfully\n */\n abstract delete(): Promise<void>;\n\n /**\n * Initiates asset deletion with user confirmation dialog.\n * Shows a confirmation dialog before proceeding with the deletion.\n */\n abstract deleteWithConfirm(): void;\n\n /**\n * Retrieves a DeleteAssetUC component for a specific asset.\n *\n * @param assetID - The unique identifier of the asset\n * @param appObjects - Repository for accessing app objects and components\n * @returns DeleteAssetUC instance or undefined if not found\n */\n static get(\n assetID: string,\n appObjects: AppObjectRepo\n ): DeleteAssetUC | undefined {\n const appObject = appObjects.get(assetID);\n if (!appObject) {\n appObjects.submitWarning(\n \"DeleteAssetUC.get\",\n \"Unable to find app object\"\n );\n return undefined;\n }\n\n const uc = appObject.getComponent<DeleteAssetUC>(DeleteAssetUC.type);\n if (!uc) {\n appObjects.submitWarning(\n \"DeleteAssetUC.get\",\n \"App Object does not have DeleteAssetUC\"\n );\n return undefined;\n }\n\n return uc;\n }\n}\n\n/**\n * Factory function to create a new DeleteAssetUC instance.\n *\n * @param appObject - The AppObject that will host this use case (should contain an AssetEntity)\n * @returns A new DeleteAssetUC implementation instance\n */\nexport function makeDeleteAssetUC(appObject: AppObject): DeleteAssetUC {\n return new DeleteAssetUCImp(appObject);\n}\n\n/**\n * Private implementation of DeleteAssetUC that handles the concrete deletion operations.\n *\n * Key Implementation Details:\n * - Validates asset entity existence before operations\n * - Uses DeleteAssetOnAPIUC for backend persistence\n * - Provides user confirmation through dialog system\n * - Shows spinner dialogs during deletion operations\n * - Handles errors gracefully with alert dialogs and logging\n * - Cleans up asset from all collections and repositories\n * - Removes asset from both AppAssetsEntity and AssetRepo\n */\nclass DeleteAssetUCImp extends DeleteAssetUC {\n /** The asset entity this use case operates on */\n private asset?: AssetEntity;\n\n /**\n * Gets the API use case for deleting assets from the backend\n * Cached for efficient repeated access during operations\n */\n private get doDelete() {\n return this.getCachedSingleton<DeleteAssetOnAPIUC>(DeleteAssetOnAPIUC.type)\n ?.doDelete;\n }\n\n /**\n * Gets the app assets collection entity for cleanup operations\n * Used to remove the asset from collection displays\n */\n private get appAssets() {\n return this.getCachedSingleton<AppAssetsEntity>(AppAssetsEntity.type);\n }\n\n /**\n * Gets the asset repository for cleanup operations\n * Used to remove the asset from the global asset repository\n */\n private get assetRepo() {\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\n }\n\n /**\n * Initiates asset deletion with user confirmation.\n *\n * Shows a confirmation dialog with warnings about the irreversible nature\n * of the operation and suggests archiving as an alternative.\n */\n deleteWithConfirm = () => {\n MakeConfirmDialogUC.make(\n {\n cancelButtonLabel: \"Cancel\",\n confirmButtonLabel: \"Delete Asset\",\n message:\n \"Are you sure you want to delete this asset. This cannot be undone and could affect users. Consider archiving it instead\",\n title: \"Delete Asset\",\n onConfirm: this.delete\n },\n this.appObjects\n );\n };\n\n /**\n * Permanently deletes the asset with full cleanup and user feedback.\n *\n * This method handles the complete deletion workflow:\n * 1. Validates the asset exists\n * 2. Shows a spinner dialog during the API operation\n * 3. Removes the asset from backend via API\n * 4. Cleans up the asset from all local collections and repositories\n * 5. Shows error dialogs and logs failures appropriately\n *\n * @returns Promise that resolves when the operation completes (successfully or with handled error)\n */\n delete = (): Promise<void> => {\n const asset = this.asset;\n\n if (!asset) {\n return Promise.reject(new Error(\"No Asset Entity\"));\n }\n\n const doDelete = this.doDelete;\n if (!doDelete) {\n return Promise.reject();\n }\n\n // Show user feedback during operation\n const title = \"Delete Asset\";\n const spinnerDialog = MakeSpinnerDialogUC.make(\n {\n title,\n message: \"Deleting asset...\"\n },\n this.appObjects\n );\n\n return new Promise((resolve) => {\n doDelete(asset.id)\n .then(() => {\n // Clean up from all collections and repositories\n if (this.appAssets && this.appAssets.has(asset.id)) {\n this.appAssets.remove(asset.id);\n }\n\n if (this.assetRepo && this.assetRepo.has(asset.id)) {\n this.assetRepo.remove(asset.id);\n }\n\n spinnerDialog?.close();\n resolve();\n })\n .catch((e) => {\n // Handle errors with user feedback\n this.error(\"Archive asset error: \" + e.message);\n spinnerDialog?.close();\n const dialogDTO: DialogAlertDTO = {\n buttonLabel: \"OK\",\n message: `Something went wrong when setting the asset's archived flag. Check the console. ${e.message}`,\n title: \"Archive Asset Error\"\n };\n MakeAlertDialogUC.make(dialogDTO, this.appObjects);\n resolve(); // Resolve to prevent unhandled rejections, error is already handled\n });\n });\n };\n\n /**\n * Initializes the DeleteAssetUC with validation of required components.\n *\n * @param appObject - The AppObject that should contain the AssetEntity this UC will operate on\n */\n constructor(appObject: AppObject) {\n super(appObject, DeleteAssetUC.type);\n\n this.asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\n if (!this.asset) {\n this.error(\n \"UC has been added to an App Object that does not have ArchiveAssetUC\"\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DeleteAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/DeleteAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * DeleteAssetUC.ts\r\n *\r\n * This use case handles the permanent deletion of assets from the system,\r\n * including user confirmation dialogs and cleanup of all related data.\r\n *\r\n * Key Concepts:\r\n * - Permanent deletion removes assets completely from the system\r\n * - Includes mandatory user confirmation to prevent accidental deletions\r\n * - Cleans up asset from all collections and repositories\r\n * - Uses API calls to persist deletion on the backend\r\n * - Provides user feedback through dialogs during the operation\r\n *\r\n * Usage Patterns:\r\n * - Created per-asset during factory setup\r\n * - Accessed through static get() method with asset ID\r\n * - Provides both confirmed and unconfirmed deletion methods\r\n * - Handles async operations with proper error handling and user feedback\r\n */\r\n\r\nimport { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\r\nimport {\r\n DialogAlertDTO,\r\n MakeAlertDialogUC,\r\n MakeConfirmDialogUC,\r\n MakeSpinnerDialogUC\r\n} from \"../../Dialog\";\r\nimport { DeleteAssetOnAPIUC } from \"../../VivedAPI\";\r\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\r\nimport { AssetEntity } from \"../Entities/AssetEntity\";\r\nimport { AssetRepo } from \"../Entities/AssetRepo\";\r\n\r\n/**\r\n * DeleteAssetUC manages the permanent deletion of individual assets.\r\n *\r\n * This use case provides both confirmed and unconfirmed deletion methods,\r\n * handling complete cleanup of asset data from all system components.\r\n */\r\nexport abstract class DeleteAssetUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"DeleteAssetUC\";\r\n\r\n /**\r\n * Permanently deletes the associated asset without user confirmation.\r\n *\r\n * @returns Promise that resolves when the deletion completes successfully\r\n */\r\n abstract delete(): Promise<void>;\r\n\r\n /**\r\n * Initiates asset deletion with user confirmation dialog.\r\n * Shows a confirmation dialog before proceeding with the deletion.\r\n */\r\n abstract deleteWithConfirm(): void;\r\n\r\n /**\r\n * Retrieves a DeleteAssetUC component for a specific asset.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param appObjects - Repository for accessing app objects and components\r\n * @returns DeleteAssetUC instance or undefined if not found\r\n */\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): DeleteAssetUC | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"DeleteAssetUC.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<DeleteAssetUC>(DeleteAssetUC.type);\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"DeleteAssetUC.get\",\r\n \"App Object does not have DeleteAssetUC\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new DeleteAssetUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this use case (should contain an AssetEntity)\r\n * @returns A new DeleteAssetUC implementation instance\r\n */\r\nexport function makeDeleteAssetUC(appObject: AppObject): DeleteAssetUC {\r\n return new DeleteAssetUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of DeleteAssetUC that handles the concrete deletion operations.\r\n *\r\n * Key Implementation Details:\r\n * - Validates asset entity existence before operations\r\n * - Uses DeleteAssetOnAPIUC for backend persistence\r\n * - Provides user confirmation through dialog system\r\n * - Shows spinner dialogs during deletion operations\r\n * - Handles errors gracefully with alert dialogs and logging\r\n * - Cleans up asset from all collections and repositories\r\n * - Removes asset from both AppAssetsEntity and AssetRepo\r\n */\r\nclass DeleteAssetUCImp extends DeleteAssetUC {\r\n /** The asset entity this use case operates on */\r\n private asset?: AssetEntity;\r\n\r\n /**\r\n * Gets the API use case for deleting assets from the backend\r\n * Cached for efficient repeated access during operations\r\n */\r\n private get doDelete() {\r\n return this.getCachedSingleton<DeleteAssetOnAPIUC>(DeleteAssetOnAPIUC.type)\r\n ?.doDelete;\r\n }\r\n\r\n /**\r\n * Gets the app assets collection entity for cleanup operations\r\n * Used to remove the asset from collection displays\r\n */\r\n private get appAssets() {\r\n return this.getCachedSingleton<AppAssetsEntity>(AppAssetsEntity.type);\r\n }\r\n\r\n /**\r\n * Gets the asset repository for cleanup operations\r\n * Used to remove the asset from the global asset repository\r\n */\r\n private get assetRepo() {\r\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\r\n }\r\n\r\n /**\r\n * Initiates asset deletion with user confirmation.\r\n *\r\n * Shows a confirmation dialog with warnings about the irreversible nature\r\n * of the operation and suggests archiving as an alternative.\r\n */\r\n deleteWithConfirm = () => {\r\n MakeConfirmDialogUC.make(\r\n {\r\n cancelButtonLabel: \"Cancel\",\r\n confirmButtonLabel: \"Delete Asset\",\r\n message:\r\n \"Are you sure you want to delete this asset. This cannot be undone and could affect users. Consider archiving it instead\",\r\n title: \"Delete Asset\",\r\n onConfirm: this.delete\r\n },\r\n this.appObjects\r\n );\r\n };\r\n\r\n /**\r\n * Permanently deletes the asset with full cleanup and user feedback.\r\n *\r\n * This method handles the complete deletion workflow:\r\n * 1. Validates the asset exists\r\n * 2. Shows a spinner dialog during the API operation\r\n * 3. Removes the asset from backend via API\r\n * 4. Cleans up the asset from all local collections and repositories\r\n * 5. Shows error dialogs and logs failures appropriately\r\n *\r\n * @returns Promise that resolves when the operation completes (successfully or with handled error)\r\n */\r\n delete = (): Promise<void> => {\r\n const asset = this.asset;\r\n\r\n if (!asset) {\r\n return Promise.reject(new Error(\"No Asset Entity\"));\r\n }\r\n\r\n const doDelete = this.doDelete;\r\n if (!doDelete) {\r\n return Promise.reject();\r\n }\r\n\r\n // Show user feedback during operation\r\n const title = \"Delete Asset\";\r\n const spinnerDialog = MakeSpinnerDialogUC.make(\r\n {\r\n title,\r\n message: \"Deleting asset...\"\r\n },\r\n this.appObjects\r\n );\r\n\r\n return new Promise((resolve) => {\r\n doDelete(asset.id)\r\n .then(() => {\r\n // Clean up from all collections and repositories\r\n if (this.appAssets && this.appAssets.has(asset.id)) {\r\n this.appAssets.remove(asset.id);\r\n }\r\n\r\n if (this.assetRepo && this.assetRepo.has(asset.id)) {\r\n this.assetRepo.remove(asset.id);\r\n }\r\n\r\n spinnerDialog?.close();\r\n resolve();\r\n })\r\n .catch((e) => {\r\n // Handle errors with user feedback\r\n this.error(\"Archive asset error: \" + e.message);\r\n spinnerDialog?.close();\r\n const dialogDTO: DialogAlertDTO = {\r\n buttonLabel: \"OK\",\r\n message: `Something went wrong when setting the asset's archived flag. Check the console. ${e.message}`,\r\n title: \"Archive Asset Error\"\r\n };\r\n MakeAlertDialogUC.make(dialogDTO, this.appObjects);\r\n resolve(); // Resolve to prevent unhandled rejections, error is already handled\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Initializes the DeleteAssetUC with validation of required components.\r\n *\r\n * @param appObject - The AppObject that should contain the AssetEntity this UC will operate on\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, DeleteAssetUC.type);\r\n\r\n this.asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\r\n if (!this.asset) {\r\n this.error(\r\n \"UC has been added to an App Object that does not have ArchiveAssetUC\"\r\n );\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadAssetFileUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/DownloadAssetFileUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DownloadAssetFileUC.ts\n *\n * This use case handles downloading asset files to the user's local system,\n * managing both cached and remote file retrieval with browser download triggers.\n *\n * Key Concepts:\n * - Downloads asset files to user's local file system via browser\n * - Handles both cached (blob URL) and remote file sources\n * - Uses GetAssetFileUC for remote file retrieval when needed\n * - Provides user feedback through spinner dialogs during downloads\n * - Triggers browser download mechanism using temporary anchor elements\n *\n * Usage Patterns:\n * - Created per-asset during factory setup\n * - Accessed through static get() method with asset ID\n * - Handles both immediate downloads (cached files) and fetch-then-download (remote files)\n * - Manages async operations with proper error handling and user feedback\n */\n\nimport { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\nimport {\n DialogAlertDTO,\n MakeAlertDialogUC,\n MakeSpinnerDialogUC\n} from \"../../Dialog\";\nimport { AssetEntity } from \"../Entities/AssetEntity\";\nimport { GetAssetFileUC } from \"./GetAssetFileUC\";\n\n/**\n * DownloadAssetFileUC manages downloading asset files to the user's local system.\n *\n * This use case handles the complete download workflow, from file retrieval\n * (if necessary) to triggering the browser's download mechanism.\n */\nexport abstract class DownloadAssetFileUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"DownloadAssetFileUC\";\n\n /**\n * Downloads the associated asset file to the user's local system.\n *\n * @returns Promise that resolves when the download operation completes\n */\n abstract download(): Promise<void>;\n\n /**\n * Triggers the browser download mechanism for a cached asset file.\n * This method assumes the asset already has a blob URL available.\n */\n abstract saveFileLocally(): void;\n\n /**\n * Retrieves a DownloadAssetFileUC component for a specific asset.\n *\n * @param assetID - The unique identifier of the asset\n * @param appObjects - Repository for accessing app objects and components\n * @returns DownloadAssetFileUC instance or undefined if not found\n */\n static get(\n assetID: string,\n appObjects: AppObjectRepo\n ): DownloadAssetFileUC | undefined {\n const appObject = appObjects.get(assetID);\n if (!appObject) {\n appObjects.submitWarning(\n \"DownloadAssetFileUC.get\",\n \"Unable to find app object\"\n );\n return undefined;\n }\n\n const uc = appObject.getComponent<DownloadAssetFileUC>(\n DownloadAssetFileUC.type\n );\n if (!uc) {\n appObjects.submitWarning(\n \"DownloadAssetFileUC.get\",\n \"App Object does not have DownloadAssetFileUC\"\n );\n return undefined;\n }\n\n return uc;\n }\n}\n\n/**\n * Factory function to create a new DownloadAssetFileUC instance.\n *\n * @param appObject - The AppObject that will host this use case (should contain an AssetEntity)\n * @returns A new DownloadAssetFileUC implementation instance\n */\nexport function makeDownloadAssetFileUC(\n appObject: AppObject\n): DownloadAssetFileUC {\n return new DownloadAssetFileUCImp(appObject);\n}\n\n/**\n * Private implementation of DownloadAssetFileUC that handles the concrete download operations.\n *\n * Key Implementation Details:\n * - Checks for cached blob URLs to enable immediate downloads\n * - Falls back to GetAssetFileUC for remote file retrieval\n * - Shows spinner dialogs during file fetch operations\n * - Handles errors gracefully with alert dialogs and logging\n * - Uses DOM manipulation to trigger browser downloads\n * - Preserves original filenames for downloaded files\n */\nclass DownloadAssetFileUCImp extends DownloadAssetFileUC {\n /** The asset entity this use case operates on */\n private asset?: AssetEntity;\n\n /**\n * Gets the use case for retrieving asset files from remote sources\n * Used when the asset file is not already cached locally\n */\n private get getAssetFile() {\n return this.getCachedSingleton<GetAssetFileUC>(GetAssetFileUC.type)\n ?.getAssetFile;\n }\n\n /**\n * Downloads the asset file with smart caching and user feedback.\n *\n * This method implements the complete download workflow:\n * 1. Validates the asset exists\n * 2. If a blob URL exists, triggers immediate download\n * 3. If no blob URL, fetches the file from remote source first\n * 4. Shows spinner dialog during remote fetch operations\n * 5. Triggers download once file is available locally\n * 6. Handles errors with appropriate user feedback\n *\n * @returns Promise that resolves when the download operation completes\n */\n download = (): Promise<void> => {\n const asset = this.asset;\n\n if (!asset) {\n return Promise.reject(new Error(\"No Asset Entity\"));\n }\n\n // If file is already cached, download immediately\n if (asset.blobURL) {\n this.saveFileLocally();\n return Promise.resolve();\n }\n\n // Need to fetch file first\n const getAssetFile = this.getAssetFile;\n if (!getAssetFile) {\n return Promise.reject();\n }\n\n // Show user feedback during fetch operation\n const title = \"Download Asset\";\n const spinnerDialog = MakeSpinnerDialogUC.make(\n {\n title,\n message: \"Downloading asset...\"\n },\n this.appObjects\n );\n\n return new Promise((resolve) => {\n getAssetFile(asset.id)\n .then(() => {\n spinnerDialog?.close();\n this.saveFileLocally();\n resolve();\n })\n .catch((e) => {\n // Handle errors with user feedback\n this.error(\"Archive asset error: \" + e.message);\n spinnerDialog?.close();\n const dialogDTO: DialogAlertDTO = {\n buttonLabel: \"OK\",\n message: `Something went wrong when setting the asset's archived flag. Check the console. ${e.message}`,\n title: \"Archive Asset Error\"\n };\n MakeAlertDialogUC.make(dialogDTO, this.appObjects);\n resolve(); // Resolve to prevent unhandled rejections, error is already handled\n });\n });\n };\n\n /**\n * Triggers the browser's download mechanism for the cached asset file.\n *\n * This method creates a temporary anchor element with the blob URL and\n * programmatically clicks it to trigger the browser download. The download\n * preserves the original filename from the asset metadata.\n */\n saveFileLocally = () => {\n if (!this.asset) {\n this.error(\"No Asset\");\n return;\n }\n\n if (!this.asset.blobURL) {\n this.error(\"No blob URL\");\n return;\n }\n\n // Create temporary anchor element to trigger download\n const a = document.createElement(\"a\");\n a.href = this.asset.blobURL;\n a.download = this.asset.filename;\n a.click();\n };\n\n /**\n * Initializes the DownloadAssetFileUC with validation of required components.\n *\n * @param appObject - The AppObject that should contain the AssetEntity this UC will operate on\n */\n constructor(appObject: AppObject) {\n super(appObject, DownloadAssetFileUC.type);\n\n this.asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\n if (!this.asset) {\n this.error(\n \"UC has been added to an App Object that does not have ArchiveAssetUC\"\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DownloadAssetFileUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/DownloadAssetFileUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * DownloadAssetFileUC.ts\r\n *\r\n * This use case handles downloading asset files to the user's local system,\r\n * managing both cached and remote file retrieval with browser download triggers.\r\n *\r\n * Key Concepts:\r\n * - Downloads asset files to user's local file system via browser\r\n * - Handles both cached (blob URL) and remote file sources\r\n * - Uses GetAssetFileUC for remote file retrieval when needed\r\n * - Provides user feedback through spinner dialogs during downloads\r\n * - Triggers browser download mechanism using temporary anchor elements\r\n *\r\n * Usage Patterns:\r\n * - Created per-asset during factory setup\r\n * - Accessed through static get() method with asset ID\r\n * - Handles both immediate downloads (cached files) and fetch-then-download (remote files)\r\n * - Manages async operations with proper error handling and user feedback\r\n */\r\n\r\nimport { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\r\nimport {\r\n DialogAlertDTO,\r\n MakeAlertDialogUC,\r\n MakeSpinnerDialogUC\r\n} from \"../../Dialog\";\r\nimport { AssetEntity } from \"../Entities/AssetEntity\";\r\nimport { GetAssetFileUC } from \"./GetAssetFileUC\";\r\n\r\n/**\r\n * DownloadAssetFileUC manages downloading asset files to the user's local system.\r\n *\r\n * This use case handles the complete download workflow, from file retrieval\r\n * (if necessary) to triggering the browser's download mechanism.\r\n */\r\nexport abstract class DownloadAssetFileUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"DownloadAssetFileUC\";\r\n\r\n /**\r\n * Downloads the associated asset file to the user's local system.\r\n *\r\n * @returns Promise that resolves when the download operation completes\r\n */\r\n abstract download(): Promise<void>;\r\n\r\n /**\r\n * Triggers the browser download mechanism for a cached asset file.\r\n * This method assumes the asset already has a blob URL available.\r\n */\r\n abstract saveFileLocally(): void;\r\n\r\n /**\r\n * Retrieves a DownloadAssetFileUC component for a specific asset.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param appObjects - Repository for accessing app objects and components\r\n * @returns DownloadAssetFileUC instance or undefined if not found\r\n */\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): DownloadAssetFileUC | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"DownloadAssetFileUC.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<DownloadAssetFileUC>(\r\n DownloadAssetFileUC.type\r\n );\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"DownloadAssetFileUC.get\",\r\n \"App Object does not have DownloadAssetFileUC\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new DownloadAssetFileUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this use case (should contain an AssetEntity)\r\n * @returns A new DownloadAssetFileUC implementation instance\r\n */\r\nexport function makeDownloadAssetFileUC(\r\n appObject: AppObject\r\n): DownloadAssetFileUC {\r\n return new DownloadAssetFileUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of DownloadAssetFileUC that handles the concrete download operations.\r\n *\r\n * Key Implementation Details:\r\n * - Checks for cached blob URLs to enable immediate downloads\r\n * - Falls back to GetAssetFileUC for remote file retrieval\r\n * - Shows spinner dialogs during file fetch operations\r\n * - Handles errors gracefully with alert dialogs and logging\r\n * - Uses DOM manipulation to trigger browser downloads\r\n * - Preserves original filenames for downloaded files\r\n */\r\nclass DownloadAssetFileUCImp extends DownloadAssetFileUC {\r\n /** The asset entity this use case operates on */\r\n private asset?: AssetEntity;\r\n\r\n /**\r\n * Gets the use case for retrieving asset files from remote sources\r\n * Used when the asset file is not already cached locally\r\n */\r\n private get getAssetFile() {\r\n return this.getCachedSingleton<GetAssetFileUC>(GetAssetFileUC.type)\r\n ?.getAssetFile;\r\n }\r\n\r\n /**\r\n * Downloads the asset file with smart caching and user feedback.\r\n *\r\n * This method implements the complete download workflow:\r\n * 1. Validates the asset exists\r\n * 2. If a blob URL exists, triggers immediate download\r\n * 3. If no blob URL, fetches the file from remote source first\r\n * 4. Shows spinner dialog during remote fetch operations\r\n * 5. Triggers download once file is available locally\r\n * 6. Handles errors with appropriate user feedback\r\n *\r\n * @returns Promise that resolves when the download operation completes\r\n */\r\n download = (): Promise<void> => {\r\n const asset = this.asset;\r\n\r\n if (!asset) {\r\n return Promise.reject(new Error(\"No Asset Entity\"));\r\n }\r\n\r\n // If file is already cached, download immediately\r\n if (asset.blobURL) {\r\n this.saveFileLocally();\r\n return Promise.resolve();\r\n }\r\n\r\n // Need to fetch file first\r\n const getAssetFile = this.getAssetFile;\r\n if (!getAssetFile) {\r\n return Promise.reject();\r\n }\r\n\r\n // Show user feedback during fetch operation\r\n const title = \"Download Asset\";\r\n const spinnerDialog = MakeSpinnerDialogUC.make(\r\n {\r\n title,\r\n message: \"Downloading asset...\"\r\n },\r\n this.appObjects\r\n );\r\n\r\n return new Promise((resolve) => {\r\n getAssetFile(asset.id)\r\n .then(() => {\r\n spinnerDialog?.close();\r\n this.saveFileLocally();\r\n resolve();\r\n })\r\n .catch((e) => {\r\n // Handle errors with user feedback\r\n this.error(\"Archive asset error: \" + e.message);\r\n spinnerDialog?.close();\r\n const dialogDTO: DialogAlertDTO = {\r\n buttonLabel: \"OK\",\r\n message: `Something went wrong when setting the asset's archived flag. Check the console. ${e.message}`,\r\n title: \"Archive Asset Error\"\r\n };\r\n MakeAlertDialogUC.make(dialogDTO, this.appObjects);\r\n resolve(); // Resolve to prevent unhandled rejections, error is already handled\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Triggers the browser's download mechanism for the cached asset file.\r\n *\r\n * This method creates a temporary anchor element with the blob URL and\r\n * programmatically clicks it to trigger the browser download. The download\r\n * preserves the original filename from the asset metadata.\r\n */\r\n saveFileLocally = () => {\r\n if (!this.asset) {\r\n this.error(\"No Asset\");\r\n return;\r\n }\r\n\r\n if (!this.asset.blobURL) {\r\n this.error(\"No blob URL\");\r\n return;\r\n }\r\n\r\n // Create temporary anchor element to trigger download\r\n const a = document.createElement(\"a\");\r\n a.href = this.asset.blobURL;\r\n a.download = this.asset.filename;\r\n a.click();\r\n };\r\n\r\n /**\r\n * Initializes the DownloadAssetFileUC with validation of required components.\r\n *\r\n * @param appObject - The AppObject that should contain the AssetEntity this UC will operate on\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, DownloadAssetFileUC.type);\r\n\r\n this.asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\r\n if (!this.asset) {\r\n this.error(\r\n \"UC has been added to an App Object that does not have ArchiveAssetUC\"\r\n );\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditAppAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/EditAppAssetUC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACb,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,OAAgB,cAAe,SAAQ,WAAW;IAWtD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,cAAc,CAAC,IAAI,EACnB,UAAU,CACX,CAAC;IACJ,CAAC;;AArBD,wDAAwD;AACjD,mBAAI,GAAG,gBAAgB,CAAC;AAuBjC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,aAAc,SAAQ,cAAc;IAIxC,6DAA6D;IAC7D,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAkB,eAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,yEAAyE;IACzE,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IA4BD;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QAhCxC;;;;;;;;;;;WAWG;QACH,cAAS,GAAG,CAAC,OAAe,EAAQ,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAEhE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,8BAA8B,GAAG,OAAO,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,sDAAsD;YACtD,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC;QAC/C,CAAC,CAAC;QASA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,qDAAqD;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;IACH,CAAC;CACF","sourcesContent":["/**\n * EditAppAssetUC.ts\n *\n * This use case handles initiating the asset editing workflow by transitioning\n * the application to editing mode for a specific asset.\n *\n * Key Concepts:\n * - Manages application state transitions for asset editing workflows\n * - Sets the editing context in AppAssetsEntity for UI components\n * - Transitions sandbox state to enable editing interfaces\n * - Validates asset existence before initiating editing\n * - Provides error handling for missing assets or dependencies\n *\n * Usage Patterns:\n * - Singleton use case accessed through static get() method\n * - Called with asset ID to initiate editing for specific assets\n * - Coordinates between asset repository, app assets entity, and sandbox state\n * - Used by controllers to start editing workflows from UI interactions\n */\n\nimport {\n getSingletonComponent,\n AppObject,\n AppObjectRepo,\n AppObjectUC\n} from \"@vived/core\";\nimport {\n AppSandboxEntity,\n SandboxState\n} from \"../../AppSandbox/Entities/AppSandboxEntity\";\nimport { AppAssetsEntity, AssetRepo } from \"../Entities\";\n\n/**\n * EditAppAssetUC handles initiating asset editing workflows and state transitions.\n *\n * This singleton use case manages the transition from normal asset viewing\n * to editing mode, setting up the necessary context for editing interfaces.\n */\nexport abstract class EditAppAssetUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"EditAppAssetUC\";\n\n /**\n * Initiates editing mode for the specified asset.\n *\n * @param assetID - The unique identifier of the asset to edit\n */\n abstract editAsset(assetID: string): void;\n\n /**\n * Retrieves the singleton EditAppAssetUC instance.\n *\n * @param appObjects - Repository for accessing the singleton component\n * @returns EditAppAssetUC instance or undefined if not found\n */\n static get(appObjects: AppObjectRepo): EditAppAssetUC | undefined {\n return getSingletonComponent<EditAppAssetUC>(\n EditAppAssetUC.type,\n appObjects\n );\n }\n}\n\n/**\n * Factory function to create a new EditAppAssetUC instance.\n *\n * @param appObject - The AppObject that will host this singleton use case (must have AssetRepo)\n * @returns A new EditAppAssetUC implementation instance\n */\nexport function makeEditAppAsset(appObject: AppObject): EditAppAssetUC {\n return new GetAssetUCImp(appObject);\n}\n\n/**\n * Private implementation of EditAppAssetUC that handles state transitions for asset editing.\n *\n * Key Implementation Details:\n * - Validates asset existence in repository before initiating editing\n * - Sets editing context in AppAssetsEntity for UI component access\n * - Transitions sandbox state to enable editing interfaces\n * - Provides warning logs for missing assets or invalid operations\n * - Validates required dependencies during initialization\n */\nclass GetAssetUCImp extends EditAppAssetUC {\n /** The asset repository for asset lookup and validation */\n private assetRepo?: AssetRepo;\n\n /** Gets the app assets entity for setting editing context */\n private get appAssets() {\n return this.getCachedSingleton<AppAssetsEntity>(AppAssetsEntity.type);\n }\n\n /** Gets the sandbox entity for managing application state transitions */\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n /**\n * Initiates asset editing by setting up editing context and transitioning state.\n *\n * This method handles the complete editing initiation workflow:\n * 1. Validates required dependencies are available\n * 2. Looks up the asset in the repository\n * 3. Sets the editing context in AppAssetsEntity\n * 4. Transitions sandbox state to editing mode\n * 5. Provides appropriate warnings for missing assets\n *\n * @param assetID - The unique identifier of the asset to edit\n */\n editAsset = (assetID: string): void => {\n if (!this.assetRepo || !this.appAssets || !this.sandbox) return;\n\n const asset = this.assetRepo.get(assetID);\n if (!asset) {\n this.warn(\"Unable to find asset by id: \" + assetID);\n return;\n }\n\n // Set editing context and transition to editing state\n this.appAssets.editingAsset = asset;\n this.sandbox.state = SandboxState.EDIT_ASSET;\n };\n\n /**\n * Initializes the EditAppAssetUC with required dependencies and validation.\n *\n * @param appObject - The AppObject that should contain the AssetRepo for asset lookup\n */\n constructor(appObject: AppObject) {\n super(appObject, EditAppAssetUC.type);\n this.appObjects.registerSingleton(this);\n\n // Validate and cache the asset repository dependency\n this.assetRepo = appObject.getComponent<AssetRepo>(AssetRepo.type);\n if (!this.assetRepo) {\n this.error(\"UC added to an App Object that does not have AssetRepo\");\n return;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"EditAppAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/EditAppAssetUC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACb,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,OAAgB,cAAe,SAAQ,WAAW;IAWtD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,cAAc,CAAC,IAAI,EACnB,UAAU,CACX,CAAC;IACJ,CAAC;;AArBD,wDAAwD;AACjD,mBAAI,GAAG,gBAAgB,CAAC;AAuBjC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,aAAc,SAAQ,cAAc;IAIxC,6DAA6D;IAC7D,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAkB,eAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,yEAAyE;IACzE,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IA4BD;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QAhCxC;;;;;;;;;;;WAWG;QACH,cAAS,GAAG,CAAC,OAAe,EAAQ,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAEhE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,8BAA8B,GAAG,OAAO,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,sDAAsD;YACtD,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC;QAC/C,CAAC,CAAC;QASA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,qDAAqD;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;IACH,CAAC;CACF","sourcesContent":["/**\r\n * EditAppAssetUC.ts\r\n *\r\n * This use case handles initiating the asset editing workflow by transitioning\r\n * the application to editing mode for a specific asset.\r\n *\r\n * Key Concepts:\r\n * - Manages application state transitions for asset editing workflows\r\n * - Sets the editing context in AppAssetsEntity for UI components\r\n * - Transitions sandbox state to enable editing interfaces\r\n * - Validates asset existence before initiating editing\r\n * - Provides error handling for missing assets or dependencies\r\n *\r\n * Usage Patterns:\r\n * - Singleton use case accessed through static get() method\r\n * - Called with asset ID to initiate editing for specific assets\r\n * - Coordinates between asset repository, app assets entity, and sandbox state\r\n * - Used by controllers to start editing workflows from UI interactions\r\n */\r\n\r\nimport {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport {\r\n AppSandboxEntity,\r\n SandboxState\r\n} from \"../../AppSandbox/Entities/AppSandboxEntity\";\r\nimport { AppAssetsEntity, AssetRepo } from \"../Entities\";\r\n\r\n/**\r\n * EditAppAssetUC handles initiating asset editing workflows and state transitions.\r\n *\r\n * This singleton use case manages the transition from normal asset viewing\r\n * to editing mode, setting up the necessary context for editing interfaces.\r\n */\r\nexport abstract class EditAppAssetUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"EditAppAssetUC\";\r\n\r\n /**\r\n * Initiates editing mode for the specified asset.\r\n *\r\n * @param assetID - The unique identifier of the asset to edit\r\n */\r\n abstract editAsset(assetID: string): void;\r\n\r\n /**\r\n * Retrieves the singleton EditAppAssetUC instance.\r\n *\r\n * @param appObjects - Repository for accessing the singleton component\r\n * @returns EditAppAssetUC instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo): EditAppAssetUC | undefined {\r\n return getSingletonComponent<EditAppAssetUC>(\r\n EditAppAssetUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new EditAppAssetUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case (must have AssetRepo)\r\n * @returns A new EditAppAssetUC implementation instance\r\n */\r\nexport function makeEditAppAsset(appObject: AppObject): EditAppAssetUC {\r\n return new GetAssetUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of EditAppAssetUC that handles state transitions for asset editing.\r\n *\r\n * Key Implementation Details:\r\n * - Validates asset existence in repository before initiating editing\r\n * - Sets editing context in AppAssetsEntity for UI component access\r\n * - Transitions sandbox state to enable editing interfaces\r\n * - Provides warning logs for missing assets or invalid operations\r\n * - Validates required dependencies during initialization\r\n */\r\nclass GetAssetUCImp extends EditAppAssetUC {\r\n /** The asset repository for asset lookup and validation */\r\n private assetRepo?: AssetRepo;\r\n\r\n /** Gets the app assets entity for setting editing context */\r\n private get appAssets() {\r\n return this.getCachedSingleton<AppAssetsEntity>(AppAssetsEntity.type);\r\n }\r\n\r\n /** Gets the sandbox entity for managing application state transitions */\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n /**\r\n * Initiates asset editing by setting up editing context and transitioning state.\r\n *\r\n * This method handles the complete editing initiation workflow:\r\n * 1. Validates required dependencies are available\r\n * 2. Looks up the asset in the repository\r\n * 3. Sets the editing context in AppAssetsEntity\r\n * 4. Transitions sandbox state to editing mode\r\n * 5. Provides appropriate warnings for missing assets\r\n *\r\n * @param assetID - The unique identifier of the asset to edit\r\n */\r\n editAsset = (assetID: string): void => {\r\n if (!this.assetRepo || !this.appAssets || !this.sandbox) return;\r\n\r\n const asset = this.assetRepo.get(assetID);\r\n if (!asset) {\r\n this.warn(\"Unable to find asset by id: \" + assetID);\r\n return;\r\n }\r\n\r\n // Set editing context and transition to editing state\r\n this.appAssets.editingAsset = asset;\r\n this.sandbox.state = SandboxState.EDIT_ASSET;\r\n };\r\n\r\n /**\r\n * Initializes the EditAppAssetUC with required dependencies and validation.\r\n *\r\n * @param appObject - The AppObject that should contain the AssetRepo for asset lookup\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, EditAppAssetUC.type);\r\n this.appObjects.registerSingleton(this);\r\n\r\n // Validate and cache the asset repository dependency\r\n this.assetRepo = appObject.getComponent<AssetRepo>(AssetRepo.type);\r\n if (!this.assetRepo) {\r\n this.error(\"UC added to an App Object that does not have AssetRepo\");\r\n return;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetAppAssetsUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAppAssetsUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAgB,cAAe,SAAQ,WAAW;IAKtD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,cAAc,CAAC,IAAI,EACnB,UAAU,CACX,CAAC;IACJ,CAAC;;AATM,mBAAI,GAAG,gBAAgB,CAAC;AAYjC,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,OAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,iBAAkB,SAAQ,cAAc;IAG5C,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,0BAA0B,CAAC,IAAI,CAChC,EAAE,SAAS,CAAC;IACf,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IA0BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QAzBxC,iBAAY,GAAG,CAAC,KAAa,EAAiB,EAAE;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEjC,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7C,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,CAAC;YAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,WAAW,CAAC,KAAK,CAAC;qBACf,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACnB,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;oBACH,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;oBAClB,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CACrC,eAAe,CAAC,IAAI,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CACR,8DAA8D,CAC/D,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n getSingletonComponent,\n AppObject,\n AppObjectRepo,\n AppObjectUC\n} from \"@vived/core\";\nimport { GetAssetsForOwnerFromAPIUC } from \"../../VivedAPI\";\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\nimport { AssetRepo } from \"../Entities/AssetRepo\";\n\nexport abstract class GetAppAssetsUC extends AppObjectUC {\n static type = \"GetAppAssetsUC\";\n\n abstract getAppAssets(appID: string): Promise<void>;\n\n static get(appObjects: AppObjectRepo): GetAppAssetsUC | undefined {\n return getSingletonComponent<GetAppAssetsUC>(\n GetAppAssetsUC.type,\n appObjects\n );\n }\n}\n\nexport function makeGetAppAssetUC(appObject: AppObject): GetAppAssetsUC {\n return new GetAppAssetsUCImp(appObject);\n}\n\nclass GetAppAssetsUCImp extends GetAppAssetsUC {\n private appAssets?: AppAssetsEntity;\n\n private get getAssetsUC() {\n return this.getCachedSingleton<GetAssetsForOwnerFromAPIUC>(\n GetAssetsForOwnerFromAPIUC.type\n )?.getAssets;\n }\n\n private get assetRepo() {\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\n }\n\n getAppAssets = (appID: string): Promise<void> => {\n const appAssets = this.appAssets;\n const getAssetsUC = this.getAssetsUC;\n const assetRepo = this.assetRepo;\n\n if (!appAssets || !getAssetsUC || !assetRepo) {\n return Promise.reject();\n }\n\n return new Promise<void>((resolve, reject) => {\n getAssetsUC(appID)\n .then((dtos) => {\n dtos.forEach((dto) => {\n assetRepo.addFromDTO(dto);\n appAssets.add(dto.id);\n });\n resolve();\n })\n .catch((e: Error) => {\n reject(e);\n });\n });\n };\n\n constructor(appObject: AppObject) {\n super(appObject, GetAppAssetsUC.type);\n\n this.appObjects.registerSingleton(this);\n\n this.appAssets = appObject.getComponent<AppAssetsEntity>(\n AppAssetsEntity.type\n );\n if (!this.appAssets) {\n this.error(\n \"UC added to an App Object that does not have AppAssetsEntity\"\n );\n return;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GetAppAssetsUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAppAssetsUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAgB,cAAe,SAAQ,WAAW;IAKtD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,cAAc,CAAC,IAAI,EACnB,UAAU,CACX,CAAC;IACJ,CAAC;;AATM,mBAAI,GAAG,gBAAgB,CAAC;AAYjC,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,OAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,iBAAkB,SAAQ,cAAc;IAG5C,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,0BAA0B,CAAC,IAAI,CAChC,EAAE,SAAS,CAAC;IACf,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IA0BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QAzBxC,iBAAY,GAAG,CAAC,KAAa,EAAiB,EAAE;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEjC,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7C,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,CAAC;YAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,WAAW,CAAC,KAAK,CAAC;qBACf,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACnB,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;oBACH,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;oBAClB,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CACrC,eAAe,CAAC,IAAI,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CACR,8DAA8D,CAC/D,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { GetAssetsForOwnerFromAPIUC } from \"../../VivedAPI\";\r\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\r\nimport { AssetRepo } from \"../Entities/AssetRepo\";\r\n\r\nexport abstract class GetAppAssetsUC extends AppObjectUC {\r\n static type = \"GetAppAssetsUC\";\r\n\r\n abstract getAppAssets(appID: string): Promise<void>;\r\n\r\n static get(appObjects: AppObjectRepo): GetAppAssetsUC | undefined {\r\n return getSingletonComponent<GetAppAssetsUC>(\r\n GetAppAssetsUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeGetAppAssetUC(appObject: AppObject): GetAppAssetsUC {\r\n return new GetAppAssetsUCImp(appObject);\r\n}\r\n\r\nclass GetAppAssetsUCImp extends GetAppAssetsUC {\r\n private appAssets?: AppAssetsEntity;\r\n\r\n private get getAssetsUC() {\r\n return this.getCachedSingleton<GetAssetsForOwnerFromAPIUC>(\r\n GetAssetsForOwnerFromAPIUC.type\r\n )?.getAssets;\r\n }\r\n\r\n private get assetRepo() {\r\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\r\n }\r\n\r\n getAppAssets = (appID: string): Promise<void> => {\r\n const appAssets = this.appAssets;\r\n const getAssetsUC = this.getAssetsUC;\r\n const assetRepo = this.assetRepo;\r\n\r\n if (!appAssets || !getAssetsUC || !assetRepo) {\r\n return Promise.reject();\r\n }\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n getAssetsUC(appID)\r\n .then((dtos) => {\r\n dtos.forEach((dto) => {\r\n assetRepo.addFromDTO(dto);\r\n appAssets.add(dto.id);\r\n });\r\n resolve();\r\n })\r\n .catch((e: Error) => {\r\n reject(e);\r\n });\r\n });\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetAppAssetsUC.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n\r\n this.appAssets = appObject.getComponent<AppAssetsEntity>(\r\n AppAssetsEntity.type\r\n );\r\n if (!this.appAssets) {\r\n this.error(\r\n \"UC added to an App Object that does not have AppAssetsEntity\"\r\n );\r\n return;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetAssetBlobURLUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAssetBlobURLUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * GetAssetBlobURLUC.ts\n *\n * This use case provides optimized asset file retrieval with caching support,\n * returning blob URLs for immediate use in web applications.\n *\n * Key Concepts:\n * - Provides blob URLs for asset files with multi-level caching optimization\n * - Checks memory cache (existing entities) first for immediate access\n * - Falls back to persistent cache (IndexedDB/localStorage) for faster retrieval\n * - Finally fetches from remote API when cache misses occur\n * - Manages fetch state indicators for UI feedback\n * - Automatically stores fetched files in cache for future access\n *\n * Usage Patterns:\n * - Singleton use case accessed through static get() method\n * - Called with asset ID to retrieve blob URL for display or download\n * - Handles async operations with comprehensive error handling\n * - Optimizes performance through multi-level caching strategy\n */\n\nimport {\n getSingletonComponent,\n AppObject,\n AppObjectRepo,\n AppObjectUC\n} from \"@vived/core\";\nimport { FetchAssetFileFromAPIUC } from \"../../VivedAPI\";\nimport { GetAssetFromCacheUC, StoreAssetInCacheUC } from \"../../Cache\";\nimport { AssetEntity } from \"../Entities/AssetEntity\";\nimport { AssetRepo } from \"../Entities/AssetRepo\";\nimport { GetAssetUC } from \"./GetAssetUC\";\n\n/**\n * GetAssetBlobURLUC handles optimized retrieval of asset files as blob URLs.\n *\n * This singleton use case implements a multi-level caching strategy to minimize\n * network requests and provide fast access to asset files for web applications.\n */\nexport abstract class GetAssetBlobURLUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"GetAssetBlobURLUC\";\n\n /**\n * Retrieves a blob URL for the specified asset file.\n *\n * @param assetID - The unique identifier of the asset\n * @param useCache - Optional flag to control caching behavior (defaults to true)\n * @returns Promise resolving to a blob URL for immediate use\n */\n abstract getAssetBlobURL(\n assetID: string,\n useCache?: boolean\n ): Promise<string>;\n\n /**\n * Retrieves the singleton GetAssetBlobURLUC instance.\n *\n * @param appObjects - Repository for accessing the singleton component\n * @returns GetAssetBlobURLUC instance or undefined if not found\n */\n static get(appObjects: AppObjectRepo): GetAssetBlobURLUC | undefined {\n return getSingletonComponent<GetAssetBlobURLUC>(\n GetAssetBlobURLUC.type,\n appObjects\n );\n }\n}\n\n/**\n * Factory function to create a new GetAssetBlobURLUC instance.\n *\n * @param appObject - The AppObject that will host this singleton use case\n * @returns A new GetAssetBlobURLUC implementation instance\n */\nexport function makeGetAssetBlobURLUC(appObject: AppObject): GetAssetBlobURLUC {\n return new GetAssetBlobURLUCImp(appObject);\n}\n\n/**\n * Private implementation of GetAssetBlobURLUC with multi-level caching strategy.\n *\n * Key Implementation Details:\n * - Implements three-tier caching: memory (entities), persistent cache, and remote API\n * - Manages fetch state indicators for user feedback during operations\n * - Automatically caches fetched files for future access optimization\n * - Handles cache failures gracefully with fallback to direct API access\n * - Converts between Blob and File objects for compatibility\n * - Provides detailed error handling and logging for debugging\n */\nclass GetAssetBlobURLUCImp extends GetAssetBlobURLUC {\n /** Gets the asset repository for entity management and lookup */\n private get assetRepo() {\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\n }\n\n /** Gets the API use case for fetching asset files from remote sources */\n private get fetchAssetFile() {\n return this.getCachedSingleton<FetchAssetFileFromAPIUC>(\n FetchAssetFileFromAPIUC.type\n )?.doFetch;\n }\n\n /** Gets the use case for retrieving asset metadata */\n private get getAsset() {\n return this.getCachedSingleton<GetAssetUC>(GetAssetUC.type)?.getAsset;\n }\n\n /** Gets the use case for retrieving assets from persistent cache */\n private get getAssetFromCache() {\n return this.getCachedSingleton<GetAssetFromCacheUC>(\n GetAssetFromCacheUC.type\n )?.getAsset;\n }\n\n /** Gets the use case for storing assets in persistent cache */\n private get storeAssetInCache() {\n return this.getCachedSingleton<StoreAssetInCacheUC>(\n StoreAssetInCacheUC.type\n )?.storeAsset;\n }\n\n /**\n * Retrieves an asset blob URL using optimized multi-level caching.\n *\n * This method implements a three-tier caching strategy:\n * 1. Memory cache: Check if asset entity already has a blob URL\n * 2. Persistent cache: Check IndexedDB/localStorage for cached file\n * 3. Remote API: Fetch from backend as last resort\n *\n * Each level provides progressively better performance, with automatic\n * population of higher-level caches for future access optimization.\n *\n * @param assetID - The unique identifier of the asset\n * @param useCache - Optional flag to control caching behavior (defaults to true)\n * @returns Promise resolving to a blob URL for the asset file\n */\n getAssetBlobURL = (\n assetID: string,\n useCache: boolean = true\n ): Promise<string> => {\n const assetRepo = this.assetRepo;\n const getAsset = this.getAsset;\n const fetchAssetFile = this.fetchAssetFile;\n const getAssetFromCache = this.getAssetFromCache;\n const storeAssetInCache = this.storeAssetInCache;\n\n if (!assetRepo || !getAsset || !fetchAssetFile) {\n return Promise.reject();\n }\n\n // If cache is disabled, skip all cache checks and go directly to API\n if (!useCache) {\n return new Promise((resolve, reject) => {\n this.fetchAssetNormally(assetID, resolve, reject);\n });\n }\n\n // Level 1: Check memory cache (existing entities with blob URLs)\n const existing = assetRepo.get(assetID);\n if (existing && existing.blobURL) {\n return Promise.resolve(existing.blobURL);\n }\n\n return new Promise((resolve, reject) => {\n let fetchedAsset: AssetEntity | undefined;\n\n // Level 2: Check persistent cache\n if (getAssetFromCache) {\n getAssetFromCache(assetID)\n .then((cachedBlob) => {\n if (cachedBlob) {\n // Asset found in cache, get metadata and create file\n return getAsset(assetID).then((asset) => {\n fetchedAsset = asset;\n const filename = asset.filename || \"cached-asset\";\n return new File([cachedBlob], filename, {\n type: cachedBlob.type\n });\n });\n } else {\n // Level 3: Fetch from remote API\n return getAsset(assetID).then((asset) => {\n asset.isFetchingFile = true;\n asset.fetchError = undefined;\n fetchedAsset = asset;\n return fetchAssetFile(asset);\n });\n }\n })\n .then((file) => {\n if (fetchedAsset) {\n // Create blob URL and update entity\n fetchedAsset.setFile(file);\n fetchedAsset.isFetchingFile = false;\n\n // Store in cache for future access (if not from cache already)\n if (storeAssetInCache) {\n storeAssetInCache(\n assetID,\n new Blob([file], { type: file.type }),\n file.type\n ).catch((e) => {\n this.warn(`Failed to cache asset: ${e.message}`);\n });\n }\n\n if (fetchedAsset.blobURL) {\n resolve(fetchedAsset.blobURL);\n return;\n }\n }\n reject(new Error(\"Blob URL is empty\"));\n })\n .catch((e: Error) => {\n // Cache error, fallback to normal flow\n this.warn(`Cache error or fetch error: ${e.message}`);\n this.fetchAssetNormally(assetID, resolve, reject);\n });\n } else {\n // No cache available, use direct API access\n this.fetchAssetNormally(assetID, resolve, reject);\n }\n });\n };\n\n /**\n * Helper method for direct asset fetching without cache support.\n *\n * This method handles the direct API fetch workflow when caching\n * is not available or has failed. It still attempts to store the\n * result in cache for future optimization.\n *\n * @param assetID - The unique identifier of the asset\n * @param resolve - Success callback with blob URL\n * @param reject - Error callback with error details\n */\n private fetchAssetNormally = (\n assetID: string,\n resolve: (blobURL: string) => void,\n reject: (error: Error) => void\n ): void => {\n const getAsset = this.getAsset;\n const fetchAssetFile = this.fetchAssetFile;\n const storeAssetInCache = this.storeAssetInCache;\n\n if (!getAsset || !fetchAssetFile) {\n reject(new Error(\"Required dependencies not found\"));\n return;\n }\n\n let fetchedAsset: AssetEntity | undefined;\n\n getAsset(assetID)\n .then((asset) => {\n // Set loading state for UI feedback\n asset.isFetchingFile = true;\n asset.fetchError = undefined;\n fetchedAsset = asset;\n return fetchAssetFile(asset);\n })\n .then((file) => {\n if (fetchedAsset) {\n // Create blob URL and update entity\n fetchedAsset.setFile(file);\n fetchedAsset.isFetchingFile = false;\n\n // Store in cache for future optimization (if available)\n if (storeAssetInCache) {\n storeAssetInCache(\n assetID,\n new Blob([file], { type: file.type }),\n file.type\n ).catch((e) => {\n this.warn(`Failed to cache asset: ${e.message}`);\n });\n }\n\n if (fetchedAsset.blobURL) {\n resolve(fetchedAsset.blobURL);\n return;\n }\n }\n reject(new Error(\"Blob URL is empty\"));\n })\n .catch((e: Error) => {\n // Handle fetch errors with proper state cleanup\n if (fetchedAsset) {\n fetchedAsset.fetchError = e;\n fetchedAsset.isFetchingFile = false;\n }\n reject(e);\n });\n };\n\n /**\n * Initializes the GetAssetBlobURLUC and registers it as a singleton.\n *\n * @param appObject - The AppObject that will host this singleton use case\n */\n constructor(appObject: AppObject) {\n super(appObject, GetAssetBlobURLUC.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GetAssetBlobURLUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAssetBlobURLUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * GetAssetBlobURLUC.ts\r\n *\r\n * This use case provides optimized asset file retrieval with caching support,\r\n * returning blob URLs for immediate use in web applications.\r\n *\r\n * Key Concepts:\r\n * - Provides blob URLs for asset files with multi-level caching optimization\r\n * - Checks memory cache (existing entities) first for immediate access\r\n * - Falls back to persistent cache (IndexedDB/localStorage) for faster retrieval\r\n * - Finally fetches from remote API when cache misses occur\r\n * - Manages fetch state indicators for UI feedback\r\n * - Automatically stores fetched files in cache for future access\r\n *\r\n * Usage Patterns:\r\n * - Singleton use case accessed through static get() method\r\n * - Called with asset ID to retrieve blob URL for display or download\r\n * - Handles async operations with comprehensive error handling\r\n * - Optimizes performance through multi-level caching strategy\r\n */\r\n\r\nimport {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { FetchAssetFileFromAPIUC } from \"../../VivedAPI\";\r\nimport { GetAssetFromCacheUC, StoreAssetInCacheUC } from \"../../Cache\";\r\nimport { AssetEntity } from \"../Entities/AssetEntity\";\r\nimport { AssetRepo } from \"../Entities/AssetRepo\";\r\nimport { GetAssetUC } from \"./GetAssetUC\";\r\n\r\n/**\r\n * GetAssetBlobURLUC handles optimized retrieval of asset files as blob URLs.\r\n *\r\n * This singleton use case implements a multi-level caching strategy to minimize\r\n * network requests and provide fast access to asset files for web applications.\r\n */\r\nexport abstract class GetAssetBlobURLUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"GetAssetBlobURLUC\";\r\n\r\n /**\r\n * Retrieves a blob URL for the specified asset file.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param useCache - Optional flag to control caching behavior (defaults to true)\r\n * @returns Promise resolving to a blob URL for immediate use\r\n */\r\n abstract getAssetBlobURL(\r\n assetID: string,\r\n useCache?: boolean\r\n ): Promise<string>;\r\n\r\n /**\r\n * Retrieves the singleton GetAssetBlobURLUC instance.\r\n *\r\n * @param appObjects - Repository for accessing the singleton component\r\n * @returns GetAssetBlobURLUC instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo): GetAssetBlobURLUC | undefined {\r\n return getSingletonComponent<GetAssetBlobURLUC>(\r\n GetAssetBlobURLUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new GetAssetBlobURLUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case\r\n * @returns A new GetAssetBlobURLUC implementation instance\r\n */\r\nexport function makeGetAssetBlobURLUC(appObject: AppObject): GetAssetBlobURLUC {\r\n return new GetAssetBlobURLUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of GetAssetBlobURLUC with multi-level caching strategy.\r\n *\r\n * Key Implementation Details:\r\n * - Implements three-tier caching: memory (entities), persistent cache, and remote API\r\n * - Manages fetch state indicators for user feedback during operations\r\n * - Automatically caches fetched files for future access optimization\r\n * - Handles cache failures gracefully with fallback to direct API access\r\n * - Converts between Blob and File objects for compatibility\r\n * - Provides detailed error handling and logging for debugging\r\n */\r\nclass GetAssetBlobURLUCImp extends GetAssetBlobURLUC {\r\n /** Gets the asset repository for entity management and lookup */\r\n private get assetRepo() {\r\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\r\n }\r\n\r\n /** Gets the API use case for fetching asset files from remote sources */\r\n private get fetchAssetFile() {\r\n return this.getCachedSingleton<FetchAssetFileFromAPIUC>(\r\n FetchAssetFileFromAPIUC.type\r\n )?.doFetch;\r\n }\r\n\r\n /** Gets the use case for retrieving asset metadata */\r\n private get getAsset() {\r\n return this.getCachedSingleton<GetAssetUC>(GetAssetUC.type)?.getAsset;\r\n }\r\n\r\n /** Gets the use case for retrieving assets from persistent cache */\r\n private get getAssetFromCache() {\r\n return this.getCachedSingleton<GetAssetFromCacheUC>(\r\n GetAssetFromCacheUC.type\r\n )?.getAsset;\r\n }\r\n\r\n /** Gets the use case for storing assets in persistent cache */\r\n private get storeAssetInCache() {\r\n return this.getCachedSingleton<StoreAssetInCacheUC>(\r\n StoreAssetInCacheUC.type\r\n )?.storeAsset;\r\n }\r\n\r\n /**\r\n * Retrieves an asset blob URL using optimized multi-level caching.\r\n *\r\n * This method implements a three-tier caching strategy:\r\n * 1. Memory cache: Check if asset entity already has a blob URL\r\n * 2. Persistent cache: Check IndexedDB/localStorage for cached file\r\n * 3. Remote API: Fetch from backend as last resort\r\n *\r\n * Each level provides progressively better performance, with automatic\r\n * population of higher-level caches for future access optimization.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param useCache - Optional flag to control caching behavior (defaults to true)\r\n * @returns Promise resolving to a blob URL for the asset file\r\n */\r\n getAssetBlobURL = (\r\n assetID: string,\r\n useCache: boolean = true\r\n ): Promise<string> => {\r\n const assetRepo = this.assetRepo;\r\n const getAsset = this.getAsset;\r\n const fetchAssetFile = this.fetchAssetFile;\r\n const getAssetFromCache = this.getAssetFromCache;\r\n const storeAssetInCache = this.storeAssetInCache;\r\n\r\n if (!assetRepo || !getAsset || !fetchAssetFile) {\r\n return Promise.reject();\r\n }\r\n\r\n // If cache is disabled, skip all cache checks and go directly to API\r\n if (!useCache) {\r\n return new Promise((resolve, reject) => {\r\n this.fetchAssetNormally(assetID, resolve, reject);\r\n });\r\n }\r\n\r\n // Level 1: Check memory cache (existing entities with blob URLs)\r\n const existing = assetRepo.get(assetID);\r\n if (existing && existing.blobURL) {\r\n return Promise.resolve(existing.blobURL);\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n let fetchedAsset: AssetEntity | undefined;\r\n\r\n // Level 2: Check persistent cache\r\n if (getAssetFromCache) {\r\n getAssetFromCache(assetID)\r\n .then((cachedBlob) => {\r\n if (cachedBlob) {\r\n // Asset found in cache, get metadata and create file\r\n return getAsset(assetID).then((asset) => {\r\n fetchedAsset = asset;\r\n const filename = asset.filename || \"cached-asset\";\r\n return new File([cachedBlob], filename, {\r\n type: cachedBlob.type\r\n });\r\n });\r\n } else {\r\n // Level 3: Fetch from remote API\r\n return getAsset(assetID).then((asset) => {\r\n asset.isFetchingFile = true;\r\n asset.fetchError = undefined;\r\n fetchedAsset = asset;\r\n return fetchAssetFile(asset);\r\n });\r\n }\r\n })\r\n .then((file) => {\r\n if (fetchedAsset) {\r\n // Create blob URL and update entity\r\n fetchedAsset.setFile(file);\r\n fetchedAsset.isFetchingFile = false;\r\n\r\n // Store in cache for future access (if not from cache already)\r\n if (storeAssetInCache) {\r\n storeAssetInCache(\r\n assetID,\r\n new Blob([file], { type: file.type }),\r\n file.type\r\n ).catch((e) => {\r\n this.warn(`Failed to cache asset: ${e.message}`);\r\n });\r\n }\r\n\r\n if (fetchedAsset.blobURL) {\r\n resolve(fetchedAsset.blobURL);\r\n return;\r\n }\r\n }\r\n reject(new Error(\"Blob URL is empty\"));\r\n })\r\n .catch((e: Error) => {\r\n // Cache error, fallback to normal flow\r\n this.warn(`Cache error or fetch error: ${e.message}`);\r\n this.fetchAssetNormally(assetID, resolve, reject);\r\n });\r\n } else {\r\n // No cache available, use direct API access\r\n this.fetchAssetNormally(assetID, resolve, reject);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Helper method for direct asset fetching without cache support.\r\n *\r\n * This method handles the direct API fetch workflow when caching\r\n * is not available or has failed. It still attempts to store the\r\n * result in cache for future optimization.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param resolve - Success callback with blob URL\r\n * @param reject - Error callback with error details\r\n */\r\n private fetchAssetNormally = (\r\n assetID: string,\r\n resolve: (blobURL: string) => void,\r\n reject: (error: Error) => void\r\n ): void => {\r\n const getAsset = this.getAsset;\r\n const fetchAssetFile = this.fetchAssetFile;\r\n const storeAssetInCache = this.storeAssetInCache;\r\n\r\n if (!getAsset || !fetchAssetFile) {\r\n reject(new Error(\"Required dependencies not found\"));\r\n return;\r\n }\r\n\r\n let fetchedAsset: AssetEntity | undefined;\r\n\r\n getAsset(assetID)\r\n .then((asset) => {\r\n // Set loading state for UI feedback\r\n asset.isFetchingFile = true;\r\n asset.fetchError = undefined;\r\n fetchedAsset = asset;\r\n return fetchAssetFile(asset);\r\n })\r\n .then((file) => {\r\n if (fetchedAsset) {\r\n // Create blob URL and update entity\r\n fetchedAsset.setFile(file);\r\n fetchedAsset.isFetchingFile = false;\r\n\r\n // Store in cache for future optimization (if available)\r\n if (storeAssetInCache) {\r\n storeAssetInCache(\r\n assetID,\r\n new Blob([file], { type: file.type }),\r\n file.type\r\n ).catch((e) => {\r\n this.warn(`Failed to cache asset: ${e.message}`);\r\n });\r\n }\r\n\r\n if (fetchedAsset.blobURL) {\r\n resolve(fetchedAsset.blobURL);\r\n return;\r\n }\r\n }\r\n reject(new Error(\"Blob URL is empty\"));\r\n })\r\n .catch((e: Error) => {\r\n // Handle fetch errors with proper state cleanup\r\n if (fetchedAsset) {\r\n fetchedAsset.fetchError = e;\r\n fetchedAsset.isFetchingFile = false;\r\n }\r\n reject(e);\r\n });\r\n };\r\n\r\n /**\r\n * Initializes the GetAssetBlobURLUC and registers it as a singleton.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetAssetBlobURLUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetAssetFileUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAssetFileUC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,OAAgB,cAAe,SAAQ,WAAW;IAYtD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,cAAc,CAAC,IAAI,EACnB,UAAU,CACX,CAAC;IACJ,CAAC;;AAtBD,wDAAwD;AACjD,mBAAI,GAAG,gBAAgB,CAAC;AAwBjC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAoB;IACrD,OAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,iBAAkB,SAAQ,cAAc;IAC5C,iEAAiE;IACjE,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,yEAAyE;IACzE,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,uBAAuB,CAAC,IAAI,CAC7B,EAAE,OAAO,CAAC;IACb,CAAC;IAED,sDAAsD;IACtD,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAa,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACxE,CAAC;IAED,oEAAoE;IACpE,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,CAAC,IAAI,CACzB,EAAE,QAAQ,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,CAAC,IAAI,CACzB,EAAE,UAAU,CAAC;IAChB,CAAC;IA0CD;;;;;OAKG;IACK,KAAK,CAAC,sBAAsB,CAAC,OAAe;QAClD,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEjD,2DAA2D;QAC3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,kCAAkC;QAClC,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,UAAU,EAAE,CAAC;YACf,qDAAqD;YACrD,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,wBAAwB,CACpC,OAAe,EACf,UAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,qBAAqB;QACrB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEtC,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;YAC5C,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC,CAAC;QAEH,qBAAqB;QACrB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAAe;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE3C,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YAC5B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;YAE7B,iBAAiB;YACjB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;YAEzC,qBAAqB;YACrB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;YAE7B,gDAAgD;YAChD,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAE5C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAc,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,KAAY;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YACzB,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,IAAU;QACzD,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,iBAAiB,CACrB,OAAO,EACP,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EACrC,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,0BAA2B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QA5LxC;;;;;;;;;;;;;WAaG;QACH,iBAAY,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAE3C,kCAAkC;YAClC,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,oEAAoE;YACpE,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC;gBACxB,OAAO,aAAa,CAAC,IAAI,CAAC;YAC5B,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,8CAA8C;gBAC9C,IAAI,CAAC,IAAI,CAAC,gBAAiB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;QAuJA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["/**\n * GetAssetFileUC.ts\n *\n * This use case handles retrieval of asset files with advanced caching strategies,\n * returning File objects for use in web applications and file operations.\n *\n * Key Concepts:\n * - Retrieves asset files as File objects with multi-level caching optimization\n * - Checks memory cache (existing entities) first for immediate access\n * - Falls back to persistent cache (IndexedDB/localStorage) for faster retrieval\n * - Finally fetches from remote API when cache misses occur\n * - Manages fetch state indicators and error handling for user feedback\n * - Automatically stores fetched files in cache for future access\n *\n * Usage Patterns:\n * - Singleton use case accessed through static get() method\n * - Called with asset ID to retrieve File object for processing or display\n * - Handles async operations with comprehensive error handling\n * - Optimizes performance through intelligent caching strategies\n */\n\nimport {\n getSingletonComponent,\n AppObject,\n AppObjectRepo,\n AppObjectUC\n} from \"@vived/core\";\nimport { FetchAssetFileFromAPIUC } from \"../../VivedAPI\";\nimport { GetAssetFromCacheUC, StoreAssetInCacheUC } from \"../../Cache\";\nimport { AssetRepo } from \"../Entities/AssetRepo\";\nimport { GetAssetUC } from \"./GetAssetUC\";\n\n/**\n * GetAssetFileUC handles optimized retrieval of asset files as File objects.\n *\n * This singleton use case implements a multi-level caching strategy to minimize\n * network requests and provide fast access to asset files for web applications.\n */\nexport abstract class GetAssetFileUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"GetAssetFileUC\";\n\n /**\n * Retrieves a File object for the specified asset.\n *\n * @param assetID - The unique identifier of the asset\n * @returns Promise resolving to a File object for the asset\n */\n abstract getAssetFile(assetID: string): Promise<File>;\n\n /**\n * Retrieves the singleton GetAssetFileUC instance.\n *\n * @param appObjects - Repository for accessing the singleton component\n * @returns GetAssetFileUC instance or undefined if not found\n */\n static get(appObjects: AppObjectRepo): GetAssetFileUC | undefined {\n return getSingletonComponent<GetAssetFileUC>(\n GetAssetFileUC.type,\n appObjects\n );\n }\n}\n\n/**\n * Factory function to create a new GetAssetFileUC instance.\n *\n * @param appObject - The AppObject that will host this singleton use case\n * @returns A new GetAssetFileUC implementation instance\n */\nexport function makeGetAssetFileUC(appObject: AppObject): GetAssetFileUC {\n return new GetAssetFileUCImp(appObject);\n}\n\n/**\n * Private implementation of GetAssetFileUC with advanced caching and error handling.\n *\n * Key Implementation Details:\n * - Implements three-tier caching: memory (entities), persistent cache, and remote API\n * - Uses async/await for cleaner error handling and flow control\n * - Manages fetch state indicators for user feedback during operations\n * - Automatically caches fetched files for future access optimization\n * - Handles cache failures gracefully with fallback to direct API access\n * - Converts between Blob and File objects maintaining metadata integrity\n * - Provides detailed error handling and logging for debugging\n */\nclass GetAssetFileUCImp extends GetAssetFileUC {\n /** Gets the asset repository for entity management and lookup */\n private get assetRepo() {\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\n }\n\n /** Gets the API use case for fetching asset files from remote sources */\n private get fetchAssetFile() {\n return this.getCachedSingleton<FetchAssetFileFromAPIUC>(\n FetchAssetFileFromAPIUC.type\n )?.doFetch;\n }\n\n /** Gets the use case for retrieving asset metadata */\n private get getAsset() {\n return this.getCachedSingleton<GetAssetUC>(GetAssetUC.type)?.getAsset;\n }\n\n /** Gets the use case for retrieving assets from persistent cache */\n private get getAssetFromCache() {\n return this.getCachedSingleton<GetAssetFromCacheUC>(\n GetAssetFromCacheUC.type\n )?.getAsset;\n }\n\n /** Gets the use case for storing assets in persistent cache */\n private get storeAssetInCache() {\n return this.getCachedSingleton<StoreAssetInCacheUC>(\n StoreAssetInCacheUC.type\n )?.storeAsset;\n }\n\n /**\n * Retrieves an asset file using optimized multi-level caching.\n *\n * This method implements a three-tier caching strategy:\n * 1. Memory cache: Check if asset entity already has a File object\n * 2. Persistent cache: Check IndexedDB/localStorage for cached file\n * 3. Remote API: Fetch from backend as last resort\n *\n * Each level provides progressively better performance, with automatic\n * population of higher-level caches for future access optimization.\n *\n * @param assetID - The unique identifier of the asset\n * @returns Promise resolving to a File object for the asset\n */\n getAssetFile = async (assetID: string): Promise<File> => {\n const assetRepo = this.assetRepo;\n const getAsset = this.getAsset;\n const fetchAssetFile = this.fetchAssetFile;\n\n // Check for required dependencies\n if (!assetRepo || !getAsset || !fetchAssetFile) {\n return Promise.reject(new Error(\"Missing required dependencies\"));\n }\n\n // Level 1: Check memory cache (existing entities with File objects)\n const existingAsset = assetRepo.get(assetID);\n if (existingAsset?.file) {\n return existingAsset.file;\n }\n\n // Level 2 & 3: Try cache then API with comprehensive error handling\n try {\n return await this.tryGetFromCacheOrFetch(assetID);\n } catch (error) {\n // If cache access failed, try the normal flow\n this.warn(`Cache error: ${(error as Error).message}`);\n return this.fetchAssetDirectly(assetID);\n }\n };\n\n /**\n * Attempts to retrieve from cache or falls back to direct API fetch.\n *\n * @param assetID - The unique identifier of the asset\n * @returns Promise resolving to a File object\n */\n private async tryGetFromCacheOrFetch(assetID: string): Promise<File> {\n const getAssetFromCache = this.getAssetFromCache;\n\n // If no cache is available, go straight to normal fetching\n if (!getAssetFromCache) {\n return this.fetchAssetDirectly(assetID);\n }\n\n // Try to get the asset from cache\n const cachedBlob = await getAssetFromCache(assetID);\n\n if (cachedBlob) {\n // Asset found in cache, get metadata and create file\n return this.createFileFromCachedBlob(assetID, cachedBlob);\n } else {\n // Not in cache, fetch directly\n return this.fetchAssetDirectly(assetID);\n }\n }\n\n /**\n * Creates a File object from cached blob data and asset metadata.\n *\n * @param assetID - The unique identifier of the asset\n * @param cachedBlob - The cached blob data\n * @returns Promise resolving to a File object with proper metadata\n */\n private async createFileFromCachedBlob(\n assetID: string,\n cachedBlob: Blob\n ): Promise<File> {\n const getAsset = this.getAsset;\n\n if (!getAsset) {\n throw new Error(\"Required dependencies not found\");\n }\n\n // Get asset metadata\n const asset = await getAsset(assetID);\n\n // Convert blob to file with proper metadata\n const filename = asset.filename || \"cached-asset\";\n const file = new File([cachedBlob], filename, {\n type: cachedBlob.type\n });\n\n // Update asset state\n asset.setFile(file);\n asset.isFetchingFile = false;\n\n return file;\n }\n\n /**\n * Fetches asset file directly from API with state management.\n *\n * @param assetID - The unique identifier of the asset\n * @returns Promise resolving to a File object\n */\n private async fetchAssetDirectly(assetID: string): Promise<File> {\n const getAsset = this.getAsset;\n const fetchAssetFile = this.fetchAssetFile;\n\n if (!getAsset || !fetchAssetFile) {\n throw new Error(\"Required dependencies not found\");\n }\n\n try {\n // Get asset and prepare for fetching\n const asset = await getAsset(assetID);\n asset.isFetchingFile = true;\n asset.fetchError = undefined;\n\n // Fetch the file\n const file = await fetchAssetFile(asset);\n\n // Update asset state\n asset.setFile(file);\n asset.isFetchingFile = false;\n\n // Try to store in cache for future optimization\n await this.tryCacheAssetFile(assetID, file);\n\n return file;\n } catch (error) {\n await this.handleFetchError(assetID, error as Error);\n throw error;\n }\n }\n\n /**\n * Handles fetch errors by updating asset state appropriately.\n *\n * @param assetID - The unique identifier of the asset\n * @param error - The error that occurred during fetching\n */\n private async handleFetchError(assetID: string, error: Error): Promise<void> {\n const getAsset = this.getAsset;\n\n if (!getAsset) {\n return;\n }\n\n try {\n const asset = await getAsset(assetID);\n asset.fetchError = error;\n asset.isFetchingFile = false;\n } catch {\n // If we can't get the asset, we can't update its error state\n }\n }\n\n /**\n * Attempts to cache the fetched file for future optimization.\n *\n * @param assetID - The unique identifier of the asset\n * @param file - The file to cache\n */\n private async tryCacheAssetFile(assetID: string, file: File): Promise<void> {\n const storeAssetInCache = this.storeAssetInCache;\n\n if (!storeAssetInCache) {\n return;\n }\n\n try {\n await storeAssetInCache(\n assetID,\n new Blob([file], { type: file.type }),\n file.type\n );\n } catch (e) {\n this.warn(`Failed to cache asset: ${(e as Error).message}`);\n }\n }\n\n /**\n * Initializes the GetAssetFileUC and registers it as a singleton.\n *\n * @param appObject - The AppObject that will host this singleton use case\n */\n constructor(appObject: AppObject) {\n super(appObject, GetAssetFileUC.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GetAssetFileUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAssetFileUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * GetAssetFileUC.ts\r\n *\r\n * This use case handles retrieval of asset files with advanced caching strategies,\r\n * returning File objects for use in web applications and file operations.\r\n *\r\n * Key Concepts:\r\n * - Retrieves asset files as File objects with multi-level caching optimization\r\n * - Checks memory cache (existing entities) first for immediate access\r\n * - Falls back to persistent cache (IndexedDB/localStorage) for faster retrieval\r\n * - Finally fetches from remote API when cache misses occur\r\n * - Manages fetch state indicators and error handling for user feedback\r\n * - Automatically stores fetched files in cache for future access\r\n *\r\n * Usage Patterns:\r\n * - Singleton use case accessed through static get() method\r\n * - Called with asset ID to retrieve File object for processing or display\r\n * - Handles async operations with comprehensive error handling\r\n * - Optimizes performance through intelligent caching strategies\r\n */\r\n\r\nimport {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { FetchAssetFileFromAPIUC } from \"../../VivedAPI\";\r\nimport { GetAssetFromCacheUC, StoreAssetInCacheUC } from \"../../Cache\";\r\nimport { AssetRepo } from \"../Entities/AssetRepo\";\r\nimport { GetAssetUC } from \"./GetAssetUC\";\r\n\r\n/**\r\n * GetAssetFileUC handles optimized retrieval of asset files as File objects.\r\n *\r\n * This singleton use case implements a multi-level caching strategy to minimize\r\n * network requests and provide fast access to asset files for web applications.\r\n */\r\nexport abstract class GetAssetFileUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"GetAssetFileUC\";\r\n\r\n /**\r\n * Retrieves a File object for the specified asset.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @returns Promise resolving to a File object for the asset\r\n */\r\n abstract getAssetFile(assetID: string): Promise<File>;\r\n\r\n /**\r\n * Retrieves the singleton GetAssetFileUC instance.\r\n *\r\n * @param appObjects - Repository for accessing the singleton component\r\n * @returns GetAssetFileUC instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo): GetAssetFileUC | undefined {\r\n return getSingletonComponent<GetAssetFileUC>(\r\n GetAssetFileUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new GetAssetFileUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case\r\n * @returns A new GetAssetFileUC implementation instance\r\n */\r\nexport function makeGetAssetFileUC(appObject: AppObject): GetAssetFileUC {\r\n return new GetAssetFileUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of GetAssetFileUC with advanced caching and error handling.\r\n *\r\n * Key Implementation Details:\r\n * - Implements three-tier caching: memory (entities), persistent cache, and remote API\r\n * - Uses async/await for cleaner error handling and flow control\r\n * - Manages fetch state indicators for user feedback during operations\r\n * - Automatically caches fetched files for future access optimization\r\n * - Handles cache failures gracefully with fallback to direct API access\r\n * - Converts between Blob and File objects maintaining metadata integrity\r\n * - Provides detailed error handling and logging for debugging\r\n */\r\nclass GetAssetFileUCImp extends GetAssetFileUC {\r\n /** Gets the asset repository for entity management and lookup */\r\n private get assetRepo() {\r\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\r\n }\r\n\r\n /** Gets the API use case for fetching asset files from remote sources */\r\n private get fetchAssetFile() {\r\n return this.getCachedSingleton<FetchAssetFileFromAPIUC>(\r\n FetchAssetFileFromAPIUC.type\r\n )?.doFetch;\r\n }\r\n\r\n /** Gets the use case for retrieving asset metadata */\r\n private get getAsset() {\r\n return this.getCachedSingleton<GetAssetUC>(GetAssetUC.type)?.getAsset;\r\n }\r\n\r\n /** Gets the use case for retrieving assets from persistent cache */\r\n private get getAssetFromCache() {\r\n return this.getCachedSingleton<GetAssetFromCacheUC>(\r\n GetAssetFromCacheUC.type\r\n )?.getAsset;\r\n }\r\n\r\n /** Gets the use case for storing assets in persistent cache */\r\n private get storeAssetInCache() {\r\n return this.getCachedSingleton<StoreAssetInCacheUC>(\r\n StoreAssetInCacheUC.type\r\n )?.storeAsset;\r\n }\r\n\r\n /**\r\n * Retrieves an asset file using optimized multi-level caching.\r\n *\r\n * This method implements a three-tier caching strategy:\r\n * 1. Memory cache: Check if asset entity already has a File object\r\n * 2. Persistent cache: Check IndexedDB/localStorage for cached file\r\n * 3. Remote API: Fetch from backend as last resort\r\n *\r\n * Each level provides progressively better performance, with automatic\r\n * population of higher-level caches for future access optimization.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @returns Promise resolving to a File object for the asset\r\n */\r\n getAssetFile = async (assetID: string): Promise<File> => {\r\n const assetRepo = this.assetRepo;\r\n const getAsset = this.getAsset;\r\n const fetchAssetFile = this.fetchAssetFile;\r\n\r\n // Check for required dependencies\r\n if (!assetRepo || !getAsset || !fetchAssetFile) {\r\n return Promise.reject(new Error(\"Missing required dependencies\"));\r\n }\r\n\r\n // Level 1: Check memory cache (existing entities with File objects)\r\n const existingAsset = assetRepo.get(assetID);\r\n if (existingAsset?.file) {\r\n return existingAsset.file;\r\n }\r\n\r\n // Level 2 & 3: Try cache then API with comprehensive error handling\r\n try {\r\n return await this.tryGetFromCacheOrFetch(assetID);\r\n } catch (error) {\r\n // If cache access failed, try the normal flow\r\n this.warn(`Cache error: ${(error as Error).message}`);\r\n return this.fetchAssetDirectly(assetID);\r\n }\r\n };\r\n\r\n /**\r\n * Attempts to retrieve from cache or falls back to direct API fetch.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @returns Promise resolving to a File object\r\n */\r\n private async tryGetFromCacheOrFetch(assetID: string): Promise<File> {\r\n const getAssetFromCache = this.getAssetFromCache;\r\n\r\n // If no cache is available, go straight to normal fetching\r\n if (!getAssetFromCache) {\r\n return this.fetchAssetDirectly(assetID);\r\n }\r\n\r\n // Try to get the asset from cache\r\n const cachedBlob = await getAssetFromCache(assetID);\r\n\r\n if (cachedBlob) {\r\n // Asset found in cache, get metadata and create file\r\n return this.createFileFromCachedBlob(assetID, cachedBlob);\r\n } else {\r\n // Not in cache, fetch directly\r\n return this.fetchAssetDirectly(assetID);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a File object from cached blob data and asset metadata.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param cachedBlob - The cached blob data\r\n * @returns Promise resolving to a File object with proper metadata\r\n */\r\n private async createFileFromCachedBlob(\r\n assetID: string,\r\n cachedBlob: Blob\r\n ): Promise<File> {\r\n const getAsset = this.getAsset;\r\n\r\n if (!getAsset) {\r\n throw new Error(\"Required dependencies not found\");\r\n }\r\n\r\n // Get asset metadata\r\n const asset = await getAsset(assetID);\r\n\r\n // Convert blob to file with proper metadata\r\n const filename = asset.filename || \"cached-asset\";\r\n const file = new File([cachedBlob], filename, {\r\n type: cachedBlob.type\r\n });\r\n\r\n // Update asset state\r\n asset.setFile(file);\r\n asset.isFetchingFile = false;\r\n\r\n return file;\r\n }\r\n\r\n /**\r\n * Fetches asset file directly from API with state management.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @returns Promise resolving to a File object\r\n */\r\n private async fetchAssetDirectly(assetID: string): Promise<File> {\r\n const getAsset = this.getAsset;\r\n const fetchAssetFile = this.fetchAssetFile;\r\n\r\n if (!getAsset || !fetchAssetFile) {\r\n throw new Error(\"Required dependencies not found\");\r\n }\r\n\r\n try {\r\n // Get asset and prepare for fetching\r\n const asset = await getAsset(assetID);\r\n asset.isFetchingFile = true;\r\n asset.fetchError = undefined;\r\n\r\n // Fetch the file\r\n const file = await fetchAssetFile(asset);\r\n\r\n // Update asset state\r\n asset.setFile(file);\r\n asset.isFetchingFile = false;\r\n\r\n // Try to store in cache for future optimization\r\n await this.tryCacheAssetFile(assetID, file);\r\n\r\n return file;\r\n } catch (error) {\r\n await this.handleFetchError(assetID, error as Error);\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Handles fetch errors by updating asset state appropriately.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param error - The error that occurred during fetching\r\n */\r\n private async handleFetchError(assetID: string, error: Error): Promise<void> {\r\n const getAsset = this.getAsset;\r\n\r\n if (!getAsset) {\r\n return;\r\n }\r\n\r\n try {\r\n const asset = await getAsset(assetID);\r\n asset.fetchError = error;\r\n asset.isFetchingFile = false;\r\n } catch {\r\n // If we can't get the asset, we can't update its error state\r\n }\r\n }\r\n\r\n /**\r\n * Attempts to cache the fetched file for future optimization.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param file - The file to cache\r\n */\r\n private async tryCacheAssetFile(assetID: string, file: File): Promise<void> {\r\n const storeAssetInCache = this.storeAssetInCache;\r\n\r\n if (!storeAssetInCache) {\r\n return;\r\n }\r\n\r\n try {\r\n await storeAssetInCache(\r\n assetID,\r\n new Blob([file], { type: file.type }),\r\n file.type\r\n );\r\n } catch (e) {\r\n this.warn(`Failed to cache asset: ${(e as Error).message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the GetAssetFileUC and registers it as a singleton.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetAssetFileUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAssetUC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAgB,UAAW,SAAQ,WAAW;IAYlD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAa,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAnBD,wDAAwD;AACjD,eAAI,GAAG,YAAY,CAAC;AAqB7B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,aAAc,SAAQ,UAAU;IAIpC;;;OAGG;IACH,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,uBAAuB,CAAC,IAAI,CAC7B,EAAE,OAAO,CAAC;IACb,CAAC;IA2CD;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA/CpC;;;;;;;;;;;;WAYG;QACH,aAAQ,GAAG,CAAC,OAAe,EAAwB,EAAE;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAE3C,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,CAAC;YAED,oDAAoD;YACpD,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC;YAClD,CAAC;YAED,mCAAmC;YACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,cAAc,CAAC,OAAO,CAAC;qBACpB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBAChB,gDAAgD;oBAChD,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBAChD,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrB,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QASA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,qDAAqD;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;IACH,CAAC;CACF","sourcesContent":["/**\n * GetAssetUC.ts\n *\n * This use case handles retrieval of asset metadata, managing both local\n * repository cache and remote API fetching to ensure asset entities exist\n * and are properly configured.\n *\n * Key Concepts:\n * - Retrieves asset entities with metadata from local cache or remote API\n * - Maintains asset repository consistency for entity management\n * - Uses lazy loading to fetch assets only when needed\n * - Transforms API DTOs to local asset entities automatically\n * - Provides singleton access for system-wide asset retrieval\n *\n * Usage Patterns:\n * - Singleton use case accessed through static get() method\n * - Called with asset ID to ensure asset entity exists and is loaded\n * - Returns existing entities immediately or fetches from API as needed\n * - Used by other UCs that need asset entities for operations\n */\n\nimport {\n getSingletonComponent,\n AppObject,\n AppObjectRepo,\n AppObjectUC\n} from \"@vived/core\";\nimport { FetchAssetMetaFromAPIUC } from \"../../VivedAPI\";\nimport { AssetEntity } from \"../Entities/AssetEntity\";\nimport { AssetRepo } from \"../Entities/AssetRepo\";\n\n/**\n * GetAssetUC handles retrieval and caching of asset entities with metadata.\n *\n * This singleton use case ensures asset entities exist in the local repository,\n * fetching from the API when necessary and maintaining consistent entity state.\n */\nexport abstract class GetAssetUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"GetAssetUC\";\n\n /**\n * Retrieves an asset entity, fetching from API if not already cached.\n *\n * @param assetID - The unique identifier of the asset\n * @returns Promise resolving to the asset entity with loaded metadata\n */\n abstract getAsset(assetID: string): Promise<AssetEntity>;\n\n /**\n * Retrieves the singleton GetAssetUC instance.\n *\n * @param appObjects - Repository for accessing the singleton component\n * @returns GetAssetUC instance or undefined if not found\n */\n static get(appObjects: AppObjectRepo): GetAssetUC | undefined {\n return getSingletonComponent<GetAssetUC>(GetAssetUC.type, appObjects);\n }\n}\n\n/**\n * Factory function to create a new GetAssetUC instance.\n *\n * @param appObject - The AppObject that will host this singleton use case (must have AssetRepo)\n * @returns A new GetAssetUC implementation instance\n */\nexport function makeGetAssetUC(appObject: AppObject): GetAssetUC {\n return new GetAssetUCImp(appObject);\n}\n\n/**\n * Private implementation of GetAssetUC with caching and API integration.\n *\n * Key Implementation Details:\n * - Checks local asset repository first for immediate access\n * - Falls back to API fetch when asset is not cached locally\n * - Transforms API DTOs to asset entities using repository methods\n * - Provides error handling and logging for debugging\n * - Validates required dependencies during initialization\n */\nclass GetAssetUCImp extends GetAssetUC {\n /** The asset repository for entity management and caching */\n private assetRepo?: AssetRepo;\n\n /**\n * Gets the API use case for fetching asset metadata from remote sources\n * Used when assets are not available in the local repository\n */\n private get fetchAssetMeta() {\n return this.getCachedSingleton<FetchAssetMetaFromAPIUC>(\n FetchAssetMetaFromAPIUC.type\n )?.doFetch;\n }\n\n /**\n * Retrieves an asset entity with intelligent caching.\n *\n * This method implements a two-tier strategy:\n * 1. Check local repository for existing entity (immediate return)\n * 2. Fetch from API and create entity if not cached\n *\n * The method ensures all requested assets are available as entities\n * in the local repository for subsequent operations.\n *\n * @param assetID - The unique identifier of the asset\n * @returns Promise resolving to the asset entity with loaded metadata\n */\n getAsset = (assetID: string): Promise<AssetEntity> => {\n const assetRepo = this.assetRepo;\n const fetchAssetMeta = this.fetchAssetMeta;\n\n if (!assetRepo || !fetchAssetMeta) {\n return Promise.reject();\n }\n\n // Check local repository first for immediate access\n if (assetRepo.has(assetID)) {\n return Promise.resolve(assetRepo.get(assetID)!);\n }\n\n // Asset not cached, fetch from API\n return new Promise((resolve, reject) => {\n fetchAssetMeta(assetID)\n .then((baseDTO) => {\n // Transform DTO to entity and add to repository\n const baseAsset = assetRepo.addFromDTO(baseDTO);\n resolve(baseAsset);\n })\n .catch((e: Error) => {\n this.warn(e.message);\n reject(e);\n });\n });\n };\n\n /**\n * Initializes the GetAssetUC with required dependencies and validation.\n *\n * @param appObject - The AppObject that should contain the AssetRepo for entity management\n */\n constructor(appObject: AppObject) {\n super(appObject, GetAssetUC.type);\n this.appObjects.registerSingleton(this);\n\n // Validate and cache the asset repository dependency\n this.assetRepo = appObject.getComponent<AssetRepo>(AssetRepo.type);\n if (!this.assetRepo) {\n this.error(\"UC added to an App Object that does not have AssetRepo\");\n return;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GetAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/GetAssetUC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAgB,UAAW,SAAQ,WAAW;IAYlD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAa,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAnBD,wDAAwD;AACjD,eAAI,GAAG,YAAY,CAAC;AAqB7B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,aAAc,SAAQ,UAAU;IAIpC;;;OAGG;IACH,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,uBAAuB,CAAC,IAAI,CAC7B,EAAE,OAAO,CAAC;IACb,CAAC;IA2CD;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA/CpC;;;;;;;;;;;;WAYG;QACH,aAAQ,GAAG,CAAC,OAAe,EAAwB,EAAE;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAE3C,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,CAAC;YAED,oDAAoD;YACpD,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC;YAClD,CAAC;YAED,mCAAmC;YACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,cAAc,CAAC,OAAO,CAAC;qBACpB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBAChB,gDAAgD;oBAChD,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBAChD,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrB,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QASA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,qDAAqD;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;IACH,CAAC;CACF","sourcesContent":["/**\r\n * GetAssetUC.ts\r\n *\r\n * This use case handles retrieval of asset metadata, managing both local\r\n * repository cache and remote API fetching to ensure asset entities exist\r\n * and are properly configured.\r\n *\r\n * Key Concepts:\r\n * - Retrieves asset entities with metadata from local cache or remote API\r\n * - Maintains asset repository consistency for entity management\r\n * - Uses lazy loading to fetch assets only when needed\r\n * - Transforms API DTOs to local asset entities automatically\r\n * - Provides singleton access for system-wide asset retrieval\r\n *\r\n * Usage Patterns:\r\n * - Singleton use case accessed through static get() method\r\n * - Called with asset ID to ensure asset entity exists and is loaded\r\n * - Returns existing entities immediately or fetches from API as needed\r\n * - Used by other UCs that need asset entities for operations\r\n */\r\n\r\nimport {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { FetchAssetMetaFromAPIUC } from \"../../VivedAPI\";\r\nimport { AssetEntity } from \"../Entities/AssetEntity\";\r\nimport { AssetRepo } from \"../Entities/AssetRepo\";\r\n\r\n/**\r\n * GetAssetUC handles retrieval and caching of asset entities with metadata.\r\n *\r\n * This singleton use case ensures asset entities exist in the local repository,\r\n * fetching from the API when necessary and maintaining consistent entity state.\r\n */\r\nexport abstract class GetAssetUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"GetAssetUC\";\r\n\r\n /**\r\n * Retrieves an asset entity, fetching from API if not already cached.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @returns Promise resolving to the asset entity with loaded metadata\r\n */\r\n abstract getAsset(assetID: string): Promise<AssetEntity>;\r\n\r\n /**\r\n * Retrieves the singleton GetAssetUC instance.\r\n *\r\n * @param appObjects - Repository for accessing the singleton component\r\n * @returns GetAssetUC instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo): GetAssetUC | undefined {\r\n return getSingletonComponent<GetAssetUC>(GetAssetUC.type, appObjects);\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new GetAssetUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case (must have AssetRepo)\r\n * @returns A new GetAssetUC implementation instance\r\n */\r\nexport function makeGetAssetUC(appObject: AppObject): GetAssetUC {\r\n return new GetAssetUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of GetAssetUC with caching and API integration.\r\n *\r\n * Key Implementation Details:\r\n * - Checks local asset repository first for immediate access\r\n * - Falls back to API fetch when asset is not cached locally\r\n * - Transforms API DTOs to asset entities using repository methods\r\n * - Provides error handling and logging for debugging\r\n * - Validates required dependencies during initialization\r\n */\r\nclass GetAssetUCImp extends GetAssetUC {\r\n /** The asset repository for entity management and caching */\r\n private assetRepo?: AssetRepo;\r\n\r\n /**\r\n * Gets the API use case for fetching asset metadata from remote sources\r\n * Used when assets are not available in the local repository\r\n */\r\n private get fetchAssetMeta() {\r\n return this.getCachedSingleton<FetchAssetMetaFromAPIUC>(\r\n FetchAssetMetaFromAPIUC.type\r\n )?.doFetch;\r\n }\r\n\r\n /**\r\n * Retrieves an asset entity with intelligent caching.\r\n *\r\n * This method implements a two-tier strategy:\r\n * 1. Check local repository for existing entity (immediate return)\r\n * 2. Fetch from API and create entity if not cached\r\n *\r\n * The method ensures all requested assets are available as entities\r\n * in the local repository for subsequent operations.\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @returns Promise resolving to the asset entity with loaded metadata\r\n */\r\n getAsset = (assetID: string): Promise<AssetEntity> => {\r\n const assetRepo = this.assetRepo;\r\n const fetchAssetMeta = this.fetchAssetMeta;\r\n\r\n if (!assetRepo || !fetchAssetMeta) {\r\n return Promise.reject();\r\n }\r\n\r\n // Check local repository first for immediate access\r\n if (assetRepo.has(assetID)) {\r\n return Promise.resolve(assetRepo.get(assetID)!);\r\n }\r\n\r\n // Asset not cached, fetch from API\r\n return new Promise((resolve, reject) => {\r\n fetchAssetMeta(assetID)\r\n .then((baseDTO) => {\r\n // Transform DTO to entity and add to repository\r\n const baseAsset = assetRepo.addFromDTO(baseDTO);\r\n resolve(baseAsset);\r\n })\r\n .catch((e: Error) => {\r\n this.warn(e.message);\r\n reject(e);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Initializes the GetAssetUC with required dependencies and validation.\r\n *\r\n * @param appObject - The AppObject that should contain the AssetRepo for entity management\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetAssetUC.type);\r\n this.appObjects.registerSingleton(this);\r\n\r\n // Validate and cache the asset repository dependency\r\n this.assetRepo = appObject.getComponent<AssetRepo>(AssetRepo.type);\r\n if (!this.assetRepo) {\r\n this.error(\"UC added to an App Object that does not have AssetRepo\");\r\n return;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -71,7 +71,11 @@ class NewAppAssetUCImp extends NewAppAssetUC {
|
|
|
71
71
|
description,
|
|
72
72
|
name,
|
|
73
73
|
file,
|
|
74
|
-
ownerID: sandbox.appID
|
|
74
|
+
ownerID: sandbox.appID,
|
|
75
|
+
// App-owned create: the backend authorizes this via the `app` branch
|
|
76
|
+
// only when the row carries ownerType "app" (it does not infer it).
|
|
77
|
+
// See vivedlearning/vived-api-legacy#133.
|
|
78
|
+
ownerType: "app"
|
|
75
79
|
};
|
|
76
80
|
const spinnerDialog = this.spinnerFactory?.make({
|
|
77
81
|
title: "New App Asset",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewAppAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/NewAppAssetUC.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAEL,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAkB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAczD;;;;GAIG;AACH,MAAM,OAAgB,aAAc,SAAQ,WAAW;IAYrD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;;AAnBD,wDAAwD;AACjD,kBAAI,GAAG,eAAe,CAAC;AAqBhC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,gBAAiB,SAAQ,aAAa;IAG1C,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9E,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,CAAC,IAAI,CACzB,CAAC;IACJ,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAoB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;
|
|
1
|
+
{"version":3,"file":"NewAppAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/NewAppAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * NewAppAssetUC.ts\r\n *\r\n * This use case handles creation of new assets within application contexts,\r\n * managing the complete workflow from file upload to UI state transitions.\r\n */\r\n\r\nimport {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { AppSandboxEntity, SandboxState } from \"../../AppSandbox/Entities\";\r\nimport {\r\n DialogAlertDTO,\r\n MakeAlertDialogUC,\r\n MakeSpinnerDialogUC\r\n} from \"../../Dialog\";\r\nimport { NewAssetApiDto, PostNewAssetUC } from \"../../VivedAPI/UCs\";\r\nimport { AppAssetsEntity, AssetRepo } from \"../Entities\";\r\n\r\n/**\r\n * Data transfer object for new application asset creation requests.\r\n */\r\nexport interface NewAppAssetDTO {\r\n /** The file object to be uploaded and stored as the asset */\r\n file: File;\r\n /** Display name for the asset */\r\n name: string;\r\n /** Detailed description of the asset's purpose or content */\r\n description: string;\r\n}\r\n\r\n/**\r\n * NewAppAssetUC handles creation of new assets within application contexts.\r\n *\r\n * This singleton use case manages asset creation with UI feedback and state transitions.\r\n */\r\nexport abstract class NewAppAssetUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"NewAppAssetUC\";\r\n\r\n /**\r\n * Creates a new asset with the provided data.\r\n *\r\n * @param data - Complete asset information including file and metadata\r\n * @returns Promise that resolves when the asset is successfully created\r\n */\r\n abstract create(data: NewAppAssetDTO): Promise<void>;\r\n\r\n /**\r\n * Retrieves the singleton NewAppAssetUC instance.\r\n *\r\n * @param appObjects - Repository for accessing the singleton component\r\n * @returns NewAppAssetUC instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo): NewAppAssetUC | undefined {\r\n return getSingletonComponent(NewAppAssetUC.type, appObjects);\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new NewAppAssetUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case\r\n * @returns A new NewAppAssetUC implementation instance\r\n */\r\nexport function makeNewAppAssetUC(appObject: AppObject): NewAppAssetUC {\r\n return new NewAppAssetUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of NewAppAssetUC with app context and state management.\r\n */\r\nclass NewAppAssetUCImp extends NewAppAssetUC {\r\n private appAssets?: AppAssetsEntity;\r\n\r\n private get postNewAsset() {\r\n return this.getCachedSingleton<PostNewAssetUC>(PostNewAssetUC.type)?.doPost;\r\n }\r\n\r\n private get assetRepo() {\r\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\r\n }\r\n\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n private get spinnerFactory() {\r\n return this.getCachedSingleton<MakeSpinnerDialogUC>(\r\n MakeSpinnerDialogUC.type\r\n );\r\n }\r\n\r\n private get alertFactory() {\r\n return this.getCachedSingleton<MakeAlertDialogUC>(MakeAlertDialogUC.type);\r\n }\r\n\r\n create = (data: NewAppAssetDTO): Promise<void> => {\r\n const appAssets = this.appAssets;\r\n const postNewAsset = this.postNewAsset;\r\n const sandbox = this.sandbox;\r\n const assetRepo = this.assetRepo;\r\n\r\n if (!appAssets || !postNewAsset || !sandbox || !assetRepo) {\r\n return Promise.reject();\r\n }\r\n\r\n return new Promise<void>((resolve) => {\r\n const { description, file, name } = data;\r\n\r\n const newAssetData: NewAssetApiDto = {\r\n description,\r\n name,\r\n file,\r\n ownerID: sandbox.appID,\r\n // App-owned create: the backend authorizes this via the `app` branch\r\n // only when the row carries ownerType \"app\" (it does not infer it).\r\n // See vivedlearning/vived-api-legacy#133.\r\n ownerType: \"app\"\r\n };\r\n\r\n const spinnerDialog = this.spinnerFactory?.make({\r\n title: \"New App Asset\",\r\n message: \"Posting new app asset...\"\r\n });\r\n\r\n postNewAsset(newAssetData)\r\n .then((resp) => {\r\n appAssets.add(resp.id);\r\n\r\n const newAsset = assetRepo.assetFactory(resp.id);\r\n newAsset.setFile(file);\r\n newAsset.description = description;\r\n newAsset.name = name;\r\n newAsset.filename = resp.filename;\r\n\r\n assetRepo.add(newAsset);\r\n this.sandbox!.state = SandboxState.MOUNTED;\r\n\r\n spinnerDialog?.close();\r\n resolve();\r\n })\r\n .catch((e: Error) => {\r\n this.error(\"create new asset error: \" + e.message);\r\n spinnerDialog?.close();\r\n\r\n const dialogDTO: DialogAlertDTO = {\r\n buttonLabel: \"OK\",\r\n message: `Something went wrong when creating a new app asset. Check the console. ${e.message}`,\r\n title: \"New App Asset Error\"\r\n };\r\n this.alertFactory?.make(dialogDTO);\r\n\r\n resolve();\r\n });\r\n });\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, NewAppAssetUC.type);\r\n this.appObjects.registerSingleton(this);\r\n\r\n this.appAssets = appObject.getComponent<AppAssetsEntity>(\r\n AppAssetsEntity.type\r\n );\r\n if (!this.appAssets) {\r\n this.error(\r\n \"UC added to an App Object that does not have AppAssetsEntity\"\r\n );\r\n return;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/NewAssetUC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAGL,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxC;;;;;GAKG;AACH,MAAM,OAAgB,UAAW,SAAQ,WAAW;IAYlD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;;AAnBD,wDAAwD;AACjD,eAAI,GAAG,YAAY,CAAC;AAqB7B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,aAAc,SAAQ,UAAU;IACpC;;;OAGG;IACH,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACH,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IA8CD;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAlDpC;;;;;;;;;;;;;WAaG;QACH,WAAM,GAAG,CAAC,IAAiB,EAAmB,EAAE;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEjC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAChD,MAAM,YAAY,GAAmB;gBACnC,WAAW;gBACX,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9C,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;gBACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAElC,mCAAmC;gBACnC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QASA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["/**\n * NewAssetUC.ts\n *\n * This use case handles the creation of new assets, managing the complete workflow\n * from file upload through API persistence to local entity creation and storage.\n *\n * Key Concepts:\n * - Singleton use case that handles asset creation operations\n * - Coordinates file upload with metadata persistence via API\n * - Creates and configures new asset entities in the local repository\n * - Transforms between DTO formats for API and internal use\n * - Provides unique asset IDs for tracking and reference\n *\n * Usage Patterns:\n * - Accessed as a singleton through static get() method\n * - Called with complete asset data including file and metadata\n * - Returns asset ID for immediate reference by calling code\n * - Handles async operations with proper error propagation\n */\n\nimport {\n AppObject,\n AppObjectRepo,\n AppObjectUC,\n getSingletonComponent\n} from \"@vived/core\";\nimport { NewAssetApiDto, PostNewAssetUC } from \"../../VivedAPI/UCs\";\nimport { AssetRepo } from \"../Entities\";\n\n/**\n * Data transfer object for new asset creation requests.\n * Contains all necessary information to create a new asset in the system.\n */\nexport interface NewAssetDto {\n /** The file object to be uploaded and stored as the asset */\n file: File;\n /** Display name for the asset */\n name: string;\n /** Detailed description of the asset's purpose or content */\n description: string;\n /** ID of the user or entity that owns this asset */\n owner: string;\n}\n\n/**\n * NewAssetUC handles the creation of new assets in the VIVED system.\n *\n * This singleton use case manages the complete asset creation workflow,\n * from initial file upload through API persistence to local entity creation.\n */\nexport abstract class NewAssetUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"NewAssetUC\";\n\n /**\n * Creates a new asset with the provided data.\n *\n * @param data - Complete asset information including file and metadata\n * @returns Promise resolving to the unique ID of the newly created asset\n */\n abstract create(data: NewAssetDto): Promise<string>;\n\n /**\n * Retrieves the singleton NewAssetUC instance.\n *\n * @param appObjects - Repository for accessing the singleton component\n * @returns NewAssetUC instance or undefined if not found\n */\n static get(appObjects: AppObjectRepo): NewAssetUC | undefined {\n return getSingletonComponent(NewAssetUC.type, appObjects);\n }\n}\n\n/**\n * Factory function to create a new NewAssetUC instance.\n *\n * @param appObject - The AppObject that will host this singleton use case\n * @returns A new NewAssetUC implementation instance\n */\nexport function makeNewAssetUC(appObject: AppObject): NewAssetUC {\n return new NewAssetUCImp(appObject);\n}\n\n/**\n * Private implementation of NewAssetUC that handles the concrete asset creation operations.\n *\n * Key Implementation Details:\n * - Validates required dependencies (API and repository components)\n * - Transforms NewAssetDto to NewAssetApiDto for API communication\n * - Creates and configures new asset entities with file and metadata\n * - Adds created assets to the repository for management and access\n * - Handles async operations with proper error propagation\n * - Registers itself as a singleton for system-wide access\n */\nclass NewAssetUCImp extends NewAssetUC {\n /**\n * Gets the API use case for posting new assets to the backend\n * Cached for efficient repeated access during operations\n */\n private get postNewAsset() {\n return this.getCachedSingleton<PostNewAssetUC>(PostNewAssetUC.type)?.doPost;\n }\n\n /**\n * Gets the asset repository for entity creation and management\n * Cached for efficient repeated access during operations\n */\n private get assetRepo() {\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\n }\n\n /**\n * Creates a new asset with complete workflow handling.\n *\n * This method handles the complete asset creation process:\n * 1. Validates required dependencies are available\n * 2. Transforms the DTO to API format\n * 3. Posts the asset data to the backend API\n * 4. Creates a new asset entity with the returned information\n * 5. Configures the entity with file and metadata\n * 6. Adds the entity to the repository for management\n *\n * @param data - Complete asset creation data\n * @returns Promise resolving to the unique asset ID\n */\n create = (data: NewAssetDto): Promise<string> => {\n const postNewAsset = this.postNewAsset;\n const assetRepo = this.assetRepo;\n\n if (!postNewAsset || !assetRepo) {\n return Promise.reject(new Error(\"Missing dependencies\"));\n }\n\n const { description, file, name, owner } = data;\n const newAssetData: NewAssetApiDto = {\n description,\n name,\n file,\n ownerID: owner\n };\n\n return postNewAsset(newAssetData).then((resp) => {\n // Create and configure the new asset entity\n const newAsset = assetRepo.assetFactory(resp.id);\n newAsset.setFile(file);\n newAsset.description = description;\n newAsset.name = name;\n newAsset.filename = resp.filename;\n\n // Add to repository for management\n assetRepo.add(newAsset);\n return resp.id;\n });\n };\n\n /**\n * Initializes the NewAssetUC and registers it as a singleton.\n *\n * @param appObject - The AppObject that will host this singleton use case\n */\n constructor(appObject: AppObject) {\n super(appObject, NewAssetUC.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"NewAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/NewAssetUC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAGL,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxC;;;;;GAKG;AACH,MAAM,OAAgB,UAAW,SAAQ,WAAW;IAYlD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;;AAnBD,wDAAwD;AACjD,eAAI,GAAG,YAAY,CAAC;AAqB7B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,aAAc,SAAQ,UAAU;IACpC;;;OAGG;IACH,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACH,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IA8CD;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAlDpC;;;;;;;;;;;;;WAaG;QACH,WAAM,GAAG,CAAC,IAAiB,EAAmB,EAAE;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEjC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAChD,MAAM,YAAY,GAAmB;gBACnC,WAAW;gBACX,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9C,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;gBACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAElC,mCAAmC;gBACnC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QASA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["/**\r\n * NewAssetUC.ts\r\n *\r\n * This use case handles the creation of new assets, managing the complete workflow\r\n * from file upload through API persistence to local entity creation and storage.\r\n *\r\n * Key Concepts:\r\n * - Singleton use case that handles asset creation operations\r\n * - Coordinates file upload with metadata persistence via API\r\n * - Creates and configures new asset entities in the local repository\r\n * - Transforms between DTO formats for API and internal use\r\n * - Provides unique asset IDs for tracking and reference\r\n *\r\n * Usage Patterns:\r\n * - Accessed as a singleton through static get() method\r\n * - Called with complete asset data including file and metadata\r\n * - Returns asset ID for immediate reference by calling code\r\n * - Handles async operations with proper error propagation\r\n */\r\n\r\nimport {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { NewAssetApiDto, PostNewAssetUC } from \"../../VivedAPI/UCs\";\r\nimport { AssetRepo } from \"../Entities\";\r\n\r\n/**\r\n * Data transfer object for new asset creation requests.\r\n * Contains all necessary information to create a new asset in the system.\r\n */\r\nexport interface NewAssetDto {\r\n /** The file object to be uploaded and stored as the asset */\r\n file: File;\r\n /** Display name for the asset */\r\n name: string;\r\n /** Detailed description of the asset's purpose or content */\r\n description: string;\r\n /** ID of the user or entity that owns this asset */\r\n owner: string;\r\n}\r\n\r\n/**\r\n * NewAssetUC handles the creation of new assets in the VIVED system.\r\n *\r\n * This singleton use case manages the complete asset creation workflow,\r\n * from initial file upload through API persistence to local entity creation.\r\n */\r\nexport abstract class NewAssetUC extends AppObjectUC {\r\n /** Static type identifier for component registration */\r\n static type = \"NewAssetUC\";\r\n\r\n /**\r\n * Creates a new asset with the provided data.\r\n *\r\n * @param data - Complete asset information including file and metadata\r\n * @returns Promise resolving to the unique ID of the newly created asset\r\n */\r\n abstract create(data: NewAssetDto): Promise<string>;\r\n\r\n /**\r\n * Retrieves the singleton NewAssetUC instance.\r\n *\r\n * @param appObjects - Repository for accessing the singleton component\r\n * @returns NewAssetUC instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo): NewAssetUC | undefined {\r\n return getSingletonComponent(NewAssetUC.type, appObjects);\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new NewAssetUC instance.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case\r\n * @returns A new NewAssetUC implementation instance\r\n */\r\nexport function makeNewAssetUC(appObject: AppObject): NewAssetUC {\r\n return new NewAssetUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of NewAssetUC that handles the concrete asset creation operations.\r\n *\r\n * Key Implementation Details:\r\n * - Validates required dependencies (API and repository components)\r\n * - Transforms NewAssetDto to NewAssetApiDto for API communication\r\n * - Creates and configures new asset entities with file and metadata\r\n * - Adds created assets to the repository for management and access\r\n * - Handles async operations with proper error propagation\r\n * - Registers itself as a singleton for system-wide access\r\n */\r\nclass NewAssetUCImp extends NewAssetUC {\r\n /**\r\n * Gets the API use case for posting new assets to the backend\r\n * Cached for efficient repeated access during operations\r\n */\r\n private get postNewAsset() {\r\n return this.getCachedSingleton<PostNewAssetUC>(PostNewAssetUC.type)?.doPost;\r\n }\r\n\r\n /**\r\n * Gets the asset repository for entity creation and management\r\n * Cached for efficient repeated access during operations\r\n */\r\n private get assetRepo() {\r\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\r\n }\r\n\r\n /**\r\n * Creates a new asset with complete workflow handling.\r\n *\r\n * This method handles the complete asset creation process:\r\n * 1. Validates required dependencies are available\r\n * 2. Transforms the DTO to API format\r\n * 3. Posts the asset data to the backend API\r\n * 4. Creates a new asset entity with the returned information\r\n * 5. Configures the entity with file and metadata\r\n * 6. Adds the entity to the repository for management\r\n *\r\n * @param data - Complete asset creation data\r\n * @returns Promise resolving to the unique asset ID\r\n */\r\n create = (data: NewAssetDto): Promise<string> => {\r\n const postNewAsset = this.postNewAsset;\r\n const assetRepo = this.assetRepo;\r\n\r\n if (!postNewAsset || !assetRepo) {\r\n return Promise.reject(new Error(\"Missing dependencies\"));\r\n }\r\n\r\n const { description, file, name, owner } = data;\r\n const newAssetData: NewAssetApiDto = {\r\n description,\r\n name,\r\n file,\r\n ownerID: owner\r\n };\r\n\r\n return postNewAsset(newAssetData).then((resp) => {\r\n // Create and configure the new asset entity\r\n const newAsset = assetRepo.assetFactory(resp.id);\r\n newAsset.setFile(file);\r\n newAsset.description = description;\r\n newAsset.name = name;\r\n newAsset.filename = resp.filename;\r\n\r\n // Add to repository for management\r\n assetRepo.add(newAsset);\r\n return resp.id;\r\n });\r\n };\r\n\r\n /**\r\n * Initializes the NewAssetUC and registers it as a singleton.\r\n *\r\n * @param appObject - The AppObject that will host this singleton use case\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, NewAssetUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrefetchAssetsUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/PrefetchAssetsUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAgB,gBAAiB,SAAQ,WAAW;IAKxD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;;AANM,qBAAI,GAAG,kBAAkB,CAAC;AASnC,MAAM,UAAU,kBAAkB,CAAC,SAAoB;IACrD,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,oBAAqB,SAAQ,gBAAgB;IACjD,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC;YACjE,EAAE,YAAY,CAAC;IACnB,CAAC;IAsCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QArC1C,mBAAc,GAAG,KAAK,IAAmB,EAAE;YACzC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CACnD,CAAC,QAAkB,EAAE,OAAe,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,EACD,EAAE,CACH,CAAC;YAEF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAE1D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBACnD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;qBACvB,IAAI,CAAC,GAAG,EAAE;oBACT,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrB,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\n getSingletonComponent,\n AppObject,\n AppObjectRepo,\n AppObjectUC\n} from \"@vived/core\";\nimport { HostStateMachine } from \"../../StateMachine/Entities\";\nimport { GetAssetFileUC } from \"./GetAssetFileUC\";\n\nexport abstract class PrefetchAssetsUC extends AppObjectUC {\n static type = \"PrefetchAssetsUC\";\n\n abstract prefetchAssets(): Promise<void>;\n\n static get(appObjects: AppObjectRepo): PrefetchAssetsUC | undefined {\n return getSingletonComponent(PrefetchAssetsUC.type, appObjects);\n }\n}\n\nexport function makePrefetchAssets(appObject: AppObject): PrefetchAssetsUC {\n return new HostAppObjectRepoImp(appObject);\n}\n\nclass HostAppObjectRepoImp extends PrefetchAssetsUC {\n private get stateMachine() {\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\n }\n\n private get fetchAssetFile() {\n return this.getCachedSingleton<GetAssetFileUC>(GetAssetFileUC.type)\n ?.getAssetFile;\n }\n\n prefetchAssets = async (): Promise<void> => {\n const fetchAssetFile = this.fetchAssetFile;\n if (!this.stateMachine || !fetchAssetFile) {\n return Promise.reject();\n }\n\n const totalAssetIds = this.stateMachine.states.reduce(\n (assetIds: string[], stateID: string) => {\n const state = this.stateMachine?.getStateByID(stateID);\n if (state) {\n return assetIds.concat(state.assets);\n } else {\n return [];\n }\n },\n []\n );\n\n const uniqueAssetIds = Array.from(new Set(totalAssetIds));\n\n return new Promise<void>((resolve, reject) => {\n const fetchPromises = uniqueAssetIds.map((assetID) => {\n return fetchAssetFile(assetID);\n });\n\n Promise.all(fetchPromises)\n .then(() => {\n resolve();\n })\n .catch((e: Error) => {\n this.warn(e.message);\n reject(e);\n });\n });\n };\n\n constructor(appObject: AppObject) {\n super(appObject, PrefetchAssetsUC.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PrefetchAssetsUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/PrefetchAssetsUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAgB,gBAAiB,SAAQ,WAAW;IAKxD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;;AANM,qBAAI,GAAG,kBAAkB,CAAC;AASnC,MAAM,UAAU,kBAAkB,CAAC,SAAoB;IACrD,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,oBAAqB,SAAQ,gBAAgB;IACjD,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC;YACjE,EAAE,YAAY,CAAC;IACnB,CAAC;IAsCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QArC1C,mBAAc,GAAG,KAAK,IAAmB,EAAE;YACzC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CACnD,CAAC,QAAkB,EAAE,OAAe,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,EACD,EAAE,CACH,CAAC;YAEF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAE1D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBACnD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;qBACvB,IAAI,CAAC,GAAG,EAAE;oBACT,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrB,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities\";\r\nimport { GetAssetFileUC } from \"./GetAssetFileUC\";\r\n\r\nexport abstract class PrefetchAssetsUC extends AppObjectUC {\r\n static type = \"PrefetchAssetsUC\";\r\n\r\n abstract prefetchAssets(): Promise<void>;\r\n\r\n static get(appObjects: AppObjectRepo): PrefetchAssetsUC | undefined {\r\n return getSingletonComponent(PrefetchAssetsUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makePrefetchAssets(appObject: AppObject): PrefetchAssetsUC {\r\n return new HostAppObjectRepoImp(appObject);\r\n}\r\n\r\nclass HostAppObjectRepoImp extends PrefetchAssetsUC {\r\n private get stateMachine() {\r\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\r\n }\r\n\r\n private get fetchAssetFile() {\r\n return this.getCachedSingleton<GetAssetFileUC>(GetAssetFileUC.type)\r\n ?.getAssetFile;\r\n }\r\n\r\n prefetchAssets = async (): Promise<void> => {\r\n const fetchAssetFile = this.fetchAssetFile;\r\n if (!this.stateMachine || !fetchAssetFile) {\r\n return Promise.reject();\r\n }\r\n\r\n const totalAssetIds = this.stateMachine.states.reduce(\r\n (assetIds: string[], stateID: string) => {\r\n const state = this.stateMachine?.getStateByID(stateID);\r\n if (state) {\r\n return assetIds.concat(state.assets);\r\n } else {\r\n return [];\r\n }\r\n },\r\n []\r\n );\r\n\r\n const uniqueAssetIds = Array.from(new Set(totalAssetIds));\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n const fetchPromises = uniqueAssetIds.map((assetID) => {\r\n return fetchAssetFile(assetID);\r\n });\r\n\r\n Promise.all(fetchPromises)\r\n .then(() => {\r\n resolve();\r\n })\r\n .catch((e: Error) => {\r\n this.warn(e.message);\r\n reject(e);\r\n });\r\n });\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, PrefetchAssetsUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|