@communecter/cocolight-api-client 1.0.9 → 1.0.11

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.
@@ -0,0 +1,45 @@
1
+ import { LocalStorageStrategy, MemoryStorageStrategy } from "./TokenStorage.js";
2
+
3
+ // src/utils/createDefaultTokenStorageStrategy.js
4
+
5
+ /**
6
+ * Crée une stratégie de stockage de jetons par défaut en fonction de l'option fournie.
7
+ *
8
+ * @param {string} [tokenStorageStrategy="auto"] - La stratégie de stockage de jetons souhaitée.
9
+ * Les valeurs possibles sont :
10
+ * - "memory" : Utilise une stratégie de stockage en mémoire.
11
+ * - "localStorage" : Utilise le localStorage du navigateur (si disponible).
12
+ * - "file" : Utilise une stratégie de stockage basée sur des fichiers (non disponible dans les environnements navigateur).
13
+ * - "auto" : Sélectionne automatiquement la meilleure stratégie de stockage disponible.
14
+ *
15
+ * @returns {Promise<Object>} Une promesse qui se résout avec une instance de la stratégie de stockage sélectionnée.
16
+ *
17
+ * @throws {Error} Lève une erreur si la stratégie sélectionnée n'est pas disponible dans l'environnement actuel.
18
+ */
19
+ export async function createDefaultTokenStorageStrategy(tokenStorageStrategy = "auto") {
20
+ if (tokenStorageStrategy === "memory") {
21
+ return new MemoryStorageStrategy();
22
+ }
23
+ if (tokenStorageStrategy === "localStorage") {
24
+ if (typeof window !== "undefined" && window.localStorage) {
25
+ return new LocalStorageStrategy();
26
+ } else {
27
+ throw new Error("localStorage is not available in this environment.");
28
+ }
29
+ }
30
+ if (tokenStorageStrategy === "file") {
31
+ if (typeof window !== "undefined" && window.localStorage) {
32
+ throw new Error("file storage is not available in this environment.");
33
+ }
34
+ const { FileStorageStrategy } = await import("./FileStorageStrategy.node.js");
35
+ return new FileStorageStrategy();
36
+ }
37
+ if (tokenStorageStrategy === "auto") {
38
+ if (typeof window !== "undefined" && window.localStorage) {
39
+ return new LocalStorageStrategy();
40
+ } else {
41
+ const { FileStorageStrategy } = await import("./FileStorageStrategy.node.js");
42
+ return new FileStorageStrategy();
43
+ }
44
+ }
45
+ }