@umituz/react-native-firebase 1.13.49 → 1.13.51

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.
Files changed (54) hide show
  1. package/dist/scripts/cli-handlers.d.ts +27 -0
  2. package/dist/scripts/cli-handlers.d.ts.map +1 -0
  3. package/dist/scripts/cli-handlers.js +125 -0
  4. package/dist/scripts/cli-handlers.js.map +1 -0
  5. package/dist/scripts/cli-parser.d.ts +25 -0
  6. package/dist/scripts/cli-parser.d.ts.map +1 -0
  7. package/dist/scripts/cli-parser.js +101 -0
  8. package/dist/scripts/cli-parser.js.map +1 -0
  9. package/dist/scripts/cli.js +20 -155
  10. package/dist/scripts/cli.js.map +1 -1
  11. package/dist/scripts/firestore-operations.d.ts +18 -0
  12. package/dist/scripts/firestore-operations.d.ts.map +1 -0
  13. package/dist/scripts/firestore-operations.js +88 -0
  14. package/dist/scripts/firestore-operations.js.map +1 -0
  15. package/dist/scripts/firestore-queries.d.ts +27 -0
  16. package/dist/scripts/firestore-queries.d.ts.map +1 -0
  17. package/dist/scripts/firestore-queries.js +77 -0
  18. package/dist/scripts/firestore-queries.js.map +1 -0
  19. package/dist/scripts/firestore-seeding.d.ts +21 -0
  20. package/dist/scripts/firestore-seeding.d.ts.map +1 -0
  21. package/dist/scripts/firestore-seeding.js +67 -0
  22. package/dist/scripts/firestore-seeding.js.map +1 -0
  23. package/dist/scripts/firestore.d.ts +3 -48
  24. package/dist/scripts/firestore.d.ts.map +1 -1
  25. package/dist/scripts/firestore.js +16 -210
  26. package/dist/scripts/firestore.js.map +1 -1
  27. package/dist/scripts/user-commands.d.ts +33 -0
  28. package/dist/scripts/user-commands.d.ts.map +1 -0
  29. package/dist/scripts/user-commands.js +113 -0
  30. package/dist/scripts/user-commands.js.map +1 -0
  31. package/dist/scripts/user-formatters.d.ts +10 -0
  32. package/dist/scripts/user-formatters.d.ts.map +1 -0
  33. package/dist/scripts/user-formatters.js +55 -0
  34. package/dist/scripts/user-formatters.js.map +1 -0
  35. package/dist/scripts/user-queries.d.ts +42 -0
  36. package/dist/scripts/user-queries.d.ts.map +1 -0
  37. package/dist/scripts/user-queries.js +125 -0
  38. package/dist/scripts/user-queries.js.map +1 -0
  39. package/dist/scripts/user.d.ts +3 -67
  40. package/dist/scripts/user.d.ts.map +1 -1
  41. package/dist/scripts/user.js +15 -272
  42. package/dist/scripts/user.js.map +1 -1
  43. package/package.json +1 -1
  44. package/scripts/cli-handlers.ts +170 -0
  45. package/scripts/cli-parser.ts +82 -0
  46. package/scripts/cli.ts +27 -193
  47. package/scripts/firestore-operations.ts +111 -0
  48. package/scripts/firestore-queries.ts +97 -0
  49. package/scripts/firestore-seeding.ts +87 -0
  50. package/scripts/firestore.ts +20 -275
  51. package/scripts/user-commands.ts +104 -0
  52. package/scripts/user-formatters.ts +55 -0
  53. package/scripts/user-queries.ts +185 -0
  54. package/scripts/user.ts +19 -326
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * Firebase Admin User Commands
4
+ * Command functions for modifying user data
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.initializeUserCredits = initializeUserCredits;
41
+ exports.addUserCredits = addUserCredits;
42
+ exports.setUserCredits = setUserCredits;
43
+ exports.deleteUserCredits = deleteUserCredits;
44
+ const admin = __importStar(require("firebase-admin"));
45
+ /**
46
+ * Initialize credits for a user
47
+ */
48
+ async function initializeUserCredits(db, userId, config) {
49
+ const { collectionName = "user_credits", textLimit = 0, imageLimit = 0 } = config;
50
+ const now = admin.firestore.FieldValue.serverTimestamp();
51
+ const credits = {
52
+ text: textLimit,
53
+ image: imageLimit,
54
+ video: 0,
55
+ audio: 0,
56
+ createdAt: now,
57
+ updatedAt: now,
58
+ };
59
+ await db.collection(collectionName).doc(userId).set(credits, { merge: true });
60
+ return {
61
+ text: textLimit,
62
+ image: imageLimit,
63
+ video: 0,
64
+ audio: 0,
65
+ createdAt: new Date(),
66
+ updatedAt: new Date(),
67
+ };
68
+ }
69
+ /**
70
+ * Add credits to a user
71
+ */
72
+ async function addUserCredits(db, userId, credits, collectionName = "user_credits") {
73
+ const updates = {
74
+ updatedAt: admin.firestore.FieldValue.serverTimestamp(),
75
+ };
76
+ if (credits.text) {
77
+ updates.text = admin.firestore.FieldValue.increment(credits.text);
78
+ }
79
+ if (credits.image) {
80
+ updates.image = admin.firestore.FieldValue.increment(credits.image);
81
+ }
82
+ if (credits.video) {
83
+ updates.video = admin.firestore.FieldValue.increment(credits.video);
84
+ }
85
+ if (credits.audio) {
86
+ updates.audio = admin.firestore.FieldValue.increment(credits.audio);
87
+ }
88
+ await db.collection(collectionName).doc(userId).update(updates);
89
+ }
90
+ /**
91
+ * Set credits for a user (overwrite)
92
+ */
93
+ async function setUserCredits(db, userId, credits, collectionName = "user_credits") {
94
+ const updates = {
95
+ updatedAt: admin.firestore.FieldValue.serverTimestamp(),
96
+ };
97
+ if (credits.text !== undefined)
98
+ updates.text = credits.text;
99
+ if (credits.image !== undefined)
100
+ updates.image = credits.image;
101
+ if (credits.video !== undefined)
102
+ updates.video = credits.video;
103
+ if (credits.audio !== undefined)
104
+ updates.audio = credits.audio;
105
+ await db.collection(collectionName).doc(userId).set(updates, { merge: true });
106
+ }
107
+ /**
108
+ * Delete user credits document
109
+ */
110
+ async function deleteUserCredits(db, userId, collectionName = "user_credits") {
111
+ await db.collection(collectionName).doc(userId).delete();
112
+ }
113
+ //# sourceMappingURL=user-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-commands.js","sourceRoot":"","sources":["../../scripts/user-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Firebase Admin User Formatters
3
+ * Format functions for displaying user data
4
+ */
5
+ import type { UserData } from "./types";
6
+ /**
7
+ * Print user data in formatted way
8
+ */
9
+ export declare function printUserData(data: UserData): void;
10
+ //# sourceMappingURL=user-formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-formatters.d.ts","sourceRoot":"","sources":["../../scripts/user-formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CA4ClD"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * Firebase Admin User Formatters
4
+ * Format functions for displaying user data
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.printUserData = printUserData;
8
+ /**
9
+ * Print user data in formatted way
10
+ */
11
+ function printUserData(data) {
12
+ console.log("\n" + "═".repeat(60));
13
+ console.log(`👤 USER: ${data.userId}`);
14
+ console.log("═".repeat(60));
15
+ console.log("\n📋 PROFILE:");
16
+ if (data.profile) {
17
+ console.log(JSON.stringify(data.profile, null, 2));
18
+ }
19
+ else {
20
+ console.log(" ❌ Not found");
21
+ }
22
+ console.log("\n💰 CREDITS:");
23
+ if (data.credits) {
24
+ console.log(` Text: ${data.credits.text || 0}`);
25
+ console.log(` Image: ${data.credits.image || 0}`);
26
+ console.log(` Video: ${data.credits.video || 0}`);
27
+ console.log(` Audio: ${data.credits.audio || 0}`);
28
+ }
29
+ else {
30
+ console.log(" ❌ Not found");
31
+ }
32
+ console.log("\n🔔 SUBSCRIPTIONS:");
33
+ if (data.subscriptions.length > 0) {
34
+ data.subscriptions.forEach((sub) => {
35
+ console.log(` - ${sub.id}: ${JSON.stringify(sub)}`);
36
+ });
37
+ }
38
+ else {
39
+ console.log(" ❌ None");
40
+ }
41
+ console.log("\n🧾 TRANSACTIONS:");
42
+ if (data.transactions.length > 0) {
43
+ data.transactions.slice(0, 5).forEach((tx) => {
44
+ console.log(` - ${tx.id}: ${JSON.stringify(tx)}`);
45
+ });
46
+ if (data.transactions.length > 5) {
47
+ console.log(` ... and ${data.transactions.length - 5} more`);
48
+ }
49
+ }
50
+ else {
51
+ console.log(" ❌ None");
52
+ }
53
+ console.log("\n" + "═".repeat(60) + "\n");
54
+ }
55
+ //# sourceMappingURL=user-formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-formatters.js","sourceRoot":"","sources":["../../scripts/user-formatters.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,sCA4CC;AA/CD;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAc;IAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Firebase Admin User Queries
3
+ * Query functions for reading user data
4
+ */
5
+ import * as admin from "firebase-admin";
6
+ import type { UserData, UserCredits } from "./types";
7
+ /**
8
+ * Get complete user data including profile and all related collections
9
+ */
10
+ export declare function getUserData(db: admin.firestore.Firestore, userId: string, options?: {
11
+ includeCredits?: boolean;
12
+ includeSubscriptions?: boolean;
13
+ includeTransactions?: boolean;
14
+ creditsCollection?: string;
15
+ }): Promise<UserData>;
16
+ /**
17
+ * List all users with their credit balances
18
+ */
19
+ export declare function listUsersWithCredits(db: admin.firestore.Firestore, options?: {
20
+ creditsCollection?: string;
21
+ limit?: number;
22
+ onlyWithCredits?: boolean;
23
+ }): Promise<Array<{
24
+ userId: string;
25
+ displayName?: string;
26
+ email?: string;
27
+ isAnonymous: boolean;
28
+ credits: UserCredits | null;
29
+ }>>;
30
+ /**
31
+ * Get credits summary across all users
32
+ */
33
+ export declare function getCreditsSummary(db: admin.firestore.Firestore, collectionName?: string): Promise<{
34
+ totalUsers: number;
35
+ totalText: number;
36
+ totalImage: number;
37
+ totalVideo: number;
38
+ totalAudio: number;
39
+ usersWithCredits: number;
40
+ usersWithZeroCredits: number;
41
+ }>;
42
+ //# sourceMappingURL=user-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-queries.d.ts","sourceRoot":"","sources":["../../scripts/user-queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAErD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACA,OAAO,CAAC,QAAQ,CAAC,CA6DnB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,OAAO,CACR,KAAK,CAAC;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,CAAC,CACH,CA6BA;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,cAAc,SAAiB,GAC9B,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC,CAsCD"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ /**
3
+ * Firebase Admin User Queries
4
+ * Query functions for reading user data
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.getUserData = getUserData;
8
+ exports.listUsersWithCredits = listUsersWithCredits;
9
+ exports.getCreditsSummary = getCreditsSummary;
10
+ /**
11
+ * Get complete user data including profile and all related collections
12
+ */
13
+ async function getUserData(db, userId, options) {
14
+ const { includeCredits = true, includeSubscriptions = true, includeTransactions = true, creditsCollection = "user_credits", } = options || {};
15
+ const result = {
16
+ userId,
17
+ exists: false,
18
+ profile: null,
19
+ credits: null,
20
+ subscriptions: [],
21
+ transactions: [],
22
+ };
23
+ // Get user profile
24
+ const userDoc = await db.collection("users").doc(userId).get();
25
+ if (userDoc.exists) {
26
+ result.exists = true;
27
+ result.profile = userDoc.data();
28
+ }
29
+ // Get credits from root-level collection
30
+ if (includeCredits) {
31
+ const creditsDoc = await db.collection(creditsCollection).doc(userId).get();
32
+ if (creditsDoc.exists) {
33
+ result.credits = creditsDoc.data();
34
+ }
35
+ }
36
+ // Get subscriptions subcollection
37
+ if (includeSubscriptions) {
38
+ const subsSnapshot = await db
39
+ .collection("users")
40
+ .doc(userId)
41
+ .collection("subscriptions")
42
+ .get();
43
+ result.subscriptions = subsSnapshot.docs.map((doc) => ({
44
+ id: doc.id,
45
+ ...doc.data(),
46
+ }));
47
+ }
48
+ // Get transactions subcollection
49
+ if (includeTransactions) {
50
+ const txSnapshot = await db
51
+ .collection("users")
52
+ .doc(userId)
53
+ .collection("transactions")
54
+ .orderBy("createdAt", "desc")
55
+ .limit(50)
56
+ .get();
57
+ result.transactions = txSnapshot.docs.map((doc) => ({
58
+ id: doc.id,
59
+ ...doc.data(),
60
+ }));
61
+ }
62
+ return result;
63
+ }
64
+ /**
65
+ * List all users with their credit balances
66
+ */
67
+ async function listUsersWithCredits(db, options) {
68
+ const { creditsCollection = "user_credits", limit = 100, onlyWithCredits = false } = options || {};
69
+ const usersSnapshot = await db.collection("users").limit(limit).get();
70
+ const result = [];
71
+ for (const userDoc of usersSnapshot.docs) {
72
+ const userData = userDoc.data();
73
+ const creditsDoc = await db.collection(creditsCollection).doc(userDoc.id).get();
74
+ const credits = creditsDoc.exists ? creditsDoc.data() : null;
75
+ if (onlyWithCredits && !credits)
76
+ continue;
77
+ result.push({
78
+ userId: userDoc.id,
79
+ displayName: userData.displayName,
80
+ email: userData.email,
81
+ isAnonymous: userData.isAnonymous || false,
82
+ credits,
83
+ });
84
+ }
85
+ return result;
86
+ }
87
+ /**
88
+ * Get credits summary across all users
89
+ */
90
+ async function getCreditsSummary(db, collectionName = "user_credits") {
91
+ const snapshot = await db.collection(collectionName).get();
92
+ let totalText = 0;
93
+ let totalImage = 0;
94
+ let totalVideo = 0;
95
+ let totalAudio = 0;
96
+ let usersWithCredits = 0;
97
+ let usersWithZeroCredits = 0;
98
+ snapshot.docs.forEach((doc) => {
99
+ const data = doc.data();
100
+ const text = data.text || 0;
101
+ const image = data.image || 0;
102
+ const video = data.video || 0;
103
+ const audio = data.audio || 0;
104
+ totalText += text;
105
+ totalImage += image;
106
+ totalVideo += video;
107
+ totalAudio += audio;
108
+ if (text > 0 || image > 0 || video > 0 || audio > 0) {
109
+ usersWithCredits++;
110
+ }
111
+ else {
112
+ usersWithZeroCredits++;
113
+ }
114
+ });
115
+ return {
116
+ totalUsers: snapshot.docs.length,
117
+ totalText,
118
+ totalImage,
119
+ totalVideo,
120
+ totalAudio,
121
+ usersWithCredits,
122
+ usersWithZeroCredits,
123
+ };
124
+ }
125
+ //# sourceMappingURL=user-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-queries.js","sourceRoot":"","sources":["../../scripts/user-queries.ts"],"names":[],"mappings":"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"}
@@ -2,71 +2,7 @@
2
2
  * Firebase Admin User Utilities
3
3
  * Read and manage user data including credits, subscriptions, transactions
4
4
  */
5
- import * as admin from "firebase-admin";
6
- import type { UserData, UserCredits, CreditsConfig } from "./types";
7
- /**
8
- * Get complete user data including profile and all related collections
9
- */
10
- export declare function getUserData(db: admin.firestore.Firestore, userId: string, options?: {
11
- includeCredits?: boolean;
12
- includeSubscriptions?: boolean;
13
- includeTransactions?: boolean;
14
- creditsCollection?: string;
15
- }): Promise<UserData>;
16
- /**
17
- * Initialize credits for a user
18
- */
19
- export declare function initializeUserCredits(db: admin.firestore.Firestore, userId: string, config: CreditsConfig): Promise<UserCredits>;
20
- /**
21
- * Add credits to a user
22
- */
23
- export declare function addUserCredits(db: admin.firestore.Firestore, userId: string, credits: {
24
- text?: number;
25
- image?: number;
26
- video?: number;
27
- audio?: number;
28
- }, collectionName?: string): Promise<void>;
29
- /**
30
- * Set credits for a user (overwrite)
31
- */
32
- export declare function setUserCredits(db: admin.firestore.Firestore, userId: string, credits: {
33
- text?: number;
34
- image?: number;
35
- video?: number;
36
- audio?: number;
37
- }, collectionName?: string): Promise<void>;
38
- /**
39
- * List all users with their credit balances
40
- */
41
- export declare function listUsersWithCredits(db: admin.firestore.Firestore, options?: {
42
- creditsCollection?: string;
43
- limit?: number;
44
- onlyWithCredits?: boolean;
45
- }): Promise<Array<{
46
- userId: string;
47
- displayName?: string;
48
- email?: string;
49
- isAnonymous: boolean;
50
- credits: UserCredits | null;
51
- }>>;
52
- /**
53
- * Delete user credits document
54
- */
55
- export declare function deleteUserCredits(db: admin.firestore.Firestore, userId: string, collectionName?: string): Promise<void>;
56
- /**
57
- * Get credits summary across all users
58
- */
59
- export declare function getCreditsSummary(db: admin.firestore.Firestore, collectionName?: string): Promise<{
60
- totalUsers: number;
61
- totalText: number;
62
- totalImage: number;
63
- totalVideo: number;
64
- totalAudio: number;
65
- usersWithCredits: number;
66
- usersWithZeroCredits: number;
67
- }>;
68
- /**
69
- * Print user data in formatted way
70
- */
71
- export declare function printUserData(data: UserData): void;
5
+ export { getUserData, listUsersWithCredits, getCreditsSummary, } from "./user-queries";
6
+ export { initializeUserCredits, addUserCredits, setUserCredits, deleteUserCredits, } from "./user-commands";
7
+ export { printUserData, } from "./user-formatters";
72
8
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../scripts/user.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpE;;GAEG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACA,OAAO,CAAC,QAAQ,CAAC,CA6DnB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,cAAc,SAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,cAAc,SAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,OAAO,CACR,KAAK,CAAC;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,CAAC,CACH,CA6BA;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,cAAc,SAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAC7B,cAAc,SAAiB,GAC9B,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC,CAsCD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CA4ClD"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../scripts/user.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,GACd,MAAM,mBAAmB,CAAC"}