funuicss 3.6.18 → 3.6.20
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/css/fun.css +510 -317
- package/package.json +1 -2
- package/ui/button/Button.js +56 -39
- package/ui/carousel/Carousel.d.ts +2 -0
- package/ui/carousel/Carousel.js +11 -11
- package/ui/input/Input.js +283 -157
- package/ui/theme/theme.d.ts +16 -6
- package/ui/theme/theme.js +96 -82
- package/utils/componentUtils.d.ts +9 -6
- package/utils/componentUtils.js +42 -170
- package/js/firebase/Auth.d.ts +0 -191
- package/js/firebase/Auth.js +0 -746
- package/js/firebase/FireStore.d.ts +0 -54
- package/js/firebase/FireStore.js +0 -285
- package/utils/FireStore.d.ts +0 -10
- package/utils/FireStore.js +0 -273
- package/utils/Firebase.d.ts +0 -2
- package/utils/Firebase.js +0 -16
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { DocumentData, QueryConstraint, DocumentReference, Firestore } from 'firebase/firestore';
|
|
2
|
-
export interface DocWithId extends Record<string, any> {
|
|
3
|
-
id: string;
|
|
4
|
-
}
|
|
5
|
-
export interface QueryResponse {
|
|
6
|
-
message?: string;
|
|
7
|
-
data: DocWithId[];
|
|
8
|
-
}
|
|
9
|
-
export interface SingleDocResponse {
|
|
10
|
-
message?: string;
|
|
11
|
-
data: DocumentData | string;
|
|
12
|
-
id?: string;
|
|
13
|
-
}
|
|
14
|
-
type CollectionName = string;
|
|
15
|
-
type DocumentId = string;
|
|
16
|
-
/**
|
|
17
|
-
* Recursively formats Firestore Timestamps into ISO strings.
|
|
18
|
-
*/
|
|
19
|
-
export declare const formatTimestamps: (data: DocumentData) => DocumentData;
|
|
20
|
-
export declare const FunFireStore: {
|
|
21
|
-
/**
|
|
22
|
-
* 📥 Fetch all documents from a collection
|
|
23
|
-
*/
|
|
24
|
-
getDocs: (db: Firestore, collectionName: CollectionName, docsLimit?: number, extraQueries?: QueryConstraint[]) => Promise<DocWithId[]>;
|
|
25
|
-
/**
|
|
26
|
-
* 👀 Real-time listener for a single document
|
|
27
|
-
*/
|
|
28
|
-
getDoc: (db: Firestore, collectionName: CollectionName, id: DocumentId) => Promise<SingleDocResponse>;
|
|
29
|
-
/**
|
|
30
|
-
* 📄 Fetch a single document (no listener)
|
|
31
|
-
*/
|
|
32
|
-
getDocOnce: (db: Firestore, collectionName: CollectionName, id: DocumentId) => Promise<SingleDocResponse>;
|
|
33
|
-
/**
|
|
34
|
-
* 🔎 Custom query with constraints
|
|
35
|
-
*/
|
|
36
|
-
query: (db: Firestore, collectionName: CollectionName, queries?: QueryConstraint[], docsLimit?: number) => Promise<QueryResponse>;
|
|
37
|
-
/**
|
|
38
|
-
* ➕ Add new document (auto ID)
|
|
39
|
-
*/
|
|
40
|
-
addDocument: (db: Firestore, collectionName: CollectionName, data: DocumentData) => Promise<DocumentReference>;
|
|
41
|
-
/**
|
|
42
|
-
* 🧩 Set or merge a document with a custom ID
|
|
43
|
-
*/
|
|
44
|
-
setDoc: (db: Firestore, collectionName: CollectionName, id: DocumentId, data: DocumentData) => Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* 🔄 Update a document
|
|
47
|
-
*/
|
|
48
|
-
update: (db: Firestore, collectionName: CollectionName, id: DocumentId, data: Partial<DocumentData>) => Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* ❌ Delete a document
|
|
51
|
-
*/
|
|
52
|
-
delete: (db: Firestore, collectionName: CollectionName, id: DocumentId) => Promise<string>;
|
|
53
|
-
};
|
|
54
|
-
export {};
|
package/js/firebase/FireStore.js
DELETED
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
24
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
50
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
51
|
-
if (ar || !(i in from)) {
|
|
52
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
53
|
-
ar[i] = from[i];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
57
|
-
};
|
|
58
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
-
exports.FunFireStore = exports.formatTimestamps = void 0;
|
|
60
|
-
var firestore_1 = require("firebase/firestore");
|
|
61
|
-
/* -------------------------------------------------------------------------- */
|
|
62
|
-
/* 🔧 Timestamp Formatting Helper */
|
|
63
|
-
/* -------------------------------------------------------------------------- */
|
|
64
|
-
/**
|
|
65
|
-
* Recursively formats Firestore Timestamps into ISO strings.
|
|
66
|
-
*/
|
|
67
|
-
var formatTimestamps = function (data) {
|
|
68
|
-
if (!data || typeof data !== 'object')
|
|
69
|
-
return data;
|
|
70
|
-
var formatted = Array.isArray(data) ? [] : {};
|
|
71
|
-
for (var key in data) {
|
|
72
|
-
var value = data[key];
|
|
73
|
-
if (value instanceof firestore_1.Timestamp) {
|
|
74
|
-
formatted[key] = value.toDate().toISOString();
|
|
75
|
-
}
|
|
76
|
-
else if (Array.isArray(value)) {
|
|
77
|
-
formatted[key] = value.map(function (v) { return (0, exports.formatTimestamps)(v); });
|
|
78
|
-
}
|
|
79
|
-
else if (value && typeof value === 'object') {
|
|
80
|
-
formatted[key] = (0, exports.formatTimestamps)(value);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
formatted[key] = value;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return formatted;
|
|
87
|
-
};
|
|
88
|
-
exports.formatTimestamps = formatTimestamps;
|
|
89
|
-
/* -------------------------------------------------------------------------- */
|
|
90
|
-
/* ⚡ Firestore Utilities */
|
|
91
|
-
/* -------------------------------------------------------------------------- */
|
|
92
|
-
exports.FunFireStore = {
|
|
93
|
-
/**
|
|
94
|
-
* 📥 Fetch all documents from a collection
|
|
95
|
-
*/
|
|
96
|
-
getDocs: function (db_1, collectionName_1, docsLimit_1) {
|
|
97
|
-
var args_1 = [];
|
|
98
|
-
for (var _i = 3; _i < arguments.length; _i++) {
|
|
99
|
-
args_1[_i - 3] = arguments[_i];
|
|
100
|
-
}
|
|
101
|
-
return __awaiter(void 0, __spreadArray([db_1, collectionName_1, docsLimit_1], args_1, true), void 0, function (db, collectionName, docsLimit, extraQueries) {
|
|
102
|
-
var constraints, q, snapshot, err_1, error;
|
|
103
|
-
if (extraQueries === void 0) { extraQueries = []; }
|
|
104
|
-
return __generator(this, function (_a) {
|
|
105
|
-
switch (_a.label) {
|
|
106
|
-
case 0:
|
|
107
|
-
_a.trys.push([0, 2, , 3]);
|
|
108
|
-
constraints = __spreadArray([], extraQueries, true);
|
|
109
|
-
if (docsLimit)
|
|
110
|
-
constraints.push((0, firestore_1.limit)(docsLimit));
|
|
111
|
-
q = firestore_1.query.apply(void 0, __spreadArray([(0, firestore_1.collection)(db, collectionName)], constraints, false));
|
|
112
|
-
return [4 /*yield*/, (0, firestore_1.getDocs)(q)];
|
|
113
|
-
case 1:
|
|
114
|
-
snapshot = _a.sent();
|
|
115
|
-
return [2 /*return*/, snapshot.docs.map(function (d) { return (__assign({ id: d.id }, (0, exports.formatTimestamps)(d.data()))); })];
|
|
116
|
-
case 2:
|
|
117
|
-
err_1 = _a.sent();
|
|
118
|
-
error = err_1;
|
|
119
|
-
throw new Error("Error fetching documents from ".concat(collectionName, ": ").concat(error.message));
|
|
120
|
-
case 3: return [2 /*return*/];
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
},
|
|
125
|
-
/**
|
|
126
|
-
* 👀 Real-time listener for a single document
|
|
127
|
-
*/
|
|
128
|
-
getDoc: function (db, collectionName, id) {
|
|
129
|
-
return new Promise(function (resolve, reject) {
|
|
130
|
-
var unsub = (0, firestore_1.onSnapshot)((0, firestore_1.doc)(db, collectionName, id), function (snap) {
|
|
131
|
-
var data = snap.data();
|
|
132
|
-
resolve(data
|
|
133
|
-
? { id: snap.id, data: (0, exports.formatTimestamps)(data) }
|
|
134
|
-
: { message: 'No data found', data: '' });
|
|
135
|
-
}, function (err) { return reject(new Error("Error fetching document: ".concat(err.message))); });
|
|
136
|
-
// ✅ Auto-unsubscribe after first snapshot to avoid memory leaks
|
|
137
|
-
setTimeout(function () { return unsub(); }, 10000);
|
|
138
|
-
});
|
|
139
|
-
},
|
|
140
|
-
/**
|
|
141
|
-
* 📄 Fetch a single document (no listener)
|
|
142
|
-
*/
|
|
143
|
-
getDocOnce: function (db, collectionName, id) { return __awaiter(void 0, void 0, void 0, function () {
|
|
144
|
-
var snap, data, err_2, error;
|
|
145
|
-
return __generator(this, function (_a) {
|
|
146
|
-
switch (_a.label) {
|
|
147
|
-
case 0:
|
|
148
|
-
_a.trys.push([0, 2, , 3]);
|
|
149
|
-
return [4 /*yield*/, (0, firestore_1.getDoc)((0, firestore_1.doc)(db, collectionName, id))];
|
|
150
|
-
case 1:
|
|
151
|
-
snap = _a.sent();
|
|
152
|
-
data = snap.data();
|
|
153
|
-
return [2 /*return*/, data
|
|
154
|
-
? { id: snap.id, data: (0, exports.formatTimestamps)(data) }
|
|
155
|
-
: { message: 'No data found', data: '' }];
|
|
156
|
-
case 2:
|
|
157
|
-
err_2 = _a.sent();
|
|
158
|
-
error = err_2;
|
|
159
|
-
throw new Error("Error fetching document: ".concat(error.message));
|
|
160
|
-
case 3: return [2 /*return*/];
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
}); },
|
|
164
|
-
/**
|
|
165
|
-
* 🔎 Custom query with constraints
|
|
166
|
-
*/
|
|
167
|
-
query: function (db_1, collectionName_1) {
|
|
168
|
-
var args_1 = [];
|
|
169
|
-
for (var _i = 2; _i < arguments.length; _i++) {
|
|
170
|
-
args_1[_i - 2] = arguments[_i];
|
|
171
|
-
}
|
|
172
|
-
return __awaiter(void 0, __spreadArray([db_1, collectionName_1], args_1, true), void 0, function (db, collectionName, queries, docsLimit) {
|
|
173
|
-
var constraints, q, snapshot, data, err_3, error;
|
|
174
|
-
if (queries === void 0) { queries = []; }
|
|
175
|
-
return __generator(this, function (_a) {
|
|
176
|
-
switch (_a.label) {
|
|
177
|
-
case 0:
|
|
178
|
-
_a.trys.push([0, 2, , 3]);
|
|
179
|
-
constraints = __spreadArray([], queries, true);
|
|
180
|
-
if (docsLimit)
|
|
181
|
-
constraints.push((0, firestore_1.limit)(docsLimit));
|
|
182
|
-
q = firestore_1.query.apply(void 0, __spreadArray([(0, firestore_1.collection)(db, collectionName)], constraints, false));
|
|
183
|
-
return [4 /*yield*/, (0, firestore_1.getDocs)(q)];
|
|
184
|
-
case 1:
|
|
185
|
-
snapshot = _a.sent();
|
|
186
|
-
if (!snapshot.empty) {
|
|
187
|
-
data = snapshot.docs.map(function (d) { return (__assign({ id: d.id }, (0, exports.formatTimestamps)(d.data()))); });
|
|
188
|
-
return [2 /*return*/, { data: data }];
|
|
189
|
-
}
|
|
190
|
-
return [2 /*return*/, { message: 'No data', data: [] }];
|
|
191
|
-
case 2:
|
|
192
|
-
err_3 = _a.sent();
|
|
193
|
-
error = err_3;
|
|
194
|
-
throw new Error("Error querying ".concat(collectionName, ": ").concat(error.message));
|
|
195
|
-
case 3: return [2 /*return*/];
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
},
|
|
200
|
-
/**
|
|
201
|
-
* ➕ Add new document (auto ID)
|
|
202
|
-
*/
|
|
203
|
-
addDocument: function (db, collectionName, data) { return __awaiter(void 0, void 0, void 0, function () {
|
|
204
|
-
var docRef, err_4, error;
|
|
205
|
-
return __generator(this, function (_a) {
|
|
206
|
-
switch (_a.label) {
|
|
207
|
-
case 0:
|
|
208
|
-
_a.trys.push([0, 2, , 3]);
|
|
209
|
-
return [4 /*yield*/, (0, firestore_1.addDoc)((0, firestore_1.collection)(db, collectionName), __assign(__assign({}, data), { createdAt: (0, firestore_1.serverTimestamp)(), updatedAt: (0, firestore_1.serverTimestamp)() }))];
|
|
210
|
-
case 1:
|
|
211
|
-
docRef = _a.sent();
|
|
212
|
-
// await updateDoc(docRef, { [assignKey]: docRef.id });
|
|
213
|
-
return [2 /*return*/, docRef];
|
|
214
|
-
case 2:
|
|
215
|
-
err_4 = _a.sent();
|
|
216
|
-
error = err_4;
|
|
217
|
-
throw new Error("Error adding document: ".concat(error.message));
|
|
218
|
-
case 3: return [2 /*return*/];
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}); },
|
|
222
|
-
/**
|
|
223
|
-
* 🧩 Set or merge a document with a custom ID
|
|
224
|
-
*/
|
|
225
|
-
setDoc: function (db, collectionName, id, data) { return __awaiter(void 0, void 0, void 0, function () {
|
|
226
|
-
var err_5, error;
|
|
227
|
-
return __generator(this, function (_a) {
|
|
228
|
-
switch (_a.label) {
|
|
229
|
-
case 0:
|
|
230
|
-
_a.trys.push([0, 2, , 3]);
|
|
231
|
-
return [4 /*yield*/, (0, firestore_1.setDoc)((0, firestore_1.doc)(db, collectionName, id), __assign(__assign({}, data), { updatedAt: (0, firestore_1.serverTimestamp)(), createdAt: (0, firestore_1.serverTimestamp)() }), { merge: true })];
|
|
232
|
-
case 1:
|
|
233
|
-
_a.sent();
|
|
234
|
-
return [3 /*break*/, 3];
|
|
235
|
-
case 2:
|
|
236
|
-
err_5 = _a.sent();
|
|
237
|
-
error = err_5;
|
|
238
|
-
throw new Error("Error setting document: ".concat(error.message));
|
|
239
|
-
case 3: return [2 /*return*/];
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
}); },
|
|
243
|
-
/**
|
|
244
|
-
* 🔄 Update a document
|
|
245
|
-
*/
|
|
246
|
-
update: function (db, collectionName, id, data) { return __awaiter(void 0, void 0, void 0, function () {
|
|
247
|
-
var err_6, error;
|
|
248
|
-
return __generator(this, function (_a) {
|
|
249
|
-
switch (_a.label) {
|
|
250
|
-
case 0:
|
|
251
|
-
_a.trys.push([0, 2, , 3]);
|
|
252
|
-
return [4 /*yield*/, (0, firestore_1.updateDoc)((0, firestore_1.doc)(db, collectionName, id), __assign(__assign({}, data), { updatedAt: (0, firestore_1.serverTimestamp)() }))];
|
|
253
|
-
case 1:
|
|
254
|
-
_a.sent();
|
|
255
|
-
return [3 /*break*/, 3];
|
|
256
|
-
case 2:
|
|
257
|
-
err_6 = _a.sent();
|
|
258
|
-
error = err_6;
|
|
259
|
-
throw new Error("Error updating document: ".concat(error.message));
|
|
260
|
-
case 3: return [2 /*return*/];
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
}); },
|
|
264
|
-
/**
|
|
265
|
-
* ❌ Delete a document
|
|
266
|
-
*/
|
|
267
|
-
delete: function (db, collectionName, id) { return __awaiter(void 0, void 0, void 0, function () {
|
|
268
|
-
var err_7, error;
|
|
269
|
-
return __generator(this, function (_a) {
|
|
270
|
-
switch (_a.label) {
|
|
271
|
-
case 0:
|
|
272
|
-
_a.trys.push([0, 2, , 3]);
|
|
273
|
-
return [4 /*yield*/, (0, firestore_1.deleteDoc)((0, firestore_1.doc)(db, collectionName, id))];
|
|
274
|
-
case 1:
|
|
275
|
-
_a.sent();
|
|
276
|
-
return [2 /*return*/, "\u2705 Document \"".concat(id, "\" successfully deleted")];
|
|
277
|
-
case 2:
|
|
278
|
-
err_7 = _a.sent();
|
|
279
|
-
error = err_7;
|
|
280
|
-
throw new Error("Error deleting document: ".concat(error.message));
|
|
281
|
-
case 3: return [2 /*return*/];
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
}); },
|
|
285
|
-
};
|
package/utils/FireStore.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export namespace Requests {
|
|
2
|
-
export function getDocs(collectionName: any, docs_limit: any, extraQueries?: any[]): Promise<any>;
|
|
3
|
-
export function getDoc(collectionName: any, id: any): Promise<any>;
|
|
4
|
-
export function query(collectionName: any, queriesArr: any[] | undefined, docs_limit: any): Promise<any>;
|
|
5
|
-
export function add_document(cName: any, data: any, dbCollection?: string): Promise<any>;
|
|
6
|
-
export function set_doc(cName: any, doc_id: any, data: any): Promise<any>;
|
|
7
|
-
export function update(cName: any, doc_id: any, data: any): Promise<any>;
|
|
8
|
-
export function _delete(cName: any, doc_id: any): Promise<any>;
|
|
9
|
-
export { _delete as delete };
|
|
10
|
-
}
|
package/utils/FireStore.js
DELETED
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
24
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
50
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
51
|
-
if (ar || !(i in from)) {
|
|
52
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
53
|
-
ar[i] = from[i];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
57
|
-
};
|
|
58
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
59
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
60
|
-
};
|
|
61
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
-
exports.Requests = void 0;
|
|
63
|
-
var Firebase_1 = __importDefault(require("./Firebase"));
|
|
64
|
-
var firestore_1 = require("firebase/firestore");
|
|
65
|
-
// ⏳ Convert timestamp to "x time ago"
|
|
66
|
-
function timeAgo(timestamp) {
|
|
67
|
-
if (!timestamp)
|
|
68
|
-
return "";
|
|
69
|
-
var now = new Date();
|
|
70
|
-
var date = timestamp.toDate ? timestamp.toDate() : new Date(timestamp);
|
|
71
|
-
var seconds = Math.floor((now - date) / 1000);
|
|
72
|
-
var intervals = {
|
|
73
|
-
year: 31536000,
|
|
74
|
-
month: 2592000,
|
|
75
|
-
week: 604800,
|
|
76
|
-
day: 86400,
|
|
77
|
-
hour: 3600,
|
|
78
|
-
minute: 60,
|
|
79
|
-
second: 1,
|
|
80
|
-
};
|
|
81
|
-
for (var key in intervals) {
|
|
82
|
-
var value = intervals[key];
|
|
83
|
-
if (seconds >= value) {
|
|
84
|
-
var count = Math.floor(seconds / value);
|
|
85
|
-
return "".concat(count, " ").concat(key).concat(count > 1 ? "s" : "", " ago");
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return "just now";
|
|
89
|
-
}
|
|
90
|
-
// ⏳ Apply timeAgo to createdAt & updatedAt fields
|
|
91
|
-
function formatTimestamps(docData) {
|
|
92
|
-
return __assign(__assign({}, docData), { createdAt: docData.createdAt ? timeAgo(docData.createdAt) : null, updatedAt: docData.updatedAt ? timeAgo(docData.updatedAt) : null });
|
|
93
|
-
}
|
|
94
|
-
exports.Requests = {
|
|
95
|
-
// 📥 Get all docs
|
|
96
|
-
getDocs: function (collectionName, docs_limit, extraQueries) {
|
|
97
|
-
if (extraQueries === void 0) { extraQueries = []; }
|
|
98
|
-
return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
99
|
-
var Resourceq, snapshot, data, err_1;
|
|
100
|
-
return __generator(this, function (_a) {
|
|
101
|
-
switch (_a.label) {
|
|
102
|
-
case 0:
|
|
103
|
-
_a.trys.push([0, 2, , 3]);
|
|
104
|
-
Resourceq = firestore_1.query.apply(void 0, __spreadArray(__spreadArray([(0, firestore_1.collection)(Firebase_1.default, collectionName)], extraQueries, false), (docs_limit ? [(0, firestore_1.limit)(docs_limit)] : []), false));
|
|
105
|
-
return [4 /*yield*/, (0, firestore_1.getDocs)(Resourceq)];
|
|
106
|
-
case 1:
|
|
107
|
-
snapshot = _a.sent();
|
|
108
|
-
if (snapshot.docs.length > 0) {
|
|
109
|
-
data = snapshot.docs.map(function (d) { return (__assign({ id: d.id }, formatTimestamps(d.data()))); });
|
|
110
|
-
resolve(data);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
resolve([]);
|
|
114
|
-
}
|
|
115
|
-
return [3 /*break*/, 3];
|
|
116
|
-
case 2:
|
|
117
|
-
err_1 = _a.sent();
|
|
118
|
-
reject("Error fetching documents: ".concat(err_1.message));
|
|
119
|
-
return [3 /*break*/, 3];
|
|
120
|
-
case 3: return [2 /*return*/];
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}); });
|
|
124
|
-
},
|
|
125
|
-
// 📥 Get single doc
|
|
126
|
-
getDoc: function (collectionName, id) {
|
|
127
|
-
return new Promise(function (resolve, reject) {
|
|
128
|
-
(0, firestore_1.onSnapshot)((0, firestore_1.doc)(Firebase_1.default, collectionName, id), function (gdoc) {
|
|
129
|
-
var data = gdoc.data();
|
|
130
|
-
if (data) {
|
|
131
|
-
resolve({ data: formatTimestamps(data), id: gdoc.id });
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
resolve({ message: "No data found", data: "" });
|
|
135
|
-
}
|
|
136
|
-
}, function (err) { return reject("Error fetching document: ".concat(err.message)); });
|
|
137
|
-
});
|
|
138
|
-
},
|
|
139
|
-
// 🔎 Flexible query (add more queries)
|
|
140
|
-
query: function (collectionName, queriesArr, docs_limit) {
|
|
141
|
-
if (queriesArr === void 0) { queriesArr = []; }
|
|
142
|
-
return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
143
|
-
var Resourceq, snapshot, data, err_2;
|
|
144
|
-
return __generator(this, function (_a) {
|
|
145
|
-
switch (_a.label) {
|
|
146
|
-
case 0:
|
|
147
|
-
_a.trys.push([0, 2, , 3]);
|
|
148
|
-
Resourceq = firestore_1.query.apply(void 0, __spreadArray(__spreadArray([(0, firestore_1.collection)(Firebase_1.default, collectionName)], queriesArr, false), (docs_limit ? [(0, firestore_1.limit)(docs_limit)] : []), false));
|
|
149
|
-
return [4 /*yield*/, (0, firestore_1.getDocs)(Resourceq)];
|
|
150
|
-
case 1:
|
|
151
|
-
snapshot = _a.sent();
|
|
152
|
-
if (snapshot.docs.length > 0) {
|
|
153
|
-
data = snapshot.docs.map(function (d) { return (__assign({ id: d.id }, formatTimestamps(d.data()))); });
|
|
154
|
-
resolve({ data: data });
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
resolve({ message: "No data", data: [] });
|
|
158
|
-
}
|
|
159
|
-
return [3 /*break*/, 3];
|
|
160
|
-
case 2:
|
|
161
|
-
err_2 = _a.sent();
|
|
162
|
-
reject("Error querying documents: ".concat(err_2.message));
|
|
163
|
-
console.log(err_2);
|
|
164
|
-
return [3 /*break*/, 3];
|
|
165
|
-
case 3: return [2 /*return*/];
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
}); });
|
|
169
|
-
},
|
|
170
|
-
// ➕ Add new doc with createdAt + updatedAt
|
|
171
|
-
add_document: function (cName, data, dbCollection) {
|
|
172
|
-
if (dbCollection === void 0) { dbCollection = ''; }
|
|
173
|
-
return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
174
|
-
var docRef, err_3;
|
|
175
|
-
return __generator(this, function (_a) {
|
|
176
|
-
switch (_a.label) {
|
|
177
|
-
case 0:
|
|
178
|
-
_a.trys.push([0, 3, , 4]);
|
|
179
|
-
return [4 /*yield*/, (0, firestore_1.addDoc)((0, firestore_1.collection)(Firebase_1.default, cName), __assign(__assign({}, data), { createdAt: (0, firestore_1.serverTimestamp)(), updatedAt: (0, firestore_1.serverTimestamp)() }))];
|
|
180
|
-
case 1:
|
|
181
|
-
docRef = _a.sent();
|
|
182
|
-
// Then update the same doc with its ID
|
|
183
|
-
return [4 /*yield*/, (0, firestore_1.updateDoc)(docRef, dbCollection === 'users' ? { uid: docRef.id } : { id: docRef.id })];
|
|
184
|
-
case 2:
|
|
185
|
-
// Then update the same doc with its ID
|
|
186
|
-
_a.sent();
|
|
187
|
-
resolve(docRef);
|
|
188
|
-
return [3 /*break*/, 4];
|
|
189
|
-
case 3:
|
|
190
|
-
err_3 = _a.sent();
|
|
191
|
-
reject("Error adding document: ".concat(err_3.message));
|
|
192
|
-
return [3 /*break*/, 4];
|
|
193
|
-
case 4: return [2 /*return*/];
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
}); });
|
|
197
|
-
},
|
|
198
|
-
// ✍️ Set/merge doc with updatedAt
|
|
199
|
-
set_doc: function (cName, doc_id, data) {
|
|
200
|
-
return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
201
|
-
var res, err_4;
|
|
202
|
-
return __generator(this, function (_a) {
|
|
203
|
-
switch (_a.label) {
|
|
204
|
-
case 0:
|
|
205
|
-
_a.trys.push([0, 2, , 3]);
|
|
206
|
-
return [4 /*yield*/, (0, firestore_1.setDoc)((0, firestore_1.doc)(Firebase_1.default, cName, doc_id), __assign(__assign({}, data), { updatedAt: (0, firestore_1.serverTimestamp)(), createdAt: (0, firestore_1.serverTimestamp)() }), { merge: true })];
|
|
207
|
-
case 1:
|
|
208
|
-
res = _a.sent();
|
|
209
|
-
resolve(res);
|
|
210
|
-
return [3 /*break*/, 3];
|
|
211
|
-
case 2:
|
|
212
|
-
err_4 = _a.sent();
|
|
213
|
-
reject("Error setting document: ".concat(err_4.message));
|
|
214
|
-
return [3 /*break*/, 3];
|
|
215
|
-
case 3: return [2 /*return*/];
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
}); });
|
|
219
|
-
},
|
|
220
|
-
// 🔄 Update doc with updatedAt
|
|
221
|
-
update: function (cName, doc_id, data) {
|
|
222
|
-
return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
223
|
-
var res, err_5;
|
|
224
|
-
return __generator(this, function (_a) {
|
|
225
|
-
switch (_a.label) {
|
|
226
|
-
case 0:
|
|
227
|
-
_a.trys.push([0, 2, , 3]);
|
|
228
|
-
return [4 /*yield*/, (0, firestore_1.updateDoc)((0, firestore_1.doc)(Firebase_1.default, cName, doc_id), __assign(__assign({}, data), { updatedAt: (0, firestore_1.serverTimestamp)() }))];
|
|
229
|
-
case 1:
|
|
230
|
-
res = _a.sent();
|
|
231
|
-
resolve(res);
|
|
232
|
-
return [3 /*break*/, 3];
|
|
233
|
-
case 2:
|
|
234
|
-
err_5 = _a.sent();
|
|
235
|
-
reject("Error updating document: ".concat(err_5.message));
|
|
236
|
-
return [3 /*break*/, 3];
|
|
237
|
-
case 3: return [2 /*return*/];
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
}); });
|
|
241
|
-
},
|
|
242
|
-
// ❌ Delete doc
|
|
243
|
-
delete: function (cName, doc_id) {
|
|
244
|
-
return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
245
|
-
var err_6;
|
|
246
|
-
return __generator(this, function (_a) {
|
|
247
|
-
switch (_a.label) {
|
|
248
|
-
case 0:
|
|
249
|
-
_a.trys.push([0, 2, , 3]);
|
|
250
|
-
return [4 /*yield*/, (0, firestore_1.deleteDoc)((0, firestore_1.doc)(Firebase_1.default, cName, doc_id))];
|
|
251
|
-
case 1:
|
|
252
|
-
_a.sent();
|
|
253
|
-
resolve("Document ".concat(doc_id, " successfully deleted"));
|
|
254
|
-
return [3 /*break*/, 3];
|
|
255
|
-
case 2:
|
|
256
|
-
err_6 = _a.sent();
|
|
257
|
-
reject("Error deleting document: ".concat(err_6.message));
|
|
258
|
-
return [3 /*break*/, 3];
|
|
259
|
-
case 3: return [2 /*return*/];
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
}); });
|
|
263
|
-
},
|
|
264
|
-
};
|
|
265
|
-
// // Add document
|
|
266
|
-
// Requests.add_document("users", { name: "John Doe", email: "john@example.com" });
|
|
267
|
-
// // Update document
|
|
268
|
-
// Requests.update("users", "docID123", { name: "Jane Doe" });
|
|
269
|
-
// // Query with multiple conditions
|
|
270
|
-
// Requests.query("users", [
|
|
271
|
-
// where("status", "==", "active"),
|
|
272
|
-
// where("level", "==", "admin"),
|
|
273
|
-
// ], 10).then(res => console.log(res.data));
|
package/utils/Firebase.d.ts
DELETED
package/utils/Firebase.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var app_1 = require("firebase/app");
|
|
4
|
-
var firestore_1 = require("firebase/firestore");
|
|
5
|
-
var firebaseConfig = {
|
|
6
|
-
apiKey: "AIzaSyBi6mv2y56aKgJOv-MTHhwL1OaKnXlRNxE",
|
|
7
|
-
authDomain: "funui-4bcd1.firebaseapp.com",
|
|
8
|
-
projectId: "funui-4bcd1",
|
|
9
|
-
storageBucket: "funui-4bcd1.firebasestorage.app",
|
|
10
|
-
messagingSenderId: "321671406212",
|
|
11
|
-
appId: "1:321671406212:web:344738ff231449368f18d1",
|
|
12
|
-
measurementId: "G-PDMZ8J0R37"
|
|
13
|
-
};
|
|
14
|
-
// Initialize Firebase app
|
|
15
|
-
var db = (0, app_1.initializeApp)(firebaseConfig);
|
|
16
|
-
exports.default = (0, firestore_1.getFirestore)();
|