{"_id":"@alertsamurai/sdk-js","_rev":"5-f8b2e5a5c9cd0491a66a5059b830bae1","name":"@alertsamurai/sdk-js","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"@alertsamurai/sdk-js","version":"0.0.1","keywords":["alertsamurai","monitoring","metrics","alerting","observability"],"author":"","license":"MIT","_id":"@alertsamurai/sdk-js@0.0.1","maintainers":[{"name":"bearlogin","email":"bearlogin@mail.ru"}],"dist":{"shasum":"89ae0e0289449e927152d14271a456e4fe71c332","tarball":"https://registry.npmjs.org/@alertsamurai/sdk-js/-/sdk-js-0.0.1.tgz","fileCount":6,"integrity":"sha512-oYtX7wsDPCL2NOh5jG0AsvtAyDg9494Fpoz1KzGp4C2SAYnJ/QnzA3d0zQgj03U2QWvoo/VKwhPiH9IY2JPYyw==","signatures":[{"sig":"MEQCICKY3nBbVAZ3+WIJbzRx+ofFaPA1IKo3xWStQh3NTBpDAiBKvwfTRcopIbyvlN8BQRBbmbYylQg0AunQxQB1bdfmxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33430},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ebdd47d629b41d4090727ac682edd6a054474154","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts","prepublishOnly":"npm run build"},"_npmUser":{"name":"bearlogin","email":"bearlogin@mail.ru"},"_npmVersion":"10.9.2","description":"TypeScript SDK for AlertSamurai metrics and alerting","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.0.1_1766328528404_0.8546092806061896","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@alertsamurai/sdk-js","version":"0.0.2","keywords":["alertsamurai","monitoring","metrics","alerting","observability"],"author":"","license":"MIT","_id":"@alertsamurai/sdk-js@0.0.2","maintainers":[{"name":"bearlogin","email":"bearlogin@mail.ru"}],"dist":{"shasum":"4452698fdad88844ff99011375c3c6da7ffff20a","tarball":"https://registry.npmjs.org/@alertsamurai/sdk-js/-/sdk-js-0.0.2.tgz","fileCount":6,"integrity":"sha512-1mvwYqT39rxgmz/0Y3NwZVVpBqhuuttSouF0vuColXpjDNxwAMYqSSkW9PV4+76I+1cojyz0AxqEY1EUfPe+Mw==","signatures":[{"sig":"MEQCIEaKAn5wnMjxbkWPJJO9Ecx/Ajwdhnm1oiJpLX+0aGhuAiBb4nXcN3R5cLznpQWeFDQxgDuTpWtx7v6r1B8TcYK/Gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33437},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ebdd47d629b41d4090727ac682edd6a054474154","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts","prepublishOnly":"npm run build"},"_npmUser":{"name":"bearlogin","email":"bearlogin@mail.ru"},"_npmVersion":"10.9.2","description":"TypeScript SDK for AlertSamurai metrics and alerting","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.0.2_1766328637773_0.23862112677798986","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@alertsamurai/sdk-js","version":"0.0.3","keywords":["alertsamurai","monitoring","metrics","alerting","observability"],"author":"","license":"MIT","_id":"@alertsamurai/sdk-js@0.0.3","maintainers":[{"name":"bearlogin","email":"bearlogin@mail.ru"}],"dist":{"shasum":"ab714f9e54ed4cada81a59718d93bc415f9430b5","tarball":"https://registry.npmjs.org/@alertsamurai/sdk-js/-/sdk-js-0.0.3.tgz","fileCount":6,"integrity":"sha512-lfKn16/ZoXlo5CmHhu1gxuPkpriaP9oRnkgZFquAGaG/qQ2N8CynHOnZrd+iOHTuh7nPQeJTVdlenbM8FQe7iQ==","signatures":[{"sig":"MEQCIE/oSWBSHle5pWWS06nXsV/1SpopaxBi0wmnDLRZ3DARAiB9o0QWzX5CPG1a2HTB/UFnU77lS+oU+3WGoU/GOgL8GA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33440},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ebdd47d629b41d4090727ac682edd6a054474154","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts","prepublishOnly":"npm run build"},"_npmUser":{"name":"bearlogin","email":"bearlogin@mail.ru"},"_npmVersion":"10.9.2","description":"TypeScript SDK for AlertSamurai metrics and alerting","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.0.3_1766328675527_0.9469360681092869","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@alertsamurai/sdk-js","version":"0.0.5","keywords":["alertsamurai","monitoring","metrics","alerting","observability"],"author":"","license":"MIT","_id":"@alertsamurai/sdk-js@0.0.5","maintainers":[{"name":"bearlogin","email":"bearlogin@mail.ru"}],"dist":{"shasum":"bd224b059aa73708a8937bb1dd857f4afa7fb450","tarball":"https://registry.npmjs.org/@alertsamurai/sdk-js/-/sdk-js-0.0.5.tgz","fileCount":6,"integrity":"sha512-r1mPdjFWYIOsA71J1a05b7Csul8VaixubCRI1txaQYvM+JkCU824n+1a7LbvRHSTnyUigA4WR6C/lE+PrMWbAg==","signatures":[{"sig":"MEQCIBmfXVtzOJ4cMBX0xnWDcEui/US7Q/l2DnlwxKnrmKTJAiAI1PkFzp2qRhyOkM/CkKUvKseWG0R6q/RWNLJcMQDkgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37664},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ebdd47d629b41d4090727ac682edd6a054474154","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup src/index.ts --format cjs,esm --dts","prepublishOnly":"npm run build"},"_npmUser":{"name":"bearlogin","email":"bearlogin@mail.ru"},"_npmVersion":"10.9.2","description":"TypeScript SDK for AlertSamurai metrics and alerting","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.0.5_1766328938555_0.012824817178458181","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@alertsamurai/sdk-js","version":"0.0.6","description":"TypeScript SDK for AlertSamurai metrics and alerting","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format cjs,esm --dts --watch","test":"vitest","lint":"eslint src --ext .ts","prepublishOnly":"npm run build"},"keywords":["alertsamurai","monitoring","metrics","alerting","observability"],"author":"","license":"MIT","devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0","vitest":"^1.0.0"},"engines":{"node":">=18.0.0"},"_id":"@alertsamurai/sdk-js@0.0.6","gitHead":"c29904365292fc5dba157ba41ca8824f876fa3aa","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-3HRR4Qzov716+f/CsmN15ouwehmKgnrMyZxJ2aXw7T0MebLgJnoH1hPp+Y7anTl48czuz79ANitvNo/u+psGEg==","shasum":"4a90d86c3666e0c660644946687fde6dbc9146cd","tarball":"https://registry.npmjs.org/@alertsamurai/sdk-js/-/sdk-js-0.0.6.tgz","fileCount":6,"unpackedSize":38312,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDgXG3v8l6n8p9EnEaZDP22mJmIO5jTA3dXJOktVgbJDgIgWren8iQ1t3DvAy7T+ZOwDqgQ7yoYgoxT/iWdJ/TNo/A="}]},"_npmUser":{"name":"bearlogin","email":"bearlogin@mail.ru"},"directories":{},"maintainers":[{"name":"bearlogin","email":"bearlogin@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-js_0.0.6_1766391670317_0.6987772410364408"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-21T14:48:48.335Z","modified":"2025-12-22T08:21:10.672Z","0.0.1":"2025-12-21T14:48:48.570Z","0.0.2":"2025-12-21T14:50:37.935Z","0.0.3":"2025-12-21T14:51:15.692Z","0.0.5":"2025-12-21T14:55:38.714Z","0.0.6":"2025-12-22T08:21:10.452Z"},"license":"MIT","keywords":["alertsamurai","monitoring","metrics","alerting","observability"],"description":"TypeScript SDK for AlertSamurai metrics and alerting","maintainers":[{"name":"bearlogin","email":"bearlogin@mail.ru"}],"readme":"# @alertsamurai/sdk\n\nTypeScript SDK for AlertSamurai metrics and alerting.\n\n## Installation\n\n```bash\nnpm install @alertsamurai/sdk-js\n\n```\n\n## Quick Start\n\n```typescript\nimport { AlertSamuraiClient } from \"@alertsamurai/sdk-js\";\n\nconst client = new AlertSamuraiClient({\n  dsn: \"your-project-dsn\",\n});\n\n// Send a metric\nawait client.sendMetric({\n  metricType: \"photo_upload_speed\",\n  value: 2.5,\n  unit: \"MB/s\",\n  environment: \"production\",\n});\n\n// Send an alert\nawait client.sendAlert({\n  message: \"Database connection failed\",\n  priority: \"critical\",\n  environment: \"production\",\n});\n\n// Convenience methods\nawait client.critical(\"Server down!\");\nawait client.error(\"Failed to process payment\");\nawait client.warning(\"High memory usage\");\nawait client.info(\"User signed in\");\nawait client.debug(\"Cache miss for key: xyz\");\n```\n\n## Configuration\n\n```typescript\nconst client = new AlertSamuraiClient({\n  dsn: \"your-dsn\", // Required - found in project settings\n  baseUrl: \"https://...\", // Optional, default: api.alertsamurai.com\n  timeout: 30000, // Optional, default: 30s\n  retries: 3, // Optional, default: 3\n});\n```\n\n## Metrics API\n\nSend custom metrics for tracking and threshold-based alerting.\n\n```typescript\nawait client.sendMetric({\n  metricType: \"photo_upload_speed\", // Required - metric name\n  value: 2.5, // Required - numeric value\n  unit: \"MB/s\", // Optional - unit of measurement\n  environment: \"production\", // Optional - environment name\n  metadata: {\n    // Optional - additional context\n    userId: \"123\",\n    endpoint: \"/api/upload\",\n  },\n  timestamp: new Date(), // Optional - defaults to now\n});\n```\n\n### Threshold-Based Alerts\n\nConfigure metric alerts in your AlertSamurai dashboard. When a metric exceeds a threshold (e.g., `photo_upload_speed < 1 MB/s`), you'll receive a notification via Telegram.\n\n## Alerts API\n\nSend application alerts with priority levels.\n\n```typescript\nawait client.sendAlert({\n  message: \"Database connection failed\", // Required - alert message\n  priority: \"critical\", // Required - critical|error|warning|info|debug\n  environment: \"production\", // Optional - environment name\n  data: {\n    // Optional - additional context\n    errorCode: \"ECONNREFUSED\",\n    retryCount: 3,\n  },\n});\n```\n\n### Convenience Methods\n\n```typescript\n// These methods send alerts with the specified priority\nawait client.critical(\"Server down!\"); // priority: \"critical\"\nawait client.error(\"Failed to process payment\"); // priority: \"error\"\nawait client.warning(\"High memory usage\"); // priority: \"warning\"\nawait client.info(\"User signed in\"); // priority: \"info\"\nawait client.debug(\"Cache miss\"); // priority: \"debug\"\n\n// With additional data\nawait client.error(\"Payment failed\", {\n  orderId: \"12345\",\n  errorCode: \"INSUFFICIENT_FUNDS\",\n});\n```\n\n## Error Handling\n\nThe SDK provides typed errors for different failure scenarios:\n\n```typescript\nimport {\n  AlertSamuraiClient,\n  AlertSamuraiError,\n  AuthenticationError,\n  ValidationError,\n  NetworkError,\n} from \"@alertsamurai/sdk\";\n\ntry {\n  await client.sendMetric({ metricType: \"test\", value: 123 });\n} catch (error) {\n  if (error instanceof AuthenticationError) {\n    // Invalid or missing DSN (401)\n    console.error(\"Authentication failed:\", error.message);\n  } else if (error instanceof ValidationError) {\n    // Invalid request data (400)\n    console.error(\"Validation failed:\", error.message);\n  } else if (error instanceof NetworkError) {\n    // Network failure, timeout, etc.\n    console.error(\"Network error:\", error.message);\n  } else if (error instanceof AlertSamuraiError) {\n    // Other API errors\n    console.error(\"API error:\", error.message, error.statusCode);\n  }\n}\n```\n\n## Retry Logic\n\nThe SDK automatically retries failed requests with exponential backoff:\n\n- Default: 3 retries\n- Backoff: 1s, 2s, 4s (capped at 10s)\n- **Does not retry** on authentication (401) or validation (400) errors\n\nConfigure retries:\n\n```typescript\nconst client = new AlertSamuraiClient({\n  dsn: \"your-dsn\",\n  retries: 5, // More retries\n  timeout: 60000, // Longer timeout\n});\n```\n\n## TypeScript Support\n\nThe SDK is written in TypeScript and includes full type definitions:\n\n```typescript\nimport type {\n  AlertSamuraiConfig,\n  SendMetricOptions,\n  SendMetricResponse,\n  SendAlertOptions,\n  SendAlertResponse,\n  AlertPriority,\n} from \"@alertsamurai/sdk-js\";\n\nconst options: SendMetricOptions = {\n  metricType: \"api_latency\",\n  value: 150,\n  unit: \"ms\",\n};\n\nconst priority: AlertPriority = \"warning\";\n```\n\n## Requirements\n\n- Node.js 18+ (for native `fetch` support) or browser environment\n- Or any environment with a global `fetch` implementation\n\n## License\n\nMIT\n","readmeFilename":"README.md"}