@pack/errors
v0.1.1
Published
Pack error tracking core
Keywords
Readme
@pack/errors
Shared error-tracking core used by Pack runtime adapters.
Install
npm install @pack/errorsExports
sanitizeString(text)generateFingerprint(message, stack)sendErrorEvents(events, config, options?)sendServerErrorEvent(error, request, pack)createServerErrorHandler()SDK_VERSION,SCHEMA_VERSION
DSN format
sendErrorEvents requires a DSN via config.dsn. Use:
https://PUBLIC_KEY@host/ingest/PROJECT_ID
The DSN is parsed into:
- endpoint:
https://host/ingest X-Pack-Key:PUBLIC_KEYX-Pack-Project:PROJECT_ID
Events are sent as a JSON array. Failures are swallowed so tracking never breaks app flow.
Client example
import { sendErrorEvents } from '@pack/errors';
sendErrorEvents(
[
{
timestamp: new Date().toISOString(),
error_message: 'Something failed',
error_stack: '',
error_type: 'manual',
error_fingerprint: 'abc123',
url: 'https://store.example.com/products/widget',
pathname: '/products/widget',
section_id: '',
section_type: '',
component_stack: '',
user_agent: '',
screen: '',
device_category: '',
sdk_version: '0.1.0',
schema_version: '1',
session_id: 'session-1',
hostname: 'store.example.com',
},
],
{ dsn: 'https://[email protected]/ingest/PROJECT_ID' },
{ keepalive: true },
);Server usage
Use the helper for route-level error handling:
import { createServerErrorHandler } from '@pack/errors';
export const handleError = createServerErrorHandler();createServerErrorHandler:
- reads
packfromcontext.packorcontext.get('pack') - sends only when
pack.session.idis present - sanitizes message/stack/url before sending
- deduplicates repeated sends on the same
Errorobject
If you already have request + pack, you can call sendServerErrorEvent(error, request, pack) directly.
Sanitization and fingerprinting
sanitizeStringstrips URL query params and masks sensitive JSON-like fields (for examplepassword,token,email,phone)generateFingerprintcreates a stable hash from message + first non-empty stack line
Development
yarn
yarn build