@tspvivek/baasix-sdk 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +942 -0
  3. package/dist/client-CzF9B60b.d.ts +614 -0
  4. package/dist/client-aXK_gEyr.d.cts +614 -0
  5. package/dist/index.cjs +4159 -0
  6. package/dist/index.cjs.map +1 -0
  7. package/dist/index.d.cts +1498 -0
  8. package/dist/index.d.ts +1498 -0
  9. package/dist/index.js +4135 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/modules/auth.cjs +651 -0
  12. package/dist/modules/auth.cjs.map +1 -0
  13. package/dist/modules/auth.d.cts +384 -0
  14. package/dist/modules/auth.d.ts +384 -0
  15. package/dist/modules/auth.js +649 -0
  16. package/dist/modules/auth.js.map +1 -0
  17. package/dist/modules/files.cjs +266 -0
  18. package/dist/modules/files.cjs.map +1 -0
  19. package/dist/modules/files.d.cts +187 -0
  20. package/dist/modules/files.d.ts +187 -0
  21. package/dist/modules/files.js +264 -0
  22. package/dist/modules/files.js.map +1 -0
  23. package/dist/modules/items.cjs +654 -0
  24. package/dist/modules/items.cjs.map +1 -0
  25. package/dist/modules/items.d.cts +472 -0
  26. package/dist/modules/items.d.ts +472 -0
  27. package/dist/modules/items.js +651 -0
  28. package/dist/modules/items.js.map +1 -0
  29. package/dist/modules/schemas.cjs +269 -0
  30. package/dist/modules/schemas.cjs.map +1 -0
  31. package/dist/modules/schemas.d.cts +239 -0
  32. package/dist/modules/schemas.d.ts +239 -0
  33. package/dist/modules/schemas.js +267 -0
  34. package/dist/modules/schemas.js.map +1 -0
  35. package/dist/storage/index.cjs +162 -0
  36. package/dist/storage/index.cjs.map +1 -0
  37. package/dist/storage/index.d.cts +96 -0
  38. package/dist/storage/index.d.ts +96 -0
  39. package/dist/storage/index.js +157 -0
  40. package/dist/storage/index.js.map +1 -0
  41. package/dist/types-BdjsGANq.d.cts +40 -0
  42. package/dist/types-BdjsGANq.d.ts +40 -0
  43. package/package.json +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/storage/types.ts","../../src/storage/localStorage.ts","../../src/storage/memoryStorage.ts","../../src/storage/asyncStorage.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Storage adapter interface for persisting authentication state.\n * Implement this interface to create custom storage solutions (e.g., AsyncStorage for React Native).\n */\nexport interface StorageAdapter {\n /**\n * Get a value from storage\n * @param key - The storage key\n * @returns The stored value or null if not found\n */\n get(key: string): Promise<string | null> | string | null;\n\n /**\n * Set a value in storage\n * @param key - The storage key\n * @param value - The value to store\n */\n set(key: string, value: string): Promise<void> | void;\n\n /**\n * Remove a value from storage\n * @param key - The storage key\n */\n remove(key: string): Promise<void> | void;\n\n /**\n * Clear all SDK-related values from storage\n */\n clear?(): Promise<void> | void;\n}\n\n/**\n * Storage keys used by the SDK\n */\nexport const STORAGE_KEYS = {\n ACCESS_TOKEN: \"baasix_access_token\",\n REFRESH_TOKEN: \"baasix_refresh_token\",\n TOKEN_EXPIRY: \"baasix_token_expiry\",\n USER: \"baasix_user\",\n TENANT: \"baasix_tenant\",\n} as const;\n\nexport type StorageKey = (typeof STORAGE_KEYS)[keyof typeof STORAGE_KEYS];\n","import type { StorageAdapter } from \"./types\";\n\n/**\n * LocalStorage adapter for web browsers.\n * This is the default storage adapter used when running in a browser environment.\n *\n * @example\n * ```typescript\n * import { createBaasix, LocalStorageAdapter } from '@baasix/sdk';\n *\n * const client = createBaasix({\n * url: 'https://api.example.com',\n * storage: new LocalStorageAdapter(),\n * });\n * ```\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private prefix: string;\n\n constructor(prefix = \"baasix_\") {\n this.prefix = prefix;\n }\n\n private getKey(key: string): string {\n // If key already starts with prefix, don't add it again\n if (key.startsWith(this.prefix)) {\n return key;\n }\n return `${this.prefix}${key}`;\n }\n\n get(key: string): string | null {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return null;\n }\n try {\n return localStorage.getItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to get item from localStorage: ${key}`);\n return null;\n }\n }\n\n set(key: string, value: string): void {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return;\n }\n try {\n localStorage.setItem(this.getKey(key), value);\n } catch {\n console.warn(`[Baasix SDK] Failed to set item in localStorage: ${key}`);\n }\n }\n\n remove(key: string): void {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return;\n }\n try {\n localStorage.removeItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to remove item from localStorage: ${key}`);\n }\n }\n\n clear(): void {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return;\n }\n try {\n const keysToRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.prefix)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach((key) => localStorage.removeItem(key));\n } catch {\n console.warn(\"[Baasix SDK] Failed to clear localStorage\");\n }\n }\n}\n","import type { StorageAdapter } from \"./types\";\n\n/**\n * In-memory storage adapter.\n * Useful for server-side rendering (SSR), testing, or environments without persistent storage.\n * Data is lost when the application restarts.\n *\n * @example\n * ```typescript\n * import { createBaasix, MemoryStorageAdapter } from '@baasix/sdk';\n *\n * const client = createBaasix({\n * url: 'https://api.example.com',\n * storage: new MemoryStorageAdapter(),\n * });\n * ```\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private store: Map<string, string>;\n\n constructor() {\n this.store = new Map();\n }\n\n get(key: string): string | null {\n return this.store.get(key) ?? null;\n }\n\n set(key: string, value: string): void {\n this.store.set(key, value);\n }\n\n remove(key: string): void {\n this.store.delete(key);\n }\n\n clear(): void {\n this.store.clear();\n }\n\n /**\n * Get all stored keys (useful for debugging)\n */\n keys(): string[] {\n return Array.from(this.store.keys());\n }\n\n /**\n * Get the number of stored items\n */\n size(): number {\n return this.store.size;\n }\n}\n","import type { StorageAdapter } from \"./types\";\n\n/**\n * Type definition for AsyncStorage-like interface (React Native)\n */\ninterface AsyncStorageLike {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n multiRemove?(keys: string[]): Promise<void>;\n getAllKeys?(): Promise<readonly string[]>;\n}\n\n/**\n * AsyncStorage adapter for React Native.\n * Wraps @react-native-async-storage/async-storage or any compatible implementation.\n *\n * @example\n * ```typescript\n * import { createBaasix, AsyncStorageAdapter } from '@baasix/sdk';\n * import AsyncStorage from '@react-native-async-storage/async-storage';\n *\n * const client = createBaasix({\n * url: 'https://api.example.com',\n * storage: new AsyncStorageAdapter(AsyncStorage),\n * });\n * ```\n */\nexport class AsyncStorageAdapter implements StorageAdapter {\n private asyncStorage: AsyncStorageLike;\n private prefix: string;\n\n constructor(asyncStorage: AsyncStorageLike, prefix = \"baasix_\") {\n this.asyncStorage = asyncStorage;\n this.prefix = prefix;\n }\n\n private getKey(key: string): string {\n if (key.startsWith(this.prefix)) {\n return key;\n }\n return `${this.prefix}${key}`;\n }\n\n async get(key: string): Promise<string | null> {\n try {\n return await this.asyncStorage.getItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to get item from AsyncStorage: ${key}`);\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n try {\n await this.asyncStorage.setItem(this.getKey(key), value);\n } catch {\n console.warn(`[Baasix SDK] Failed to set item in AsyncStorage: ${key}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n await this.asyncStorage.removeItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to remove item from AsyncStorage: ${key}`);\n }\n }\n\n async clear(): Promise<void> {\n try {\n if (this.asyncStorage.getAllKeys && this.asyncStorage.multiRemove) {\n const allKeys = await this.asyncStorage.getAllKeys();\n const sdkKeys = allKeys.filter((key) => key.startsWith(this.prefix));\n if (sdkKeys.length > 0) {\n await this.asyncStorage.multiRemove(sdkKeys);\n }\n }\n } catch {\n console.warn(\"[Baasix SDK] Failed to clear AsyncStorage\");\n }\n }\n}\n"]}
@@ -0,0 +1,96 @@
1
+ import { S as StorageAdapter } from '../types-BdjsGANq.cjs';
2
+ export { a as STORAGE_KEYS, b as StorageKey } from '../types-BdjsGANq.cjs';
3
+
4
+ /**
5
+ * LocalStorage adapter for web browsers.
6
+ * This is the default storage adapter used when running in a browser environment.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createBaasix, LocalStorageAdapter } from '@baasix/sdk';
11
+ *
12
+ * const client = createBaasix({
13
+ * url: 'https://api.example.com',
14
+ * storage: new LocalStorageAdapter(),
15
+ * });
16
+ * ```
17
+ */
18
+ declare class LocalStorageAdapter implements StorageAdapter {
19
+ private prefix;
20
+ constructor(prefix?: string);
21
+ private getKey;
22
+ get(key: string): string | null;
23
+ set(key: string, value: string): void;
24
+ remove(key: string): void;
25
+ clear(): void;
26
+ }
27
+
28
+ /**
29
+ * In-memory storage adapter.
30
+ * Useful for server-side rendering (SSR), testing, or environments without persistent storage.
31
+ * Data is lost when the application restarts.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * import { createBaasix, MemoryStorageAdapter } from '@baasix/sdk';
36
+ *
37
+ * const client = createBaasix({
38
+ * url: 'https://api.example.com',
39
+ * storage: new MemoryStorageAdapter(),
40
+ * });
41
+ * ```
42
+ */
43
+ declare class MemoryStorageAdapter implements StorageAdapter {
44
+ private store;
45
+ constructor();
46
+ get(key: string): string | null;
47
+ set(key: string, value: string): void;
48
+ remove(key: string): void;
49
+ clear(): void;
50
+ /**
51
+ * Get all stored keys (useful for debugging)
52
+ */
53
+ keys(): string[];
54
+ /**
55
+ * Get the number of stored items
56
+ */
57
+ size(): number;
58
+ }
59
+
60
+ /**
61
+ * Type definition for AsyncStorage-like interface (React Native)
62
+ */
63
+ interface AsyncStorageLike {
64
+ getItem(key: string): Promise<string | null>;
65
+ setItem(key: string, value: string): Promise<void>;
66
+ removeItem(key: string): Promise<void>;
67
+ multiRemove?(keys: string[]): Promise<void>;
68
+ getAllKeys?(): Promise<readonly string[]>;
69
+ }
70
+ /**
71
+ * AsyncStorage adapter for React Native.
72
+ * Wraps @react-native-async-storage/async-storage or any compatible implementation.
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * import { createBaasix, AsyncStorageAdapter } from '@baasix/sdk';
77
+ * import AsyncStorage from '@react-native-async-storage/async-storage';
78
+ *
79
+ * const client = createBaasix({
80
+ * url: 'https://api.example.com',
81
+ * storage: new AsyncStorageAdapter(AsyncStorage),
82
+ * });
83
+ * ```
84
+ */
85
+ declare class AsyncStorageAdapter implements StorageAdapter {
86
+ private asyncStorage;
87
+ private prefix;
88
+ constructor(asyncStorage: AsyncStorageLike, prefix?: string);
89
+ private getKey;
90
+ get(key: string): Promise<string | null>;
91
+ set(key: string, value: string): Promise<void>;
92
+ remove(key: string): Promise<void>;
93
+ clear(): Promise<void>;
94
+ }
95
+
96
+ export { AsyncStorageAdapter, LocalStorageAdapter, MemoryStorageAdapter, StorageAdapter };
@@ -0,0 +1,96 @@
1
+ import { S as StorageAdapter } from '../types-BdjsGANq.js';
2
+ export { a as STORAGE_KEYS, b as StorageKey } from '../types-BdjsGANq.js';
3
+
4
+ /**
5
+ * LocalStorage adapter for web browsers.
6
+ * This is the default storage adapter used when running in a browser environment.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createBaasix, LocalStorageAdapter } from '@baasix/sdk';
11
+ *
12
+ * const client = createBaasix({
13
+ * url: 'https://api.example.com',
14
+ * storage: new LocalStorageAdapter(),
15
+ * });
16
+ * ```
17
+ */
18
+ declare class LocalStorageAdapter implements StorageAdapter {
19
+ private prefix;
20
+ constructor(prefix?: string);
21
+ private getKey;
22
+ get(key: string): string | null;
23
+ set(key: string, value: string): void;
24
+ remove(key: string): void;
25
+ clear(): void;
26
+ }
27
+
28
+ /**
29
+ * In-memory storage adapter.
30
+ * Useful for server-side rendering (SSR), testing, or environments without persistent storage.
31
+ * Data is lost when the application restarts.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * import { createBaasix, MemoryStorageAdapter } from '@baasix/sdk';
36
+ *
37
+ * const client = createBaasix({
38
+ * url: 'https://api.example.com',
39
+ * storage: new MemoryStorageAdapter(),
40
+ * });
41
+ * ```
42
+ */
43
+ declare class MemoryStorageAdapter implements StorageAdapter {
44
+ private store;
45
+ constructor();
46
+ get(key: string): string | null;
47
+ set(key: string, value: string): void;
48
+ remove(key: string): void;
49
+ clear(): void;
50
+ /**
51
+ * Get all stored keys (useful for debugging)
52
+ */
53
+ keys(): string[];
54
+ /**
55
+ * Get the number of stored items
56
+ */
57
+ size(): number;
58
+ }
59
+
60
+ /**
61
+ * Type definition for AsyncStorage-like interface (React Native)
62
+ */
63
+ interface AsyncStorageLike {
64
+ getItem(key: string): Promise<string | null>;
65
+ setItem(key: string, value: string): Promise<void>;
66
+ removeItem(key: string): Promise<void>;
67
+ multiRemove?(keys: string[]): Promise<void>;
68
+ getAllKeys?(): Promise<readonly string[]>;
69
+ }
70
+ /**
71
+ * AsyncStorage adapter for React Native.
72
+ * Wraps @react-native-async-storage/async-storage or any compatible implementation.
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * import { createBaasix, AsyncStorageAdapter } from '@baasix/sdk';
77
+ * import AsyncStorage from '@react-native-async-storage/async-storage';
78
+ *
79
+ * const client = createBaasix({
80
+ * url: 'https://api.example.com',
81
+ * storage: new AsyncStorageAdapter(AsyncStorage),
82
+ * });
83
+ * ```
84
+ */
85
+ declare class AsyncStorageAdapter implements StorageAdapter {
86
+ private asyncStorage;
87
+ private prefix;
88
+ constructor(asyncStorage: AsyncStorageLike, prefix?: string);
89
+ private getKey;
90
+ get(key: string): Promise<string | null>;
91
+ set(key: string, value: string): Promise<void>;
92
+ remove(key: string): Promise<void>;
93
+ clear(): Promise<void>;
94
+ }
95
+
96
+ export { AsyncStorageAdapter, LocalStorageAdapter, MemoryStorageAdapter, StorageAdapter };
@@ -0,0 +1,157 @@
1
+ // src/storage/types.ts
2
+ var STORAGE_KEYS = {
3
+ ACCESS_TOKEN: "baasix_access_token",
4
+ REFRESH_TOKEN: "baasix_refresh_token",
5
+ TOKEN_EXPIRY: "baasix_token_expiry",
6
+ USER: "baasix_user",
7
+ TENANT: "baasix_tenant"
8
+ };
9
+
10
+ // src/storage/localStorage.ts
11
+ var LocalStorageAdapter = class {
12
+ prefix;
13
+ constructor(prefix = "baasix_") {
14
+ this.prefix = prefix;
15
+ }
16
+ getKey(key) {
17
+ if (key.startsWith(this.prefix)) {
18
+ return key;
19
+ }
20
+ return `${this.prefix}${key}`;
21
+ }
22
+ get(key) {
23
+ if (typeof window === "undefined" || !window.localStorage) {
24
+ return null;
25
+ }
26
+ try {
27
+ return localStorage.getItem(this.getKey(key));
28
+ } catch {
29
+ console.warn(`[Baasix SDK] Failed to get item from localStorage: ${key}`);
30
+ return null;
31
+ }
32
+ }
33
+ set(key, value) {
34
+ if (typeof window === "undefined" || !window.localStorage) {
35
+ return;
36
+ }
37
+ try {
38
+ localStorage.setItem(this.getKey(key), value);
39
+ } catch {
40
+ console.warn(`[Baasix SDK] Failed to set item in localStorage: ${key}`);
41
+ }
42
+ }
43
+ remove(key) {
44
+ if (typeof window === "undefined" || !window.localStorage) {
45
+ return;
46
+ }
47
+ try {
48
+ localStorage.removeItem(this.getKey(key));
49
+ } catch {
50
+ console.warn(`[Baasix SDK] Failed to remove item from localStorage: ${key}`);
51
+ }
52
+ }
53
+ clear() {
54
+ if (typeof window === "undefined" || !window.localStorage) {
55
+ return;
56
+ }
57
+ try {
58
+ const keysToRemove = [];
59
+ for (let i = 0; i < localStorage.length; i++) {
60
+ const key = localStorage.key(i);
61
+ if (key?.startsWith(this.prefix)) {
62
+ keysToRemove.push(key);
63
+ }
64
+ }
65
+ keysToRemove.forEach((key) => localStorage.removeItem(key));
66
+ } catch {
67
+ console.warn("[Baasix SDK] Failed to clear localStorage");
68
+ }
69
+ }
70
+ };
71
+
72
+ // src/storage/memoryStorage.ts
73
+ var MemoryStorageAdapter = class {
74
+ store;
75
+ constructor() {
76
+ this.store = /* @__PURE__ */ new Map();
77
+ }
78
+ get(key) {
79
+ return this.store.get(key) ?? null;
80
+ }
81
+ set(key, value) {
82
+ this.store.set(key, value);
83
+ }
84
+ remove(key) {
85
+ this.store.delete(key);
86
+ }
87
+ clear() {
88
+ this.store.clear();
89
+ }
90
+ /**
91
+ * Get all stored keys (useful for debugging)
92
+ */
93
+ keys() {
94
+ return Array.from(this.store.keys());
95
+ }
96
+ /**
97
+ * Get the number of stored items
98
+ */
99
+ size() {
100
+ return this.store.size;
101
+ }
102
+ };
103
+
104
+ // src/storage/asyncStorage.ts
105
+ var AsyncStorageAdapter = class {
106
+ asyncStorage;
107
+ prefix;
108
+ constructor(asyncStorage, prefix = "baasix_") {
109
+ this.asyncStorage = asyncStorage;
110
+ this.prefix = prefix;
111
+ }
112
+ getKey(key) {
113
+ if (key.startsWith(this.prefix)) {
114
+ return key;
115
+ }
116
+ return `${this.prefix}${key}`;
117
+ }
118
+ async get(key) {
119
+ try {
120
+ return await this.asyncStorage.getItem(this.getKey(key));
121
+ } catch {
122
+ console.warn(`[Baasix SDK] Failed to get item from AsyncStorage: ${key}`);
123
+ return null;
124
+ }
125
+ }
126
+ async set(key, value) {
127
+ try {
128
+ await this.asyncStorage.setItem(this.getKey(key), value);
129
+ } catch {
130
+ console.warn(`[Baasix SDK] Failed to set item in AsyncStorage: ${key}`);
131
+ }
132
+ }
133
+ async remove(key) {
134
+ try {
135
+ await this.asyncStorage.removeItem(this.getKey(key));
136
+ } catch {
137
+ console.warn(`[Baasix SDK] Failed to remove item from AsyncStorage: ${key}`);
138
+ }
139
+ }
140
+ async clear() {
141
+ try {
142
+ if (this.asyncStorage.getAllKeys && this.asyncStorage.multiRemove) {
143
+ const allKeys = await this.asyncStorage.getAllKeys();
144
+ const sdkKeys = allKeys.filter((key) => key.startsWith(this.prefix));
145
+ if (sdkKeys.length > 0) {
146
+ await this.asyncStorage.multiRemove(sdkKeys);
147
+ }
148
+ }
149
+ } catch {
150
+ console.warn("[Baasix SDK] Failed to clear AsyncStorage");
151
+ }
152
+ }
153
+ };
154
+
155
+ export { AsyncStorageAdapter, LocalStorageAdapter, MemoryStorageAdapter, STORAGE_KEYS };
156
+ //# sourceMappingURL=index.js.map
157
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/storage/types.ts","../../src/storage/localStorage.ts","../../src/storage/memoryStorage.ts","../../src/storage/asyncStorage.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Storage adapter interface for persisting authentication state.\n * Implement this interface to create custom storage solutions (e.g., AsyncStorage for React Native).\n */\nexport interface StorageAdapter {\n /**\n * Get a value from storage\n * @param key - The storage key\n * @returns The stored value or null if not found\n */\n get(key: string): Promise<string | null> | string | null;\n\n /**\n * Set a value in storage\n * @param key - The storage key\n * @param value - The value to store\n */\n set(key: string, value: string): Promise<void> | void;\n\n /**\n * Remove a value from storage\n * @param key - The storage key\n */\n remove(key: string): Promise<void> | void;\n\n /**\n * Clear all SDK-related values from storage\n */\n clear?(): Promise<void> | void;\n}\n\n/**\n * Storage keys used by the SDK\n */\nexport const STORAGE_KEYS = {\n ACCESS_TOKEN: \"baasix_access_token\",\n REFRESH_TOKEN: \"baasix_refresh_token\",\n TOKEN_EXPIRY: \"baasix_token_expiry\",\n USER: \"baasix_user\",\n TENANT: \"baasix_tenant\",\n} as const;\n\nexport type StorageKey = (typeof STORAGE_KEYS)[keyof typeof STORAGE_KEYS];\n","import type { StorageAdapter } from \"./types\";\n\n/**\n * LocalStorage adapter for web browsers.\n * This is the default storage adapter used when running in a browser environment.\n *\n * @example\n * ```typescript\n * import { createBaasix, LocalStorageAdapter } from '@baasix/sdk';\n *\n * const client = createBaasix({\n * url: 'https://api.example.com',\n * storage: new LocalStorageAdapter(),\n * });\n * ```\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private prefix: string;\n\n constructor(prefix = \"baasix_\") {\n this.prefix = prefix;\n }\n\n private getKey(key: string): string {\n // If key already starts with prefix, don't add it again\n if (key.startsWith(this.prefix)) {\n return key;\n }\n return `${this.prefix}${key}`;\n }\n\n get(key: string): string | null {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return null;\n }\n try {\n return localStorage.getItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to get item from localStorage: ${key}`);\n return null;\n }\n }\n\n set(key: string, value: string): void {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return;\n }\n try {\n localStorage.setItem(this.getKey(key), value);\n } catch {\n console.warn(`[Baasix SDK] Failed to set item in localStorage: ${key}`);\n }\n }\n\n remove(key: string): void {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return;\n }\n try {\n localStorage.removeItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to remove item from localStorage: ${key}`);\n }\n }\n\n clear(): void {\n if (typeof window === \"undefined\" || !window.localStorage) {\n return;\n }\n try {\n const keysToRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.prefix)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach((key) => localStorage.removeItem(key));\n } catch {\n console.warn(\"[Baasix SDK] Failed to clear localStorage\");\n }\n }\n}\n","import type { StorageAdapter } from \"./types\";\n\n/**\n * In-memory storage adapter.\n * Useful for server-side rendering (SSR), testing, or environments without persistent storage.\n * Data is lost when the application restarts.\n *\n * @example\n * ```typescript\n * import { createBaasix, MemoryStorageAdapter } from '@baasix/sdk';\n *\n * const client = createBaasix({\n * url: 'https://api.example.com',\n * storage: new MemoryStorageAdapter(),\n * });\n * ```\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private store: Map<string, string>;\n\n constructor() {\n this.store = new Map();\n }\n\n get(key: string): string | null {\n return this.store.get(key) ?? null;\n }\n\n set(key: string, value: string): void {\n this.store.set(key, value);\n }\n\n remove(key: string): void {\n this.store.delete(key);\n }\n\n clear(): void {\n this.store.clear();\n }\n\n /**\n * Get all stored keys (useful for debugging)\n */\n keys(): string[] {\n return Array.from(this.store.keys());\n }\n\n /**\n * Get the number of stored items\n */\n size(): number {\n return this.store.size;\n }\n}\n","import type { StorageAdapter } from \"./types\";\n\n/**\n * Type definition for AsyncStorage-like interface (React Native)\n */\ninterface AsyncStorageLike {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n multiRemove?(keys: string[]): Promise<void>;\n getAllKeys?(): Promise<readonly string[]>;\n}\n\n/**\n * AsyncStorage adapter for React Native.\n * Wraps @react-native-async-storage/async-storage or any compatible implementation.\n *\n * @example\n * ```typescript\n * import { createBaasix, AsyncStorageAdapter } from '@baasix/sdk';\n * import AsyncStorage from '@react-native-async-storage/async-storage';\n *\n * const client = createBaasix({\n * url: 'https://api.example.com',\n * storage: new AsyncStorageAdapter(AsyncStorage),\n * });\n * ```\n */\nexport class AsyncStorageAdapter implements StorageAdapter {\n private asyncStorage: AsyncStorageLike;\n private prefix: string;\n\n constructor(asyncStorage: AsyncStorageLike, prefix = \"baasix_\") {\n this.asyncStorage = asyncStorage;\n this.prefix = prefix;\n }\n\n private getKey(key: string): string {\n if (key.startsWith(this.prefix)) {\n return key;\n }\n return `${this.prefix}${key}`;\n }\n\n async get(key: string): Promise<string | null> {\n try {\n return await this.asyncStorage.getItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to get item from AsyncStorage: ${key}`);\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n try {\n await this.asyncStorage.setItem(this.getKey(key), value);\n } catch {\n console.warn(`[Baasix SDK] Failed to set item in AsyncStorage: ${key}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n await this.asyncStorage.removeItem(this.getKey(key));\n } catch {\n console.warn(`[Baasix SDK] Failed to remove item from AsyncStorage: ${key}`);\n }\n }\n\n async clear(): Promise<void> {\n try {\n if (this.asyncStorage.getAllKeys && this.asyncStorage.multiRemove) {\n const allKeys = await this.asyncStorage.getAllKeys();\n const sdkKeys = allKeys.filter((key) => key.startsWith(this.prefix));\n if (sdkKeys.length > 0) {\n await this.asyncStorage.multiRemove(sdkKeys);\n }\n }\n } catch {\n console.warn(\"[Baasix SDK] Failed to clear AsyncStorage\");\n }\n }\n}\n"]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Storage adapter interface for persisting authentication state.
3
+ * Implement this interface to create custom storage solutions (e.g., AsyncStorage for React Native).
4
+ */
5
+ interface StorageAdapter {
6
+ /**
7
+ * Get a value from storage
8
+ * @param key - The storage key
9
+ * @returns The stored value or null if not found
10
+ */
11
+ get(key: string): Promise<string | null> | string | null;
12
+ /**
13
+ * Set a value in storage
14
+ * @param key - The storage key
15
+ * @param value - The value to store
16
+ */
17
+ set(key: string, value: string): Promise<void> | void;
18
+ /**
19
+ * Remove a value from storage
20
+ * @param key - The storage key
21
+ */
22
+ remove(key: string): Promise<void> | void;
23
+ /**
24
+ * Clear all SDK-related values from storage
25
+ */
26
+ clear?(): Promise<void> | void;
27
+ }
28
+ /**
29
+ * Storage keys used by the SDK
30
+ */
31
+ declare const STORAGE_KEYS: {
32
+ readonly ACCESS_TOKEN: "baasix_access_token";
33
+ readonly REFRESH_TOKEN: "baasix_refresh_token";
34
+ readonly TOKEN_EXPIRY: "baasix_token_expiry";
35
+ readonly USER: "baasix_user";
36
+ readonly TENANT: "baasix_tenant";
37
+ };
38
+ type StorageKey = (typeof STORAGE_KEYS)[keyof typeof STORAGE_KEYS];
39
+
40
+ export { type StorageAdapter as S, STORAGE_KEYS as a, type StorageKey as b };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Storage adapter interface for persisting authentication state.
3
+ * Implement this interface to create custom storage solutions (e.g., AsyncStorage for React Native).
4
+ */
5
+ interface StorageAdapter {
6
+ /**
7
+ * Get a value from storage
8
+ * @param key - The storage key
9
+ * @returns The stored value or null if not found
10
+ */
11
+ get(key: string): Promise<string | null> | string | null;
12
+ /**
13
+ * Set a value in storage
14
+ * @param key - The storage key
15
+ * @param value - The value to store
16
+ */
17
+ set(key: string, value: string): Promise<void> | void;
18
+ /**
19
+ * Remove a value from storage
20
+ * @param key - The storage key
21
+ */
22
+ remove(key: string): Promise<void> | void;
23
+ /**
24
+ * Clear all SDK-related values from storage
25
+ */
26
+ clear?(): Promise<void> | void;
27
+ }
28
+ /**
29
+ * Storage keys used by the SDK
30
+ */
31
+ declare const STORAGE_KEYS: {
32
+ readonly ACCESS_TOKEN: "baasix_access_token";
33
+ readonly REFRESH_TOKEN: "baasix_refresh_token";
34
+ readonly TOKEN_EXPIRY: "baasix_token_expiry";
35
+ readonly USER: "baasix_user";
36
+ readonly TENANT: "baasix_tenant";
37
+ };
38
+ type StorageKey = (typeof STORAGE_KEYS)[keyof typeof STORAGE_KEYS];
39
+
40
+ export { type StorageAdapter as S, STORAGE_KEYS as a, type StorageKey as b };
package/package.json ADDED
@@ -0,0 +1,107 @@
1
+ {
2
+ "name": "@tspvivek/baasix-sdk",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "Official JavaScript/TypeScript SDK for Baasix Backend-as-a-Service",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
19
+ },
20
+ "./auth": {
21
+ "import": {
22
+ "types": "./dist/modules/auth.d.ts",
23
+ "default": "./dist/modules/auth.js"
24
+ },
25
+ "require": {
26
+ "types": "./dist/modules/auth.d.cts",
27
+ "default": "./dist/modules/auth.cjs"
28
+ }
29
+ },
30
+ "./items": {
31
+ "import": {
32
+ "types": "./dist/modules/items.d.ts",
33
+ "default": "./dist/modules/items.js"
34
+ },
35
+ "require": {
36
+ "types": "./dist/modules/items.d.cts",
37
+ "default": "./dist/modules/items.cjs"
38
+ }
39
+ },
40
+ "./storage": {
41
+ "import": {
42
+ "types": "./dist/storage/index.d.ts",
43
+ "default": "./dist/storage/index.js"
44
+ },
45
+ "require": {
46
+ "types": "./dist/storage/index.d.cts",
47
+ "default": "./dist/storage/index.cjs"
48
+ }
49
+ }
50
+ },
51
+ "files": [
52
+ "dist",
53
+ "README.md",
54
+ "LICENSE"
55
+ ],
56
+ "scripts": {
57
+ "build": "tsup",
58
+ "dev": "tsup --watch",
59
+ "test": "vitest",
60
+ "test:run": "vitest run",
61
+ "lint": "eslint src --ext .ts",
62
+ "typecheck": "tsc --noEmit",
63
+ "prepublishOnly": "npm run build"
64
+ },
65
+ "keywords": [
66
+ "baasix",
67
+ "baas",
68
+ "backend-as-a-service",
69
+ "api",
70
+ "sdk",
71
+ "typescript",
72
+ "javascript",
73
+ "react-native",
74
+ "rest-api"
75
+ ],
76
+ "author": "Vivek Palanisamy",
77
+ "license": "MIT",
78
+ "repository": {
79
+ "type": "git",
80
+ "url": "https://github.com/tspvivek/baasix-sdk.git"
81
+ },
82
+ "homepage": "https://www.baasix.com",
83
+ "bugs": {
84
+ "url": "https://github.com/tspvivek/baasix-sdk/issues"
85
+ },
86
+ "publishConfig": {
87
+ "access": "public"
88
+ },
89
+ "devDependencies": {
90
+ "@types/node": "^20.10.0",
91
+ "eslint": "^8.55.0",
92
+ "tsup": "^8.0.1",
93
+ "typescript": "^5.3.3",
94
+ "vitest": "^1.1.0"
95
+ },
96
+ "peerDependencies": {
97
+ "@react-native-async-storage/async-storage": ">=1.0.0"
98
+ },
99
+ "peerDependenciesMeta": {
100
+ "@react-native-async-storage/async-storage": {
101
+ "optional": true
102
+ }
103
+ },
104
+ "engines": {
105
+ "node": ">=18.0.0"
106
+ }
107
+ }