@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.
- package/dist/__tests__/mocks/mongodb.mock.d.ts +22 -0
- package/dist/__tests__/mocks/mongodb.mock.d.ts.map +1 -0
- package/dist/__tests__/mocks/mongodb.mock.js +87 -0
- package/dist/__tests__/mocks/mongodb.mock.js.map +1 -0
- package/dist/__tests__/setup.d.ts +10 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +28 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/collect.bundle.js +42366 -0
- package/dist/collect.bundle.js.map +7 -0
- package/dist/collect.d.ts +11 -0
- package/dist/collect.d.ts.map +1 -0
- package/dist/collect.js +19 -17
- package/dist/collect.js.map +1 -0
- package/dist/config/__tests__/config-loader.test.d.ts +10 -0
- package/dist/config/__tests__/config-loader.test.d.ts.map +1 -0
- package/dist/config/__tests__/config-loader.test.js +378 -0
- package/dist/config/__tests__/config-loader.test.js.map +1 -0
- package/dist/config/__tests__/credential-manager.test.d.ts +10 -0
- package/dist/config/__tests__/credential-manager.test.d.ts.map +1 -0
- package/dist/config/__tests__/credential-manager.test.js +297 -0
- package/dist/config/__tests__/credential-manager.test.js.map +1 -0
- package/dist/config/config-loader.d.ts +58 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +83 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/credential-manager.d.ts +72 -0
- package/dist/config/credential-manager.d.ts.map +1 -0
- package/dist/config/credential-manager.js +224 -0
- package/dist/config/credential-manager.js.map +1 -0
- package/dist/core/telemetry-collector.d.ts +30 -0
- package/dist/core/telemetry-collector.d.ts.map +1 -0
- package/dist/core/telemetry-collector.js +261 -0
- package/dist/core/telemetry-collector.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/__tests__/react-telemetry.test.d.ts +10 -0
- package/dist/integrations/__tests__/react-telemetry.test.d.ts.map +1 -0
- package/dist/integrations/__tests__/react-telemetry.test.js +166 -0
- package/dist/integrations/__tests__/react-telemetry.test.js.map +1 -0
- package/dist/integrations/react-telemetry.d.ts +29 -0
- package/dist/integrations/react-telemetry.d.ts.map +1 -0
- package/dist/integrations/react-telemetry.js +205 -0
- package/dist/integrations/react-telemetry.js.map +1 -0
- package/dist/storage/__tests__/file-storage.test.d.ts +10 -0
- package/dist/storage/__tests__/file-storage.test.d.ts.map +1 -0
- package/dist/storage/__tests__/file-storage.test.js +260 -0
- package/dist/storage/__tests__/file-storage.test.js.map +1 -0
- package/dist/storage/__tests__/mongodb-storage.test.d.ts +10 -0
- package/dist/storage/__tests__/mongodb-storage.test.d.ts.map +1 -0
- package/dist/storage/__tests__/mongodb-storage.test.js +308 -0
- package/dist/storage/__tests__/mongodb-storage.test.js.map +1 -0
- package/dist/storage/file-storage.d.ts +49 -0
- package/dist/storage/file-storage.d.ts.map +1 -0
- package/dist/storage/file-storage.js +135 -0
- package/dist/storage/file-storage.js.map +1 -0
- package/dist/storage/mongodb-storage.d.ts +79 -0
- package/dist/storage/mongodb-storage.d.ts.map +1 -0
- package/dist/storage/mongodb-storage.js +263 -0
- package/dist/storage/mongodb-storage.js.map +1 -0
- package/dist/storage/resilient-storage.d.ts +99 -0
- package/dist/storage/resilient-storage.d.ts.map +1 -0
- package/dist/storage/resilient-storage.js +324 -0
- package/dist/storage/resilient-storage.js.map +1 -0
- 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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"}
|
package/dist/index.d.ts
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
|
+
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"}
|