@edgebasejs/admin-client 0.1.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.
@@ -0,0 +1,118 @@
1
+ import type { ActivityLogEntry, ActivityLogFilter, Admin, AdminAuthResponse, AdminCreateRequest, AdminUpdateRequest, PaginatedResponse, TableDataResponse, TableInfo, TableSchema, UserDetail } from '@edgebasejs/types';
2
+ export interface AdminClientConfig {
3
+ baseUrl: string;
4
+ timeout?: number;
5
+ onTokenRefresh?: (tokens: {
6
+ accessToken: string;
7
+ refreshToken: string;
8
+ }) => void;
9
+ onUnauthorized?: () => void;
10
+ }
11
+ export declare class AdminClientError extends Error {
12
+ code: string;
13
+ statusCode: number;
14
+ details?: any | undefined;
15
+ constructor(code: string, message: string, statusCode: number, details?: any | undefined);
16
+ }
17
+ export declare class AdminClient {
18
+ private baseUrl;
19
+ private timeout;
20
+ private accessToken;
21
+ private refreshToken;
22
+ private onTokenRefresh;
23
+ private onUnauthorized;
24
+ constructor(config: AdminClientConfig);
25
+ /**
26
+ * Set tokens (for persistent storage)
27
+ */
28
+ setTokens(accessToken: string, refreshToken: string): void;
29
+ /**
30
+ * Clear tokens
31
+ */
32
+ clearTokens(): void;
33
+ /**
34
+ * Get current access token
35
+ */
36
+ getAccessToken(): string | null;
37
+ /**
38
+ * Generic fetch wrapper with error handling
39
+ */
40
+ private fetch;
41
+ /**
42
+ * POST /admin/auth/login
43
+ */
44
+ login(email: string, password: string): Promise<AdminAuthResponse>;
45
+ /**
46
+ * POST /admin/admins - Create new admin (requires authentication)
47
+ */
48
+ register(email: string, password: string, role?: string): Promise<Admin>;
49
+ /**
50
+ * Logout (clear tokens)
51
+ */
52
+ logout(): void;
53
+ /**
54
+ * GET /admin/users
55
+ */
56
+ getUsers(page?: number, pageSize?: number, search?: string): Promise<PaginatedResponse<UserDetail>>;
57
+ /**
58
+ * GET /admin/users/:id
59
+ */
60
+ getUser(id: string): Promise<UserDetail>;
61
+ /**
62
+ * PATCH /admin/users/:id
63
+ */
64
+ updateUser(id: string, updates: Partial<UserDetail>): Promise<UserDetail>;
65
+ /**
66
+ * DELETE /admin/users/:id
67
+ */
68
+ deleteUser(id: string): Promise<{
69
+ success: boolean;
70
+ message: string;
71
+ }>;
72
+ /**
73
+ * GET /admin/database/tables
74
+ */
75
+ getTables(): Promise<TableInfo[]>;
76
+ /**
77
+ * GET /admin/database/tables/:name/data
78
+ */
79
+ getTableData(tableName: string, page?: number, pageSize?: number): Promise<TableDataResponse>;
80
+ /**
81
+ * GET /admin/database/tables/:name/schema
82
+ */
83
+ getTableSchema(tableName: string): Promise<TableSchema>;
84
+ /**
85
+ * GET /admin/schemas - Get all table schemas
86
+ */
87
+ getSchemas(): Promise<{
88
+ version: number;
89
+ timestamp: number;
90
+ schemas: Record<string, any>;
91
+ }>;
92
+ /**
93
+ * GET /admin/activity
94
+ */
95
+ getActivityLog(filters?: ActivityLogFilter): Promise<PaginatedResponse<ActivityLogEntry>>;
96
+ /**
97
+ * POST /admin/admins
98
+ */
99
+ createAdmin(request: AdminCreateRequest): Promise<Admin>;
100
+ /**
101
+ * GET /admin/admins
102
+ */
103
+ getAdmins(): Promise<Admin[]>;
104
+ /**
105
+ * PATCH /admin/admins/:id
106
+ */
107
+ updateAdmin(id: string, updates: AdminUpdateRequest): Promise<Admin>;
108
+ /**
109
+ * Helper: Export table data as CSV
110
+ */
111
+ exportTableAsCSV(tableName: string): Promise<string>;
112
+ /**
113
+ * Helper: Export activity log as CSV
114
+ */
115
+ exportActivityLogAsCSV(filters?: ActivityLogFilter): Promise<string>;
116
+ }
117
+ export default AdminClient;
118
+ //# sourceMappingURL=admin-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../../src/admin-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ // AdminClient - Type-safe API client for EdgeBase Admin Console
2
+ export class AdminClientError extends Error {
3
+ constructor(code, message, statusCode, details) {
4
+ super(message);
5
+ this.code = code;
6
+ this.statusCode = statusCode;
7
+ this.details = details;
8
+ this.name = 'AdminClientError';
9
+ }
10
+ }
11
+ export class AdminClient {
12
+ constructor(config) {
13
+ this.accessToken = null;
14
+ this.refreshToken = null;
15
+ this.baseUrl = config.baseUrl;
16
+ this.timeout = config.timeout || 30000;
17
+ this.onTokenRefresh = config.onTokenRefresh;
18
+ this.onUnauthorized = config.onUnauthorized;
19
+ // Load tokens from storage if available
20
+ if (typeof localStorage !== 'undefined') {
21
+ // Try Zustand's auth-storage key first (contains full auth state)
22
+ let stored = localStorage.getItem('auth-storage');
23
+ if (stored) {
24
+ try {
25
+ const authState = JSON.parse(stored);
26
+ if (authState.state) {
27
+ // Zustand persist format: { state: { ... }, version: 0 }
28
+ this.accessToken = authState.state.accessToken || null;
29
+ this.refreshToken = authState.state.refreshToken || null;
30
+ }
31
+ else {
32
+ // Fallback if format is different
33
+ this.accessToken = authState.accessToken || null;
34
+ this.refreshToken = authState.refreshToken || null;
35
+ }
36
+ }
37
+ catch (error) {
38
+ console.error('Failed to parse auth-storage:', error);
39
+ }
40
+ }
41
+ // Fallback to legacy admin_tokens key if auth-storage not found
42
+ if (!this.accessToken && !this.refreshToken) {
43
+ stored = localStorage.getItem('admin_tokens');
44
+ if (stored) {
45
+ try {
46
+ const { accessToken, refreshToken } = JSON.parse(stored);
47
+ this.accessToken = accessToken;
48
+ this.refreshToken = refreshToken;
49
+ }
50
+ catch (error) {
51
+ console.error('Failed to parse stored tokens:', error);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ /**
58
+ * Set tokens (for persistent storage)
59
+ */
60
+ setTokens(accessToken, refreshToken) {
61
+ console.log('🔑 AdminClient.setTokens called with token:', accessToken.substring(0, 20) + '...');
62
+ this.accessToken = accessToken;
63
+ this.refreshToken = refreshToken;
64
+ if (typeof localStorage !== 'undefined') {
65
+ localStorage.setItem('admin_tokens', JSON.stringify({ accessToken, refreshToken }));
66
+ }
67
+ }
68
+ /**
69
+ * Clear tokens
70
+ */
71
+ clearTokens() {
72
+ this.accessToken = null;
73
+ this.refreshToken = null;
74
+ if (typeof localStorage !== 'undefined') {
75
+ localStorage.removeItem('admin_tokens');
76
+ }
77
+ }
78
+ /**
79
+ * Get current access token
80
+ */
81
+ getAccessToken() {
82
+ return this.accessToken;
83
+ }
84
+ /**
85
+ * Generic fetch wrapper with error handling
86
+ */
87
+ async fetch(path, options = {}) {
88
+ const url = `${this.baseUrl}${path}`;
89
+ const headers = {
90
+ 'Content-Type': 'application/json',
91
+ };
92
+ // Add existing headers
93
+ if (options.headers instanceof Headers) {
94
+ options.headers.forEach((value, key) => {
95
+ headers[key] = value;
96
+ });
97
+ }
98
+ else if (typeof options.headers === 'object' && options.headers !== null) {
99
+ Object.assign(headers, options.headers);
100
+ }
101
+ // Add authorization header if token exists
102
+ if (this.accessToken) {
103
+ headers['Authorization'] = `Bearer ${this.accessToken}`;
104
+ if (path.includes('/admin/')) {
105
+ console.log('🔐 Adding auth header for', path, 'token:', this.accessToken.substring(0, 20) + '...');
106
+ }
107
+ }
108
+ else {
109
+ console.log('⚠️ NO TOKEN for', path, 'this.accessToken:', this.accessToken);
110
+ }
111
+ const controller = new AbortController();
112
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
113
+ try {
114
+ const response = await fetch(url, {
115
+ ...options,
116
+ headers,
117
+ signal: controller.signal,
118
+ });
119
+ clearTimeout(timeoutId);
120
+ // Handle 401 Unauthorized
121
+ if (response.status === 401) {
122
+ this.clearTokens();
123
+ this.onUnauthorized?.();
124
+ throw new AdminClientError('UNAUTHORIZED', 'Unauthorized', 401);
125
+ }
126
+ const data = await response.json();
127
+ if (!response.ok) {
128
+ throw new AdminClientError(data.code || 'API_ERROR', data.error || 'API Error', response.status, data.details);
129
+ }
130
+ return data;
131
+ }
132
+ catch (error) {
133
+ clearTimeout(timeoutId);
134
+ if (error instanceof AdminClientError) {
135
+ throw error;
136
+ }
137
+ if (error instanceof TypeError && error.name === 'AbortError') {
138
+ throw new AdminClientError('TIMEOUT', 'Request timeout', 0);
139
+ }
140
+ throw new AdminClientError('NETWORK_ERROR', error instanceof Error ? error.message : 'Network error', 0);
141
+ }
142
+ }
143
+ /**
144
+ * POST /admin/auth/login
145
+ */
146
+ async login(email, password) {
147
+ const request = { email, password };
148
+ const response = await this.fetch('/admin/auth/login', {
149
+ method: 'POST',
150
+ body: JSON.stringify(request),
151
+ });
152
+ // Store tokens
153
+ this.setTokens(response.accessToken, response.refreshToken);
154
+ // Call callback
155
+ this.onTokenRefresh?.({
156
+ accessToken: response.accessToken,
157
+ refreshToken: response.refreshToken,
158
+ });
159
+ return response;
160
+ }
161
+ /**
162
+ * POST /admin/admins - Create new admin (requires authentication)
163
+ */
164
+ async register(email, password, role = 'admin') {
165
+ return this.fetch('/admin/admins', {
166
+ method: 'POST',
167
+ body: JSON.stringify({ email, password, role }),
168
+ });
169
+ }
170
+ /**
171
+ * Logout (clear tokens)
172
+ */
173
+ logout() {
174
+ this.clearTokens();
175
+ }
176
+ /**
177
+ * GET /admin/users
178
+ */
179
+ async getUsers(page = 1, pageSize = 20, search) {
180
+ const params = new URLSearchParams({
181
+ page: page.toString(),
182
+ pageSize: pageSize.toString(),
183
+ });
184
+ if (search) {
185
+ params.append('search', search);
186
+ }
187
+ return this.fetch(`/admin/users?${params.toString()}`, { method: 'GET' });
188
+ }
189
+ /**
190
+ * GET /admin/users/:id
191
+ */
192
+ async getUser(id) {
193
+ return this.fetch(`/admin/users/${encodeURIComponent(id)}`, { method: 'GET' });
194
+ }
195
+ /**
196
+ * PATCH /admin/users/:id
197
+ */
198
+ async updateUser(id, updates) {
199
+ return this.fetch(`/admin/users/${encodeURIComponent(id)}`, {
200
+ method: 'PATCH',
201
+ body: JSON.stringify(updates),
202
+ });
203
+ }
204
+ /**
205
+ * DELETE /admin/users/:id
206
+ */
207
+ async deleteUser(id) {
208
+ return this.fetch(`/admin/users/${encodeURIComponent(id)}`, { method: 'DELETE' });
209
+ }
210
+ /**
211
+ * GET /admin/database/tables
212
+ */
213
+ async getTables() {
214
+ return this.fetch('/admin/database/tables', { method: 'GET' });
215
+ }
216
+ /**
217
+ * GET /admin/database/tables/:name/data
218
+ */
219
+ async getTableData(tableName, page = 1, pageSize = 20) {
220
+ const params = new URLSearchParams({
221
+ page: page.toString(),
222
+ pageSize: pageSize.toString(),
223
+ });
224
+ return this.fetch(`/admin/database/tables/${encodeURIComponent(tableName)}/data?${params.toString()}`, { method: 'GET' });
225
+ }
226
+ /**
227
+ * GET /admin/database/tables/:name/schema
228
+ */
229
+ async getTableSchema(tableName) {
230
+ return this.fetch(`/admin/database/tables/${encodeURIComponent(tableName)}/schema`, {
231
+ method: 'GET',
232
+ });
233
+ }
234
+ /**
235
+ * GET /admin/schemas - Get all table schemas
236
+ */
237
+ async getSchemas() {
238
+ return this.fetch('/admin/schemas', { method: 'GET' });
239
+ }
240
+ /**
241
+ * GET /admin/activity
242
+ */
243
+ async getActivityLog(filters = {}) {
244
+ const params = new URLSearchParams();
245
+ if (filters.page)
246
+ params.append('page', filters.page.toString());
247
+ if (filters.pageSize)
248
+ params.append('pageSize', filters.pageSize.toString());
249
+ if (filters.adminId)
250
+ params.append('adminId', filters.adminId);
251
+ if (filters.entityType)
252
+ params.append('entityType', filters.entityType);
253
+ if (filters.action)
254
+ params.append('action', filters.action);
255
+ if (filters.dateFrom)
256
+ params.append('dateFrom', filters.dateFrom.toString());
257
+ if (filters.dateTo)
258
+ params.append('dateTo', filters.dateTo.toString());
259
+ return this.fetch(`/admin/activity?${params.toString()}`, { method: 'GET' });
260
+ }
261
+ /**
262
+ * POST /admin/admins
263
+ */
264
+ async createAdmin(request) {
265
+ return this.fetch('/admin/admins', {
266
+ method: 'POST',
267
+ body: JSON.stringify(request),
268
+ });
269
+ }
270
+ /**
271
+ * GET /admin/admins
272
+ */
273
+ async getAdmins() {
274
+ return this.fetch('/admin/admins', { method: 'GET' });
275
+ }
276
+ /**
277
+ * PATCH /admin/admins/:id
278
+ */
279
+ async updateAdmin(id, updates) {
280
+ return this.fetch(`/admin/admins/${encodeURIComponent(id)}`, {
281
+ method: 'PATCH',
282
+ body: JSON.stringify(updates),
283
+ });
284
+ }
285
+ /**
286
+ * Helper: Export table data as CSV
287
+ */
288
+ async exportTableAsCSV(tableName) {
289
+ const response = await this.getTableData(tableName, 1, 1000);
290
+ // Get all data (max 1000 rows for export)
291
+ const allData = response.data;
292
+ const columns = response.columns.map((c) => c.name);
293
+ // Build CSV
294
+ const csvLines = [];
295
+ // Header
296
+ csvLines.push(columns.map((c) => `"${c}"`).join(','));
297
+ // Rows
298
+ for (const row of allData) {
299
+ const values = columns.map((col) => {
300
+ const value = row[col];
301
+ if (value === null || value === undefined)
302
+ return '';
303
+ if (typeof value === 'string')
304
+ return `"${value.replace(/"/g, '""')}"`;
305
+ return JSON.stringify(value);
306
+ });
307
+ csvLines.push(values.join(','));
308
+ }
309
+ return csvLines.join('\n');
310
+ }
311
+ /**
312
+ * Helper: Export activity log as CSV
313
+ */
314
+ async exportActivityLogAsCSV(filters = {}) {
315
+ const response = await this.getActivityLog({ ...filters, pageSize: 1000 });
316
+ const csvLines = [];
317
+ // Header
318
+ csvLines.push(['Timestamp', 'Admin Email', 'Action', 'Entity Type', 'Entity ID', 'Details', 'IP Address']
319
+ .map((h) => `"${h}"`)
320
+ .join(','));
321
+ // Rows
322
+ for (const entry of response.data) {
323
+ const date = new Date(entry.createdAt).toISOString();
324
+ const values = [
325
+ date,
326
+ entry.adminEmail || 'Unknown',
327
+ entry.action,
328
+ entry.entityType,
329
+ entry.entityId || '',
330
+ JSON.stringify(entry.details),
331
+ entry.ipAddress,
332
+ ].map((v) => `"${String(v).replace(/"/g, '""')}"`);
333
+ csvLines.push(values.join(','));
334
+ }
335
+ return csvLines.join('\n');
336
+ }
337
+ }
338
+ export default AdminClient;
339
+ //# sourceMappingURL=admin-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-client.js","sourceRoot":"","sources":["../../../src/admin-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { AdminClient, AdminClientError } from './admin-client';
2
+ export type { AdminClientConfig } from './admin-client';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AdminClient, AdminClientError } from './admin-client';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,101 @@
1
+ export type AdminRole = 'super_admin' | 'admin' | 'viewer';
2
+ export interface Admin {
3
+ id: string;
4
+ email: string;
5
+ role: AdminRole;
6
+ isActive: boolean;
7
+ createdAt: number;
8
+ updatedAt: number;
9
+ }
10
+ export interface AdminLoginRequest {
11
+ email: string;
12
+ password: string;
13
+ }
14
+ export interface AdminAuthResponse {
15
+ admin: Admin;
16
+ accessToken: string;
17
+ refreshToken: string;
18
+ expiresIn: number;
19
+ }
20
+ export interface PaginatedResponse<T> {
21
+ data: T[];
22
+ pagination: {
23
+ page: number;
24
+ pageSize: number;
25
+ total: number;
26
+ totalPages: number;
27
+ };
28
+ }
29
+ export type ActivityAction = 'create' | 'read' | 'update' | 'delete' | 'login' | 'logout';
30
+ export type ActivityEntityType = 'user' | 'admin' | 'system' | 'database';
31
+ export interface ActivityLogEntry {
32
+ id: string;
33
+ adminId: string;
34
+ adminEmail?: string;
35
+ action: ActivityAction;
36
+ entityType: ActivityEntityType;
37
+ entityId?: string;
38
+ details: Record<string, any>;
39
+ ipAddress: string;
40
+ createdAt: number;
41
+ }
42
+ export interface ActivityLogFilter {
43
+ adminId?: string;
44
+ entityType?: ActivityEntityType;
45
+ action?: ActivityAction;
46
+ dateFrom?: number;
47
+ dateTo?: number;
48
+ page?: number;
49
+ pageSize?: number;
50
+ }
51
+ export interface TableInfo {
52
+ name: string;
53
+ rowCount: number;
54
+ createdAt?: number;
55
+ }
56
+ export interface ColumnDefinition {
57
+ name: string;
58
+ type: string;
59
+ nullable: boolean;
60
+ primaryKey: boolean;
61
+ defaultValue?: any;
62
+ }
63
+ export interface TableSchema {
64
+ name: string;
65
+ columns: ColumnDefinition[];
66
+ primaryKey: string[];
67
+ createdAt?: number;
68
+ }
69
+ export interface TableDataResponse {
70
+ tableName: string;
71
+ data: Record<string, any>[];
72
+ columns: ColumnDefinition[];
73
+ pagination: {
74
+ page: number;
75
+ pageSize: number;
76
+ total: number;
77
+ totalPages: number;
78
+ };
79
+ }
80
+ export interface UserDetail extends Record<string, any> {
81
+ id: string;
82
+ email: string;
83
+ createdAt: number;
84
+ updatedAt: number;
85
+ }
86
+ export interface AdminCreateRequest {
87
+ email: string;
88
+ password: string;
89
+ role: AdminRole;
90
+ }
91
+ export interface AdminUpdateRequest {
92
+ email?: string;
93
+ role?: AdminRole;
94
+ isActive?: boolean;
95
+ }
96
+ export interface ErrorResponse {
97
+ code: string;
98
+ message: string;
99
+ details?: Record<string, any>;
100
+ }
101
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Admin Console Types
2
+ export {};
3
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../../shared-types/src/admin.ts"],"names":[],"mappings":"AAAA,sBAAsB"}
@@ -0,0 +1,27 @@
1
+ export interface User {
2
+ id: string;
3
+ email: string;
4
+ createdAt: number;
5
+ updatedAt: number;
6
+ }
7
+ export interface AuthTokens {
8
+ accessToken: string;
9
+ refreshToken: string;
10
+ expiresIn: number;
11
+ }
12
+ export interface LoginRequest {
13
+ email: string;
14
+ password: string;
15
+ }
16
+ export interface RegisterRequest {
17
+ email: string;
18
+ password: string;
19
+ }
20
+ export interface RefreshTokenRequest {
21
+ refreshToken: string;
22
+ }
23
+ export interface AuthResponse {
24
+ user: User;
25
+ tokens: AuthTokens;
26
+ }
27
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/auth.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../shared-types/src/auth.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './sync';
2
+ export * from './auth';
3
+ export * from './schema';
4
+ export * from './admin';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './sync';
2
+ export * from './auth';
3
+ export * from './schema';
4
+ export * from './admin';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared-types/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,34 @@
1
+ export type FieldTypeValue = 'string' | 'integer' | 'number' | 'boolean' | 'timestamp' | 'text' | 'json' | 'reference';
2
+ export interface FieldType {
3
+ type: FieldTypeValue;
4
+ required: boolean;
5
+ primary?: boolean;
6
+ reference?: string;
7
+ default?: string | number | boolean;
8
+ description?: string;
9
+ }
10
+ export interface AccessRules {
11
+ create?: (user: any, data: any) => boolean;
12
+ read?: (user: any, data: any) => boolean;
13
+ update?: (user: any, existing: any, updates?: any) => boolean;
14
+ delete?: (user: any, data: any) => boolean;
15
+ }
16
+ export interface EntitySchema {
17
+ fields: Record<string, FieldType>;
18
+ accessRules?: AccessRules;
19
+ indexes?: Array<{
20
+ fields: string[];
21
+ unique?: boolean;
22
+ }>;
23
+ }
24
+ export interface DatabaseSchema {
25
+ entities: Record<string, EntitySchema>;
26
+ }
27
+ export interface Migration {
28
+ version: number;
29
+ name: string;
30
+ up: string;
31
+ down?: string;
32
+ appliedAt?: number;
33
+ }
34
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/schema.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,WAAW,CAAC;AAEhB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../shared-types/src/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ export interface SyncRequest {
2
+ lastSyncTimestamp: number | null;
3
+ changes: Array<{
4
+ entity: string;
5
+ operation: 'create' | 'update' | 'delete';
6
+ id: string;
7
+ data: Record<string, any>;
8
+ clientTimestamp: number;
9
+ version: number;
10
+ }>;
11
+ }
12
+ export interface SyncResponse {
13
+ serverTimestamp: number;
14
+ changes: Array<{
15
+ entity: string;
16
+ operation: 'create' | 'update' | 'delete';
17
+ id: string;
18
+ data: Record<string, any>;
19
+ serverTimestamp: number;
20
+ version: number;
21
+ }>;
22
+ conflicts: Array<{
23
+ entity: string;
24
+ id: string;
25
+ clientVersion: number;
26
+ serverVersion: number;
27
+ serverData: Record<string, any>;
28
+ }>;
29
+ errors: Array<{
30
+ entity: string;
31
+ id: string;
32
+ operation: string;
33
+ error: string;
34
+ code: 'ACCESS_DENIED' | 'VALIDATION_ERROR' | 'NOT_FOUND';
35
+ }>;
36
+ }
37
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/sync.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1C,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1C,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,KAAK,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,eAAe,GAAG,kBAAkB,GAAG,WAAW,CAAC;KAC1D,CAAC,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../shared-types/src/sync.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@edgebasejs/admin-client",
3
+ "version": "0.1.0",
4
+ "description": "Type-safe admin API client for EdgeBase",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ }
15
+ },
16
+ "dependencies": {
17
+ "zod": "^3.22.4",
18
+ "@edgebasejs/types": "0.1.0"
19
+ },
20
+ "publishConfig": {
21
+ "registry": "https://registry.npmjs.org/"
22
+ },
23
+ "devDependencies": {
24
+ "typescript": "^5.4.5"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "type-check": "tsc --noEmit",
29
+ "dev": "tsc --watch"
30
+ }
31
+ }