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.
@@ -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,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1D,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,cAAc;YAKpB,OAAO;IA6CrB,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;IAKjB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAKjB,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;IAKjB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAK1B,aAAa,CAAC,CAAC,GAAG,GAAG,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;CAG1B"}
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"}
@@ -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
- 'Content-Type': 'application/json',
16
- ...(this.apiKey ? { 'x-api-key': `${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({ data: body }) } : {}),
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('GET', `/collections/${collection}/documents/${docId}`);
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('POST', `/collections/documents?collection=${collection}`, data);
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('PATCH', `/collections/${collection}/documents/${docId}`, data);
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('DELETE', `/collections/${collection}/documents/${docId}`);
80
+ return this.request("DELETE", `/collections/${collection}/documents/${docId}`);
78
81
  }
79
82
  // List documents
80
83
  async listDocuments(collection) {
81
- return this.request('GET', `/collections/${collection}/documents`);
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":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { Cocobase } from "./core/core";
2
2
  import type { CocobaseConfig, Document, Collection } from "./types/types";
3
- export { Cocobase };
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
@@ -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;AAE1E,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sCAAuC;AAG9B,yFAHA,eAAQ,OAGA"}
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"}
@@ -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,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1D,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,cAAc;YAKpB,OAAO;IA6CrB,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;IAKjB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAKjB,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;IAKjB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAK1B,aAAa,CAAC,CAAC,GAAG,GAAG,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;CAG1B"}
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
- 'Content-Type': 'application/json',
13
- ...(this.apiKey ? { 'x-api-key': `${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({ data: body }) } : {}),
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('GET', `/collections/${collection}/documents/${docId}`);
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('POST', `/collections/documents?collection=${collection}`, data);
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('PATCH', `/collections/${collection}/documents/${docId}`, data);
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('DELETE', `/collections/${collection}/documents/${docId}`);
77
+ return this.request("DELETE", `/collections/${collection}/documents/${docId}`);
75
78
  }
76
79
  // List documents
77
80
  async listDocuments(collection) {
78
- return this.request('GET', `/collections/${collection}/documents`);
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
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"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"}
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
- export { Cocobase };
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
@@ -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;AAE1E,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,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
@@ -1,3 +1,4 @@
1
1
  import { Cocobase } from "./core/core";
2
- export { Cocobase };
2
+ import { getFromLocalStorage, mergeUserData, setToLocalStorage, } from "./utils/utils";
3
+ export { Cocobase, getFromLocalStorage, mergeUserData, setToLocalStorage };
3
4
  //# 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,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"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cocobase",
3
- "version": "0.0.3",
3
+ "version": "0.1.0",
4
4
  "description": "The Official cocobase sdk",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",