@ezwrld/ezbase 0.1.4 → 0.1.6
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/dist/index.d.ts +47 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +134 -36
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +145 -42
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ interface Document<T = Record<string, unknown>> {
|
|
|
9
9
|
interface EzBaseOptions {
|
|
10
10
|
url: string;
|
|
11
11
|
adminKey?: string;
|
|
12
|
+
name?: string;
|
|
12
13
|
}
|
|
13
14
|
interface AuthUser {
|
|
14
15
|
id: string;
|
|
@@ -41,17 +42,53 @@ declare class AuthClient {
|
|
|
41
42
|
token: string;
|
|
42
43
|
user: AuthUser;
|
|
43
44
|
}>;
|
|
44
|
-
signOut(): void
|
|
45
|
+
signOut(): Promise<void>;
|
|
45
46
|
restoreSession(token: string, user: AuthUser): void;
|
|
46
47
|
onAuthStateChanged(callback: AuthStateCallback): () => void;
|
|
47
48
|
private _notify;
|
|
48
49
|
}
|
|
50
|
+
declare class DatabaseRef {
|
|
51
|
+
private ez;
|
|
52
|
+
private name;
|
|
53
|
+
constructor(ez: EzBase, name: string);
|
|
54
|
+
/** @internal — base path for API calls to this database */
|
|
55
|
+
_basePath(): string;
|
|
56
|
+
collection<T = Record<string, unknown>>(name: string): CollectionRef<T>;
|
|
57
|
+
listCollections(): Promise<string[]>;
|
|
58
|
+
getPermission(collection: string): Promise<{
|
|
59
|
+
database: string;
|
|
60
|
+
collection: string;
|
|
61
|
+
level: string;
|
|
62
|
+
}>;
|
|
63
|
+
setPermission(collection: string, level: string): Promise<{
|
|
64
|
+
database: string;
|
|
65
|
+
collection: string;
|
|
66
|
+
level: string;
|
|
67
|
+
}>;
|
|
68
|
+
}
|
|
49
69
|
declare class EzBase {
|
|
50
70
|
private url;
|
|
51
71
|
private adminKey?;
|
|
72
|
+
private _name;
|
|
73
|
+
private _defaultDb;
|
|
52
74
|
readonly auth: AuthClient;
|
|
75
|
+
/** @internal */
|
|
76
|
+
get _errorPrefix(): string;
|
|
53
77
|
constructor(urlOrOpts: string | EzBaseOptions);
|
|
78
|
+
database(name: string): DatabaseRef;
|
|
54
79
|
collection<T = Record<string, unknown>>(name: string): CollectionRef<T>;
|
|
80
|
+
listDatabases(): Promise<string[]>;
|
|
81
|
+
listCollections(): Promise<string[]>;
|
|
82
|
+
getPermission(collection: string): Promise<{
|
|
83
|
+
database: string;
|
|
84
|
+
collection: string;
|
|
85
|
+
level: string;
|
|
86
|
+
}>;
|
|
87
|
+
setPermission(collection: string, level: string): Promise<{
|
|
88
|
+
database: string;
|
|
89
|
+
collection: string;
|
|
90
|
+
level: string;
|
|
91
|
+
}>;
|
|
55
92
|
/** @internal */
|
|
56
93
|
_getUrl(): string;
|
|
57
94
|
/** @internal */
|
|
@@ -61,8 +98,10 @@ declare class EzBase {
|
|
|
61
98
|
}
|
|
62
99
|
declare class CollectionRef<T = Record<string, unknown>> {
|
|
63
100
|
private ez;
|
|
101
|
+
private db;
|
|
64
102
|
private name;
|
|
65
|
-
constructor(ez: EzBase, name: string);
|
|
103
|
+
constructor(ez: EzBase, db: DatabaseRef, name: string);
|
|
104
|
+
private _basePath;
|
|
66
105
|
doc(id: string): DocRef<T>;
|
|
67
106
|
where(field: string, op: WhereOp, value: unknown): QueryRef<T>;
|
|
68
107
|
orderBy(field: string, direction?: OrderDir): QueryRef<T>;
|
|
@@ -73,9 +112,10 @@ declare class CollectionRef<T = Record<string, unknown>> {
|
|
|
73
112
|
}
|
|
74
113
|
declare class DocRef<T = Record<string, unknown>> {
|
|
75
114
|
private ez;
|
|
115
|
+
private db;
|
|
76
116
|
private collection;
|
|
77
117
|
private id;
|
|
78
|
-
constructor(ez: EzBase, collection: string, id: string);
|
|
118
|
+
constructor(ez: EzBase, db: DatabaseRef, collection: string, id: string);
|
|
79
119
|
private path;
|
|
80
120
|
get(): Promise<Document<T> | null>;
|
|
81
121
|
set(data: T): Promise<Document<T>>;
|
|
@@ -85,20 +125,22 @@ declare class DocRef<T = Record<string, unknown>> {
|
|
|
85
125
|
}
|
|
86
126
|
declare class QueryRef<T = Record<string, unknown>> {
|
|
87
127
|
private ez;
|
|
128
|
+
private db;
|
|
88
129
|
private collection;
|
|
89
130
|
private wheres;
|
|
90
131
|
private _orderBy?;
|
|
91
132
|
private _order?;
|
|
92
133
|
private _limit?;
|
|
93
|
-
constructor(ez: EzBase, collection: string);
|
|
134
|
+
constructor(ez: EzBase, db: DatabaseRef, collection: string);
|
|
94
135
|
where(field: string, op: WhereOp, value: unknown): this;
|
|
95
136
|
orderBy(field: string, direction?: OrderDir): this;
|
|
96
137
|
limit(n: number): this;
|
|
97
138
|
private buildParams;
|
|
139
|
+
private _basePath;
|
|
98
140
|
get(): Promise<Document<T>[]>;
|
|
99
141
|
onSnapshot(callback: (docs: Document<T>[]) => void, onError?: (err: Error) => void): () => void;
|
|
100
142
|
}
|
|
101
|
-
export { EzBase, CollectionRef, DocRef, QueryRef, AuthClient };
|
|
143
|
+
export { EzBase, DatabaseRef, CollectionRef, DocRef, QueryRef, AuthClient };
|
|
102
144
|
export type { Document, WhereOp, OrderDir, EzBaseOptions, AuthUser };
|
|
103
145
|
export default EzBase;
|
|
104
146
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;AAEpD,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;AAE9B,UAAU,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,CAAC,CAAA;IACP,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -64,38 +64,53 @@ class AuthClient {
|
|
|
64
64
|
return this._token;
|
|
65
65
|
}
|
|
66
66
|
async signUp(opts) {
|
|
67
|
-
const res = await fetch(`${this.ez['url']}/api/auth/
|
|
67
|
+
const res = await fetch(`${this.ez['url']}/api/auth/sign-up/email`, {
|
|
68
68
|
method: 'POST',
|
|
69
69
|
headers: { 'Content-Type': 'application/json', ...this.ez['_authHeaders']() },
|
|
70
|
-
body: JSON.stringify(opts),
|
|
70
|
+
body: JSON.stringify({ email: opts.email, password: opts.password, name: opts.email }),
|
|
71
71
|
});
|
|
72
72
|
if (!res.ok) {
|
|
73
73
|
const body = await res.json().catch(() => ({ error: res.statusText }));
|
|
74
|
-
throw new Error(
|
|
74
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${body.error || body.message || res.statusText}`);
|
|
75
75
|
}
|
|
76
76
|
const data = await res.json();
|
|
77
|
-
this._token = data.token;
|
|
78
|
-
this._currentUser =
|
|
77
|
+
this._token = data.session?.token || data.token;
|
|
78
|
+
this._currentUser = {
|
|
79
|
+
id: data.user?.id || data.id,
|
|
80
|
+
email: data.user?.email || data.email,
|
|
81
|
+
role: data.user?.role || 'user',
|
|
82
|
+
};
|
|
79
83
|
this._notify();
|
|
80
|
-
return
|
|
84
|
+
return { token: this._token, user: this._currentUser };
|
|
81
85
|
}
|
|
82
86
|
async signIn(opts) {
|
|
83
|
-
const res = await fetch(`${this.ez['url']}/api/auth/
|
|
87
|
+
const res = await fetch(`${this.ez['url']}/api/auth/sign-in/email`, {
|
|
84
88
|
method: 'POST',
|
|
85
89
|
headers: { 'Content-Type': 'application/json', ...this.ez['_authHeaders']() },
|
|
86
|
-
body: JSON.stringify(opts),
|
|
90
|
+
body: JSON.stringify({ email: opts.email, password: opts.password }),
|
|
87
91
|
});
|
|
88
92
|
if (!res.ok) {
|
|
89
93
|
const body = await res.json().catch(() => ({ error: res.statusText }));
|
|
90
|
-
throw new Error(
|
|
94
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${body.error || body.message || res.statusText}`);
|
|
91
95
|
}
|
|
92
96
|
const data = await res.json();
|
|
93
|
-
this._token = data.token;
|
|
94
|
-
this._currentUser =
|
|
97
|
+
this._token = data.session?.token || data.token;
|
|
98
|
+
this._currentUser = {
|
|
99
|
+
id: data.user?.id || data.id,
|
|
100
|
+
email: data.user?.email || data.email,
|
|
101
|
+
role: data.user?.role || 'user',
|
|
102
|
+
};
|
|
95
103
|
this._notify();
|
|
96
|
-
return
|
|
97
|
-
}
|
|
98
|
-
signOut() {
|
|
104
|
+
return { token: this._token, user: this._currentUser };
|
|
105
|
+
}
|
|
106
|
+
async signOut() {
|
|
107
|
+
// Fire-and-forget server-side sign out
|
|
108
|
+
if (this._token) {
|
|
109
|
+
fetch(`${this.ez['url']}/api/auth/sign-out`, {
|
|
110
|
+
method: 'POST',
|
|
111
|
+
headers: { 'Content-Type': 'application/json', ...this.ez['_authHeaders']() },
|
|
112
|
+
}).catch(() => { });
|
|
113
|
+
}
|
|
99
114
|
this._token = null;
|
|
100
115
|
this._currentUser = null;
|
|
101
116
|
this._notify();
|
|
@@ -118,23 +133,94 @@ class AuthClient {
|
|
|
118
133
|
}
|
|
119
134
|
}
|
|
120
135
|
}
|
|
136
|
+
// ── Database reference ────────────────────────────────────────
|
|
137
|
+
class DatabaseRef {
|
|
138
|
+
ez;
|
|
139
|
+
name;
|
|
140
|
+
constructor(ez, name) {
|
|
141
|
+
this.ez = ez;
|
|
142
|
+
this.name = name;
|
|
143
|
+
}
|
|
144
|
+
/** @internal — base path for API calls to this database */
|
|
145
|
+
_basePath() {
|
|
146
|
+
if (this.name === 'default')
|
|
147
|
+
return `${this.ez._getUrl()}/api`;
|
|
148
|
+
return `${this.ez._getUrl()}/api/db/${encodeURIComponent(this.name)}`;
|
|
149
|
+
}
|
|
150
|
+
collection(name) {
|
|
151
|
+
return new CollectionRef(this.ez, this, name);
|
|
152
|
+
}
|
|
153
|
+
async listCollections() {
|
|
154
|
+
const res = await fetch(`${this._basePath()}/collections`, {
|
|
155
|
+
headers: this.ez._authHeaders(),
|
|
156
|
+
});
|
|
157
|
+
if (!res.ok)
|
|
158
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
159
|
+
return res.json();
|
|
160
|
+
}
|
|
161
|
+
async getPermission(collection) {
|
|
162
|
+
const res = await fetch(`${this._basePath()}/collections/${encodeURIComponent(collection)}/permissions`, { headers: this.ez._authHeaders() });
|
|
163
|
+
if (!res.ok)
|
|
164
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
165
|
+
return res.json();
|
|
166
|
+
}
|
|
167
|
+
async setPermission(collection, level) {
|
|
168
|
+
const res = await fetch(`${this._basePath()}/collections/${encodeURIComponent(collection)}/permissions`, {
|
|
169
|
+
method: 'PUT',
|
|
170
|
+
headers: { 'Content-Type': 'application/json', ...this.ez._authHeaders() },
|
|
171
|
+
body: JSON.stringify({ level }),
|
|
172
|
+
});
|
|
173
|
+
if (!res.ok)
|
|
174
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
175
|
+
return res.json();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
121
178
|
// ── EzBase client ─────────────────────────────────────────────
|
|
122
179
|
class EzBase {
|
|
123
180
|
url;
|
|
124
181
|
adminKey;
|
|
182
|
+
_name;
|
|
183
|
+
_defaultDb;
|
|
125
184
|
auth;
|
|
185
|
+
/** @internal */
|
|
186
|
+
get _errorPrefix() {
|
|
187
|
+
return `ezbase [${this._name}]`;
|
|
188
|
+
}
|
|
126
189
|
constructor(urlOrOpts) {
|
|
127
190
|
if (typeof urlOrOpts === 'string') {
|
|
128
191
|
this.url = urlOrOpts.replace(/\/$/, '');
|
|
192
|
+
this._name = 'default';
|
|
129
193
|
}
|
|
130
194
|
else {
|
|
131
195
|
this.url = urlOrOpts.url.replace(/\/$/, '');
|
|
132
196
|
this.adminKey = urlOrOpts.adminKey;
|
|
197
|
+
this._name = urlOrOpts.name || 'default';
|
|
133
198
|
}
|
|
134
199
|
this.auth = new AuthClient(this);
|
|
200
|
+
this._defaultDb = new DatabaseRef(this, 'default');
|
|
201
|
+
}
|
|
202
|
+
database(name) {
|
|
203
|
+
return new DatabaseRef(this, name);
|
|
135
204
|
}
|
|
136
205
|
collection(name) {
|
|
137
|
-
return
|
|
206
|
+
return this._defaultDb.collection(name);
|
|
207
|
+
}
|
|
208
|
+
async listDatabases() {
|
|
209
|
+
const res = await fetch(`${this.url}/api/databases`, {
|
|
210
|
+
headers: this._authHeaders(),
|
|
211
|
+
});
|
|
212
|
+
if (!res.ok)
|
|
213
|
+
throw new Error(`${this._errorPrefix}: ${res.status} ${await res.text()}`);
|
|
214
|
+
return res.json();
|
|
215
|
+
}
|
|
216
|
+
async listCollections() {
|
|
217
|
+
return this._defaultDb.listCollections();
|
|
218
|
+
}
|
|
219
|
+
async getPermission(collection) {
|
|
220
|
+
return this._defaultDb.getPermission(collection);
|
|
221
|
+
}
|
|
222
|
+
async setPermission(collection, level) {
|
|
223
|
+
return this._defaultDb.setPermission(collection, level);
|
|
138
224
|
}
|
|
139
225
|
/** @internal */
|
|
140
226
|
_getUrl() {
|
|
@@ -158,65 +244,72 @@ class EzBase {
|
|
|
158
244
|
// ── Collection reference ──────────────────────────────────────
|
|
159
245
|
class CollectionRef {
|
|
160
246
|
ez;
|
|
247
|
+
db;
|
|
161
248
|
name;
|
|
162
|
-
constructor(ez, name) {
|
|
249
|
+
constructor(ez, db, name) {
|
|
163
250
|
this.ez = ez;
|
|
251
|
+
this.db = db;
|
|
164
252
|
this.name = name;
|
|
165
253
|
}
|
|
254
|
+
_basePath() {
|
|
255
|
+
return `${this.db._basePath()}/collections/${encodeURIComponent(this.name)}`;
|
|
256
|
+
}
|
|
166
257
|
doc(id) {
|
|
167
|
-
return new DocRef(this.ez, this.name, id);
|
|
258
|
+
return new DocRef(this.ez, this.db, this.name, id);
|
|
168
259
|
}
|
|
169
260
|
where(field, op, value) {
|
|
170
|
-
return new QueryRef(this.ez, this.name).where(field, op, value);
|
|
261
|
+
return new QueryRef(this.ez, this.db, this.name).where(field, op, value);
|
|
171
262
|
}
|
|
172
263
|
orderBy(field, direction) {
|
|
173
|
-
return new QueryRef(this.ez, this.name).orderBy(field, direction);
|
|
264
|
+
return new QueryRef(this.ez, this.db, this.name).orderBy(field, direction);
|
|
174
265
|
}
|
|
175
266
|
limit(n) {
|
|
176
|
-
return new QueryRef(this.ez, this.name).limit(n);
|
|
267
|
+
return new QueryRef(this.ez, this.db, this.name).limit(n);
|
|
177
268
|
}
|
|
178
269
|
async add(data) {
|
|
179
|
-
const res = await fetch(
|
|
270
|
+
const res = await fetch(this._basePath(), {
|
|
180
271
|
method: 'POST',
|
|
181
272
|
headers: { 'Content-Type': 'application/json', ...this.ez._authHeaders() },
|
|
182
273
|
body: JSON.stringify(data),
|
|
183
274
|
});
|
|
184
275
|
if (!res.ok)
|
|
185
|
-
throw new Error(
|
|
276
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
186
277
|
return res.json();
|
|
187
278
|
}
|
|
188
279
|
async get() {
|
|
189
|
-
const res = await fetch(
|
|
280
|
+
const res = await fetch(this._basePath(), { headers: this.ez._authHeaders() });
|
|
190
281
|
if (!res.ok)
|
|
191
|
-
throw new Error(
|
|
282
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
192
283
|
return res.json();
|
|
193
284
|
}
|
|
194
285
|
onSnapshot(callback, onError) {
|
|
195
286
|
const tp = this.ez._sseTokenParam();
|
|
196
287
|
const sep = tp ? '?' : '';
|
|
197
|
-
const url = `${this.
|
|
288
|
+
const url = `${this._basePath()}/sse${sep}${tp}`;
|
|
198
289
|
return sseConnect(url, this.ez._authHeaders(), (data) => callback(JSON.parse(data)), onError);
|
|
199
290
|
}
|
|
200
291
|
}
|
|
201
292
|
// ── Document reference ────────────────────────────────────────
|
|
202
293
|
class DocRef {
|
|
203
294
|
ez;
|
|
295
|
+
db;
|
|
204
296
|
collection;
|
|
205
297
|
id;
|
|
206
|
-
constructor(ez, collection, id) {
|
|
298
|
+
constructor(ez, db, collection, id) {
|
|
207
299
|
this.ez = ez;
|
|
300
|
+
this.db = db;
|
|
208
301
|
this.collection = collection;
|
|
209
302
|
this.id = id;
|
|
210
303
|
}
|
|
211
304
|
path() {
|
|
212
|
-
return `${this.
|
|
305
|
+
return `${this.db._basePath()}/collections/${encodeURIComponent(this.collection)}/${encodeURIComponent(this.id)}`;
|
|
213
306
|
}
|
|
214
307
|
async get() {
|
|
215
308
|
const res = await fetch(this.path(), { headers: this.ez._authHeaders() });
|
|
216
309
|
if (res.status === 404)
|
|
217
310
|
return null;
|
|
218
311
|
if (!res.ok)
|
|
219
|
-
throw new Error(
|
|
312
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
220
313
|
return res.json();
|
|
221
314
|
}
|
|
222
315
|
async set(data) {
|
|
@@ -226,7 +319,7 @@ class DocRef {
|
|
|
226
319
|
body: JSON.stringify(data),
|
|
227
320
|
});
|
|
228
321
|
if (!res.ok)
|
|
229
|
-
throw new Error(
|
|
322
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
230
323
|
return res.json();
|
|
231
324
|
}
|
|
232
325
|
async update(data) {
|
|
@@ -236,7 +329,7 @@ class DocRef {
|
|
|
236
329
|
body: JSON.stringify(data),
|
|
237
330
|
});
|
|
238
331
|
if (!res.ok)
|
|
239
|
-
throw new Error(
|
|
332
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
240
333
|
return res.json();
|
|
241
334
|
}
|
|
242
335
|
async delete() {
|
|
@@ -245,7 +338,7 @@ class DocRef {
|
|
|
245
338
|
headers: this.ez._authHeaders(),
|
|
246
339
|
});
|
|
247
340
|
if (!res.ok)
|
|
248
|
-
throw new Error(
|
|
341
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
249
342
|
}
|
|
250
343
|
onSnapshot(callback, onError) {
|
|
251
344
|
const tp = this.ez._sseTokenParam();
|
|
@@ -257,13 +350,15 @@ class DocRef {
|
|
|
257
350
|
// ── Query reference (chainable) ──────────────────────────────
|
|
258
351
|
class QueryRef {
|
|
259
352
|
ez;
|
|
353
|
+
db;
|
|
260
354
|
collection;
|
|
261
355
|
wheres = [];
|
|
262
356
|
_orderBy;
|
|
263
357
|
_order;
|
|
264
358
|
_limit;
|
|
265
|
-
constructor(ez, collection) {
|
|
359
|
+
constructor(ez, db, collection) {
|
|
266
360
|
this.ez = ez;
|
|
361
|
+
this.db = db;
|
|
267
362
|
this.collection = collection;
|
|
268
363
|
}
|
|
269
364
|
where(field, op, value) {
|
|
@@ -295,21 +390,24 @@ class QueryRef {
|
|
|
295
390
|
const qs = params.toString();
|
|
296
391
|
return qs ? '?' + qs : '';
|
|
297
392
|
}
|
|
393
|
+
_basePath() {
|
|
394
|
+
return `${this.db._basePath()}/collections/${encodeURIComponent(this.collection)}`;
|
|
395
|
+
}
|
|
298
396
|
async get() {
|
|
299
|
-
const url = `${this.
|
|
397
|
+
const url = `${this._basePath()}${this.buildParams()}`;
|
|
300
398
|
const res = await fetch(url, { headers: this.ez._authHeaders() });
|
|
301
399
|
if (!res.ok)
|
|
302
|
-
throw new Error(
|
|
400
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`);
|
|
303
401
|
return res.json();
|
|
304
402
|
}
|
|
305
403
|
onSnapshot(callback, onError) {
|
|
306
|
-
const base = `${this.
|
|
404
|
+
const base = `${this._basePath()}/sse${this.buildParams()}`;
|
|
307
405
|
const tp = this.ez._sseTokenParam();
|
|
308
406
|
const sep = base.includes('?') ? '&' : '?';
|
|
309
407
|
const url = tp ? `${base}${sep}${tp}` : base;
|
|
310
408
|
return sseConnect(url, this.ez._authHeaders(), (data) => callback(JSON.parse(data)), onError);
|
|
311
409
|
}
|
|
312
410
|
}
|
|
313
|
-
export { EzBase, CollectionRef, DocRef, QueryRef, AuthClient };
|
|
411
|
+
export { EzBase, DatabaseRef, CollectionRef, DocRef, QueryRef, AuthClient };
|
|
314
412
|
export default EzBase;
|
|
315
413
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -12,6 +12,7 @@ interface Document<T = Record<string, unknown>> {
|
|
|
12
12
|
interface EzBaseOptions {
|
|
13
13
|
url: string
|
|
14
14
|
adminKey?: string
|
|
15
|
+
name?: string
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
interface AuthUser {
|
|
@@ -100,40 +101,55 @@ class AuthClient {
|
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
async signUp(opts: { email: string; password: string }): Promise<{ token: string; user: AuthUser }> {
|
|
103
|
-
const res = await fetch(`${this.ez['url']}/api/auth/
|
|
104
|
+
const res = await fetch(`${this.ez['url']}/api/auth/sign-up/email`, {
|
|
104
105
|
method: 'POST',
|
|
105
106
|
headers: { 'Content-Type': 'application/json', ...this.ez['_authHeaders']() },
|
|
106
|
-
body: JSON.stringify(opts),
|
|
107
|
+
body: JSON.stringify({ email: opts.email, password: opts.password, name: opts.email }),
|
|
107
108
|
})
|
|
108
109
|
if (!res.ok) {
|
|
109
110
|
const body = await res.json().catch(() => ({ error: res.statusText }))
|
|
110
|
-
throw new Error(
|
|
111
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${body.error || body.message || res.statusText}`)
|
|
111
112
|
}
|
|
112
113
|
const data = await res.json()
|
|
113
|
-
this._token = data.token
|
|
114
|
-
this._currentUser =
|
|
114
|
+
this._token = data.session?.token || data.token
|
|
115
|
+
this._currentUser = {
|
|
116
|
+
id: data.user?.id || data.id,
|
|
117
|
+
email: data.user?.email || data.email,
|
|
118
|
+
role: data.user?.role || 'user',
|
|
119
|
+
}
|
|
115
120
|
this._notify()
|
|
116
|
-
return
|
|
121
|
+
return { token: this._token!, user: this._currentUser! }
|
|
117
122
|
}
|
|
118
123
|
|
|
119
124
|
async signIn(opts: { email: string; password: string }): Promise<{ token: string; user: AuthUser }> {
|
|
120
|
-
const res = await fetch(`${this.ez['url']}/api/auth/
|
|
125
|
+
const res = await fetch(`${this.ez['url']}/api/auth/sign-in/email`, {
|
|
121
126
|
method: 'POST',
|
|
122
127
|
headers: { 'Content-Type': 'application/json', ...this.ez['_authHeaders']() },
|
|
123
|
-
body: JSON.stringify(opts),
|
|
128
|
+
body: JSON.stringify({ email: opts.email, password: opts.password }),
|
|
124
129
|
})
|
|
125
130
|
if (!res.ok) {
|
|
126
131
|
const body = await res.json().catch(() => ({ error: res.statusText }))
|
|
127
|
-
throw new Error(
|
|
132
|
+
throw new Error(`${this.ez['_errorPrefix']}: ${body.error || body.message || res.statusText}`)
|
|
128
133
|
}
|
|
129
134
|
const data = await res.json()
|
|
130
|
-
this._token = data.token
|
|
131
|
-
this._currentUser =
|
|
135
|
+
this._token = data.session?.token || data.token
|
|
136
|
+
this._currentUser = {
|
|
137
|
+
id: data.user?.id || data.id,
|
|
138
|
+
email: data.user?.email || data.email,
|
|
139
|
+
role: data.user?.role || 'user',
|
|
140
|
+
}
|
|
132
141
|
this._notify()
|
|
133
|
-
return
|
|
142
|
+
return { token: this._token!, user: this._currentUser! }
|
|
134
143
|
}
|
|
135
144
|
|
|
136
|
-
signOut() {
|
|
145
|
+
async signOut() {
|
|
146
|
+
// Fire-and-forget server-side sign out
|
|
147
|
+
if (this._token) {
|
|
148
|
+
fetch(`${this.ez['url']}/api/auth/sign-out`, {
|
|
149
|
+
method: 'POST',
|
|
150
|
+
headers: { 'Content-Type': 'application/json', ...this.ez['_authHeaders']() },
|
|
151
|
+
}).catch(() => {})
|
|
152
|
+
}
|
|
137
153
|
this._token = null
|
|
138
154
|
this._currentUser = null
|
|
139
155
|
this._notify()
|
|
@@ -157,24 +173,106 @@ class AuthClient {
|
|
|
157
173
|
}
|
|
158
174
|
}
|
|
159
175
|
|
|
176
|
+
// ── Database reference ────────────────────────────────────────
|
|
177
|
+
class DatabaseRef {
|
|
178
|
+
constructor(
|
|
179
|
+
private ez: EzBase,
|
|
180
|
+
private name: string
|
|
181
|
+
) {}
|
|
182
|
+
|
|
183
|
+
/** @internal — base path for API calls to this database */
|
|
184
|
+
_basePath(): string {
|
|
185
|
+
if (this.name === 'default') return `${this.ez._getUrl()}/api`
|
|
186
|
+
return `${this.ez._getUrl()}/api/db/${encodeURIComponent(this.name)}`
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
collection<T = Record<string, unknown>>(name: string): CollectionRef<T> {
|
|
190
|
+
return new CollectionRef<T>(this.ez, this, name)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
async listCollections(): Promise<string[]> {
|
|
194
|
+
const res = await fetch(`${this._basePath()}/collections`, {
|
|
195
|
+
headers: this.ez._authHeaders(),
|
|
196
|
+
})
|
|
197
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
198
|
+
return res.json()
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
async getPermission(collection: string): Promise<{ database: string; collection: string; level: string }> {
|
|
202
|
+
const res = await fetch(
|
|
203
|
+
`${this._basePath()}/collections/${encodeURIComponent(collection)}/permissions`,
|
|
204
|
+
{ headers: this.ez._authHeaders() }
|
|
205
|
+
)
|
|
206
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
207
|
+
return res.json()
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
async setPermission(collection: string, level: string): Promise<{ database: string; collection: string; level: string }> {
|
|
211
|
+
const res = await fetch(
|
|
212
|
+
`${this._basePath()}/collections/${encodeURIComponent(collection)}/permissions`,
|
|
213
|
+
{
|
|
214
|
+
method: 'PUT',
|
|
215
|
+
headers: { 'Content-Type': 'application/json', ...this.ez._authHeaders() },
|
|
216
|
+
body: JSON.stringify({ level }),
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
220
|
+
return res.json()
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
160
224
|
// ── EzBase client ─────────────────────────────────────────────
|
|
161
225
|
class EzBase {
|
|
162
226
|
private url: string
|
|
163
227
|
private adminKey?: string
|
|
228
|
+
private _name: string
|
|
229
|
+
private _defaultDb: DatabaseRef
|
|
164
230
|
readonly auth: AuthClient
|
|
165
231
|
|
|
232
|
+
/** @internal */
|
|
233
|
+
get _errorPrefix(): string {
|
|
234
|
+
return `ezbase [${this._name}]`
|
|
235
|
+
}
|
|
236
|
+
|
|
166
237
|
constructor(urlOrOpts: string | EzBaseOptions) {
|
|
167
238
|
if (typeof urlOrOpts === 'string') {
|
|
168
239
|
this.url = urlOrOpts.replace(/\/$/, '')
|
|
240
|
+
this._name = 'default'
|
|
169
241
|
} else {
|
|
170
242
|
this.url = urlOrOpts.url.replace(/\/$/, '')
|
|
171
243
|
this.adminKey = urlOrOpts.adminKey
|
|
244
|
+
this._name = urlOrOpts.name || 'default'
|
|
172
245
|
}
|
|
173
246
|
this.auth = new AuthClient(this)
|
|
247
|
+
this._defaultDb = new DatabaseRef(this, 'default')
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
database(name: string): DatabaseRef {
|
|
251
|
+
return new DatabaseRef(this, name)
|
|
174
252
|
}
|
|
175
253
|
|
|
176
254
|
collection<T = Record<string, unknown>>(name: string): CollectionRef<T> {
|
|
177
|
-
return
|
|
255
|
+
return this._defaultDb.collection<T>(name)
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
async listDatabases(): Promise<string[]> {
|
|
259
|
+
const res = await fetch(`${this.url}/api/databases`, {
|
|
260
|
+
headers: this._authHeaders(),
|
|
261
|
+
})
|
|
262
|
+
if (!res.ok) throw new Error(`${this._errorPrefix}: ${res.status} ${await res.text()}`)
|
|
263
|
+
return res.json()
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
async listCollections(): Promise<string[]> {
|
|
267
|
+
return this._defaultDb.listCollections()
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
async getPermission(collection: string) {
|
|
271
|
+
return this._defaultDb.getPermission(collection)
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
async setPermission(collection: string, level: string) {
|
|
275
|
+
return this._defaultDb.setPermission(collection, level)
|
|
178
276
|
}
|
|
179
277
|
|
|
180
278
|
/** @internal */
|
|
@@ -201,44 +299,43 @@ class EzBase {
|
|
|
201
299
|
class CollectionRef<T = Record<string, unknown>> {
|
|
202
300
|
constructor(
|
|
203
301
|
private ez: EzBase,
|
|
302
|
+
private db: DatabaseRef,
|
|
204
303
|
private name: string
|
|
205
304
|
) {}
|
|
206
305
|
|
|
306
|
+
private _basePath(): string {
|
|
307
|
+
return `${this.db._basePath()}/collections/${encodeURIComponent(this.name)}`
|
|
308
|
+
}
|
|
309
|
+
|
|
207
310
|
doc(id: string): DocRef<T> {
|
|
208
|
-
return new DocRef<T>(this.ez, this.name, id)
|
|
311
|
+
return new DocRef<T>(this.ez, this.db, this.name, id)
|
|
209
312
|
}
|
|
210
313
|
|
|
211
314
|
where(field: string, op: WhereOp, value: unknown): QueryRef<T> {
|
|
212
|
-
return new QueryRef<T>(this.ez, this.name).where(field, op, value)
|
|
315
|
+
return new QueryRef<T>(this.ez, this.db, this.name).where(field, op, value)
|
|
213
316
|
}
|
|
214
317
|
|
|
215
318
|
orderBy(field: string, direction?: OrderDir): QueryRef<T> {
|
|
216
|
-
return new QueryRef<T>(this.ez, this.name).orderBy(field, direction)
|
|
319
|
+
return new QueryRef<T>(this.ez, this.db, this.name).orderBy(field, direction)
|
|
217
320
|
}
|
|
218
321
|
|
|
219
322
|
limit(n: number): QueryRef<T> {
|
|
220
|
-
return new QueryRef<T>(this.ez, this.name).limit(n)
|
|
323
|
+
return new QueryRef<T>(this.ez, this.db, this.name).limit(n)
|
|
221
324
|
}
|
|
222
325
|
|
|
223
326
|
async add(data: Partial<T>): Promise<Document<T>> {
|
|
224
|
-
const res = await fetch(
|
|
225
|
-
|
|
226
|
-
{
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
231
|
-
)
|
|
232
|
-
if (!res.ok) throw new Error(`ezbase: ${res.status} ${await res.text()}`)
|
|
327
|
+
const res = await fetch(this._basePath(), {
|
|
328
|
+
method: 'POST',
|
|
329
|
+
headers: { 'Content-Type': 'application/json', ...this.ez._authHeaders() },
|
|
330
|
+
body: JSON.stringify(data),
|
|
331
|
+
})
|
|
332
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
233
333
|
return res.json()
|
|
234
334
|
}
|
|
235
335
|
|
|
236
336
|
async get(): Promise<Document<T>[]> {
|
|
237
|
-
const res = await fetch(
|
|
238
|
-
|
|
239
|
-
{ headers: this.ez._authHeaders() }
|
|
240
|
-
)
|
|
241
|
-
if (!res.ok) throw new Error(`ezbase: ${res.status} ${await res.text()}`)
|
|
337
|
+
const res = await fetch(this._basePath(), { headers: this.ez._authHeaders() })
|
|
338
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
242
339
|
return res.json()
|
|
243
340
|
}
|
|
244
341
|
|
|
@@ -248,7 +345,7 @@ class CollectionRef<T = Record<string, unknown>> {
|
|
|
248
345
|
): () => void {
|
|
249
346
|
const tp = this.ez._sseTokenParam()
|
|
250
347
|
const sep = tp ? '?' : ''
|
|
251
|
-
const url = `${this.
|
|
348
|
+
const url = `${this._basePath()}/sse${sep}${tp}`
|
|
252
349
|
return sseConnect(url, this.ez._authHeaders(), (data) => callback(JSON.parse(data)), onError)
|
|
253
350
|
}
|
|
254
351
|
}
|
|
@@ -257,18 +354,19 @@ class CollectionRef<T = Record<string, unknown>> {
|
|
|
257
354
|
class DocRef<T = Record<string, unknown>> {
|
|
258
355
|
constructor(
|
|
259
356
|
private ez: EzBase,
|
|
357
|
+
private db: DatabaseRef,
|
|
260
358
|
private collection: string,
|
|
261
359
|
private id: string
|
|
262
360
|
) {}
|
|
263
361
|
|
|
264
362
|
private path(): string {
|
|
265
|
-
return `${this.
|
|
363
|
+
return `${this.db._basePath()}/collections/${encodeURIComponent(this.collection)}/${encodeURIComponent(this.id)}`
|
|
266
364
|
}
|
|
267
365
|
|
|
268
366
|
async get(): Promise<Document<T> | null> {
|
|
269
367
|
const res = await fetch(this.path(), { headers: this.ez._authHeaders() })
|
|
270
368
|
if (res.status === 404) return null
|
|
271
|
-
if (!res.ok) throw new Error(
|
|
369
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
272
370
|
return res.json()
|
|
273
371
|
}
|
|
274
372
|
|
|
@@ -278,7 +376,7 @@ class DocRef<T = Record<string, unknown>> {
|
|
|
278
376
|
headers: { 'Content-Type': 'application/json', ...this.ez._authHeaders() },
|
|
279
377
|
body: JSON.stringify(data),
|
|
280
378
|
})
|
|
281
|
-
if (!res.ok) throw new Error(
|
|
379
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
282
380
|
return res.json()
|
|
283
381
|
}
|
|
284
382
|
|
|
@@ -288,7 +386,7 @@ class DocRef<T = Record<string, unknown>> {
|
|
|
288
386
|
headers: { 'Content-Type': 'application/json', ...this.ez._authHeaders() },
|
|
289
387
|
body: JSON.stringify(data),
|
|
290
388
|
})
|
|
291
|
-
if (!res.ok) throw new Error(
|
|
389
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
292
390
|
return res.json()
|
|
293
391
|
}
|
|
294
392
|
|
|
@@ -297,7 +395,7 @@ class DocRef<T = Record<string, unknown>> {
|
|
|
297
395
|
method: 'DELETE',
|
|
298
396
|
headers: this.ez._authHeaders(),
|
|
299
397
|
})
|
|
300
|
-
if (!res.ok) throw new Error(
|
|
398
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
301
399
|
}
|
|
302
400
|
|
|
303
401
|
onSnapshot(
|
|
@@ -320,6 +418,7 @@ class QueryRef<T = Record<string, unknown>> {
|
|
|
320
418
|
|
|
321
419
|
constructor(
|
|
322
420
|
private ez: EzBase,
|
|
421
|
+
private db: DatabaseRef,
|
|
323
422
|
private collection: string
|
|
324
423
|
) {}
|
|
325
424
|
|
|
@@ -355,10 +454,14 @@ class QueryRef<T = Record<string, unknown>> {
|
|
|
355
454
|
return qs ? '?' + qs : ''
|
|
356
455
|
}
|
|
357
456
|
|
|
457
|
+
private _basePath(): string {
|
|
458
|
+
return `${this.db._basePath()}/collections/${encodeURIComponent(this.collection)}`
|
|
459
|
+
}
|
|
460
|
+
|
|
358
461
|
async get(): Promise<Document<T>[]> {
|
|
359
|
-
const url = `${this.
|
|
462
|
+
const url = `${this._basePath()}${this.buildParams()}`
|
|
360
463
|
const res = await fetch(url, { headers: this.ez._authHeaders() })
|
|
361
|
-
if (!res.ok) throw new Error(
|
|
464
|
+
if (!res.ok) throw new Error(`${this.ez['_errorPrefix']}: ${res.status} ${await res.text()}`)
|
|
362
465
|
return res.json()
|
|
363
466
|
}
|
|
364
467
|
|
|
@@ -366,7 +469,7 @@ class QueryRef<T = Record<string, unknown>> {
|
|
|
366
469
|
callback: (docs: Document<T>[]) => void,
|
|
367
470
|
onError?: (err: Error) => void
|
|
368
471
|
): () => void {
|
|
369
|
-
const base = `${this.
|
|
472
|
+
const base = `${this._basePath()}/sse${this.buildParams()}`
|
|
370
473
|
const tp = this.ez._sseTokenParam()
|
|
371
474
|
const sep = base.includes('?') ? '&' : '?'
|
|
372
475
|
const url = tp ? `${base}${sep}${tp}` : base
|
|
@@ -374,6 +477,6 @@ class QueryRef<T = Record<string, unknown>> {
|
|
|
374
477
|
}
|
|
375
478
|
}
|
|
376
479
|
|
|
377
|
-
export { EzBase, CollectionRef, DocRef, QueryRef, AuthClient }
|
|
480
|
+
export { EzBase, DatabaseRef, CollectionRef, DocRef, QueryRef, AuthClient }
|
|
378
481
|
export type { Document, WhereOp, OrderDir, EzBaseOptions, AuthUser }
|
|
379
482
|
export default EzBase
|