@vived/host 4.6.0 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Assets/UCs/GetAssetBlobURLUC.js +104 -27
- package/dist/cjs/Assets/UCs/GetAssetBlobURLUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAssetFileUC.js +111 -34
- package/dist/cjs/Assets/UCs/GetAssetFileUC.js.map +1 -1
- package/dist/cjs/Cache/Controllers/clearCache.js +13 -0
- package/dist/cjs/Cache/Controllers/clearCache.js.map +1 -0
- package/dist/cjs/Cache/Controllers/index.js +18 -0
- package/dist/cjs/Cache/Controllers/index.js.map +1 -0
- package/dist/cjs/Cache/Entities/AssetCacheEntity.js +95 -0
- package/dist/cjs/Cache/Entities/AssetCacheEntity.js.map +1 -0
- package/dist/cjs/Cache/Entities/CacheEntity.js +54 -0
- package/dist/cjs/Cache/Entities/CacheEntity.js.map +1 -0
- package/dist/cjs/Cache/Entities/ScriptCacheEntity.js +137 -0
- package/dist/cjs/Cache/Entities/ScriptCacheEntity.js.map +1 -0
- package/dist/cjs/Cache/Entities/index.js +25 -0
- package/dist/cjs/Cache/Entities/index.js.map +1 -0
- package/dist/cjs/Cache/Factories/index.js +18 -0
- package/dist/cjs/Cache/Factories/index.js.map +1 -0
- package/dist/cjs/Cache/Factories/setupCache.js +27 -0
- package/dist/cjs/Cache/Factories/setupCache.js.map +1 -0
- package/dist/cjs/Cache/Mocks/MockCacheEntity.js +22 -0
- package/dist/cjs/Cache/Mocks/MockCacheEntity.js.map +1 -0
- package/dist/cjs/Cache/Mocks/MockGetAssetFromCacheUC.js +19 -0
- package/dist/cjs/Cache/Mocks/MockGetAssetFromCacheUC.js.map +1 -0
- package/dist/cjs/Cache/Mocks/MockGetScriptFromCacheUC.js +22 -0
- package/dist/cjs/Cache/Mocks/MockGetScriptFromCacheUC.js.map +1 -0
- package/dist/cjs/Cache/Mocks/MockStoreAssetInCacheUC.js +17 -0
- package/dist/cjs/Cache/Mocks/MockStoreAssetInCacheUC.js.map +1 -0
- package/dist/cjs/Cache/Mocks/MockStoreScriptInCacheUC.js +22 -0
- package/dist/cjs/Cache/Mocks/MockStoreScriptInCacheUC.js.map +1 -0
- package/dist/cjs/Cache/Mocks/index.js +22 -0
- package/dist/cjs/Cache/Mocks/index.js.map +1 -0
- package/dist/cjs/Cache/UCs/GetAssetFromCacheUC.js +40 -0
- package/dist/cjs/Cache/UCs/GetAssetFromCacheUC.js.map +1 -0
- package/dist/cjs/Cache/UCs/GetScriptFromCacheUC.js +49 -0
- package/dist/cjs/Cache/UCs/GetScriptFromCacheUC.js.map +1 -0
- package/dist/cjs/Cache/UCs/StoreAssetInCacheUC.js +39 -0
- package/dist/cjs/Cache/UCs/StoreAssetInCacheUC.js.map +1 -0
- package/dist/cjs/Cache/UCs/StoreScriptInCacheUC.js +48 -0
- package/dist/cjs/Cache/UCs/StoreScriptInCacheUC.js.map +1 -0
- package/dist/cjs/Cache/UCs/index.js +26 -0
- package/dist/cjs/Cache/UCs/index.js.map +1 -0
- package/dist/cjs/Cache/index.js +21 -0
- package/dist/cjs/Cache/index.js.map +1 -0
- package/dist/cjs/StateMachine/Entities/HostEditingStateEntity.js +62 -0
- package/dist/cjs/StateMachine/Entities/HostEditingStateEntity.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/HostStateEntity.js +91 -2
- package/dist/cjs/StateMachine/Entities/HostStateEntity.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/HostStateMachine.js +127 -0
- package/dist/cjs/StateMachine/Entities/HostStateMachine.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockHostStateEntity.js +1 -0
- package/dist/cjs/StateMachine/Mocks/MockHostStateEntity.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/HostStatePM.js +6 -2
- package/dist/cjs/StateMachine/PMs/HostStatePM.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/DeleteStateUC.js +1 -1
- package/dist/cjs/StateMachine/UCs/DeleteStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/DuplicateStateUC.js +1 -1
- package/dist/cjs/StateMachine/UCs/DuplicateStateUC.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/SavePersistentStates.js.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetBlobURLUC.js +104 -27
- package/dist/esm/Assets/UCs/GetAssetBlobURLUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetFileUC.js +111 -34
- package/dist/esm/Assets/UCs/GetAssetFileUC.js.map +1 -1
- package/dist/esm/Cache/Controllers/clearCache.js +10 -0
- package/dist/esm/Cache/Controllers/clearCache.js.map +1 -0
- package/dist/esm/Cache/Controllers/index.js +2 -0
- package/dist/esm/Cache/Controllers/index.js.map +1 -0
- package/dist/esm/Cache/Entities/AssetCacheEntity.js +90 -0
- package/dist/esm/Cache/Entities/AssetCacheEntity.js.map +1 -0
- package/dist/esm/Cache/Entities/CacheEntity.js +49 -0
- package/dist/esm/Cache/Entities/CacheEntity.js.map +1 -0
- package/dist/esm/Cache/Entities/ScriptCacheEntity.js +132 -0
- package/dist/esm/Cache/Entities/ScriptCacheEntity.js.map +1 -0
- package/dist/esm/Cache/Entities/index.js +9 -0
- package/dist/esm/Cache/Entities/index.js.map +1 -0
- package/dist/esm/Cache/Factories/index.js +2 -0
- package/dist/esm/Cache/Factories/index.js.map +1 -0
- package/dist/esm/Cache/Factories/setupCache.js +24 -0
- package/dist/esm/Cache/Factories/setupCache.js.map +1 -0
- package/dist/esm/Cache/Mocks/MockCacheEntity.js +17 -0
- package/dist/esm/Cache/Mocks/MockCacheEntity.js.map +1 -0
- package/dist/esm/Cache/Mocks/MockGetAssetFromCacheUC.js +14 -0
- package/dist/esm/Cache/Mocks/MockGetAssetFromCacheUC.js.map +1 -0
- package/dist/esm/Cache/Mocks/MockGetScriptFromCacheUC.js +17 -0
- package/dist/esm/Cache/Mocks/MockGetScriptFromCacheUC.js.map +1 -0
- package/dist/esm/Cache/Mocks/MockStoreAssetInCacheUC.js +12 -0
- package/dist/esm/Cache/Mocks/MockStoreAssetInCacheUC.js.map +1 -0
- package/dist/esm/Cache/Mocks/MockStoreScriptInCacheUC.js +17 -0
- package/dist/esm/Cache/Mocks/MockStoreScriptInCacheUC.js.map +1 -0
- package/dist/esm/Cache/Mocks/index.js +6 -0
- package/dist/esm/Cache/Mocks/index.js.map +1 -0
- package/dist/esm/Cache/UCs/GetAssetFromCacheUC.js +35 -0
- package/dist/esm/Cache/UCs/GetAssetFromCacheUC.js.map +1 -0
- package/dist/esm/Cache/UCs/GetScriptFromCacheUC.js +44 -0
- package/dist/esm/Cache/UCs/GetScriptFromCacheUC.js.map +1 -0
- package/dist/esm/Cache/UCs/StoreAssetInCacheUC.js +34 -0
- package/dist/esm/Cache/UCs/StoreAssetInCacheUC.js.map +1 -0
- package/dist/esm/Cache/UCs/StoreScriptInCacheUC.js +43 -0
- package/dist/esm/Cache/UCs/StoreScriptInCacheUC.js.map +1 -0
- package/dist/esm/Cache/UCs/index.js +10 -0
- package/dist/esm/Cache/UCs/index.js.map +1 -0
- package/dist/esm/Cache/index.js +5 -0
- package/dist/esm/Cache/index.js.map +1 -0
- package/dist/esm/StateMachine/Entities/HostEditingStateEntity.js +62 -0
- package/dist/esm/StateMachine/Entities/HostEditingStateEntity.js.map +1 -1
- package/dist/esm/StateMachine/Entities/HostStateEntity.js +90 -1
- package/dist/esm/StateMachine/Entities/HostStateEntity.js.map +1 -1
- package/dist/esm/StateMachine/Entities/HostStateMachine.js +127 -0
- package/dist/esm/StateMachine/Entities/HostStateMachine.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockHostStateEntity.js +2 -1
- package/dist/esm/StateMachine/Mocks/MockHostStateEntity.js.map +1 -1
- package/dist/esm/StateMachine/PMs/HostStatePM.js +7 -3
- package/dist/esm/StateMachine/PMs/HostStatePM.js.map +1 -1
- package/dist/esm/StateMachine/UCs/DeleteStateUC.js +1 -1
- package/dist/esm/StateMachine/UCs/DeleteStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/DuplicateStateUC.js +1 -1
- package/dist/esm/StateMachine/UCs/DuplicateStateUC.js.map +1 -1
- package/dist/esm/StateMachine/UCs/SavePersistentStates.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/Assets/UCs/GetAssetBlobURLUC.d.ts.map +1 -1
- package/dist/types/Cache/Controllers/clearCache.d.ts +3 -0
- package/dist/types/Cache/Controllers/clearCache.d.ts.map +1 -0
- package/dist/types/Cache/Controllers/index.d.ts +2 -0
- package/dist/types/Cache/Controllers/index.d.ts.map +1 -0
- package/dist/types/Cache/Entities/AssetCacheEntity.d.ts +43 -0
- package/dist/types/Cache/Entities/AssetCacheEntity.d.ts.map +1 -0
- package/dist/types/Cache/Entities/CacheEntity.d.ts +57 -0
- package/dist/types/Cache/Entities/CacheEntity.d.ts.map +1 -0
- package/dist/types/Cache/Entities/ScriptCacheEntity.d.ts +64 -0
- package/dist/types/Cache/Entities/ScriptCacheEntity.d.ts.map +1 -0
- package/dist/types/Cache/Entities/index.d.ts +9 -0
- package/dist/types/Cache/Entities/index.d.ts.map +1 -0
- package/dist/types/Cache/Factories/index.d.ts +2 -0
- package/dist/types/Cache/Factories/index.d.ts.map +1 -0
- package/dist/types/Cache/Factories/setupCache.d.ts +6 -0
- package/dist/types/Cache/Factories/setupCache.d.ts.map +1 -0
- package/dist/types/Cache/Mocks/MockCacheEntity.d.ts +13 -0
- package/dist/types/Cache/Mocks/MockCacheEntity.d.ts.map +1 -0
- package/dist/types/Cache/Mocks/MockGetAssetFromCacheUC.d.ts +8 -0
- package/dist/types/Cache/Mocks/MockGetAssetFromCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/Mocks/MockGetScriptFromCacheUC.d.ts +9 -0
- package/dist/types/Cache/Mocks/MockGetScriptFromCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/Mocks/MockStoreAssetInCacheUC.d.ts +8 -0
- package/dist/types/Cache/Mocks/MockStoreAssetInCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/Mocks/MockStoreScriptInCacheUC.d.ts +9 -0
- package/dist/types/Cache/Mocks/MockStoreScriptInCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/Mocks/index.d.ts +6 -0
- package/dist/types/Cache/Mocks/index.d.ts.map +1 -0
- package/dist/types/Cache/UCs/GetAssetFromCacheUC.d.ts +8 -0
- package/dist/types/Cache/UCs/GetAssetFromCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/UCs/GetScriptFromCacheUC.d.ts +13 -0
- package/dist/types/Cache/UCs/GetScriptFromCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/UCs/StoreAssetInCacheUC.d.ts +8 -0
- package/dist/types/Cache/UCs/StoreAssetInCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/UCs/StoreScriptInCacheUC.d.ts +13 -0
- package/dist/types/Cache/UCs/StoreScriptInCacheUC.d.ts.map +1 -0
- package/dist/types/Cache/UCs/index.d.ts +10 -0
- package/dist/types/Cache/UCs/index.d.ts.map +1 -0
- package/dist/types/Cache/index.d.ts +5 -0
- package/dist/types/Cache/index.d.ts.map +1 -0
- package/dist/types/StateMachine/Entities/HostEditingStateEntity.d.ts +42 -0
- package/dist/types/StateMachine/Entities/HostEditingStateEntity.d.ts.map +1 -1
- package/dist/types/StateMachine/Entities/HostStateEntity.d.ts +72 -5
- package/dist/types/StateMachine/Entities/HostStateEntity.d.ts.map +1 -1
- package/dist/types/StateMachine/Entities/HostStateMachine.d.ts +77 -0
- package/dist/types/StateMachine/Entities/HostStateMachine.d.ts.map +1 -1
- package/dist/types/StateMachine/Mocks/MockHostStateEntity.d.ts +2 -1
- package/dist/types/StateMachine/Mocks/MockHostStateEntity.d.ts.map +1 -1
- package/dist/types/StateMachine/PMs/HostStatePM.d.ts +2 -0
- package/dist/types/StateMachine/PMs/HostStatePM.d.ts.map +1 -1
- package/dist/types/StateMachine/UCs/SavePersistentStates.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { AppObjectEntity, getSingletonComponent } from "@vived/core";
|
|
2
|
+
import { CacheEntity } from "./CacheEntity";
|
|
3
|
+
/**
|
|
4
|
+
* Entity responsible for managing script caching operations.
|
|
5
|
+
* Provides functionality to store, retrieve, check existence, and invalidate scripts
|
|
6
|
+
* in the cache based on app ID, version, and script path.
|
|
7
|
+
*/
|
|
8
|
+
export class ScriptCacheEntity extends AppObjectEntity {
|
|
9
|
+
/**
|
|
10
|
+
* Gets the singleton ScriptCacheEntity instance from the AppObjectRepo.
|
|
11
|
+
* @param appObjects - Repository of application objects
|
|
12
|
+
* @returns ScriptCacheEntity instance if registered, undefined otherwise
|
|
13
|
+
*/
|
|
14
|
+
static get(appObjects) {
|
|
15
|
+
return getSingletonComponent(ScriptCacheEntity.type, appObjects);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
ScriptCacheEntity.type = "ScriptCacheEntity";
|
|
19
|
+
/**
|
|
20
|
+
* Factory function to create a new ScriptCacheEntity instance.
|
|
21
|
+
* @param appObject - The parent AppObject
|
|
22
|
+
* @returns A new ScriptCacheEntity instance
|
|
23
|
+
*/
|
|
24
|
+
export function makeScriptCacheEntity(appObject) {
|
|
25
|
+
return new ScriptCacheEntityImp(appObject);
|
|
26
|
+
}
|
|
27
|
+
class ScriptCacheEntityImp extends ScriptCacheEntity {
|
|
28
|
+
get cacheEntity() {
|
|
29
|
+
return this.getCachedSingleton(CacheEntity.type);
|
|
30
|
+
}
|
|
31
|
+
constructor(appObject) {
|
|
32
|
+
super(appObject, ScriptCacheEntity.type);
|
|
33
|
+
this.appObjects.registerSingleton(this);
|
|
34
|
+
}
|
|
35
|
+
async getScript(appId, version, scriptPath) {
|
|
36
|
+
const cacheKey = this.generateCacheKey(appId, version, scriptPath);
|
|
37
|
+
const cacheEntity = this.cacheEntity;
|
|
38
|
+
if (!cacheEntity) {
|
|
39
|
+
this.warn("CacheEntity not found");
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const { value } = await cacheEntity.get(cacheKey);
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async storeScript(appId, version, scriptPath, content) {
|
|
51
|
+
const cacheKey = this.generateCacheKey(appId, version, scriptPath);
|
|
52
|
+
const cacheEntity = this.cacheEntity;
|
|
53
|
+
if (!cacheEntity) {
|
|
54
|
+
this.warn("CacheEntity not found");
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const metadata = {
|
|
58
|
+
appId,
|
|
59
|
+
version,
|
|
60
|
+
scriptPath,
|
|
61
|
+
timestamp: Date.now()
|
|
62
|
+
};
|
|
63
|
+
await cacheEntity.store(cacheKey, content, metadata);
|
|
64
|
+
}
|
|
65
|
+
async hasScript(appId, version, scriptPath) {
|
|
66
|
+
const cacheKey = this.generateCacheKey(appId, version, scriptPath);
|
|
67
|
+
const cacheEntity = this.cacheEntity;
|
|
68
|
+
if (!cacheEntity) {
|
|
69
|
+
this.warn("CacheEntity not found");
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return await cacheEntity.has(cacheKey);
|
|
73
|
+
}
|
|
74
|
+
async invalidateScript(appId, version, scriptPath) {
|
|
75
|
+
const cacheEntity = this.cacheEntity;
|
|
76
|
+
if (!cacheEntity) {
|
|
77
|
+
this.warn("CacheEntity not found");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// If all parameters are provided, invalidate a specific script
|
|
81
|
+
if (appId && version && scriptPath) {
|
|
82
|
+
const cacheKey = this.generateCacheKey(appId, version, scriptPath);
|
|
83
|
+
await cacheEntity.invalidate(cacheKey);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// For now, in our implementation we're just using a simple approach
|
|
87
|
+
// where we only invalidate the specific script or app+version combination
|
|
88
|
+
// A more sophisticated approach would be to iterate through all cache entries
|
|
89
|
+
// and check metadata, but that would require extra cache entity functionality
|
|
90
|
+
// For this simplified implementation, we only support full invalidation
|
|
91
|
+
// and specific script invalidation (all 3 parameters)
|
|
92
|
+
if (!version && !scriptPath) {
|
|
93
|
+
this.warn("Partial invalidation not fully implemented");
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
extractScriptInfo(url) {
|
|
98
|
+
try {
|
|
99
|
+
// Parse URL to extract components
|
|
100
|
+
const urlObj = new URL(url);
|
|
101
|
+
const pathSegments = urlObj.pathname.split("/");
|
|
102
|
+
// Find 'apps' segment index
|
|
103
|
+
const appsIndex = pathSegments.findIndex((segment) => segment === "apps");
|
|
104
|
+
if (appsIndex === -1 || appsIndex + 2 >= pathSegments.length) {
|
|
105
|
+
throw new Error(`Invalid app URL format: ${url}`);
|
|
106
|
+
}
|
|
107
|
+
// Extract app ID, version, and path
|
|
108
|
+
const appId = pathSegments[appsIndex + 1];
|
|
109
|
+
const version = pathSegments[appsIndex + 2];
|
|
110
|
+
// Extract script path (everything after the version segment)
|
|
111
|
+
const scriptPathSegments = pathSegments.slice(appsIndex + 3);
|
|
112
|
+
const scriptPath = scriptPathSegments.join("/");
|
|
113
|
+
return {
|
|
114
|
+
appId,
|
|
115
|
+
version,
|
|
116
|
+
scriptPath
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
this.error(`Failed to extract script info from URL: ${url}`);
|
|
121
|
+
return {
|
|
122
|
+
appId: "unknown",
|
|
123
|
+
version: "unknown",
|
|
124
|
+
scriptPath: "unknown"
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
generateCacheKey(appId, version, scriptPath) {
|
|
129
|
+
return `script:${appId}:${version}:${scriptPath}`;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=ScriptCacheEntity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptCacheEntity.js","sourceRoot":"","sources":["../../../../src/Cache/Entities/ScriptCacheEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { CacheEntity } from \"./CacheEntity\";\r\n\r\n/**\r\n * Entity responsible for managing script caching operations.\r\n * Provides functionality to store, retrieve, check existence, and invalidate scripts\r\n * in the cache based on app ID, version, and script path.\r\n */\r\nexport abstract class ScriptCacheEntity extends AppObjectEntity {\r\n static readonly type = \"ScriptCacheEntity\";\r\n\r\n /**\r\n * Retrieves a script from the cache.\r\n * @param appId - Unique identifier of the app\r\n * @param version - Version of the app\r\n * @param scriptPath - Path of the script within the app\r\n * @returns Promise with the script content if found, undefined otherwise\r\n */\r\n abstract getScript(\r\n appId: string,\r\n version: string,\r\n scriptPath: string\r\n ): Promise<string | undefined>;\r\n\r\n /**\r\n * Stores a script in the cache.\r\n * @param appId - Unique identifier of the app\r\n * @param version - Version of the app\r\n * @param scriptPath - Path of the script within the app\r\n * @param content - Content of the script to store\r\n */\r\n abstract storeScript(\r\n appId: string,\r\n version: string,\r\n scriptPath: string,\r\n content: string\r\n ): Promise<void>;\r\n\r\n /**\r\n * Checks if a script exists in the cache.\r\n * @param appId - Unique identifier of the app\r\n * @param version - Version of the app\r\n * @param scriptPath - Path of the script within the app\r\n * @returns Promise resolving to true if script exists, false otherwise\r\n */\r\n abstract hasScript(\r\n appId: string,\r\n version: string,\r\n scriptPath: string\r\n ): Promise<boolean>;\r\n\r\n /**\r\n * Invalidates scripts in the cache.\r\n * Can invalidate a specific script, all scripts for a version, or all scripts for an app.\r\n * @param appId - Unique identifier of the app\r\n * @param version - Optional version of the app\r\n * @param scriptPath - Optional path of the script within the app\r\n */\r\n abstract invalidateScript(\r\n appId: string,\r\n version?: string,\r\n scriptPath?: string\r\n ): Promise<void>;\r\n\r\n /**\r\n * Extracts app ID, version, and script path from a script URL.\r\n * @param url - The URL to parse\r\n * @returns Object containing extracted appId, version, and scriptPath\r\n */\r\n abstract extractScriptInfo(url: string): {\r\n appId: string;\r\n version: string;\r\n scriptPath: string;\r\n };\r\n\r\n /**\r\n * Gets the singleton ScriptCacheEntity instance from the AppObjectRepo.\r\n * @param appObjects - Repository of application objects\r\n * @returns ScriptCacheEntity instance if registered, undefined otherwise\r\n */\r\n static get(appObjects: AppObjectRepo): ScriptCacheEntity | undefined {\r\n return getSingletonComponent<ScriptCacheEntity>(\r\n ScriptCacheEntity.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new ScriptCacheEntity instance.\r\n * @param appObject - The parent AppObject\r\n * @returns A new ScriptCacheEntity instance\r\n */\r\nexport function makeScriptCacheEntity(appObject: AppObject): ScriptCacheEntity {\r\n return new ScriptCacheEntityImp(appObject);\r\n}\r\n\r\ntype CacheMetadata = {\r\n appId: string;\r\n version: string;\r\n scriptPath: string;\r\n timestamp: number;\r\n};\r\n\r\nclass ScriptCacheEntityImp extends ScriptCacheEntity {\r\n private get cacheEntity(): CacheEntity | undefined {\r\n return this.getCachedSingleton<CacheEntity>(CacheEntity.type);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ScriptCacheEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n\r\n async getScript(\r\n appId: string,\r\n version: string,\r\n scriptPath: string\r\n ): Promise<string | undefined> {\r\n const cacheKey = this.generateCacheKey(appId, version, scriptPath);\r\n\r\n const cacheEntity = this.cacheEntity;\r\n if (!cacheEntity) {\r\n this.warn(\"CacheEntity not found\");\r\n return undefined;\r\n }\r\n\r\n try {\r\n const { value } = await cacheEntity.get(cacheKey);\r\n return value as string;\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n async storeScript(\r\n appId: string,\r\n version: string,\r\n scriptPath: string,\r\n content: string\r\n ): Promise<void> {\r\n const cacheKey = this.generateCacheKey(appId, version, scriptPath);\r\n\r\n const cacheEntity = this.cacheEntity;\r\n if (!cacheEntity) {\r\n this.warn(\"CacheEntity not found\");\r\n return;\r\n }\r\n\r\n const metadata: CacheMetadata = {\r\n appId,\r\n version,\r\n scriptPath,\r\n timestamp: Date.now()\r\n };\r\n\r\n await cacheEntity.store(cacheKey, content, metadata);\r\n }\r\n\r\n async hasScript(\r\n appId: string,\r\n version: string,\r\n scriptPath: string\r\n ): Promise<boolean> {\r\n const cacheKey = this.generateCacheKey(appId, version, scriptPath);\r\n\r\n const cacheEntity = this.cacheEntity;\r\n if (!cacheEntity) {\r\n this.warn(\"CacheEntity not found\");\r\n return false;\r\n }\r\n\r\n return await cacheEntity.has(cacheKey);\r\n }\r\n\r\n async invalidateScript(\r\n appId: string,\r\n version?: string,\r\n scriptPath?: string\r\n ): Promise<void> {\r\n const cacheEntity = this.cacheEntity;\r\n if (!cacheEntity) {\r\n this.warn(\"CacheEntity not found\");\r\n return;\r\n }\r\n\r\n // If all parameters are provided, invalidate a specific script\r\n if (appId && version && scriptPath) {\r\n const cacheKey = this.generateCacheKey(appId, version, scriptPath);\r\n await cacheEntity.invalidate(cacheKey);\r\n return;\r\n }\r\n\r\n // For now, in our implementation we're just using a simple approach\r\n // where we only invalidate the specific script or app+version combination\r\n // A more sophisticated approach would be to iterate through all cache entries\r\n // and check metadata, but that would require extra cache entity functionality\r\n\r\n // For this simplified implementation, we only support full invalidation\r\n // and specific script invalidation (all 3 parameters)\r\n if (!version && !scriptPath) {\r\n this.warn(\"Partial invalidation not fully implemented\");\r\n return;\r\n }\r\n }\r\n\r\n extractScriptInfo(url: string): {\r\n appId: string;\r\n version: string;\r\n scriptPath: string;\r\n } {\r\n try {\r\n // Parse URL to extract components\r\n const urlObj = new URL(url);\r\n const pathSegments = urlObj.pathname.split(\"/\");\r\n\r\n // Find 'apps' segment index\r\n const appsIndex = pathSegments.findIndex((segment) => segment === \"apps\");\r\n\r\n if (appsIndex === -1 || appsIndex + 2 >= pathSegments.length) {\r\n throw new Error(`Invalid app URL format: ${url}`);\r\n }\r\n\r\n // Extract app ID, version, and path\r\n const appId = pathSegments[appsIndex + 1];\r\n const version = pathSegments[appsIndex + 2];\r\n\r\n // Extract script path (everything after the version segment)\r\n const scriptPathSegments = pathSegments.slice(appsIndex + 3);\r\n const scriptPath = scriptPathSegments.join(\"/\");\r\n\r\n return {\r\n appId,\r\n version,\r\n scriptPath\r\n };\r\n } catch (e) {\r\n this.error(`Failed to extract script info from URL: ${url}`);\r\n return {\r\n appId: \"unknown\",\r\n version: \"unknown\",\r\n scriptPath: \"unknown\"\r\n };\r\n }\r\n }\r\n\r\n private generateCacheKey(\r\n appId: string,\r\n version: string,\r\n scriptPath: string\r\n ): string {\r\n return `script:${appId}:${version}:${scriptPath}`;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Cache/Entities/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC","sourcesContent":["/**\r\n * Cache Entities\r\n *\r\n * Core domain models for the Cache feature\r\n */\r\n\r\nexport * from \"./CacheEntity\";\r\nexport * from \"./ScriptCacheEntity\";\r\nexport * from \"./AssetCacheEntity\";\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Cache/Factories/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA","sourcesContent":["\r\nexport * from \"./setupCache\""]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { makeScriptCacheEntity } from "../Entities/ScriptCacheEntity";
|
|
2
|
+
import { makeCacheEntity } from "../Entities/CacheEntity";
|
|
3
|
+
import { makeAssetCacheEntity } from "../Entities/AssetCacheEntity";
|
|
4
|
+
import { makeGetScriptFromCacheUC } from "../UCs/GetScriptFromCacheUC";
|
|
5
|
+
import { makeStoreScriptInCacheUC } from "../UCs/StoreScriptInCacheUC";
|
|
6
|
+
import { makeGetAssetFromCacheUC } from "../UCs/GetAssetFromCacheUC";
|
|
7
|
+
import { makeStoreAssetInCacheUC } from "../UCs/StoreAssetInCacheUC";
|
|
8
|
+
/**
|
|
9
|
+
* Sets up the Cache feature components
|
|
10
|
+
*/
|
|
11
|
+
export function setupCache(appObjects) {
|
|
12
|
+
// Create Cache Entity app object
|
|
13
|
+
const cacheEntityAO = appObjects.getOrCreate("Cache");
|
|
14
|
+
// Create entities
|
|
15
|
+
makeCacheEntity(cacheEntityAO);
|
|
16
|
+
makeScriptCacheEntity(cacheEntityAO);
|
|
17
|
+
makeAssetCacheEntity(cacheEntityAO);
|
|
18
|
+
// Create use cases
|
|
19
|
+
makeGetScriptFromCacheUC(cacheEntityAO);
|
|
20
|
+
makeStoreScriptInCacheUC(cacheEntityAO);
|
|
21
|
+
makeGetAssetFromCacheUC(cacheEntityAO);
|
|
22
|
+
makeStoreAssetInCacheUC(cacheEntityAO);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=setupCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupCache.js","sourceRoot":"","sources":["../../../../src/Cache/Factories/setupCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,UAAyB;IAClD,iCAAiC;IACjC,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtD,kBAAkB;IAClB,eAAe,CAAC,aAAa,CAAC,CAAC;IAC/B,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACrC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAEpC,mBAAmB;IACnB,wBAAwB,CAAC,aAAa,CAAC,CAAC;IACxC,wBAAwB,CAAC,aAAa,CAAC,CAAC;IACxC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACvC,uBAAuB,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { makeScriptCacheEntity } from \"../Entities/ScriptCacheEntity\";\r\nimport { makeCacheEntity } from \"../Entities/CacheEntity\";\r\nimport { makeAssetCacheEntity } from \"../Entities/AssetCacheEntity\";\r\nimport { makeGetScriptFromCacheUC } from \"../UCs/GetScriptFromCacheUC\";\r\nimport { makeStoreScriptInCacheUC } from \"../UCs/StoreScriptInCacheUC\";\r\nimport { makeGetAssetFromCacheUC } from \"../UCs/GetAssetFromCacheUC\";\r\nimport { makeStoreAssetInCacheUC } from \"../UCs/StoreAssetInCacheUC\";\r\n\r\n/**\r\n * Sets up the Cache feature components\r\n */\r\nexport function setupCache(appObjects: AppObjectRepo): void {\r\n // Create Cache Entity app object\r\n const cacheEntityAO = appObjects.getOrCreate(\"Cache\");\r\n\r\n // Create entities\r\n makeCacheEntity(cacheEntityAO);\r\n makeScriptCacheEntity(cacheEntityAO);\r\n makeAssetCacheEntity(cacheEntityAO);\r\n\r\n // Create use cases\r\n makeGetScriptFromCacheUC(cacheEntityAO);\r\n makeStoreScriptInCacheUC(cacheEntityAO);\r\n makeGetAssetFromCacheUC(cacheEntityAO);\r\n makeStoreAssetInCacheUC(cacheEntityAO);\r\n}\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CacheEntity } from "../Entities/CacheEntity";
|
|
2
|
+
export class MockCacheEntity extends CacheEntity {
|
|
3
|
+
constructor(appObject) {
|
|
4
|
+
super(appObject, CacheEntity.type);
|
|
5
|
+
this.get = jest.fn().mockResolvedValue({ value: "mockValue" });
|
|
6
|
+
this.store = jest.fn().mockResolvedValue(undefined);
|
|
7
|
+
this.has = jest.fn().mockResolvedValue(true);
|
|
8
|
+
this.invalidate = jest.fn().mockResolvedValue(undefined);
|
|
9
|
+
this.clear = jest.fn().mockResolvedValue(undefined);
|
|
10
|
+
this.size = jest.fn().mockResolvedValue(0);
|
|
11
|
+
this.appObjects.registerSingleton(this);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function makeMockCacheEntity(appObjects) {
|
|
15
|
+
return new MockCacheEntity(appObjects.getOrCreate("MockCacheEntity"));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=MockCacheEntity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockCacheEntity.js","sourceRoot":"","sources":["../../../../src/Cache/Mocks/MockCacheEntity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAQ9C,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QARrC,QAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1D,UAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,QAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,eAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACpD,UAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,SAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAIpC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAyB;IAC3D,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { CacheEntity } from \"../Entities/CacheEntity\";\r\n\r\nexport class MockCacheEntity extends CacheEntity {\r\n get = jest.fn().mockResolvedValue({ value: \"mockValue\" });\r\n store = jest.fn().mockResolvedValue(undefined);\r\n has = jest.fn().mockResolvedValue(true);\r\n invalidate = jest.fn().mockResolvedValue(undefined);\r\n clear = jest.fn().mockResolvedValue(undefined);\r\n size = jest.fn().mockResolvedValue(0);\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, CacheEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n\r\nexport function makeMockCacheEntity(appObjects: AppObjectRepo) {\r\n return new MockCacheEntity(appObjects.getOrCreate(\"MockCacheEntity\"));\r\n}\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GetAssetFromCacheUC } from "../UCs/GetAssetFromCacheUC";
|
|
2
|
+
export class MockGetAssetFromCacheUC extends GetAssetFromCacheUC {
|
|
3
|
+
constructor(appObject) {
|
|
4
|
+
super(appObject, GetAssetFromCacheUC.type);
|
|
5
|
+
this.getAsset = jest
|
|
6
|
+
.fn()
|
|
7
|
+
.mockResolvedValue(new Blob(["mock content"], { type: "text/plain" }));
|
|
8
|
+
this.appObjects.registerSingleton(this);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function makeMockGetAssetFromCacheUC(appObjects) {
|
|
12
|
+
return new MockGetAssetFromCacheUC(appObjects.getOrCreate("MockGetAssetFromCacheUC"));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=MockGetAssetFromCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockGetAssetFromCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/Mocks/MockGetAssetFromCacheUC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAK9D,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAL7C,aAAQ,GAAG,IAAI;aACZ,EAAE,EAAE;aACJ,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAIvE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAyB;IACnE,OAAO,IAAI,uBAAuB,CAChC,UAAU,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAClD,CAAC;AACJ,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { GetAssetFromCacheUC } from \"../UCs/GetAssetFromCacheUC\";\r\n\r\nexport class MockGetAssetFromCacheUC extends GetAssetFromCacheUC {\r\n getAsset = jest\r\n .fn()\r\n .mockResolvedValue(new Blob([\"mock content\"], { type: \"text/plain\" }));\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetAssetFromCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n\r\nexport function makeMockGetAssetFromCacheUC(appObjects: AppObjectRepo) {\r\n return new MockGetAssetFromCacheUC(\r\n appObjects.getOrCreate(\"MockGetAssetFromCacheUC\")\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { GetScriptFromCacheUC } from "../UCs/GetScriptFromCacheUC";
|
|
2
|
+
export class MockGetScriptFromCacheUC extends GetScriptFromCacheUC {
|
|
3
|
+
constructor(appObject) {
|
|
4
|
+
super(appObject, GetScriptFromCacheUC.type);
|
|
5
|
+
this.getScript = jest.fn().mockResolvedValue("const mockScript = 'test';");
|
|
6
|
+
this.extractScriptInfo = jest.fn().mockReturnValue({
|
|
7
|
+
appId: "mockAppId",
|
|
8
|
+
version: "mockVersion",
|
|
9
|
+
scriptPath: "mockScriptPath"
|
|
10
|
+
});
|
|
11
|
+
this.appObjects.registerSingleton(this);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function makeMockGetScriptFromCacheUC(appObjects) {
|
|
15
|
+
return new MockGetScriptFromCacheUC(appObjects.getOrCreate("MockGetScriptFromCacheUC"));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=MockGetScriptFromCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockGetScriptFromCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/Mocks/MockGetScriptFromCacheUC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAQhE,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAR9C,cAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;QACtE,sBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;YAC5C,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,gBAAgB;SAC7B,CAAC,CAAC;QAID,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B,CAAC,UAAyB;IACpE,OAAO,IAAI,wBAAwB,CACjC,UAAU,CAAC,WAAW,CAAC,0BAA0B,CAAC,CACnD,CAAC;AACJ,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { GetScriptFromCacheUC } from \"../UCs/GetScriptFromCacheUC\";\r\n\r\nexport class MockGetScriptFromCacheUC extends GetScriptFromCacheUC {\r\n getScript = jest.fn().mockResolvedValue(\"const mockScript = 'test';\");\r\n extractScriptInfo = jest.fn().mockReturnValue({\r\n appId: \"mockAppId\",\r\n version: \"mockVersion\",\r\n scriptPath: \"mockScriptPath\"\r\n });\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetScriptFromCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n\r\nexport function makeMockGetScriptFromCacheUC(appObjects: AppObjectRepo) {\r\n return new MockGetScriptFromCacheUC(\r\n appObjects.getOrCreate(\"MockGetScriptFromCacheUC\")\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StoreAssetInCacheUC } from "../UCs/StoreAssetInCacheUC";
|
|
2
|
+
export class MockStoreAssetInCacheUC extends StoreAssetInCacheUC {
|
|
3
|
+
constructor(appObject) {
|
|
4
|
+
super(appObject, StoreAssetInCacheUC.type);
|
|
5
|
+
this.storeAsset = jest.fn().mockResolvedValue(undefined);
|
|
6
|
+
this.appObjects.registerSingleton(this);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function makeMockStoreAssetInCacheUC(appObjects) {
|
|
10
|
+
return new MockStoreAssetInCacheUC(appObjects.getOrCreate("MockStoreAssetInCacheUC"));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=MockStoreAssetInCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockStoreAssetInCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/Mocks/MockStoreAssetInCacheUC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAG9D,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAH7C,eAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAIlD,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAyB;IACnE,OAAO,IAAI,uBAAuB,CAChC,UAAU,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAClD,CAAC;AACJ,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { StoreAssetInCacheUC } from \"../UCs/StoreAssetInCacheUC\";\r\n\r\nexport class MockStoreAssetInCacheUC extends StoreAssetInCacheUC {\r\n storeAsset = jest.fn().mockResolvedValue(undefined);\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, StoreAssetInCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n\r\nexport function makeMockStoreAssetInCacheUC(appObjects: AppObjectRepo) {\r\n return new MockStoreAssetInCacheUC(\r\n appObjects.getOrCreate(\"MockStoreAssetInCacheUC\")\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StoreScriptInCacheUC } from "../UCs/StoreScriptInCacheUC";
|
|
2
|
+
export class MockStoreScriptInCacheUC extends StoreScriptInCacheUC {
|
|
3
|
+
constructor(appObject) {
|
|
4
|
+
super(appObject, StoreScriptInCacheUC.type);
|
|
5
|
+
this.storeScript = jest.fn().mockResolvedValue(undefined);
|
|
6
|
+
this.extractScriptInfo = jest.fn().mockReturnValue({
|
|
7
|
+
appId: "mockAppId",
|
|
8
|
+
version: "mockVersion",
|
|
9
|
+
scriptPath: "mockScriptPath"
|
|
10
|
+
});
|
|
11
|
+
this.appObjects.registerSingleton(this);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function makeMockStoreScriptInCacheUC(appObjects) {
|
|
15
|
+
return new MockStoreScriptInCacheUC(appObjects.getOrCreate("MockStoreScriptInCacheUC"));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=MockStoreScriptInCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockStoreScriptInCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/Mocks/MockStoreScriptInCacheUC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAQhE,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAR9C,gBAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrD,sBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;YAC5C,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,gBAAgB;SAC7B,CAAC,CAAC;QAID,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B,CAAC,UAAyB;IACpE,OAAO,IAAI,wBAAwB,CACjC,UAAU,CAAC,WAAW,CAAC,0BAA0B,CAAC,CACnD,CAAC;AACJ,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { StoreScriptInCacheUC } from \"../UCs/StoreScriptInCacheUC\";\r\n\r\nexport class MockStoreScriptInCacheUC extends StoreScriptInCacheUC {\r\n storeScript = jest.fn().mockResolvedValue(undefined);\r\n extractScriptInfo = jest.fn().mockReturnValue({\r\n appId: \"mockAppId\",\r\n version: \"mockVersion\",\r\n scriptPath: \"mockScriptPath\"\r\n });\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, StoreScriptInCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n\r\nexport function makeMockStoreScriptInCacheUC(appObjects: AppObjectRepo) {\r\n return new MockStoreScriptInCacheUC(\r\n appObjects.getOrCreate(\"MockStoreScriptInCacheUC\")\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Cache/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC","sourcesContent":["export * from \"./MockCacheEntity\";\r\nexport * from \"./MockGetAssetFromCacheUC\";\r\nexport * from \"./MockGetScriptFromCacheUC\";\r\nexport * from \"./MockStoreAssetInCacheUC\";\r\nexport * from \"./MockStoreScriptInCacheUC\";\r\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AppObjectUC, getSingletonComponent } from "@vived/core";
|
|
2
|
+
import { AssetCacheEntity } from "../Entities/AssetCacheEntity";
|
|
3
|
+
export class GetAssetFromCacheUC extends AppObjectUC {
|
|
4
|
+
static get(appObjects) {
|
|
5
|
+
return getSingletonComponent(GetAssetFromCacheUC.type, appObjects);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
GetAssetFromCacheUC.type = "GetAssetFromCacheUC";
|
|
9
|
+
export function makeGetAssetFromCacheUC(appObject) {
|
|
10
|
+
return new GetAssetFromCacheUCImp(appObject);
|
|
11
|
+
}
|
|
12
|
+
class GetAssetFromCacheUCImp extends GetAssetFromCacheUC {
|
|
13
|
+
get assetCacheEntity() {
|
|
14
|
+
return this.getCachedSingleton(AssetCacheEntity.type);
|
|
15
|
+
}
|
|
16
|
+
async getAsset(assetId) {
|
|
17
|
+
const assetCache = this.assetCacheEntity;
|
|
18
|
+
if (!assetCache) {
|
|
19
|
+
this.warn("AssetCacheEntity not found");
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
return await assetCache.getAsset(assetId);
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
this.warn(`Error retrieving asset from cache for ID: ${assetId}`);
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
constructor(appObject) {
|
|
31
|
+
super(appObject, GetAssetFromCacheUC.type);
|
|
32
|
+
this.appObjects.registerSingleton(this);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=GetAssetFromCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetAssetFromCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/UCs/GetAssetFromCacheUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,mBAAoB,SAAQ,WAAW;IAK3D,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;;AANe,wBAAI,GAAG,qBAAqB,CAAC;AAS/C,MAAM,UAAU,uBAAuB,CACrC,SAAoB;IAEpB,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,sBAAuB,SAAQ,mBAAmB;IACtD,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,6CAA6C,OAAO,EAAE,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { AssetCacheEntity } from \"../Entities/AssetCacheEntity\";\r\n\r\nexport abstract class GetAssetFromCacheUC extends AppObjectUC {\r\n static readonly type = \"GetAssetFromCacheUC\";\r\n\r\n abstract getAsset(assetId: string): Promise<Blob | undefined>;\r\n\r\n static get(appObjects: AppObjectRepo): GetAssetFromCacheUC | undefined {\r\n return getSingletonComponent(GetAssetFromCacheUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeGetAssetFromCacheUC(\r\n appObject: AppObject\r\n): GetAssetFromCacheUC {\r\n return new GetAssetFromCacheUCImp(appObject);\r\n}\r\n\r\nclass GetAssetFromCacheUCImp extends GetAssetFromCacheUC {\r\n private get assetCacheEntity(): AssetCacheEntity | undefined {\r\n return this.getCachedSingleton<AssetCacheEntity>(AssetCacheEntity.type);\r\n }\r\n\r\n async getAsset(assetId: string): Promise<Blob | undefined> {\r\n const assetCache = this.assetCacheEntity;\r\n if (!assetCache) {\r\n this.warn(\"AssetCacheEntity not found\");\r\n return undefined;\r\n }\r\n\r\n try {\r\n return await assetCache.getAsset(assetId);\r\n } catch (e) {\r\n this.warn(`Error retrieving asset from cache for ID: ${assetId}`);\r\n return undefined;\r\n }\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetAssetFromCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { AppObjectUC, getSingletonComponent } from "@vived/core";
|
|
2
|
+
import { ScriptCacheEntity } from "../Entities/ScriptCacheEntity";
|
|
3
|
+
export class GetScriptFromCacheUC extends AppObjectUC {
|
|
4
|
+
static get(appObjects) {
|
|
5
|
+
return getSingletonComponent(GetScriptFromCacheUC.type, appObjects);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
GetScriptFromCacheUC.type = "GetScriptFromCacheUC";
|
|
9
|
+
export function makeGetScriptFromCacheUC(appObject) {
|
|
10
|
+
return new GetScriptFromCacheUCImp(appObject);
|
|
11
|
+
}
|
|
12
|
+
class GetScriptFromCacheUCImp extends GetScriptFromCacheUC {
|
|
13
|
+
get scriptCacheEntity() {
|
|
14
|
+
return this.getCachedSingleton(ScriptCacheEntity.type);
|
|
15
|
+
}
|
|
16
|
+
async getScript(url) {
|
|
17
|
+
const scriptCache = this.scriptCacheEntity;
|
|
18
|
+
if (!scriptCache) {
|
|
19
|
+
this.warn("ScriptCacheEntity not found");
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const { appId, version, scriptPath } = this.extractScriptInfo(url);
|
|
24
|
+
return await scriptCache.getScript(appId, version, scriptPath);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
this.warn(`Error retrieving script from cache for URL: ${url}`);
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
extractScriptInfo(url) {
|
|
32
|
+
const scriptCache = this.scriptCacheEntity;
|
|
33
|
+
if (!scriptCache) {
|
|
34
|
+
this.warn("ScriptCacheEntity not found");
|
|
35
|
+
return { appId: "unknown", version: "unknown", scriptPath: "unknown" };
|
|
36
|
+
}
|
|
37
|
+
return scriptCache.extractScriptInfo(url);
|
|
38
|
+
}
|
|
39
|
+
constructor(appObject) {
|
|
40
|
+
super(appObject, GetScriptFromCacheUC.type);
|
|
41
|
+
this.appObjects.registerSingleton(this);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=GetScriptFromCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetScriptFromCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/UCs/GetScriptFromCacheUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,OAAgB,oBAAqB,SAAQ,WAAW;IAU5D,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;;AAXe,yBAAI,GAAG,sBAAsB,CAAC;AAchD,MAAM,UAAU,wBAAwB,CACtC,SAAoB;IAEpB,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,uBAAwB,SAAQ,oBAAoB;IACxD,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAoB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACnE,OAAO,MAAM,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,+CAA+C,GAAG,EAAE,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,GAAW;QAK3B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzE,CAAC;QAED,OAAO,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { ScriptCacheEntity } from \"../Entities/ScriptCacheEntity\";\r\n\r\nexport abstract class GetScriptFromCacheUC extends AppObjectUC {\r\n static readonly type = \"GetScriptFromCacheUC\";\r\n\r\n abstract getScript(url: string): Promise<string | undefined>;\r\n abstract extractScriptInfo(url: string): {\r\n appId: string;\r\n version: string;\r\n scriptPath: string;\r\n };\r\n\r\n static get(appObjects: AppObjectRepo): GetScriptFromCacheUC | undefined {\r\n return getSingletonComponent(GetScriptFromCacheUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeGetScriptFromCacheUC(\r\n appObject: AppObject\r\n): GetScriptFromCacheUC {\r\n return new GetScriptFromCacheUCImp(appObject);\r\n}\r\n\r\nclass GetScriptFromCacheUCImp extends GetScriptFromCacheUC {\r\n private get scriptCacheEntity(): ScriptCacheEntity | undefined {\r\n return this.getCachedSingleton<ScriptCacheEntity>(ScriptCacheEntity.type);\r\n }\r\n\r\n async getScript(url: string): Promise<string | undefined> {\r\n const scriptCache = this.scriptCacheEntity;\r\n if (!scriptCache) {\r\n this.warn(\"ScriptCacheEntity not found\");\r\n return undefined;\r\n }\r\n\r\n try {\r\n const { appId, version, scriptPath } = this.extractScriptInfo(url);\r\n return await scriptCache.getScript(appId, version, scriptPath);\r\n } catch (e) {\r\n this.warn(`Error retrieving script from cache for URL: ${url}`);\r\n return undefined;\r\n }\r\n }\r\n\r\n extractScriptInfo(url: string): {\r\n appId: string;\r\n version: string;\r\n scriptPath: string;\r\n } {\r\n const scriptCache = this.scriptCacheEntity;\r\n if (!scriptCache) {\r\n this.warn(\"ScriptCacheEntity not found\");\r\n return { appId: \"unknown\", version: \"unknown\", scriptPath: \"unknown\" };\r\n }\r\n\r\n return scriptCache.extractScriptInfo(url);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, GetScriptFromCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AppObjectUC, getSingletonComponent } from "@vived/core";
|
|
2
|
+
import { AssetCacheEntity } from "../Entities/AssetCacheEntity";
|
|
3
|
+
export class StoreAssetInCacheUC extends AppObjectUC {
|
|
4
|
+
static get(appObjects) {
|
|
5
|
+
return getSingletonComponent(StoreAssetInCacheUC.type, appObjects);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
StoreAssetInCacheUC.type = "StoreAssetInCacheUC";
|
|
9
|
+
export function makeStoreAssetInCacheUC(appObject) {
|
|
10
|
+
return new StoreAssetInCacheUCImp(appObject);
|
|
11
|
+
}
|
|
12
|
+
class StoreAssetInCacheUCImp extends StoreAssetInCacheUC {
|
|
13
|
+
get assetCacheEntity() {
|
|
14
|
+
return this.getCachedSingleton(AssetCacheEntity.type);
|
|
15
|
+
}
|
|
16
|
+
async storeAsset(assetId, content, contentType) {
|
|
17
|
+
const assetCache = this.assetCacheEntity;
|
|
18
|
+
if (!assetCache) {
|
|
19
|
+
this.warn("AssetCacheEntity not found");
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
await assetCache.storeAsset(assetId, content, contentType);
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
this.warn(`Error storing asset in cache for ID: ${assetId}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
constructor(appObject) {
|
|
30
|
+
super(appObject, StoreAssetInCacheUC.type);
|
|
31
|
+
this.appObjects.registerSingleton(this);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=StoreAssetInCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreAssetInCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/UCs/StoreAssetInCacheUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,mBAAoB,SAAQ,WAAW;IAS3D,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;;AAVe,wBAAI,GAAG,qBAAqB,CAAC;AAa/C,MAAM,UAAU,uBAAuB,CACrC,SAAoB;IAEpB,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,sBAAuB,SAAQ,mBAAmB;IACtD,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,UAAU,CACd,OAAe,EACf,OAAa,EACb,WAAoB;QAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { AssetCacheEntity } from \"../Entities/AssetCacheEntity\";\r\n\r\nexport abstract class StoreAssetInCacheUC extends AppObjectUC {\r\n static readonly type = \"StoreAssetInCacheUC\";\r\n\r\n abstract storeAsset(\r\n assetId: string,\r\n content: Blob,\r\n contentType?: string\r\n ): Promise<void>;\r\n\r\n static get(appObjects: AppObjectRepo): StoreAssetInCacheUC | undefined {\r\n return getSingletonComponent(StoreAssetInCacheUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeStoreAssetInCacheUC(\r\n appObject: AppObject\r\n): StoreAssetInCacheUC {\r\n return new StoreAssetInCacheUCImp(appObject);\r\n}\r\n\r\nclass StoreAssetInCacheUCImp extends StoreAssetInCacheUC {\r\n private get assetCacheEntity(): AssetCacheEntity | undefined {\r\n return this.getCachedSingleton<AssetCacheEntity>(AssetCacheEntity.type);\r\n }\r\n\r\n async storeAsset(\r\n assetId: string,\r\n content: Blob,\r\n contentType?: string\r\n ): Promise<void> {\r\n const assetCache = this.assetCacheEntity;\r\n if (!assetCache) {\r\n this.warn(\"AssetCacheEntity not found\");\r\n return;\r\n }\r\n\r\n try {\r\n await assetCache.storeAsset(assetId, content, contentType);\r\n } catch (e) {\r\n this.warn(`Error storing asset in cache for ID: ${assetId}`);\r\n }\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, StoreAssetInCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AppObjectUC, getSingletonComponent } from "@vived/core";
|
|
2
|
+
import { ScriptCacheEntity } from "../Entities/ScriptCacheEntity";
|
|
3
|
+
export class StoreScriptInCacheUC extends AppObjectUC {
|
|
4
|
+
static get(appObjects) {
|
|
5
|
+
return getSingletonComponent(StoreScriptInCacheUC.type, appObjects);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
StoreScriptInCacheUC.type = "StoreScriptInCacheUC";
|
|
9
|
+
export function makeStoreScriptInCacheUC(appObject) {
|
|
10
|
+
return new StoreScriptInCacheUCImp(appObject);
|
|
11
|
+
}
|
|
12
|
+
class StoreScriptInCacheUCImp extends StoreScriptInCacheUC {
|
|
13
|
+
get scriptCacheEntity() {
|
|
14
|
+
return this.getCachedSingleton(ScriptCacheEntity.type);
|
|
15
|
+
}
|
|
16
|
+
async storeScript(url, content) {
|
|
17
|
+
const scriptCache = this.scriptCacheEntity;
|
|
18
|
+
if (!scriptCache) {
|
|
19
|
+
this.warn("ScriptCacheEntity not found");
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const { appId, version, scriptPath } = this.extractScriptInfo(url);
|
|
24
|
+
await scriptCache.storeScript(appId, version, scriptPath, content);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
this.warn(`Error storing script in cache for URL: ${url}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
extractScriptInfo(url) {
|
|
31
|
+
const scriptCache = this.scriptCacheEntity;
|
|
32
|
+
if (!scriptCache) {
|
|
33
|
+
this.warn("ScriptCacheEntity not found");
|
|
34
|
+
return { appId: "unknown", version: "unknown", scriptPath: "unknown" };
|
|
35
|
+
}
|
|
36
|
+
return scriptCache.extractScriptInfo(url);
|
|
37
|
+
}
|
|
38
|
+
constructor(appObject) {
|
|
39
|
+
super(appObject, StoreScriptInCacheUC.type);
|
|
40
|
+
this.appObjects.registerSingleton(this);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=StoreScriptInCacheUC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreScriptInCacheUC.js","sourceRoot":"","sources":["../../../../src/Cache/UCs/StoreScriptInCacheUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,OAAgB,oBAAqB,SAAQ,WAAW;IAU5D,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;;AAXe,yBAAI,GAAG,sBAAsB,CAAC;AAchD,MAAM,UAAU,wBAAwB,CACtC,SAAoB;IAEpB,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,uBAAwB,SAAQ,oBAAoB;IACxD,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAoB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,OAAe;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACnE,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,GAAW;QAK3B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACzE,CAAC;QAED,OAAO,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { ScriptCacheEntity } from \"../Entities/ScriptCacheEntity\";\r\n\r\nexport abstract class StoreScriptInCacheUC extends AppObjectUC {\r\n static readonly type = \"StoreScriptInCacheUC\";\r\n\r\n abstract storeScript(url: string, content: string): Promise<void>;\r\n abstract extractScriptInfo(url: string): {\r\n appId: string;\r\n version: string;\r\n scriptPath: string;\r\n };\r\n\r\n static get(appObjects: AppObjectRepo): StoreScriptInCacheUC | undefined {\r\n return getSingletonComponent(StoreScriptInCacheUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeStoreScriptInCacheUC(\r\n appObject: AppObject\r\n): StoreScriptInCacheUC {\r\n return new StoreScriptInCacheUCImp(appObject);\r\n}\r\n\r\nclass StoreScriptInCacheUCImp extends StoreScriptInCacheUC {\r\n private get scriptCacheEntity(): ScriptCacheEntity | undefined {\r\n return this.getCachedSingleton<ScriptCacheEntity>(ScriptCacheEntity.type);\r\n }\r\n\r\n async storeScript(url: string, content: string): Promise<void> {\r\n const scriptCache = this.scriptCacheEntity;\r\n if (!scriptCache) {\r\n this.warn(\"ScriptCacheEntity not found\");\r\n return;\r\n }\r\n\r\n try {\r\n const { appId, version, scriptPath } = this.extractScriptInfo(url);\r\n await scriptCache.storeScript(appId, version, scriptPath, content);\r\n } catch (e) {\r\n this.warn(`Error storing script in cache for URL: ${url}`);\r\n }\r\n }\r\n\r\n extractScriptInfo(url: string): {\r\n appId: string;\r\n version: string;\r\n scriptPath: string;\r\n } {\r\n const scriptCache = this.scriptCacheEntity;\r\n if (!scriptCache) {\r\n this.warn(\"ScriptCacheEntity not found\");\r\n return { appId: \"unknown\", version: \"unknown\", scriptPath: \"unknown\" };\r\n }\r\n\r\n return scriptCache.extractScriptInfo(url);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, StoreScriptInCacheUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Use Cases
|
|
3
|
+
*
|
|
4
|
+
* Implementation of specific cache operations
|
|
5
|
+
*/
|
|
6
|
+
export * from "./GetScriptFromCacheUC";
|
|
7
|
+
export * from "./StoreScriptInCacheUC";
|
|
8
|
+
export * from "./GetAssetFromCacheUC";
|
|
9
|
+
export * from "./StoreAssetInCacheUC";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Cache/UCs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC","sourcesContent":["/**\r\n * Cache Use Cases\r\n *\r\n * Implementation of specific cache operations\r\n */\r\n\r\nexport * from \"./GetScriptFromCacheUC\";\r\nexport * from \"./StoreScriptInCacheUC\";\r\nexport * from \"./GetAssetFromCacheUC\";\r\nexport * from \"./StoreAssetInCacheUC\";\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cache/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA","sourcesContent":["\r\nexport * from \"./Entities\"\r\nexport * from \"./Factories\"\r\nexport * from \"./Mocks\"\r\nexport * from \"./UCs\""]}
|