{"_id":"@aziontech/bundler-telemetry","name":"@aziontech/bundler-telemetry","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@aziontech/bundler-telemetry","version":"1.0.0","description":"Telemetry system for measuring and reporting build performance in Azion Bundler","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.mjs"}},"author":{"name":"aziontech"},"license":"MIT","devDependencies":{"@jest/globals":"^29.7.0","@types/jest":"^29.5.12","@types/node":"^22.13.1","jest":"^29.7.0","ts-jest":"^29.1.5","ts-node":"^10.9.2","@aziontech/vite-config":"0.0.0"},"repository":{"type":"git","url":"git+https://github.com/aziontech/lib.git","directory":"packages/bundler-telemetry"},"scripts":{"compile":"vite build","lint":"eslint .","lint:fix":"eslint --fix .","prettier":"prettier --write .","test":"jest --clearCache && jest","test:watch":"jest -c jest.config.js . --watch","test:coverage":"jest --clearCache && jest -c jest.config.js . --coverage"},"_id":"@aziontech/bundler-telemetry@1.0.0","bugs":{"url":"https://github.com/aziontech/lib/issues"},"homepage":"https://github.com/aziontech/lib#readme","_integrity":"sha512-o4Aa9DSMc2DSTLgU/y4LKMUov4IdFL+gt1bsmfR65DaAogULImOmMWVKAbrL67aVgs1J9jQBCq6gaV2XN0Q6RQ==","_resolved":"/tmp/8809f7d3fae3751dbfe5298f93299c34/aziontech-bundler-telemetry-1.0.0.tgz","_from":"file:aziontech-bundler-telemetry-1.0.0.tgz","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-o4Aa9DSMc2DSTLgU/y4LKMUov4IdFL+gt1bsmfR65DaAogULImOmMWVKAbrL67aVgs1J9jQBCq6gaV2XN0Q6RQ==","shasum":"755095dd0e218f4e343442fb7f023307ea5ef7c8","tarball":"https://registry.npmjs.org/@aziontech/bundler-telemetry/-/bundler-telemetry-1.0.0.tgz","fileCount":6,"unpackedSize":72153,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDUtedpTKIA8aKEBPCek1SRAPp+k5YR/maF/hZNKStKxAiBZkazrdWshVVlopEBPV7uCteoUMB5H3PP/98WNshNA2Q=="}]},"_npmUser":{"name":"aziontechadmin","email":"services@azion.com"},"directories":{},"maintainers":[{"name":"aziontechadmin","email":"services@azion.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bundler-telemetry_1.0.0_1776984620434_0.8893515817426396"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-23T22:50:20.361Z","1.0.0":"2026-04-23T22:50:20.599Z","modified":"2026-04-23T22:50:20.779Z"},"maintainers":[{"name":"aziontechadmin","email":"services@azion.com"}],"description":"Telemetry system for measuring and reporting build performance in Azion Bundler","homepage":"https://github.com/aziontech/lib#readme","repository":{"type":"git","url":"git+https://github.com/aziontech/lib.git","directory":"packages/bundler-telemetry"},"author":{"name":"aziontech"},"bugs":{"url":"https://github.com/aziontech/lib/issues"},"license":"MIT","readme":"# @aziontech/bundler-telemetry\n\n> Telemetry system for measuring and reporting build performance in Azion Bundler\n\n## Installation\n\n```bash\nnpm install @aziontech/bundler-telemetry\n# or\npnpm add @aziontech/bundler-telemetry\n```\n\n## Usage\n\n### Basic Usage\n\n```typescript\nimport { TelemetryCollector } from '@aziontech/bundler-telemetry';\n\nconst telemetry = new TelemetryCollector(\n  {\n    enabled: true,\n    outputFormat: 'both',\n    outputPath: '.edge/telemetry-report.json',\n  },\n  {\n    bundlerVersion: '7.2.0',\n    preset: 'nextjs',\n    bundler: 'esbuild',\n    production: true,\n    entry: './src/main.ts',\n  },\n);\n\n// Measure async operations\nawait telemetry.measureAsync('dependencies-check', async () => {\n  await checkDependencies();\n});\n\nawait telemetry.measureAsync('preset-resolution', async () => {\n  return await resolvePreset(config.build?.preset);\n});\n\n// Or use manual span management\nconst buildSpanId = telemetry.startSpan('core-build', { bundler: 'esbuild' });\n// ... perform build\ntelemetry.endSpan(buildSpanId);\n\n// Generate output\ntelemetry.printToConsole();\nawait telemetry.saveReport();\n```\n\n### Output\n\nWhen `outputFormat` is set to `'console'` or `'both'`, telemetry will display real-time progress:\n\n```\n⚡ Azion Bundler v7.2.0\n\n📦 Build Configuration\n   Preset: nextjs\n   Bundler: esbuild\n   Mode: production\n\n⚙️  Starting build pipeline...\n\n✓ Dependencies Check        45ms\n✓ Preset Resolution         120ms\n✓ Build Config Setup         80ms\n✓ Environment Setup          30ms\n✓ Prebuild                  250ms\n✓ Handler Resolution         15ms\n✓ Worker Setup              100ms\n✓ Core Build                1.5s\n✓ Postbuild                 180ms\n✓ Storage Setup              60ms\n✓ Bindings Setup             45ms\n✓ Env Vars Copy              10ms\n\n📊 Build Summary\n   Status: Success\n   Total Duration: 2.4s\n   Memory Delta: +150MB heap, +200MB RSS\n   Bundle Size: 512KB\n   Modules: 150\n\n📄 Telemetry report saved to .edge/telemetry-report.json\n```\n\n### JSON Report\n\nThe JSON report is saved to the specified `outputPath`:\n\n```json\n{\n  \"bundlerVersion\": \"7.2.0\",\n  \"nodeVersion\": \"v18.20.0\",\n  \"platform\": \"darwin\",\n  \"arch\": \"x64\",\n  \"timestamp\": \"2024-04-08T14:30:00.000Z\",\n  \"preset\": \"nextjs\",\n  \"bundler\": \"esbuild\",\n  \"production\": true,\n  \"entry\": [\"./src/main.ts\"],\n  \"systemInfo\": {\n    \"cpus\": 8,\n    \"totalMemory\": 16384,\n    \"freeMemory\": 8192,\n    \"platform\": \"darwin\",\n    \"arch\": \"x64\"\n  },\n  \"spans\": [\n    {\n      \"id\": \"span_123\",\n      \"name\": \"core-build\",\n      \"startTime\": 1000,\n      \"endTime\": 2500,\n      \"duration\": 1500,\n      \"status\": \"completed\",\n      \"attributes\": {}\n    }\n  ],\n  \"summary\": {\n    \"totalDuration\": 2400,\n    \"totalMemoryDelta\": {\n      \"heapUsed\": 157286400,\n      \"rss\": 209715200\n    },\n    \"bundleSize\": 524288,\n    \"modulesCount\": 150,\n    \"success\": true\n  }\n}\n```\n\n## API Reference\n\n### `TelemetryCollector`\n\nMain class for collecting telemetry data.\n\n#### Constructor\n\n```typescript\nnew TelemetryCollector(config: TelemetryConfig, metadata: TelemetryBuildMetadata)\n```\n\n#### Methods\n\n| Method                                    | Description                    |\n| ----------------------------------------- | ------------------------------ |\n| `startSpan(name, attributes?, parentId?)` | Start a new span               |\n| `endSpan(spanId, error?)`                 | End a span                     |\n| `measureAsync<T>(name, fn, attributes?)`  | Measure async function         |\n| `measureSync<T>(name, fn, attributes?)`   | Measure sync function          |\n| `markFailed(error)`                       | Mark build as failed           |\n| `setSpanAttributes(spanId, attributes)`   | Set additional span attributes |\n| `getSpan(spanId)`                         | Get span by ID                 |\n| `getAllSpans()`                           | Get all spans                  |\n| `getChildSpans(parentId)`                 | Get child spans                |\n| `finalize()`                              | Generate final report          |\n| `printToConsole()`                        | Print summary to console       |\n| `saveReport(path?)`                       | Save report to JSON file       |\n| `getSystemInfo()`                         | Get system information         |\n| `getTotalDuration()`                      | Get total build duration       |\n| `getMemoryDelta()`                        | Get memory delta               |\n\n### Types\n\n```typescript\ninterface TelemetryConfig {\n  enabled: boolean;\n  outputFormat: 'console' | 'json' | 'both';\n  outputPath: string;\n  openTelemetry?: {\n    enabled: boolean;\n    endpoint?: string;\n    serviceName: string;\n  };\n}\n\ninterface TelemetrySpan {\n  id: string;\n  name: string;\n  parentId?: string;\n  startTime: number;\n  endTime?: number;\n  duration?: number;\n  attributes: Record<string, unknown>;\n  memoryBefore?: NodeJS.MemoryUsage;\n  memoryAfter?: NodeJS.MemoryUsage;\n  status: 'running' | 'completed' | 'error';\n  errorMessage?: string;\n}\n\ninterface TelemetryReport {\n  bundlerVersion: string;\n  nodeVersion: string;\n  platform: string;\n  arch: string;\n  timestamp: string;\n  preset: string;\n  bundler: 'esbuild' | 'webpack';\n  production: boolean;\n  entry: string | string[];\n  systemInfo: TelemetrySystemInfo;\n  spans: TelemetrySpan[];\n  plugins?: TelemetryPluginMetrics[];\n  summary: {\n    totalDuration: number;\n    totalMemoryDelta: { heapUsed: number; rss: number };\n    bundleSize?: number;\n    modulesCount?: number;\n    success: boolean;\n    errorMessage?: string;\n  };\n}\n```\n\n### Utility Functions\n\n```typescript\n// Console formatters\nformatHeader(bundlerVersion: string): string\nformatBuildConfig(metadata: TelemetryBuildMetadata): string\nformatPhaseStart(span: TelemetrySpan): string\nformatPhaseComplete(span: TelemetrySpan): string\nformatPhaseError(span: TelemetrySpan): string\nformatSummary(report: TelemetryReport): string\nformatDuration(ms: number): string\nformatBytes(bytes: number): string\n\n// Report utilities\nreportToJSON(report: TelemetryReport, options?: ReportOptions): string\ncreateSummaryReport(report: TelemetryReport): object\ncompareReports(report1: TelemetryReport, report2: TelemetryReport): object\nextractPluginMetrics(spans: TelemetrySpan[]): TelemetryPluginMetrics[]\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-5023fd14970815a587dcccb552ede3cc"}