@mapvx/web-js 3.5.1 → 4.0.0-dev.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.
- package/README.md +6 -1
- package/dist/cjs/index.js +2 -95
- package/dist/cjs/index.js.LICENSE.txt +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/controllers/routeController.d.ts.map +1 -1
- package/dist/es/controllers/routeController.js +25 -8
- package/dist/es/controllers/routeController.js.map +1 -1
- package/dist/es/logger/sentry.js +1 -1
- package/dist/es/map/fitCamera.d.ts +7 -5
- package/dist/es/map/fitCamera.d.ts.map +1 -1
- package/dist/es/map/fitCamera.js +1 -1
- package/dist/es/map/fitCamera.js.map +1 -1
- package/dist/es/map/liveMapFitTransform.d.ts +104 -0
- package/dist/es/map/liveMapFitTransform.d.ts.map +1 -0
- package/dist/es/map/liveMapFitTransform.js +185 -0
- package/dist/es/map/liveMapFitTransform.js.map +1 -0
- package/dist/es/map/map.d.ts.map +1 -1
- package/dist/es/map/map.js +15 -7
- package/dist/es/map/map.js.map +1 -1
- package/dist/umd/index.js +1133 -117
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/styles.css +1 -1
- package/dist/umd/styles.css.map +1 -1
- package/package.json +7 -7
- package/dist/cjs/assets/icons.js +0 -85
- package/dist/cjs/assets/icons.js.map +0 -1
- package/dist/cjs/config/draco.js +0 -15
- package/dist/cjs/config/draco.js.map +0 -1
- package/dist/cjs/config/sdkConfig.js +0 -3
- package/dist/cjs/config/sdkConfig.js.map +0 -1
- package/dist/cjs/controllers/markerLayoutController.js +0 -359
- package/dist/cjs/controllers/markerLayoutController.js.map +0 -1
- package/dist/cjs/controllers/routeController.js +0 -1549
- package/dist/cjs/controllers/routeController.js.map +0 -1
- package/dist/cjs/domain/models/_internal.js +0 -14
- package/dist/cjs/domain/models/_internal.js.map +0 -1
- package/dist/cjs/domain/models/_rtl.js +0 -10
- package/dist/cjs/domain/models/_rtl.js.map +0 -1
- package/dist/cjs/domain/models/animation.js +0 -64
- package/dist/cjs/domain/models/animation.js.map +0 -1
- package/dist/cjs/domain/models/banner.js +0 -24
- package/dist/cjs/domain/models/banner.js.map +0 -1
- package/dist/cjs/domain/models/campaign.js +0 -73
- package/dist/cjs/domain/models/campaign.js.map +0 -1
- package/dist/cjs/domain/models/categories.js +0 -37
- package/dist/cjs/domain/models/categories.js.map +0 -1
- package/dist/cjs/domain/models/circle.js +0 -253
- package/dist/cjs/domain/models/circle.js.map +0 -1
- package/dist/cjs/domain/models/cityFilterOption.js +0 -3
- package/dist/cjs/domain/models/cityFilterOption.js.map +0 -1
- package/dist/cjs/domain/models/configuration.js +0 -3
- package/dist/cjs/domain/models/configuration.js.map +0 -1
- package/dist/cjs/domain/models/cssCustomization.js +0 -3
- package/dist/cjs/domain/models/cssCustomization.js.map +0 -1
- package/dist/cjs/domain/models/fitOptions.js +0 -3
- package/dist/cjs/domain/models/fitOptions.js.map +0 -1
- package/dist/cjs/domain/models/innerFloors.js +0 -3
- package/dist/cjs/domain/models/innerFloors.js.map +0 -1
- package/dist/cjs/domain/models/institution.js +0 -45
- package/dist/cjs/domain/models/institution.js.map +0 -1
- package/dist/cjs/domain/models/latLng.js +0 -3
- package/dist/cjs/domain/models/latLng.js.map +0 -1
- package/dist/cjs/domain/models/location.js +0 -3
- package/dist/cjs/domain/models/location.js.map +0 -1
- package/dist/cjs/domain/models/loggeable.js +0 -52
- package/dist/cjs/domain/models/loggeable.js.map +0 -1
- package/dist/cjs/domain/models/mapCamera.js +0 -3
- package/dist/cjs/domain/models/mapCamera.js.map +0 -1
- package/dist/cjs/domain/models/mapConfig.js +0 -37
- package/dist/cjs/domain/models/mapConfig.js.map +0 -1
- package/dist/cjs/domain/models/marker.js +0 -502
- package/dist/cjs/domain/models/marker.js.map +0 -1
- package/dist/cjs/domain/models/multilanguage.js +0 -17
- package/dist/cjs/domain/models/multilanguage.js.map +0 -1
- package/dist/cjs/domain/models/openingHours.js +0 -3
- package/dist/cjs/domain/models/openingHours.js.map +0 -1
- package/dist/cjs/domain/models/place.js +0 -127
- package/dist/cjs/domain/models/place.js.map +0 -1
- package/dist/cjs/domain/models/platform.js +0 -3
- package/dist/cjs/domain/models/platform.js.map +0 -1
- package/dist/cjs/domain/models/popover.js +0 -3
- package/dist/cjs/domain/models/popover.js.map +0 -1
- package/dist/cjs/domain/models/product.js +0 -3
- package/dist/cjs/domain/models/product.js.map +0 -1
- package/dist/cjs/domain/models/property.js +0 -104
- package/dist/cjs/domain/models/property.js.map +0 -1
- package/dist/cjs/domain/models/route.js +0 -166
- package/dist/cjs/domain/models/route.js.map +0 -1
- package/dist/cjs/domain/models/routeConfiguration.js +0 -82
- package/dist/cjs/domain/models/routeConfiguration.js.map +0 -1
- package/dist/cjs/domain/models/routeInstance.js +0 -30
- package/dist/cjs/domain/models/routeInstance.js.map +0 -1
- package/dist/cjs/domain/models/routeStyle.js +0 -3
- package/dist/cjs/domain/models/routeStyle.js.map +0 -1
- package/dist/cjs/domain/models/scene3D.js +0 -3
- package/dist/cjs/domain/models/scene3D.js.map +0 -1
- package/dist/cjs/domain/models/transport.js +0 -22
- package/dist/cjs/domain/models/transport.js.map +0 -1
- package/dist/cjs/domain/ports/ICache.js +0 -3
- package/dist/cjs/domain/ports/ICache.js.map +0 -1
- package/dist/cjs/domain/ports/IHttpClient.js +0 -3
- package/dist/cjs/domain/ports/IHttpClient.js.map +0 -1
- package/dist/cjs/domain/ports/ILogger.js +0 -23
- package/dist/cjs/domain/ports/ILogger.js.map +0 -1
- package/dist/cjs/domain/ports/index.js +0 -10
- package/dist/cjs/domain/ports/index.js.map +0 -1
- package/dist/cjs/infrastructure/cache/CacheManager.js +0 -258
- package/dist/cjs/infrastructure/cache/CacheManager.js.map +0 -1
- package/dist/cjs/infrastructure/cache/LRUCache.js +0 -153
- package/dist/cjs/infrastructure/cache/LRUCache.js.map +0 -1
- package/dist/cjs/infrastructure/cache/PersistentCache.js +0 -168
- package/dist/cjs/infrastructure/cache/PersistentCache.js.map +0 -1
- package/dist/cjs/infrastructure/cache/cacheConfig.js +0 -70
- package/dist/cjs/infrastructure/cache/cacheConfig.js.map +0 -1
- package/dist/cjs/infrastructure/http/FetchHttpClient.js +0 -75
- package/dist/cjs/infrastructure/http/FetchHttpClient.js.map +0 -1
- package/dist/cjs/infrastructure/logging/MVXLogger.js +0 -80
- package/dist/cjs/infrastructure/logging/MVXLogger.js.map +0 -1
- package/dist/cjs/interfaces/cache.js +0 -3
- package/dist/cjs/interfaces/cache.js.map +0 -1
- package/dist/cjs/interfaces/healthResponse.js +0 -3
- package/dist/cjs/interfaces/healthResponse.js.map +0 -1
- package/dist/cjs/interfaces/institutionResponse.js +0 -3
- package/dist/cjs/interfaces/institutionResponse.js.map +0 -1
- package/dist/cjs/interfaces/metadata.js +0 -3
- package/dist/cjs/interfaces/metadata.js.map +0 -1
- package/dist/cjs/interfaces/placeResponse.js +0 -3
- package/dist/cjs/interfaces/placeResponse.js.map +0 -1
- package/dist/cjs/interfaces/routeCacheResponse.js +0 -3
- package/dist/cjs/interfaces/routeCacheResponse.js.map +0 -1
- package/dist/cjs/interfaces/routeResponse.js +0 -3
- package/dist/cjs/interfaces/routeResponse.js.map +0 -1
- package/dist/cjs/interfaces/styleResponse.js +0 -3
- package/dist/cjs/interfaces/styleResponse.js.map +0 -1
- package/dist/cjs/logger/logger.js +0 -78
- package/dist/cjs/logger/logger.js.map +0 -1
- package/dist/cjs/logger/sentry.js +0 -81
- package/dist/cjs/logger/sentry.js.map +0 -1
- package/dist/cjs/map/fitCamera.js +0 -124
- package/dist/cjs/map/fitCamera.js.map +0 -1
- package/dist/cjs/map/map.js +0 -2755
- package/dist/cjs/map/map.js.map +0 -1
- package/dist/cjs/map/mapInteractionOptions.js +0 -73
- package/dist/cjs/map/mapInteractionOptions.js.map +0 -1
- package/dist/cjs/map/scene3DController.js +0 -849
- package/dist/cjs/map/scene3DController.js.map +0 -1
- package/dist/cjs/repository/repository.js +0 -694
- package/dist/cjs/repository/repository.js.map +0 -1
- package/dist/cjs/repository/requester.js +0 -771
- package/dist/cjs/repository/requester.js.map +0 -1
- package/dist/cjs/sdk.js +0 -438
- package/dist/cjs/sdk.js.map +0 -1
- package/dist/cjs/utils/3d.js +0 -245
- package/dist/cjs/utils/3d.js.map +0 -1
- package/dist/cjs/utils/deckLayers.js +0 -153
- package/dist/cjs/utils/deckLayers.js.map +0 -1
- package/dist/cjs/utils/error.js +0 -19
- package/dist/cjs/utils/error.js.map +0 -1
- package/dist/cjs/utils/images.js +0 -25
- package/dist/cjs/utils/images.js.map +0 -1
- package/dist/cjs/utils/loadGlb.js +0 -190
- package/dist/cjs/utils/loadGlb.js.map +0 -1
- package/dist/cjs/utils/mapvxHostname.js +0 -21
- package/dist/cjs/utils/mapvxHostname.js.map +0 -1
- package/dist/cjs/utils/nav-functions.js +0 -150
- package/dist/cjs/utils/nav-functions.js.map +0 -1
- package/dist/cjs/utils/opening-hours-helper.js +0 -914
- package/dist/cjs/utils/opening-hours-helper.js.map +0 -1
- package/dist/cjs/utils/preconnect.js +0 -131
- package/dist/cjs/utils/preconnect.js.map +0 -1
- package/dist/cjs/utils/route-utils.js +0 -57
- package/dist/cjs/utils/route-utils.js.map +0 -1
- package/dist/cjs/utils/semaphore.js +0 -143
- package/dist/cjs/utils/semaphore.js.map +0 -1
- package/dist/cjs/utils/three.js +0 -113
- package/dist/cjs/utils/three.js.map +0 -1
- package/dist/cjs/utils/threeScene.js +0 -126
- package/dist/cjs/utils/threeScene.js.map +0 -1
- package/dist/cjs/utils/update-css.js +0 -76
- package/dist/cjs/utils/update-css.js.map +0 -1
- package/dist/cjs/utils/utils.js +0 -104
- package/dist/cjs/utils/utils.js.map +0 -1
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CacheManager = void 0;
|
|
4
|
-
const cacheConfig_1 = require("./cacheConfig");
|
|
5
|
-
const LRUCache_1 = require("./LRUCache");
|
|
6
|
-
const PersistentCache_1 = require("./PersistentCache");
|
|
7
|
-
const place_1 = require("../../domain/models/place");
|
|
8
|
-
/**
|
|
9
|
-
* Per-type revivers restoring class prototypes lost when the persistent cache
|
|
10
|
-
* rehydrates values from localStorage (`JSON.parse` yields plain objects without
|
|
11
|
-
* methods). Only caches that hold class instances need an entry; plain-data caches
|
|
12
|
-
* (routes, configurations, etc.) are left untouched.
|
|
13
|
-
*/
|
|
14
|
-
const CACHE_DESERIALIZERS = {
|
|
15
|
-
// `places` stores MVXPlace instances.
|
|
16
|
-
places: (value) => place_1.MVXPlace.fromCache(value),
|
|
17
|
-
// `subPlaces` stores a DataSnapshot wrapping an MVXPlace[].
|
|
18
|
-
subPlaces: (value) => {
|
|
19
|
-
const snapshot = value;
|
|
20
|
-
if (!snapshot || !Array.isArray(snapshot.data))
|
|
21
|
-
return value;
|
|
22
|
-
return Object.assign(Object.assign({}, snapshot), { data: snapshot.data.map((place) => place_1.MVXPlace.fromCache(place)) });
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* CacheManager - Facade for managing multiple typed caches
|
|
27
|
-
*
|
|
28
|
-
* Replaces the old Cache singleton with a more flexible, configurable system.
|
|
29
|
-
* Supports:
|
|
30
|
-
* - Multiple cache types (places, routes, configurations, etc.)
|
|
31
|
-
* - Language-aware caching
|
|
32
|
-
* - Optional localStorage persistence
|
|
33
|
-
* - Configurable limits and TTL per cache type
|
|
34
|
-
*
|
|
35
|
-
* @group Configuration
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const cacheManager = new CacheManager({
|
|
40
|
-
* persistent: true,
|
|
41
|
-
* maxStorageBytes: 5 * 1024 * 1024,
|
|
42
|
-
* configs: {
|
|
43
|
-
* places: { maxItems: 1000, ttlMs: 60000 }
|
|
44
|
-
* }
|
|
45
|
-
* })
|
|
46
|
-
*
|
|
47
|
-
* cacheManager.setPlace("place-1", "en", placeData)
|
|
48
|
-
* const place = cacheManager.getPlace("place-1", "en")
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
class CacheManager {
|
|
52
|
-
constructor(config) {
|
|
53
|
-
var _a, _b, _c;
|
|
54
|
-
this.caches = new Map();
|
|
55
|
-
this.persistent = (_a = config === null || config === void 0 ? void 0 : config.persistent) !== null && _a !== void 0 ? _a : false;
|
|
56
|
-
this.maxStorageBytes = (_b = config === null || config === void 0 ? void 0 : config.maxStorageBytes) !== null && _b !== void 0 ? _b : cacheConfig_1.DEFAULT_MAX_STORAGE_BYTES;
|
|
57
|
-
// Initialize all cache types
|
|
58
|
-
const cacheTypes = [
|
|
59
|
-
"places",
|
|
60
|
-
"routes",
|
|
61
|
-
"accessibleRoutes",
|
|
62
|
-
"configurations",
|
|
63
|
-
"categories",
|
|
64
|
-
"vehicles",
|
|
65
|
-
"stops",
|
|
66
|
-
"subPlaces",
|
|
67
|
-
];
|
|
68
|
-
for (const cacheType of cacheTypes) {
|
|
69
|
-
const cacheConfig = (0, cacheConfig_1.getCacheConfig)(cacheType, (_c = config === null || config === void 0 ? void 0 : config.configs) === null || _c === void 0 ? void 0 : _c[cacheType]);
|
|
70
|
-
this.caches.set(cacheType, this.createCache(cacheConfig, CACHE_DESERIALIZERS[cacheType]));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Creates a cache instance based on persistence configuration.
|
|
75
|
-
*
|
|
76
|
-
* @param config - Per-type cache configuration.
|
|
77
|
-
* @param deserialize - Optional reviver forwarded to the persistent cache to
|
|
78
|
-
* rebuild class prototypes when values are rehydrated from localStorage.
|
|
79
|
-
*/
|
|
80
|
-
createCache(config, deserialize) {
|
|
81
|
-
if (this.persistent && config.persistenceKey) {
|
|
82
|
-
return new PersistentCache_1.PersistentCache(config, this.maxStorageBytes, deserialize);
|
|
83
|
-
}
|
|
84
|
-
return new LRUCache_1.LRUCache(config);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Generates a language-aware cache key
|
|
88
|
-
*/
|
|
89
|
-
makeKey(id, lang) {
|
|
90
|
-
return `${id}_${lang}`;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Generates a composite key for configurations
|
|
94
|
-
*/
|
|
95
|
-
makeConfigKey(placeId, product, lang) {
|
|
96
|
-
return `${placeId || "default"}_${product || "default"}_${lang}`;
|
|
97
|
-
}
|
|
98
|
-
// ==================== Places ====================
|
|
99
|
-
getPlace(id, lang) {
|
|
100
|
-
const cache = this.caches.get("places");
|
|
101
|
-
return cache.get(this.makeKey(id, lang));
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Stores a place in cache
|
|
105
|
-
* @param id - Place ID
|
|
106
|
-
* @param value - Place data
|
|
107
|
-
* @param lang - Language code
|
|
108
|
-
*/
|
|
109
|
-
setPlace(id, value, lang) {
|
|
110
|
-
const cache = this.caches.get("places");
|
|
111
|
-
cache.set(this.makeKey(id, lang), value);
|
|
112
|
-
}
|
|
113
|
-
hasPlace(id, lang) {
|
|
114
|
-
const cache = this.caches.get("places");
|
|
115
|
-
return cache.has(this.makeKey(id, lang));
|
|
116
|
-
}
|
|
117
|
-
// ==================== Routes ====================
|
|
118
|
-
getRoute(destinationId) {
|
|
119
|
-
const cache = this.caches.get("routes");
|
|
120
|
-
return cache.get(destinationId);
|
|
121
|
-
}
|
|
122
|
-
setRoute(destinationId, value) {
|
|
123
|
-
const cache = this.caches.get("routes");
|
|
124
|
-
cache.set(destinationId, value);
|
|
125
|
-
}
|
|
126
|
-
cleanRoutesCache() {
|
|
127
|
-
this.caches.get("routes").clear();
|
|
128
|
-
}
|
|
129
|
-
// ==================== Accessible Routes ====================
|
|
130
|
-
getAccessibleRoute(destinationId) {
|
|
131
|
-
const cache = this.caches.get("accessibleRoutes");
|
|
132
|
-
return cache.get(destinationId);
|
|
133
|
-
}
|
|
134
|
-
setAccessibleRoute(destinationId, value) {
|
|
135
|
-
const cache = this.caches.get("accessibleRoutes");
|
|
136
|
-
cache.set(destinationId, value);
|
|
137
|
-
}
|
|
138
|
-
cleanAccessibleRoutesCache() {
|
|
139
|
-
this.caches.get("accessibleRoutes").clear();
|
|
140
|
-
}
|
|
141
|
-
// ==================== Configurations ====================
|
|
142
|
-
getConfiguration(placeId, product, lang) {
|
|
143
|
-
const cache = this.caches.get("configurations");
|
|
144
|
-
return cache.get(this.makeConfigKey(placeId, product, lang));
|
|
145
|
-
}
|
|
146
|
-
setConfiguration(placeId, product, lang, value) {
|
|
147
|
-
const cache = this.caches.get("configurations");
|
|
148
|
-
cache.set(this.makeConfigKey(placeId, product, lang), value);
|
|
149
|
-
}
|
|
150
|
-
// ==================== Categories ====================
|
|
151
|
-
getCategories(placeId, lang) {
|
|
152
|
-
const cache = this.caches.get("categories");
|
|
153
|
-
return cache.get(this.makeKey(placeId || "default", lang));
|
|
154
|
-
}
|
|
155
|
-
setCategories(placeId, lang, value) {
|
|
156
|
-
const cache = this.caches.get("categories");
|
|
157
|
-
cache.set(this.makeKey(placeId || "default", lang), value);
|
|
158
|
-
}
|
|
159
|
-
// ==================== Vehicles ====================
|
|
160
|
-
getVehicle(id, lang) {
|
|
161
|
-
const cache = this.caches.get("vehicles");
|
|
162
|
-
return cache.get(this.makeKey(id, lang));
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Stores a vehicle in cache
|
|
166
|
-
* @param id - Stop ID
|
|
167
|
-
* @param value - Vehicle data (can be DataSnapshot for backward compatibility)
|
|
168
|
-
* @param lang - Language code
|
|
169
|
-
*/
|
|
170
|
-
setVehicle(id, value, lang) {
|
|
171
|
-
const cache = this.caches.get("vehicles");
|
|
172
|
-
cache.set(this.makeKey(id, lang), value);
|
|
173
|
-
}
|
|
174
|
-
// ==================== Stops ====================
|
|
175
|
-
getStops(id, lang) {
|
|
176
|
-
const cache = this.caches.get("stops");
|
|
177
|
-
return cache.get(this.makeKey(id, lang));
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Stores stops in cache
|
|
181
|
-
* @param id - Combined stop+vehicle ID
|
|
182
|
-
* @param value - Stops data (can be DataSnapshot for backward compatibility)
|
|
183
|
-
* @param lang - Language code
|
|
184
|
-
*/
|
|
185
|
-
setStops(id, value, lang) {
|
|
186
|
-
const cache = this.caches.get("stops");
|
|
187
|
-
cache.set(this.makeKey(id, lang), value);
|
|
188
|
-
}
|
|
189
|
-
// ==================== SubPlaces ====================
|
|
190
|
-
getSubPlaces(parentPlaceId, lang) {
|
|
191
|
-
const cache = this.caches.get("subPlaces");
|
|
192
|
-
return cache.get(this.makeKey(parentPlaceId, lang));
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Stores subplaces in cache
|
|
196
|
-
* @param parentPlaceId - Parent place ID
|
|
197
|
-
* @param lang - Language code
|
|
198
|
-
* @param value - SubPlaces data (can be DataSnapshot for backward compatibility)
|
|
199
|
-
*/
|
|
200
|
-
setSubPlaces(parentPlaceId, lang, value) {
|
|
201
|
-
const cache = this.caches.get("subPlaces");
|
|
202
|
-
cache.set(this.makeKey(parentPlaceId, lang), value);
|
|
203
|
-
}
|
|
204
|
-
// ==================== Global Operations ====================
|
|
205
|
-
/**
|
|
206
|
-
* Clears all caches
|
|
207
|
-
*/
|
|
208
|
-
cleanAllCache() {
|
|
209
|
-
for (const cache of this.caches.values()) {
|
|
210
|
-
cache.clear();
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Clears all entries for a specific language across all language-aware caches
|
|
215
|
-
*/
|
|
216
|
-
cleanLanguageCache(lang) {
|
|
217
|
-
const languageAwareCaches = [
|
|
218
|
-
"places",
|
|
219
|
-
"configurations",
|
|
220
|
-
"categories",
|
|
221
|
-
"vehicles",
|
|
222
|
-
"stops",
|
|
223
|
-
"subPlaces",
|
|
224
|
-
];
|
|
225
|
-
const suffix = `_${lang}`;
|
|
226
|
-
for (const cacheType of languageAwareCaches) {
|
|
227
|
-
const cache = this.caches.get(cacheType);
|
|
228
|
-
const keys = cache.keys();
|
|
229
|
-
for (const key of keys) {
|
|
230
|
-
if (key.endsWith(suffix)) {
|
|
231
|
-
cache.delete(key);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Gets statistics for a specific cache type
|
|
238
|
-
*/
|
|
239
|
-
getCacheStats(cacheType) {
|
|
240
|
-
const cache = this.caches.get(cacheType);
|
|
241
|
-
if (!cache) {
|
|
242
|
-
return { size: 0, maxItems: 0 };
|
|
243
|
-
}
|
|
244
|
-
return cache.getStats();
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Gets statistics for all caches
|
|
248
|
-
*/
|
|
249
|
-
getAllCacheStats() {
|
|
250
|
-
const stats = {};
|
|
251
|
-
for (const [cacheType, cache] of this.caches) {
|
|
252
|
-
stats[cacheType] = cache.getStats();
|
|
253
|
-
}
|
|
254
|
-
return stats;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
exports.CacheManager = CacheManager;
|
|
258
|
-
//# sourceMappingURL=CacheManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/CacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LRUCache = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* LRU (Least Recently Used) Cache implementation
|
|
6
|
-
* Implements the ICache interface with:
|
|
7
|
-
* - Configurable capacity limits
|
|
8
|
-
* - TTL-based expiration
|
|
9
|
-
* - LRU eviction policy
|
|
10
|
-
* - Hit rate tracking
|
|
11
|
-
*
|
|
12
|
-
* @typeParam T - The type of values stored in the cache
|
|
13
|
-
* @group Configuration
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* const cache = new LRUCache<string>({ maxItems: 100, ttlMs: 60000 })
|
|
18
|
-
* cache.set("key1", "value1")
|
|
19
|
-
* const value = cache.get("key1") // "value1"
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
class LRUCache {
|
|
23
|
-
constructor(config) {
|
|
24
|
-
// Hit rate tracking
|
|
25
|
-
this.hits = 0;
|
|
26
|
-
this.misses = 0;
|
|
27
|
-
// Monotonic counter for LRU ordering (avoids issues with same-millisecond operations)
|
|
28
|
-
this.accessCounter = 0;
|
|
29
|
-
this.cache = new Map();
|
|
30
|
-
this.maxItems = config.maxItems;
|
|
31
|
-
this.ttlMs = config.ttlMs;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Retrieves a value from the cache
|
|
35
|
-
* Updates access time for LRU tracking
|
|
36
|
-
* Returns undefined if key doesn't exist or is expired
|
|
37
|
-
*/
|
|
38
|
-
get(key) {
|
|
39
|
-
const entry = this.cache.get(key);
|
|
40
|
-
if (!entry) {
|
|
41
|
-
this.misses++;
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
// Check TTL expiration (skip if ttlMs is 0)
|
|
45
|
-
if (this.ttlMs > 0 && this.isExpired(entry)) {
|
|
46
|
-
this.cache.delete(key);
|
|
47
|
-
this.misses++;
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
// Update access time for LRU (using monotonic counter)
|
|
51
|
-
entry.accessTime = ++this.accessCounter;
|
|
52
|
-
this.hits++;
|
|
53
|
-
return entry.value;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Stores a value in the cache
|
|
57
|
-
* Evicts LRU item if at capacity
|
|
58
|
-
* Refreshes TTL for existing keys
|
|
59
|
-
*/
|
|
60
|
-
set(key, value) {
|
|
61
|
-
const now = Date.now();
|
|
62
|
-
const accessTime = ++this.accessCounter;
|
|
63
|
-
// If key already exists, update it (no eviction needed)
|
|
64
|
-
if (this.cache.has(key)) {
|
|
65
|
-
this.cache.set(key, {
|
|
66
|
-
value,
|
|
67
|
-
timestamp: now,
|
|
68
|
-
accessTime,
|
|
69
|
-
});
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
// Evict if at capacity
|
|
73
|
-
if (this.cache.size >= this.maxItems) {
|
|
74
|
-
this.evictLRU();
|
|
75
|
-
}
|
|
76
|
-
this.cache.set(key, {
|
|
77
|
-
value,
|
|
78
|
-
timestamp: now,
|
|
79
|
-
accessTime,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Checks if a key exists and is not expired
|
|
84
|
-
*/
|
|
85
|
-
has(key) {
|
|
86
|
-
const entry = this.cache.get(key);
|
|
87
|
-
if (!entry) {
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
// Check TTL expiration
|
|
91
|
-
if (this.ttlMs > 0 && this.isExpired(entry)) {
|
|
92
|
-
this.cache.delete(key);
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Removes a specific key from the cache
|
|
99
|
-
*/
|
|
100
|
-
delete(key) {
|
|
101
|
-
return this.cache.delete(key);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Removes all entries from the cache
|
|
105
|
-
*/
|
|
106
|
-
clear() {
|
|
107
|
-
this.cache.clear();
|
|
108
|
-
this.hits = 0;
|
|
109
|
-
this.misses = 0;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Returns all keys in the cache
|
|
113
|
-
*/
|
|
114
|
-
keys() {
|
|
115
|
-
return Array.from(this.cache.keys());
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Returns cache statistics
|
|
119
|
-
*/
|
|
120
|
-
getStats() {
|
|
121
|
-
const totalRequests = this.hits + this.misses;
|
|
122
|
-
const hitRate = totalRequests > 0 ? (this.hits / totalRequests) * 100 : undefined;
|
|
123
|
-
return {
|
|
124
|
-
size: this.cache.size,
|
|
125
|
-
maxItems: this.maxItems,
|
|
126
|
-
hitRate,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Checks if an entry has expired based on TTL
|
|
131
|
-
*/
|
|
132
|
-
isExpired(entry) {
|
|
133
|
-
return Date.now() - entry.timestamp > this.ttlMs;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Evicts the least recently used item from the cache
|
|
137
|
-
*/
|
|
138
|
-
evictLRU() {
|
|
139
|
-
let oldestKey = null;
|
|
140
|
-
let oldestAccessTime = Infinity;
|
|
141
|
-
for (const [key, entry] of this.cache) {
|
|
142
|
-
if (entry.accessTime < oldestAccessTime) {
|
|
143
|
-
oldestAccessTime = entry.accessTime;
|
|
144
|
-
oldestKey = key;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (oldestKey !== null) {
|
|
148
|
-
this.cache.delete(oldestKey);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
exports.LRUCache = LRUCache;
|
|
153
|
-
//# sourceMappingURL=LRUCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LRUCache.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/LRUCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PersistentCache = void 0;
|
|
4
|
-
const cacheConfig_1 = require("./cacheConfig");
|
|
5
|
-
const LRUCache_1 = require("./LRUCache");
|
|
6
|
-
/**
|
|
7
|
-
* Persistent Cache implementation (Decorator pattern)
|
|
8
|
-
* Wraps LRUCache with localStorage persistence.
|
|
9
|
-
*
|
|
10
|
-
* Features:
|
|
11
|
-
* - Automatic save to localStorage on modifications
|
|
12
|
-
* - Hydration from localStorage on initialization
|
|
13
|
-
* - Graceful degradation when localStorage unavailable
|
|
14
|
-
* - Storage quota management
|
|
15
|
-
* - Expired items filtered during hydration
|
|
16
|
-
*
|
|
17
|
-
* @typeParam T - The type of values stored in the cache
|
|
18
|
-
* @group Configuration
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const cache = new PersistentCache<string>({
|
|
23
|
-
* maxItems: 100,
|
|
24
|
-
* ttlMs: 60000,
|
|
25
|
-
* persistenceKey: "my_cache"
|
|
26
|
-
* })
|
|
27
|
-
* cache.set("key1", "value1") // Saved to memory and localStorage
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
class PersistentCache {
|
|
31
|
-
/**
|
|
32
|
-
* @param config - Cache configuration (limits, TTL, persistence key).
|
|
33
|
-
* @param maxStorageBytes - Optional per-cache localStorage budget.
|
|
34
|
-
* @param deserialize - Optional reviver applied to each value read back from
|
|
35
|
-
* localStorage. `JSON.parse` strips class prototypes, so values that carry
|
|
36
|
-
* methods (e.g. `MVXPlace`) must be rebuilt here; plain-data caches omit it.
|
|
37
|
-
*/
|
|
38
|
-
constructor(config, maxStorageBytes, deserialize) {
|
|
39
|
-
this.storageAvailable = true;
|
|
40
|
-
this.lruCache = new LRUCache_1.LRUCache(config);
|
|
41
|
-
this.persistenceKey = config.persistenceKey || "mvx_cache";
|
|
42
|
-
this.maxStorageBytes = maxStorageBytes !== null && maxStorageBytes !== void 0 ? maxStorageBytes : cacheConfig_1.DEFAULT_MAX_STORAGE_BYTES;
|
|
43
|
-
this.ttlMs = config.ttlMs;
|
|
44
|
-
this.deserialize = deserialize;
|
|
45
|
-
this.hydrate();
|
|
46
|
-
}
|
|
47
|
-
get(key) {
|
|
48
|
-
return this.lruCache.get(key);
|
|
49
|
-
}
|
|
50
|
-
set(key, value) {
|
|
51
|
-
this.lruCache.set(key, value);
|
|
52
|
-
this.persist();
|
|
53
|
-
}
|
|
54
|
-
has(key) {
|
|
55
|
-
return this.lruCache.has(key);
|
|
56
|
-
}
|
|
57
|
-
delete(key) {
|
|
58
|
-
const result = this.lruCache.delete(key);
|
|
59
|
-
if (result) {
|
|
60
|
-
this.persist();
|
|
61
|
-
}
|
|
62
|
-
return result;
|
|
63
|
-
}
|
|
64
|
-
clear() {
|
|
65
|
-
this.lruCache.clear();
|
|
66
|
-
this.removeFromStorage();
|
|
67
|
-
}
|
|
68
|
-
keys() {
|
|
69
|
-
return this.lruCache.keys();
|
|
70
|
-
}
|
|
71
|
-
getStats() {
|
|
72
|
-
return this.lruCache.getStats();
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Loads cache data from localStorage on initialization
|
|
76
|
-
*/
|
|
77
|
-
hydrate() {
|
|
78
|
-
if (!this.isStorageAvailable()) {
|
|
79
|
-
this.storageAvailable = false;
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
try {
|
|
83
|
-
const stored = localStorage.getItem(this.persistenceKey);
|
|
84
|
-
if (!stored)
|
|
85
|
-
return;
|
|
86
|
-
const data = JSON.parse(stored);
|
|
87
|
-
if (!data.entries || !Array.isArray(data.entries)) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
const now = Date.now();
|
|
91
|
-
for (const entry of data.entries) {
|
|
92
|
-
// Skip expired entries (if TTL is configured)
|
|
93
|
-
if (this.ttlMs > 0 && now - entry.timestamp > this.ttlMs) {
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
// Restore to LRU cache, reviving class prototypes stripped by JSON when needed.
|
|
97
|
-
this.lruCache.set(entry.key, this.deserialize ? this.deserialize(entry.value) : entry.value);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
catch (_a) {
|
|
101
|
-
// Corrupted data or storage error - start with empty cache
|
|
102
|
-
this.storageAvailable = this.isStorageAvailable();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Saves current cache state to localStorage
|
|
107
|
-
*/
|
|
108
|
-
persist() {
|
|
109
|
-
if (!this.storageAvailable)
|
|
110
|
-
return;
|
|
111
|
-
try {
|
|
112
|
-
const entries = [];
|
|
113
|
-
const keys = this.lruCache.keys();
|
|
114
|
-
for (const key of keys) {
|
|
115
|
-
const value = this.lruCache.get(key);
|
|
116
|
-
if (value !== undefined) {
|
|
117
|
-
entries.push({
|
|
118
|
-
key,
|
|
119
|
-
value,
|
|
120
|
-
timestamp: Date.now(),
|
|
121
|
-
accessTime: Date.now(),
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
const data = { entries };
|
|
126
|
-
const serialized = JSON.stringify(data);
|
|
127
|
-
// Check storage quota
|
|
128
|
-
if (serialized.length > this.maxStorageBytes) {
|
|
129
|
-
// Skip persistence if too large
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
localStorage.setItem(this.persistenceKey, serialized);
|
|
133
|
-
}
|
|
134
|
-
catch (_a) {
|
|
135
|
-
// Storage quota exceeded or other error
|
|
136
|
-
this.storageAvailable = false;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Removes cache data from localStorage
|
|
141
|
-
*/
|
|
142
|
-
removeFromStorage() {
|
|
143
|
-
if (!this.storageAvailable)
|
|
144
|
-
return;
|
|
145
|
-
try {
|
|
146
|
-
localStorage.removeItem(this.persistenceKey);
|
|
147
|
-
}
|
|
148
|
-
catch (_a) {
|
|
149
|
-
// Ignore errors
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Checks if localStorage is available
|
|
154
|
-
*/
|
|
155
|
-
isStorageAvailable() {
|
|
156
|
-
try {
|
|
157
|
-
const testKey = "__storage_test__";
|
|
158
|
-
localStorage.setItem(testKey, testKey);
|
|
159
|
-
localStorage.removeItem(testKey);
|
|
160
|
-
return true;
|
|
161
|
-
}
|
|
162
|
-
catch (_a) {
|
|
163
|
-
return false;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
exports.PersistentCache = PersistentCache;
|
|
168
|
-
//# sourceMappingURL=PersistentCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PersistentCache.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/PersistentCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Cache configuration types and defaults
|
|
4
|
-
* Defines the configuration options for the caching system
|
|
5
|
-
* @module cacheConfig
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.DEFAULT_CACHE_CONFIGS = exports.DEFAULT_MAX_STORAGE_BYTES = void 0;
|
|
9
|
-
exports.getCacheConfig = getCacheConfig;
|
|
10
|
-
/**
|
|
11
|
-
* Default maximum storage size: 5MB
|
|
12
|
-
*/
|
|
13
|
-
exports.DEFAULT_MAX_STORAGE_BYTES = 5 * 1024 * 1024;
|
|
14
|
-
/**
|
|
15
|
-
* Default cache configurations per type
|
|
16
|
-
* These values balance memory usage with performance
|
|
17
|
-
*/
|
|
18
|
-
exports.DEFAULT_CACHE_CONFIGS = {
|
|
19
|
-
places: {
|
|
20
|
-
maxItems: 500,
|
|
21
|
-
ttlMs: 30 * 60 * 1000, // 30 minutes
|
|
22
|
-
persistenceKey: "mvx_places",
|
|
23
|
-
},
|
|
24
|
-
routes: {
|
|
25
|
-
maxItems: 100,
|
|
26
|
-
ttlMs: 5 * 60 * 1000, // 5 minutes
|
|
27
|
-
persistenceKey: "mvx_routes",
|
|
28
|
-
},
|
|
29
|
-
accessibleRoutes: {
|
|
30
|
-
maxItems: 100,
|
|
31
|
-
ttlMs: 5 * 60 * 1000, // 5 minutes
|
|
32
|
-
persistenceKey: "mvx_accessible_routes",
|
|
33
|
-
},
|
|
34
|
-
configurations: {
|
|
35
|
-
maxItems: 10,
|
|
36
|
-
ttlMs: 60 * 60 * 1000, // 1 hour
|
|
37
|
-
persistenceKey: "mvx_configurations",
|
|
38
|
-
},
|
|
39
|
-
categories: {
|
|
40
|
-
maxItems: 20,
|
|
41
|
-
ttlMs: 60 * 60 * 1000, // 1 hour
|
|
42
|
-
persistenceKey: "mvx_categories",
|
|
43
|
-
},
|
|
44
|
-
vehicles: {
|
|
45
|
-
maxItems: 50,
|
|
46
|
-
ttlMs: 60 * 1000, // 1 minute
|
|
47
|
-
persistenceKey: "mvx_vehicles",
|
|
48
|
-
},
|
|
49
|
-
stops: {
|
|
50
|
-
maxItems: 100,
|
|
51
|
-
ttlMs: 60 * 1000, // 1 minute
|
|
52
|
-
persistenceKey: "mvx_stops",
|
|
53
|
-
},
|
|
54
|
-
subPlaces: {
|
|
55
|
-
maxItems: 200,
|
|
56
|
-
ttlMs: 15 * 60 * 1000, // 15 minutes
|
|
57
|
-
persistenceKey: "mvx_subplaces",
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Merges user config with defaults for a specific cache type
|
|
62
|
-
* @param cacheType - The type of cache
|
|
63
|
-
* @param userConfig - Optional user-provided configuration
|
|
64
|
-
* @returns Complete cache configuration
|
|
65
|
-
*/
|
|
66
|
-
function getCacheConfig(cacheType, userConfig) {
|
|
67
|
-
const defaultConfig = exports.DEFAULT_CACHE_CONFIGS[cacheType];
|
|
68
|
-
return Object.assign(Object.assign({}, defaultConfig), userConfig);
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=cacheConfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cacheConfig.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/cacheConfig.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAoGH,wCASC;AAnED;;GAEG;AACU,QAAA,yBAAyB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAExD;;;GAGG;AACU,QAAA,qBAAqB,GAAmC;IACnE,MAAM,EAAE;QACN,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;QACpC,cAAc,EAAE,YAAY;KAC7B;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;QAClC,cAAc,EAAE,YAAY;KAC7B;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;QAClC,cAAc,EAAE,uBAAuB;KACxC;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;QAChC,cAAc,EAAE,oBAAoB;KACrC;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;QAChC,cAAc,EAAE,gBAAgB;KACjC;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW;QAC7B,cAAc,EAAE,cAAc;KAC/B;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW;QAC7B,cAAc,EAAE,WAAW;KAC5B;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;QACpC,cAAc,EAAE,eAAe;KAChC;CACF,CAAA;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,SAAoB,EACpB,UAAiC;IAEjC,MAAM,aAAa,GAAG,6BAAqB,CAAC,SAAS,CAAC,CAAA;IACtD,uCACK,aAAa,GACb,UAAU,EACd;AACH,CAAC"}
|