@mathrunet/masamune_firebase_workflow_marketing 3.8.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.
Files changed (146) hide show
  1. package/CHANGELOG.md +361 -0
  2. package/LICENSE +21 -0
  3. package/README.md +70 -0
  4. package/assets/fonts/NotoSans-Bold.ttf +1439 -0
  5. package/assets/fonts/NotoSans-Regular.ttf +1439 -0
  6. package/assets/fonts/NotoSans.ttf +0 -0
  7. package/assets/fonts/NotoSansJP-Bold.ttf +0 -0
  8. package/assets/fonts/NotoSansJP-Regular.ttf +0 -0
  9. package/assets/fonts/NotoSansKR-Bold.ttf +1439 -0
  10. package/assets/fonts/NotoSansKR-Regular.ttf +1439 -0
  11. package/assets/fonts/NotoSansKR.ttf +0 -0
  12. package/assets/fonts/NotoSansSC-Bold.ttf +1439 -0
  13. package/assets/fonts/NotoSansSC-Regular.ttf +1439 -0
  14. package/assets/fonts/NotoSansSC.ttf +0 -0
  15. package/dist/clients/app_store_client.d.ts +54 -0
  16. package/dist/clients/app_store_client.js +280 -0
  17. package/dist/clients/app_store_client.js.map +1 -0
  18. package/dist/clients/firebase_analytics_client.d.ts +67 -0
  19. package/dist/clients/firebase_analytics_client.js +411 -0
  20. package/dist/clients/firebase_analytics_client.js.map +1 -0
  21. package/dist/clients/github_content_client.d.ts +83 -0
  22. package/dist/clients/github_content_client.js +443 -0
  23. package/dist/clients/github_content_client.js.map +1 -0
  24. package/dist/clients/google_play_client.d.ts +49 -0
  25. package/dist/clients/google_play_client.js +275 -0
  26. package/dist/clients/google_play_client.js.map +1 -0
  27. package/dist/functions/analyze_github_init.d.ts +37 -0
  28. package/dist/functions/analyze_github_init.js +299 -0
  29. package/dist/functions/analyze_github_init.js.map +1 -0
  30. package/dist/functions/analyze_github_process.d.ts +25 -0
  31. package/dist/functions/analyze_github_process.js +268 -0
  32. package/dist/functions/analyze_github_process.js.map +1 -0
  33. package/dist/functions/analyze_github_summary.d.ts +32 -0
  34. package/dist/functions/analyze_github_summary.js +270 -0
  35. package/dist/functions/analyze_github_summary.js.map +1 -0
  36. package/dist/functions/analyze_market_research.d.ts +40 -0
  37. package/dist/functions/analyze_market_research.js +346 -0
  38. package/dist/functions/analyze_market_research.js.map +1 -0
  39. package/dist/functions/analyze_marketing_data.d.ts +96 -0
  40. package/dist/functions/analyze_marketing_data.js +990 -0
  41. package/dist/functions/analyze_marketing_data.js.map +1 -0
  42. package/dist/functions/collect_from_app_store.d.ts +25 -0
  43. package/dist/functions/collect_from_app_store.js +148 -0
  44. package/dist/functions/collect_from_app_store.js.map +1 -0
  45. package/dist/functions/collect_from_firebase_analytics.d.ts +25 -0
  46. package/dist/functions/collect_from_firebase_analytics.js +142 -0
  47. package/dist/functions/collect_from_firebase_analytics.js.map +1 -0
  48. package/dist/functions/collect_from_google_play_console.d.ts +25 -0
  49. package/dist/functions/collect_from_google_play_console.js +142 -0
  50. package/dist/functions/collect_from_google_play_console.js.map +1 -0
  51. package/dist/functions/generate_marketing_markdown.d.ts +89 -0
  52. package/dist/functions/generate_marketing_markdown.js +653 -0
  53. package/dist/functions/generate_marketing_markdown.js.map +1 -0
  54. package/dist/functions/generate_marketing_pdf.d.ts +25 -0
  55. package/dist/functions/generate_marketing_pdf.js +175 -0
  56. package/dist/functions/generate_marketing_pdf.js.map +1 -0
  57. package/dist/functions/research_market.d.ts +56 -0
  58. package/dist/functions/research_market.js +434 -0
  59. package/dist/functions/research_market.js.map +1 -0
  60. package/dist/functions.d.ts +571 -0
  61. package/dist/functions.js +648 -0
  62. package/dist/functions.js.map +1 -0
  63. package/dist/index.d.ts +13 -0
  64. package/dist/index.js +30 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/locales/de_DE.d.ts +5 -0
  67. package/dist/locales/de_DE.js +111 -0
  68. package/dist/locales/de_DE.js.map +1 -0
  69. package/dist/locales/en.d.ts +5 -0
  70. package/dist/locales/en.js +111 -0
  71. package/dist/locales/en.js.map +1 -0
  72. package/dist/locales/es_ES.d.ts +5 -0
  73. package/dist/locales/es_ES.js +111 -0
  74. package/dist/locales/es_ES.js.map +1 -0
  75. package/dist/locales/fr_FR.d.ts +5 -0
  76. package/dist/locales/fr_FR.js +111 -0
  77. package/dist/locales/fr_FR.js.map +1 -0
  78. package/dist/locales/id_ID.d.ts +5 -0
  79. package/dist/locales/id_ID.js +111 -0
  80. package/dist/locales/id_ID.js.map +1 -0
  81. package/dist/locales/index.d.ts +59 -0
  82. package/dist/locales/index.js +155 -0
  83. package/dist/locales/index.js.map +1 -0
  84. package/dist/locales/ja.d.ts +5 -0
  85. package/dist/locales/ja.js +111 -0
  86. package/dist/locales/ja.js.map +1 -0
  87. package/dist/locales/ko_KR.d.ts +5 -0
  88. package/dist/locales/ko_KR.js +111 -0
  89. package/dist/locales/ko_KR.js.map +1 -0
  90. package/dist/locales/pt_PT.d.ts +5 -0
  91. package/dist/locales/pt_PT.js +111 -0
  92. package/dist/locales/pt_PT.js.map +1 -0
  93. package/dist/locales/ru_RU.d.ts +5 -0
  94. package/dist/locales/ru_RU.js +111 -0
  95. package/dist/locales/ru_RU.js.map +1 -0
  96. package/dist/locales/types.d.ts +105 -0
  97. package/dist/locales/types.js +8 -0
  98. package/dist/locales/types.js.map +1 -0
  99. package/dist/locales/zh_CN.d.ts +5 -0
  100. package/dist/locales/zh_CN.js +111 -0
  101. package/dist/locales/zh_CN.js.map +1 -0
  102. package/dist/models/app_store_data.d.ts +87 -0
  103. package/dist/models/app_store_data.js +8 -0
  104. package/dist/models/app_store_data.js.map +1 -0
  105. package/dist/models/chart_data.d.ts +104 -0
  106. package/dist/models/chart_data.js +8 -0
  107. package/dist/models/chart_data.js.map +1 -0
  108. package/dist/models/common.d.ts +42 -0
  109. package/dist/models/common.js +8 -0
  110. package/dist/models/common.js.map +1 -0
  111. package/dist/models/firebase_analytics_data.d.ts +134 -0
  112. package/dist/models/firebase_analytics_data.js +8 -0
  113. package/dist/models/firebase_analytics_data.js.map +1 -0
  114. package/dist/models/github_analysis_data.d.ts +266 -0
  115. package/dist/models/github_analysis_data.js +101 -0
  116. package/dist/models/github_analysis_data.js.map +1 -0
  117. package/dist/models/google_play_data.d.ts +115 -0
  118. package/dist/models/google_play_data.js +8 -0
  119. package/dist/models/google_play_data.js.map +1 -0
  120. package/dist/models/index.d.ts +14 -0
  121. package/dist/models/index.js +36 -0
  122. package/dist/models/index.js.map +1 -0
  123. package/dist/models/market_research_data.d.ts +259 -0
  124. package/dist/models/market_research_data.js +8 -0
  125. package/dist/models/market_research_data.js.map +1 -0
  126. package/dist/models/marketing_analysis_data.d.ts +200 -0
  127. package/dist/models/marketing_analysis_data.js +8 -0
  128. package/dist/models/marketing_analysis_data.js.map +1 -0
  129. package/dist/models/pdf_data.d.ts +112 -0
  130. package/dist/models/pdf_data.js +8 -0
  131. package/dist/models/pdf_data.js.map +1 -0
  132. package/dist/services/chart_service.d.ts +54 -0
  133. package/dist/services/chart_service.js +436 -0
  134. package/dist/services/chart_service.js.map +1 -0
  135. package/dist/services/github_analysis_service.d.ts +73 -0
  136. package/dist/services/github_analysis_service.js +488 -0
  137. package/dist/services/github_analysis_service.js.map +1 -0
  138. package/dist/services/pdf_service.d.ts +112 -0
  139. package/dist/services/pdf_service.js +1397 -0
  140. package/dist/services/pdf_service.js.map +1 -0
  141. package/dist/utils/github_analysis_storage.d.ts +88 -0
  142. package/dist/utils/github_analysis_storage.js +154 -0
  143. package/dist/utils/github_analysis_storage.js.map +1 -0
  144. package/package.json +64 -0
  145. package/scripts/cleanup_test_data.ts +304 -0
  146. package/scripts/list_test_data.ts +85 -0
@@ -0,0 +1,411 @@
1
+ "use strict";
2
+ /**
3
+ * Firebase Analytics Data API Client
4
+ *
5
+ * Collects analytics data from Google Analytics 4 (Firebase Analytics):
6
+ * - Active users (DAU, WAU, MAU)
7
+ * - User demographics (age, gender, country, language)
8
+ * - Device information
9
+ * - Engagement metrics
10
+ *
11
+ * @see https://developers.google.com/analytics/devguides/reporting/data/v1
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.FirebaseAnalyticsClient = void 0;
48
+ const data_1 = require("@google-analytics/data");
49
+ const fs = __importStar(require("fs"));
50
+ /**
51
+ * Firebase Analytics Data API Client.
52
+ */
53
+ class FirebaseAnalyticsClient {
54
+ analyticsClient;
55
+ propertyId;
56
+ constructor(config) {
57
+ // Validate service account file exists
58
+ if (!fs.existsSync(config.serviceAccountPath)) {
59
+ throw new Error(`Service account file not found: ${config.serviceAccountPath}`);
60
+ }
61
+ // Initialize Analytics Data client with service account
62
+ this.analyticsClient = new data_1.BetaAnalyticsDataClient({
63
+ keyFilename: config.serviceAccountPath,
64
+ });
65
+ this.propertyId = config.propertyId;
66
+ }
67
+ /**
68
+ * Get active users metrics (DAU, WAU, MAU).
69
+ */
70
+ async getActiveUsers(dateRange) {
71
+ try {
72
+ const [response] = await this.analyticsClient.runReport({
73
+ property: this.propertyId,
74
+ dateRanges: [
75
+ {
76
+ startDate: dateRange.startDate,
77
+ endDate: dateRange.endDate,
78
+ },
79
+ ],
80
+ metrics: [
81
+ { name: "activeUsers" },
82
+ { name: "active7DayUsers" },
83
+ { name: "active28DayUsers" },
84
+ { name: "newUsers" },
85
+ ],
86
+ });
87
+ const row = response.rows?.[0];
88
+ const metrics = row?.metricValues || [];
89
+ return {
90
+ dau: parseInt(metrics[0]?.value || "0", 10),
91
+ wau: parseInt(metrics[1]?.value || "0", 10),
92
+ mau: parseInt(metrics[2]?.value || "0", 10),
93
+ newUsers: parseInt(metrics[3]?.value || "0", 10),
94
+ returningUsers: parseInt(metrics[0]?.value || "0", 10) - parseInt(metrics[3]?.value || "0", 10),
95
+ };
96
+ }
97
+ catch (err) {
98
+ console.error("Failed to get active users:", err.message);
99
+ return { dau: 0, wau: 0, mau: 0, newUsers: 0, returningUsers: 0 };
100
+ }
101
+ }
102
+ /**
103
+ * Get user demographics (age, gender, country, language).
104
+ */
105
+ async getUserDemographics(dateRange) {
106
+ const [ageGender, country, language] = await Promise.all([
107
+ this.getAgeGenderDistribution(dateRange),
108
+ this.getCountryDistribution(dateRange),
109
+ this.getLanguageDistribution(dateRange),
110
+ ]);
111
+ return {
112
+ ageGroups: ageGender.ageGroups,
113
+ genderDistribution: ageGender.genderDistribution,
114
+ countryDistribution: country,
115
+ languageDistribution: language,
116
+ };
117
+ }
118
+ /**
119
+ * Get age and gender distribution.
120
+ */
121
+ async getAgeGenderDistribution(dateRange) {
122
+ try {
123
+ const [response] = await this.analyticsClient.runReport({
124
+ property: this.propertyId,
125
+ dateRanges: [
126
+ {
127
+ startDate: dateRange.startDate,
128
+ endDate: dateRange.endDate,
129
+ },
130
+ ],
131
+ dimensions: [{ name: "userAgeBracket" }, { name: "userGender" }],
132
+ metrics: [{ name: "activeUsers" }],
133
+ });
134
+ const ageGroups = {};
135
+ const genderDistribution = {
136
+ male: 0,
137
+ female: 0,
138
+ unknown: 0,
139
+ };
140
+ for (const row of response.rows || []) {
141
+ const age = row.dimensionValues?.[0]?.value || "unknown";
142
+ const gender = row.dimensionValues?.[1]?.value || "unknown";
143
+ const count = parseInt(row.metricValues?.[0]?.value || "0", 10);
144
+ // Map age brackets
145
+ const ageKey = this.mapAgeBracket(age);
146
+ ageGroups[ageKey] = (ageGroups[ageKey] || 0) + count;
147
+ // Map gender
148
+ if (gender === "male") {
149
+ genderDistribution.male = (genderDistribution.male || 0) + count;
150
+ }
151
+ else if (gender === "female") {
152
+ genderDistribution.female = (genderDistribution.female || 0) + count;
153
+ }
154
+ else {
155
+ genderDistribution.unknown = (genderDistribution.unknown || 0) + count;
156
+ }
157
+ }
158
+ return { ageGroups, genderDistribution };
159
+ }
160
+ catch (err) {
161
+ console.error("Failed to get age/gender distribution:", err.message);
162
+ return {
163
+ ageGroups: {},
164
+ genderDistribution: { male: 0, female: 0, unknown: 0 },
165
+ };
166
+ }
167
+ }
168
+ /**
169
+ * Map GA4 age bracket to our format.
170
+ */
171
+ mapAgeBracket(ageBracket) {
172
+ const mapping = {
173
+ "18-24": "18-24",
174
+ "25-34": "25-34",
175
+ "35-44": "35-44",
176
+ "45-54": "45-54",
177
+ "55-64": "55-64",
178
+ "65+": "65+",
179
+ };
180
+ return mapping[ageBracket] || "unknown";
181
+ }
182
+ /**
183
+ * Get country distribution.
184
+ */
185
+ async getCountryDistribution(dateRange) {
186
+ try {
187
+ const [response] = await this.analyticsClient.runReport({
188
+ property: this.propertyId,
189
+ dateRanges: [
190
+ {
191
+ startDate: dateRange.startDate,
192
+ endDate: dateRange.endDate,
193
+ },
194
+ ],
195
+ dimensions: [{ name: "country" }],
196
+ metrics: [{ name: "activeUsers" }],
197
+ limit: 50,
198
+ });
199
+ const distribution = {};
200
+ for (const row of response.rows || []) {
201
+ const country = row.dimensionValues?.[0]?.value || "unknown";
202
+ const count = parseInt(row.metricValues?.[0]?.value || "0", 10);
203
+ distribution[country] = count;
204
+ }
205
+ return distribution;
206
+ }
207
+ catch (err) {
208
+ console.error("Failed to get country distribution:", err.message);
209
+ return {};
210
+ }
211
+ }
212
+ /**
213
+ * Get language distribution.
214
+ */
215
+ async getLanguageDistribution(dateRange) {
216
+ try {
217
+ const [response] = await this.analyticsClient.runReport({
218
+ property: this.propertyId,
219
+ dateRanges: [
220
+ {
221
+ startDate: dateRange.startDate,
222
+ endDate: dateRange.endDate,
223
+ },
224
+ ],
225
+ dimensions: [{ name: "language" }],
226
+ metrics: [{ name: "activeUsers" }],
227
+ limit: 50,
228
+ });
229
+ const distribution = {};
230
+ for (const row of response.rows || []) {
231
+ const language = row.dimensionValues?.[0]?.value || "unknown";
232
+ const count = parseInt(row.metricValues?.[0]?.value || "0", 10);
233
+ distribution[language] = count;
234
+ }
235
+ return distribution;
236
+ }
237
+ catch (err) {
238
+ console.error("Failed to get language distribution:", err.message);
239
+ return {};
240
+ }
241
+ }
242
+ /**
243
+ * Get device information (device types and OS versions).
244
+ */
245
+ async getDeviceInfo(dateRange) {
246
+ const [deviceTypes, osVersions] = await Promise.all([
247
+ this.getDeviceTypeDistribution(dateRange),
248
+ this.getOsVersionDistribution(dateRange),
249
+ ]);
250
+ return {
251
+ deviceTypes,
252
+ osVersions,
253
+ };
254
+ }
255
+ /**
256
+ * Get device type distribution.
257
+ */
258
+ async getDeviceTypeDistribution(dateRange) {
259
+ try {
260
+ const [response] = await this.analyticsClient.runReport({
261
+ property: this.propertyId,
262
+ dateRanges: [
263
+ {
264
+ startDate: dateRange.startDate,
265
+ endDate: dateRange.endDate,
266
+ },
267
+ ],
268
+ dimensions: [{ name: "deviceCategory" }],
269
+ metrics: [{ name: "activeUsers" }],
270
+ });
271
+ const distribution = {
272
+ phone: 0,
273
+ tablet: 0,
274
+ desktop: 0,
275
+ other: 0,
276
+ };
277
+ for (const row of response.rows || []) {
278
+ const category = row.dimensionValues?.[0]?.value?.toLowerCase() || "other";
279
+ const count = parseInt(row.metricValues?.[0]?.value || "0", 10);
280
+ if (category === "mobile") {
281
+ distribution.phone = (distribution.phone || 0) + count;
282
+ }
283
+ else if (category === "tablet") {
284
+ distribution.tablet = (distribution.tablet || 0) + count;
285
+ }
286
+ else if (category === "desktop") {
287
+ distribution.desktop = (distribution.desktop || 0) + count;
288
+ }
289
+ else {
290
+ distribution.other = (distribution.other || 0) + count;
291
+ }
292
+ }
293
+ return distribution;
294
+ }
295
+ catch (err) {
296
+ console.error("Failed to get device type distribution:", err.message);
297
+ return { phone: 0, tablet: 0, desktop: 0, other: 0 };
298
+ }
299
+ }
300
+ /**
301
+ * Get OS version distribution.
302
+ */
303
+ async getOsVersionDistribution(dateRange) {
304
+ try {
305
+ const [response] = await this.analyticsClient.runReport({
306
+ property: this.propertyId,
307
+ dateRanges: [
308
+ {
309
+ startDate: dateRange.startDate,
310
+ endDate: dateRange.endDate,
311
+ },
312
+ ],
313
+ dimensions: [{ name: "operatingSystemWithVersion" }],
314
+ metrics: [{ name: "activeUsers" }],
315
+ limit: 20,
316
+ });
317
+ const distribution = {};
318
+ for (const row of response.rows || []) {
319
+ const osVersion = row.dimensionValues?.[0]?.value || "unknown";
320
+ const count = parseInt(row.metricValues?.[0]?.value || "0", 10);
321
+ distribution[osVersion] = count;
322
+ }
323
+ return distribution;
324
+ }
325
+ catch (err) {
326
+ console.error("Failed to get OS version distribution:", err.message);
327
+ return {};
328
+ }
329
+ }
330
+ /**
331
+ * Get engagement metrics.
332
+ */
333
+ async getEngagementMetrics(dateRange) {
334
+ try {
335
+ const [response] = await this.analyticsClient.runReport({
336
+ property: this.propertyId,
337
+ dateRanges: [
338
+ {
339
+ startDate: dateRange.startDate,
340
+ endDate: dateRange.endDate,
341
+ },
342
+ ],
343
+ metrics: [
344
+ { name: "averageSessionDuration" },
345
+ { name: "sessionsPerUser" },
346
+ { name: "screenPageViews" },
347
+ ],
348
+ });
349
+ const row = response.rows?.[0];
350
+ const metrics = row?.metricValues || [];
351
+ return {
352
+ averageSessionDuration: parseFloat(metrics[0]?.value || "0"),
353
+ sessionsPerUser: parseFloat(metrics[1]?.value || "0"),
354
+ screenPageViews: parseInt(metrics[2]?.value || "0", 10),
355
+ };
356
+ }
357
+ catch (err) {
358
+ console.error("Failed to get engagement metrics:", err.message);
359
+ return { averageSessionDuration: 0, sessionsPerUser: 0, screenPageViews: 0 };
360
+ }
361
+ }
362
+ /**
363
+ * Collect all Firebase Analytics data for a date range.
364
+ */
365
+ async collectAllData(dateRange) {
366
+ const [activeUsers, demographics, deviceInfo, engagement] = await Promise.all([
367
+ this.getActiveUsers(dateRange).catch((err) => {
368
+ console.error("Failed to get active users:", err.message);
369
+ return { dau: 0, wau: 0, mau: 0, newUsers: 0, returningUsers: 0 };
370
+ }),
371
+ this.getUserDemographics(dateRange).catch((err) => {
372
+ console.error("Failed to get demographics:", err.message);
373
+ return {
374
+ ageGroups: {},
375
+ genderDistribution: { male: 0, female: 0, unknown: 0 },
376
+ countryDistribution: {},
377
+ languageDistribution: {},
378
+ };
379
+ }),
380
+ this.getDeviceInfo(dateRange).catch((err) => {
381
+ console.error("Failed to get device info:", err.message);
382
+ return {
383
+ deviceTypes: { phone: 0, tablet: 0, desktop: 0, other: 0 },
384
+ osVersions: {},
385
+ };
386
+ }),
387
+ this.getEngagementMetrics(dateRange).catch((err) => {
388
+ console.error("Failed to get engagement metrics:", err.message);
389
+ return { averageSessionDuration: 0, sessionsPerUser: 0, screenPageViews: 0 };
390
+ }),
391
+ ]);
392
+ return {
393
+ propertyId: this.propertyId,
394
+ dateRange: dateRange,
395
+ dau: activeUsers.dau,
396
+ wau: activeUsers.wau,
397
+ mau: activeUsers.mau,
398
+ newUsers: activeUsers.newUsers,
399
+ returningUsers: activeUsers.returningUsers,
400
+ demographics: demographics,
401
+ deviceTypes: deviceInfo.deviceTypes,
402
+ osVersions: deviceInfo.osVersions,
403
+ averageSessionDuration: engagement.averageSessionDuration,
404
+ sessionsPerUser: engagement.sessionsPerUser,
405
+ screenPageViews: engagement.screenPageViews,
406
+ collectedAt: new Date().toISOString(),
407
+ };
408
+ }
409
+ }
410
+ exports.FirebaseAnalyticsClient = FirebaseAnalyticsClient;
411
+ //# sourceMappingURL=firebase_analytics_client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase_analytics_client.js","sourceRoot":"","sources":["../../src/clients/firebase_analytics_client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * GitHub Content API Client
3
+ *
4
+ * Fetches repository contents for code analysis:
5
+ * - Directory listings
6
+ * - File contents
7
+ * - Repository tree structure
8
+ *
9
+ * @see https://docs.github.com/en/rest/repos/contents
10
+ */
11
+ import { GitHubContentClientConfig, GitHubContentItem, GitHubTreeItem } from "../models";
12
+ export { GitHubContentClientConfig, GitHubContentItem, GitHubTreeItem, };
13
+ /**
14
+ * GitHub Content API Client for repository analysis.
15
+ */
16
+ export declare class GitHubContentClient {
17
+ private token;
18
+ private owner;
19
+ private repo;
20
+ constructor(config: GitHubContentClientConfig);
21
+ /**
22
+ * Make a GitHub API request.
23
+ */
24
+ private request;
25
+ /**
26
+ * Execute with retry logic.
27
+ */
28
+ private withRetry;
29
+ /**
30
+ * Get repository information.
31
+ */
32
+ getRepositoryInfo(): Promise<{
33
+ defaultBranch: string;
34
+ fullName: string;
35
+ description: string | null;
36
+ }>;
37
+ /**
38
+ * Get directory contents at a specific path.
39
+ */
40
+ getDirectoryContents(path?: string): Promise<GitHubContentItem[]>;
41
+ /**
42
+ * Get file content (for files under 1MB).
43
+ */
44
+ getFileContent(path: string): Promise<string>;
45
+ /**
46
+ * Get file content via Blob API (for larger files).
47
+ */
48
+ getFileContentViaBlob(sha: string): Promise<string>;
49
+ /**
50
+ * Get repository tree recursively.
51
+ */
52
+ getRepositoryTree(basePath?: string): Promise<GitHubTreeItem[]>;
53
+ /**
54
+ * Get filtered file list for analysis.
55
+ * Excludes binary files, generated files, and common non-source directories.
56
+ */
57
+ getFilteredFileList(basePath?: string): Promise<string[]>;
58
+ /**
59
+ * Check if a file should be included in analysis.
60
+ */
61
+ shouldIncludeFile(path: string): boolean;
62
+ /**
63
+ * Get file extension.
64
+ */
65
+ private getExtension;
66
+ /**
67
+ * Get folder paths from file list.
68
+ */
69
+ getFolderPaths(filePaths: string[]): string[];
70
+ /**
71
+ * Get files in a specific folder.
72
+ */
73
+ getFilesInFolder(filePaths: string[], folderPath: string): string[];
74
+ /**
75
+ * Detect framework from repository.
76
+ */
77
+ detectFramework(basePath?: string): Promise<{
78
+ framework: string;
79
+ platforms: string[];
80
+ configFile?: string;
81
+ configContent?: string;
82
+ }>;
83
+ }