{"_id":"@cubetiqlabs/loggify-client","_rev":"5-6a8864e0f1857a0d3ebfb80cf6205546","name":"@cubetiqlabs/loggify-client","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@cubetiqlabs/loggify-client","version":"0.1.0","keywords":["loggify","logging","observability","tracing","sdk","typescript"],"license":"MIT","_id":"@cubetiqlabs/loggify-client@0.1.0","maintainers":[{"name":"sombochea","email":"sombochea100@gmail.com"}],"dist":{"shasum":"a44a5018437503875e2434347c66a1dcac7c478f","tarball":"https://registry.npmjs.org/@cubetiqlabs/loggify-client/-/loggify-client-0.1.0.tgz","fileCount":24,"integrity":"sha512-pnCHVaaZimOOIlyLqCu7fRvkuEFqiLQk1OSCfB7oRmh+XPiISp5YzEKIjNNbkZypl1xVG2CLh9sOYEMlpRYm+w==","signatures":[{"sig":"MEUCIQC6dd85DbK35QCUt8rIMl1w9VNn1wMPR6+i5QhEncRO8AIgGcz041Veoj60MG0zT2n2h4W4dR/QN1nfnXmn8VUtpQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30014},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"66e19d40b63c3ed170c906b81a956ce45313fb3f","scripts":{"lint":"prettier -c .","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","format":"prettier -w .","pretest":"npm run prebuild","lint:fix":"prettier -w .","prebuild":"node scripts/gen-version.cjs","test:watch":"vitest","prepublishOnly":"npm run prebuild && npm run build && npm run test"},"_npmUser":{"name":"sombochea","email":"sombochea100@gmail.com"},"_npmVersion":"10.9.3","description":"TypeScript client SDK for Loggify Server: reliable ingestion and tracing with batching, retries, and offline support.","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs,cts,mts,tsx,jsx,json,md,yml,yaml}":["prettier -w"]},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","lint-staged":"^16.1.6"},"_npmOperationalInternal":{"tmp":"tmp/loggify-client_0.1.0_1757131021122_0.25451474811529984","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cubetiqlabs/loggify-client","version":"0.1.1","keywords":["loggify","logging","observability","tracing","sdk","typescript"],"license":"MIT","_id":"@cubetiqlabs/loggify-client@0.1.1","maintainers":[{"name":"sombochea","email":"sombochea100@gmail.com"}],"dist":{"shasum":"651ff83b2293e031a75b02909d9018b995d5c1c3","tarball":"https://registry.npmjs.org/@cubetiqlabs/loggify-client/-/loggify-client-0.1.1.tgz","fileCount":24,"integrity":"sha512-MNRS6sbNIbvk957GMA+pIpLASpoMbwObh3VGWVjyXTDjbFkBfEiKID1ODcIgoZfed8DOzNmliIvsVZnWBzIfXQ==","signatures":[{"sig":"MEUCIF1BDpoCA3bquZjVxG1o52K1trMxfjg37u28w4vK+Kz0AiEAlbfGho0/gqipTUI2GgPAbIW3zM8YjoVFRaCV04SswFs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35753},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0ed523ddb512f7183c72cd38e0a1537325beac5c","scripts":{"lint":"prettier -c .","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","format":"prettier -w .","pretest":"npm run prebuild","lint:fix":"prettier -w .","prebuild":"node scripts/gen-version.cjs","test:watch":"vitest","prepublishOnly":"npm run prebuild && npm run build && npm run test"},"_npmUser":{"name":"sombochea","email":"sombochea100@gmail.com"},"_npmVersion":"10.9.3","description":"TypeScript client SDK for Loggify Server: reliable ingestion and tracing with batching, retries, and offline support.","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs,cts,mts,tsx,jsx,json,md,yml,yaml}":["prettier -w"]},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","lint-staged":"^16.1.6"},"_npmOperationalInternal":{"tmp":"tmp/loggify-client_0.1.1_1757134010939_0.26638431413897967","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cubetiqlabs/loggify-client","version":"0.1.2","keywords":["loggify","logging","observability","tracing","sdk","typescript"],"license":"MIT","_id":"@cubetiqlabs/loggify-client@0.1.2","maintainers":[{"name":"sombochea","email":"sombochea100@gmail.com"}],"dist":{"shasum":"29943fd1337e2ddaf3165c2215d2cfc0f8083983","tarball":"https://registry.npmjs.org/@cubetiqlabs/loggify-client/-/loggify-client-0.1.2.tgz","fileCount":24,"integrity":"sha512-0+kKak53XigBMZq5qpOriNbZdQxQa2hAT4UBdHzOuZ3Zgf6LYr6uJuNU1ZSecVvxTg/5Ei0DEqAra9ga4nXhwg==","signatures":[{"sig":"MEUCICnFE1MRqFRK2TuoHs+H3vJxW3bqsMXy4vOYlstzIDxxAiEAs63Nk4Eqv89qHekjZwCNfuqAR3V00M96748RU4tcikE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37438},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"133b3c7b40db7291d0875dc18d4024c4185e9a39","scripts":{"lint":"prettier -c .","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","format":"prettier -w .","pretest":"npm run prebuild","lint:fix":"prettier -w .","prebuild":"node scripts/gen-version.cjs","test:watch":"vitest","prepublishOnly":"npm run prebuild && npm run build && npm run test"},"_npmUser":{"name":"sombochea","email":"sombochea100@gmail.com"},"_npmVersion":"10.9.3","description":"TypeScript client SDK for Loggify Server: reliable ingestion and tracing with batching, retries, and offline support.","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs,cts,mts,tsx,jsx,json,md,yml,yaml}":["prettier -w"]},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","lint-staged":"^16.1.6"},"_npmOperationalInternal":{"tmp":"tmp/loggify-client_0.1.2_1757137254796_0.9090421261641419","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cubetiqlabs/loggify-client","version":"0.1.3","keywords":["loggify","logging","observability","tracing","sdk","typescript"],"license":"MIT","_id":"@cubetiqlabs/loggify-client@0.1.3","maintainers":[{"name":"sombochea","email":"sombochea100@gmail.com"}],"dist":{"shasum":"24a6b571e45966cbed79be0ea40b27170c53c378","tarball":"https://registry.npmjs.org/@cubetiqlabs/loggify-client/-/loggify-client-0.1.3.tgz","fileCount":32,"integrity":"sha512-8qi2PjywaG9zfYNtz8QNOnp8W9l3e/RhUo3D+zeO61N0FuPsRUbHL8p38ysMMwUR8ktGdpEwekZqJzhTAUqQ7A==","signatures":[{"sig":"MEUCIQDknT2hP5r095QHQwC5ru3AWs6F0jmxk7ZR/GF7w+eTzgIgSbtMmYy7Hc4v7YDginybHOcdc8GYYxziZ5E9mt3gP9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56864},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","browser":{"./dist/persistence/node_wal.js":"./dist/persistence/node_wal.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js","require":"./dist/node.js"}},"gitHead":"97574833868c6522696ed7d66ec0c22cf2992f04","scripts":{"lint":"prettier -c .","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","format":"prettier -w .","pretest":"npm run prebuild","lint:fix":"prettier -w .","prebuild":"node scripts/gen-version.cjs","test:watch":"vitest","prepublishOnly":"npm run prebuild && npm run build && npm run test"},"_npmUser":{"name":"sombochea","email":"sombochea100@gmail.com"},"_npmVersion":"10.9.3","description":"TypeScript client SDK for Loggify Server: reliable ingestion and tracing with batching, retries, and offline support.","directories":{},"lint-staged":{"*.{ts,js,mjs,cjs,cts,mts,tsx,jsx,json,md,yml,yaml}":["prettier -w"]},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67","devDependencies":{"husky":"^9.1.7","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.1","lint-staged":"^16.1.6"},"_npmOperationalInternal":{"tmp":"tmp/loggify-client_0.1.3_1757402567387_0.7052463316784909","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@cubetiqlabs/loggify-client","version":"0.1.4","description":"TypeScript client SDK for Loggify Server: reliable ingestion and tracing with batching, retries, and offline support.","type":"module","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","sideEffects":false,"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js","require":"./dist/node.js"}},"browser":{"./dist/persistence/node_wal.js":"./dist/persistence/node_wal.browser.js"},"scripts":{"prebuild":"node scripts/gen-version.cjs","pretest":"npm run prebuild","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run prebuild && npm run build && npm run test","format":"prettier -w .","lint":"prettier -c .","lint:fix":"prettier -w ."},"devDependencies":{"@types/node":"^24.3.1","husky":"^9.1.7","lint-staged":"^16.1.6","prettier":"^3.6.2","typescript":"^5.9.2","vitest":"^3.2.4"},"lint-staged":{"*.{ts,js,mjs,cjs,cts,mts,tsx,jsx,json,md,yml,yaml}":["prettier -w"]},"keywords":["loggify","logging","observability","tracing","sdk","typescript"],"license":"MIT","packageManager":"pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67","_id":"@cubetiqlabs/loggify-client@0.1.4","gitHead":"47b5154649f07f993243865000fc78a91ea9fc8f","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-F2agelF0Er2Un9ywXKDYHFyhHkAKMlNiuHmGozOZFzvnJnJgbMf4KT8PTlS+G2krCFAdo4Ez9zTazOm2OnzrhQ==","shasum":"08ede29241345e2cff54b1d979664b3977f546f0","tarball":"https://registry.npmjs.org/@cubetiqlabs/loggify-client/-/loggify-client-0.1.4.tgz","fileCount":32,"unpackedSize":59699,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIATV9p0Ebbo0qUHGeQpVzFsbZJtvda5PpbD0eNuIdRoYAiAAgSXY3xlFKJIsHRjNlbG6WdBcEfdupkwCsv+0hsL7JQ=="}]},"_npmUser":{"name":"sombochea","email":"sombochea100@gmail.com"},"directories":{},"maintainers":[{"name":"sombochea","email":"sombochea100@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/loggify-client_0.1.4_1757468822320_0.861145172458124"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-06T03:57:00.984Z","modified":"2025-09-10T01:47:02.746Z","0.1.0":"2025-09-06T03:57:01.334Z","0.1.1":"2025-09-06T04:46:51.128Z","0.1.2":"2025-09-06T05:40:54.974Z","0.1.3":"2025-09-09T07:22:47.654Z","0.1.4":"2025-09-10T01:47:02.513Z"},"license":"MIT","keywords":["loggify","logging","observability","tracing","sdk","typescript"],"description":"TypeScript client SDK for Loggify Server: reliable ingestion and tracing with batching, retries, and offline support.","maintainers":[{"name":"sombochea","email":"sombochea100@gmail.com"}],"readme":"# Loggify Client SDK\n\nA clean, reliable, and secure TypeScript SDK for Loggify Server. Works in Node.js and modern browsers (React, Next.js, NestJS, etc.).\n\n## Features\n\n- Ingest single or bulk events (tracing-friendly)\n- Offline/slow network resilience with queue + retry + backoff\n- Low memory footprint with bounded queue and batch size\n- Optional HMAC request signing, Bearer token and API key headers\n\n## Install\n\n```bash\nnpm install @cubetiqlabs/loggify-client\n```\n\n## Quick start\n\n```ts\nimport { LoggifyClient, createLoggifyClient } from '@cubetiqlabs/loggify-client';\n\nconst client = new LoggifyClient({\n  baseUrl: 'https://logs.example.com',\n  authToken: 'your-jwt',\n  source: 'web-app',\n  maxBatchSize: 100,\n  flushIntervalMs: 1000,\n  signWithHmac: { secret: 'shared-secret', header: 'X-Signature' },\n});\n\nclient.ingest({\n  level: 'info',\n  message: 'User login',\n  metadata: { user_id: '123' },\n});\n\n// flush pending events before exit\nawait client.flush();\n```\n\n### Optional: durable persistence with one line\n\nUse a convenience factory that auto-selects the best persistence backend (Node WAL in Node.js, IndexedDB in browsers):\n\n```ts\nimport { createLoggifyClient } from '@cubetiqlabs/loggify-client';\n\nconst client = await createLoggifyClient({\n  baseUrl: 'https://logs.example.com',\n  source: 'my-app',\n  persistence: 'auto', // or true, 'node-wal', 'indexeddb'\n});\n\nclient.ingest('hello durable world');\n```\n\n## API\n\n- `new LoggifyClient(options)`\n  - `baseUrl` (required)\n  - `apiPath` (default `/ingest`)\n  - `bulkPath` (default `/ingest/bulk`)\n  - `authToken`, `apiKey` (optional)\n  - `source`, `tenantId` (optional defaults)\n  - `maxBatchSize`, `flushIntervalMs`, `maxQueueSize`\n  - `retryBaseDelayMs`, `retryMaxDelayMs`, `retryMaxAttempts`\n  - `signWithHmac: { secret, header? }`\n\n- `ingest(event)` – enqueue single event\n- `trace(event)` – alias to `ingest` for tracing events\n- `flush()` – force flush the queue\n  - If persistence is enabled, flush will drain persisted events first, then in-memory queue\n\n## Security\n\n- Optional HMAC signing header with timestamp and nonce\n- Always uses HTTPS in production environments\n- Sensitive values should not be embedded directly in browser apps; prefer server-side token issuance\n\n## Notes\n\n- For Next.js/React: this SDK works client-side; for critical paths, consider sending through a server route to keep secrets server-side.\n- For NestJS/Node: use directly in services to collect logs/traces.\n\n## Tracing: spans with timed steps\n\nCreate a span to trace a transaction and measure step durations:\n\n```ts\nimport { LoggifyClient } from '@cubetiqlabs/loggify-client';\n\nconst client = new LoggifyClient({\n  baseUrl: 'http://localhost:8080',\n  apiKey: 'key_abc',\n  source: 'app',\n});\n\nconst span = client.tracer('do spanning transactions').start();\n\n// Do something with long operations\nconst step1 = span.ingest('Heavy operation executing', { name: 'Test', opts: 100 });\n// ... your long task\nstep1.completed(); // snapshot duration\n\n// Immediate event inside the span\nspan.ingest({\n  level: 'info',\n  source: 'app',\n  message: 'Hello from other operation',\n  metadata: { user_id: '123' },\n});\n\n// Finish the span and emit a summary event with timings and steps\nspan.finish();\n```\n\nOptions:\n\n- `client.tracer(name, { traceId, spanId, parentSpanId, attributes, autoIngestSteps, stepEventLevel, stepErrorLevel, includeStepsInSpanEvent, minStepDurationMs, bufferSteps })`\n- `step.completed({ error: true })` flags the step and elevates the span status/level.\n- `autoIngestSteps: false` disables immediate step events (summary still emitted).\n- `minStepDurationMs` emits only slow steps (errors always emitted).\n- `bufferSteps: true` holds step events until `finish()`.\n","readmeFilename":"README.md"}