New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

sensorcore

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sensorcore - npm Package Compare versions

Comparing version
1.1.0
to
1.1.1
+16
dist/cjs/SensorCoreDeviceId.d.ts
/**
* Returns the persistent device ID, generating one if it doesn't exist.
*
* The ID is cached in memory for the duration of the process / page,
* so repeated calls are O(1) after the first one.
*/
export declare function getDeviceId(): string;
/**
* Clear the stored device ID. A new one will be generated on the next
* call to `getDeviceId()`.
*
* Use this on user logout to ensure the next anonymous session gets
* a fresh identifier.
*/
export declare function resetDeviceId(): void;
//# sourceMappingURL=SensorCoreDeviceId.d.ts.map
{"version":3,"file":"SensorCoreDeviceId.d.ts","sourceRoot":"","sources":["../../src/SensorCoreDeviceId.ts"],"names":[],"mappings":"AAoKA;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAmBpC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAOpC"}
"use strict";
// ---------------------------------------------------------------------------
// SensorCoreDeviceId
// ---------------------------------------------------------------------------
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDeviceId = getDeviceId;
exports.resetDeviceId = resetDeviceId;
/**
* Generates and persists a device-level anonymous UUID.
*
* Used as a fallback `user_id` when no explicit ID is provided via
* `defaultUserId` or per-call `userId`. This ensures every log entry
* has a `user_id` — required for user-centric analytics tools.
*
* ## Storage
* - **Browser**: `localStorage` (key: `sensorcore_device_id`)
* - **Node.js**: `~/.sensorcore/device_id` (plain text file)
*
* ## Lifecycle
* - Persists across page reloads / app restarts
* - Cleared on `localStorage.clear()` (browser) or file deletion (Node)
* - Call `resetDeviceId()` on logout to generate a new ID next access
*
* ## Priority
* ```
* per-call userId > config.defaultUserId > auto device ID
* ```
*/
const STORAGE_KEY = 'sensorcore_device_id';
const isBrowser = typeof globalThis !== 'undefined' &&
typeof globalThis.localStorage !== 'undefined';
/** Cached ID — avoids repeated storage reads during a single session. */
let cachedId = null;
// ---------------------------------------------------------------------------
// UUID v4 generation
// ---------------------------------------------------------------------------
/**
* Generate a UUID v4 string.
* Uses `crypto.randomUUID()` when available (modern browsers, Node 19+),
* falls back to `crypto.getRandomValues()` for Node 18.
*/
function generateUUID() {
// Modern path — available in all modern browsers and Node 19+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
return crypto.randomUUID();
}
// Fallback — Node 18 has crypto.getRandomValues but not randomUUID
if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {
const bytes = new Uint8Array(16);
crypto.getRandomValues(bytes);
// Set version (4) and variant (RFC 4122)
bytes[6] = (bytes[6] & 0x0f) | 0x40;
bytes[8] = (bytes[8] & 0x3f) | 0x80;
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
return [
hex.slice(0, 8),
hex.slice(8, 12),
hex.slice(12, 16),
hex.slice(16, 20),
hex.slice(20, 32),
].join('-');
}
// Last resort — Math.random (not cryptographically secure, but functional)
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
const r = (Math.random() * 16) | 0;
return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
});
}
// ---------------------------------------------------------------------------
// Browser storage
// ---------------------------------------------------------------------------
function readBrowser() {
try {
return localStorage.getItem(STORAGE_KEY);
}
catch {
return null;
}
}
function writeBrowser(id) {
try {
localStorage.setItem(STORAGE_KEY, id);
}
catch {
// localStorage unavailable or quota exceeded — ID still cached in memory
}
}
function clearBrowser() {
try {
localStorage.removeItem(STORAGE_KEY);
}
catch {
// ignore
}
}
// ---------------------------------------------------------------------------
// Node.js storage
// ---------------------------------------------------------------------------
let nodeFs = null;
let nodeFilePath = null;
let nodeInitialised = false;
function initNode() {
if (nodeInitialised)
return nodeFs !== null;
nodeInitialised = true;
try {
const fs = require('node:fs');
const path = require('node:path');
const os = require('node:os');
nodeFs = fs;
const dir = path.join(os.homedir(), '.sensorcore');
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
nodeFilePath = path.join(dir, 'device_id');
return true;
}
catch {
return false;
}
}
function readNode() {
if (!initNode() || !nodeFilePath)
return null;
try {
if (!nodeFs.existsSync(nodeFilePath))
return null;
const raw = nodeFs.readFileSync(nodeFilePath, 'utf-8').trim();
return raw || null;
}
catch {
return null;
}
}
function writeNode(id) {
if (!initNode() || !nodeFilePath)
return;
try {
nodeFs.writeFileSync(nodeFilePath, id, 'utf-8');
}
catch {
// ignore — ID still cached in memory
}
}
function clearNode() {
if (!initNode() || !nodeFilePath)
return;
try {
if (nodeFs.existsSync(nodeFilePath)) {
nodeFs.unlinkSync(nodeFilePath);
}
}
catch {
// ignore
}
}
// ---------------------------------------------------------------------------
// Public API
// ---------------------------------------------------------------------------
/**
* Returns the persistent device ID, generating one if it doesn't exist.
*
* The ID is cached in memory for the duration of the process / page,
* so repeated calls are O(1) after the first one.
*/
function getDeviceId() {
if (cachedId)
return cachedId;
// Try to load from storage
const stored = isBrowser ? readBrowser() : readNode();
if (stored) {
cachedId = stored;
return stored;
}
// Generate and persist
const id = generateUUID();
cachedId = id;
if (isBrowser) {
writeBrowser(id);
}
else {
writeNode(id);
}
return id;
}
/**
* Clear the stored device ID. A new one will be generated on the next
* call to `getDeviceId()`.
*
* Use this on user logout to ensure the next anonymous session gets
* a fresh identifier.
*/
function resetDeviceId() {
cachedId = null;
if (isBrowser) {
clearBrowser();
}
else {
clearNode();
}
}
//# sourceMappingURL=SensorCoreDeviceId.js.map
{"version":3,"file":"SensorCoreDeviceId.js","sourceRoot":"","sources":["../../src/SensorCoreDeviceId.ts"],"names":[],"mappings":"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"}
/**
* Returns the persistent device ID, generating one if it doesn't exist.
*
* The ID is cached in memory for the duration of the process / page,
* so repeated calls are O(1) after the first one.
*/
export declare function getDeviceId(): string;
/**
* Clear the stored device ID. A new one will be generated on the next
* call to `getDeviceId()`.
*
* Use this on user logout to ensure the next anonymous session gets
* a fresh identifier.
*/
export declare function resetDeviceId(): void;
//# sourceMappingURL=SensorCoreDeviceId.d.ts.map
{"version":3,"file":"SensorCoreDeviceId.d.ts","sourceRoot":"","sources":["../../src/SensorCoreDeviceId.ts"],"names":[],"mappings":"AAoKA;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAmBpC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAOpC"}
// ---------------------------------------------------------------------------
// SensorCoreDeviceId
// ---------------------------------------------------------------------------
/**
* Generates and persists a device-level anonymous UUID.
*
* Used as a fallback `user_id` when no explicit ID is provided via
* `defaultUserId` or per-call `userId`. This ensures every log entry
* has a `user_id` — required for user-centric analytics tools.
*
* ## Storage
* - **Browser**: `localStorage` (key: `sensorcore_device_id`)
* - **Node.js**: `~/.sensorcore/device_id` (plain text file)
*
* ## Lifecycle
* - Persists across page reloads / app restarts
* - Cleared on `localStorage.clear()` (browser) or file deletion (Node)
* - Call `resetDeviceId()` on logout to generate a new ID next access
*
* ## Priority
* ```
* per-call userId > config.defaultUserId > auto device ID
* ```
*/
const STORAGE_KEY = 'sensorcore_device_id';
const isBrowser = typeof globalThis !== 'undefined' &&
typeof globalThis.localStorage !== 'undefined';
/** Cached ID — avoids repeated storage reads during a single session. */
let cachedId = null;
// ---------------------------------------------------------------------------
// UUID v4 generation
// ---------------------------------------------------------------------------
/**
* Generate a UUID v4 string.
* Uses `crypto.randomUUID()` when available (modern browsers, Node 19+),
* falls back to `crypto.getRandomValues()` for Node 18.
*/
function generateUUID() {
// Modern path — available in all modern browsers and Node 19+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
return crypto.randomUUID();
}
// Fallback — Node 18 has crypto.getRandomValues but not randomUUID
if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {
const bytes = new Uint8Array(16);
crypto.getRandomValues(bytes);
// Set version (4) and variant (RFC 4122)
bytes[6] = (bytes[6] & 0x0f) | 0x40;
bytes[8] = (bytes[8] & 0x3f) | 0x80;
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
return [
hex.slice(0, 8),
hex.slice(8, 12),
hex.slice(12, 16),
hex.slice(16, 20),
hex.slice(20, 32),
].join('-');
}
// Last resort — Math.random (not cryptographically secure, but functional)
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
const r = (Math.random() * 16) | 0;
return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
});
}
// ---------------------------------------------------------------------------
// Browser storage
// ---------------------------------------------------------------------------
function readBrowser() {
try {
return localStorage.getItem(STORAGE_KEY);
}
catch {
return null;
}
}
function writeBrowser(id) {
try {
localStorage.setItem(STORAGE_KEY, id);
}
catch {
// localStorage unavailable or quota exceeded — ID still cached in memory
}
}
function clearBrowser() {
try {
localStorage.removeItem(STORAGE_KEY);
}
catch {
// ignore
}
}
// ---------------------------------------------------------------------------
// Node.js storage
// ---------------------------------------------------------------------------
let nodeFs = null;
let nodeFilePath = null;
let nodeInitialised = false;
function initNode() {
if (nodeInitialised)
return nodeFs !== null;
nodeInitialised = true;
try {
const fs = require('node:fs');
const path = require('node:path');
const os = require('node:os');
nodeFs = fs;
const dir = path.join(os.homedir(), '.sensorcore');
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
nodeFilePath = path.join(dir, 'device_id');
return true;
}
catch {
return false;
}
}
function readNode() {
if (!initNode() || !nodeFilePath)
return null;
try {
if (!nodeFs.existsSync(nodeFilePath))
return null;
const raw = nodeFs.readFileSync(nodeFilePath, 'utf-8').trim();
return raw || null;
}
catch {
return null;
}
}
function writeNode(id) {
if (!initNode() || !nodeFilePath)
return;
try {
nodeFs.writeFileSync(nodeFilePath, id, 'utf-8');
}
catch {
// ignore — ID still cached in memory
}
}
function clearNode() {
if (!initNode() || !nodeFilePath)
return;
try {
if (nodeFs.existsSync(nodeFilePath)) {
nodeFs.unlinkSync(nodeFilePath);
}
}
catch {
// ignore
}
}
// ---------------------------------------------------------------------------
// Public API
// ---------------------------------------------------------------------------
/**
* Returns the persistent device ID, generating one if it doesn't exist.
*
* The ID is cached in memory for the duration of the process / page,
* so repeated calls are O(1) after the first one.
*/
export function getDeviceId() {
if (cachedId)
return cachedId;
// Try to load from storage
const stored = isBrowser ? readBrowser() : readNode();
if (stored) {
cachedId = stored;
return stored;
}
// Generate and persist
const id = generateUUID();
cachedId = id;
if (isBrowser) {
writeBrowser(id);
}
else {
writeNode(id);
}
return id;
}
/**
* Clear the stored device ID. A new one will be generated on the next
* call to `getDeviceId()`.
*
* Use this on user logout to ensure the next anonymous session gets
* a fresh identifier.
*/
export function resetDeviceId() {
cachedId = null;
if (isBrowser) {
clearBrowser();
}
else {
clearNode();
}
}
//# sourceMappingURL=SensorCoreDeviceId.js.map
{"version":3,"file":"SensorCoreDeviceId.js","sourceRoot":"","sources":["../../src/SensorCoreDeviceId.ts"],"names":[],"mappings":"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"}
+12
-0

@@ -80,2 +80,14 @@ import type { SensorCoreConfig } from './SensorCoreConfig.js';

private static prepareEntry;
/**
* The auto-generated device ID used as fallback when no explicit
* `userId` or `defaultUserId` is provided.
*
* Persisted in `localStorage` (browser) or `~/.sensorcore/device_id` (Node.js).
*/
static get deviceId(): string;
/**
* Reset the auto-generated device ID. A new one will be generated
* on the next log call. Call this on user logout.
*/
static resetDeviceId(): void;
}

@@ -82,0 +94,0 @@ export default SensorCore;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCore.d.ts","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,cAAM,UAAU;IAGZ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyC;IAE9D,kDAAkD;IAClD,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA2BhD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAMvD;;;;;;;;OAQG;WACU,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3E;;;;;OAKG;WACU,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAO5D,OAAO,CAAC,MAAM,CAAC,YAAY;CAa9B;AAED,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,CAAC"}
{"version":3,"file":"SensorCore.d.ts","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAOrE,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,cAAM,UAAU;IAGZ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyC;IAE9D,kDAAkD;IAClD,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA2BhD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAMvD;;;;;;;;OAQG;WACU,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3E;;;;;OAKG;WACU,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAO5D,OAAO,CAAC,MAAM,CAAC,YAAY;IAgB3B;;;;;OAKG;IACH,MAAM,KAAK,QAAQ,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;CAG/B;AAED,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,CAAC"}

@@ -9,2 +9,3 @@ "use strict";

const SensorCoreRemoteConfig_js_1 = require("./SensorCoreRemoteConfig.js");
const SensorCoreDeviceId_js_1 = require("./SensorCoreDeviceId.js");
// ---------------------------------------------------------------------------

@@ -68,3 +69,3 @@ // SensorCore — public facade (singleton)

` Host: ${resolved.host}\n` +
` User: ${resolved.defaultUserId ?? '(none)'}\n` +
` User: ${resolved.defaultUserId ?? 'auto:' + (0, SensorCoreDeviceId_js_1.getDeviceId)()}\n` +
` Timeout: ${resolved.timeout}ms`);

@@ -124,6 +125,23 @@ }

const level = options?.level ?? 'info';
const userId = options?.userId ?? config.defaultUserId;
const userId = options?.userId ?? config.defaultUserId ?? (0, SensorCoreDeviceId_js_1.getDeviceId)();
const entry = (0, SensorCoreEntry_js_1.createEntry)(content, level, userId, options?.metadata);
return { entry, client };
}
// -- Device ID --------------------------------------------------------------
/**
* The auto-generated device ID used as fallback when no explicit
* `userId` or `defaultUserId` is provided.
*
* Persisted in `localStorage` (browser) or `~/.sensorcore/device_id` (Node.js).
*/
static get deviceId() {
return (0, SensorCoreDeviceId_js_1.getDeviceId)();
}
/**
* Reset the auto-generated device ID. A new one will be generated
* on the next log call. Call this on user logout.
*/
static resetDeviceId() {
(0, SensorCoreDeviceId_js_1.resetDeviceId)();
}
}

@@ -130,0 +148,0 @@ exports.SensorCore = SensorCore;

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCore.js","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"SensorCore.js","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"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"}

@@ -79,2 +79,7 @@ import type { ResolvedSensorCoreConfig } from './SensorCoreConfig.js';

private activateCooldown;
/**
* Check if a 403 response body contains the server's `QUOTA_EXCEEDED` code.
* Uses `response.clone()` because the body can only be read once.
*/
private static isQuotaExceeded;
/** Reset the circuit breaker after a successful request. */

@@ -81,0 +86,0 @@ private resetCooldown;

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreClient.d.ts","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAgBrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAE/C,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAS;IAIzB,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAS;IAE5B,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAAK;IAE3B,oEAAoE;IACpE,OAAO,CAAC,cAAc,CAAK;IAE3B,0EAA0E;IAC1E,OAAO,CAAC,WAAW,CAAS;IAE5B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAA6B;gBAItC,MAAM,EAAE,wBAAwB;IA0B5C;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAYrC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAuB1D;;;OAGG;IACH,OAAO,IAAI,IAAI;IASf;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAaxB,4DAA4D;IAC5D,OAAO,CAAC,aAAa;IAUrB,mDAAmD;IACnD,OAAO,CAAC,aAAa;IAOrB,qDAAqD;YACvC,UAAU;IAuBxB;;OAEG;YACW,QAAQ;IAsBtB,6CAA6C;IAC7C,OAAO,CAAC,OAAO;IAiBf,2DAA2D;IACrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAuDtC"}
{"version":3,"file":"SensorCoreClient.d.ts","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAgBrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAE/C,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAS;IAIzB,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAS;IAE5B,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAAK;IAE3B,oEAAoE;IACpE,OAAO,CAAC,cAAc,CAAK;IAE3B,0EAA0E;IAC1E,OAAO,CAAC,WAAW,CAAS;IAE5B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAA6B;gBAItC,MAAM,EAAE,wBAAwB;IA0B5C;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAYrC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BzD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAuB1D;;;OAGG;IACH,OAAO,IAAI,IAAI;IASf;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;mBACkB,eAAe;IASpC,4DAA4D;IAC5D,OAAO,CAAC,aAAa;IAUrB,mDAAmD;IACnD,OAAO,CAAC,aAAa;IAOrB,qDAAqD;YACvC,UAAU;IAuBxB;;OAEG;YACW,QAAQ;IA2BtB,6CAA6C;IAC7C,OAAO,CAAC,OAAO;IAiBf,2DAA2D;IACrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CA+DtC"}

@@ -120,2 +120,6 @@ "use strict";

}
if (response.status === 403 && await SensorCoreClient.isQuotaExceeded(response)) {
this.activateCooldown('free-tier quota exceeded (HTTP 403). Upgrade at https://sensorcore.dev');
throw SensorCoreError_js_1.SensorCoreError.quotaExceeded();
}
if (!response.ok) {

@@ -177,3 +181,3 @@ throw SensorCoreError_js_1.SensorCoreError.serverError(response.status);

/** Activate the circuit breaker with exponential backoff. */
activateCooldown() {
activateCooldown(reason) {
const cooldownSec = COOLDOWN_STEPS[Math.min(this._cooldownIndex, COOLDOWN_STEPS.length - 1)];

@@ -184,5 +188,18 @@ this._isSilenced = true;

if (typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production') {
console.warn(`[SensorCore] ⚠️ HTTP 429 — rate limited. Logging paused for ${cooldownSec}s.`);
console.warn(`[SensorCore] ⚠️ ${reason ?? 'HTTP 429 — rate limited'}. Logging paused for ${cooldownSec}s.`);
}
}
/**
* Check if a 403 response body contains the server's `QUOTA_EXCEEDED` code.
* Uses `response.clone()` because the body can only be read once.
*/
static async isQuotaExceeded(response) {
try {
const body = await response.clone().json();
return body?.code === 'QUOTA_EXCEEDED';
}
catch {
return false;
}
}
/** Reset the circuit breaker after a successful request. */

@@ -238,6 +255,10 @@ resetCooldown() {

}
if (response.status === 403 && await SensorCoreClient.isQuotaExceeded(response)) {
this.activateCooldown('free-tier quota exceeded (HTTP 403). Upgrade at https://sensorcore.dev');
return true;
}
if (response.ok) {
this.resetCooldown();
}
// Non-2xx, non-429 → log dropped (matches iOS behaviour)
// Non-2xx, non-429, non-403-quota → log dropped (matches iOS behaviour)
}

@@ -298,2 +319,9 @@ catch {

}
if (response.status === 403 && await SensorCoreClient.isQuotaExceeded(response)) {
this.activateCooldown('free-tier quota exceeded (HTTP 403). Upgrade at https://sensorcore.dev');
for (let j = i; j < pending.length; j++) {
stillFailed.push(pending[j]);
}
break;
}
if (!response.ok) {

@@ -300,0 +328,0 @@ entry.retryCount += 1;

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreClient.js","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"SensorCoreClient.js","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"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"}

@@ -26,2 +26,9 @@ /**

* You can still override it per-call via `log('...', { userId: '...' })`.
*
* If omitted, the SDK auto-generates a persistent device-level UUID
* stored in `localStorage` (browser) or `~/.sensorcore/device_id` (Node.js).
* Call `SensorCore.resetDeviceId()` on user logout to generate a new one.
*
* **Priority:** per-call `userId` > `defaultUserId` > auto device ID
*
* @default undefined

@@ -28,0 +35,0 @@ */

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreConfig.d.ts","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAWhF"}
{"version":3,"file":"SensorCoreConfig.d.ts","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAWhF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreConfig.js","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":";;AAmFA,sCAWC;AA9FD;;GAEG;AACH,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AA+E7D,8CAA8C;AAC9C,SAAgB,aAAa,CAAC,MAAwB;IAClD,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,yBAAyB;QAC7F,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM;QACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QACnD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,GAAG;QAC5C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM;KACtD,CAAC;AACN,CAAC"}
{"version":3,"file":"SensorCoreConfig.js","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":";;AA0FA,sCAWC;AArGD;;GAEG;AACH,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAsF7D,8CAA8C;AAC9C,SAAgB,aAAa,CAAC,MAAwB;IAClD,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,yBAAyB;QAC7F,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM;QACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QACnD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,GAAG;QAC5C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM;KACtD,CAAC;AACN,CAAC"}

@@ -16,2 +16,3 @@ /**

* case 'rate_limited': break;
* case 'quota_exceeded': break;
* }

@@ -22,3 +23,3 @@ * }

*/
export type SensorCoreErrorCode = 'not_configured' | 'encoding_failed' | 'server_error' | 'network_error' | 'rate_limited';
export type SensorCoreErrorCode = 'not_configured' | 'encoding_failed' | 'server_error' | 'network_error' | 'rate_limited' | 'quota_exceeded';
/**

@@ -46,3 +47,4 @@ * Typed error thrown by {@link SensorCore.logAsync} and used internally.

static rateLimited(): SensorCoreError;
static quotaExceeded(): SensorCoreError;
}
//# sourceMappingURL=SensorCoreError.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreError.d.ts","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,mBAAmB,GACzB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,cAAc,CAAC;AAErB;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAEnC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAWtD,MAAM,CAAC,aAAa,IAAI,eAAe;IAOvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQtD,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAQvD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQpD,MAAM,CAAC,WAAW,IAAI,eAAe;CAMxC"}
{"version":3,"file":"SensorCoreError.d.ts","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,mBAAmB,GACzB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,cAAc,GACd,gBAAgB,CAAC;AAEvB;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAEnC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAWtD,MAAM,CAAC,aAAa,IAAI,eAAe;IAOvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQtD,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAQvD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQpD,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC,MAAM,CAAC,aAAa,IAAI,eAAe;CAO1C"}

@@ -40,4 +40,7 @@ "use strict";

}
static quotaExceeded() {
return new SensorCoreError('quota_exceeded', 'SensorCore free-tier quota exceeded (HTTP 403). Upgrade to Pro at https://sensorcore.dev', { statusCode: 403 });
}
}
exports.SensorCoreError = SensorCoreError;
//# sourceMappingURL=SensorCoreError.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreError.js","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":";;;AA2BA;;;;;GAKG;AACH,MAAa,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IAC1B,IAAI,CAAsB;IAEnC,sDAAsD;IAC7C,UAAU,CAAU;IAE7B,yEAAyE;IAChE,KAAK,CAAW;IAEzB,YACI,IAAyB,EACzB,OAAe,EACf,OAAkD;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAChC,CAAC;IAED,6EAA6E;IAE7E,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,eAAe,CACtB,gBAAgB,EAChB,qEAAqE,CACxE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAc;QAChC,OAAO,IAAI,eAAe,CACtB,iBAAiB,EACjB,+BAA+B,KAAK,EAAE,EACtC,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAkB;QACjC,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,wBAAwB,UAAU,EAAE,EACpC,EAAE,UAAU,EAAE,CACjB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAc;QAC9B,OAAO,IAAI,eAAe,CACtB,eAAe,EACf,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAClE,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,iEAAiE,CACpE,CAAC;IACN,CAAC;CACJ;AA7DD,0CA6DC"}
{"version":3,"file":"SensorCoreError.js","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":";;;AA6BA;;;;;GAKG;AACH,MAAa,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IAC1B,IAAI,CAAsB;IAEnC,sDAAsD;IAC7C,UAAU,CAAU;IAE7B,yEAAyE;IAChE,KAAK,CAAW;IAEzB,YACI,IAAyB,EACzB,OAAe,EACf,OAAkD;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAChC,CAAC;IAED,6EAA6E;IAE7E,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,eAAe,CACtB,gBAAgB,EAChB,qEAAqE,CACxE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAc;QAChC,OAAO,IAAI,eAAe,CACtB,iBAAiB,EACjB,+BAA+B,KAAK,EAAE,EACtC,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAkB;QACjC,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,wBAAwB,UAAU,EAAE,EACpC,EAAE,UAAU,EAAE,CACjB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAc;QAC9B,OAAO,IAAI,eAAe,CACtB,eAAe,EACf,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAClE,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,iEAAiE,CACpE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,eAAe,CACtB,gBAAgB,EAChB,0FAA0F,EAC1F,EAAE,UAAU,EAAE,GAAG,EAAE,CACtB,CAAC;IACN,CAAC;CACJ;AArED,0CAqEC"}

@@ -80,2 +80,14 @@ import type { SensorCoreConfig } from './SensorCoreConfig.js';

private static prepareEntry;
/**
* The auto-generated device ID used as fallback when no explicit
* `userId` or `defaultUserId` is provided.
*
* Persisted in `localStorage` (browser) or `~/.sensorcore/device_id` (Node.js).
*/
static get deviceId(): string;
/**
* Reset the auto-generated device ID. A new one will be generated
* on the next log call. Call this on user logout.
*/
static resetDeviceId(): void;
}

@@ -82,0 +94,0 @@ export default SensorCore;

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCore.d.ts","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,cAAM,UAAU;IAGZ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyC;IAE9D,kDAAkD;IAClD,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA2BhD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAMvD;;;;;;;;OAQG;WACU,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3E;;;;;OAKG;WACU,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAO5D,OAAO,CAAC,MAAM,CAAC,YAAY;CAa9B;AAED,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,CAAC"}
{"version":3,"file":"SensorCore.d.ts","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAOrE,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,cAAM,UAAU;IAGZ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyC;IAE9D,kDAAkD;IAClD,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA2BhD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAMvD;;;;;;;;OAQG;WACU,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3E;;;;;OAKG;WACU,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAO5D,OAAO,CAAC,MAAM,CAAC,YAAY;IAgB3B;;;;;OAKG;IACH,MAAM,KAAK,QAAQ,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;CAG/B;AAED,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,CAAC"}

@@ -6,2 +6,3 @@ import { resolveConfig } from './SensorCoreConfig.js';

import { SensorCoreRemoteConfig } from './SensorCoreRemoteConfig.js';
import { getDeviceId, resetDeviceId } from './SensorCoreDeviceId.js';
// ---------------------------------------------------------------------------

@@ -65,3 +66,3 @@ // SensorCore — public facade (singleton)

` Host: ${resolved.host}\n` +
` User: ${resolved.defaultUserId ?? '(none)'}\n` +
` User: ${resolved.defaultUserId ?? 'auto:' + getDeviceId()}\n` +
` Timeout: ${resolved.timeout}ms`);

@@ -121,6 +122,23 @@ }

const level = options?.level ?? 'info';
const userId = options?.userId ?? config.defaultUserId;
const userId = options?.userId ?? config.defaultUserId ?? getDeviceId();
const entry = createEntry(content, level, userId, options?.metadata);
return { entry, client };
}
// -- Device ID --------------------------------------------------------------
/**
* The auto-generated device ID used as fallback when no explicit
* `userId` or `defaultUserId` is provided.
*
* Persisted in `localStorage` (browser) or `~/.sensorcore/device_id` (Node.js).
*/
static get deviceId() {
return getDeviceId();
}
/**
* Reset the auto-generated device ID. A new one will be generated
* on the next log call. Call this on user logout.
*/
static resetDeviceId() {
resetDeviceId();
}
}

@@ -127,0 +145,0 @@ export default SensorCore;

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCore.js","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"SensorCore.js","sourceRoot":"","sources":["../../src/SensorCore.ts"],"names":[],"mappings":"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"}

@@ -79,2 +79,7 @@ import type { ResolvedSensorCoreConfig } from './SensorCoreConfig.js';

private activateCooldown;
/**
* Check if a 403 response body contains the server's `QUOTA_EXCEEDED` code.
* Uses `response.clone()` because the body can only be read once.
*/
private static isQuotaExceeded;
/** Reset the circuit breaker after a successful request. */

@@ -81,0 +86,0 @@ private resetCooldown;

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreClient.d.ts","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAgBrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAE/C,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAS;IAIzB,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAS;IAE5B,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAAK;IAE3B,oEAAoE;IACpE,OAAO,CAAC,cAAc,CAAK;IAE3B,0EAA0E;IAC1E,OAAO,CAAC,WAAW,CAAS;IAE5B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAA6B;gBAItC,MAAM,EAAE,wBAAwB;IA0B5C;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAYrC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAuB1D;;;OAGG;IACH,OAAO,IAAI,IAAI;IASf;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAaxB,4DAA4D;IAC5D,OAAO,CAAC,aAAa;IAUrB,mDAAmD;IACnD,OAAO,CAAC,aAAa;IAOrB,qDAAqD;YACvC,UAAU;IAuBxB;;OAEG;YACW,QAAQ;IAsBtB,6CAA6C;IAC7C,OAAO,CAAC,OAAO;IAiBf,2DAA2D;IACrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAuDtC"}
{"version":3,"file":"SensorCoreClient.d.ts","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAgBrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAE/C,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAS;IAIzB,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAS;IAE5B,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAAK;IAE3B,oEAAoE;IACpE,OAAO,CAAC,cAAc,CAAK;IAE3B,0EAA0E;IAC1E,OAAO,CAAC,WAAW,CAAS;IAE5B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAA6B;gBAItC,MAAM,EAAE,wBAAwB;IA0B5C;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAYrC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BzD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAuB1D;;;OAGG;IACH,OAAO,IAAI,IAAI;IASf;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;mBACkB,eAAe;IASpC,4DAA4D;IAC5D,OAAO,CAAC,aAAa;IAUrB,mDAAmD;IACnD,OAAO,CAAC,aAAa;IAOrB,qDAAqD;YACvC,UAAU;IAuBxB;;OAEG;YACW,QAAQ;IA2BtB,6CAA6C;IAC7C,OAAO,CAAC,OAAO;IAiBf,2DAA2D;IACrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CA+DtC"}

@@ -117,2 +117,6 @@ import { entryToServerJSON } from './SensorCoreEntry.js';

}
if (response.status === 403 && await SensorCoreClient.isQuotaExceeded(response)) {
this.activateCooldown('free-tier quota exceeded (HTTP 403). Upgrade at https://sensorcore.dev');
throw SensorCoreError.quotaExceeded();
}
if (!response.ok) {

@@ -174,3 +178,3 @@ throw SensorCoreError.serverError(response.status);

/** Activate the circuit breaker with exponential backoff. */
activateCooldown() {
activateCooldown(reason) {
const cooldownSec = COOLDOWN_STEPS[Math.min(this._cooldownIndex, COOLDOWN_STEPS.length - 1)];

@@ -181,5 +185,18 @@ this._isSilenced = true;

if (typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production') {
console.warn(`[SensorCore] ⚠️ HTTP 429 — rate limited. Logging paused for ${cooldownSec}s.`);
console.warn(`[SensorCore] ⚠️ ${reason ?? 'HTTP 429 — rate limited'}. Logging paused for ${cooldownSec}s.`);
}
}
/**
* Check if a 403 response body contains the server's `QUOTA_EXCEEDED` code.
* Uses `response.clone()` because the body can only be read once.
*/
static async isQuotaExceeded(response) {
try {
const body = await response.clone().json();
return body?.code === 'QUOTA_EXCEEDED';
}
catch {
return false;
}
}
/** Reset the circuit breaker after a successful request. */

@@ -235,6 +252,10 @@ resetCooldown() {

}
if (response.status === 403 && await SensorCoreClient.isQuotaExceeded(response)) {
this.activateCooldown('free-tier quota exceeded (HTTP 403). Upgrade at https://sensorcore.dev');
return true;
}
if (response.ok) {
this.resetCooldown();
}
// Non-2xx, non-429 → log dropped (matches iOS behaviour)
// Non-2xx, non-429, non-403-quota → log dropped (matches iOS behaviour)
}

@@ -295,2 +316,9 @@ catch {

}
if (response.status === 403 && await SensorCoreClient.isQuotaExceeded(response)) {
this.activateCooldown('free-tier quota exceeded (HTTP 403). Upgrade at https://sensorcore.dev');
for (let j = i; j < pending.length; j++) {
stillFailed.push(pending[j]);
}
break;
}
if (!response.ok) {

@@ -297,0 +325,0 @@ entry.retryCount += 1;

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreClient.js","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"SensorCoreClient.js","sourceRoot":"","sources":["../../src/SensorCoreClient.ts"],"names":[],"mappings":"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"}

@@ -26,2 +26,9 @@ /**

* You can still override it per-call via `log('...', { userId: '...' })`.
*
* If omitted, the SDK auto-generates a persistent device-level UUID
* stored in `localStorage` (browser) or `~/.sensorcore/device_id` (Node.js).
* Call `SensorCore.resetDeviceId()` on user logout to generate a new one.
*
* **Priority:** per-call `userId` > `defaultUserId` > auto device ID
*
* @default undefined

@@ -28,0 +35,0 @@ */

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreConfig.d.ts","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAWhF"}
{"version":3,"file":"SensorCoreConfig.d.ts","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAWhF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreConfig.js","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AA+E7D,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,MAAwB;IAClD,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,yBAAyB;QAC7F,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM;QACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QACnD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,GAAG;QAC5C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM;KACtD,CAAC;AACN,CAAC"}
{"version":3,"file":"SensorCoreConfig.js","sourceRoot":"","sources":["../../src/SensorCoreConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAsF7D,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,MAAwB;IAClD,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,yBAAyB;QAC7F,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM;QACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QACnD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,GAAG;QAC5C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM;KACtD,CAAC;AACN,CAAC"}

@@ -16,2 +16,3 @@ /**

* case 'rate_limited': break;
* case 'quota_exceeded': break;
* }

@@ -22,3 +23,3 @@ * }

*/
export type SensorCoreErrorCode = 'not_configured' | 'encoding_failed' | 'server_error' | 'network_error' | 'rate_limited';
export type SensorCoreErrorCode = 'not_configured' | 'encoding_failed' | 'server_error' | 'network_error' | 'rate_limited' | 'quota_exceeded';
/**

@@ -46,3 +47,4 @@ * Typed error thrown by {@link SensorCore.logAsync} and used internally.

static rateLimited(): SensorCoreError;
static quotaExceeded(): SensorCoreError;
}
//# sourceMappingURL=SensorCoreError.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreError.d.ts","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,mBAAmB,GACzB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,cAAc,CAAC;AAErB;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAEnC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAWtD,MAAM,CAAC,aAAa,IAAI,eAAe;IAOvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQtD,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAQvD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQpD,MAAM,CAAC,WAAW,IAAI,eAAe;CAMxC"}
{"version":3,"file":"SensorCoreError.d.ts","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,mBAAmB,GACzB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,cAAc,GACd,gBAAgB,CAAC;AAEvB;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAEnC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAWtD,MAAM,CAAC,aAAa,IAAI,eAAe;IAOvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQtD,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAQvD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAQpD,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC,MAAM,CAAC,aAAa,IAAI,eAAe;CAO1C"}

@@ -37,3 +37,6 @@ /**

}
static quotaExceeded() {
return new SensorCoreError('quota_exceeded', 'SensorCore free-tier quota exceeded (HTTP 403). Upgrade to Pro at https://sensorcore.dev', { statusCode: 403 });
}
}
//# sourceMappingURL=SensorCoreError.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"SensorCoreError.js","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":"AA2BA;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IAC1B,IAAI,CAAsB;IAEnC,sDAAsD;IAC7C,UAAU,CAAU;IAE7B,yEAAyE;IAChE,KAAK,CAAW;IAEzB,YACI,IAAyB,EACzB,OAAe,EACf,OAAkD;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAChC,CAAC;IAED,6EAA6E;IAE7E,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,eAAe,CACtB,gBAAgB,EAChB,qEAAqE,CACxE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAc;QAChC,OAAO,IAAI,eAAe,CACtB,iBAAiB,EACjB,+BAA+B,KAAK,EAAE,EACtC,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAkB;QACjC,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,wBAAwB,UAAU,EAAE,EACpC,EAAE,UAAU,EAAE,CACjB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAc;QAC9B,OAAO,IAAI,eAAe,CACtB,eAAe,EACf,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAClE,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,iEAAiE,CACpE,CAAC;IACN,CAAC;CACJ"}
{"version":3,"file":"SensorCoreError.js","sourceRoot":"","sources":["../../src/SensorCoreError.ts"],"names":[],"mappings":"AA6BA;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtC,mCAAmC;IAC1B,IAAI,CAAsB;IAEnC,sDAAsD;IAC7C,UAAU,CAAU;IAE7B,yEAAyE;IAChE,KAAK,CAAW;IAEzB,YACI,IAAyB,EACzB,OAAe,EACf,OAAkD;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAChC,CAAC;IAED,6EAA6E;IAE7E,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,eAAe,CACtB,gBAAgB,EAChB,qEAAqE,CACxE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAc;QAChC,OAAO,IAAI,eAAe,CACtB,iBAAiB,EACjB,+BAA+B,KAAK,EAAE,EACtC,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAkB;QACjC,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,wBAAwB,UAAU,EAAE,EACpC,EAAE,UAAU,EAAE,CACjB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAc;QAC9B,OAAO,IAAI,eAAe,CACtB,eAAe,EACf,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAClE,EAAE,KAAK,EAAE,CACZ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,IAAI,eAAe,CACtB,cAAc,EACd,iEAAiE,CACpE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,eAAe,CACtB,gBAAgB,EAChB,0FAA0F,EAC1F,EAAE,UAAU,EAAE,GAAG,EAAE,CACtB,CAAC;IACN,CAAC;CACJ"}
{
"name": "sensorcore",
"version": "1.1.0",
"version": "1.1.1",
"description": "SensorCore SDK for JavaScript & TypeScript — logging, analytics, and remote config for browser and Node.js",

@@ -5,0 +5,0 @@ "author": "SensorCore",

@@ -46,3 +46,3 @@ # SensorCore JavaScript SDK

| `host` | `string` | `api.sensorcore.dev` | SensorCore server URL (rarely needed) |
| `defaultUserId` | `string?` | `undefined` | Auto-attached user ID for every log |
| `defaultUserId` | `string?` | auto device ID | Explicit user ID for every log. If omitted, SDK auto-generates a persistent UUID |
| `enabled` | `boolean` | `true` | Set `false` to silence all logs (e.g. in tests) |

@@ -110,2 +110,3 @@ | `timeout` | `number` | `10000` | Network request timeout in **milliseconds** |

case 'rate_limited': break; // server returned 429
case 'quota_exceeded': break; // free-tier limit reached — upgrade to Pro
}

@@ -120,2 +121,6 @@ }

### Quota Exceeded
If the server returns **HTTP 403** with `QUOTA_EXCEEDED`, the free-tier log limit has been reached. The SDK activates the circuit breaker (same as rate limiting). Upgrade to Pro at [sensorcore.dev](https://sensorcore.dev) for unlimited logging.
## Offline Buffering

@@ -140,2 +145,26 @@

## Automatic User Tracking
When no `defaultUserId` or per-call `userId` is provided, the SDK auto-generates a persistent **device-level UUID**:
- **Browser**: stored in `localStorage` (key: `sensorcore_device_id`)
- **Node.js**: stored in `~/.sensorcore/device_id`
This ensures every log has a `user_id`, enabling all user-centric analytics.
**Priority chain:**
```
per-call userId > config.defaultUserId > auto device ID
```
**Access the device ID:**
```ts
const id = SensorCore.deviceId; // read the auto-generated ID
```
**Reset on logout** (generates a new ID on next access):
```ts
SensorCore.resetDeviceId();
```
## Remote Config

@@ -142,0 +171,0 @@