@umituz/react-native-firebase 1.13.43 → 1.13.45

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.
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Firebase Admin CLI
4
+ * Unified CLI for Firebase Admin operations
5
+ *
6
+ * Usage:
7
+ * npx ts-node -r tsconfig-paths/register node_modules/@umituz/react-native-firebase/scripts/cli.ts <command> [options]
8
+ *
9
+ * Commands:
10
+ * read-user <userId> Read user data
11
+ * init-credits <userId> Initialize credits for user
12
+ * set-credits <userId> <text> <image> Set credits for user
13
+ * list-users List all users with credits
14
+ * credits-summary Get credits summary
15
+ *
16
+ * Options:
17
+ * --service-account <path> Path to service account JSON (default: ./firebase-service-account.json)
18
+ * --project-id <id> Firebase project ID
19
+ * --credits-collection <name> Credits collection name (default: user_credits)
20
+ * --text-limit <n> Default text credit limit (default: 100)
21
+ * --image-limit <n> Default image credit limit (default: 100)
22
+ */
23
+ export {};
24
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../scripts/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG"}
@@ -0,0 +1,267 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Firebase Admin CLI
5
+ * Unified CLI for Firebase Admin operations
6
+ *
7
+ * Usage:
8
+ * npx ts-node -r tsconfig-paths/register node_modules/@umituz/react-native-firebase/scripts/cli.ts <command> [options]
9
+ *
10
+ * Commands:
11
+ * read-user <userId> Read user data
12
+ * init-credits <userId> Initialize credits for user
13
+ * set-credits <userId> <text> <image> Set credits for user
14
+ * list-users List all users with credits
15
+ * credits-summary Get credits summary
16
+ *
17
+ * Options:
18
+ * --service-account <path> Path to service account JSON (default: ./firebase-service-account.json)
19
+ * --project-id <id> Firebase project ID
20
+ * --credits-collection <name> Credits collection name (default: user_credits)
21
+ * --text-limit <n> Default text credit limit (default: 100)
22
+ * --image-limit <n> Default image credit limit (default: 100)
23
+ */
24
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ var desc = Object.getOwnPropertyDescriptor(m, k);
27
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
28
+ desc = { enumerable: true, get: function() { return m[k]; } };
29
+ }
30
+ Object.defineProperty(o, k2, desc);
31
+ }) : (function(o, m, k, k2) {
32
+ if (k2 === undefined) k2 = k;
33
+ o[k2] = m[k];
34
+ }));
35
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
36
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
37
+ }) : function(o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar = (this && this.__importStar) || (function () {
41
+ var ownKeys = function(o) {
42
+ ownKeys = Object.getOwnPropertyNames || function (o) {
43
+ var ar = [];
44
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
45
+ return ar;
46
+ };
47
+ return ownKeys(o);
48
+ };
49
+ return function (mod) {
50
+ if (mod && mod.__esModule) return mod;
51
+ var result = {};
52
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
53
+ __setModuleDefault(result, mod);
54
+ return result;
55
+ };
56
+ })();
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ const path = __importStar(require("path"));
59
+ const fs = __importStar(require("fs"));
60
+ const init_1 = require("./init");
61
+ const user_1 = require("./user");
62
+ const utils_1 = require("./utils");
63
+ function parseArgs() {
64
+ const args = process.argv.slice(2);
65
+ const command = args[0] || "help";
66
+ const commandArgs = [];
67
+ const options = {
68
+ serviceAccountPath: "./firebase-service-account.json",
69
+ creditsCollection: "user_credits",
70
+ textLimit: 100,
71
+ imageLimit: 100,
72
+ };
73
+ let i = 1;
74
+ while (i < args.length) {
75
+ const arg = args[i];
76
+ if (arg.startsWith("--")) {
77
+ const key = arg.slice(2);
78
+ const value = args[++i];
79
+ switch (key) {
80
+ case "service-account":
81
+ options.serviceAccountPath = value;
82
+ break;
83
+ case "project-id":
84
+ options.projectId = value;
85
+ break;
86
+ case "credits-collection":
87
+ options.creditsCollection = value;
88
+ break;
89
+ case "text-limit":
90
+ options.textLimit = parseInt(value) || 100;
91
+ break;
92
+ case "image-limit":
93
+ options.imageLimit = parseInt(value) || 100;
94
+ break;
95
+ }
96
+ }
97
+ else {
98
+ commandArgs.push(arg);
99
+ }
100
+ i++;
101
+ }
102
+ return { command, args: commandArgs, options };
103
+ }
104
+ function getProjectId(options) {
105
+ if (options.projectId)
106
+ return options.projectId;
107
+ const saPath = path.resolve(process.cwd(), options.serviceAccountPath);
108
+ if (fs.existsSync(saPath)) {
109
+ const sa = JSON.parse(fs.readFileSync(saPath, "utf8"));
110
+ return sa.project_id;
111
+ }
112
+ throw new Error("Project ID not found. Use --project-id or ensure service account file exists.");
113
+ }
114
+ async function main() {
115
+ const { command, args, options } = parseArgs();
116
+ if (command === "help") {
117
+ console.log(`
118
+ Firebase Admin CLI
119
+
120
+ Commands:
121
+ read-user <userId> Read user data including credits
122
+ init-credits <userId> Initialize credits for a user
123
+ set-credits <userId> <text> <image> Set credits for a user
124
+ list-users [--limit N] List all users with credits
125
+ credits-summary Get credits summary
126
+
127
+ Options:
128
+ --service-account <path> Path to service account JSON
129
+ --project-id <id> Firebase project ID
130
+ --credits-collection <name> Credits collection (default: user_credits)
131
+ --text-limit <n> Default text limit (default: 100)
132
+ --image-limit <n> Default image limit (default: 100)
133
+
134
+ Examples:
135
+ npx ts-node cli.ts read-user abc123
136
+ npx ts-node cli.ts init-credits abc123 --text-limit 1000 --image-limit 100
137
+ npx ts-node cli.ts set-credits abc123 500 50
138
+ npx ts-node cli.ts list-users --limit 50
139
+ npx ts-node cli.ts credits-summary
140
+ `);
141
+ process.exit(0);
142
+ }
143
+ try {
144
+ const projectId = getProjectId(options);
145
+ const saPath = path.resolve(process.cwd(), options.serviceAccountPath);
146
+ const app = (0, init_1.initFirebaseAdmin)({
147
+ serviceAccountPath: saPath,
148
+ projectId,
149
+ });
150
+ const db = (0, init_1.getFirestoreAdmin)(app);
151
+ switch (command) {
152
+ case "read-user": {
153
+ const userId = args[0];
154
+ if (!userId) {
155
+ console.error("❌ Error: userId is required");
156
+ process.exit(1);
157
+ }
158
+ (0, utils_1.printHeader)(`📖 READ USER: ${userId}`);
159
+ const userData = await (0, user_1.getUserData)(db, userId, {
160
+ creditsCollection: options.creditsCollection,
161
+ });
162
+ (0, user_1.printUserData)(userData);
163
+ break;
164
+ }
165
+ case "init-credits": {
166
+ const userId = args[0];
167
+ if (!userId) {
168
+ console.error("❌ Error: userId is required");
169
+ process.exit(1);
170
+ }
171
+ (0, utils_1.printHeader)(`💰 INIT CREDITS: ${userId}`);
172
+ console.log(`Collection: ${options.creditsCollection}`);
173
+ console.log(`Limits: Text=${options.textLimit}, Image=${options.imageLimit}\n`);
174
+ const existing = await (0, user_1.getUserData)(db, userId, {
175
+ creditsCollection: options.creditsCollection,
176
+ });
177
+ if (existing.credits) {
178
+ console.log("⚠️ Credits already exist:");
179
+ console.log(` Text: ${existing.credits.text}`);
180
+ console.log(` Image: ${existing.credits.image}`);
181
+ console.log("\n Use 'set-credits' to overwrite.");
182
+ break;
183
+ }
184
+ const credits = await (0, user_1.initializeUserCredits)(db, userId, {
185
+ collectionName: options.creditsCollection,
186
+ textLimit: options.textLimit,
187
+ imageLimit: options.imageLimit,
188
+ });
189
+ console.log("✅ Credits initialized:");
190
+ console.log(` Text: ${credits.text}`);
191
+ console.log(` Image: ${credits.image}`);
192
+ break;
193
+ }
194
+ case "set-credits": {
195
+ const userId = args[0];
196
+ const text = parseInt(args[1]);
197
+ const image = parseInt(args[2]);
198
+ if (!userId || isNaN(text) || isNaN(image)) {
199
+ console.error("❌ Error: Usage: set-credits <userId> <text> <image>");
200
+ process.exit(1);
201
+ }
202
+ (0, utils_1.printHeader)(`💰 SET CREDITS: ${userId}`);
203
+ console.log(`Setting: Text=${text}, Image=${image}\n`);
204
+ await (0, user_1.setUserCredits)(db, userId, { text, image }, options.creditsCollection);
205
+ console.log("✅ Credits set successfully!");
206
+ const updated = await (0, user_1.getUserData)(db, userId, {
207
+ creditsCollection: options.creditsCollection,
208
+ });
209
+ (0, user_1.printUserData)(updated);
210
+ break;
211
+ }
212
+ case "list-users": {
213
+ const limit = parseInt(args[0]) || 100;
214
+ (0, utils_1.printHeader)("👥 USERS WITH CREDITS");
215
+ const users = await (0, user_1.listUsersWithCredits)(db, {
216
+ creditsCollection: options.creditsCollection,
217
+ limit,
218
+ });
219
+ console.log(`Found ${users.length} users:\n`);
220
+ (0, utils_1.printSeparator)("-", 80);
221
+ console.log("ID".padEnd(30) +
222
+ "Name".padEnd(20) +
223
+ "Text".padEnd(10) +
224
+ "Image".padEnd(10) +
225
+ "Anon");
226
+ (0, utils_1.printSeparator)("-", 80);
227
+ users.forEach((u) => {
228
+ const text = u.credits?.text ?? "-";
229
+ const image = u.credits?.image ?? "-";
230
+ console.log(u.userId.substring(0, 28).padEnd(30) +
231
+ (u.displayName || "-").substring(0, 18).padEnd(20) +
232
+ String(text).padEnd(10) +
233
+ String(image).padEnd(10) +
234
+ (u.isAnonymous ? "Yes" : "No"));
235
+ });
236
+ (0, utils_1.printSeparator)("-", 80);
237
+ break;
238
+ }
239
+ case "credits-summary": {
240
+ (0, utils_1.printHeader)("📊 CREDITS SUMMARY");
241
+ const summary = await (0, user_1.getCreditsSummary)(db, options.creditsCollection);
242
+ console.log(`Total Users: ${summary.totalUsers}`);
243
+ console.log(`With Credits: ${summary.usersWithCredits}`);
244
+ console.log(`Zero Credits: ${summary.usersWithZeroCredits}`);
245
+ console.log();
246
+ console.log("Total Credits Across All Users:");
247
+ console.log(` Text: ${summary.totalText}`);
248
+ console.log(` Image: ${summary.totalImage}`);
249
+ console.log(` Video: ${summary.totalVideo}`);
250
+ console.log(` Audio: ${summary.totalAudio}`);
251
+ break;
252
+ }
253
+ default:
254
+ console.error(`❌ Unknown command: ${command}`);
255
+ console.log("Run with 'help' for available commands.");
256
+ process.exit(1);
257
+ }
258
+ (0, init_1.resetFirebaseAdmin)();
259
+ process.exit(0);
260
+ }
261
+ catch (error) {
262
+ console.error("❌ Error:", error instanceof Error ? error.message : error);
263
+ process.exit(1);
264
+ }
265
+ }
266
+ main();
267
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../scripts/cli.ts"],"names":[],"mappings":"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"}
@@ -16,10 +16,11 @@
16
16
  * const auth = getAuthAdmin(app);
17
17
  * await cleanupAnonymousUsers(auth);
18
18
  */
19
- export type { FirebaseAdminConfig, CollectionInfo, UserInfo, CleanupResult, BatchResult, StorageFileInfo, ResetSummary, } from "./types";
19
+ export type { FirebaseAdminConfig, CollectionInfo, UserInfo, CleanupResult, BatchResult, StorageFileInfo, ResetSummary, UserCredits, UserData, CreditsConfig, } from "./types";
20
20
  export { initFirebaseAdmin, getFirestoreAdmin, getAuthAdmin, getStorageAdmin, resetFirebaseAdmin, } from "./init";
21
21
  export { listAllUsers, listAuthenticatedUsers, listAnonymousUsers, deleteUsers, cleanupAnonymousUsers, deleteAllUsers, getUserStats as getAuthUserStats, } from "./auth";
22
22
  export { listCollections, listUserSubcollections, deleteCollection, deleteUserSubcollection, deleteAllData, seedBatch, seedUserSubcollection, countDocuments, getUserStats as getFirestoreUserStats, } from "./firestore";
23
23
  export { listFiles, deleteAllFiles, deleteFilesByPrefix, getStorageStats, deleteUserFiles, } from "./storage";
24
24
  export { randomId, randomDate, randomItem, randomNumber, randomBoolean, sleep, formatBytes, createConfirmationTimer, printSeparator, printHeader, } from "./utils";
25
+ export { getUserData, initializeUserCredits, addUserCredits, setUserCredits, listUsersWithCredits, deleteUserCredits, getCreditsSummary, printUserData, } from "./user";
25
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../scripts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,YAAY,IAAI,gBAAgB,GACjC,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,YAAY,IAAI,qBAAqB,GACtC,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../scripts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,YAAY,IAAI,gBAAgB,GACjC,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,YAAY,IAAI,qBAAqB,GACtC,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GACd,MAAM,QAAQ,CAAC"}
@@ -18,7 +18,7 @@
18
18
  * await cleanupAnonymousUsers(auth);
19
19
  */
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.printHeader = exports.printSeparator = exports.createConfirmationTimer = exports.formatBytes = exports.sleep = exports.randomBoolean = exports.randomNumber = exports.randomItem = exports.randomDate = exports.randomId = exports.deleteUserFiles = exports.getStorageStats = exports.deleteFilesByPrefix = exports.deleteAllFiles = exports.listFiles = exports.getFirestoreUserStats = exports.countDocuments = exports.seedUserSubcollection = exports.seedBatch = exports.deleteAllData = exports.deleteUserSubcollection = exports.deleteCollection = exports.listUserSubcollections = exports.listCollections = exports.getAuthUserStats = exports.deleteAllUsers = exports.cleanupAnonymousUsers = exports.deleteUsers = exports.listAnonymousUsers = exports.listAuthenticatedUsers = exports.listAllUsers = exports.resetFirebaseAdmin = exports.getStorageAdmin = exports.getAuthAdmin = exports.getFirestoreAdmin = exports.initFirebaseAdmin = void 0;
21
+ exports.printUserData = exports.getCreditsSummary = exports.deleteUserCredits = exports.listUsersWithCredits = exports.setUserCredits = exports.addUserCredits = exports.initializeUserCredits = exports.getUserData = exports.printHeader = exports.printSeparator = exports.createConfirmationTimer = exports.formatBytes = exports.sleep = exports.randomBoolean = exports.randomNumber = exports.randomItem = exports.randomDate = exports.randomId = exports.deleteUserFiles = exports.getStorageStats = exports.deleteFilesByPrefix = exports.deleteAllFiles = exports.listFiles = exports.getFirestoreUserStats = exports.countDocuments = exports.seedUserSubcollection = exports.seedBatch = exports.deleteAllData = exports.deleteUserSubcollection = exports.deleteCollection = exports.listUserSubcollections = exports.listCollections = exports.getAuthUserStats = exports.deleteAllUsers = exports.cleanupAnonymousUsers = exports.deleteUsers = exports.listAnonymousUsers = exports.listAuthenticatedUsers = exports.listAllUsers = exports.resetFirebaseAdmin = exports.getStorageAdmin = exports.getAuthAdmin = exports.getFirestoreAdmin = exports.initFirebaseAdmin = void 0;
22
22
  // Initialization
23
23
  var init_1 = require("./init");
24
24
  Object.defineProperty(exports, "initFirebaseAdmin", { enumerable: true, get: function () { return init_1.initFirebaseAdmin; } });
@@ -65,4 +65,14 @@ Object.defineProperty(exports, "formatBytes", { enumerable: true, get: function
65
65
  Object.defineProperty(exports, "createConfirmationTimer", { enumerable: true, get: function () { return utils_1.createConfirmationTimer; } });
66
66
  Object.defineProperty(exports, "printSeparator", { enumerable: true, get: function () { return utils_1.printSeparator; } });
67
67
  Object.defineProperty(exports, "printHeader", { enumerable: true, get: function () { return utils_1.printHeader; } });
68
+ // User utilities
69
+ var user_1 = require("./user");
70
+ Object.defineProperty(exports, "getUserData", { enumerable: true, get: function () { return user_1.getUserData; } });
71
+ Object.defineProperty(exports, "initializeUserCredits", { enumerable: true, get: function () { return user_1.initializeUserCredits; } });
72
+ Object.defineProperty(exports, "addUserCredits", { enumerable: true, get: function () { return user_1.addUserCredits; } });
73
+ Object.defineProperty(exports, "setUserCredits", { enumerable: true, get: function () { return user_1.setUserCredits; } });
74
+ Object.defineProperty(exports, "listUsersWithCredits", { enumerable: true, get: function () { return user_1.listUsersWithCredits; } });
75
+ Object.defineProperty(exports, "deleteUserCredits", { enumerable: true, get: function () { return user_1.deleteUserCredits; } });
76
+ Object.defineProperty(exports, "getCreditsSummary", { enumerable: true, get: function () { return user_1.getCreditsSummary; } });
77
+ Object.defineProperty(exports, "printUserData", { enumerable: true, get: function () { return user_1.printUserData; } });
68
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../scripts/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAaH,iBAAiB;AACjB,+BAMgB;AALd,yGAAA,iBAAiB,OAAA;AACjB,yGAAA,iBAAiB,OAAA;AACjB,oGAAA,YAAY,OAAA;AACZ,uGAAA,eAAe,OAAA;AACf,0GAAA,kBAAkB,OAAA;AAGpB,iBAAiB;AACjB,+BAQgB;AAPd,oGAAA,YAAY,OAAA;AACZ,8GAAA,sBAAsB,OAAA;AACtB,0GAAA,kBAAkB,OAAA;AAClB,mGAAA,WAAW,OAAA;AACX,6GAAA,qBAAqB,OAAA;AACrB,sGAAA,cAAc,OAAA;AACd,wGAAA,YAAY,OAAoB;AAGlC,sBAAsB;AACtB,yCAUqB;AATnB,4GAAA,eAAe,OAAA;AACf,mHAAA,sBAAsB,OAAA;AACtB,6GAAA,gBAAgB,OAAA;AAChB,oHAAA,uBAAuB,OAAA;AACvB,0GAAA,aAAa,OAAA;AACb,sGAAA,SAAS,OAAA;AACT,kHAAA,qBAAqB,OAAA;AACrB,2GAAA,cAAc,OAAA;AACd,kHAAA,YAAY,OAAyB;AAGvC,oBAAoB;AACpB,qCAMmB;AALjB,oGAAA,SAAS,OAAA;AACT,yGAAA,cAAc,OAAA;AACd,8GAAA,mBAAmB,OAAA;AACnB,0GAAA,eAAe,OAAA;AACf,0GAAA,eAAe,OAAA;AAGjB,oBAAoB;AACpB,iCAWiB;AAVf,iGAAA,QAAQ,OAAA;AACR,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,8FAAA,KAAK,OAAA;AACL,oGAAA,WAAW,OAAA;AACX,gHAAA,uBAAuB,OAAA;AACvB,uGAAA,cAAc,OAAA;AACd,oGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../scripts/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAgBH,iBAAiB;AACjB,+BAMgB;AALd,yGAAA,iBAAiB,OAAA;AACjB,yGAAA,iBAAiB,OAAA;AACjB,oGAAA,YAAY,OAAA;AACZ,uGAAA,eAAe,OAAA;AACf,0GAAA,kBAAkB,OAAA;AAGpB,iBAAiB;AACjB,+BAQgB;AAPd,oGAAA,YAAY,OAAA;AACZ,8GAAA,sBAAsB,OAAA;AACtB,0GAAA,kBAAkB,OAAA;AAClB,mGAAA,WAAW,OAAA;AACX,6GAAA,qBAAqB,OAAA;AACrB,sGAAA,cAAc,OAAA;AACd,wGAAA,YAAY,OAAoB;AAGlC,sBAAsB;AACtB,yCAUqB;AATnB,4GAAA,eAAe,OAAA;AACf,mHAAA,sBAAsB,OAAA;AACtB,6GAAA,gBAAgB,OAAA;AAChB,oHAAA,uBAAuB,OAAA;AACvB,0GAAA,aAAa,OAAA;AACb,sGAAA,SAAS,OAAA;AACT,kHAAA,qBAAqB,OAAA;AACrB,2GAAA,cAAc,OAAA;AACd,kHAAA,YAAY,OAAyB;AAGvC,oBAAoB;AACpB,qCAMmB;AALjB,oGAAA,SAAS,OAAA;AACT,yGAAA,cAAc,OAAA;AACd,8GAAA,mBAAmB,OAAA;AACnB,0GAAA,eAAe,OAAA;AACf,0GAAA,eAAe,OAAA;AAGjB,oBAAoB;AACpB,iCAWiB;AAVf,iGAAA,QAAQ,OAAA;AACR,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,8FAAA,KAAK,OAAA;AACL,oGAAA,WAAW,OAAA;AACX,gHAAA,uBAAuB,OAAA;AACvB,uGAAA,cAAc,OAAA;AACd,oGAAA,WAAW,OAAA;AAGb,iBAAiB;AACjB,+BASgB;AARd,mGAAA,WAAW,OAAA;AACX,6GAAA,qBAAqB,OAAA;AACrB,sGAAA,cAAc,OAAA;AACd,sGAAA,cAAc,OAAA;AACd,4GAAA,oBAAoB,OAAA;AACpB,yGAAA,iBAAiB,OAAA;AACjB,yGAAA,iBAAiB,OAAA;AACjB,qGAAA,aAAa,OAAA"}
@@ -46,4 +46,30 @@ export interface ResetSummary {
46
46
  firestoreDocsDeleted: number;
47
47
  storageFilesDeleted: number;
48
48
  }
49
+ /** User credits data */
50
+ export interface UserCredits {
51
+ text: number;
52
+ image: number;
53
+ video: number;
54
+ audio: number;
55
+ createdAt?: Date;
56
+ updatedAt?: Date;
57
+ }
58
+ /** Complete user data including all related collections */
59
+ export interface UserData {
60
+ userId: string;
61
+ exists: boolean;
62
+ profile: Record<string, unknown> | null;
63
+ credits: UserCredits | null;
64
+ subscriptions: Array<Record<string, unknown>>;
65
+ transactions: Array<Record<string, unknown>>;
66
+ }
67
+ /** Credits initialization config */
68
+ export interface CreditsConfig {
69
+ collectionName?: string;
70
+ textLimit?: number;
71
+ imageLimit?: number;
72
+ videoLimit?: number;
73
+ audioLimit?: number;
74
+ }
49
75
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../scripts/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../scripts/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAwB;AACxB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,2DAA2D;AAC3D,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9C,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9C;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Firebase Admin User Utilities
3
+ * Read and manage user data including credits, subscriptions, transactions
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;
72
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +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"}