@vived/host 5.8.1 → 5.9.1

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.
Files changed (114) hide show
  1. package/dist/cjs/AppSandbox/Adapters/devModeAdapter.js.map +1 -1
  2. package/dist/cjs/AppSandbox/Adapters/index.js.map +1 -1
  3. package/dist/cjs/AppSandbox/Controller/index.js.map +1 -1
  4. package/dist/cjs/AppSandbox/Controller/setDevMode.js.map +1 -1
  5. package/dist/cjs/AppSandbox/Entities/AppSandboxEntity.js.map +1 -1
  6. package/dist/cjs/AppSandbox/Factories/AppSandboxFeatureFactory.js.map +1 -1
  7. package/dist/cjs/AppSandbox/Factories/setupAppSandbox.js.map +1 -1
  8. package/dist/cjs/AppSandbox/Mocks/DevModePMMock.js.map +1 -1
  9. package/dist/cjs/AppSandbox/Mocks/MockSetDevModeUC.js.map +1 -1
  10. package/dist/cjs/AppSandbox/Mocks/index.js.map +1 -1
  11. package/dist/cjs/AppSandbox/PMs/DevModePM.js.map +1 -1
  12. package/dist/cjs/AppSandbox/PMs/index.js.map +1 -1
  13. package/dist/cjs/AppSandbox/UCs/RedispatchThemeToAppUC.js.map +1 -1
  14. package/dist/cjs/AppSandbox/UCs/SetDevModeUC.js.map +1 -1
  15. package/dist/cjs/AppSandbox/UCs/index.js.map +1 -1
  16. package/dist/cjs/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js +5 -1
  17. package/dist/cjs/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js.map +1 -1
  18. package/dist/cjs/Assets/UCs/NewAppAssetUC.js.map +1 -1
  19. package/dist/cjs/Assets/UCs/NewAssetUC.js +3 -2
  20. package/dist/cjs/Assets/UCs/NewAssetUC.js.map +1 -1
  21. package/dist/cjs/BoundaryLog/Adapters/boundaryLogAdapter.js.map +1 -1
  22. package/dist/cjs/BoundaryLog/Adapters/index.js.map +1 -1
  23. package/dist/cjs/BoundaryLog/Controllers/clearBoundaryLog.js.map +1 -1
  24. package/dist/cjs/BoundaryLog/Controllers/index.js.map +1 -1
  25. package/dist/cjs/BoundaryLog/Entities/BoundaryLogEntity.js.map +1 -1
  26. package/dist/cjs/BoundaryLog/Entities/index.js.map +1 -1
  27. package/dist/cjs/BoundaryLog/Entities/snapshotPayload.js.map +1 -1
  28. package/dist/cjs/BoundaryLog/Factories/BoundaryLogFactory.js.map +1 -1
  29. package/dist/cjs/BoundaryLog/Factories/index.js.map +1 -1
  30. package/dist/cjs/BoundaryLog/Mocks/BoundaryLogPMMock.js.map +1 -1
  31. package/dist/cjs/BoundaryLog/Mocks/index.js.map +1 -1
  32. package/dist/cjs/BoundaryLog/PMs/BoundaryLogPM.js.map +1 -1
  33. package/dist/cjs/BoundaryLog/PMs/index.js.map +1 -1
  34. package/dist/cjs/BoundaryLog/index.js.map +1 -1
  35. package/dist/cjs/Dialog/Entities/DialogQueue.js.map +1 -1
  36. package/dist/cjs/Dispatcher/Entities/HostDispatchEntity.js.map +1 -1
  37. package/dist/cjs/Dispatcher/Mocks/MockDispatchSetDevModeUC.js.map +1 -1
  38. package/dist/cjs/Dispatcher/Mocks/MockHostDispatcher.js.map +1 -1
  39. package/dist/cjs/Dispatcher/Mocks/index.js.map +1 -1
  40. package/dist/cjs/Dispatcher/UCs/DispatchSetDevModeUC.js.map +1 -1
  41. package/dist/cjs/Dispatcher/UCs/DispatchThemeUC.js.map +1 -1
  42. package/dist/cjs/Dispatcher/UCs/index.js.map +1 -1
  43. package/dist/cjs/Dispatcher/setupStandardHostDispatchers.js.map +1 -1
  44. package/dist/cjs/Handler/Entities/HostHandler.js.map +1 -1
  45. package/dist/cjs/Handler/UCs/GetAssetStreamURLHandler.js.map +1 -1
  46. package/dist/cjs/Handler/UCs/index.js.map +1 -1
  47. package/dist/cjs/Handler/setupStandardHostHandlers.js.map +1 -1
  48. package/dist/cjs/ThemeColors/Entities/HostThemeEntity.js.map +1 -1
  49. package/dist/cjs/ThemeColors/PM/ThemeColorsPM.js.map +1 -1
  50. package/dist/cjs/VivedAPI/UCs/FileUploadUC.js +43 -4
  51. package/dist/cjs/VivedAPI/UCs/FileUploadUC.js.map +1 -1
  52. package/dist/cjs/VivedAPI/UCs/PatchAssetFileUC.js +6 -0
  53. package/dist/cjs/VivedAPI/UCs/PatchAssetFileUC.js.map +1 -1
  54. package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
  55. package/dist/cjs/index.js.map +1 -1
  56. package/dist/esm/AppSandbox/Adapters/devModeAdapter.js.map +1 -1
  57. package/dist/esm/AppSandbox/Adapters/index.js.map +1 -1
  58. package/dist/esm/AppSandbox/Controller/index.js.map +1 -1
  59. package/dist/esm/AppSandbox/Controller/setDevMode.js.map +1 -1
  60. package/dist/esm/AppSandbox/Entities/AppSandboxEntity.js.map +1 -1
  61. package/dist/esm/AppSandbox/Factories/AppSandboxFeatureFactory.js.map +1 -1
  62. package/dist/esm/AppSandbox/Factories/setupAppSandbox.js.map +1 -1
  63. package/dist/esm/AppSandbox/Mocks/DevModePMMock.js.map +1 -1
  64. package/dist/esm/AppSandbox/Mocks/MockSetDevModeUC.js.map +1 -1
  65. package/dist/esm/AppSandbox/Mocks/index.js.map +1 -1
  66. package/dist/esm/AppSandbox/PMs/DevModePM.js.map +1 -1
  67. package/dist/esm/AppSandbox/PMs/index.js.map +1 -1
  68. package/dist/esm/AppSandbox/UCs/RedispatchThemeToAppUC.js.map +1 -1
  69. package/dist/esm/AppSandbox/UCs/SetDevModeUC.js.map +1 -1
  70. package/dist/esm/AppSandbox/UCs/index.js.map +1 -1
  71. package/dist/esm/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js +5 -1
  72. package/dist/esm/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js.map +1 -1
  73. package/dist/esm/Assets/UCs/NewAppAssetUC.js.map +1 -1
  74. package/dist/esm/Assets/UCs/NewAssetUC.js +3 -2
  75. package/dist/esm/Assets/UCs/NewAssetUC.js.map +1 -1
  76. package/dist/esm/BoundaryLog/Adapters/boundaryLogAdapter.js.map +1 -1
  77. package/dist/esm/BoundaryLog/Adapters/index.js.map +1 -1
  78. package/dist/esm/BoundaryLog/Controllers/clearBoundaryLog.js.map +1 -1
  79. package/dist/esm/BoundaryLog/Controllers/index.js.map +1 -1
  80. package/dist/esm/BoundaryLog/Entities/BoundaryLogEntity.js.map +1 -1
  81. package/dist/esm/BoundaryLog/Entities/index.js.map +1 -1
  82. package/dist/esm/BoundaryLog/Entities/snapshotPayload.js.map +1 -1
  83. package/dist/esm/BoundaryLog/Factories/BoundaryLogFactory.js.map +1 -1
  84. package/dist/esm/BoundaryLog/Factories/index.js.map +1 -1
  85. package/dist/esm/BoundaryLog/Mocks/BoundaryLogPMMock.js.map +1 -1
  86. package/dist/esm/BoundaryLog/Mocks/index.js.map +1 -1
  87. package/dist/esm/BoundaryLog/PMs/BoundaryLogPM.js.map +1 -1
  88. package/dist/esm/BoundaryLog/PMs/index.js.map +1 -1
  89. package/dist/esm/BoundaryLog/index.js.map +1 -1
  90. package/dist/esm/Dialog/Entities/DialogQueue.js.map +1 -1
  91. package/dist/esm/Dispatcher/Entities/HostDispatchEntity.js.map +1 -1
  92. package/dist/esm/Dispatcher/Mocks/MockDispatchSetDevModeUC.js.map +1 -1
  93. package/dist/esm/Dispatcher/Mocks/MockHostDispatcher.js.map +1 -1
  94. package/dist/esm/Dispatcher/Mocks/index.js.map +1 -1
  95. package/dist/esm/Dispatcher/UCs/DispatchSetDevModeUC.js.map +1 -1
  96. package/dist/esm/Dispatcher/UCs/DispatchThemeUC.js.map +1 -1
  97. package/dist/esm/Dispatcher/UCs/index.js.map +1 -1
  98. package/dist/esm/Dispatcher/setupStandardHostDispatchers.js.map +1 -1
  99. package/dist/esm/Handler/Entities/HostHandler.js.map +1 -1
  100. package/dist/esm/Handler/UCs/GetAssetStreamURLHandler.js.map +1 -1
  101. package/dist/esm/Handler/UCs/index.js.map +1 -1
  102. package/dist/esm/Handler/setupStandardHostHandlers.js.map +1 -1
  103. package/dist/esm/ThemeColors/Entities/HostThemeEntity.js.map +1 -1
  104. package/dist/esm/ThemeColors/PM/ThemeColorsPM.js.map +1 -1
  105. package/dist/esm/VivedAPI/UCs/FileUploadUC.js +43 -4
  106. package/dist/esm/VivedAPI/UCs/FileUploadUC.js.map +1 -1
  107. package/dist/esm/VivedAPI/UCs/PatchAssetFileUC.js +6 -0
  108. package/dist/esm/VivedAPI/UCs/PatchAssetFileUC.js.map +1 -1
  109. package/dist/esm/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
  110. package/dist/esm/index.js.map +1 -1
  111. package/dist/types/AppSandbox/UCs/submitActivityAssetHandlerSandbox.d.ts.map +1 -1
  112. package/dist/types/Assets/UCs/NewAssetUC.d.ts +6 -0
  113. package/dist/types/Assets/UCs/NewAssetUC.d.ts.map +1 -1
  114. package/package.json +67 -67
@@ -1 +1 @@
1
- {"version":3,"file":"PostNewAssetUC.js","sourceRoot":"","sources":["../../../../src/VivedAPI/UCs/PostNewAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * PostNewAssetUC.ts\r\n *\r\n * This file defines the Use Case for creating new assets via the VIVED API.\r\n * PostNewAssetUC handles the complete workflow of uploading asset files and\r\n * creating asset metadata records through API requests.\r\n *\r\n * Key concepts:\r\n * - Orchestrates file upload and metadata creation for new assets\r\n * - Handles multipart file uploads with asset information\r\n * - Manages authentication tokens and API endpoints\r\n * - Coordinates between multiple UCs (JsonRequest, FileUpload, SignedAuthToken)\r\n * - Returns asset creation response with generated IDs\r\n *\r\n * Usage pattern:\r\n * 1. Get a UC instance using PostNewAssetUC.get(appObjects) or makePostNewAssetUC\r\n * 2. Call doPost with asset data including file and metadata\r\n * 3. Handle the returned Promise with asset creation response\r\n * 4. UC will coordinate authentication, file upload, and API requests\r\n */\r\n\r\nimport {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n generateUniqueID,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { VivedAPIEntity } from \"../Entities/VivedAPIEntity\";\r\nimport { FileUploadUC } from \"./FileUploadUC\";\r\nimport { JsonRequestUC, RequestJSONOptions } from \"./JsonRequestUC\";\r\nimport { SignedAuthTokenUC } from \"./SignedAuthTokenUC\";\r\n\r\n/**\r\n * Data transfer object for new asset creation requests\r\n */\r\nexport interface NewAssetApiDto {\r\n /** Display name for the new asset */\r\n name: string;\r\n /** Description text for the asset */\r\n description: string;\r\n /** ID of the user who will own this asset */\r\n ownerID: string;\r\n /**\r\n * Owner type for the asset. The backend authorizes app-owned assets via the\r\n * `app` branch only when this is `\"app\"`; an absent value is treated as the\r\n * `channel` default (the backend does not — and must not — infer it). See\r\n * vivedlearning/vived-api-legacy#133.\r\n */\r\n ownerType?: \"channel\" | \"activity\" | \"app\";\r\n /** File object containing the asset data */\r\n file: File;\r\n}\r\n\r\n/**\r\n * Response data transfer object for successful asset creation\r\n */\r\nexport interface NewAssetResponseDTO {\r\n /** Unique identifier assigned to the new asset */\r\n id: string;\r\n /** Final filename used for the stored asset file */\r\n filename: string;\r\n}\r\n\r\n/**\r\n * PostNewAssetUC provides functionality for creating new assets via API.\r\n * Abstract class that defines the interface for asset creation operations.\r\n */\r\nexport abstract class PostNewAssetUC extends AppObjectUC {\r\n /** Unique type identifier for this component */\r\n static type = \"PostNewAssetUC\";\r\n\r\n /**\r\n * Creates a new asset by uploading file and metadata to the API\r\n * @param data The asset creation data including file and metadata\r\n * @returns Promise resolving to the new asset response with ID and filename\r\n */\r\n abstract doPost(data: NewAssetApiDto): Promise<NewAssetResponseDTO>;\r\n\r\n /**\r\n * Retrieves a PostNewAssetUC component from an AppObject\r\n * @param appObjects The AppObjectRepo to get the component from\r\n * @returns The PostNewAssetUC component or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo): PostNewAssetUC | undefined {\r\n return getSingletonComponent(PostNewAssetUC.type, appObjects);\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new PostNewAssetUC instance\r\n * @param appObject The AppObject to attach the UC to\r\n * @returns A new PostNewAssetUC instance\r\n */\r\nexport function makePostNewAssetUC(appObject: AppObject): PostNewAssetUC {\r\n return new PostNewAssetUCImp(appObject);\r\n}\r\n\r\n/**\r\n * Concrete implementation of PostNewAssetUC\r\n * This private class handles the actual asset creation workflow\r\n */\r\nclass PostNewAssetUCImp extends PostNewAssetUC {\r\n private get jsonRequester() {\r\n return this.getCachedSingleton<JsonRequestUC>(JsonRequestUC.type)\r\n ?.doRequest;\r\n }\r\n\r\n private get getPlayerAuthToken() {\r\n return this.getCachedSingleton<SignedAuthTokenUC>(SignedAuthTokenUC.type)\r\n ?.getAuthToken;\r\n }\r\n\r\n private get fileUploader() {\r\n return this.getCachedSingleton<FileUploadUC>(FileUploadUC.type)?.doUpload;\r\n }\r\n\r\n private get vivedAPI() {\r\n return this.getCachedSingleton<VivedAPIEntity>(VivedAPIEntity.type);\r\n }\r\n\r\n doPost = (data: NewAssetApiDto): Promise<NewAssetResponseDTO> => {\r\n const fileUploader = this.fileUploader;\r\n const getPlayerAuthToken = this.getPlayerAuthToken;\r\n const vivedAPI = this.vivedAPI;\r\n const jsonRequester = this.jsonRequester;\r\n\r\n if (!fileUploader || !getPlayerAuthToken || !vivedAPI || !jsonRequester) {\r\n return Promise.reject();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const { description, file, name, ownerID, ownerType } = data;\r\n let assetId: string;\r\n\r\n const nameSplits = file.name.split(\".\");\r\n const extension = nameSplits[nameSplits.length - 1];\r\n const filename = `${generateUniqueID()}.${extension}`;\r\n const assetFile = new File([file], filename, {\r\n type: file.type,\r\n lastModified: Date.now()\r\n });\r\n\r\n fileUploader(assetFile)\r\n .then((_) => {\r\n return getPlayerAuthToken();\r\n })\r\n .then((token) => {\r\n const postURL = vivedAPI.getEndpointURL(\"assets\");\r\n\r\n // Forward ownerType only when the caller declared it. Omitting the\r\n // key (conditional spread → nothing when unset) preserves the\r\n // backend's channel default for non-app creates; the server never\r\n // infers owner type. See vived-api-legacy#133.\r\n const body = {\r\n ownerId: ownerID,\r\n name,\r\n description,\r\n filename,\r\n ...(ownerType !== undefined && { ownerType })\r\n };\r\n\r\n const options: RequestJSONOptions = {\r\n method: \"POST\",\r\n body: JSON.stringify(body),\r\n headers: {\r\n Authorization: \"Bearer \" + token\r\n }\r\n };\r\n\r\n return jsonRequester(postURL, options);\r\n })\r\n .then((result) => {\r\n assetId = result.assetId;\r\n resolve({\r\n id: assetId,\r\n filename\r\n });\r\n })\r\n .catch((e) => {\r\n reject(e);\r\n return;\r\n });\r\n });\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, PostNewAssetUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PostNewAssetUC.js","sourceRoot":"","sources":["../../../../src/VivedAPI/UCs/PostNewAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * PostNewAssetUC.ts\n *\n * This file defines the Use Case for creating new assets via the VIVED API.\n * PostNewAssetUC handles the complete workflow of uploading asset files and\n * creating asset metadata records through API requests.\n *\n * Key concepts:\n * - Orchestrates file upload and metadata creation for new assets\n * - Handles multipart file uploads with asset information\n * - Manages authentication tokens and API endpoints\n * - Coordinates between multiple UCs (JsonRequest, FileUpload, SignedAuthToken)\n * - Returns asset creation response with generated IDs\n *\n * Usage pattern:\n * 1. Get a UC instance using PostNewAssetUC.get(appObjects) or makePostNewAssetUC\n * 2. Call doPost with asset data including file and metadata\n * 3. Handle the returned Promise with asset creation response\n * 4. UC will coordinate authentication, file upload, and API requests\n */\n\nimport {\n AppObject,\n AppObjectRepo,\n AppObjectUC,\n generateUniqueID,\n getSingletonComponent\n} from \"@vived/core\";\nimport { VivedAPIEntity } from \"../Entities/VivedAPIEntity\";\nimport { FileUploadUC } from \"./FileUploadUC\";\nimport { JsonRequestUC, RequestJSONOptions } from \"./JsonRequestUC\";\nimport { SignedAuthTokenUC } from \"./SignedAuthTokenUC\";\n\n/**\n * Data transfer object for new asset creation requests\n */\nexport interface NewAssetApiDto {\n /** Display name for the new asset */\n name: string;\n /** Description text for the asset */\n description: string;\n /** ID of the user who will own this asset */\n ownerID: string;\n /**\n * Owner type for the asset. The backend authorizes app-owned assets via the\n * `app` branch only when this is `\"app\"`; an absent value is treated as the\n * `channel` default (the backend does not — and must not — infer it). See\n * vivedlearning/vived-api-legacy#133.\n */\n ownerType?: \"channel\" | \"activity\" | \"app\";\n /** File object containing the asset data */\n file: File;\n}\n\n/**\n * Response data transfer object for successful asset creation\n */\nexport interface NewAssetResponseDTO {\n /** Unique identifier assigned to the new asset */\n id: string;\n /** Final filename used for the stored asset file */\n filename: string;\n}\n\n/**\n * PostNewAssetUC provides functionality for creating new assets via API.\n * Abstract class that defines the interface for asset creation operations.\n */\nexport abstract class PostNewAssetUC extends AppObjectUC {\n /** Unique type identifier for this component */\n static type = \"PostNewAssetUC\";\n\n /**\n * Creates a new asset by uploading file and metadata to the API\n * @param data The asset creation data including file and metadata\n * @returns Promise resolving to the new asset response with ID and filename\n */\n abstract doPost(data: NewAssetApiDto): Promise<NewAssetResponseDTO>;\n\n /**\n * Retrieves a PostNewAssetUC component from an AppObject\n * @param appObjects The AppObjectRepo to get the component from\n * @returns The PostNewAssetUC component or undefined if not found\n */\n static get(appObjects: AppObjectRepo): PostNewAssetUC | undefined {\n return getSingletonComponent(PostNewAssetUC.type, appObjects);\n }\n}\n\n/**\n * Factory function to create a new PostNewAssetUC instance\n * @param appObject The AppObject to attach the UC to\n * @returns A new PostNewAssetUC instance\n */\nexport function makePostNewAssetUC(appObject: AppObject): PostNewAssetUC {\n return new PostNewAssetUCImp(appObject);\n}\n\n/**\n * Concrete implementation of PostNewAssetUC\n * This private class handles the actual asset creation workflow\n */\nclass PostNewAssetUCImp extends PostNewAssetUC {\n private get jsonRequester() {\n return this.getCachedSingleton<JsonRequestUC>(JsonRequestUC.type)\n ?.doRequest;\n }\n\n private get getPlayerAuthToken() {\n return this.getCachedSingleton<SignedAuthTokenUC>(SignedAuthTokenUC.type)\n ?.getAuthToken;\n }\n\n private get fileUploader() {\n return this.getCachedSingleton<FileUploadUC>(FileUploadUC.type)?.doUpload;\n }\n\n private get vivedAPI() {\n return this.getCachedSingleton<VivedAPIEntity>(VivedAPIEntity.type);\n }\n\n doPost = (data: NewAssetApiDto): Promise<NewAssetResponseDTO> => {\n const fileUploader = this.fileUploader;\n const getPlayerAuthToken = this.getPlayerAuthToken;\n const vivedAPI = this.vivedAPI;\n const jsonRequester = this.jsonRequester;\n\n if (!fileUploader || !getPlayerAuthToken || !vivedAPI || !jsonRequester) {\n return Promise.reject();\n }\n\n return new Promise((resolve, reject) => {\n const { description, file, name, ownerID, ownerType } = data;\n let assetId: string;\n\n const nameSplits = file.name.split(\".\");\n const extension = nameSplits[nameSplits.length - 1];\n const filename = `${generateUniqueID()}.${extension}`;\n const assetFile = new File([file], filename, {\n type: file.type,\n lastModified: Date.now()\n });\n\n fileUploader(assetFile)\n .then((_) => {\n return getPlayerAuthToken();\n })\n .then((token) => {\n const postURL = vivedAPI.getEndpointURL(\"assets\");\n\n // Forward ownerType only when the caller declared it. Omitting the\n // key (conditional spread → nothing when unset) preserves the\n // backend's channel default for non-app creates; the server never\n // infers owner type. See vived-api-legacy#133.\n const body = {\n ownerId: ownerID,\n name,\n description,\n filename,\n ...(ownerType !== undefined && { ownerType })\n };\n\n const options: RequestJSONOptions = {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: {\n Authorization: \"Bearer \" + token\n }\n };\n\n return jsonRequester(postURL, options);\n })\n .then((result) => {\n assetId = result.assetId;\n resolve({\n id: assetId,\n filename\n });\n })\n .catch((e) => {\n reject(e);\n return;\n });\n });\n };\n\n constructor(appObject: AppObject) {\n super(appObject, PostNewAssetUC.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,+CAA6B;AAC7B,gDAA8B;AAC9B,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,qDAAmC;AACnC,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B;AAC3B,+CAA6B","sourcesContent":["export * from \"./Apps\";\r\nexport * from \"./AppSandbox\";\r\nexport * from \"./AssetPlugin\";\r\nexport * from \"./Assets\";\r\nexport * from \"./BoundaryLog\";\r\nexport * from \"./Cache\";\r\nexport * from \"./ChallengeResults\";\r\nexport * from \"./Dialog\";\r\nexport * from \"./Dispatcher\";\r\nexport * from \"./Events\";\r\nexport * from \"./Handler\";\r\nexport * from \"./Logger\";\r\nexport * from \"./Snackbar\";\r\nexport * from \"./StateMachine\";\r\nexport * from \"./ThemeColors\";\r\nexport * from \"./VivedAPI\";\r\nexport * from \"./ZSpaceHost\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,+CAA6B;AAC7B,gDAA8B;AAC9B,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,qDAAmC;AACnC,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B;AAC3B,+CAA6B","sourcesContent":["export * from \"./Apps\";\nexport * from \"./AppSandbox\";\nexport * from \"./AssetPlugin\";\nexport * from \"./Assets\";\nexport * from \"./BoundaryLog\";\nexport * from \"./Cache\";\nexport * from \"./ChallengeResults\";\nexport * from \"./Dialog\";\nexport * from \"./Dispatcher\";\nexport * from \"./Events\";\nexport * from \"./Handler\";\nexport * from \"./Logger\";\nexport * from \"./Snackbar\";\nexport * from \"./StateMachine\";\nexport * from \"./ThemeColors\";\nexport * from \"./VivedAPI\";\nexport * from \"./ZSpaceHost\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"devModeAdapter.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Adapters/devModeAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACrE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACvE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, SingletonPmAdapter } from \"@vived/core\";\r\nimport { DevModePM } from \"../PMs/DevModePM\";\r\n\r\nexport const devModeAdapter: SingletonPmAdapter<boolean> = {\r\n defaultVM: true,\r\n subscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\r\n const pm = DevModePM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\"devModeAdapter\", \"Unable to find DevModePM\");\r\n return;\r\n }\r\n pm.addView(setVM);\r\n },\r\n unsubscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\r\n const pm = DevModePM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\"devModeAdapter\", \"Unable to find DevModePM\");\r\n return;\r\n }\r\n pm.removeView(setVM);\r\n }\r\n};\r\n"]}
1
+ {"version":3,"file":"devModeAdapter.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Adapters/devModeAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACrE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACvE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, SingletonPmAdapter } from \"@vived/core\";\nimport { DevModePM } from \"../PMs/DevModePM\";\n\nexport const devModeAdapter: SingletonPmAdapter<boolean> = {\n defaultVM: true,\n subscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\n const pm = DevModePM.get(appObjects);\n if (!pm) {\n appObjects.submitError(\"devModeAdapter\", \"Unable to find DevModePM\");\n return;\n }\n pm.addView(setVM);\n },\n unsubscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\n const pm = DevModePM.get(appObjects);\n if (!pm) {\n appObjects.submitError(\"devModeAdapter\", \"Unable to find DevModePM\");\n return;\n }\n pm.removeView(setVM);\n }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./babylonInspectorSupportedAdapter\";\r\nexport * from \"./devFeaturesEnabledAdapter\";\r\nexport * from \"./devModeAdapter\";\r\nexport * from \"./sandboxStateAdapter\";\r\nexport * from \"./showInspectorAdapter\";\r\nexport * from \"./startInZSpaceAdapter\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./babylonInspectorSupportedAdapter\";\nexport * from \"./devFeaturesEnabledAdapter\";\nexport * from \"./devModeAdapter\";\nexport * from \"./sandboxStateAdapter\";\nexport * from \"./showInspectorAdapter\";\nexport * from \"./startInZSpaceAdapter\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Controller/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from \"./clearSandboxAppContainer\";\r\nexport * from \"./mountSandboxApp\";\r\nexport * from \"./setBabylonInspectorSupported\";\r\nexport * from \"./setDevMode\";\r\nexport * from \"./setSandboxAppContainer\";\r\nexport * from \"./setSandboxAppState\";\r\nexport * from \"./startSandboxApp\";\r\nexport * from \"./stopSandboxApp\";\r\nexport * from \"./toggleAllowDevFeatures\";\r\nexport * from \"./toggleShowInspector\";\r\nexport * from \"./toggleStartInZSpace\";\r\nexport * from \"./unmountSandboxApp\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Controller/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from \"./clearSandboxAppContainer\";\nexport * from \"./mountSandboxApp\";\nexport * from \"./setBabylonInspectorSupported\";\nexport * from \"./setDevMode\";\nexport * from \"./setSandboxAppContainer\";\nexport * from \"./setSandboxAppState\";\nexport * from \"./startSandboxApp\";\nexport * from \"./stopSandboxApp\";\nexport * from \"./toggleAllowDevFeatures\";\nexport * from \"./toggleShowInspector\";\nexport * from \"./toggleStartInZSpace\";\nexport * from \"./unmountSandboxApp\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"setDevMode.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Controller/setDevMode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,UAAU,UAAU,CAAC,SAAkB,EAAE,UAAyB;IACtE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,6BAA6B,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\r\nimport { SetDevModeUC } from \"../UCs/SetDevModeUC\";\r\n\r\nexport function setDevMode(isDevMode: boolean, appObjects: AppObjectRepo) {\r\n const sandbox = AppSandboxEntity.get(appObjects);\r\n if (!sandbox) {\r\n appObjects.submitWarning(\"setDevMode\", \"Could not find AppSandboxEntity\");\r\n return;\r\n }\r\n\r\n const uc = SetDevModeUC.getByID(sandbox.appID, appObjects);\r\n if (!uc) {\r\n appObjects.submitWarning(\"setDevMode\", \"Could not find SetDevModeUC\");\r\n return;\r\n }\r\n\r\n uc.setDevMode(isDevMode);\r\n}\r\n"]}
1
+ {"version":3,"file":"setDevMode.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Controller/setDevMode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,UAAU,UAAU,CAAC,SAAkB,EAAE,UAAyB;IACtE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,6BAA6B,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\nimport { SetDevModeUC } from \"../UCs/SetDevModeUC\";\n\nexport function setDevMode(isDevMode: boolean, appObjects: AppObjectRepo) {\n const sandbox = AppSandboxEntity.get(appObjects);\n if (!sandbox) {\n appObjects.submitWarning(\"setDevMode\", \"Could not find AppSandboxEntity\");\n return;\n }\n\n const uc = SetDevModeUC.getByID(sandbox.appID, appObjects);\n if (!uc) {\n appObjects.submitWarning(\"setDevMode\", \"Could not find SetDevModeUC\");\n return;\n }\n\n uc.setDevMode(isDevMode);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppSandboxEntity.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Entities/AppSandboxEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n getSingletonComponent,\r\n MemoizedBoolean\r\n} from \"@vived/core\";\r\nimport { AppEntity, makeAppEntity } from \"../../Apps/Entities/AppEntity\";\r\n\r\nexport enum SandboxState {\r\n UNMOUNTED = \"UNMOUNTED\",\r\n LOADING = \"LOADING\",\r\n MOUNTED = \"MOUNTED\",\r\n PLAYING = \"PLAYING\",\r\n FATAL_ERROR = \"FATAL_ERROR\",\r\n EDIT_ASSET = \"EDIT_ASSET\",\r\n NEW_APP_ASSET = \"NEW_APP_ASSET\"\r\n}\r\n\r\nexport abstract class AppSandboxEntity extends AppObjectEntity {\r\n static type = \"AppSandboxEntity\";\r\n\r\n abstract get appID(): string;\r\n\r\n abstract get appContainer(): HTMLDivElement | undefined;\r\n abstract set appContainer(container: HTMLDivElement | undefined);\r\n\r\n abstract get channelID(): string;\r\n abstract set channelID(id: string);\r\n\r\n abstract get channelName(): string;\r\n abstract set channelName(id: string);\r\n\r\n abstract get state(): SandboxState;\r\n abstract set state(val: SandboxState);\r\n\r\n abstract get startInZSpace(): boolean;\r\n abstract set startInZSpace(val: boolean);\r\n\r\n abstract get showBabylonInspector(): boolean;\r\n abstract set showBabylonInspector(render: boolean);\r\n\r\n abstract get babylonInspectorSupported(): boolean;\r\n abstract set babylonInspectorSupported(val: boolean);\r\n\r\n abstract get isDevMode(): boolean;\r\n abstract set isDevMode(val: boolean);\r\n\r\n abstract get enableDevFeatures(): boolean;\r\n abstract set enableDevFeatures(enable: boolean);\r\n\r\n abstract mockActivityID: string;\r\n\r\n abstract devFeatures: string[];\r\n\r\n abstract readonly app: AppEntity;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<AppSandboxEntity>(\r\n AppSandboxEntity.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeAppSandboxEntity(appObject: AppObject): AppSandboxEntity {\r\n return new AppSandboxEntityImp(appObject);\r\n}\r\n\r\nclass AppSandboxEntityImp extends AppSandboxEntity {\r\n readonly app: AppEntity;\r\n\r\n get appID() {\r\n return this.appObject.id;\r\n }\r\n\r\n mockActivityID = \"93701ef1-ee94-4765-b27f-e1ddbee7c989\";\r\n channelID = \"93701ef1-ee94-4765-b27f-e1ddbee7c989\";\r\n channelName = \"Development Channel\";\r\n\r\n private memoizedStartInZSpace = new MemoizedBoolean(\r\n false,\r\n this.notifyOnChange\r\n );\r\n get startInZSpace() {\r\n return this.memoizedStartInZSpace.val;\r\n }\r\n set startInZSpace(val: boolean) {\r\n this.memoizedStartInZSpace.val = val;\r\n }\r\n\r\n private _playerContainer?: HTMLDivElement | undefined;\r\n get appContainer() {\r\n return this._playerContainer;\r\n }\r\n set appContainer(container: HTMLDivElement | undefined) {\r\n if (container === this._playerContainer) return;\r\n this._playerContainer = container;\r\n this.notifyOnChange();\r\n }\r\n\r\n private memoizedShowInspector = new MemoizedBoolean(\r\n false,\r\n this.notifyOnChange\r\n );\r\n get showBabylonInspector() {\r\n return this.memoizedShowInspector.val;\r\n }\r\n set showBabylonInspector(val: boolean) {\r\n this.memoizedShowInspector.val = val;\r\n }\r\n\r\n private memoizedBabylonInspectorSupported = new MemoizedBoolean(\r\n true,\r\n this.notifyOnChange\r\n );\r\n get babylonInspectorSupported() {\r\n return this.memoizedBabylonInspectorSupported.val;\r\n }\r\n set babylonInspectorSupported(val: boolean) {\r\n this.memoizedBabylonInspectorSupported.val = val;\r\n }\r\n\r\n private memoisedEnableDevFeatures = new MemoizedBoolean(\r\n true,\r\n this.notifyOnChange\r\n );\r\n get enableDevFeatures(): boolean {\r\n return this.memoisedEnableDevFeatures.val;\r\n }\r\n set enableDevFeatures(val: boolean) {\r\n this.memoisedEnableDevFeatures.val = val;\r\n }\r\n\r\n private memoizedIsDevMode = new MemoizedBoolean(true, this.notifyOnChange);\r\n get isDevMode(): boolean {\r\n return this.memoizedIsDevMode.val;\r\n }\r\n set isDevMode(val: boolean) {\r\n this.memoizedIsDevMode.val = val;\r\n }\r\n\r\n devFeatures: string[] = [];\r\n\r\n private _state = SandboxState.UNMOUNTED;\r\n get state(): SandboxState {\r\n return this._state;\r\n }\r\n set state(val: SandboxState) {\r\n if (this._state === val) return;\r\n\r\n this._state = val;\r\n this.notifyOnChange();\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, AppSandboxEntity.type);\r\n this.app = makeAppEntity(appObject);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AppSandboxEntity.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Entities/AppSandboxEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n getSingletonComponent,\n MemoizedBoolean\n} from \"@vived/core\";\nimport { AppEntity, makeAppEntity } from \"../../Apps/Entities/AppEntity\";\n\nexport enum SandboxState {\n UNMOUNTED = \"UNMOUNTED\",\n LOADING = \"LOADING\",\n MOUNTED = \"MOUNTED\",\n PLAYING = \"PLAYING\",\n FATAL_ERROR = \"FATAL_ERROR\",\n EDIT_ASSET = \"EDIT_ASSET\",\n NEW_APP_ASSET = \"NEW_APP_ASSET\"\n}\n\nexport abstract class AppSandboxEntity extends AppObjectEntity {\n static type = \"AppSandboxEntity\";\n\n abstract get appID(): string;\n\n abstract get appContainer(): HTMLDivElement | undefined;\n abstract set appContainer(container: HTMLDivElement | undefined);\n\n abstract get channelID(): string;\n abstract set channelID(id: string);\n\n abstract get channelName(): string;\n abstract set channelName(id: string);\n\n abstract get state(): SandboxState;\n abstract set state(val: SandboxState);\n\n abstract get startInZSpace(): boolean;\n abstract set startInZSpace(val: boolean);\n\n abstract get showBabylonInspector(): boolean;\n abstract set showBabylonInspector(render: boolean);\n\n abstract get babylonInspectorSupported(): boolean;\n abstract set babylonInspectorSupported(val: boolean);\n\n abstract get isDevMode(): boolean;\n abstract set isDevMode(val: boolean);\n\n abstract get enableDevFeatures(): boolean;\n abstract set enableDevFeatures(enable: boolean);\n\n abstract mockActivityID: string;\n\n abstract devFeatures: string[];\n\n abstract readonly app: AppEntity;\n\n static get(appObjects: AppObjectRepo) {\n return getSingletonComponent<AppSandboxEntity>(\n AppSandboxEntity.type,\n appObjects\n );\n }\n}\n\nexport function makeAppSandboxEntity(appObject: AppObject): AppSandboxEntity {\n return new AppSandboxEntityImp(appObject);\n}\n\nclass AppSandboxEntityImp extends AppSandboxEntity {\n readonly app: AppEntity;\n\n get appID() {\n return this.appObject.id;\n }\n\n mockActivityID = \"93701ef1-ee94-4765-b27f-e1ddbee7c989\";\n channelID = \"93701ef1-ee94-4765-b27f-e1ddbee7c989\";\n channelName = \"Development Channel\";\n\n private memoizedStartInZSpace = new MemoizedBoolean(\n false,\n this.notifyOnChange\n );\n get startInZSpace() {\n return this.memoizedStartInZSpace.val;\n }\n set startInZSpace(val: boolean) {\n this.memoizedStartInZSpace.val = val;\n }\n\n private _playerContainer?: HTMLDivElement | undefined;\n get appContainer() {\n return this._playerContainer;\n }\n set appContainer(container: HTMLDivElement | undefined) {\n if (container === this._playerContainer) return;\n this._playerContainer = container;\n this.notifyOnChange();\n }\n\n private memoizedShowInspector = new MemoizedBoolean(\n false,\n this.notifyOnChange\n );\n get showBabylonInspector() {\n return this.memoizedShowInspector.val;\n }\n set showBabylonInspector(val: boolean) {\n this.memoizedShowInspector.val = val;\n }\n\n private memoizedBabylonInspectorSupported = new MemoizedBoolean(\n true,\n this.notifyOnChange\n );\n get babylonInspectorSupported() {\n return this.memoizedBabylonInspectorSupported.val;\n }\n set babylonInspectorSupported(val: boolean) {\n this.memoizedBabylonInspectorSupported.val = val;\n }\n\n private memoisedEnableDevFeatures = new MemoizedBoolean(\n true,\n this.notifyOnChange\n );\n get enableDevFeatures(): boolean {\n return this.memoisedEnableDevFeatures.val;\n }\n set enableDevFeatures(val: boolean) {\n this.memoisedEnableDevFeatures.val = val;\n }\n\n private memoizedIsDevMode = new MemoizedBoolean(true, this.notifyOnChange);\n get isDevMode(): boolean {\n return this.memoizedIsDevMode.val;\n }\n set isDevMode(val: boolean) {\n this.memoizedIsDevMode.val = val;\n }\n\n devFeatures: string[] = [];\n\n private _state = SandboxState.UNMOUNTED;\n get state(): SandboxState {\n return this._state;\n }\n set state(val: SandboxState) {\n if (this._state === val) return;\n\n this._state = val;\n this.notifyOnChange();\n }\n\n constructor(appObject: AppObject) {\n super(appObject, AppSandboxEntity.type);\n this.app = makeAppEntity(appObject);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppSandboxFeatureFactory.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Factories/AppSandboxFeatureFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectRepo, DomainFactory } from \"@vived/core\";\r\nimport {\r\n makeSandboxMounter,\r\n makeStartAppUC,\r\n makeStopAppUC\r\n} from \"../../Apps/UCs\";\r\nimport { makeHostDispatchEntity } from \"../../Dispatcher/Entities\";\r\nimport { setupStandardHostDispatchers } from \"../../Dispatcher/setupStandardHostDispatchers\";\r\nimport { makeHostHandlerEntity } from \"../../Handler/Entities\";\r\nimport { setupStandardHostHandlers } from \"../../Handler/setupStandardHostHandlers\";\r\nimport { SubmitActivityAssetHandler } from \"../../Handler\";\r\nimport { AppSandboxEntity, makeAppSandboxEntity } from \"../Entities\";\r\nimport {\r\n makeBabylonInspectorSupportedPM,\r\n makeDevFeaturesEnabledPM,\r\n makeDevModePM,\r\n makeSandboxStatePM,\r\n makeShowInspectorPM,\r\n makeStartInZSpacePM\r\n} from \"../PMs\";\r\nimport {\r\n makeRedispatchThemeToAppUC,\r\n makeSetDevModeUC,\r\n makeShowBabylonInspectorUC\r\n} from \"../UCs\";\r\nimport { makeSubmitActivityAssetHandlerSandbox } from \"../UCs/submitActivityAssetHandlerSandbox\";\r\nimport { AppRepoEntity } from \"../../Apps/Entities\";\r\n\r\n/**\r\n * Factory responsible for setting up the AppSandbox domain components.\r\n * This factory initializes all entities, use cases, and presentation models\r\n * required for the AppSandbox functionality.\r\n */\r\nexport class AppSandboxFeatureFactory extends DomainFactory {\r\n // Unique name for this factory\r\n readonly factoryName = \"AppSandboxFeatureFactory\";\r\n\r\n private sandbox?: AppSandboxEntity;\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject);\r\n }\r\n\r\n /**\r\n * Sets up all entities required for the AppSandbox system\r\n */\r\n setupEntities(): void {\r\n // Initialize entities\r\n this.sandbox = makeAppSandboxEntity(this.appObject);\r\n makeHostDispatchEntity(this.appObject);\r\n makeHostHandlerEntity(this.appObject);\r\n }\r\n\r\n /**\r\n * Sets up all use cases for the AppSandbox system\r\n */\r\n setupUCs(): void {\r\n // Setup standard dispatchers and handlers\r\n setupStandardHostDispatchers(this.appObject);\r\n setupStandardHostHandlers(this.appObject);\r\n\r\n // Initialize use cases\r\n makeStartAppUC(this.appObject);\r\n makeStopAppUC(this.appObject);\r\n makeSetDevModeUC(this.appObject);\r\n makeShowBabylonInspectorUC(this.appObject);\r\n makeSandboxMounter(this.appObject);\r\n\r\n // Re-dispatch SET_THEME_COLORS to the running App on theme change (ADR-0004).\r\n // HostThemeEntity exists by now — all setupEntities run before any setupUCs.\r\n makeRedispatchThemeToAppUC(this.appObject);\r\n }\r\n\r\n /**\r\n * Sets up all presentation managers for the AppSandbox system\r\n */\r\n setupPMs(): void {\r\n // Initialize presentation managers\r\n makeBabylonInspectorSupportedPM(this.appObject);\r\n makeDevFeaturesEnabledPM(this.appObject);\r\n makeDevModePM(this.appObject);\r\n makeSandboxStatePM(this.appObject);\r\n makeShowInspectorPM(this.appObject);\r\n makeStartInZSpacePM(this.appObject);\r\n }\r\n\r\n /**\r\n * Performs any final setup operations after all components are initialized\r\n */\r\n finalSetup(): void {\r\n // Setup custom handler for activity asset submission\r\n const submitActivityAssetUC =\r\n this.appObjects.getSingleton<SubmitActivityAssetHandler>(\r\n SubmitActivityAssetHandler.type\r\n );\r\n if (submitActivityAssetUC) {\r\n submitActivityAssetUC.action = makeSubmitActivityAssetHandlerSandbox(\r\n this.appObjects\r\n );\r\n }\r\n\r\n if (!this.sandbox) {\r\n this.error(\"AppSandboxEntity not found during final setup.\");\r\n return;\r\n }\r\n\r\n const apps = AppRepoEntity.get(this.appObjects);\r\n\r\n if (!apps) {\r\n this.error(\"AppRepoEntity not found in AppObjects.\");\r\n return;\r\n }\r\n\r\n apps.add(this.sandbox.app);\r\n }\r\n}\r\n\r\nexport function makeAppSandboxFeatureFactory(\r\n appID: string,\r\n appObjects: AppObjectRepo\r\n): AppSandboxFeatureFactory {\r\n const ao = appObjects.getOrCreate(appID);\r\n return new AppSandboxFeatureFactory(ao);\r\n}\r\n"]}
1
+ {"version":3,"file":"AppSandboxFeatureFactory.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Factories/AppSandboxFeatureFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectRepo, DomainFactory } from \"@vived/core\";\nimport {\n makeSandboxMounter,\n makeStartAppUC,\n makeStopAppUC\n} from \"../../Apps/UCs\";\nimport { makeHostDispatchEntity } from \"../../Dispatcher/Entities\";\nimport { setupStandardHostDispatchers } from \"../../Dispatcher/setupStandardHostDispatchers\";\nimport { makeHostHandlerEntity } from \"../../Handler/Entities\";\nimport { setupStandardHostHandlers } from \"../../Handler/setupStandardHostHandlers\";\nimport { SubmitActivityAssetHandler } from \"../../Handler\";\nimport { AppSandboxEntity, makeAppSandboxEntity } from \"../Entities\";\nimport {\n makeBabylonInspectorSupportedPM,\n makeDevFeaturesEnabledPM,\n makeDevModePM,\n makeSandboxStatePM,\n makeShowInspectorPM,\n makeStartInZSpacePM\n} from \"../PMs\";\nimport {\n makeRedispatchThemeToAppUC,\n makeSetDevModeUC,\n makeShowBabylonInspectorUC\n} from \"../UCs\";\nimport { makeSubmitActivityAssetHandlerSandbox } from \"../UCs/submitActivityAssetHandlerSandbox\";\nimport { AppRepoEntity } from \"../../Apps/Entities\";\n\n/**\n * Factory responsible for setting up the AppSandbox domain components.\n * This factory initializes all entities, use cases, and presentation models\n * required for the AppSandbox functionality.\n */\nexport class AppSandboxFeatureFactory extends DomainFactory {\n // Unique name for this factory\n readonly factoryName = \"AppSandboxFeatureFactory\";\n\n private sandbox?: AppSandboxEntity;\n\n constructor(appObject: AppObject) {\n super(appObject);\n }\n\n /**\n * Sets up all entities required for the AppSandbox system\n */\n setupEntities(): void {\n // Initialize entities\n this.sandbox = makeAppSandboxEntity(this.appObject);\n makeHostDispatchEntity(this.appObject);\n makeHostHandlerEntity(this.appObject);\n }\n\n /**\n * Sets up all use cases for the AppSandbox system\n */\n setupUCs(): void {\n // Setup standard dispatchers and handlers\n setupStandardHostDispatchers(this.appObject);\n setupStandardHostHandlers(this.appObject);\n\n // Initialize use cases\n makeStartAppUC(this.appObject);\n makeStopAppUC(this.appObject);\n makeSetDevModeUC(this.appObject);\n makeShowBabylonInspectorUC(this.appObject);\n makeSandboxMounter(this.appObject);\n\n // Re-dispatch SET_THEME_COLORS to the running App on theme change (ADR-0004).\n // HostThemeEntity exists by now — all setupEntities run before any setupUCs.\n makeRedispatchThemeToAppUC(this.appObject);\n }\n\n /**\n * Sets up all presentation managers for the AppSandbox system\n */\n setupPMs(): void {\n // Initialize presentation managers\n makeBabylonInspectorSupportedPM(this.appObject);\n makeDevFeaturesEnabledPM(this.appObject);\n makeDevModePM(this.appObject);\n makeSandboxStatePM(this.appObject);\n makeShowInspectorPM(this.appObject);\n makeStartInZSpacePM(this.appObject);\n }\n\n /**\n * Performs any final setup operations after all components are initialized\n */\n finalSetup(): void {\n // Setup custom handler for activity asset submission\n const submitActivityAssetUC =\n this.appObjects.getSingleton<SubmitActivityAssetHandler>(\n SubmitActivityAssetHandler.type\n );\n if (submitActivityAssetUC) {\n submitActivityAssetUC.action = makeSubmitActivityAssetHandlerSandbox(\n this.appObjects\n );\n }\n\n if (!this.sandbox) {\n this.error(\"AppSandboxEntity not found during final setup.\");\n return;\n }\n\n const apps = AppRepoEntity.get(this.appObjects);\n\n if (!apps) {\n this.error(\"AppRepoEntity not found in AppObjects.\");\n return;\n }\n\n apps.add(this.sandbox.app);\n }\n}\n\nexport function makeAppSandboxFeatureFactory(\n appID: string,\n appObjects: AppObjectRepo\n): AppSandboxFeatureFactory {\n const ao = appObjects.getOrCreate(appID);\n return new AppSandboxFeatureFactory(ao);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"setupAppSandbox.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Factories/setupAppSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAEjG,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,UAAyB;IAEzB,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAEzC,WAAW;IACX,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACxC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAE1B,KAAK;IACL,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACjC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAEvB,MAAM;IACN,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvB,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAExB,MAAM,qBAAqB,GACzB,UAAU,CAAC,YAAY,CACrB,0BAA0B,CAAC,IAAI,CAChC,CAAC;IACJ,IAAI,qBAAqB,EAAE,CAAC;QAC1B,qBAAqB,CAAC,MAAM;YAC1B,qCAAqC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport {\r\n makeSandboxMounter,\r\n makeStartAppUC,\r\n makeStopAppUC\r\n} from \"../../Apps/UCs\";\r\nimport { makeHostDispatchEntity } from \"../../Dispatcher/Entities\";\r\nimport { setupStandardHostDispatchers } from \"../../Dispatcher/setupStandardHostDispatchers\";\r\nimport { makeHostHandlerEntity } from \"../../Handler/Entities\";\r\nimport { setupStandardHostHandlers } from \"../../Handler/setupStandardHostHandlers\";\r\nimport { AppSandboxEntity, makeAppSandboxEntity } from \"../Entities\";\r\nimport {\r\n makeDevFeaturesEnabledPM,\r\n makeDevModePM,\r\n makeSandboxStatePM,\r\n makeShowInspectorPM,\r\n makeStartInZSpacePM\r\n} from \"../PMs\";\r\nimport { makeSetDevModeUC, makeShowBabylonInspectorUC } from \"../UCs\";\r\nimport { SubmitActivityAssetHandler } from \"../../Handler\";\r\nimport { makeSubmitActivityAssetHandlerSandbox } from \"../UCs/submitActivityAssetHandlerSandbox\";\r\n\r\nexport function setupAppSandbox(\r\n appID: string,\r\n appObjects: AppObjectRepo\r\n): AppSandboxEntity {\r\n const ao = appObjects.getOrCreate(appID);\r\n\r\n // Entities\r\n const entity = makeAppSandboxEntity(ao);\r\n makeHostDispatchEntity(ao);\r\n makeHostHandlerEntity(ao);\r\n\r\n // UC\r\n setupStandardHostDispatchers(ao);\r\n setupStandardHostHandlers(ao);\r\n makeStartAppUC(ao);\r\n makeStopAppUC(ao);\r\n makeSetDevModeUC(ao);\r\n makeShowBabylonInspectorUC(ao);\r\n makeSandboxMounter(ao);\r\n\r\n // PMs\r\n makeDevFeaturesEnabledPM(ao);\r\n makeDevModePM(ao);\r\n makeSandboxStatePM(ao);\r\n makeShowInspectorPM(ao);\r\n makeStartInZSpacePM(ao);\r\n\r\n const submitActivityAssetUC =\r\n appObjects.getSingleton<SubmitActivityAssetHandler>(\r\n SubmitActivityAssetHandler.type\r\n );\r\n if (submitActivityAssetUC) {\r\n submitActivityAssetUC.action =\r\n makeSubmitActivityAssetHandlerSandbox(appObjects);\r\n }\r\n\r\n return entity;\r\n}\r\n"]}
1
+ {"version":3,"file":"setupAppSandbox.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Factories/setupAppSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAEjG,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,UAAyB;IAEzB,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAEzC,WAAW;IACX,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACxC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAE1B,KAAK;IACL,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACjC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAEvB,MAAM;IACN,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvB,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAExB,MAAM,qBAAqB,GACzB,UAAU,CAAC,YAAY,CACrB,0BAA0B,CAAC,IAAI,CAChC,CAAC;IACJ,IAAI,qBAAqB,EAAE,CAAC;QAC1B,qBAAqB,CAAC,MAAM;YAC1B,qCAAqC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\nimport {\n makeSandboxMounter,\n makeStartAppUC,\n makeStopAppUC\n} from \"../../Apps/UCs\";\nimport { makeHostDispatchEntity } from \"../../Dispatcher/Entities\";\nimport { setupStandardHostDispatchers } from \"../../Dispatcher/setupStandardHostDispatchers\";\nimport { makeHostHandlerEntity } from \"../../Handler/Entities\";\nimport { setupStandardHostHandlers } from \"../../Handler/setupStandardHostHandlers\";\nimport { AppSandboxEntity, makeAppSandboxEntity } from \"../Entities\";\nimport {\n makeDevFeaturesEnabledPM,\n makeDevModePM,\n makeSandboxStatePM,\n makeShowInspectorPM,\n makeStartInZSpacePM\n} from \"../PMs\";\nimport { makeSetDevModeUC, makeShowBabylonInspectorUC } from \"../UCs\";\nimport { SubmitActivityAssetHandler } from \"../../Handler\";\nimport { makeSubmitActivityAssetHandlerSandbox } from \"../UCs/submitActivityAssetHandlerSandbox\";\n\nexport function setupAppSandbox(\n appID: string,\n appObjects: AppObjectRepo\n): AppSandboxEntity {\n const ao = appObjects.getOrCreate(appID);\n\n // Entities\n const entity = makeAppSandboxEntity(ao);\n makeHostDispatchEntity(ao);\n makeHostHandlerEntity(ao);\n\n // UC\n setupStandardHostDispatchers(ao);\n setupStandardHostHandlers(ao);\n makeStartAppUC(ao);\n makeStopAppUC(ao);\n makeSetDevModeUC(ao);\n makeShowBabylonInspectorUC(ao);\n makeSandboxMounter(ao);\n\n // PMs\n makeDevFeaturesEnabledPM(ao);\n makeDevModePM(ao);\n makeSandboxStatePM(ao);\n makeShowInspectorPM(ao);\n makeStartInZSpacePM(ao);\n\n const submitActivityAssetUC =\n appObjects.getSingleton<SubmitActivityAssetHandler>(\n SubmitActivityAssetHandler.type\n );\n if (submitActivityAssetUC) {\n submitActivityAssetUC.action =\n makeSubmitActivityAssetHandlerSandbox(appObjects);\n }\n\n return entity;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DevModePMMock.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Mocks/DevModePMMock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,aAAc,SAAQ,SAAS;IAE1C,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAFnC,gBAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAGxB,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAyB;IACzD,OAAO,IAAI,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;AACpE,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { DevModePM } from \"../PMs/DevModePM\";\r\n\r\nexport class DevModePMMock extends DevModePM {\r\n vmsAreEqual = jest.fn();\r\n constructor(appObject: AppObject) {\r\n super(appObject, DevModePM.type);\r\n }\r\n}\r\n\r\nexport function makeDevModePMMock(appObjects: AppObjectRepo) {\r\n return new DevModePMMock(appObjects.getOrCreate(\"DevModePMMock\"));\r\n}\r\n"]}
1
+ {"version":3,"file":"DevModePMMock.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Mocks/DevModePMMock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,aAAc,SAAQ,SAAS;IAE1C,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAFnC,gBAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAGxB,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAyB;IACzD,OAAO,IAAI,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;AACpE,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\nimport { DevModePM } from \"../PMs/DevModePM\";\n\nexport class DevModePMMock extends DevModePM {\n vmsAreEqual = jest.fn();\n constructor(appObject: AppObject) {\n super(appObject, DevModePM.type);\n }\n}\n\nexport function makeDevModePMMock(appObjects: AppObjectRepo) {\n return new DevModePMMock(appObjects.getOrCreate(\"DevModePMMock\"));\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MockSetDevModeUC.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Mocks/MockSetDevModeUC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAGhD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAHtC,eAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAIvB,CAAC;CACF","sourcesContent":["import { AppObject } from \"@vived/core\";\r\nimport { SetDevModeUC } from \"../UCs/SetDevModeUC\";\r\n\r\nexport class MockSetDevModeUC extends SetDevModeUC {\r\n setDevMode = jest.fn();\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetDevModeUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MockSetDevModeUC.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Mocks/MockSetDevModeUC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAGhD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAHtC,eAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAIvB,CAAC;CACF","sourcesContent":["import { AppObject } from \"@vived/core\";\nimport { SetDevModeUC } from \"../UCs/SetDevModeUC\";\n\nexport class MockSetDevModeUC extends SetDevModeUC {\n setDevMode = jest.fn();\n\n constructor(appObject: AppObject) {\n super(appObject, SetDevModeUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC","sourcesContent":["export * from \"./BabylonInspectorSupportedPMMock\";\r\nexport * from \"./DevFeaturesEnabledPMMock\";\r\nexport * from \"./DevModePMMock\";\r\nexport * from \"./MockSetDevModeUC\";\r\nexport * from \"./MockShowBabylonInspectorUC\";\r\nexport * from \"./RenderAppPMMock\";\r\nexport * from \"./ShowInspectorPMMock\";\r\nexport * from \"./StartInZSpacePMMock\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC","sourcesContent":["export * from \"./BabylonInspectorSupportedPMMock\";\nexport * from \"./DevFeaturesEnabledPMMock\";\nexport * from \"./DevModePMMock\";\nexport * from \"./MockSetDevModeUC\";\nexport * from \"./MockShowBabylonInspectorUC\";\nexport * from \"./RenderAppPMMock\";\nexport * from \"./ShowInspectorPMMock\";\nexport * from \"./StartInZSpacePMMock\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DevModePM.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/DevModePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,SAAU,SAAQ,oBAA6B;IAGnE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAY,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;;AAJM,cAAI,GAAG,WAAW,CAAC;AAO5B,MAAM,UAAU,aAAa,CAAC,SAAoB;IAChD,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,YAAa,SAAQ,SAAS;IAGlC,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAhBnC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\r\n\r\nexport abstract class DevModePM extends AppObjectSingletonPM<boolean> {\r\n static type = \"DevModePM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<DevModePM>(DevModePM.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeDevModePM(appObject: AppObject): DevModePM {\r\n return new DevModePMImp(appObject);\r\n}\r\n\r\nclass DevModePMImp extends DevModePM {\r\n defaultVM = false;\r\n\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.sandbox) return;\r\n this.doUpdateView(this.sandbox.isDevMode);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, DevModePM.type);\r\n\r\n if (this.sandbox) {\r\n this.observeEntity(this.sandbox);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DevModePM.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/DevModePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,SAAU,SAAQ,oBAA6B;IAGnE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAY,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;;AAJM,cAAI,GAAG,WAAW,CAAC;AAO5B,MAAM,UAAU,aAAa,CAAC,SAAoB;IAChD,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,YAAa,SAAQ,SAAS;IAGlC,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAhBnC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n getSingletonComponent,\n AppObject,\n AppObjectSingletonPM,\n AppObjectRepo\n} from \"@vived/core\";\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\n\nexport abstract class DevModePM extends AppObjectSingletonPM<boolean> {\n static type = \"DevModePM\";\n\n static get(appObjects: AppObjectRepo) {\n return getSingletonComponent<DevModePM>(DevModePM.type, appObjects);\n }\n}\n\nexport function makeDevModePM(appObject: AppObject): DevModePM {\n return new DevModePMImp(appObject);\n}\n\nclass DevModePMImp extends DevModePM {\n defaultVM = false;\n\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.sandbox) return;\n this.doUpdateView(this.sandbox.isDevMode);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DevModePM.type);\n\n if (this.sandbox) {\n this.observeEntity(this.sandbox);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./BabylonInspectorSupportedPM\";\r\nexport * from \"./DevFeaturesEnabledPM\";\r\nexport * from \"./DevModePM\";\r\nexport * from \"./SandboxStatePM\";\r\nexport * from \"./ShowInspectorPM\";\r\nexport * from \"./StartInZSpacePM\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./BabylonInspectorSupportedPM\";\nexport * from \"./DevFeaturesEnabledPM\";\nexport * from \"./DevModePM\";\nexport * from \"./SandboxStatePM\";\nexport * from \"./ShowInspectorPM\";\nexport * from \"./StartInZSpacePM\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RedispatchThemeToAppUC.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/RedispatchThemeToAppUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,OAAgB,sBAAuB,SAAQ,WAAW;IAG9D,MAAM,CAAC,GAAG,CAAC,SAAoB;QAC7B,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,sBAAsB,CAAC,IAAI,CAC5B,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,SAAS,CAAC,aAAa,CAAC,aAAa,CACnC,4BAA4B,EAC5B,sDAAsD,GAAG,SAAS,CAAC,EAAE,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,gCAAgC,EAChC,kCAAkC,GAAG,EAAE,CACxC,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;;AA9BM,2BAAI,GAAG,wBAAwB,CAAC;AAiCzC,MAAM,UAAU,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAG5D,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,uBAAuB,CAAkB,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAkBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAjBxC,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,6EAA6E;YAC7E,wEAAwE;YACxE,IACE,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO;gBACtC,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO,EACtC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;QACnC,CAAC,CAAC;QAKA,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\r\nimport { HostThemeEntity } from \"../../ThemeColors\";\r\nimport { DispatchThemeUC } from \"../../Dispatcher\";\r\nimport { AppSandboxEntity, SandboxState } from \"../Entities/AppSandboxEntity\";\r\n\r\n/**\r\n * Re-dispatches SET_THEME_COLORS to the running App whenever the active Color\r\n * Scheme changes, so the App re-colors live (not only at start). See ADR-0004.\r\n *\r\n * The start-time dispatch stays in StartAppUC; this UC is additive — it observes\r\n * the HostThemeEntity and, while an App is mounted or playing, fires the App's\r\n * DispatchThemeUC again. Before mount there is nothing to re-theme, so it no-ops.\r\n */\r\nexport abstract class RedispatchThemeToAppUC extends AppObjectUC {\r\n static type = \"RedispatchThemeToAppUC\";\r\n\r\n static get(appObject: AppObject): RedispatchThemeToAppUC | undefined {\r\n const uc = appObject.getComponent<RedispatchThemeToAppUC>(\r\n RedispatchThemeToAppUC.type\r\n );\r\n if (!uc) {\r\n appObject.appObjectRepo.submitWarning(\r\n \"RedispatchThemeToAppUC.get\",\r\n \"Unable to find RedispatchThemeToAppUC on app object \" + appObject.id\r\n );\r\n }\r\n return uc;\r\n }\r\n\r\n static getByID(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): RedispatchThemeToAppUC | undefined {\r\n const appObject = appObjects.get(id);\r\n\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"RedispatchThemeToAppUC.getByID\",\r\n \"Unable to find App Object by id \" + id\r\n );\r\n return undefined;\r\n }\r\n\r\n return RedispatchThemeToAppUC.get(appObject);\r\n }\r\n}\r\n\r\nexport function makeRedispatchThemeToAppUC(\r\n appObject: AppObject\r\n): RedispatchThemeToAppUC {\r\n return new RedispatchThemeToAppUCImp(appObject);\r\n}\r\n\r\nclass RedispatchThemeToAppUCImp extends RedispatchThemeToAppUC {\r\n private theme?: HostThemeEntity;\r\n\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n private get dispatchTheme() {\r\n return this.getCachedLocalComponent<DispatchThemeUC>(DispatchThemeUC.type);\r\n }\r\n\r\n private onThemeChange = () => {\r\n const sandbox = this.sandbox;\r\n if (!sandbox) return;\r\n\r\n // Only a mounted App can be re-themed; the start-time dispatch in StartAppUC\r\n // covers the initial send, so before mount there is nothing to do here.\r\n if (\r\n sandbox.state !== SandboxState.MOUNTED &&\r\n sandbox.state !== SandboxState.PLAYING\r\n ) {\r\n return;\r\n }\r\n\r\n this.dispatchTheme?.doDispatch();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, RedispatchThemeToAppUC.type);\r\n\r\n this.theme = HostThemeEntity.get(this.appObjects);\r\n if (!this.theme) {\r\n this.error(\"RedispatchThemeToAppUC could not find the HostThemeEntity\");\r\n this.dispose();\r\n return;\r\n }\r\n\r\n this.theme.addChangeObserver(this.onThemeChange);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RedispatchThemeToAppUC.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/RedispatchThemeToAppUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,OAAgB,sBAAuB,SAAQ,WAAW;IAG9D,MAAM,CAAC,GAAG,CAAC,SAAoB;QAC7B,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,sBAAsB,CAAC,IAAI,CAC5B,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,SAAS,CAAC,aAAa,CAAC,aAAa,CACnC,4BAA4B,EAC5B,sDAAsD,GAAG,SAAS,CAAC,EAAE,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,gCAAgC,EAChC,kCAAkC,GAAG,EAAE,CACxC,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;;AA9BM,2BAAI,GAAG,wBAAwB,CAAC;AAiCzC,MAAM,UAAU,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAG5D,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,uBAAuB,CAAkB,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAkBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAjBxC,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,6EAA6E;YAC7E,wEAAwE;YACxE,IACE,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO;gBACtC,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO,EACtC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;QACnC,CAAC,CAAC;QAKA,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\nimport { HostThemeEntity } from \"../../ThemeColors\";\nimport { DispatchThemeUC } from \"../../Dispatcher\";\nimport { AppSandboxEntity, SandboxState } from \"../Entities/AppSandboxEntity\";\n\n/**\n * Re-dispatches SET_THEME_COLORS to the running App whenever the active Color\n * Scheme changes, so the App re-colors live (not only at start). See ADR-0004.\n *\n * The start-time dispatch stays in StartAppUC; this UC is additive — it observes\n * the HostThemeEntity and, while an App is mounted or playing, fires the App's\n * DispatchThemeUC again. Before mount there is nothing to re-theme, so it no-ops.\n */\nexport abstract class RedispatchThemeToAppUC extends AppObjectUC {\n static type = \"RedispatchThemeToAppUC\";\n\n static get(appObject: AppObject): RedispatchThemeToAppUC | undefined {\n const uc = appObject.getComponent<RedispatchThemeToAppUC>(\n RedispatchThemeToAppUC.type\n );\n if (!uc) {\n appObject.appObjectRepo.submitWarning(\n \"RedispatchThemeToAppUC.get\",\n \"Unable to find RedispatchThemeToAppUC on app object \" + appObject.id\n );\n }\n return uc;\n }\n\n static getByID(\n id: string,\n appObjects: AppObjectRepo\n ): RedispatchThemeToAppUC | undefined {\n const appObject = appObjects.get(id);\n\n if (!appObject) {\n appObjects.submitWarning(\n \"RedispatchThemeToAppUC.getByID\",\n \"Unable to find App Object by id \" + id\n );\n return undefined;\n }\n\n return RedispatchThemeToAppUC.get(appObject);\n }\n}\n\nexport function makeRedispatchThemeToAppUC(\n appObject: AppObject\n): RedispatchThemeToAppUC {\n return new RedispatchThemeToAppUCImp(appObject);\n}\n\nclass RedispatchThemeToAppUCImp extends RedispatchThemeToAppUC {\n private theme?: HostThemeEntity;\n\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n private get dispatchTheme() {\n return this.getCachedLocalComponent<DispatchThemeUC>(DispatchThemeUC.type);\n }\n\n private onThemeChange = () => {\n const sandbox = this.sandbox;\n if (!sandbox) return;\n\n // Only a mounted App can be re-themed; the start-time dispatch in StartAppUC\n // covers the initial send, so before mount there is nothing to do here.\n if (\n sandbox.state !== SandboxState.MOUNTED &&\n sandbox.state !== SandboxState.PLAYING\n ) {\n return;\n }\n\n this.dispatchTheme?.doDispatch();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, RedispatchThemeToAppUC.type);\n\n this.theme = HostThemeEntity.get(this.appObjects);\n if (!this.theme) {\n this.error(\"RedispatchThemeToAppUC could not find the HostThemeEntity\");\n this.dispose();\n return;\n }\n\n this.theme.addChangeObserver(this.onThemeChange);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SetDevModeUC.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/SetDevModeUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,YAAa,SAAQ,WAAW;IAKpD,MAAM,CAAC,GAAG,CAAC,SAAoB;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,aAAa,CAAC,aAAa,CACnC,kBAAkB,EAClB,4CAA4C,GAAG,SAAS,CAAC,EAAE,CAC5D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,sBAAsB,EACtB,kCAAkC,GAAG,EAAE,CACxC,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;;AA9BM,iBAAI,GAAG,cAAc,CAAC;AAiC/B,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,eAAgB,SAAQ,YAAY;IACxC,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAC,uBAAuB,CACjC,oBAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IASD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QARtC,eAAU,GAAG,CAAC,SAAkB,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB;gBAAE,OAAO;YAEtD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC;IAIF,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\r\nimport { DispatchSetDevModeUC } from \"../../Dispatcher\";\r\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\r\n\r\nexport abstract class SetDevModeUC extends AppObjectUC {\r\n static type = \"SetDevModeUC\";\r\n\r\n abstract setDevMode(isDevMode: boolean): void;\r\n\r\n static get(appObject: AppObject): SetDevModeUC | undefined {\r\n const asset = appObject.getComponent<SetDevModeUC>(SetDevModeUC.type);\r\n if (!asset) {\r\n appObject.appObjectRepo.submitWarning(\r\n \"SetDevModeUC.get\",\r\n \"Unable to find SetDevModeUC on app object \" + appObject.id\r\n );\r\n }\r\n return asset;\r\n }\r\n\r\n static getByID(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): SetDevModeUC | undefined {\r\n const appObject = appObjects.get(id);\r\n\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"SetDevModeUC.getByID\",\r\n \"Unable to find App Object by id \" + id\r\n );\r\n return undefined;\r\n }\r\n\r\n return SetDevModeUC.get(appObject);\r\n }\r\n}\r\n\r\nexport function makeSetDevModeUC(appObject: AppObject): SetDevModeUC {\r\n return new SetDevModeUCImp(appObject);\r\n}\r\n\r\nclass SetDevModeUCImp extends SetDevModeUC {\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n private get dispatchSetDevMode() {\r\n return this.getCachedLocalComponent<DispatchSetDevModeUC>(\r\n DispatchSetDevModeUC.type\r\n );\r\n }\r\n\r\n setDevMode = (isDevMode: boolean) => {\r\n if (!this.sandbox || !this.dispatchSetDevMode) return;\r\n\r\n this.sandbox.isDevMode = isDevMode;\r\n this.dispatchSetDevMode.doDispatch(isDevMode);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetDevModeUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SetDevModeUC.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/SetDevModeUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,YAAa,SAAQ,WAAW;IAKpD,MAAM,CAAC,GAAG,CAAC,SAAoB;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,aAAa,CAAC,aAAa,CACnC,kBAAkB,EAClB,4CAA4C,GAAG,SAAS,CAAC,EAAE,CAC5D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,sBAAsB,EACtB,kCAAkC,GAAG,EAAE,CACxC,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;;AA9BM,iBAAI,GAAG,cAAc,CAAC;AAiC/B,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,eAAgB,SAAQ,YAAY;IACxC,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAC,uBAAuB,CACjC,oBAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IASD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QARtC,eAAU,GAAG,CAAC,SAAkB,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB;gBAAE,OAAO;YAEtD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC;IAIF,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\nimport { DispatchSetDevModeUC } from \"../../Dispatcher\";\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\n\nexport abstract class SetDevModeUC extends AppObjectUC {\n static type = \"SetDevModeUC\";\n\n abstract setDevMode(isDevMode: boolean): void;\n\n static get(appObject: AppObject): SetDevModeUC | undefined {\n const asset = appObject.getComponent<SetDevModeUC>(SetDevModeUC.type);\n if (!asset) {\n appObject.appObjectRepo.submitWarning(\n \"SetDevModeUC.get\",\n \"Unable to find SetDevModeUC on app object \" + appObject.id\n );\n }\n return asset;\n }\n\n static getByID(\n id: string,\n appObjects: AppObjectRepo\n ): SetDevModeUC | undefined {\n const appObject = appObjects.get(id);\n\n if (!appObject) {\n appObjects.submitWarning(\n \"SetDevModeUC.getByID\",\n \"Unable to find App Object by id \" + id\n );\n return undefined;\n }\n\n return SetDevModeUC.get(appObject);\n }\n}\n\nexport function makeSetDevModeUC(appObject: AppObject): SetDevModeUC {\n return new SetDevModeUCImp(appObject);\n}\n\nclass SetDevModeUCImp extends SetDevModeUC {\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n private get dispatchSetDevMode() {\n return this.getCachedLocalComponent<DispatchSetDevModeUC>(\n DispatchSetDevModeUC.type\n );\n }\n\n setDevMode = (isDevMode: boolean) => {\n if (!this.sandbox || !this.dispatchSetDevMode) return;\n\n this.sandbox.isDevMode = isDevMode;\n this.dispatchSetDevMode.doDispatch(isDevMode);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, SetDevModeUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC","sourcesContent":["export * from \"./RedispatchThemeToAppUC\";\r\nexport * from \"./SetDevModeUC\";\r\nexport * from \"./ShowBabylonInspectorUC\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC","sourcesContent":["export * from \"./RedispatchThemeToAppUC\";\nexport * from \"./SetDevModeUC\";\nexport * from \"./ShowBabylonInspectorUC\";\n"]}
@@ -18,7 +18,11 @@ export function makeSubmitActivityAssetHandlerSandbox(appObjects) {
18
18
  name: "Activity Asset",
19
19
  description: "Asset for activity " + ownerID,
20
20
  file: assetFile,
21
- owner: ownerID
21
+ owner: ownerID,
22
+ // Activity-owned create: the backend authorizes via the activity's
23
+ // channel only when the row carries ownerType "activity" (it does not
24
+ // infer it). See vivedlearning/player_2#64.
25
+ ownerType: "activity"
22
26
  };
23
27
  const newAssetUC = NewAssetUC.get(appObjects);
24
28
  if (!newAssetUC) {
@@ -1 +1 @@
1
- {"version":3,"file":"submitActivityAssetHandlerSandbox.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/submitActivityAssetHandlerSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAe,UAAU,EAAE,MAAM,cAAc,CAAC;AAGvD,MAAM,UAAU,qCAAqC,CACnD,UAAyB;IAEzB,OAAO,SAAS,0BAA0B,CACxC,SAAe,EACf,QAA+C;QAE/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,UAAU,CAAC,WAAW,CACpB,uCAAuC,EACvC,iCAAiC,CAClC,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5B,UAAU,CAAC,WAAW,CACpB,uCAAuC,EACvC,sBAAsB,CACvB,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAW,OAAO,CAAC,cAAc,CAAC;QAE/C,MAAM,YAAY,GAAgB;YAChC,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,qBAAqB,GAAG,OAAO;YAC5C,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;SACf,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,CAAC,WAAW,CACpB,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/C,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\nimport { AppSandboxEntity } from \"..\";\nimport { NewAssetDto, NewAssetUC } from \"../../Assets\";\nimport { SubmitActivityAssetAction } from \"../../Handler/UCs/SubmitActivityAssetHandler\";\n\nexport function makeSubmitActivityAssetHandlerSandbox(\n appObjects: AppObjectRepo\n): SubmitActivityAssetAction {\n return function submitActivityAssetHandler(\n assetFile: File,\n callback: (assetID: string | undefined) => void\n ): void {\n const sandbox = AppSandboxEntity.get(appObjects);\n if (!sandbox) {\n appObjects.submitError(\n \"makeSubmitActivityAssetHandlerSandbox\",\n \"Unable to find AppSandboxEntity\"\n );\n callback(undefined);\n return;\n }\n\n if (!sandbox.mockActivityID) {\n appObjects.submitError(\n \"makeSubmitActivityAssetHandlerSandbox\",\n \"No activity ID found\"\n );\n callback(undefined);\n return;\n }\n\n const ownerID: string = sandbox.mockActivityID;\n\n const newAssetData: NewAssetDto = {\n name: \"Activity Asset\",\n description: \"Asset for activity \" + ownerID,\n file: assetFile,\n owner: ownerID\n };\n\n const newAssetUC = NewAssetUC.get(appObjects);\n if (!newAssetUC) {\n appObjects.submitError(\n \"makeSubmitActivityAssetHandlerSandbox\",\n \"Unable to find NewAssetUC\"\n );\n callback(undefined);\n return;\n }\n\n newAssetUC.create(newAssetData).then((assetID) => {\n callback(assetID);\n });\n };\n}\n"]}
1
+ {"version":3,"file":"submitActivityAssetHandlerSandbox.js","sourceRoot":"","sources":["../../../../src/AppSandbox/UCs/submitActivityAssetHandlerSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAe,UAAU,EAAE,MAAM,cAAc,CAAC;AAGvD,MAAM,UAAU,qCAAqC,CACnD,UAAyB;IAEzB,OAAO,SAAS,0BAA0B,CACxC,SAAe,EACf,QAA+C;QAE/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,UAAU,CAAC,WAAW,CACpB,uCAAuC,EACvC,iCAAiC,CAClC,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5B,UAAU,CAAC,WAAW,CACpB,uCAAuC,EACvC,sBAAsB,CACvB,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAW,OAAO,CAAC,cAAc,CAAC;QAE/C,MAAM,YAAY,GAAgB;YAChC,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,qBAAqB,GAAG,OAAO;YAC5C,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,mEAAmE;YACnE,sEAAsE;YACtE,4CAA4C;YAC5C,SAAS,EAAE,UAAU;SACtB,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,CAAC,WAAW,CACpB,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/C,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\nimport { AppSandboxEntity } from \"..\";\nimport { NewAssetDto, NewAssetUC } from \"../../Assets\";\nimport { SubmitActivityAssetAction } from \"../../Handler/UCs/SubmitActivityAssetHandler\";\n\nexport function makeSubmitActivityAssetHandlerSandbox(\n appObjects: AppObjectRepo\n): SubmitActivityAssetAction {\n return function submitActivityAssetHandler(\n assetFile: File,\n callback: (assetID: string | undefined) => void\n ): void {\n const sandbox = AppSandboxEntity.get(appObjects);\n if (!sandbox) {\n appObjects.submitError(\n \"makeSubmitActivityAssetHandlerSandbox\",\n \"Unable to find AppSandboxEntity\"\n );\n callback(undefined);\n return;\n }\n\n if (!sandbox.mockActivityID) {\n appObjects.submitError(\n \"makeSubmitActivityAssetHandlerSandbox\",\n \"No activity ID found\"\n );\n callback(undefined);\n return;\n }\n\n const ownerID: string = sandbox.mockActivityID;\n\n const newAssetData: NewAssetDto = {\n name: \"Activity Asset\",\n description: \"Asset for activity \" + ownerID,\n file: assetFile,\n owner: ownerID,\n // Activity-owned create: the backend authorizes via the activity's\n // channel only when the row carries ownerType \"activity\" (it does not\n // infer it). See vivedlearning/player_2#64.\n ownerType: \"activity\"\n };\n\n const newAssetUC = NewAssetUC.get(appObjects);\n if (!newAssetUC) {\n appObjects.submitError(\n \"makeSubmitActivityAssetHandlerSandbox\",\n \"Unable to find NewAssetUC\"\n );\n callback(undefined);\n return;\n }\n\n newAssetUC.create(newAssetData).then((assetID) => {\n callback(assetID);\n });\n };\n}\n"]}
@@ -1 +1 @@
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
+ {"version":3,"file":"NewAppAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/NewAppAssetUC.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NewAppAssetUC.ts\n *\n * This use case handles creation of new assets within application contexts,\n * managing the complete workflow from file upload to UI state transitions.\n */\n\nimport {\n getSingletonComponent,\n AppObject,\n AppObjectRepo,\n AppObjectUC\n} from \"@vived/core\";\nimport { AppSandboxEntity, SandboxState } from \"../../AppSandbox/Entities\";\nimport {\n DialogAlertDTO,\n MakeAlertDialogUC,\n MakeSpinnerDialogUC\n} from \"../../Dialog\";\nimport { NewAssetApiDto, PostNewAssetUC } from \"../../VivedAPI/UCs\";\nimport { AppAssetsEntity, AssetRepo } from \"../Entities\";\n\n/**\n * Data transfer object for new application asset creation requests.\n */\nexport interface NewAppAssetDTO {\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}\n\n/**\n * NewAppAssetUC handles creation of new assets within application contexts.\n *\n * This singleton use case manages asset creation with UI feedback and state transitions.\n */\nexport abstract class NewAppAssetUC extends AppObjectUC {\n /** Static type identifier for component registration */\n static type = \"NewAppAssetUC\";\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 that resolves when the asset is successfully created\n */\n abstract create(data: NewAppAssetDTO): Promise<void>;\n\n /**\n * Retrieves the singleton NewAppAssetUC instance.\n *\n * @param appObjects - Repository for accessing the singleton component\n * @returns NewAppAssetUC instance or undefined if not found\n */\n static get(appObjects: AppObjectRepo): NewAppAssetUC | undefined {\n return getSingletonComponent(NewAppAssetUC.type, appObjects);\n }\n}\n\n/**\n * Factory function to create a new NewAppAssetUC instance.\n *\n * @param appObject - The AppObject that will host this singleton use case\n * @returns A new NewAppAssetUC implementation instance\n */\nexport function makeNewAppAssetUC(appObject: AppObject): NewAppAssetUC {\n return new NewAppAssetUCImp(appObject);\n}\n\n/**\n * Private implementation of NewAppAssetUC with app context and state management.\n */\nclass NewAppAssetUCImp extends NewAppAssetUC {\n private appAssets?: AppAssetsEntity;\n\n private get postNewAsset() {\n return this.getCachedSingleton<PostNewAssetUC>(PostNewAssetUC.type)?.doPost;\n }\n\n private get assetRepo() {\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\n }\n\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n private get spinnerFactory() {\n return this.getCachedSingleton<MakeSpinnerDialogUC>(\n MakeSpinnerDialogUC.type\n );\n }\n\n private get alertFactory() {\n return this.getCachedSingleton<MakeAlertDialogUC>(MakeAlertDialogUC.type);\n }\n\n create = (data: NewAppAssetDTO): Promise<void> => {\n const appAssets = this.appAssets;\n const postNewAsset = this.postNewAsset;\n const sandbox = this.sandbox;\n const assetRepo = this.assetRepo;\n\n if (!appAssets || !postNewAsset || !sandbox || !assetRepo) {\n return Promise.reject();\n }\n\n return new Promise<void>((resolve) => {\n const { description, file, name } = data;\n\n const newAssetData: NewAssetApiDto = {\n description,\n name,\n file,\n ownerID: sandbox.appID,\n // App-owned create: the backend authorizes this via the `app` branch\n // only when the row carries ownerType \"app\" (it does not infer it).\n // See vivedlearning/vived-api-legacy#133.\n ownerType: \"app\"\n };\n\n const spinnerDialog = this.spinnerFactory?.make({\n title: \"New App Asset\",\n message: \"Posting new app asset...\"\n });\n\n postNewAsset(newAssetData)\n .then((resp) => {\n appAssets.add(resp.id);\n\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 assetRepo.add(newAsset);\n this.sandbox!.state = SandboxState.MOUNTED;\n\n spinnerDialog?.close();\n resolve();\n })\n .catch((e: Error) => {\n this.error(\"create new asset error: \" + e.message);\n spinnerDialog?.close();\n\n const dialogDTO: DialogAlertDTO = {\n buttonLabel: \"OK\",\n message: `Something went wrong when creating a new app asset. Check the console. ${e.message}`,\n title: \"New App Asset Error\"\n };\n this.alertFactory?.make(dialogDTO);\n\n resolve();\n });\n });\n };\n\n constructor(appObject: AppObject) {\n super(appObject, NewAppAssetUC.type);\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"]}
@@ -101,12 +101,13 @@ class NewAssetUCImp extends NewAssetUC {
101
101
  if (!postNewAsset || !assetRepo) {
102
102
  return Promise.reject(new Error("Missing dependencies"));
103
103
  }
104
- const { description, file, name, owner } = data;
104
+ const { description, file, name, owner, ownerType } = data;
105
105
  const newAssetData = {
106
106
  description,
107
107
  name,
108
108
  file,
109
- ownerID: owner
109
+ ownerID: owner,
110
+ ...(ownerType !== undefined && { ownerType })
110
111
  };
111
112
  return postNewAsset(newAssetData).then((resp) => {
112
113
  // Create and configure the new asset entity
@@ -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;AAuBxC;;;;;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;IA+CD;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAnDpC;;;;;;;;;;;;;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,SAAS,EAAE,GAAG,IAAI,CAAC;YAC3D,MAAM,YAAY,GAAmB;gBACnC,WAAW;gBACX,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;aAC9C,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 * The kind of entity `owner` refers to. When absent, the backend treats\n * the owner as a channel (it does not infer the type from the id), so\n * non-channel owners must set this explicitly.\n */\n ownerType?: \"channel\" | \"activity\" | \"app\";\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, ownerType } = data;\n const newAssetData: NewAssetApiDto = {\n description,\n name,\n file,\n ownerID: owner,\n ...(ownerType !== undefined && { ownerType })\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 +1 @@
1
- {"version":3,"file":"boundaryLogAdapter.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Adapters/boundaryLogAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAEb,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,kBAAkB,GAAsC;IACnE,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,CACT,UAAyB,EACzB,KAAkC,EAClC,EAAE;QACF,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,oBAAoB,EACpB,8BAA8B,CAC/B,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CACX,UAAyB,EACzB,KAAkC,EAClC,EAAE;QACF,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,oBAAoB,EACpB,8BAA8B,CAC/B,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, SingletonPmAdapter } from \"@vived/core\";\r\nimport {\r\n BoundaryLogPM,\r\n BoundaryLogVM,\r\n defaultBoundaryLogVM\r\n} from \"../PMs/BoundaryLogPM\";\r\n\r\nexport const boundaryLogAdapter: SingletonPmAdapter<BoundaryLogVM> = {\r\n defaultVM: defaultBoundaryLogVM,\r\n subscribe: (\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: BoundaryLogVM) => void\r\n ) => {\r\n const pm = BoundaryLogPM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"boundaryLogAdapter\",\r\n \"Unable to find BoundaryLogPM\"\r\n );\r\n return;\r\n }\r\n pm.addView(setVM);\r\n },\r\n unsubscribe: (\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: BoundaryLogVM) => void\r\n ) => {\r\n const pm = BoundaryLogPM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"boundaryLogAdapter\",\r\n \"Unable to find BoundaryLogPM\"\r\n );\r\n return;\r\n }\r\n pm.removeView(setVM);\r\n }\r\n};\r\n"]}
1
+ {"version":3,"file":"boundaryLogAdapter.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Adapters/boundaryLogAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAEb,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,kBAAkB,GAAsC;IACnE,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,CACT,UAAyB,EACzB,KAAkC,EAClC,EAAE;QACF,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,oBAAoB,EACpB,8BAA8B,CAC/B,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CACX,UAAyB,EACzB,KAAkC,EAClC,EAAE;QACF,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,oBAAoB,EACpB,8BAA8B,CAC/B,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, SingletonPmAdapter } from \"@vived/core\";\nimport {\n BoundaryLogPM,\n BoundaryLogVM,\n defaultBoundaryLogVM\n} from \"../PMs/BoundaryLogPM\";\n\nexport const boundaryLogAdapter: SingletonPmAdapter<BoundaryLogVM> = {\n defaultVM: defaultBoundaryLogVM,\n subscribe: (\n appObjects: AppObjectRepo,\n setVM: (vm: BoundaryLogVM) => void\n ) => {\n const pm = BoundaryLogPM.get(appObjects);\n if (!pm) {\n appObjects.submitError(\n \"boundaryLogAdapter\",\n \"Unable to find BoundaryLogPM\"\n );\n return;\n }\n pm.addView(setVM);\n },\n unsubscribe: (\n appObjects: AppObjectRepo,\n setVM: (vm: BoundaryLogVM) => void\n ) => {\n const pm = BoundaryLogPM.get(appObjects);\n if (!pm) {\n appObjects.submitError(\n \"boundaryLogAdapter\",\n \"Unable to find BoundaryLogPM\"\n );\n return;\n }\n pm.removeView(setVM);\n }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC","sourcesContent":["export * from \"./boundaryLogAdapter\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC","sourcesContent":["export * from \"./boundaryLogAdapter\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"clearBoundaryLog.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Controllers/clearBoundaryLog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAAC,UAAyB;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,WAAW,CACpB,kBAAkB,EAClB,kCAAkC,CACnC,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { BoundaryLogEntity } from \"../Entities\";\r\n\r\n/** Clears the Boundary Log on demand (the tab's Clear action). */\r\nexport function clearBoundaryLog(appObjects: AppObjectRepo) {\r\n const entity = BoundaryLogEntity.get(appObjects);\r\n if (entity) {\r\n entity.clear();\r\n } else {\r\n appObjects.submitError(\r\n \"clearBoundaryLog\",\r\n \"Unable to find BoundaryLogEntity\"\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"clearBoundaryLog.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Controllers/clearBoundaryLog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAAC,UAAyB;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,WAAW,CACpB,kBAAkB,EAClB,kCAAkC,CACnC,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\nimport { BoundaryLogEntity } from \"../Entities\";\n\n/** Clears the Boundary Log on demand (the tab's Clear action). */\nexport function clearBoundaryLog(appObjects: AppObjectRepo) {\n const entity = BoundaryLogEntity.get(appObjects);\n if (entity) {\n entity.clear();\n } else {\n appObjects.submitError(\n \"clearBoundaryLog\",\n \"Unable to find BoundaryLogEntity\"\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./clearBoundaryLog\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./clearBoundaryLog\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BoundaryLogEntity.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Entities/BoundaryLogEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,eAAe,EAGhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA+BrE;;;;GAIG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,eAAe;IAG7D,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,iBAAiB,CAAC,IAAI,EACtB,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,sBAAI,GAAG,mBAAmB,CAAC;AAoBpC,MAAM,UAAU,qBAAqB,CAAC,SAAoB;IACxD,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,oBAAqB,SAAQ,iBAAiB;IA0BlD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QA1B3C,YAAO,GAAoB,EAAE,CAAC;QAE9B,kBAAa,GAAG,CACd,SAA2B,EAC3B,OAAgB,EAChB,OAAuB,EACjB,EAAE;YACR,MAAM,MAAM,GAAkB;gBAC5B,SAAS;gBACT,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;gBACzC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,OAAO;aACR,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,UAAK,GAAG,GAAS,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,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 AppObjectEntity,\r\n AppObjectRepo,\r\n Request\r\n} from \"@vived/core\";\r\nimport { PayloadSnapshot, snapshotPayload } from \"./snapshotPayload\";\r\n\r\n/** Which way a recorded Request crossed the host↔App boundary. */\r\nexport type RequestDirection = \"dispatch\" | \"handler\";\r\n\r\n/**\r\n * What happened to a recorded Request. Outbound (Dispatch) records use\r\n * \"delivered\" | \"no-app-handler\" | \"threw\"; inbound (Handler) records use\r\n * \"handled\" | \"unsupported\" | \"threw\".\r\n */\r\nexport type RequestOutcome =\r\n | \"delivered\"\r\n | \"no-app-handler\"\r\n | \"handled\"\r\n | \"unsupported\"\r\n | \"threw\";\r\n\r\n/**\r\n * One captured entry in the Boundary Log: the observed Request plus its\r\n * direction, a frozen payload snapshot, the time it was observed, and its\r\n * outcome. Distinct from the live wire Request it was captured from.\r\n */\r\nexport interface RequestRecord {\r\n direction: RequestDirection;\r\n type: string;\r\n version: number;\r\n payload: PayloadSnapshot;\r\n timestamp: number;\r\n outcome: RequestOutcome;\r\n}\r\n\r\n/**\r\n * The Boundary Log: a passive, chronological recording of every Request\r\n * observed crossing the host↔App boundary. Accumulates unbounded within a\r\n * session and is only reset by an explicit clear() — never by traffic itself.\r\n */\r\nexport abstract class BoundaryLogEntity extends AppObjectEntity {\r\n static type = \"BoundaryLogEntity\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<BoundaryLogEntity>(\r\n BoundaryLogEntity.type,\r\n appObjects\r\n );\r\n }\r\n\r\n abstract records: RequestRecord[];\r\n\r\n abstract recordTraffic: (\r\n direction: RequestDirection,\r\n request: Request,\r\n outcome: RequestOutcome\r\n ) => void;\r\n\r\n abstract clear: () => void;\r\n}\r\n\r\nexport function makeBoundaryLogEntity(appObject: AppObject): BoundaryLogEntity {\r\n return new BoundaryLogEntityImp(appObject);\r\n}\r\n\r\nclass BoundaryLogEntityImp extends BoundaryLogEntity {\r\n records: RequestRecord[] = [];\r\n\r\n recordTraffic = (\r\n direction: RequestDirection,\r\n request: Request,\r\n outcome: RequestOutcome\r\n ): void => {\r\n const record: RequestRecord = {\r\n direction,\r\n type: request.type,\r\n version: request.version,\r\n payload: snapshotPayload(request.payload),\r\n timestamp: Date.now(),\r\n outcome\r\n };\r\n\r\n this.records.push(record);\r\n this.notifyOnChange();\r\n };\r\n\r\n clear = (): void => {\r\n this.records = [];\r\n this.notifyOnChange();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, BoundaryLogEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BoundaryLogEntity.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Entities/BoundaryLogEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,eAAe,EAGhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA+BrE;;;;GAIG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,eAAe;IAG7D,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,iBAAiB,CAAC,IAAI,EACtB,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,sBAAI,GAAG,mBAAmB,CAAC;AAoBpC,MAAM,UAAU,qBAAqB,CAAC,SAAoB;IACxD,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,oBAAqB,SAAQ,iBAAiB;IA0BlD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QA1B3C,YAAO,GAAoB,EAAE,CAAC;QAE9B,kBAAa,GAAG,CACd,SAA2B,EAC3B,OAAgB,EAChB,OAAuB,EACjB,EAAE;YACR,MAAM,MAAM,GAAkB;gBAC5B,SAAS;gBACT,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;gBACzC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,OAAO;aACR,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,UAAK,GAAG,GAAS,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\n getSingletonComponent,\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n Request\n} from \"@vived/core\";\nimport { PayloadSnapshot, snapshotPayload } from \"./snapshotPayload\";\n\n/** Which way a recorded Request crossed the host↔App boundary. */\nexport type RequestDirection = \"dispatch\" | \"handler\";\n\n/**\n * What happened to a recorded Request. Outbound (Dispatch) records use\n * \"delivered\" | \"no-app-handler\" | \"threw\"; inbound (Handler) records use\n * \"handled\" | \"unsupported\" | \"threw\".\n */\nexport type RequestOutcome =\n | \"delivered\"\n | \"no-app-handler\"\n | \"handled\"\n | \"unsupported\"\n | \"threw\";\n\n/**\n * One captured entry in the Boundary Log: the observed Request plus its\n * direction, a frozen payload snapshot, the time it was observed, and its\n * outcome. Distinct from the live wire Request it was captured from.\n */\nexport interface RequestRecord {\n direction: RequestDirection;\n type: string;\n version: number;\n payload: PayloadSnapshot;\n timestamp: number;\n outcome: RequestOutcome;\n}\n\n/**\n * The Boundary Log: a passive, chronological recording of every Request\n * observed crossing the host↔App boundary. Accumulates unbounded within a\n * session and is only reset by an explicit clear() — never by traffic itself.\n */\nexport abstract class BoundaryLogEntity extends AppObjectEntity {\n static type = \"BoundaryLogEntity\";\n\n static get(appObjects: AppObjectRepo) {\n return getSingletonComponent<BoundaryLogEntity>(\n BoundaryLogEntity.type,\n appObjects\n );\n }\n\n abstract records: RequestRecord[];\n\n abstract recordTraffic: (\n direction: RequestDirection,\n request: Request,\n outcome: RequestOutcome\n ) => void;\n\n abstract clear: () => void;\n}\n\nexport function makeBoundaryLogEntity(appObject: AppObject): BoundaryLogEntity {\n return new BoundaryLogEntityImp(appObject);\n}\n\nclass BoundaryLogEntityImp extends BoundaryLogEntity {\n records: RequestRecord[] = [];\n\n recordTraffic = (\n direction: RequestDirection,\n request: Request,\n outcome: RequestOutcome\n ): void => {\n const record: RequestRecord = {\n direction,\n type: request.type,\n version: request.version,\n payload: snapshotPayload(request.payload),\n timestamp: Date.now(),\n outcome\n };\n\n this.records.push(record);\n this.notifyOnChange();\n };\n\n clear = (): void => {\n this.records = [];\n this.notifyOnChange();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, BoundaryLogEntity.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./BoundaryLogEntity\";\r\nexport * from \"./snapshotPayload\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./BoundaryLogEntity\";\nexport * from \"./snapshotPayload\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotPayload.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Entities/snapshotPayload.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC;QAE5C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;QAE1B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,GAAI,KAA2B,CAAC,IAAI,CAAC;YAC/C,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAQ,KAAgB,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1D,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAEpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7E,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAE,OAAmC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QACzC,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["/**\r\n * A best-effort, one-level-deep structural snapshot of a Request payload, taken\r\n * at the moment the Request crosses the host↔App boundary. It never throws:\r\n * callbacks, circular references, and throwing getters are all rendered as\r\n * previews rather than expanded or serialized. Nested objects/arrays are marked\r\n * (not recursed), so what a developer inspects is exactly what was sent —\r\n * frozen, safe to render, and cheap to build.\r\n */\r\nexport interface PayloadSnapshot {\r\n /** True when the payload was undefined/null or carried no own-enumerable keys. */\r\n isEmpty: boolean;\r\n /** Own-enumerable key → one-level preview string. */\r\n fields: Record<string, string>;\r\n}\r\n\r\nconst UNREADABLE = \"⟨unreadable⟩\";\r\n\r\n/**\r\n * Preview a single value one level deep. Objects and arrays are marked rather\r\n * than expanded, so circular structures are inherently safe. Any access that\r\n * throws (e.g. a getter) is caught and rendered as unreadable.\r\n */\r\nfunction previewValue(value: unknown): string {\r\n try {\r\n if (value === null) return \"null\";\r\n if (value === undefined) return \"undefined\";\r\n\r\n const type = typeof value;\r\n\r\n if (type === \"function\") {\r\n const name = (value as { name?: string }).name;\r\n return `ƒ ${name && name.length > 0 ? name : \"anonymous\"}`;\r\n }\r\n if (type === \"string\") return JSON.stringify(value);\r\n if (type === \"number\" || type === \"boolean\" || type === \"bigint\") {\r\n return String(value);\r\n }\r\n if (type === \"symbol\") return (value as symbol).toString();\r\n if (Array.isArray(value)) return `Array(${value.length})`;\r\n if (type === \"object\") return \"{…}\";\r\n\r\n return String(value);\r\n } catch {\r\n return UNREADABLE;\r\n }\r\n}\r\n\r\nexport function snapshotPayload(payload: unknown): PayloadSnapshot {\r\n const fields: Record<string, string> = {};\r\n\r\n if (payload !== null && payload !== undefined && typeof payload === \"object\") {\r\n let keys: string[] = [];\r\n try {\r\n keys = Object.keys(payload as Record<string, unknown>);\r\n } catch {\r\n keys = [];\r\n }\r\n\r\n for (const key of keys) {\r\n try {\r\n fields[key] = previewValue((payload as Record<string, unknown>)[key]);\r\n } catch {\r\n fields[key] = UNREADABLE;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n isEmpty: Object.keys(fields).length === 0,\r\n fields\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"snapshotPayload.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Entities/snapshotPayload.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC;QAE5C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;QAE1B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,GAAI,KAA2B,CAAC,IAAI,CAAC;YAC/C,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAQ,KAAgB,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1D,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAEpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7E,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAE,OAAmC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QACzC,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["/**\n * A best-effort, one-level-deep structural snapshot of a Request payload, taken\n * at the moment the Request crosses the host↔App boundary. It never throws:\n * callbacks, circular references, and throwing getters are all rendered as\n * previews rather than expanded or serialized. Nested objects/arrays are marked\n * (not recursed), so what a developer inspects is exactly what was sent —\n * frozen, safe to render, and cheap to build.\n */\nexport interface PayloadSnapshot {\n /** True when the payload was undefined/null or carried no own-enumerable keys. */\n isEmpty: boolean;\n /** Own-enumerable key → one-level preview string. */\n fields: Record<string, string>;\n}\n\nconst UNREADABLE = \"⟨unreadable⟩\";\n\n/**\n * Preview a single value one level deep. Objects and arrays are marked rather\n * than expanded, so circular structures are inherently safe. Any access that\n * throws (e.g. a getter) is caught and rendered as unreadable.\n */\nfunction previewValue(value: unknown): string {\n try {\n if (value === null) return \"null\";\n if (value === undefined) return \"undefined\";\n\n const type = typeof value;\n\n if (type === \"function\") {\n const name = (value as { name?: string }).name;\n return `ƒ ${name && name.length > 0 ? name : \"anonymous\"}`;\n }\n if (type === \"string\") return JSON.stringify(value);\n if (type === \"number\" || type === \"boolean\" || type === \"bigint\") {\n return String(value);\n }\n if (type === \"symbol\") return (value as symbol).toString();\n if (Array.isArray(value)) return `Array(${value.length})`;\n if (type === \"object\") return \"{…}\";\n\n return String(value);\n } catch {\n return UNREADABLE;\n }\n}\n\nexport function snapshotPayload(payload: unknown): PayloadSnapshot {\n const fields: Record<string, string> = {};\n\n if (payload !== null && payload !== undefined && typeof payload === \"object\") {\n let keys: string[] = [];\n try {\n keys = Object.keys(payload as Record<string, unknown>);\n } catch {\n keys = [];\n }\n\n for (const key of keys) {\n try {\n fields[key] = previewValue((payload as Record<string, unknown>)[key]);\n } catch {\n fields[key] = UNREADABLE;\n }\n }\n }\n\n return {\n isEmpty: Object.keys(fields).length === 0,\n fields\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BoundaryLogFactory.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Factories/BoundaryLogFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,aAAa,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAGnD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QAHV,gBAAW,GAAG,oBAAoB,CAAC;IAI5C,CAAC;IAED,aAAa;QACX,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ;QACN,gBAAgB;IAClB,CAAC;IAED,QAAQ;QACN,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,UAAU;QACR,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC9C,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC7C,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAyB;IAEzB,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import { AppObject, AppObjectRepo, DomainFactory } from \"@vived/core\";\r\nimport { AppSandboxEntity } from \"../../AppSandbox/Entities/AppSandboxEntity\";\r\nimport { HostDispatchEntity } from \"../../Dispatcher/Entities/HostDispatchEntity\";\r\nimport { HostHandlerEntity } from \"../../Handler/Entities/HostHandler\";\r\nimport { BoundaryLogEntity, makeBoundaryLogEntity } from \"../Entities\";\r\nimport { makeBoundaryLogPM } from \"../PMs\";\r\n\r\n/**\r\n * Sets up the Boundary Log and wires its passive observers into the per-App\r\n * communication entities (ADR-0002). The observers are attached in finalSetup,\r\n * after every entity exists but before the App mounts — so the host-internal\r\n * version-negotiation dispatches fired at registration are captured too.\r\n */\r\nexport class BoundaryLogFactory extends DomainFactory {\r\n readonly factoryName = \"BoundaryLogFactory\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject);\r\n }\r\n\r\n setupEntities(): void {\r\n makeBoundaryLogEntity(this.appObject);\r\n }\r\n\r\n setupUCs(): void {\r\n // No use cases.\r\n }\r\n\r\n setupPMs(): void {\r\n makeBoundaryLogPM(this.appObject);\r\n }\r\n\r\n finalSetup(): void {\r\n const boundaryLog = BoundaryLogEntity.get(this.appObjects);\r\n if (!boundaryLog) {\r\n this.error(\"BoundaryLogEntity not found during final setup.\");\r\n return;\r\n }\r\n\r\n const sandbox = AppSandboxEntity.get(this.appObjects);\r\n if (!sandbox) {\r\n this.error(\"AppSandboxEntity not found during final setup.\");\r\n return;\r\n }\r\n\r\n const appObject = this.appObjects.get(sandbox.appID);\r\n if (!appObject) {\r\n this.error(\"App AppObject not found during final setup.\");\r\n return;\r\n }\r\n\r\n const dispatch = HostDispatchEntity.get(appObject);\r\n if (dispatch) {\r\n dispatch.requestObserver = (request, outcome) =>\r\n boundaryLog.recordTraffic(\"dispatch\", request, outcome);\r\n }\r\n\r\n const handler = HostHandlerEntity.get(appObject);\r\n if (handler) {\r\n handler.requestObserver = (request, outcome) =>\r\n boundaryLog.recordTraffic(\"handler\", request, outcome);\r\n }\r\n }\r\n}\r\n\r\nexport function makeBoundaryLogFactory(\r\n appObjects: AppObjectRepo\r\n): BoundaryLogFactory {\r\n const ao = appObjects.getOrCreate(\"BoundaryLog\");\r\n return new BoundaryLogFactory(ao);\r\n}\r\n"]}
1
+ {"version":3,"file":"BoundaryLogFactory.js","sourceRoot":"","sources":["../../../../src/BoundaryLog/Factories/BoundaryLogFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,aAAa,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAGnD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QAHV,gBAAW,GAAG,oBAAoB,CAAC;IAI5C,CAAC;IAED,aAAa;QACX,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ;QACN,gBAAgB;IAClB,CAAC;IAED,QAAQ;QACN,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,UAAU;QACR,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC9C,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC7C,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAyB;IAEzB,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import { AppObject, AppObjectRepo, DomainFactory } from \"@vived/core\";\nimport { AppSandboxEntity } from \"../../AppSandbox/Entities/AppSandboxEntity\";\nimport { HostDispatchEntity } from \"../../Dispatcher/Entities/HostDispatchEntity\";\nimport { HostHandlerEntity } from \"../../Handler/Entities/HostHandler\";\nimport { BoundaryLogEntity, makeBoundaryLogEntity } from \"../Entities\";\nimport { makeBoundaryLogPM } from \"../PMs\";\n\n/**\n * Sets up the Boundary Log and wires its passive observers into the per-App\n * communication entities (ADR-0002). The observers are attached in finalSetup,\n * after every entity exists but before the App mounts — so the host-internal\n * version-negotiation dispatches fired at registration are captured too.\n */\nexport class BoundaryLogFactory extends DomainFactory {\n readonly factoryName = \"BoundaryLogFactory\";\n\n constructor(appObject: AppObject) {\n super(appObject);\n }\n\n setupEntities(): void {\n makeBoundaryLogEntity(this.appObject);\n }\n\n setupUCs(): void {\n // No use cases.\n }\n\n setupPMs(): void {\n makeBoundaryLogPM(this.appObject);\n }\n\n finalSetup(): void {\n const boundaryLog = BoundaryLogEntity.get(this.appObjects);\n if (!boundaryLog) {\n this.error(\"BoundaryLogEntity not found during final setup.\");\n return;\n }\n\n const sandbox = AppSandboxEntity.get(this.appObjects);\n if (!sandbox) {\n this.error(\"AppSandboxEntity not found during final setup.\");\n return;\n }\n\n const appObject = this.appObjects.get(sandbox.appID);\n if (!appObject) {\n this.error(\"App AppObject not found during final setup.\");\n return;\n }\n\n const dispatch = HostDispatchEntity.get(appObject);\n if (dispatch) {\n dispatch.requestObserver = (request, outcome) =>\n boundaryLog.recordTraffic(\"dispatch\", request, outcome);\n }\n\n const handler = HostHandlerEntity.get(appObject);\n if (handler) {\n handler.requestObserver = (request, outcome) =>\n boundaryLog.recordTraffic(\"handler\", request, outcome);\n }\n }\n}\n\nexport function makeBoundaryLogFactory(\n appObjects: AppObjectRepo\n): BoundaryLogFactory {\n const ao = appObjects.getOrCreate(\"BoundaryLog\");\n return new BoundaryLogFactory(ao);\n}\n"]}