cocobase 0.0.3 → 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.
- package/dist/cjs/core/core.d.ts +11 -1
- package/dist/cjs/core/core.d.ts.map +1 -1
- package/dist/cjs/core/core.js +84 -10
- package/dist/cjs/core/core.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/types.d.ts +10 -0
- package/dist/cjs/types/types.d.ts.map +1 -1
- package/dist/cjs/utils/utils.d.ts +5 -0
- package/dist/cjs/utils/utils.d.ts.map +1 -0
- package/dist/cjs/utils/utils.js +36 -0
- package/dist/cjs/utils/utils.js.map +1 -0
- package/dist/core/core.d.ts +11 -1
- package/dist/core/core.d.ts.map +1 -1
- package/dist/core/core.js +84 -10
- package/dist/core/core.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types/types.d.ts +10 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +32 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +1 -1
package/dist/cjs/core/core.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { CocobaseConfig, Document } from "../types/types";
|
|
1
|
+
import { CocobaseConfig, Document, AppUser } from "../types/types";
|
|
2
2
|
export declare class Cocobase {
|
|
3
3
|
private baseURL;
|
|
4
4
|
private apiKey?;
|
|
5
|
+
private token?;
|
|
6
|
+
user?: AppUser;
|
|
5
7
|
constructor(config: CocobaseConfig);
|
|
6
8
|
private request;
|
|
7
9
|
private getErrorSuggestion;
|
|
@@ -12,5 +14,13 @@ export declare class Cocobase {
|
|
|
12
14
|
success: boolean;
|
|
13
15
|
}>;
|
|
14
16
|
listDocuments<T = any>(collection: string): Promise<Document<T>[]>;
|
|
17
|
+
initAuth(): Promise<void>;
|
|
18
|
+
setToken(token: string): void;
|
|
19
|
+
login(email: string, password: string): Promise<void>;
|
|
20
|
+
register(email: string, password: string, data?: Record<string, any>): Promise<void>;
|
|
21
|
+
logout(): void;
|
|
22
|
+
isAuthenticated(): boolean;
|
|
23
|
+
getCurrentUser(): Promise<AppUser>;
|
|
24
|
+
updateUser(data?: Record<string, any> | null, email?: string | null, password?: string | null): Promise<AppUser>;
|
|
15
25
|
}
|
|
16
26
|
//# sourceMappingURL=core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EAER,OAAO,EACR,MAAM,gBAAgB,CAAC;AAOxB,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,MAAM,EAAE,cAAc;YAKpB,OAAO;IAoDrB,OAAO,CAAC,kBAAkB;IAkBpB,WAAW,CAAC,CAAC,GAAG,GAAG,EACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAQjB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IASjB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IASjB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQ1B,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAOlE,QAAQ;IAgBd,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKhB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAYrC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAY1E,MAAM;IAGN,eAAe,IAAI,OAAO;IAGpB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAalC,UAAU,CACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EACjC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,OAAO,CAAC;CAsBpB"}
|
package/dist/cjs/core/core.js
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Cocobase = void 0;
|
|
4
|
+
const utils_1 = require("../utils/utils");
|
|
4
5
|
class Cocobase {
|
|
5
6
|
constructor(config) {
|
|
6
7
|
this.baseURL = "https://futurebase.fly.dev/";
|
|
7
8
|
this.apiKey = config.apiKey;
|
|
8
9
|
}
|
|
9
|
-
async request(method, path, body) {
|
|
10
|
+
async request(method, path, body, useDataKey = true) {
|
|
10
11
|
const url = `${this.baseURL}${path}`;
|
|
12
|
+
const data = useDataKey ? { data: body } : body;
|
|
11
13
|
try {
|
|
12
14
|
const res = await fetch(url, {
|
|
13
15
|
method,
|
|
14
16
|
headers: {
|
|
15
|
-
|
|
16
|
-
...(this.apiKey ? {
|
|
17
|
+
"Content-Type": "application/json",
|
|
18
|
+
...(this.apiKey ? { "x-api-key": `${this.apiKey}` } : {}),
|
|
19
|
+
...(this.token ? { Authorization: `Bearer ${this.token}` } : {}),
|
|
17
20
|
},
|
|
18
|
-
...(body ? { body: JSON.stringify(
|
|
21
|
+
...(body ? { body: JSON.stringify(data) } : {}),
|
|
19
22
|
});
|
|
20
23
|
if (!res.ok) {
|
|
21
24
|
const errorText = await res.text();
|
|
@@ -31,7 +34,7 @@ class Cocobase {
|
|
|
31
34
|
url,
|
|
32
35
|
method,
|
|
33
36
|
error: errorDetail,
|
|
34
|
-
suggestions: this.getErrorSuggestion(res.status, method)
|
|
37
|
+
suggestions: this.getErrorSuggestion(res.status, method),
|
|
35
38
|
};
|
|
36
39
|
throw new Error(`Request failed:\n${JSON.stringify(errorMessage, null, 2)}`);
|
|
37
40
|
}
|
|
@@ -62,23 +65,94 @@ class Cocobase {
|
|
|
62
65
|
}
|
|
63
66
|
// Fetch a single document
|
|
64
67
|
async getDocument(collection, docId) {
|
|
65
|
-
return this.request(
|
|
68
|
+
return this.request("GET", `/collections/${collection}/documents/${docId}`);
|
|
66
69
|
}
|
|
67
70
|
// Create a new document
|
|
68
71
|
async createDocument(collection, data) {
|
|
69
|
-
return this.request(
|
|
72
|
+
return this.request("POST", `/collections/documents?collection=${collection}`, data);
|
|
70
73
|
}
|
|
71
74
|
// Update a document
|
|
72
75
|
async updateDocument(collection, docId, data) {
|
|
73
|
-
return this.request(
|
|
76
|
+
return this.request("PATCH", `/collections/${collection}/documents/${docId}`, data);
|
|
74
77
|
}
|
|
75
78
|
// Delete a document
|
|
76
79
|
async deleteDocument(collection, docId) {
|
|
77
|
-
return this.request(
|
|
80
|
+
return this.request("DELETE", `/collections/${collection}/documents/${docId}`);
|
|
78
81
|
}
|
|
79
82
|
// List documents
|
|
80
83
|
async listDocuments(collection) {
|
|
81
|
-
return this.request(
|
|
84
|
+
return this.request("GET", `/collections/${collection}/documents`);
|
|
85
|
+
}
|
|
86
|
+
// authentication features
|
|
87
|
+
async initAuth() {
|
|
88
|
+
const token = (0, utils_1.getFromLocalStorage)("cocobase-token");
|
|
89
|
+
const user = (0, utils_1.getFromLocalStorage)("cocobase-user");
|
|
90
|
+
if (token) {
|
|
91
|
+
this.token = token;
|
|
92
|
+
if (user) {
|
|
93
|
+
this.user = JSON.parse(user);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.user = undefined;
|
|
97
|
+
this.getCurrentUser();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this.token = undefined;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
setToken(token) {
|
|
105
|
+
this.token = token;
|
|
106
|
+
(0, utils_1.setToLocalStorage)("cocobase-token", token);
|
|
107
|
+
}
|
|
108
|
+
async login(email, password) {
|
|
109
|
+
const response = this.request(`POST`, `auth-collections/login`, { email, password }, false // Do not use data key for auth endpoints
|
|
110
|
+
);
|
|
111
|
+
this.token = (await response).access_token;
|
|
112
|
+
this.setToken(this.token);
|
|
113
|
+
this.user = await this.getCurrentUser();
|
|
114
|
+
}
|
|
115
|
+
async register(email, password, data) {
|
|
116
|
+
const response = this.request(`POST`, `auth-collections/signup`, { email, password, data }, false // Do not use data key for auth endpoints
|
|
117
|
+
);
|
|
118
|
+
this.token = (await response).access_token;
|
|
119
|
+
this.setToken(this.token);
|
|
120
|
+
this.getCurrentUser();
|
|
121
|
+
}
|
|
122
|
+
logout() {
|
|
123
|
+
this.token = undefined;
|
|
124
|
+
}
|
|
125
|
+
isAuthenticated() {
|
|
126
|
+
return !!this.token;
|
|
127
|
+
}
|
|
128
|
+
async getCurrentUser() {
|
|
129
|
+
if (!this.token) {
|
|
130
|
+
throw new Error("User is not authenticated");
|
|
131
|
+
}
|
|
132
|
+
const user = await this.request("GET", `auth-collections/user`);
|
|
133
|
+
if (!user) {
|
|
134
|
+
throw new Error("Failed to fetch current user");
|
|
135
|
+
}
|
|
136
|
+
this.user = user;
|
|
137
|
+
(0, utils_1.setToLocalStorage)("cocobase-user", JSON.stringify(user));
|
|
138
|
+
return user;
|
|
139
|
+
}
|
|
140
|
+
async updateUser(data, email, password) {
|
|
141
|
+
if (!this.token) {
|
|
142
|
+
throw new Error("User is not authenticated");
|
|
143
|
+
}
|
|
144
|
+
// Build request body by excluding null or undefined values
|
|
145
|
+
const body = {};
|
|
146
|
+
if (data != null)
|
|
147
|
+
body.data = (0, utils_1.mergeUserData)(this.user?.data || {}, data);
|
|
148
|
+
if (email != null)
|
|
149
|
+
body.email = email;
|
|
150
|
+
if (password != null)
|
|
151
|
+
body.password = password;
|
|
152
|
+
const user = await this.request("PATCH", "auth-collections/user", body, false);
|
|
153
|
+
this.user = user;
|
|
154
|
+
(0, utils_1.setToLocalStorage)("cocobase-user", JSON.stringify(user));
|
|
155
|
+
return user;
|
|
82
156
|
}
|
|
83
157
|
}
|
|
84
158
|
exports.Cocobase = Cocobase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Cocobase } from "./core/core";
|
|
2
2
|
import type { CocobaseConfig, Document, Collection } from "./types/types";
|
|
3
|
-
|
|
3
|
+
import { getFromLocalStorage, mergeUserData, setToLocalStorage } from "./utils/utils";
|
|
4
|
+
export { Cocobase, getFromLocalStorage, mergeUserData, setToLocalStorage };
|
|
5
|
+
export type { TokenResponse, AppUser } from "./types/types";
|
|
4
6
|
export type { CocobaseConfig, Document, Collection };
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Cocobase = void 0;
|
|
3
|
+
exports.setToLocalStorage = exports.mergeUserData = exports.getFromLocalStorage = exports.Cocobase = void 0;
|
|
4
4
|
const core_1 = require("./core/core");
|
|
5
5
|
Object.defineProperty(exports, "Cocobase", { enumerable: true, get: function () { return core_1.Cocobase; } });
|
|
6
|
+
const utils_1 = require("./utils/utils");
|
|
7
|
+
Object.defineProperty(exports, "getFromLocalStorage", { enumerable: true, get: function () { return utils_1.getFromLocalStorage; } });
|
|
8
|
+
Object.defineProperty(exports, "mergeUserData", { enumerable: true, get: function () { return utils_1.mergeUserData; } });
|
|
9
|
+
Object.defineProperty(exports, "setToLocalStorage", { enumerable: true, get: function () { return utils_1.setToLocalStorage; } });
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sCAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sCAAuC;AAQ9B,yFARA,eAAQ,OAQA;AANjB,yCAIuB;AAEJ,oGALjB,2BAAmB,OAKiB;AAAE,8FAJtC,qBAAa,OAIsC;AAAE,kGAHrD,yBAAiB,OAGqD"}
|
|
@@ -13,4 +13,14 @@ export interface Document<T> {
|
|
|
13
13
|
created_at: string;
|
|
14
14
|
collection: Collection;
|
|
15
15
|
}
|
|
16
|
+
export interface TokenResponse {
|
|
17
|
+
access_token: string;
|
|
18
|
+
}
|
|
19
|
+
export interface AppUser {
|
|
20
|
+
id: string;
|
|
21
|
+
email: string;
|
|
22
|
+
created_at: string;
|
|
23
|
+
data: Record<string, any>;
|
|
24
|
+
client_id: string;
|
|
25
|
+
}
|
|
16
26
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare function getFromLocalStorage(key: string): string | null;
|
|
2
|
+
declare function setToLocalStorage(key: string, value: string): void;
|
|
3
|
+
declare function mergeUserData(currentData: Record<string, any>, newData: Record<string, any>): Record<string, any>;
|
|
4
|
+
export { getFromLocalStorage, setToLocalStorage, mergeUserData };
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,iBAAS,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAavD;AAED,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED,iBAAS,aAAa,CACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASrB;AAED,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFromLocalStorage = getFromLocalStorage;
|
|
4
|
+
exports.setToLocalStorage = setToLocalStorage;
|
|
5
|
+
exports.mergeUserData = mergeUserData;
|
|
6
|
+
function getFromLocalStorage(key) {
|
|
7
|
+
try {
|
|
8
|
+
if (typeof window !== "undefined" &&
|
|
9
|
+
typeof window.localStorage !== "undefined") {
|
|
10
|
+
const value = localStorage.getItem(key);
|
|
11
|
+
return value !== null ? value : null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
console.warn("Error accessing localStorage:", err);
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
function setToLocalStorage(key, value) {
|
|
20
|
+
try {
|
|
21
|
+
if (typeof window !== "undefined" &&
|
|
22
|
+
typeof window.localStorage !== "undefined") {
|
|
23
|
+
localStorage.setItem(key, value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
console.warn("Error setting localStorage:", err);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function mergeUserData(currentData, newData) {
|
|
31
|
+
return {
|
|
32
|
+
...currentData,
|
|
33
|
+
...Object.fromEntries(Object.entries(newData).filter(([_, value]) => value !== null && value !== undefined)),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":";;AA0CS,kDAAmB;AAAE,8CAAiB;AAAE,sCAAa;AA1C9D,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,IACE,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,YAAY,KAAK,WAAW,EAC1C,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAa;IACnD,IAAI,CAAC;QACH,IACE,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,YAAY,KAAK,WAAW,EAC1C,CAAC;YACD,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,WAAgC,EAChC,OAA4B;IAE5B,OAAO;QACL,GAAG,WAAW;QACd,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAC5B,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CACtD,CACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/core/core.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { CocobaseConfig, Document } from "../types/types";
|
|
1
|
+
import { CocobaseConfig, Document, AppUser } from "../types/types";
|
|
2
2
|
export declare class Cocobase {
|
|
3
3
|
private baseURL;
|
|
4
4
|
private apiKey?;
|
|
5
|
+
private token?;
|
|
6
|
+
user?: AppUser;
|
|
5
7
|
constructor(config: CocobaseConfig);
|
|
6
8
|
private request;
|
|
7
9
|
private getErrorSuggestion;
|
|
@@ -12,5 +14,13 @@ export declare class Cocobase {
|
|
|
12
14
|
success: boolean;
|
|
13
15
|
}>;
|
|
14
16
|
listDocuments<T = any>(collection: string): Promise<Document<T>[]>;
|
|
17
|
+
initAuth(): Promise<void>;
|
|
18
|
+
setToken(token: string): void;
|
|
19
|
+
login(email: string, password: string): Promise<void>;
|
|
20
|
+
register(email: string, password: string, data?: Record<string, any>): Promise<void>;
|
|
21
|
+
logout(): void;
|
|
22
|
+
isAuthenticated(): boolean;
|
|
23
|
+
getCurrentUser(): Promise<AppUser>;
|
|
24
|
+
updateUser(data?: Record<string, any> | null, email?: string | null, password?: string | null): Promise<AppUser>;
|
|
15
25
|
}
|
|
16
26
|
//# sourceMappingURL=core.d.ts.map
|
package/dist/core/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EAER,OAAO,EACR,MAAM,gBAAgB,CAAC;AAOxB,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,MAAM,EAAE,cAAc;YAKpB,OAAO;IAoDrB,OAAO,CAAC,kBAAkB;IAkBpB,WAAW,CAAC,CAAC,GAAG,GAAG,EACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAQjB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IASjB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IASjB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQ1B,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAOlE,QAAQ;IAgBd,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKhB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAYrC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAY1E,MAAM;IAGN,eAAe,IAAI,OAAO;IAGpB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAalC,UAAU,CACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EACjC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,OAAO,CAAC;CAsBpB"}
|
package/dist/core/core.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
import { getFromLocalStorage, mergeUserData, setToLocalStorage, } from "../utils/utils";
|
|
1
2
|
export class Cocobase {
|
|
2
3
|
constructor(config) {
|
|
3
4
|
this.baseURL = "https://futurebase.fly.dev/";
|
|
4
5
|
this.apiKey = config.apiKey;
|
|
5
6
|
}
|
|
6
|
-
async request(method, path, body) {
|
|
7
|
+
async request(method, path, body, useDataKey = true) {
|
|
7
8
|
const url = `${this.baseURL}${path}`;
|
|
9
|
+
const data = useDataKey ? { data: body } : body;
|
|
8
10
|
try {
|
|
9
11
|
const res = await fetch(url, {
|
|
10
12
|
method,
|
|
11
13
|
headers: {
|
|
12
|
-
|
|
13
|
-
...(this.apiKey ? {
|
|
14
|
+
"Content-Type": "application/json",
|
|
15
|
+
...(this.apiKey ? { "x-api-key": `${this.apiKey}` } : {}),
|
|
16
|
+
...(this.token ? { Authorization: `Bearer ${this.token}` } : {}),
|
|
14
17
|
},
|
|
15
|
-
...(body ? { body: JSON.stringify(
|
|
18
|
+
...(body ? { body: JSON.stringify(data) } : {}),
|
|
16
19
|
});
|
|
17
20
|
if (!res.ok) {
|
|
18
21
|
const errorText = await res.text();
|
|
@@ -28,7 +31,7 @@ export class Cocobase {
|
|
|
28
31
|
url,
|
|
29
32
|
method,
|
|
30
33
|
error: errorDetail,
|
|
31
|
-
suggestions: this.getErrorSuggestion(res.status, method)
|
|
34
|
+
suggestions: this.getErrorSuggestion(res.status, method),
|
|
32
35
|
};
|
|
33
36
|
throw new Error(`Request failed:\n${JSON.stringify(errorMessage, null, 2)}`);
|
|
34
37
|
}
|
|
@@ -59,23 +62,94 @@ export class Cocobase {
|
|
|
59
62
|
}
|
|
60
63
|
// Fetch a single document
|
|
61
64
|
async getDocument(collection, docId) {
|
|
62
|
-
return this.request(
|
|
65
|
+
return this.request("GET", `/collections/${collection}/documents/${docId}`);
|
|
63
66
|
}
|
|
64
67
|
// Create a new document
|
|
65
68
|
async createDocument(collection, data) {
|
|
66
|
-
return this.request(
|
|
69
|
+
return this.request("POST", `/collections/documents?collection=${collection}`, data);
|
|
67
70
|
}
|
|
68
71
|
// Update a document
|
|
69
72
|
async updateDocument(collection, docId, data) {
|
|
70
|
-
return this.request(
|
|
73
|
+
return this.request("PATCH", `/collections/${collection}/documents/${docId}`, data);
|
|
71
74
|
}
|
|
72
75
|
// Delete a document
|
|
73
76
|
async deleteDocument(collection, docId) {
|
|
74
|
-
return this.request(
|
|
77
|
+
return this.request("DELETE", `/collections/${collection}/documents/${docId}`);
|
|
75
78
|
}
|
|
76
79
|
// List documents
|
|
77
80
|
async listDocuments(collection) {
|
|
78
|
-
return this.request(
|
|
81
|
+
return this.request("GET", `/collections/${collection}/documents`);
|
|
82
|
+
}
|
|
83
|
+
// authentication features
|
|
84
|
+
async initAuth() {
|
|
85
|
+
const token = getFromLocalStorage("cocobase-token");
|
|
86
|
+
const user = getFromLocalStorage("cocobase-user");
|
|
87
|
+
if (token) {
|
|
88
|
+
this.token = token;
|
|
89
|
+
if (user) {
|
|
90
|
+
this.user = JSON.parse(user);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.user = undefined;
|
|
94
|
+
this.getCurrentUser();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
this.token = undefined;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
setToken(token) {
|
|
102
|
+
this.token = token;
|
|
103
|
+
setToLocalStorage("cocobase-token", token);
|
|
104
|
+
}
|
|
105
|
+
async login(email, password) {
|
|
106
|
+
const response = this.request(`POST`, `auth-collections/login`, { email, password }, false // Do not use data key for auth endpoints
|
|
107
|
+
);
|
|
108
|
+
this.token = (await response).access_token;
|
|
109
|
+
this.setToken(this.token);
|
|
110
|
+
this.user = await this.getCurrentUser();
|
|
111
|
+
}
|
|
112
|
+
async register(email, password, data) {
|
|
113
|
+
const response = this.request(`POST`, `auth-collections/signup`, { email, password, data }, false // Do not use data key for auth endpoints
|
|
114
|
+
);
|
|
115
|
+
this.token = (await response).access_token;
|
|
116
|
+
this.setToken(this.token);
|
|
117
|
+
this.getCurrentUser();
|
|
118
|
+
}
|
|
119
|
+
logout() {
|
|
120
|
+
this.token = undefined;
|
|
121
|
+
}
|
|
122
|
+
isAuthenticated() {
|
|
123
|
+
return !!this.token;
|
|
124
|
+
}
|
|
125
|
+
async getCurrentUser() {
|
|
126
|
+
if (!this.token) {
|
|
127
|
+
throw new Error("User is not authenticated");
|
|
128
|
+
}
|
|
129
|
+
const user = await this.request("GET", `auth-collections/user`);
|
|
130
|
+
if (!user) {
|
|
131
|
+
throw new Error("Failed to fetch current user");
|
|
132
|
+
}
|
|
133
|
+
this.user = user;
|
|
134
|
+
setToLocalStorage("cocobase-user", JSON.stringify(user));
|
|
135
|
+
return user;
|
|
136
|
+
}
|
|
137
|
+
async updateUser(data, email, password) {
|
|
138
|
+
if (!this.token) {
|
|
139
|
+
throw new Error("User is not authenticated");
|
|
140
|
+
}
|
|
141
|
+
// Build request body by excluding null or undefined values
|
|
142
|
+
const body = {};
|
|
143
|
+
if (data != null)
|
|
144
|
+
body.data = mergeUserData(this.user?.data || {}, data);
|
|
145
|
+
if (email != null)
|
|
146
|
+
body.email = email;
|
|
147
|
+
if (password != null)
|
|
148
|
+
body.password = password;
|
|
149
|
+
const user = await this.request("PATCH", "auth-collections/user", body, false);
|
|
150
|
+
this.user = user;
|
|
151
|
+
setToLocalStorage("cocobase-user", JSON.stringify(user));
|
|
152
|
+
return user;
|
|
79
153
|
}
|
|
80
154
|
}
|
|
81
155
|
//# sourceMappingURL=core.js.map
|
package/dist/core/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Cocobase } from "./core/core";
|
|
2
2
|
import type { CocobaseConfig, Document, Collection } from "./types/types";
|
|
3
|
-
|
|
3
|
+
import { getFromLocalStorage, mergeUserData, setToLocalStorage } from "./utils/utils";
|
|
4
|
+
export { Cocobase, getFromLocalStorage, mergeUserData, setToLocalStorage };
|
|
5
|
+
export type { TokenResponse, AppUser } from "./types/types";
|
|
4
6
|
export type { CocobaseConfig, Document, Collection };
|
|
5
7
|
//# 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,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -13,4 +13,14 @@ export interface Document<T> {
|
|
|
13
13
|
created_at: string;
|
|
14
14
|
collection: Collection;
|
|
15
15
|
}
|
|
16
|
+
export interface TokenResponse {
|
|
17
|
+
access_token: string;
|
|
18
|
+
}
|
|
19
|
+
export interface AppUser {
|
|
20
|
+
id: string;
|
|
21
|
+
email: string;
|
|
22
|
+
created_at: string;
|
|
23
|
+
data: Record<string, any>;
|
|
24
|
+
client_id: string;
|
|
25
|
+
}
|
|
16
26
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare function getFromLocalStorage(key: string): string | null;
|
|
2
|
+
declare function setToLocalStorage(key: string, value: string): void;
|
|
3
|
+
declare function mergeUserData(currentData: Record<string, any>, newData: Record<string, any>): Record<string, any>;
|
|
4
|
+
export { getFromLocalStorage, setToLocalStorage, mergeUserData };
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,iBAAS,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAavD;AAED,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED,iBAAS,aAAa,CACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASrB;AAED,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
function getFromLocalStorage(key) {
|
|
2
|
+
try {
|
|
3
|
+
if (typeof window !== "undefined" &&
|
|
4
|
+
typeof window.localStorage !== "undefined") {
|
|
5
|
+
const value = localStorage.getItem(key);
|
|
6
|
+
return value !== null ? value : null;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
console.warn("Error accessing localStorage:", err);
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
function setToLocalStorage(key, value) {
|
|
15
|
+
try {
|
|
16
|
+
if (typeof window !== "undefined" &&
|
|
17
|
+
typeof window.localStorage !== "undefined") {
|
|
18
|
+
localStorage.setItem(key, value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
console.warn("Error setting localStorage:", err);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function mergeUserData(currentData, newData) {
|
|
26
|
+
return {
|
|
27
|
+
...currentData,
|
|
28
|
+
...Object.fromEntries(Object.entries(newData).filter(([_, value]) => value !== null && value !== undefined)),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export { getFromLocalStorage, setToLocalStorage, mergeUserData };
|
|
32
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,IACE,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,YAAY,KAAK,WAAW,EAC1C,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAa;IACnD,IAAI,CAAC;QACH,IACE,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,YAAY,KAAK,WAAW,EAC1C,CAAC;YACD,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,WAAgC,EAChC,OAA4B;IAE5B,OAAO;QACL,GAAG,WAAW;QACd,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAC5B,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CACtD,CACF;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC"}
|