@octaviaflow/telemetry 1.0.0 → 1.1.2

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 (67) hide show
  1. package/dist/__tests__/mocks/mongodb.mock.d.ts +22 -0
  2. package/dist/__tests__/mocks/mongodb.mock.d.ts.map +1 -0
  3. package/dist/__tests__/mocks/mongodb.mock.js +87 -0
  4. package/dist/__tests__/mocks/mongodb.mock.js.map +1 -0
  5. package/dist/__tests__/setup.d.ts +10 -0
  6. package/dist/__tests__/setup.d.ts.map +1 -0
  7. package/dist/__tests__/setup.js +28 -0
  8. package/dist/__tests__/setup.js.map +1 -0
  9. package/dist/collect.bundle.js +42366 -0
  10. package/dist/collect.bundle.js.map +7 -0
  11. package/dist/collect.d.ts +11 -0
  12. package/dist/collect.d.ts.map +1 -0
  13. package/dist/collect.js +19 -17
  14. package/dist/collect.js.map +1 -0
  15. package/dist/config/__tests__/config-loader.test.d.ts +10 -0
  16. package/dist/config/__tests__/config-loader.test.d.ts.map +1 -0
  17. package/dist/config/__tests__/config-loader.test.js +378 -0
  18. package/dist/config/__tests__/config-loader.test.js.map +1 -0
  19. package/dist/config/__tests__/credential-manager.test.d.ts +10 -0
  20. package/dist/config/__tests__/credential-manager.test.d.ts.map +1 -0
  21. package/dist/config/__tests__/credential-manager.test.js +297 -0
  22. package/dist/config/__tests__/credential-manager.test.js.map +1 -0
  23. package/dist/config/config-loader.d.ts +58 -0
  24. package/dist/config/config-loader.d.ts.map +1 -0
  25. package/dist/config/config-loader.js +83 -0
  26. package/dist/config/config-loader.js.map +1 -0
  27. package/dist/config/credential-manager.d.ts +72 -0
  28. package/dist/config/credential-manager.d.ts.map +1 -0
  29. package/dist/config/credential-manager.js +224 -0
  30. package/dist/config/credential-manager.js.map +1 -0
  31. package/dist/core/telemetry-collector.d.ts +30 -0
  32. package/dist/core/telemetry-collector.d.ts.map +1 -0
  33. package/dist/core/telemetry-collector.js +261 -0
  34. package/dist/core/telemetry-collector.js.map +1 -0
  35. package/dist/index.d.ts +24 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +24 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/integrations/__tests__/react-telemetry.test.d.ts +10 -0
  40. package/dist/integrations/__tests__/react-telemetry.test.d.ts.map +1 -0
  41. package/dist/integrations/__tests__/react-telemetry.test.js +166 -0
  42. package/dist/integrations/__tests__/react-telemetry.test.js.map +1 -0
  43. package/dist/integrations/react-telemetry.d.ts +29 -0
  44. package/dist/integrations/react-telemetry.d.ts.map +1 -0
  45. package/dist/integrations/react-telemetry.js +205 -0
  46. package/dist/integrations/react-telemetry.js.map +1 -0
  47. package/dist/storage/__tests__/file-storage.test.d.ts +10 -0
  48. package/dist/storage/__tests__/file-storage.test.d.ts.map +1 -0
  49. package/dist/storage/__tests__/file-storage.test.js +260 -0
  50. package/dist/storage/__tests__/file-storage.test.js.map +1 -0
  51. package/dist/storage/__tests__/mongodb-storage.test.d.ts +10 -0
  52. package/dist/storage/__tests__/mongodb-storage.test.d.ts.map +1 -0
  53. package/dist/storage/__tests__/mongodb-storage.test.js +308 -0
  54. package/dist/storage/__tests__/mongodb-storage.test.js.map +1 -0
  55. package/dist/storage/file-storage.d.ts +49 -0
  56. package/dist/storage/file-storage.d.ts.map +1 -0
  57. package/dist/storage/file-storage.js +135 -0
  58. package/dist/storage/file-storage.js.map +1 -0
  59. package/dist/storage/mongodb-storage.d.ts +79 -0
  60. package/dist/storage/mongodb-storage.d.ts.map +1 -0
  61. package/dist/storage/mongodb-storage.js +263 -0
  62. package/dist/storage/mongodb-storage.js.map +1 -0
  63. package/dist/storage/resilient-storage.d.ts +99 -0
  64. package/dist/storage/resilient-storage.d.ts.map +1 -0
  65. package/dist/storage/resilient-storage.js +324 -0
  66. package/dist/storage/resilient-storage.js.map +1 -0
  67. package/package.json +35 -17
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import * as fs from "fs";
10
+ import * as path from "path";
11
+ import * as os from "os";
12
+ export class CredentialManager {
13
+ config;
14
+ constructor(config = { source: "env" }) {
15
+ this.config = {
16
+ envPrefix: "OCTAVIAFLOW_TELEMETRY_",
17
+ ...config,
18
+ };
19
+ }
20
+ /**
21
+ * Get MongoDB credentials from configured source
22
+ */
23
+ async getMongoDBCredentials() {
24
+ switch (this.config.source) {
25
+ case "env":
26
+ return this.getCredentialsFromEnv();
27
+ case "file":
28
+ return this.getCredentialsFromFile();
29
+ case "keychain":
30
+ return this.getCredentialsFromKeychain();
31
+ case "prompt":
32
+ return this.getCredentialsFromPrompt();
33
+ default:
34
+ throw new Error(`Unsupported credential source: ${this.config.source}`);
35
+ }
36
+ }
37
+ /**
38
+ * Get credentials from environment variables
39
+ */
40
+ getCredentialsFromEnv() {
41
+ const prefix = this.config.envPrefix || "OCTAVIAFLOW_TELEMETRY_";
42
+ const username = process.env[`${prefix}DB_USERNAME`];
43
+ const password = process.env[`${prefix}DB_PASSWORD`];
44
+ if (!username || !password) {
45
+ throw new Error(`MongoDB credentials not found in environment variables. ` +
46
+ `Please set ${prefix}DB_USERNAME and ${prefix}DB_PASSWORD`);
47
+ }
48
+ return { username, password };
49
+ }
50
+ /**
51
+ * Get credentials from file
52
+ */
53
+ async getCredentialsFromFile() {
54
+ const filePath = this.config.filePath || this.getDefaultCredentialFilePath();
55
+ if (!fs.existsSync(filePath)) {
56
+ throw new Error(`Credential file not found: ${filePath}`);
57
+ }
58
+ try {
59
+ const content = fs.readFileSync(filePath, "utf8");
60
+ const credentials = JSON.parse(content);
61
+ if (!credentials.username || !credentials.password) {
62
+ throw new Error('Invalid credential file format. Expected: {"username": "...", "password": "..."}');
63
+ }
64
+ return {
65
+ username: credentials.username,
66
+ password: credentials.password,
67
+ };
68
+ }
69
+ catch (error) {
70
+ throw new Error(`Failed to read credential file: ${error instanceof Error ? error.message : String(error)}`);
71
+ }
72
+ }
73
+ /**
74
+ * Get credentials from system keychain (macOS/Linux)
75
+ */
76
+ async getCredentialsFromKeychain() {
77
+ // This would require platform-specific keychain access
78
+ // For now, fall back to environment variables
79
+ console.warn("⚠️ Keychain access not implemented, falling back to environment variables");
80
+ return this.getCredentialsFromEnv();
81
+ }
82
+ /**
83
+ * Get credentials from user prompt (interactive)
84
+ */
85
+ async getCredentialsFromPrompt() {
86
+ // This would require readline or similar for interactive input
87
+ // For now, fall back to environment variables
88
+ console.warn("⚠️ Interactive prompt not implemented, falling back to environment variables");
89
+ return this.getCredentialsFromEnv();
90
+ }
91
+ /**
92
+ * Store credentials securely
93
+ */
94
+ async storeCredentials(credentials) {
95
+ switch (this.config.source) {
96
+ case "file":
97
+ await this.storeCredentialsToFile(credentials);
98
+ break;
99
+ case "keychain":
100
+ await this.storeCredentialsToKeychain(credentials);
101
+ break;
102
+ default:
103
+ console.warn("⚠️ Credential storage not supported for source:", this.config.source);
104
+ }
105
+ }
106
+ /**
107
+ * Store credentials to file
108
+ */
109
+ async storeCredentialsToFile(credentials) {
110
+ const filePath = this.config.filePath || this.getDefaultCredentialFilePath();
111
+ const dir = path.dirname(filePath);
112
+ // Ensure directory exists
113
+ if (!fs.existsSync(dir)) {
114
+ fs.mkdirSync(dir, { recursive: true });
115
+ }
116
+ try {
117
+ const content = JSON.stringify(credentials, null, 2);
118
+ fs.writeFileSync(filePath, content, { mode: 0o600 }); // Read/write for owner only
119
+ console.log(`✔︎ Credentials stored to: ${filePath}`);
120
+ }
121
+ catch (error) {
122
+ throw new Error(`Failed to store credentials: ${error instanceof Error ? error.message : String(error)}`);
123
+ }
124
+ }
125
+ /**
126
+ * Store credentials to keychain
127
+ */
128
+ async storeCredentialsToKeychain(credentials) {
129
+ // Platform-specific keychain storage would go here
130
+ console.warn("⚠️ Keychain storage not implemented");
131
+ }
132
+ /**
133
+ * Get default credential file path
134
+ */
135
+ getDefaultCredentialFilePath() {
136
+ const homeDir = os.homedir();
137
+ return path.join(homeDir, ".octaviaflow", "telemetry-credentials.json");
138
+ }
139
+ /**
140
+ * Validate credentials format
141
+ */
142
+ validateCredentials(credentials) {
143
+ return (typeof credentials === "object" &&
144
+ credentials !== null &&
145
+ typeof credentials.username === "string" &&
146
+ typeof credentials.password === "string" &&
147
+ credentials.username.length > 0 &&
148
+ credentials.password.length > 0);
149
+ }
150
+ /**
151
+ * Test credentials by attempting connection
152
+ */
153
+ async testCredentials(credentials, connectionString) {
154
+ try {
155
+ const { MongoClient } = await import("mongodb");
156
+ const testConnectionString = connectionString
157
+ .replace("<db_username>", encodeURIComponent(credentials.username))
158
+ .replace("<db_password>", encodeURIComponent(credentials.password));
159
+ const client = new MongoClient(testConnectionString, {
160
+ serverSelectionTimeoutMS: 5000,
161
+ connectTimeoutMS: 5000,
162
+ });
163
+ await client.connect();
164
+ await client.db("admin").command({ ping: 1 });
165
+ await client.close();
166
+ return true;
167
+ }
168
+ catch (error) {
169
+ console.error("✗ Credential test failed:", error instanceof Error ? error.message : String(error));
170
+ return false;
171
+ }
172
+ }
173
+ /**
174
+ * Clear stored credentials
175
+ */
176
+ async clearCredentials() {
177
+ switch (this.config.source) {
178
+ case "file":
179
+ const filePath = this.config.filePath || this.getDefaultCredentialFilePath();
180
+ if (fs.existsSync(filePath)) {
181
+ fs.unlinkSync(filePath);
182
+ console.log("✔︎ Credentials cleared from file");
183
+ }
184
+ break;
185
+ case "keychain":
186
+ console.warn("⚠️ Keychain credential clearing not implemented");
187
+ break;
188
+ default:
189
+ console.warn("⚠️ Credential clearing not supported for source:", this.config.source);
190
+ }
191
+ }
192
+ /**
193
+ * Setup credentials interactively
194
+ */
195
+ async setupCredentials() {
196
+ console.log("🔐 Setting up MongoDB credentials for OctaviaFlow Telemetry...");
197
+ console.log("");
198
+ console.log("Please provide your MongoDB Atlas credentials:");
199
+ console.log("Username: BueFqTBkS0JVtlWp");
200
+ console.log("Password: [Please provide the password]");
201
+ console.log("");
202
+ console.log("You can set these as environment variables:");
203
+ console.log(' export OCTAVIAFLOW_TELEMETRY_DB_USERNAME="BueFqTBkS0JVtlWp"');
204
+ console.log(' export OCTAVIAFLOW_TELEMETRY_DB_PASSWORD="your_password"');
205
+ console.log("");
206
+ // For now, return the known username and expect password from env
207
+ const username = "BueFqTBkS0JVtlWp";
208
+ const password = process.env.OCTAVIAFLOW_TELEMETRY_DB_PASSWORD;
209
+ if (!password) {
210
+ throw new Error("Please set the OCTAVIAFLOW_TELEMETRY_DB_PASSWORD environment variable with your MongoDB password");
211
+ }
212
+ const credentials = { username, password };
213
+ // Test the credentials
214
+ console.log("🧪 Testing credentials...");
215
+ const connectionString = "mongodb+srv://<db_username>:<db_password>@cluster0.9pxucxe.mongodb.net/?appName=Cluster0";
216
+ const isValid = await this.testCredentials(credentials, connectionString);
217
+ if (!isValid) {
218
+ throw new Error("✗ Credential test failed. Please check your password.");
219
+ }
220
+ console.log("✔︎ Credentials validated successfully!");
221
+ return credentials;
222
+ }
223
+ }
224
+ //# sourceMappingURL=credential-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../src/config/credential-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import { TelemetryConfig } from "../config/config-loader.js";
10
+ import { FileStorage } from "../storage/file-storage.js";
11
+ import { MongoDBStorage } from "../storage/mongodb-storage.js";
12
+ import { ResilientStorage } from "../storage/resilient-storage.js";
13
+ export interface CollectorOptions {
14
+ verbose?: boolean;
15
+ dryRun?: boolean;
16
+ }
17
+ export declare class TelemetryCollector {
18
+ private config;
19
+ private options;
20
+ primaryStorage: FileStorage | MongoDBStorage | ResilientStorage | null;
21
+ private backupStorage;
22
+ private credentialManager;
23
+ constructor(config: TelemetryConfig, options?: CollectorOptions);
24
+ collect(): Promise<void>;
25
+ private collectNpmData;
26
+ private collectJsxData;
27
+ private collectJsData;
28
+ private collectWcData;
29
+ }
30
+ //# sourceMappingURL=telemetry-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-collector.d.ts","sourceRoot":"","sources":["../../src/core/telemetry-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAiB,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAmB;IAC3B,cAAc,EACjB,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,IAAI,CAAQ;IAChB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,iBAAiB,CAAkC;gBAE/C,MAAM,EAAE,eAAe,EAAE,OAAO,GAAE,gBAAqB;IAwB7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA6HhB,cAAc;YAiCd,cAAc;YAoCd,aAAa;YAoCb,aAAa;CAmC5B"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import { FileStorage } from "../storage/file-storage.js";
10
+ import { MongoDBStorage } from "../storage/mongodb-storage.js";
11
+ import { ResilientStorage } from "../storage/resilient-storage.js";
12
+ export class TelemetryCollector {
13
+ config;
14
+ options;
15
+ primaryStorage = null;
16
+ backupStorage = null;
17
+ credentialManager = null;
18
+ constructor(config, options = {}) {
19
+ this.config = config;
20
+ this.options = options;
21
+ // Initialize primary storage based on configuration
22
+ if (config.storage.type === "file" && config.storage.file) {
23
+ this.primaryStorage = new FileStorage(config.storage.file);
24
+ }
25
+ else if (config.storage.type === "mongodb" && config.storage.mongodb) {
26
+ // Use ResilientStorage for automatic offline fallback
27
+ this.primaryStorage = new ResilientStorage(config.storage.mongodb);
28
+ // No credential manager needed for published package telemetry
29
+ }
30
+ // Initialize backup storage if enabled
31
+ if (config.storage.localBackup && config.storage.localBackup.enabled) {
32
+ this.backupStorage = new FileStorage({
33
+ directory: config.storage.localBackup.directory,
34
+ fileNamePattern: config.storage.localBackup.fileNamePattern,
35
+ maxFileSizeMB: config.storage.localBackup.maxFileSizeMB,
36
+ compress: config.storage.localBackup.compress,
37
+ });
38
+ }
39
+ }
40
+ async collect() {
41
+ if (this.options.verbose) {
42
+ console.log("🔍 Starting telemetry collection for project:", this.config.projectId);
43
+ }
44
+ // Initialize MongoDB connection if needed
45
+ if (this.primaryStorage instanceof MongoDBStorage ||
46
+ this.primaryStorage instanceof ResilientStorage) {
47
+ try {
48
+ // Connect directly using embedded credentials for published package telemetry
49
+ await this.primaryStorage.connect();
50
+ if (this.options.verbose) {
51
+ console.log("🔗 Telemetry storage initialized successfully");
52
+ }
53
+ }
54
+ catch (error) {
55
+ // ResilientStorage handles failures gracefully, so this should rarely happen
56
+ if (this.options.verbose) {
57
+ console.warn("⚠️ Telemetry storage initialization had issues:", error instanceof Error ? error.message : String(error));
58
+ }
59
+ // Don't disable telemetry - ResilientStorage will handle offline mode
60
+ }
61
+ }
62
+ const telemetryData = [];
63
+ // Collect NPM data
64
+ if (this.config.collect.npm) {
65
+ const npmData = await this.collectNpmData();
66
+ telemetryData.push(...npmData);
67
+ }
68
+ // Collect JSX data
69
+ if (this.config.collect.jsx) {
70
+ const jsxData = await this.collectJsxData();
71
+ telemetryData.push(...jsxData);
72
+ }
73
+ // Collect JS data
74
+ if (this.config.collect.js) {
75
+ const jsData = await this.collectJsData();
76
+ telemetryData.push(...jsData);
77
+ }
78
+ // Collect Web Component data
79
+ if (this.config.collect.wc) {
80
+ const wcData = await this.collectWcData();
81
+ telemetryData.push(...wcData);
82
+ }
83
+ if (this.options.verbose) {
84
+ console.log(`📊 Collected ${telemetryData.length} telemetry data points`);
85
+ }
86
+ // Store data
87
+ if (!this.options.dryRun &&
88
+ this.primaryStorage &&
89
+ telemetryData.length > 0) {
90
+ // Store in primary storage (MongoDB or file)
91
+ await this.primaryStorage.storeBatch(telemetryData);
92
+ // Store in backup storage if enabled
93
+ if (this.backupStorage) {
94
+ await this.backupStorage.storeBatch(telemetryData);
95
+ if (this.options.verbose) {
96
+ console.log("💾 Data backed up locally");
97
+ }
98
+ }
99
+ if (this.options.verbose) {
100
+ console.log("💾 Data stored successfully");
101
+ // Show storage-specific information
102
+ if (this.config.storage.type === "file" &&
103
+ this.primaryStorage instanceof FileStorage) {
104
+ const files = this.primaryStorage.getStoredFiles();
105
+ console.log("📁 Stored files:", files);
106
+ console.log("🗄️ To import to MongoDB Atlas, run:");
107
+ console.log(' mongoimport --uri "your-connection-string" --collection telemetry --file <json-file>');
108
+ }
109
+ else if (this.config.storage.type === "mongodb" &&
110
+ (this.primaryStorage instanceof MongoDBStorage ||
111
+ this.primaryStorage instanceof ResilientStorage)) {
112
+ const stats = await this.primaryStorage.getStats();
113
+ console.log("📊 Storage Stats:", stats);
114
+ }
115
+ // Show backup storage info if enabled
116
+ if (this.backupStorage) {
117
+ const backupFiles = this.backupStorage.getStoredFiles();
118
+ console.log("📁 Backup files:", backupFiles);
119
+ }
120
+ }
121
+ }
122
+ else if (this.options.dryRun) {
123
+ console.log("🧪 Dry run mode - no data stored");
124
+ console.log("📋 Would store:", JSON.stringify(telemetryData, null, 2));
125
+ }
126
+ // Cleanup storage connections
127
+ if (this.primaryStorage instanceof MongoDBStorage ||
128
+ this.primaryStorage instanceof ResilientStorage) {
129
+ await this.primaryStorage.disconnect();
130
+ if (this.options.verbose) {
131
+ console.log("🔌 Telemetry storage disconnected");
132
+ }
133
+ }
134
+ }
135
+ async collectNpmData() {
136
+ const data = [];
137
+ try {
138
+ // Mock NPM data collection - in real implementation, this would analyze package.json
139
+ const mockNpmData = {
140
+ timestamp: new Date().toISOString(),
141
+ projectId: this.config.projectId,
142
+ scope: "npm",
143
+ metric: "npm.dependency",
144
+ data: {
145
+ dependencies: [
146
+ { name: "react", version: "^18.0.0", type: "dependency" },
147
+ { name: "typescript", version: "^5.0.0", type: "devDependency" },
148
+ ],
149
+ },
150
+ metadata: {
151
+ collectionMethod: "package.json-analysis",
152
+ },
153
+ };
154
+ data.push(mockNpmData);
155
+ if (this.options.verbose) {
156
+ console.log("📦 NPM data collected");
157
+ }
158
+ }
159
+ catch (error) {
160
+ console.warn("⚠️ Failed to collect NPM data:", error);
161
+ }
162
+ return data;
163
+ }
164
+ async collectJsxData() {
165
+ const data = [];
166
+ try {
167
+ // Mock JSX data collection - in real implementation, this would analyze JSX files
168
+ const mockJsxData = {
169
+ timestamp: new Date().toISOString(),
170
+ projectId: this.config.projectId,
171
+ scope: "jsx",
172
+ metric: "jsx.element",
173
+ data: {
174
+ elements: [
175
+ {
176
+ name: "Button",
177
+ attributes: { size: "large", variant: "primary" },
178
+ moduleSpecifier: "@octaviaflow/ui",
179
+ },
180
+ ],
181
+ },
182
+ metadata: {
183
+ collectionMethod: "jsx-analysis",
184
+ },
185
+ };
186
+ data.push(mockJsxData);
187
+ if (this.options.verbose) {
188
+ console.log("⚛️ JSX data collected");
189
+ }
190
+ }
191
+ catch (error) {
192
+ console.warn("⚠️ Failed to collect JSX data:", error);
193
+ }
194
+ return data;
195
+ }
196
+ async collectJsData() {
197
+ const data = [];
198
+ try {
199
+ // Mock JS data collection - in real implementation, this would analyze JS/TS files
200
+ const mockJsData = {
201
+ timestamp: new Date().toISOString(),
202
+ projectId: this.config.projectId,
203
+ scope: "js",
204
+ metric: "js.function",
205
+ data: {
206
+ functions: [
207
+ {
208
+ name: "useAnalytics",
209
+ arguments: ["track", "user_action"],
210
+ moduleSpecifier: "@octaviaflow/analytics",
211
+ },
212
+ ],
213
+ },
214
+ metadata: {
215
+ collectionMethod: "js-analysis",
216
+ },
217
+ };
218
+ data.push(mockJsData);
219
+ if (this.options.verbose) {
220
+ console.log("🔧 JS data collected");
221
+ }
222
+ }
223
+ catch (error) {
224
+ console.warn("⚠️ Failed to collect JS data:", error);
225
+ }
226
+ return data;
227
+ }
228
+ async collectWcData() {
229
+ const data = [];
230
+ try {
231
+ // Mock Web Component data collection
232
+ const mockWcData = {
233
+ timestamp: new Date().toISOString(),
234
+ projectId: this.config.projectId,
235
+ scope: "wc",
236
+ metric: "wc.element",
237
+ data: {
238
+ elements: [
239
+ {
240
+ name: "octaviaflow-button",
241
+ attributes: { type: "submit", disabled: false },
242
+ moduleSpecifier: "@octaviaflow/web-components",
243
+ },
244
+ ],
245
+ },
246
+ metadata: {
247
+ collectionMethod: "wc-analysis",
248
+ },
249
+ };
250
+ data.push(mockWcData);
251
+ if (this.options.verbose) {
252
+ console.log("🌐 Web Component data collected");
253
+ }
254
+ }
255
+ catch (error) {
256
+ console.warn("⚠️ Failed to collect Web Component data:", error);
257
+ }
258
+ return data;
259
+ }
260
+ }
261
+ //# sourceMappingURL=telemetry-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-collector.js","sourceRoot":"","sources":["../../src/core/telemetry-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ /**
10
+ * OctaviaFlow Telemetry Package
11
+ * Main entry point for telemetry collection and analytics
12
+ */
13
+ export { TelemetryCollector } from "./core/telemetry-collector.js";
14
+ export { loadConfig } from "./config/config-loader.js";
15
+ export type { TelemetryConfig } from "./config/config-loader.js";
16
+ export { FileStorage } from "./storage/file-storage.js";
17
+ export { MongoDBStorage } from "./storage/mongodb-storage.js";
18
+ export { ResilientStorage } from "./storage/resilient-storage.js";
19
+ export type { MongoDBStorageConfig, MongoDBCredentials, } from "./storage/mongodb-storage.js";
20
+ export { CredentialManager } from "./config/credential-manager.js";
21
+ export type { CredentialConfig } from "./config/credential-manager.js";
22
+ export { trackComponentUsage, trackFunctionUsage, disableTelemetry, isTelemetryEnabled, useTelemetry, } from "./integrations/react-telemetry.js";
23
+ export type { TelemetryData } from "./storage/file-storage.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,YAAY,EACV,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GACb,MAAM,mCAAmC,CAAC;AAG3C,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ /**
10
+ * OctaviaFlow Telemetry Package
11
+ * Main entry point for telemetry collection and analytics
12
+ */
13
+ // Core exports
14
+ export { TelemetryCollector } from "./core/telemetry-collector.js";
15
+ export { loadConfig } from "./config/config-loader.js";
16
+ // Storage exports
17
+ export { FileStorage } from "./storage/file-storage.js";
18
+ export { MongoDBStorage } from "./storage/mongodb-storage.js";
19
+ export { ResilientStorage } from "./storage/resilient-storage.js";
20
+ // Credential management
21
+ export { CredentialManager } from "./config/credential-manager.js";
22
+ // React integration (for published packages)
23
+ export { trackComponentUsage, trackFunctionUsage, disableTelemetry, isTelemetryEnabled, useTelemetry, } from "./integrations/react-telemetry.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AAEH,eAAe;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMlE,wBAAwB;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,6CAA6C;AAC7C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GACb,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 31/January/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=react-telemetry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-telemetry.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/__tests__/react-telemetry.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}