foundation-sdk 0.1.13 → 0.2.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/README.md +316 -144
- package/dist/index.cjs +2 -288
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +210 -0
- package/dist/index.d.ts +210 -3
- package/dist/index.js +2 -288
- package/dist/index.js.map +1 -1
- package/package.json +21 -30
- package/dist/client.d.ts +0 -4
- package/dist/client.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types.d.ts +0 -238
- package/dist/types.d.ts.map +0 -1
- package/dist/vue.cjs +0 -90
- package/dist/vue.cjs.map +0 -1
- package/dist/vue.d.ts +0 -34
- package/dist/vue.d.ts.map +0 -1
- package/dist/vue.js +0 -90
- package/dist/vue.js.map +0 -1
package/dist/types.d.ts
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
export interface User {
|
|
2
|
-
id: string;
|
|
3
|
-
email: string;
|
|
4
|
-
name?: string;
|
|
5
|
-
picture?: string;
|
|
6
|
-
[key: string]: unknown;
|
|
7
|
-
}
|
|
8
|
-
export interface Theme {
|
|
9
|
-
isDark: boolean;
|
|
10
|
-
mode: 'light' | 'dark' | 'system';
|
|
11
|
-
}
|
|
12
|
-
export interface RouterState {
|
|
13
|
-
path: string;
|
|
14
|
-
query: Record<string, string>;
|
|
15
|
-
hash: string;
|
|
16
|
-
}
|
|
17
|
-
export interface EntityDefinition {
|
|
18
|
-
name: string;
|
|
19
|
-
schema?: Record<string, unknown>;
|
|
20
|
-
methods?: string[];
|
|
21
|
-
}
|
|
22
|
-
export interface AuthService {
|
|
23
|
-
readonly user: User | null;
|
|
24
|
-
readonly isAuthenticated: boolean;
|
|
25
|
-
getToken(): Promise<string>;
|
|
26
|
-
login(): Promise<void>;
|
|
27
|
-
logout(): Promise<void>;
|
|
28
|
-
onChange(callback: (user: User | null) => void): () => void;
|
|
29
|
-
}
|
|
30
|
-
export interface ThemeService {
|
|
31
|
-
readonly isDark: boolean;
|
|
32
|
-
readonly mode: 'light' | 'dark' | 'system';
|
|
33
|
-
setTheme(mode: 'light' | 'dark' | 'system'): Promise<void>;
|
|
34
|
-
toggle(): Promise<void>;
|
|
35
|
-
onChange(callback: (theme: Theme) => void): () => void;
|
|
36
|
-
}
|
|
37
|
-
export interface RouterService {
|
|
38
|
-
readonly path: string;
|
|
39
|
-
readonly query: Record<string, string>;
|
|
40
|
-
readonly hash: string;
|
|
41
|
-
push(path: string, options?: {
|
|
42
|
-
query?: Record<string, string>;
|
|
43
|
-
hash?: string;
|
|
44
|
-
}): Promise<void>;
|
|
45
|
-
replace(path: string, options?: {
|
|
46
|
-
query?: Record<string, string>;
|
|
47
|
-
hash?: string;
|
|
48
|
-
}): Promise<void>;
|
|
49
|
-
setQuery(params: Record<string, string>, options?: {
|
|
50
|
-
replace?: boolean;
|
|
51
|
-
}): Promise<void>;
|
|
52
|
-
onChange(callback: (route: RouterState) => void): () => void;
|
|
53
|
-
}
|
|
54
|
-
export interface DbService {
|
|
55
|
-
list<T = unknown>(entity: string, options?: {
|
|
56
|
-
filters?: Record<string, unknown>;
|
|
57
|
-
limit?: number;
|
|
58
|
-
cursor?: string;
|
|
59
|
-
orderBy?: string;
|
|
60
|
-
orderDir?: 'asc' | 'desc';
|
|
61
|
-
}): Promise<{
|
|
62
|
-
items: T[];
|
|
63
|
-
nextCursor?: string;
|
|
64
|
-
}>;
|
|
65
|
-
get<T = unknown>(entity: string, id: string): Promise<T>;
|
|
66
|
-
create<T = unknown>(entity: string, data: Partial<T>): Promise<T>;
|
|
67
|
-
update<T = unknown>(entity: string, id: string, updates: Partial<T>): Promise<T>;
|
|
68
|
-
delete(entity: string, id: string): Promise<void>;
|
|
69
|
-
}
|
|
70
|
-
export interface UIService {
|
|
71
|
-
toast(message: string, type?: 'success' | 'error' | 'warn' | 'info'): Promise<void>;
|
|
72
|
-
confirm(message: string): Promise<{
|
|
73
|
-
confirmed: boolean;
|
|
74
|
-
}>;
|
|
75
|
-
loading: {
|
|
76
|
-
show(message?: string): Promise<void>;
|
|
77
|
-
hide(): Promise<void>;
|
|
78
|
-
};
|
|
79
|
-
banner: {
|
|
80
|
-
show(message: string, options?: {
|
|
81
|
-
type?: 'info' | 'warning' | 'error' | 'success';
|
|
82
|
-
dismissible?: boolean;
|
|
83
|
-
}): Promise<{
|
|
84
|
-
bannerId: string;
|
|
85
|
-
}>;
|
|
86
|
-
hide(bannerId: string): Promise<void>;
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
export interface StorageService {
|
|
90
|
-
upload(options: {
|
|
91
|
-
name: string;
|
|
92
|
-
type: string;
|
|
93
|
-
size: number;
|
|
94
|
-
data: string;
|
|
95
|
-
folder?: string;
|
|
96
|
-
metadata?: Record<string, unknown>;
|
|
97
|
-
}): Promise<{
|
|
98
|
-
id: string;
|
|
99
|
-
url: string;
|
|
100
|
-
name: string;
|
|
101
|
-
}>;
|
|
102
|
-
get(fileId: string): Promise<FileMetadata>;
|
|
103
|
-
delete(fileId: string): Promise<void>;
|
|
104
|
-
list(options?: {
|
|
105
|
-
folder?: string;
|
|
106
|
-
limit?: number;
|
|
107
|
-
cursor?: string;
|
|
108
|
-
}): Promise<{
|
|
109
|
-
items: FileMetadata[];
|
|
110
|
-
nextCursor?: string;
|
|
111
|
-
}>;
|
|
112
|
-
}
|
|
113
|
-
export interface FilesService {
|
|
114
|
-
initiate(options: {
|
|
115
|
-
name: string;
|
|
116
|
-
contentType: string;
|
|
117
|
-
contentLength: number;
|
|
118
|
-
metadata?: Record<string, unknown>;
|
|
119
|
-
sha256: string;
|
|
120
|
-
}): Promise<{
|
|
121
|
-
id: string;
|
|
122
|
-
name: string;
|
|
123
|
-
signedUrl: string;
|
|
124
|
-
signedData: Record<string, string>;
|
|
125
|
-
}>;
|
|
126
|
-
/**
|
|
127
|
-
* Upload a file through the parent container (avoids CORS issues with S3).
|
|
128
|
-
* The parent handles both getting the presigned URL and uploading to S3.
|
|
129
|
-
*/
|
|
130
|
-
upload(options: {
|
|
131
|
-
name: string;
|
|
132
|
-
contentType: string;
|
|
133
|
-
file: ArrayBuffer | Blob | File;
|
|
134
|
-
sha256: string;
|
|
135
|
-
}): Promise<{
|
|
136
|
-
id: string;
|
|
137
|
-
name: string;
|
|
138
|
-
status: string;
|
|
139
|
-
s3UploadComplete: boolean;
|
|
140
|
-
}>;
|
|
141
|
-
get(fileId: string): Promise<FileMetadata>;
|
|
142
|
-
delete(fileId: string): Promise<void>;
|
|
143
|
-
list(options?: {
|
|
144
|
-
limit?: number;
|
|
145
|
-
cursor?: string;
|
|
146
|
-
}): Promise<{
|
|
147
|
-
items: FileMetadata[];
|
|
148
|
-
nextCursor?: string;
|
|
149
|
-
}>;
|
|
150
|
-
}
|
|
151
|
-
export interface FileMetadata {
|
|
152
|
-
id: string;
|
|
153
|
-
name: string;
|
|
154
|
-
type: string;
|
|
155
|
-
size: number;
|
|
156
|
-
url: string;
|
|
157
|
-
folder?: string;
|
|
158
|
-
metadata?: Record<string, unknown>;
|
|
159
|
-
createdAt: string;
|
|
160
|
-
}
|
|
161
|
-
export interface LogService {
|
|
162
|
-
info(message: string, data?: Record<string, unknown>): void;
|
|
163
|
-
warn(message: string, data?: Record<string, unknown>): void;
|
|
164
|
-
error(message: string, data?: Record<string, unknown>): void;
|
|
165
|
-
event(name: string, properties?: Record<string, unknown>): void;
|
|
166
|
-
}
|
|
167
|
-
export interface StuffItem<T = unknown> {
|
|
168
|
-
key: string;
|
|
169
|
-
namespace: string;
|
|
170
|
-
value: T;
|
|
171
|
-
type: string;
|
|
172
|
-
expires: number;
|
|
173
|
-
}
|
|
174
|
-
export interface StuffService {
|
|
175
|
-
set<T = unknown>(key: string, namespace: string, value: T): Promise<StuffItem<T>>;
|
|
176
|
-
get<T = unknown>(key: string, namespace: string): Promise<StuffItem<T>>;
|
|
177
|
-
list<T = unknown>(key: string): Promise<StuffItem<T>[]>;
|
|
178
|
-
delete(key: string, namespace: string): Promise<void>;
|
|
179
|
-
}
|
|
180
|
-
export interface ConfigService {
|
|
181
|
-
readonly features: Record<string, unknown>;
|
|
182
|
-
readonly app: {
|
|
183
|
-
id?: string;
|
|
184
|
-
name?: string;
|
|
185
|
-
environment?: string;
|
|
186
|
-
};
|
|
187
|
-
get(key: string): Promise<unknown>;
|
|
188
|
-
}
|
|
189
|
-
export interface EntityChangeEvent {
|
|
190
|
-
changeType: string;
|
|
191
|
-
entityId?: string;
|
|
192
|
-
id?: string;
|
|
193
|
-
namespace?: string;
|
|
194
|
-
timestamp?: number;
|
|
195
|
-
}
|
|
196
|
-
export interface FoundationClient {
|
|
197
|
-
readonly ready: Promise<void>;
|
|
198
|
-
readonly isReady: boolean;
|
|
199
|
-
auth: AuthService;
|
|
200
|
-
theme: ThemeService;
|
|
201
|
-
router: RouterService;
|
|
202
|
-
db: DbService;
|
|
203
|
-
ui: UIService;
|
|
204
|
-
storage: StorageService;
|
|
205
|
-
files: FilesService;
|
|
206
|
-
log: LogService;
|
|
207
|
-
config: ConfigService;
|
|
208
|
-
stuff: StuffService;
|
|
209
|
-
onEntityChange(callback: (event: EntityChangeEvent) => void): () => void;
|
|
210
|
-
readonly entities: EntityDefinition[];
|
|
211
|
-
}
|
|
212
|
-
export interface SDKReadyPayload {
|
|
213
|
-
user?: User | null;
|
|
214
|
-
config?: {
|
|
215
|
-
features?: Record<string, unknown>;
|
|
216
|
-
app?: {
|
|
217
|
-
id?: string;
|
|
218
|
-
name?: string;
|
|
219
|
-
environment?: string;
|
|
220
|
-
};
|
|
221
|
-
};
|
|
222
|
-
theme?: Theme;
|
|
223
|
-
router?: RouterState;
|
|
224
|
-
entities?: EntityDefinition[];
|
|
225
|
-
}
|
|
226
|
-
export interface SDKMessage {
|
|
227
|
-
id: number;
|
|
228
|
-
namespace: string;
|
|
229
|
-
type: string;
|
|
230
|
-
data: Record<string, unknown>;
|
|
231
|
-
}
|
|
232
|
-
export interface SDKResponse {
|
|
233
|
-
id: number;
|
|
234
|
-
success: boolean;
|
|
235
|
-
data?: unknown;
|
|
236
|
-
error?: string;
|
|
237
|
-
}
|
|
238
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/vue.cjs
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const vue = require("vue");
|
|
4
|
-
const index = require("./index.cjs");
|
|
5
|
-
let client = null;
|
|
6
|
-
let isReady = null;
|
|
7
|
-
let user = null;
|
|
8
|
-
let isDark = null;
|
|
9
|
-
let themeMode = null;
|
|
10
|
-
let routerPath = null;
|
|
11
|
-
let routerQuery = null;
|
|
12
|
-
let routerHash = null;
|
|
13
|
-
let entities = null;
|
|
14
|
-
let initialized = false;
|
|
15
|
-
function initializeState() {
|
|
16
|
-
if (initialized) return;
|
|
17
|
-
client = index.createFoundationClient();
|
|
18
|
-
isReady = vue.ref(false);
|
|
19
|
-
user = vue.shallowRef(null);
|
|
20
|
-
isDark = vue.ref(false);
|
|
21
|
-
themeMode = vue.ref("system");
|
|
22
|
-
routerPath = vue.ref("/");
|
|
23
|
-
routerQuery = vue.shallowRef({});
|
|
24
|
-
routerHash = vue.ref("");
|
|
25
|
-
entities = vue.shallowRef([]);
|
|
26
|
-
client.ready.then(() => {
|
|
27
|
-
isReady.value = true;
|
|
28
|
-
user.value = client.auth.user;
|
|
29
|
-
isDark.value = client.theme.isDark;
|
|
30
|
-
themeMode.value = client.theme.mode;
|
|
31
|
-
routerPath.value = client.router.path;
|
|
32
|
-
routerQuery.value = client.router.query;
|
|
33
|
-
routerHash.value = client.router.hash;
|
|
34
|
-
entities.value = client.entities;
|
|
35
|
-
});
|
|
36
|
-
client.auth.onChange((newUser) => {
|
|
37
|
-
user.value = newUser;
|
|
38
|
-
});
|
|
39
|
-
client.theme.onChange((theme) => {
|
|
40
|
-
isDark.value = theme.isDark;
|
|
41
|
-
themeMode.value = theme.mode;
|
|
42
|
-
});
|
|
43
|
-
client.router.onChange((route) => {
|
|
44
|
-
routerPath.value = route.path;
|
|
45
|
-
routerQuery.value = route.query;
|
|
46
|
-
routerHash.value = route.hash;
|
|
47
|
-
});
|
|
48
|
-
initialized = true;
|
|
49
|
-
}
|
|
50
|
-
function useFoundation() {
|
|
51
|
-
initializeState();
|
|
52
|
-
return {
|
|
53
|
-
// Reactive state (readonly to prevent external mutation)
|
|
54
|
-
isReady: vue.readonly(isReady),
|
|
55
|
-
user: vue.readonly(user),
|
|
56
|
-
isDark: vue.readonly(isDark),
|
|
57
|
-
themeMode: vue.readonly(themeMode),
|
|
58
|
-
routerPath: vue.readonly(routerPath),
|
|
59
|
-
routerQuery: vue.readonly(routerQuery),
|
|
60
|
-
routerHash: vue.readonly(routerHash),
|
|
61
|
-
entities: vue.readonly(entities),
|
|
62
|
-
// Computed helpers
|
|
63
|
-
get isAuthenticated() {
|
|
64
|
-
return !!user.value;
|
|
65
|
-
},
|
|
66
|
-
get currentUser() {
|
|
67
|
-
return user.value;
|
|
68
|
-
},
|
|
69
|
-
// Direct access to SDK client for non-reactive operations
|
|
70
|
-
client,
|
|
71
|
-
// Shorthand service access
|
|
72
|
-
auth: client.auth,
|
|
73
|
-
ui: client.ui,
|
|
74
|
-
db: client.db,
|
|
75
|
-
router: client.router,
|
|
76
|
-
config: client.config,
|
|
77
|
-
files: client.files,
|
|
78
|
-
storage: client.storage,
|
|
79
|
-
log: client.log,
|
|
80
|
-
theme: client.theme,
|
|
81
|
-
stuff: client.stuff,
|
|
82
|
-
// Theme control methods
|
|
83
|
-
setTheme: (mode) => client.theme.setTheme(mode),
|
|
84
|
-
toggleTheme: () => client.theme.toggle(),
|
|
85
|
-
// Entity change subscription
|
|
86
|
-
onEntityChange: client.onEntityChange.bind(client)
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
exports.useFoundation = useFoundation;
|
|
90
|
-
//# sourceMappingURL=vue.cjs.map
|
package/dist/vue.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vue.cjs","sources":["../src/vue.ts"],"sourcesContent":["/**\n * Vue composable wrapper for Foundation SDK\n *\n * Provides Vue reactivity around the framework-agnostic SDK client.\n */\nimport { ref, readonly, shallowRef, type Ref, type ShallowRef, type DeepReadonly } from 'vue'\nimport { createFoundationClient } from './client'\nimport type {\n FoundationClient,\n User,\n Theme,\n RouterState,\n EntityDefinition,\n EntityChangeEvent\n} from './types'\n\n// Singleton client\nlet client: FoundationClient | null = null\n\n// Reactive state (module-level singletons)\nlet isReady: Ref<boolean> | null = null\nlet user: ShallowRef<User | null> | null = null\nlet isDark: Ref<boolean> | null = null\nlet themeMode: Ref<Theme['mode']> | null = null\nlet routerPath: Ref<string> | null = null\nlet routerQuery: ShallowRef<Record<string, string>> | null = null\nlet routerHash: Ref<string> | null = null\nlet entities: ShallowRef<EntityDefinition[]> | null = null\n\nlet initialized = false\n\nfunction initializeState() {\n if (initialized) return\n\n client = createFoundationClient()\n\n isReady = ref(false)\n user = shallowRef<User | null>(null)\n isDark = ref(false)\n themeMode = ref<Theme['mode']>('system')\n routerPath = ref('/')\n routerQuery = shallowRef<Record<string, string>>({})\n routerHash = ref('')\n entities = shallowRef<EntityDefinition[]>([])\n\n // Initialize reactive state when SDK is ready\n client.ready.then(() => {\n isReady!.value = true\n user!.value = client!.auth.user\n isDark!.value = client!.theme.isDark\n themeMode!.value = client!.theme.mode\n routerPath!.value = client!.router.path\n routerQuery!.value = client!.router.query\n routerHash!.value = client!.router.hash\n entities!.value = client!.entities\n })\n\n // Subscribe to changes\n client.auth.onChange((newUser) => {\n user!.value = newUser\n })\n\n client.theme.onChange((theme) => {\n isDark!.value = theme.isDark\n themeMode!.value = theme.mode\n })\n\n client.router.onChange((route) => {\n routerPath!.value = route.path\n routerQuery!.value = route.query\n routerHash!.value = route.hash\n })\n\n initialized = true\n}\n\nexport interface UseFoundationReturn {\n // Reactive state (readonly to prevent external mutation)\n isReady: DeepReadonly<Ref<boolean>>\n user: DeepReadonly<ShallowRef<User | null>>\n isDark: DeepReadonly<Ref<boolean>>\n themeMode: DeepReadonly<Ref<Theme['mode']>>\n routerPath: DeepReadonly<Ref<string>>\n routerQuery: DeepReadonly<ShallowRef<Record<string, string>>>\n routerHash: DeepReadonly<Ref<string>>\n entities: DeepReadonly<ShallowRef<EntityDefinition[]>>\n\n // Computed helpers\n readonly isAuthenticated: boolean\n readonly currentUser: User | null\n\n // Direct access to SDK client for non-reactive operations\n client: FoundationClient\n\n // Shorthand service access\n auth: FoundationClient['auth']\n ui: FoundationClient['ui']\n db: FoundationClient['db']\n router: FoundationClient['router']\n config: FoundationClient['config']\n files: FoundationClient['files']\n storage: FoundationClient['storage']\n log: FoundationClient['log']\n theme: FoundationClient['theme']\n stuff: FoundationClient['stuff']\n\n // Theme control methods\n setTheme: (mode: Theme['mode']) => Promise<void>\n toggleTheme: () => Promise<void>\n\n // Entity change subscription\n onEntityChange: (callback: (event: EntityChangeEvent) => void) => () => void\n}\n\n/**\n * Main composable for accessing Foundation SDK with Vue reactivity\n */\nexport function useFoundation(): UseFoundationReturn {\n initializeState()\n\n return {\n // Reactive state (readonly to prevent external mutation)\n isReady: readonly(isReady!),\n user: readonly(user!),\n isDark: readonly(isDark!),\n themeMode: readonly(themeMode!),\n routerPath: readonly(routerPath!),\n routerQuery: readonly(routerQuery!),\n routerHash: readonly(routerHash!),\n entities: readonly(entities!),\n\n // Computed helpers\n get isAuthenticated() {\n return !!user!.value\n },\n\n get currentUser() {\n return user!.value\n },\n\n // Direct access to SDK client for non-reactive operations\n client: client!,\n\n // Shorthand service access\n auth: client!.auth,\n ui: client!.ui,\n db: client!.db,\n router: client!.router,\n config: client!.config,\n files: client!.files,\n storage: client!.storage,\n log: client!.log,\n theme: client!.theme,\n stuff: client!.stuff,\n\n // Theme control methods\n setTheme: (mode: Theme['mode']) => client!.theme.setTheme(mode),\n toggleTheme: () => client!.theme.toggle(),\n\n // Entity change subscription\n onEntityChange: client!.onEntityChange.bind(client)\n }\n}\n\n// Re-export types for convenience\nexport type { User, Theme, RouterState, EntityDefinition, EntityChangeEvent }\n"],"names":["createFoundationClient","ref","shallowRef","readonly"],"mappings":";;;;AAiBA,IAAI,SAAkC;AAGtC,IAAI,UAA+B;AACnC,IAAI,OAAuC;AAC3C,IAAI,SAA8B;AAClC,IAAI,YAAuC;AAC3C,IAAI,aAAiC;AACrC,IAAI,cAAyD;AAC7D,IAAI,aAAiC;AACrC,IAAI,WAAkD;AAEtD,IAAI,cAAc;AAElB,SAAS,kBAAkB;AACzB,MAAI,YAAa;AAEjB,WAASA,MAAAA,uBAAA;AAET,YAAUC,IAAAA,IAAI,KAAK;AACnB,SAAOC,IAAAA,WAAwB,IAAI;AACnC,WAASD,IAAAA,IAAI,KAAK;AAClB,cAAYA,IAAAA,IAAmB,QAAQ;AACvC,eAAaA,IAAAA,IAAI,GAAG;AACpB,gBAAcC,IAAAA,WAAmC,EAAE;AACnD,eAAaD,IAAAA,IAAI,EAAE;AACnB,aAAWC,IAAAA,WAA+B,EAAE;AAG5C,SAAO,MAAM,KAAK,MAAM;AACtB,YAAS,QAAQ;AACjB,SAAM,QAAQ,OAAQ,KAAK;AAC3B,WAAQ,QAAQ,OAAQ,MAAM;AAC9B,cAAW,QAAQ,OAAQ,MAAM;AACjC,eAAY,QAAQ,OAAQ,OAAO;AACnC,gBAAa,QAAQ,OAAQ,OAAO;AACpC,eAAY,QAAQ,OAAQ,OAAO;AACnC,aAAU,QAAQ,OAAQ;AAAA,EAC5B,CAAC;AAGD,SAAO,KAAK,SAAS,CAAC,YAAY;AAChC,SAAM,QAAQ;AAAA,EAChB,CAAC;AAED,SAAO,MAAM,SAAS,CAAC,UAAU;AAC/B,WAAQ,QAAQ,MAAM;AACtB,cAAW,QAAQ,MAAM;AAAA,EAC3B,CAAC;AAED,SAAO,OAAO,SAAS,CAAC,UAAU;AAChC,eAAY,QAAQ,MAAM;AAC1B,gBAAa,QAAQ,MAAM;AAC3B,eAAY,QAAQ,MAAM;AAAA,EAC5B,CAAC;AAED,gBAAc;AAChB;AA2CO,SAAS,gBAAqC;AACnD,kBAAA;AAEA,SAAO;AAAA;AAAA,IAEL,SAASC,IAAAA,SAAS,OAAQ;AAAA,IAC1B,MAAMA,IAAAA,SAAS,IAAK;AAAA,IACpB,QAAQA,IAAAA,SAAS,MAAO;AAAA,IACxB,WAAWA,IAAAA,SAAS,SAAU;AAAA,IAC9B,YAAYA,IAAAA,SAAS,UAAW;AAAA,IAChC,aAAaA,IAAAA,SAAS,WAAY;AAAA,IAClC,YAAYA,IAAAA,SAAS,UAAW;AAAA,IAChC,UAAUA,IAAAA,SAAS,QAAS;AAAA;AAAA,IAG5B,IAAI,kBAAkB;AACpB,aAAO,CAAC,CAAC,KAAM;AAAA,IACjB;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAM;AAAA,IACf;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA,MAAM,OAAQ;AAAA,IACd,IAAI,OAAQ;AAAA,IACZ,IAAI,OAAQ;AAAA,IACZ,QAAQ,OAAQ;AAAA,IAChB,QAAQ,OAAQ;AAAA,IAChB,OAAO,OAAQ;AAAA,IACf,SAAS,OAAQ;AAAA,IACjB,KAAK,OAAQ;AAAA,IACb,OAAO,OAAQ;AAAA,IACf,OAAO,OAAQ;AAAA;AAAA,IAGf,UAAU,CAAC,SAAwB,OAAQ,MAAM,SAAS,IAAI;AAAA,IAC9D,aAAa,MAAM,OAAQ,MAAM,OAAA;AAAA;AAAA,IAGjC,gBAAgB,OAAQ,eAAe,KAAK,MAAM;AAAA,EAAA;AAEtD;;"}
|
package/dist/vue.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Ref, ShallowRef, DeepReadonly } from 'vue';
|
|
2
|
-
import { FoundationClient, User, Theme, RouterState, EntityDefinition, EntityChangeEvent } from './types';
|
|
3
|
-
export interface UseFoundationReturn {
|
|
4
|
-
isReady: DeepReadonly<Ref<boolean>>;
|
|
5
|
-
user: DeepReadonly<ShallowRef<User | null>>;
|
|
6
|
-
isDark: DeepReadonly<Ref<boolean>>;
|
|
7
|
-
themeMode: DeepReadonly<Ref<Theme['mode']>>;
|
|
8
|
-
routerPath: DeepReadonly<Ref<string>>;
|
|
9
|
-
routerQuery: DeepReadonly<ShallowRef<Record<string, string>>>;
|
|
10
|
-
routerHash: DeepReadonly<Ref<string>>;
|
|
11
|
-
entities: DeepReadonly<ShallowRef<EntityDefinition[]>>;
|
|
12
|
-
readonly isAuthenticated: boolean;
|
|
13
|
-
readonly currentUser: User | null;
|
|
14
|
-
client: FoundationClient;
|
|
15
|
-
auth: FoundationClient['auth'];
|
|
16
|
-
ui: FoundationClient['ui'];
|
|
17
|
-
db: FoundationClient['db'];
|
|
18
|
-
router: FoundationClient['router'];
|
|
19
|
-
config: FoundationClient['config'];
|
|
20
|
-
files: FoundationClient['files'];
|
|
21
|
-
storage: FoundationClient['storage'];
|
|
22
|
-
log: FoundationClient['log'];
|
|
23
|
-
theme: FoundationClient['theme'];
|
|
24
|
-
stuff: FoundationClient['stuff'];
|
|
25
|
-
setTheme: (mode: Theme['mode']) => Promise<void>;
|
|
26
|
-
toggleTheme: () => Promise<void>;
|
|
27
|
-
onEntityChange: (callback: (event: EntityChangeEvent) => void) => () => void;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Main composable for accessing Foundation SDK with Vue reactivity
|
|
31
|
-
*/
|
|
32
|
-
export declare function useFoundation(): UseFoundationReturn;
|
|
33
|
-
export type { User, Theme, RouterState, EntityDefinition, EntityChangeEvent };
|
|
34
|
-
//# sourceMappingURL=vue.d.ts.map
|
package/dist/vue.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../src/vue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA6B,KAAK,GAAG,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,KAAK,CAAA;AAE7F,OAAO,KAAK,EACV,gBAAgB,EAChB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,SAAS,CAAA;AA8DhB,MAAM,WAAW,mBAAmB;IAElC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACnC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA;IAC3C,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAClC,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC3C,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACrC,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7D,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACrC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;IAGtD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAA;IAGjC,MAAM,EAAE,gBAAgB,CAAA;IAGxB,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC9B,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC1B,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAClC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACpC,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC5B,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAGhC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAGhC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;CAC7E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,mBAAmB,CA6CnD;AAGD,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/vue.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { readonly, ref, shallowRef } from "vue";
|
|
2
|
-
import { createFoundationClient } from "./index.js";
|
|
3
|
-
let client = null;
|
|
4
|
-
let isReady = null;
|
|
5
|
-
let user = null;
|
|
6
|
-
let isDark = null;
|
|
7
|
-
let themeMode = null;
|
|
8
|
-
let routerPath = null;
|
|
9
|
-
let routerQuery = null;
|
|
10
|
-
let routerHash = null;
|
|
11
|
-
let entities = null;
|
|
12
|
-
let initialized = false;
|
|
13
|
-
function initializeState() {
|
|
14
|
-
if (initialized) return;
|
|
15
|
-
client = createFoundationClient();
|
|
16
|
-
isReady = ref(false);
|
|
17
|
-
user = shallowRef(null);
|
|
18
|
-
isDark = ref(false);
|
|
19
|
-
themeMode = ref("system");
|
|
20
|
-
routerPath = ref("/");
|
|
21
|
-
routerQuery = shallowRef({});
|
|
22
|
-
routerHash = ref("");
|
|
23
|
-
entities = shallowRef([]);
|
|
24
|
-
client.ready.then(() => {
|
|
25
|
-
isReady.value = true;
|
|
26
|
-
user.value = client.auth.user;
|
|
27
|
-
isDark.value = client.theme.isDark;
|
|
28
|
-
themeMode.value = client.theme.mode;
|
|
29
|
-
routerPath.value = client.router.path;
|
|
30
|
-
routerQuery.value = client.router.query;
|
|
31
|
-
routerHash.value = client.router.hash;
|
|
32
|
-
entities.value = client.entities;
|
|
33
|
-
});
|
|
34
|
-
client.auth.onChange((newUser) => {
|
|
35
|
-
user.value = newUser;
|
|
36
|
-
});
|
|
37
|
-
client.theme.onChange((theme) => {
|
|
38
|
-
isDark.value = theme.isDark;
|
|
39
|
-
themeMode.value = theme.mode;
|
|
40
|
-
});
|
|
41
|
-
client.router.onChange((route) => {
|
|
42
|
-
routerPath.value = route.path;
|
|
43
|
-
routerQuery.value = route.query;
|
|
44
|
-
routerHash.value = route.hash;
|
|
45
|
-
});
|
|
46
|
-
initialized = true;
|
|
47
|
-
}
|
|
48
|
-
function useFoundation() {
|
|
49
|
-
initializeState();
|
|
50
|
-
return {
|
|
51
|
-
// Reactive state (readonly to prevent external mutation)
|
|
52
|
-
isReady: readonly(isReady),
|
|
53
|
-
user: readonly(user),
|
|
54
|
-
isDark: readonly(isDark),
|
|
55
|
-
themeMode: readonly(themeMode),
|
|
56
|
-
routerPath: readonly(routerPath),
|
|
57
|
-
routerQuery: readonly(routerQuery),
|
|
58
|
-
routerHash: readonly(routerHash),
|
|
59
|
-
entities: readonly(entities),
|
|
60
|
-
// Computed helpers
|
|
61
|
-
get isAuthenticated() {
|
|
62
|
-
return !!user.value;
|
|
63
|
-
},
|
|
64
|
-
get currentUser() {
|
|
65
|
-
return user.value;
|
|
66
|
-
},
|
|
67
|
-
// Direct access to SDK client for non-reactive operations
|
|
68
|
-
client,
|
|
69
|
-
// Shorthand service access
|
|
70
|
-
auth: client.auth,
|
|
71
|
-
ui: client.ui,
|
|
72
|
-
db: client.db,
|
|
73
|
-
router: client.router,
|
|
74
|
-
config: client.config,
|
|
75
|
-
files: client.files,
|
|
76
|
-
storage: client.storage,
|
|
77
|
-
log: client.log,
|
|
78
|
-
theme: client.theme,
|
|
79
|
-
stuff: client.stuff,
|
|
80
|
-
// Theme control methods
|
|
81
|
-
setTheme: (mode) => client.theme.setTheme(mode),
|
|
82
|
-
toggleTheme: () => client.theme.toggle(),
|
|
83
|
-
// Entity change subscription
|
|
84
|
-
onEntityChange: client.onEntityChange.bind(client)
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
export {
|
|
88
|
-
useFoundation
|
|
89
|
-
};
|
|
90
|
-
//# sourceMappingURL=vue.js.map
|
package/dist/vue.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vue.js","sources":["../src/vue.ts"],"sourcesContent":["/**\n * Vue composable wrapper for Foundation SDK\n *\n * Provides Vue reactivity around the framework-agnostic SDK client.\n */\nimport { ref, readonly, shallowRef, type Ref, type ShallowRef, type DeepReadonly } from 'vue'\nimport { createFoundationClient } from './client'\nimport type {\n FoundationClient,\n User,\n Theme,\n RouterState,\n EntityDefinition,\n EntityChangeEvent\n} from './types'\n\n// Singleton client\nlet client: FoundationClient | null = null\n\n// Reactive state (module-level singletons)\nlet isReady: Ref<boolean> | null = null\nlet user: ShallowRef<User | null> | null = null\nlet isDark: Ref<boolean> | null = null\nlet themeMode: Ref<Theme['mode']> | null = null\nlet routerPath: Ref<string> | null = null\nlet routerQuery: ShallowRef<Record<string, string>> | null = null\nlet routerHash: Ref<string> | null = null\nlet entities: ShallowRef<EntityDefinition[]> | null = null\n\nlet initialized = false\n\nfunction initializeState() {\n if (initialized) return\n\n client = createFoundationClient()\n\n isReady = ref(false)\n user = shallowRef<User | null>(null)\n isDark = ref(false)\n themeMode = ref<Theme['mode']>('system')\n routerPath = ref('/')\n routerQuery = shallowRef<Record<string, string>>({})\n routerHash = ref('')\n entities = shallowRef<EntityDefinition[]>([])\n\n // Initialize reactive state when SDK is ready\n client.ready.then(() => {\n isReady!.value = true\n user!.value = client!.auth.user\n isDark!.value = client!.theme.isDark\n themeMode!.value = client!.theme.mode\n routerPath!.value = client!.router.path\n routerQuery!.value = client!.router.query\n routerHash!.value = client!.router.hash\n entities!.value = client!.entities\n })\n\n // Subscribe to changes\n client.auth.onChange((newUser) => {\n user!.value = newUser\n })\n\n client.theme.onChange((theme) => {\n isDark!.value = theme.isDark\n themeMode!.value = theme.mode\n })\n\n client.router.onChange((route) => {\n routerPath!.value = route.path\n routerQuery!.value = route.query\n routerHash!.value = route.hash\n })\n\n initialized = true\n}\n\nexport interface UseFoundationReturn {\n // Reactive state (readonly to prevent external mutation)\n isReady: DeepReadonly<Ref<boolean>>\n user: DeepReadonly<ShallowRef<User | null>>\n isDark: DeepReadonly<Ref<boolean>>\n themeMode: DeepReadonly<Ref<Theme['mode']>>\n routerPath: DeepReadonly<Ref<string>>\n routerQuery: DeepReadonly<ShallowRef<Record<string, string>>>\n routerHash: DeepReadonly<Ref<string>>\n entities: DeepReadonly<ShallowRef<EntityDefinition[]>>\n\n // Computed helpers\n readonly isAuthenticated: boolean\n readonly currentUser: User | null\n\n // Direct access to SDK client for non-reactive operations\n client: FoundationClient\n\n // Shorthand service access\n auth: FoundationClient['auth']\n ui: FoundationClient['ui']\n db: FoundationClient['db']\n router: FoundationClient['router']\n config: FoundationClient['config']\n files: FoundationClient['files']\n storage: FoundationClient['storage']\n log: FoundationClient['log']\n theme: FoundationClient['theme']\n stuff: FoundationClient['stuff']\n\n // Theme control methods\n setTheme: (mode: Theme['mode']) => Promise<void>\n toggleTheme: () => Promise<void>\n\n // Entity change subscription\n onEntityChange: (callback: (event: EntityChangeEvent) => void) => () => void\n}\n\n/**\n * Main composable for accessing Foundation SDK with Vue reactivity\n */\nexport function useFoundation(): UseFoundationReturn {\n initializeState()\n\n return {\n // Reactive state (readonly to prevent external mutation)\n isReady: readonly(isReady!),\n user: readonly(user!),\n isDark: readonly(isDark!),\n themeMode: readonly(themeMode!),\n routerPath: readonly(routerPath!),\n routerQuery: readonly(routerQuery!),\n routerHash: readonly(routerHash!),\n entities: readonly(entities!),\n\n // Computed helpers\n get isAuthenticated() {\n return !!user!.value\n },\n\n get currentUser() {\n return user!.value\n },\n\n // Direct access to SDK client for non-reactive operations\n client: client!,\n\n // Shorthand service access\n auth: client!.auth,\n ui: client!.ui,\n db: client!.db,\n router: client!.router,\n config: client!.config,\n files: client!.files,\n storage: client!.storage,\n log: client!.log,\n theme: client!.theme,\n stuff: client!.stuff,\n\n // Theme control methods\n setTheme: (mode: Theme['mode']) => client!.theme.setTheme(mode),\n toggleTheme: () => client!.theme.toggle(),\n\n // Entity change subscription\n onEntityChange: client!.onEntityChange.bind(client)\n }\n}\n\n// Re-export types for convenience\nexport type { User, Theme, RouterState, EntityDefinition, EntityChangeEvent }\n"],"names":[],"mappings":";;AAiBA,IAAI,SAAkC;AAGtC,IAAI,UAA+B;AACnC,IAAI,OAAuC;AAC3C,IAAI,SAA8B;AAClC,IAAI,YAAuC;AAC3C,IAAI,aAAiC;AACrC,IAAI,cAAyD;AAC7D,IAAI,aAAiC;AACrC,IAAI,WAAkD;AAEtD,IAAI,cAAc;AAElB,SAAS,kBAAkB;AACzB,MAAI,YAAa;AAEjB,WAAS,uBAAA;AAET,YAAU,IAAI,KAAK;AACnB,SAAO,WAAwB,IAAI;AACnC,WAAS,IAAI,KAAK;AAClB,cAAY,IAAmB,QAAQ;AACvC,eAAa,IAAI,GAAG;AACpB,gBAAc,WAAmC,EAAE;AACnD,eAAa,IAAI,EAAE;AACnB,aAAW,WAA+B,EAAE;AAG5C,SAAO,MAAM,KAAK,MAAM;AACtB,YAAS,QAAQ;AACjB,SAAM,QAAQ,OAAQ,KAAK;AAC3B,WAAQ,QAAQ,OAAQ,MAAM;AAC9B,cAAW,QAAQ,OAAQ,MAAM;AACjC,eAAY,QAAQ,OAAQ,OAAO;AACnC,gBAAa,QAAQ,OAAQ,OAAO;AACpC,eAAY,QAAQ,OAAQ,OAAO;AACnC,aAAU,QAAQ,OAAQ;AAAA,EAC5B,CAAC;AAGD,SAAO,KAAK,SAAS,CAAC,YAAY;AAChC,SAAM,QAAQ;AAAA,EAChB,CAAC;AAED,SAAO,MAAM,SAAS,CAAC,UAAU;AAC/B,WAAQ,QAAQ,MAAM;AACtB,cAAW,QAAQ,MAAM;AAAA,EAC3B,CAAC;AAED,SAAO,OAAO,SAAS,CAAC,UAAU;AAChC,eAAY,QAAQ,MAAM;AAC1B,gBAAa,QAAQ,MAAM;AAC3B,eAAY,QAAQ,MAAM;AAAA,EAC5B,CAAC;AAED,gBAAc;AAChB;AA2CO,SAAS,gBAAqC;AACnD,kBAAA;AAEA,SAAO;AAAA;AAAA,IAEL,SAAS,SAAS,OAAQ;AAAA,IAC1B,MAAM,SAAS,IAAK;AAAA,IACpB,QAAQ,SAAS,MAAO;AAAA,IACxB,WAAW,SAAS,SAAU;AAAA,IAC9B,YAAY,SAAS,UAAW;AAAA,IAChC,aAAa,SAAS,WAAY;AAAA,IAClC,YAAY,SAAS,UAAW;AAAA,IAChC,UAAU,SAAS,QAAS;AAAA;AAAA,IAG5B,IAAI,kBAAkB;AACpB,aAAO,CAAC,CAAC,KAAM;AAAA,IACjB;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAM;AAAA,IACf;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA,MAAM,OAAQ;AAAA,IACd,IAAI,OAAQ;AAAA,IACZ,IAAI,OAAQ;AAAA,IACZ,QAAQ,OAAQ;AAAA,IAChB,QAAQ,OAAQ;AAAA,IAChB,OAAO,OAAQ;AAAA,IACf,SAAS,OAAQ;AAAA,IACjB,KAAK,OAAQ;AAAA,IACb,OAAO,OAAQ;AAAA,IACf,OAAO,OAAQ;AAAA;AAAA,IAGf,UAAU,CAAC,SAAwB,OAAQ,MAAM,SAAS,IAAI;AAAA,IAC9D,aAAa,MAAM,OAAQ,MAAM,OAAA;AAAA;AAAA,IAGjC,gBAAgB,OAAQ,eAAe,KAAK,MAAM;AAAA,EAAA;AAEtD;"}
|