scout-error 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +38 -0
- package/dist/cli.js.map +7 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/node.cjs +1 -1
- package/dist/node.js +1 -1
- package/dist/react.cjs +1 -1
- package/dist/react.js +1 -1
- package/dist/scout.iife.js +1 -1
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +1 -1
- package/package.json +5 -1
package/dist/cli.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{readFileSync as U,writeFileSync as g,mkdirSync as E,readdirSync as P,unlinkSync as N,existsSync as y}from"fs";import{join as l}from"path";import{homedir as k}from"os";import{createInterface as R}from"readline";var C=".bugs",b=/^[0-9a-f]{8}\.md$/,S=".scout.json",m=l(k(),".scout.json");function w(s){if(!y(s))return null;try{return JSON.parse(U(s,"utf8"))}catch(o){console.error(`Error parsing ${s}: ${o.message}`),process.exit(1)}}function _({requireProject:s=!0}={}){let o=w(m)||{},t=w(l(process.cwd(),S))||{},e={...o,...t};process.env.SCOUT_USERNAME&&(e.username=process.env.SCOUT_USERNAME),process.env.SCOUT_PASSWORD&&(e.password=process.env.SCOUT_PASSWORD),process.env.SCOUT_ENDPOINT&&(e.endpoint=process.env.SCOUT_ENDPOINT),process.env.SCOUT_PROJECT&&(e.project=process.env.SCOUT_PROJECT);let n=[];return e.endpoint||n.push("endpoint"),e.username||n.push("username"),e.password||n.push("password"),s&&!e.project&&n.push("project"),n.length&&(console.error(`Missing config: ${n.join(", ")}`),console.error(`
|
|
3
|
+
Run \`scout init\` to set up, or edit ${m} / ${S}`),process.exit(1)),e}function D(){return R({input:process.stdin,output:process.stdout})}function v(s,o){return new Promise(t=>s.question(o,e=>t(e.trim())))}async function $(s,o,t){let e=t?` [${t}]`:"";return await v(s,`${o}${e}: `)||t||""}async function A(s,o,t=!0){let n=(await v(s,`${o}${t?" [Y/n]":" [y/N]"}: `)).toLowerCase();return n?n==="y"||n==="yes":t}async function T(s,o){let t=`${s.endpoint.replace(/\/$/,"")}${o}`,e;try{e=await fetch(t,{headers:{"X-Username":s.username,"X-Password":s.password}})}catch(n){console.error(`Could not connect to ${s.endpoint}. Check the endpoint URL.`),console.error(n.message),process.exit(1)}return e.status===401&&(console.error("Authentication failed. Check your username and password."),process.exit(1)),e.ok||(console.error(`Server error: ${e.status} ${e.statusText}`),process.exit(1)),await e.json()}async function I(s){return T(s,`/errors?project=${encodeURIComponent(s.project)}`)}async function F(s){return T(s,"/projects?showHidden=true")}function L(s){let o=s.events[0]||{},t=s.combinedFields||{},e=[],n=t.message||o.args||o.type||"Unknown Error";e.push(`# ${n}`),e.push(""),e.push(`- **Hash:** ${s.hash}`),e.push(`- **Project:** ${t.project||""}`),t.app&&t.app!==t.project&&e.push(`- **App:** ${t.app}`),e.push(`- **Count:** ${s.count} total, ${s.last24HoursCount} last 24h, ${s.last30DaysCount} last 30d`),e.push(`- **Users:** ${s.uniqueUserCount} unique`);let r=o.timestamp||o.errorTimestamp;if(r){let c=typeof r=="string"?r:new Date(r).toISOString();e.push(`- **Last seen:** ${c}`)}if(o.environment&&e.push(`- **Environment:** ${o.environment}`),o.type&&e.push(`- **Type:** ${o.type}`),o.url&&e.push(`- **URL:** ${o.url}`),o.context&&Object.keys(o.context).length>0){e.push(""),e.push("## Context");for(let[c,u]of Object.entries(o.context)){let i=typeof u=="object"?JSON.stringify(u):String(u);e.push(`- **${c}:** ${i}`)}}let d=t.errorTrace||o.stack||o.errorTrace;if(d&&(e.push(""),e.push("## Stack Trace"),e.push("```"),e.push(d),e.push("```")),e.push(""),e.push("## Latest Event"),o.sdk==="node"?(o.method&&o.path&&e.push(`- **Endpoint:** ${o.method} ${o.path}`),o.nodeVersion&&e.push(`- **Node.js:** ${o.nodeVersion}`),o.platform&&e.push(`- **Platform:** ${o.platform}/${o.arch||""}`)):(o.browser&&e.push(`- **Browser:** ${o.browser}`),o.os&&e.push(`- **OS:** ${o.os}`)),o.user&&typeof o.user=="object"){let c=o.user.name||o.user.email||o.user.id;c&&e.push(`- **User:** ${c}`)}return o.sdk&&e.push(`- **SDK:** ${o.sdk} ${o.sdkVersion||""}`.trim()),e.push(""),e.join(`
|
|
4
|
+
`)}function J(s){let o=l(process.cwd(),C),t=!y(o);E(o,{recursive:!0}),t&&console.log("Tip: Add .bugs/ to your .gitignore");let e=new Set,n=0,r=0,d=0;for(let i of s){let f=i.hash.slice(0,8)+".md";e.add(f);let a=l(o,f),h=L(i);y(a)?U(a,"utf8")!==h?(g(a,h),r++):d++:(g(a,h),n++)}let c=0,u=P(o);for(let i of u)b.test(i)&&!e.has(i)&&(N(l(o,i)),c++);console.log(`Synced ${s.length} errors to ${C}/ (${n} new, ${r} updated, ${d} unchanged, ${c} removed)`)}function M(){let s=l(process.cwd(),C,"CLAUDE.md");if(y(s))return;g(s,`# Bug Tracking Directory
|
|
5
|
+
|
|
6
|
+
Error reports synced from Scout.js. Each \`.md\` file = one active error group.
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
1. **Do NOT edit** the error \`.md\` files \u2014 they get overwritten on \`scout sync\`
|
|
10
|
+
2. Keep investigation notes in separate files (e.g., \`ee16856a.notes.md\`)
|
|
11
|
+
3. Focus on high-count and recent errors (last 24h count)
|
|
12
|
+
4. Trace the stack to source code in this repo to investigate
|
|
13
|
+
5. Files named \`{8-char-hash}.md\` are managed by sync \u2014 everything else is yours
|
|
14
|
+
|
|
15
|
+
## Syncing
|
|
16
|
+
Run \`scout sync\` to refresh. Resolved errors are automatically removed.
|
|
17
|
+
`),console.log("Created .bugs/CLAUDE.md")}async function q(){let s=D();try{console.log(`Scout setup
|
|
18
|
+
`);let o=w(m)||{},t=w(l(process.cwd(),S))||{},{endpoint:e,username:n,password:r}=o;e&&n&&r&&(console.log(`Using saved credentials from ${m}`),console.log(` endpoint: ${e}`),console.log(` username: ${n}`),await A(s,"Use these credentials?",!0)||(e=null,n=null,r=null)),(!e||!n||!r)&&(e=await $(s,"Scout endpoint URL",e||t.endpoint||"https://admin.scoutjs.com"),n=await $(s,"Username",n||t.username||"scout"),r=await $(s,"Password",r||t.password||""),(!e||!n||!r)&&(console.error(`
|
|
19
|
+
endpoint, username, and password are required.`),process.exit(1)),g(m,JSON.stringify({endpoint:e,username:n,password:r},null,2)),console.log(`Saved credentials to ${m}`));let d={endpoint:e,username:n,password:r};console.log(`
|
|
20
|
+
Fetching projects...`);let c=await F(d);c.sort((p,j)=>(p.project||"").localeCompare(j.project||"")),console.log(`
|
|
21
|
+
Select a project:`),console.log(" 1) New Project (enter name)"),c.forEach((p,j)=>{let x=p.hidden?" (hidden)":"";console.log(` ${j+2}) ${p.project}${x}`)});let u=t.project&&c.findIndex(p=>p.project===t.project)+2||"",i=await $(s,`
|
|
22
|
+
Choice`,u?String(u):""),f=parseInt(i,10),a;f===1?(a=await v(s,"Project name: "),a||(console.error("Project name required."),process.exit(1))):f>=2&&f-2<c.length?a=c[f-2].project:(console.error("Invalid choice."),process.exit(1));let h=l(process.cwd(),S);g(h,JSON.stringify({project:a},null,2)),console.log(`
|
|
23
|
+
Saved project to ${h}`),console.log("\nRun `scout sync` to pull errors into .bugs/")}finally{s.close()}}async function B(){let s=_();console.log(`Fetching errors for project "${s.project}"...`);let o=await I(s);J(o),M()}function O(){console.log(`scout-error \u2014 Sync errors to local .bugs/ directory
|
|
24
|
+
|
|
25
|
+
Usage:
|
|
26
|
+
scout init Configure credentials and select a project
|
|
27
|
+
scout sync Fetch errors and sync to .bugs/
|
|
28
|
+
scout help Show this help
|
|
29
|
+
|
|
30
|
+
Config files:
|
|
31
|
+
~/.scout.json Global credentials (endpoint, username, password)
|
|
32
|
+
./.scout.json Per-project (project name)
|
|
33
|
+
|
|
34
|
+
Environment variables override both:
|
|
35
|
+
SCOUT_ENDPOINT, SCOUT_USERNAME, SCOUT_PASSWORD, SCOUT_PROJECT
|
|
36
|
+
`)}async function G(){let s=process.argv[2];(!s||s==="help"||s==="--help"||s==="-h")&&(O(),process.exit(0)),s==="init"?await q():s==="sync"?await B():(console.error(`Unknown command: ${s}
|
|
37
|
+
`),O(),process.exit(1))}G().catch(s=>{console.error(s.message),process.exit(1)});
|
|
38
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli.js"],
|
|
4
|
+
"sourcesContent": ["import { readFileSync, writeFileSync, mkdirSync, readdirSync, unlinkSync, existsSync } from 'fs'\nimport { join } from 'path'\nimport { homedir } from 'os'\nimport { createInterface } from 'readline'\n\nconst BUGS_DIR = '.bugs'\nconst HASH_FILE_PATTERN = /^[0-9a-f]{8}\\.md$/\nconst LOCAL_CONFIG = '.scout.json'\nconst GLOBAL_CONFIG = join(homedir(), '.scout.json')\n\n// --- Config ---\n\nfunction readJson(path) {\n if (!existsSync(path)) return null\n try {\n return JSON.parse(readFileSync(path, 'utf8'))\n } catch (e) {\n console.error(`Error parsing ${path}: ${e.message}`)\n process.exit(1)\n }\n}\n\nfunction loadConfig({ requireProject = true } = {}) {\n const global = readJson(GLOBAL_CONFIG) || {}\n const local = readJson(join(process.cwd(), LOCAL_CONFIG)) || {}\n const config = { ...global, ...local }\n\n // Env vars always win\n if (process.env.SCOUT_USERNAME) config.username = process.env.SCOUT_USERNAME\n if (process.env.SCOUT_PASSWORD) config.password = process.env.SCOUT_PASSWORD\n if (process.env.SCOUT_ENDPOINT) config.endpoint = process.env.SCOUT_ENDPOINT\n if (process.env.SCOUT_PROJECT) config.project = process.env.SCOUT_PROJECT\n\n const missing = []\n if (!config.endpoint) missing.push('endpoint')\n if (!config.username) missing.push('username')\n if (!config.password) missing.push('password')\n if (requireProject && !config.project) missing.push('project')\n\n if (missing.length) {\n console.error(`Missing config: ${missing.join(', ')}`)\n console.error(`\\nRun \\`scout init\\` to set up, or edit ${GLOBAL_CONFIG} / ${LOCAL_CONFIG}`)\n process.exit(1)\n }\n\n return config\n}\n\n// --- Prompts ---\n\nfunction createPrompt() {\n return createInterface({ input: process.stdin, output: process.stdout })\n}\n\nfunction ask(rl, question) {\n return new Promise(resolve => rl.question(question, answer => resolve(answer.trim())))\n}\n\nasync function askWithDefault(rl, question, defaultValue) {\n const suffix = defaultValue ? ` [${defaultValue}]` : ''\n const answer = await ask(rl, `${question}${suffix}: `)\n return answer || defaultValue || ''\n}\n\nasync function askYesNo(rl, question, defaultYes = true) {\n const suffix = defaultYes ? ' [Y/n]' : ' [y/N]'\n const answer = (await ask(rl, `${question}${suffix}: `)).toLowerCase()\n if (!answer) return defaultYes\n return answer === 'y' || answer === 'yes'\n}\n\n// --- Fetch ---\n\nasync function fetchJson(config, path) {\n const url = `${config.endpoint.replace(/\\/$/, '')}${path}`\n\n let response\n try {\n response = await fetch(url, {\n headers: {\n 'X-Username': config.username,\n 'X-Password': config.password,\n },\n })\n } catch (e) {\n console.error(`Could not connect to ${config.endpoint}. Check the endpoint URL.`)\n console.error(e.message)\n process.exit(1)\n }\n\n if (response.status === 401) {\n console.error('Authentication failed. Check your username and password.')\n process.exit(1)\n }\n\n if (!response.ok) {\n console.error(`Server error: ${response.status} ${response.statusText}`)\n process.exit(1)\n }\n\n return await response.json()\n}\n\nasync function fetchErrors(config) {\n return fetchJson(config, `/errors?project=${encodeURIComponent(config.project)}`)\n}\n\nasync function fetchProjects(config) {\n return fetchJson(config, '/projects?showHidden=true')\n}\n\n// --- Markdown rendering ---\n\nfunction renderErrorMarkdown(error) {\n const event = error.events[0] || {}\n const cf = error.combinedFields || {}\n const lines = []\n\n const title = cf.message || event.args || event.type || 'Unknown Error'\n lines.push(`# ${title}`)\n lines.push('')\n\n lines.push(`- **Hash:** ${error.hash}`)\n lines.push(`- **Project:** ${cf.project || ''}`)\n if (cf.app && cf.app !== cf.project) lines.push(`- **App:** ${cf.app}`)\n lines.push(`- **Count:** ${error.count} total, ${error.last24HoursCount} last 24h, ${error.last30DaysCount} last 30d`)\n lines.push(`- **Users:** ${error.uniqueUserCount} unique`)\n\n const lastSeen = event.timestamp || event.errorTimestamp\n if (lastSeen) {\n const ts = typeof lastSeen === 'string' ? lastSeen : new Date(lastSeen).toISOString()\n lines.push(`- **Last seen:** ${ts}`)\n }\n\n if (event.environment) lines.push(`- **Environment:** ${event.environment}`)\n if (event.type) lines.push(`- **Type:** ${event.type}`)\n if (event.url) lines.push(`- **URL:** ${event.url}`)\n\n // Context\n if (event.context && Object.keys(event.context).length > 0) {\n lines.push('')\n lines.push('## Context')\n for (const [key, value] of Object.entries(event.context)) {\n const formatted = typeof value === 'object' ? JSON.stringify(value) : String(value)\n lines.push(`- **${key}:** ${formatted}`)\n }\n }\n\n // Stack trace\n const trace = cf.errorTrace || event.stack || event.errorTrace\n if (trace) {\n lines.push('')\n lines.push('## Stack Trace')\n lines.push('```')\n lines.push(trace)\n lines.push('```')\n }\n\n // Latest event metadata\n lines.push('')\n lines.push('## Latest Event')\n if (event.sdk === 'node') {\n if (event.method && event.path) lines.push(`- **Endpoint:** ${event.method} ${event.path}`)\n if (event.nodeVersion) lines.push(`- **Node.js:** ${event.nodeVersion}`)\n if (event.platform) lines.push(`- **Platform:** ${event.platform}/${event.arch || ''}`)\n } else {\n if (event.browser) lines.push(`- **Browser:** ${event.browser}`)\n if (event.os) lines.push(`- **OS:** ${event.os}`)\n }\n if (event.user && typeof event.user === 'object') {\n const userName = event.user.name || event.user.email || event.user.id\n if (userName) lines.push(`- **User:** ${userName}`)\n }\n if (event.sdk) lines.push(`- **SDK:** ${event.sdk} ${event.sdkVersion || ''}`.trim())\n\n lines.push('')\n return lines.join('\\n')\n}\n\n// --- Sync ---\n\nfunction syncBugsDir(errors) {\n const bugsPath = join(process.cwd(), BUGS_DIR)\n const firstRun = !existsSync(bugsPath)\n\n mkdirSync(bugsPath, { recursive: true })\n\n if (firstRun) {\n console.log('Tip: Add .bugs/ to your .gitignore')\n }\n\n const expectedFiles = new Set()\n let created = 0\n let updated = 0\n let unchanged = 0\n\n for (const error of errors) {\n const filename = error.hash.slice(0, 8) + '.md'\n expectedFiles.add(filename)\n\n const filePath = join(bugsPath, filename)\n const content = renderErrorMarkdown(error)\n\n if (existsSync(filePath)) {\n const existing = readFileSync(filePath, 'utf8')\n if (existing !== content) {\n writeFileSync(filePath, content)\n updated++\n } else {\n unchanged++\n }\n } else {\n writeFileSync(filePath, content)\n created++\n }\n }\n\n let removed = 0\n const existingFiles = readdirSync(bugsPath)\n for (const file of existingFiles) {\n if (HASH_FILE_PATTERN.test(file) && !expectedFiles.has(file)) {\n unlinkSync(join(bugsPath, file))\n removed++\n }\n }\n\n console.log(`Synced ${errors.length} errors to ${BUGS_DIR}/ (${created} new, ${updated} updated, ${unchanged} unchanged, ${removed} removed)`)\n}\n\nfunction ensureClaudeMd() {\n const filePath = join(process.cwd(), BUGS_DIR, 'CLAUDE.md')\n if (existsSync(filePath)) return\n\n const content = `# Bug Tracking Directory\n\nError reports synced from Scout.js. Each \\`.md\\` file = one active error group.\n\n## Rules\n1. **Do NOT edit** the error \\`.md\\` files \u2014 they get overwritten on \\`scout sync\\`\n2. Keep investigation notes in separate files (e.g., \\`ee16856a.notes.md\\`)\n3. Focus on high-count and recent errors (last 24h count)\n4. Trace the stack to source code in this repo to investigate\n5. Files named \\`{8-char-hash}.md\\` are managed by sync \u2014 everything else is yours\n\n## Syncing\nRun \\`scout sync\\` to refresh. Resolved errors are automatically removed.\n`\n\n writeFileSync(filePath, content)\n console.log('Created .bugs/CLAUDE.md')\n}\n\n// --- Commands ---\n\nasync function cmdInit() {\n const rl = createPrompt()\n\n try {\n console.log('Scout setup\\n')\n\n const global = readJson(GLOBAL_CONFIG) || {}\n const local = readJson(join(process.cwd(), LOCAL_CONFIG)) || {}\n\n // --- Credentials (stored globally) ---\n let { endpoint, username, password } = global\n\n if (endpoint && username && password) {\n console.log(`Using saved credentials from ${GLOBAL_CONFIG}`)\n console.log(` endpoint: ${endpoint}`)\n console.log(` username: ${username}`)\n const reuse = await askYesNo(rl, 'Use these credentials?', true)\n if (!reuse) {\n endpoint = null; username = null; password = null\n }\n }\n\n if (!endpoint || !username || !password) {\n endpoint = await askWithDefault(rl, 'Scout endpoint URL', endpoint || local.endpoint || 'https://admin.scoutjs.com')\n username = await askWithDefault(rl, 'Username', username || local.username || 'scout')\n password = await askWithDefault(rl, 'Password', password || local.password || '')\n\n if (!endpoint || !username || !password) {\n console.error('\\nendpoint, username, and password are required.')\n process.exit(1)\n }\n\n writeFileSync(GLOBAL_CONFIG, JSON.stringify({ endpoint, username, password }, null, 2))\n console.log(`Saved credentials to ${GLOBAL_CONFIG}`)\n }\n\n // --- Project selection ---\n const config = { endpoint, username, password }\n\n console.log('\\nFetching projects...')\n const projects = await fetchProjects(config)\n projects.sort((a, b) => (a.project || '').localeCompare(b.project || ''))\n\n console.log('\\nSelect a project:')\n console.log(' 1) New Project (enter name)')\n projects.forEach((p, i) => {\n const tag = p.hidden ? ' (hidden)' : ''\n console.log(` ${i + 2}) ${p.project}${tag}`)\n })\n\n const defaultIdx = local.project\n ? (projects.findIndex(p => p.project === local.project) + 2) || ''\n : ''\n const choice = await askWithDefault(rl, '\\nChoice', defaultIdx ? String(defaultIdx) : '')\n const idx = parseInt(choice, 10)\n\n let selectedProject\n if (idx === 1) {\n selectedProject = await ask(rl, 'Project name: ')\n if (!selectedProject) {\n console.error('Project name required.')\n process.exit(1)\n }\n } else if (idx >= 2 && idx - 2 < projects.length) {\n selectedProject = projects[idx - 2].project\n } else {\n console.error('Invalid choice.')\n process.exit(1)\n }\n\n // --- Write local .scout.json ---\n const localPath = join(process.cwd(), LOCAL_CONFIG)\n writeFileSync(localPath, JSON.stringify({ project: selectedProject }, null, 2))\n console.log(`\\nSaved project to ${localPath}`)\n console.log(`\\nRun \\`scout sync\\` to pull errors into .bugs/`)\n } finally {\n rl.close()\n }\n}\n\nasync function cmdSync() {\n const config = loadConfig()\n console.log(`Fetching errors for project \"${config.project}\"...`)\n const errors = await fetchErrors(config)\n syncBugsDir(errors)\n ensureClaudeMd()\n}\n\n// --- Main ---\n\nfunction printUsage() {\n console.log(`scout-error \u2014 Sync errors to local .bugs/ directory\n\nUsage:\n scout init Configure credentials and select a project\n scout sync Fetch errors and sync to .bugs/\n scout help Show this help\n\nConfig files:\n ~/.scout.json Global credentials (endpoint, username, password)\n ./.scout.json Per-project (project name)\n\nEnvironment variables override both:\n SCOUT_ENDPOINT, SCOUT_USERNAME, SCOUT_PASSWORD, SCOUT_PROJECT\n`)\n}\n\nasync function main() {\n const command = process.argv[2]\n\n if (!command || command === 'help' || command === '--help' || command === '-h') {\n printUsage()\n process.exit(0)\n }\n\n if (command === 'init') {\n await cmdInit()\n } else if (command === 'sync') {\n await cmdSync()\n } else {\n console.error(`Unknown command: ${command}\\n`)\n printUsage()\n process.exit(1)\n }\n}\n\nmain().catch(e => {\n console.error(e.message)\n process.exit(1)\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["readFileSync", "writeFileSync", "mkdirSync", "readdirSync", "unlinkSync", "existsSync", "join", "homedir", "createInterface", "BUGS_DIR", "HASH_FILE_PATTERN", "LOCAL_CONFIG", "GLOBAL_CONFIG", "readJson", "path", "e", "loadConfig", "requireProject", "global", "local", "config", "missing", "createPrompt", "ask", "rl", "question", "resolve", "answer", "askWithDefault", "defaultValue", "suffix", "askYesNo", "defaultYes", "fetchJson", "url", "response", "fetchErrors", "fetchProjects", "renderErrorMarkdown", "error", "event", "cf", "lines", "title", "lastSeen", "ts", "key", "value", "formatted", "trace", "userName", "syncBugsDir", "errors", "bugsPath", "firstRun", "expectedFiles", "created", "updated", "unchanged", "filename", "filePath", "content", "removed", "existingFiles", "file", "ensureClaudeMd", "cmdInit", "endpoint", "username", "password", "projects", "a", "b", "i", "tag", "defaultIdx", "choice", "idx", "selectedProject", "localPath", "cmdSync", "printUsage", "main", "command"]
|
|
7
|
+
}
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var h=Object.defineProperty,V=Object.defineProperties,q=Object.getOwnPropertyDescriptor,z=Object.getOwnPropertyDescriptors,J=Object.getOwnPropertyNames,T=Object.getOwnPropertySymbols;var U=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var x=(e,r,t)=>r in e?h(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,l=(e,r)=>{for(var t in r||(r={}))U.call(r,t)&&x(e,t,r[t]);if(T)for(var t of T(r))G.call(r,t)&&x(e,t,r[t]);return e},P=(e,r)=>V(e,z(r));var K=(e,r)=>{for(var t in r)h(e,t,{get:r[t],enumerable:!0})},Z=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of J(r))!U.call(e,a)&&a!==t&&h(e,a,{get:()=>r[a],enumerable:!(s=q(r,a))||s.enumerable});return e};var Q=e=>Z(h({},"__esModule",{value:!0}),e);var S=(e,r,t)=>new Promise((s,a)=>{var n=c=>{try{u(t.next(c))}catch(f){a(f)}},o=c=>{try{u(t.throw(c))}catch(f){a(f)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(n,o);u((t=t.apply(e,r)).next())});var ce={};K(ce,{addBreadcrumb:()=>ae,captureError:()=>H,init:()=>X,setContext:()=>B,setTag:()=>W,setUser:()=>F});module.exports=Q(ce);var Y={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},Y),$,p={environment:typeof window!="undefined"&&(($=window.location)==null?void 0:$.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.
|
|
1
|
+
var h=Object.defineProperty,V=Object.defineProperties,q=Object.getOwnPropertyDescriptor,z=Object.getOwnPropertyDescriptors,J=Object.getOwnPropertyNames,T=Object.getOwnPropertySymbols;var U=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var x=(e,r,t)=>r in e?h(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,l=(e,r)=>{for(var t in r||(r={}))U.call(r,t)&&x(e,t,r[t]);if(T)for(var t of T(r))G.call(r,t)&&x(e,t,r[t]);return e},P=(e,r)=>V(e,z(r));var K=(e,r)=>{for(var t in r)h(e,t,{get:r[t],enumerable:!0})},Z=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of J(r))!U.call(e,a)&&a!==t&&h(e,a,{get:()=>r[a],enumerable:!(s=q(r,a))||s.enumerable});return e};var Q=e=>Z(h({},"__esModule",{value:!0}),e);var S=(e,r,t)=>new Promise((s,a)=>{var n=c=>{try{u(t.next(c))}catch(f){a(f)}},o=c=>{try{u(t.throw(c))}catch(f){a(f)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(n,o);u((t=t.apply(e,r)).next())});var ce={};K(ce,{addBreadcrumb:()=>ae,captureError:()=>H,init:()=>X,setContext:()=>B,setTag:()=>W,setUser:()=>F});module.exports=Q(ce);var Y={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},Y),$,p={environment:typeof window!="undefined"&&(($=window.location)==null?void 0:$.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.9",project:null,release:null,version:null,app:null},M={clicks:0,scrolls:0},R=null,D=!1,k=null,w={},_=[],ee=30;var v=console.warn;var A=console.log;function C(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function ne(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",C("user")),localStorage.getItem("__scoutUserId")),r=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",C("session")),sessionStorage.getItem("__scoutSessionId"));return R=R||C("pageload"),{pageloadId:R,userId:e,sessionId:r}}function re(){var t,s,a;if((s=(t=window._uaParserResult)==null?void 0:t.browser)!=null&&s.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((a=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:a.n)||"Unknown"}function te(){var t,s,a;if((s=(t=window._uaParserResult)==null?void 0:t.os)!=null&&s.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((a=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:a.n)||"Unknown"}function oe(){var r,t,s,a,n,o,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:re(),browserVersion:((t=(r=window._uaParserResult)==null?void 0:r.browser)==null?void 0:t.version)||null,os:te(),osVersion:((a=(s=window._uaParserResult)==null?void 0:s.os)==null?void 0:a.version)||null,deviceType:((o=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:o.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:M.clicks,userScrolls:M.scrolls}}function y(e){return!i.ignoreErrors||!Array.isArray(i.ignoreErrors)?!1:i.ignoreErrors.some(r=>typeof r=="string"?e.includes(r):r instanceof RegExp?r.test(e):!1)}function N(e,r){let t=new AbortController,s=setTimeout(()=>t.abort(),5e3),a={"Content-Type":"application/json"};return i.token&&(a["X-Ingest-Token"]=i.token),fetch(e,{method:"POST",headers:a,body:JSON.stringify(r),signal:t.signal}).then(n=>(clearTimeout(s),n)).catch(()=>{clearTimeout(s)})}function E(e){let r=(e[0]||"")+"",t=[...e];return r.replace(/%[sdj]/g,s=>{let a=t.shift();return s==="%s"?String(a):s==="%d"?Number(a):s==="%j"?JSON.stringify(a):s})}function O(e,r){let t=document.createElement("script");t.src=e,t.async=!0,r&&(t.onload=r),document.head.appendChild(t)}function se(e,r,t){return S(this,null,function*(){var s;try{let a=yield fetch(e);if(!a.ok)return null;let n=yield a.text(),o=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(o)c=JSON.parse(atob(o[1]));else if(u){let j=new URL(u[1],e).href,I=yield fetch(j);if(!I.ok)return null;c=yield I.json()}else return null;if(!((s=window.sourceMap)!=null&&s.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:r,column:t});if(!d.source)return null;let L=c.sources.indexOf(d.source),b=null;return c.sourcesContent&&c.sourcesContent[L]&&(b=c.sourcesContent[L]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:b}}catch(a){return null}})}function g(e){_.push(l({timestamp:Date.now()},e)),_.length>ee&&_.shift()}function m(e){return S(this,null,function*(){let r=i.browserDetails?oe():{},t=Object.assign(e,r,p,ne());if(k&&(t.user=k),Object.keys(w).length&&(t.context=l({},w)),t.breadcrumbs=_.slice(),i.sampleRate&&Math.random()<1-parseFloat(i.sampleRate)){i.debug&&A("[Scout] Suppressed by sampling");return}if(i.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let s=e.errorTrace.split(`
|
|
2
2
|
`),a=[s[0]];for(let n=1;n<s.length;n++)!s[n].includes("/scout")&&!s[n].includes("scout.js")&&!s[n].includes("scout-error")&&a.push(s[n]);a.length>1&&(e.errorTrace=a.join(`
|
|
3
3
|
`))}catch(s){}if((e.errorTrace||e.stack)&&!e.source)try{let s=e.errorTrace||e.stack,a=s?s.split(`
|
|
4
4
|
`):[];for(let n=1;n<a.length;n++){let o=a[n].trim().match(/(http.*?):(\d+):(\d+)/);if(o){e.source=o[1],e.lineno=parseInt(o[2],10),e.colno=parseInt(o[3],10);break}}}catch(s){}if(i.debug&&A("[Scout] Sending:",t),i.endpoint&&N(i.endpoint,t),i.handleSourceMaps&&e.source&&e.lineno)try{let s=yield se(e.source,e.lineno,e.colno||0);if(s){let a=P(l({},t),{originalSource:s.originalSource,originalLine:s.originalLine,originalColumn:s.originalColumn,originalName:s.originalName,highlightLineNumber:s.originalLine});s.snippet&&(a.snippet=s.snippet),i.endpoint&&N(i.endpoint,a)}}catch(s){}})}function H(e){i.enabled&&m(e)}function F(e){k=e}function B(e){w=l(l({},w),e)}function W(e,r){w[e]=r}function ae(e){g(e)}function ie(){if(i.trackUserInteractions){document.addEventListener("click",o=>{M.clicks++;let u=o.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);g({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let o=Date.now();o-n>100&&(M.scrolls++,n=o)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),g({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{g({category:"navigation",message:window.location.href})});let r=window.fetch;window.fetch=function(n,o){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(o==null?void 0:o.method)||"GET",f=Date.now();return r.apply(this,arguments).then(d=>(g({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw g({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let t=XMLHttpRequest.prototype.open,s=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,o){return this._scoutMethod=n,this._scoutUrl=o,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,o=Date.now();return n.addEventListener("loadend",()=>{g({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-o}})}),s.apply(this,arguments)},i.addErrorEventListener&&window.addEventListener("error",n=>S(this,null,function*(){if(i.enabled){try{let o=n.error?n.error.stack:"No stack trace available";if(y(n.message))return;i.sendErrors&&m({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:o})}catch(o){v("[Scout] Error handler failure:",o)}i.selfHealingErrors&&n.preventDefault()}})),i.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(i.enabled){try{let o=n.reason,u=(o==null?void 0:o.stack)||"No stack trace available";if(y((o==null?void 0:o.message)||""))return;i.sendErrors&&m({type:"Unhandled Promise Rejection",message:(o==null?void 0:o.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(o){v("[Scout] Rejection handler failure:",o)}i.selfHealingErrors&&n.preventDefault()}}),i.overrideConsoleError&&(console.error=function(...n){if(i.enabled)try{let o=new Error().stack;if(y(E(n)))return;i.sendErrors&&m({type:"console.error",errorTrace:o,args:E(n)})}catch(o){v("[Scout] console.error override failure:",o)}}),i.overrideConsoleWarn&&(console.warn=function(...n){if(i.enabled)try{let o=new Error().stack;if(y(E(n)))return;i.sendErrors&&m({type:"console.warn",errorTrace:o,args:E(n)})}catch(o){v("[Scout] console.warn override failure:",o)}});let a=i.endpoint?new URL(i.endpoint).origin:"";i.loadUAParser&&i.browserDetails&&a&&O(`${a}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),i.handleSourceMaps&&a&&O(`${a}/vendor/source-map.min.js`)}function X(e={},r={}){if(e.user&&(k=e.user,delete e.user),D){p=l(l({},p),e),i=l(l({},i),r);return}p=l(l({},p),e),i=l(l({},i),r),D=!0,typeof window!="undefined"&&ie()}typeof window!="undefined"&&(window.Scout={init:X,setScope:e=>{p=l(l({},p),e)},setConfig:e=>{i=l(l({},i),e)},setUser:F,setContext:B,setTag:W,addBreadcrumb:g,error:H});
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var $=Object.defineProperty,H=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var T=(e,s,t)=>s in e?$(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,l=(e,s)=>{for(var t in s||(s={}))B.call(s,t)&&T(e,t,s[t]);if(I)for(var t of I(s))W.call(s,t)&&T(e,t,s[t]);return e},x=(e,s)=>H(e,F(s));var h=(e,s,t)=>new Promise((o,i)=>{var n=c=>{try{u(t.next(c))}catch(f){i(f)}},r=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(n,r);u((t=t.apply(e,s)).next())});var X={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},X),N,p={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.
|
|
1
|
+
var $=Object.defineProperty,H=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var T=(e,s,t)=>s in e?$(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,l=(e,s)=>{for(var t in s||(s={}))B.call(s,t)&&T(e,t,s[t]);if(I)for(var t of I(s))W.call(s,t)&&T(e,t,s[t]);return e},x=(e,s)=>H(e,F(s));var h=(e,s,t)=>new Promise((o,i)=>{var n=c=>{try{u(t.next(c))}catch(f){i(f)}},r=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(n,r);u((t=t.apply(e,s)).next())});var X={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},X),N,p={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.9",project:null,release:null,version:null,app:null},_={clicks:0,scrolls:0},k=null,U=!1,M=null,w={},E=[],j=30;var S=console.warn;var P=console.log;function R(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function V(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",R("user")),localStorage.getItem("__scoutUserId")),s=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",R("session")),sessionStorage.getItem("__scoutSessionId"));return k=k||R("pageload"),{pageloadId:k,userId:e,sessionId:s}}function q(){var t,o,i;if((o=(t=window._uaParserResult)==null?void 0:t.browser)!=null&&o.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((i=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:i.n)||"Unknown"}function z(){var t,o,i;if((o=(t=window._uaParserResult)==null?void 0:t.os)!=null&&o.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((i=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:i.n)||"Unknown"}function J(){var s,t,o,i,n,r,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:q(),browserVersion:((t=(s=window._uaParserResult)==null?void 0:s.browser)==null?void 0:t.version)||null,os:z(),osVersion:((i=(o=window._uaParserResult)==null?void 0:o.os)==null?void 0:i.version)||null,deviceType:((r=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:r.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:_.clicks,userScrolls:_.scrolls}}function v(e){return!a.ignoreErrors||!Array.isArray(a.ignoreErrors)?!1:a.ignoreErrors.some(s=>typeof s=="string"?e.includes(s):s instanceof RegExp?s.test(e):!1)}function D(e,s){let t=new AbortController,o=setTimeout(()=>t.abort(),5e3),i={"Content-Type":"application/json"};return a.token&&(i["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:i,body:JSON.stringify(s),signal:t.signal}).then(n=>(clearTimeout(o),n)).catch(()=>{clearTimeout(o)})}function y(e){let s=(e[0]||"")+"",t=[...e];return s.replace(/%[sdj]/g,o=>{let i=t.shift();return o==="%s"?String(i):o==="%d"?Number(i):o==="%j"?JSON.stringify(i):o})}function A(e,s){let t=document.createElement("script");t.src=e,t.async=!0,s&&(t.onload=s),document.head.appendChild(t)}function G(e,s,t){return h(this,null,function*(){var o;try{let i=yield fetch(e);if(!i.ok)return null;let n=yield i.text(),r=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(r)c=JSON.parse(atob(r[1]));else if(u){let O=new URL(u[1],e).href,b=yield fetch(O);if(!b.ok)return null;c=yield b.json()}else return null;if(!((o=window.sourceMap)!=null&&o.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:s,column:t});if(!d.source)return null;let C=c.sources.indexOf(d.source),L=null;return c.sourcesContent&&c.sourcesContent[C]&&(L=c.sourcesContent[C]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:L}}catch(i){return null}})}function g(e){E.push(l({timestamp:Date.now()},e)),E.length>j&&E.shift()}function m(e){return h(this,null,function*(){let s=a.browserDetails?J():{},t=Object.assign(e,s,p,V());if(M&&(t.user=M),Object.keys(w).length&&(t.context=l({},w)),t.breadcrumbs=E.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&P("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let o=e.errorTrace.split(`
|
|
2
2
|
`),i=[o[0]];for(let n=1;n<o.length;n++)!o[n].includes("/scout")&&!o[n].includes("scout.js")&&!o[n].includes("scout-error")&&i.push(o[n]);i.length>1&&(e.errorTrace=i.join(`
|
|
3
3
|
`))}catch(o){}if((e.errorTrace||e.stack)&&!e.source)try{let o=e.errorTrace||e.stack,i=o?o.split(`
|
|
4
4
|
`):[];for(let n=1;n<i.length;n++){let r=i[n].trim().match(/(http.*?):(\d+):(\d+)/);if(r){e.source=r[1],e.lineno=parseInt(r[2],10),e.colno=parseInt(r[3],10);break}}}catch(o){}if(a.debug&&P("[Scout] Sending:",t),a.endpoint&&D(a.endpoint,t),a.handleSourceMaps&&e.source&&e.lineno)try{let o=yield G(e.source,e.lineno,e.colno||0);if(o){let i=x(l({},t),{originalSource:o.originalSource,originalLine:o.originalLine,originalColumn:o.originalColumn,originalName:o.originalName,highlightLineNumber:o.originalLine});o.snippet&&(i.snippet=o.snippet),a.endpoint&&D(a.endpoint,i)}}catch(o){}})}function K(e){a.enabled&&m(e)}function Z(e){M=e}function Q(e){w=l(l({},w),e)}function Y(e,s){w[e]=s}function te(e){g(e)}function ee(){if(a.trackUserInteractions){document.addEventListener("click",r=>{_.clicks++;let u=r.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);g({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let r=Date.now();r-n>100&&(_.scrolls++,n=r)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),g({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{g({category:"navigation",message:window.location.href})});let s=window.fetch;window.fetch=function(n,r){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(r==null?void 0:r.method)||"GET",f=Date.now();return s.apply(this,arguments).then(d=>(g({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw g({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let t=XMLHttpRequest.prototype.open,o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,r){return this._scoutMethod=n,this._scoutUrl=r,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,r=Date.now();return n.addEventListener("loadend",()=>{g({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-r}})}),o.apply(this,arguments)},a.addErrorEventListener&&window.addEventListener("error",n=>h(this,null,function*(){if(a.enabled){try{let r=n.error?n.error.stack:"No stack trace available";if(v(n.message))return;a.sendErrors&&m({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:r})}catch(r){S("[Scout] Error handler failure:",r)}a.selfHealingErrors&&n.preventDefault()}})),a.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(a.enabled){try{let r=n.reason,u=(r==null?void 0:r.stack)||"No stack trace available";if(v((r==null?void 0:r.message)||""))return;a.sendErrors&&m({type:"Unhandled Promise Rejection",message:(r==null?void 0:r.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(r){S("[Scout] Rejection handler failure:",r)}a.selfHealingErrors&&n.preventDefault()}}),a.overrideConsoleError&&(console.error=function(...n){if(a.enabled)try{let r=new Error().stack;if(v(y(n)))return;a.sendErrors&&m({type:"console.error",errorTrace:r,args:y(n)})}catch(r){S("[Scout] console.error override failure:",r)}}),a.overrideConsoleWarn&&(console.warn=function(...n){if(a.enabled)try{let r=new Error().stack;if(v(y(n)))return;a.sendErrors&&m({type:"console.warn",errorTrace:r,args:y(n)})}catch(r){S("[Scout] console.warn override failure:",r)}});let i=a.endpoint?new URL(a.endpoint).origin:"";a.loadUAParser&&a.browserDetails&&i&&A(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),a.handleSourceMaps&&i&&A(`${i}/vendor/source-map.min.js`)}function ne(e={},s={}){if(e.user&&(M=e.user,delete e.user),U){p=l(l({},p),e),a=l(l({},a),s);return}p=l(l({},p),e),a=l(l({},a),s),U=!0,typeof window!="undefined"&&ee()}typeof window!="undefined"&&(window.Scout={init:ne,setScope:e=>{p=l(l({},p),e)},setConfig:e=>{a=l(l({},a),e)},setUser:Z,setContext:Q,setTag:Y,addBreadcrumb:g,error:K});export{te as addBreadcrumb,K as captureError,ne as init,Q as setContext,Y as setTag,Z as setUser};
|
package/dist/node.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var p=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(e,t)=>{for(var s in t)p(e,s,{get:t[s],enumerable:!0})},k=(e,t,s,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of m(t))!g.call(e,r)&&r!==s&&p(e,r,{get:()=>t[r],enumerable:!(u=l(t,r))||u.enumerable});return e};var h=e=>k(p({},"__esModule",{value:!0}),e);var j={};f(j,{addBreadcrumb:()=>b,captureError:()=>O,errorHandlingMiddleware:()=>D,initTracker:()=>x,setContext:()=>T,setTag:()=>y,setUser:()=>E});module.exports=h(j);var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},a={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.
|
|
1
|
+
var p=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(e,t)=>{for(var s in t)p(e,s,{get:t[s],enumerable:!0})},k=(e,t,s,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of m(t))!g.call(e,r)&&r!==s&&p(e,r,{get:()=>t[r],enumerable:!(u=l(t,r))||u.enumerable});return e};var h=e=>k(p({},"__esModule",{value:!0}),e);var j={};f(j,{addBreadcrumb:()=>b,captureError:()=>O,errorHandlingMiddleware:()=>D,initTracker:()=>x,setContext:()=>T,setTag:()=>y,setUser:()=>E});module.exports=h(j);var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},a={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.9",nodeVersion:process.version,platform:process.platform,arch:process.arch},d=null,o={},c=[],S=30;function i(e){if(n.debug&&console.error("[Scout]:",e),d&&(e.user=d),Object.keys(o).length&&(e.context={...o}),e.breadcrumbs=c.slice(),n.endpoint&&n.sendErrors){let t={"Content-Type":"application/json"};n.token&&(t["X-Ingest-Token"]=n.token),fetch(n.endpoint,{method:"POST",headers:t,body:JSON.stringify(e)}).catch(s=>{console.error("[Scout] Failed to send error:",s.message)})}}function x(e={},t={}){a={...a,...e},n={...n,...t},process.on("uncaughtException",s=>{i({type:"uncaughtException",message:s.message,stack:s.stack,errorTrace:s.stack,timestamp:new Date().toISOString(),...a})}),process.on("unhandledRejection",s=>{i({type:"unhandledRejection",message:s?.message||"Unhandled Promise Rejection",stack:s?.stack||"No stack trace",errorTrace:s?.stack||"No stack trace",timestamp:new Date().toISOString(),...a})})}function D(e,t,s,u){let r={type:"expressError",message:e.message,stack:n.captureStackTrace?e.stack:void 0,errorTrace:n.captureStackTrace?e.stack:void 0,path:t.originalUrl,method:t.method,params:t.params,query:t.query,headers:n.captureRequestDetails?t.headers:void 0,timestamp:new Date().toISOString(),...a};n.captureUserDetails&&t.user&&(r.user={id:t.user.id||t.user._id,email:t.user.email,name:t.user.name||t.user.username}),i(r),s.status(500).json({error:"Internal Server Error"})}function E(e){d=e}function T(e){o={...o,...e}}function y(e,t){o[e]=t}function b(e){c.push({timestamp:Date.now(),...e}),c.length>S&&c.shift()}function O(e,t={}){let s={type:"manual",message:e?.message||String(e),stack:e?.stack,errorTrace:e?.stack,timestamp:new Date().toISOString(),...a};Object.keys(t).length&&(s.context={...o,...t}),i(s)}0&&(module.exports={addBreadcrumb,captureError,errorHandlingMiddleware,initTracker,setContext,setTag,setUser});
|
|
2
2
|
//# sourceMappingURL=node.cjs.map
|
package/dist/node.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},r={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.
|
|
1
|
+
var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},r={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.9",nodeVersion:process.version,platform:process.platform,arch:process.arch},i=null,a={},o=[],p=30;function c(e){if(n.debug&&console.error("[Scout]:",e),i&&(e.user=i),Object.keys(a).length&&(e.context={...a}),e.breadcrumbs=o.slice(),n.endpoint&&n.sendErrors){let t={"Content-Type":"application/json"};n.token&&(t["X-Ingest-Token"]=n.token),fetch(n.endpoint,{method:"POST",headers:t,body:JSON.stringify(e)}).catch(s=>{console.error("[Scout] Failed to send error:",s.message)})}}function l(e={},t={}){r={...r,...e},n={...n,...t},process.on("uncaughtException",s=>{c({type:"uncaughtException",message:s.message,stack:s.stack,errorTrace:s.stack,timestamp:new Date().toISOString(),...r})}),process.on("unhandledRejection",s=>{c({type:"unhandledRejection",message:s?.message||"Unhandled Promise Rejection",stack:s?.stack||"No stack trace",errorTrace:s?.stack||"No stack trace",timestamp:new Date().toISOString(),...r})})}function m(e,t,s,d){let u={type:"expressError",message:e.message,stack:n.captureStackTrace?e.stack:void 0,errorTrace:n.captureStackTrace?e.stack:void 0,path:t.originalUrl,method:t.method,params:t.params,query:t.query,headers:n.captureRequestDetails?t.headers:void 0,timestamp:new Date().toISOString(),...r};n.captureUserDetails&&t.user&&(u.user={id:t.user.id||t.user._id,email:t.user.email,name:t.user.name||t.user.username}),c(u),s.status(500).json({error:"Internal Server Error"})}function g(e){i=e}function f(e){a={...a,...e}}function k(e,t){a[e]=t}function h(e){o.push({timestamp:Date.now(),...e}),o.length>p&&o.shift()}function S(e,t={}){let s={type:"manual",message:e?.message||String(e),stack:e?.stack,errorTrace:e?.stack,timestamp:new Date().toISOString(),...r};Object.keys(t).length&&(s.context={...a,...t}),c(s)}export{h as addBreadcrumb,S as captureError,m as errorHandlingMiddleware,l as initTracker,f as setContext,k as setTag,g as setUser};
|
|
2
2
|
//# sourceMappingURL=node.js.map
|
package/dist/react.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var j=Object.create;var m=Object.defineProperty,V=Object.defineProperties,q=Object.getOwnPropertyDescriptor,z=Object.getOwnPropertyDescriptors,J=Object.getOwnPropertyNames,U=Object.getOwnPropertySymbols,G=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var D=(e,r,t)=>r in e?m(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,l=(e,r)=>{for(var t in r||(r={}))P.call(r,t)&&D(e,t,r[t]);if(U)for(var t of U(r))K.call(r,t)&&D(e,t,r[t]);return e},A=(e,r)=>V(e,z(r));var Z=(e,r)=>{for(var t in r)m(e,t,{get:r[t],enumerable:!0})},N=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of J(r))!P.call(e,a)&&a!==t&&m(e,a,{get:()=>r[a],enumerable:!(s=q(r,a))||s.enumerable});return e};var Q=(e,r,t)=>(t=e!=null?j(G(e)):{},N(r||!e||!e.__esModule?m(t,"default",{value:e,enumerable:!0}):t,e)),Y=e=>N(m({},"__esModule",{value:!0}),e);var S=(e,r,t)=>new Promise((s,a)=>{var n=c=>{try{u(t.next(c))}catch(f){a(f)}},o=c=>{try{u(t.throw(c))}catch(f){a(f)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(n,o);u((t=t.apply(e,r)).next())});var fe={};Z(fe,{ScoutErrorBoundary:()=>L});module.exports=Y(fe);var X=Q(require("react"),1);var ee={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},ee),W,g={environment:typeof window!="undefined"&&((W=window.location)==null?void 0:W.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.
|
|
1
|
+
var j=Object.create;var m=Object.defineProperty,V=Object.defineProperties,q=Object.getOwnPropertyDescriptor,z=Object.getOwnPropertyDescriptors,J=Object.getOwnPropertyNames,U=Object.getOwnPropertySymbols,G=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var D=(e,r,t)=>r in e?m(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,l=(e,r)=>{for(var t in r||(r={}))P.call(r,t)&&D(e,t,r[t]);if(U)for(var t of U(r))K.call(r,t)&&D(e,t,r[t]);return e},A=(e,r)=>V(e,z(r));var Z=(e,r)=>{for(var t in r)m(e,t,{get:r[t],enumerable:!0})},N=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of J(r))!P.call(e,a)&&a!==t&&m(e,a,{get:()=>r[a],enumerable:!(s=q(r,a))||s.enumerable});return e};var Q=(e,r,t)=>(t=e!=null?j(G(e)):{},N(r||!e||!e.__esModule?m(t,"default",{value:e,enumerable:!0}):t,e)),Y=e=>N(m({},"__esModule",{value:!0}),e);var S=(e,r,t)=>new Promise((s,a)=>{var n=c=>{try{u(t.next(c))}catch(f){a(f)}},o=c=>{try{u(t.throw(c))}catch(f){a(f)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(n,o);u((t=t.apply(e,r)).next())});var fe={};Z(fe,{ScoutErrorBoundary:()=>L});module.exports=Y(fe);var X=Q(require("react"),1);var ee={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},ee),W,g={environment:typeof window!="undefined"&&((W=window.location)==null?void 0:W.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.9",project:null,release:null,version:null,app:null},_={clicks:0,scrolls:0},C=null,O=!1,M=null,w={},k=[],re=30;var v=console.warn;var $=console.log;function R(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function ne(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",R("user")),localStorage.getItem("__scoutUserId")),r=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",R("session")),sessionStorage.getItem("__scoutSessionId"));return C=C||R("pageload"),{pageloadId:C,userId:e,sessionId:r}}function te(){var t,s,a;if((s=(t=window._uaParserResult)==null?void 0:t.browser)!=null&&s.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((a=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:a.n)||"Unknown"}function oe(){var t,s,a;if((s=(t=window._uaParserResult)==null?void 0:t.os)!=null&&s.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((a=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:a.n)||"Unknown"}function se(){var r,t,s,a,n,o,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:te(),browserVersion:((t=(r=window._uaParserResult)==null?void 0:r.browser)==null?void 0:t.version)||null,os:oe(),osVersion:((a=(s=window._uaParserResult)==null?void 0:s.os)==null?void 0:a.version)||null,deviceType:((o=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:o.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:_.clicks,userScrolls:_.scrolls}}function y(e){return!i.ignoreErrors||!Array.isArray(i.ignoreErrors)?!1:i.ignoreErrors.some(r=>typeof r=="string"?e.includes(r):r instanceof RegExp?r.test(e):!1)}function F(e,r){let t=new AbortController,s=setTimeout(()=>t.abort(),5e3),a={"Content-Type":"application/json"};return i.token&&(a["X-Ingest-Token"]=i.token),fetch(e,{method:"POST",headers:a,body:JSON.stringify(r),signal:t.signal}).then(n=>(clearTimeout(s),n)).catch(()=>{clearTimeout(s)})}function E(e){let r=(e[0]||"")+"",t=[...e];return r.replace(/%[sdj]/g,s=>{let a=t.shift();return s==="%s"?String(a):s==="%d"?Number(a):s==="%j"?JSON.stringify(a):s})}function H(e,r){let t=document.createElement("script");t.src=e,t.async=!0,r&&(t.onload=r),document.head.appendChild(t)}function ae(e,r,t){return S(this,null,function*(){var s;try{let a=yield fetch(e);if(!a.ok)return null;let n=yield a.text(),o=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(o)c=JSON.parse(atob(o[1]));else if(u){let B=new URL(u[1],e).href,I=yield fetch(B);if(!I.ok)return null;c=yield I.json()}else return null;if(!((s=window.sourceMap)!=null&&s.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:r,column:t});if(!d.source)return null;let T=c.sources.indexOf(d.source),x=null;return c.sourcesContent&&c.sourcesContent[T]&&(x=c.sourcesContent[T]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:x}}catch(a){return null}})}function p(e){k.push(l({timestamp:Date.now()},e)),k.length>re&&k.shift()}function h(e){return S(this,null,function*(){let r=i.browserDetails?se():{},t=Object.assign(e,r,g,ne());if(M&&(t.user=M),Object.keys(w).length&&(t.context=l({},w)),t.breadcrumbs=k.slice(),i.sampleRate&&Math.random()<1-parseFloat(i.sampleRate)){i.debug&&$("[Scout] Suppressed by sampling");return}if(i.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let s=e.errorTrace.split(`
|
|
2
2
|
`),a=[s[0]];for(let n=1;n<s.length;n++)!s[n].includes("/scout")&&!s[n].includes("scout.js")&&!s[n].includes("scout-error")&&a.push(s[n]);a.length>1&&(e.errorTrace=a.join(`
|
|
3
3
|
`))}catch(s){}if((e.errorTrace||e.stack)&&!e.source)try{let s=e.errorTrace||e.stack,a=s?s.split(`
|
|
4
4
|
`):[];for(let n=1;n<a.length;n++){let o=a[n].trim().match(/(http.*?):(\d+):(\d+)/);if(o){e.source=o[1],e.lineno=parseInt(o[2],10),e.colno=parseInt(o[3],10);break}}}catch(s){}if(i.debug&&$("[Scout] Sending:",t),i.endpoint&&F(i.endpoint,t),i.handleSourceMaps&&e.source&&e.lineno)try{let s=yield ae(e.source,e.lineno,e.colno||0);if(s){let a=A(l({},t),{originalSource:s.originalSource,originalLine:s.originalLine,originalColumn:s.originalColumn,originalName:s.originalName,highlightLineNumber:s.originalLine});s.snippet&&(a.snippet=s.snippet),i.endpoint&&F(i.endpoint,a)}}catch(s){}})}function b(e){i.enabled&&h(e)}function ie(e){M=e}function ce(e){w=l(l({},w),e)}function le(e,r){w[e]=r}function ue(){if(i.trackUserInteractions){document.addEventListener("click",o=>{_.clicks++;let u=o.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);p({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let o=Date.now();o-n>100&&(_.scrolls++,n=o)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let r=window.fetch;window.fetch=function(n,o){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(o==null?void 0:o.method)||"GET",f=Date.now();return r.apply(this,arguments).then(d=>(p({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw p({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let t=XMLHttpRequest.prototype.open,s=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,o){return this._scoutMethod=n,this._scoutUrl=o,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,o=Date.now();return n.addEventListener("loadend",()=>{p({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-o}})}),s.apply(this,arguments)},i.addErrorEventListener&&window.addEventListener("error",n=>S(this,null,function*(){if(i.enabled){try{let o=n.error?n.error.stack:"No stack trace available";if(y(n.message))return;i.sendErrors&&h({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:o})}catch(o){v("[Scout] Error handler failure:",o)}i.selfHealingErrors&&n.preventDefault()}})),i.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(i.enabled){try{let o=n.reason,u=(o==null?void 0:o.stack)||"No stack trace available";if(y((o==null?void 0:o.message)||""))return;i.sendErrors&&h({type:"Unhandled Promise Rejection",message:(o==null?void 0:o.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(o){v("[Scout] Rejection handler failure:",o)}i.selfHealingErrors&&n.preventDefault()}}),i.overrideConsoleError&&(console.error=function(...n){if(i.enabled)try{let o=new Error().stack;if(y(E(n)))return;i.sendErrors&&h({type:"console.error",errorTrace:o,args:E(n)})}catch(o){v("[Scout] console.error override failure:",o)}}),i.overrideConsoleWarn&&(console.warn=function(...n){if(i.enabled)try{let o=new Error().stack;if(y(E(n)))return;i.sendErrors&&h({type:"console.warn",errorTrace:o,args:E(n)})}catch(o){v("[Scout] console.warn override failure:",o)}});let a=i.endpoint?new URL(i.endpoint).origin:"";i.loadUAParser&&i.browserDetails&&a&&H(`${a}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),i.handleSourceMaps&&a&&H(`${a}/vendor/source-map.min.js`)}function de(e={},r={}){if(e.user&&(M=e.user,delete e.user),O){g=l(l({},g),e),i=l(l({},i),r);return}g=l(l({},g),e),i=l(l({},i),r),O=!0,typeof window!="undefined"&&ue()}typeof window!="undefined"&&(window.Scout={init:de,setScope:e=>{g=l(l({},g),e)},setConfig:e=>{i=l(l({},i),e)},setUser:ie,setContext:ce,setTag:le,addBreadcrumb:p,error:b});var L=class extends X.default.Component{constructor(r){super(r),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(r,t){b({message:r.message,stack:r.stack,errorTrace:r.stack,component:(t==null?void 0:t.componentStack)||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};
|
package/dist/react.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var H=Object.defineProperty,W=Object.defineProperties;var X=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var I=(e,n,t)=>n in e?H(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,l=(e,n)=>{for(var t in n||(n={}))B.call(n,t)&&I(e,t,n[t]);if(x)for(var t of x(n))j.call(n,t)&&I(e,t,n[t]);return e},U=(e,n)=>W(e,X(n));var w=(e,n,t)=>new Promise((s,i)=>{var r=c=>{try{u(t.next(c))}catch(f){i(f)}},o=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(r,o);u((t=t.apply(e,n)).next())});import te from"react";var V={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},V),O,g={environment:typeof window!="undefined"&&((O=window.location)==null?void 0:O.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.
|
|
1
|
+
var H=Object.defineProperty,W=Object.defineProperties;var X=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var I=(e,n,t)=>n in e?H(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,l=(e,n)=>{for(var t in n||(n={}))B.call(n,t)&&I(e,t,n[t]);if(x)for(var t of x(n))j.call(n,t)&&I(e,t,n[t]);return e},U=(e,n)=>W(e,X(n));var w=(e,n,t)=>new Promise((s,i)=>{var r=c=>{try{u(t.next(c))}catch(f){i(f)}},o=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(r,o);u((t=t.apply(e,n)).next())});import te from"react";var V={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},V),O,g={environment:typeof window!="undefined"&&((O=window.location)==null?void 0:O.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.9",project:null,release:null,version:null,app:null},k={clicks:0,scrolls:0},M=null,D=!1,_=null,h={},E=[],q=30;var S=console.warn;var P=console.log;function C(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function z(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",C("user")),localStorage.getItem("__scoutUserId")),n=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",C("session")),sessionStorage.getItem("__scoutSessionId"));return M=M||C("pageload"),{pageloadId:M,userId:e,sessionId:n}}function J(){var t,s,i;if((s=(t=window._uaParserResult)==null?void 0:t.browser)!=null&&s.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((i=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function G(){var t,s,i;if((s=(t=window._uaParserResult)==null?void 0:t.os)!=null&&s.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((i=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function K(){var n,t,s,i,r,o,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:J(),browserVersion:((t=(n=window._uaParserResult)==null?void 0:n.browser)==null?void 0:t.version)||null,os:G(),osVersion:((i=(s=window._uaParserResult)==null?void 0:s.os)==null?void 0:i.version)||null,deviceType:((o=(r=window._uaParserResult)==null?void 0:r.device)==null?void 0:o.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:k.clicks,userScrolls:k.scrolls}}function v(e){return!a.ignoreErrors||!Array.isArray(a.ignoreErrors)?!1:a.ignoreErrors.some(n=>typeof n=="string"?e.includes(n):n instanceof RegExp?n.test(e):!1)}function A(e,n){let t=new AbortController,s=setTimeout(()=>t.abort(),5e3),i={"Content-Type":"application/json"};return a.token&&(i["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:i,body:JSON.stringify(n),signal:t.signal}).then(r=>(clearTimeout(s),r)).catch(()=>{clearTimeout(s)})}function y(e){let n=(e[0]||"")+"",t=[...e];return n.replace(/%[sdj]/g,s=>{let i=t.shift();return s==="%s"?String(i):s==="%d"?Number(i):s==="%j"?JSON.stringify(i):s})}function N(e,n){let t=document.createElement("script");t.src=e,t.async=!0,n&&(t.onload=n),document.head.appendChild(t)}function Z(e,n,t){return w(this,null,function*(){var s;try{let i=yield fetch(e);if(!i.ok)return null;let r=yield i.text(),o=r.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=r.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(o)c=JSON.parse(atob(o[1]));else if(u){let F=new URL(u[1],e).href,T=yield fetch(F);if(!T.ok)return null;c=yield T.json()}else return null;if(!((s=window.sourceMap)!=null&&s.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:n,column:t});if(!d.source)return null;let b=c.sources.indexOf(d.source),L=null;return c.sourcesContent&&c.sourcesContent[b]&&(L=c.sourcesContent[b]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:L}}catch(i){return null}})}function p(e){E.push(l({timestamp:Date.now()},e)),E.length>q&&E.shift()}function m(e){return w(this,null,function*(){let n=a.browserDetails?K():{},t=Object.assign(e,n,g,z());if(_&&(t.user=_),Object.keys(h).length&&(t.context=l({},h)),t.breadcrumbs=E.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&P("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let s=e.errorTrace.split(`
|
|
2
2
|
`),i=[s[0]];for(let r=1;r<s.length;r++)!s[r].includes("/scout")&&!s[r].includes("scout.js")&&!s[r].includes("scout-error")&&i.push(s[r]);i.length>1&&(e.errorTrace=i.join(`
|
|
3
3
|
`))}catch(s){}if((e.errorTrace||e.stack)&&!e.source)try{let s=e.errorTrace||e.stack,i=s?s.split(`
|
|
4
4
|
`):[];for(let r=1;r<i.length;r++){let o=i[r].trim().match(/(http.*?):(\d+):(\d+)/);if(o){e.source=o[1],e.lineno=parseInt(o[2],10),e.colno=parseInt(o[3],10);break}}}catch(s){}if(a.debug&&P("[Scout] Sending:",t),a.endpoint&&A(a.endpoint,t),a.handleSourceMaps&&e.source&&e.lineno)try{let s=yield Z(e.source,e.lineno,e.colno||0);if(s){let i=U(l({},t),{originalSource:s.originalSource,originalLine:s.originalLine,originalColumn:s.originalColumn,originalName:s.originalName,highlightLineNumber:s.originalLine});s.snippet&&(i.snippet=s.snippet),a.endpoint&&A(a.endpoint,i)}}catch(s){}})}function R(e){a.enabled&&m(e)}function Q(e){_=e}function Y(e){h=l(l({},h),e)}function ee(e,n){h[e]=n}function re(){if(a.trackUserInteractions){document.addEventListener("click",o=>{k.clicks++;let u=o.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);p({category:"click",message:c+(f?": "+f:"")})});let r=0;window.addEventListener("scroll",()=>{let o=Date.now();o-r>100&&(k.scrolls++,r=o)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let n=window.fetch;window.fetch=function(r,o){let u=typeof r=="string"?r:(r==null?void 0:r.url)||"",c=(o==null?void 0:o.method)||"GET",f=Date.now();return n.apply(this,arguments).then(d=>(p({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw p({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let t=XMLHttpRequest.prototype.open,s=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,o){return this._scoutMethod=r,this._scoutUrl=o,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,o=Date.now();return r.addEventListener("loadend",()=>{p({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-o}})}),s.apply(this,arguments)},a.addErrorEventListener&&window.addEventListener("error",r=>w(this,null,function*(){if(a.enabled){try{let o=r.error?r.error.stack:"No stack trace available";if(v(r.message))return;a.sendErrors&&m({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:o})}catch(o){S("[Scout] Error handler failure:",o)}a.selfHealingErrors&&r.preventDefault()}})),a.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(a.enabled){try{let o=r.reason,u=(o==null?void 0:o.stack)||"No stack trace available";if(v((o==null?void 0:o.message)||""))return;a.sendErrors&&m({type:"Unhandled Promise Rejection",message:(o==null?void 0:o.message)||"Unhandled Promise Rejection",reason:r.reason,errorTrace:u})}catch(o){S("[Scout] Rejection handler failure:",o)}a.selfHealingErrors&&r.preventDefault()}}),a.overrideConsoleError&&(console.error=function(...r){if(a.enabled)try{let o=new Error().stack;if(v(y(r)))return;a.sendErrors&&m({type:"console.error",errorTrace:o,args:y(r)})}catch(o){S("[Scout] console.error override failure:",o)}}),a.overrideConsoleWarn&&(console.warn=function(...r){if(a.enabled)try{let o=new Error().stack;if(v(y(r)))return;a.sendErrors&&m({type:"console.warn",errorTrace:o,args:y(r)})}catch(o){S("[Scout] console.warn override failure:",o)}});let i=a.endpoint?new URL(a.endpoint).origin:"";a.loadUAParser&&a.browserDetails&&i&&N(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),a.handleSourceMaps&&i&&N(`${i}/vendor/source-map.min.js`)}function ne(e={},n={}){if(e.user&&(_=e.user,delete e.user),D){g=l(l({},g),e),a=l(l({},a),n);return}g=l(l({},g),e),a=l(l({},a),n),D=!0,typeof window!="undefined"&&re()}typeof window!="undefined"&&(window.Scout={init:ne,setScope:e=>{g=l(l({},g),e)},setConfig:e=>{a=l(l({},a),e)},setUser:Q,setContext:Y,setTag:ee,addBreadcrumb:p,error:R});var $=class extends te.Component{constructor(n){super(n),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,t){R({message:n.message,stack:n.stack,errorTrace:n.stack,component:(t==null?void 0:t.componentStack)||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};export{$ as ScoutErrorBoundary};
|
package/dist/scout.iife.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{var $=Object.defineProperty,H=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var T=(e,s,t)=>s in e?$(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,l=(e,s)=>{for(var t in s||(s={}))B.call(s,t)&&T(e,t,s[t]);if(I)for(var t of I(s))W.call(s,t)&&T(e,t,s[t]);return e},x=(e,s)=>H(e,F(s));var h=(e,s,t)=>new Promise((o,i)=>{var n=c=>{try{u(t.next(c))}catch(f){i(f)}},r=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(n,r);u((t=t.apply(e,s)).next())});var X={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},X),N,p={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.
|
|
1
|
+
(()=>{var $=Object.defineProperty,H=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var T=(e,s,t)=>s in e?$(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,l=(e,s)=>{for(var t in s||(s={}))B.call(s,t)&&T(e,t,s[t]);if(I)for(var t of I(s))W.call(s,t)&&T(e,t,s[t]);return e},x=(e,s)=>H(e,F(s));var h=(e,s,t)=>new Promise((o,i)=>{var n=c=>{try{u(t.next(c))}catch(f){i(f)}},r=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(n,r);u((t=t.apply(e,s)).next())});var X={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},X),N,p={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.9",project:null,release:null,version:null,app:null},_={clicks:0,scrolls:0},k=null,U=!1,M=null,w={},E=[],j=30;var S=console.warn;var P=console.log;function R(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function V(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",R("user")),localStorage.getItem("__scoutUserId")),s=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",R("session")),sessionStorage.getItem("__scoutSessionId"));return k=k||R("pageload"),{pageloadId:k,userId:e,sessionId:s}}function q(){var t,o,i;if((o=(t=window._uaParserResult)==null?void 0:t.browser)!=null&&o.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((i=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:i.n)||"Unknown"}function z(){var t,o,i;if((o=(t=window._uaParserResult)==null?void 0:t.os)!=null&&o.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((i=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:i.n)||"Unknown"}function J(){var s,t,o,i,n,r,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:q(),browserVersion:((t=(s=window._uaParserResult)==null?void 0:s.browser)==null?void 0:t.version)||null,os:z(),osVersion:((i=(o=window._uaParserResult)==null?void 0:o.os)==null?void 0:i.version)||null,deviceType:((r=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:r.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:_.clicks,userScrolls:_.scrolls}}function v(e){return!a.ignoreErrors||!Array.isArray(a.ignoreErrors)?!1:a.ignoreErrors.some(s=>typeof s=="string"?e.includes(s):s instanceof RegExp?s.test(e):!1)}function D(e,s){let t=new AbortController,o=setTimeout(()=>t.abort(),5e3),i={"Content-Type":"application/json"};return a.token&&(i["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:i,body:JSON.stringify(s),signal:t.signal}).then(n=>(clearTimeout(o),n)).catch(()=>{clearTimeout(o)})}function y(e){let s=(e[0]||"")+"",t=[...e];return s.replace(/%[sdj]/g,o=>{let i=t.shift();return o==="%s"?String(i):o==="%d"?Number(i):o==="%j"?JSON.stringify(i):o})}function A(e,s){let t=document.createElement("script");t.src=e,t.async=!0,s&&(t.onload=s),document.head.appendChild(t)}function G(e,s,t){return h(this,null,function*(){var o;try{let i=yield fetch(e);if(!i.ok)return null;let n=yield i.text(),r=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(r)c=JSON.parse(atob(r[1]));else if(u){let O=new URL(u[1],e).href,b=yield fetch(O);if(!b.ok)return null;c=yield b.json()}else return null;if(!((o=window.sourceMap)!=null&&o.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:s,column:t});if(!d.source)return null;let C=c.sources.indexOf(d.source),L=null;return c.sourcesContent&&c.sourcesContent[C]&&(L=c.sourcesContent[C]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:L}}catch(i){return null}})}function g(e){E.push(l({timestamp:Date.now()},e)),E.length>j&&E.shift()}function m(e){return h(this,null,function*(){let s=a.browserDetails?J():{},t=Object.assign(e,s,p,V());if(M&&(t.user=M),Object.keys(w).length&&(t.context=l({},w)),t.breadcrumbs=E.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&P("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let o=e.errorTrace.split(`
|
|
2
2
|
`),i=[o[0]];for(let n=1;n<o.length;n++)!o[n].includes("/scout")&&!o[n].includes("scout.js")&&!o[n].includes("scout-error")&&i.push(o[n]);i.length>1&&(e.errorTrace=i.join(`
|
|
3
3
|
`))}catch(o){}if((e.errorTrace||e.stack)&&!e.source)try{let o=e.errorTrace||e.stack,i=o?o.split(`
|
|
4
4
|
`):[];for(let n=1;n<i.length;n++){let r=i[n].trim().match(/(http.*?):(\d+):(\d+)/);if(r){e.source=r[1],e.lineno=parseInt(r[2],10),e.colno=parseInt(r[3],10);break}}}catch(o){}if(a.debug&&P("[Scout] Sending:",t),a.endpoint&&D(a.endpoint,t),a.handleSourceMaps&&e.source&&e.lineno)try{let o=yield G(e.source,e.lineno,e.colno||0);if(o){let i=x(l({},t),{originalSource:o.originalSource,originalLine:o.originalLine,originalColumn:o.originalColumn,originalName:o.originalName,highlightLineNumber:o.originalLine});o.snippet&&(i.snippet=o.snippet),a.endpoint&&D(a.endpoint,i)}}catch(o){}})}function K(e){a.enabled&&m(e)}function Z(e){M=e}function Q(e){w=l(l({},w),e)}function Y(e,s){w[e]=s}function te(e){g(e)}function ee(){if(a.trackUserInteractions){document.addEventListener("click",r=>{_.clicks++;let u=r.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);g({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let r=Date.now();r-n>100&&(_.scrolls++,n=r)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),g({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{g({category:"navigation",message:window.location.href})});let s=window.fetch;window.fetch=function(n,r){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(r==null?void 0:r.method)||"GET",f=Date.now();return s.apply(this,arguments).then(d=>(g({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw g({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let t=XMLHttpRequest.prototype.open,o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,r){return this._scoutMethod=n,this._scoutUrl=r,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,r=Date.now();return n.addEventListener("loadend",()=>{g({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-r}})}),o.apply(this,arguments)},a.addErrorEventListener&&window.addEventListener("error",n=>h(this,null,function*(){if(a.enabled){try{let r=n.error?n.error.stack:"No stack trace available";if(v(n.message))return;a.sendErrors&&m({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:r})}catch(r){S("[Scout] Error handler failure:",r)}a.selfHealingErrors&&n.preventDefault()}})),a.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(a.enabled){try{let r=n.reason,u=(r==null?void 0:r.stack)||"No stack trace available";if(v((r==null?void 0:r.message)||""))return;a.sendErrors&&m({type:"Unhandled Promise Rejection",message:(r==null?void 0:r.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(r){S("[Scout] Rejection handler failure:",r)}a.selfHealingErrors&&n.preventDefault()}}),a.overrideConsoleError&&(console.error=function(...n){if(a.enabled)try{let r=new Error().stack;if(v(y(n)))return;a.sendErrors&&m({type:"console.error",errorTrace:r,args:y(n)})}catch(r){S("[Scout] console.error override failure:",r)}}),a.overrideConsoleWarn&&(console.warn=function(...n){if(a.enabled)try{let r=new Error().stack;if(v(y(n)))return;a.sendErrors&&m({type:"console.warn",errorTrace:r,args:y(n)})}catch(r){S("[Scout] console.warn override failure:",r)}});let i=a.endpoint?new URL(a.endpoint).origin:"";a.loadUAParser&&a.browserDetails&&i&&A(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),a.handleSourceMaps&&i&&A(`${i}/vendor/source-map.min.js`)}function ne(e={},s={}){if(e.user&&(M=e.user,delete e.user),U){p=l(l({},p),e),a=l(l({},a),s);return}p=l(l({},p),e),a=l(l({},a),s),U=!0,typeof window!="undefined"&&ee()}typeof window!="undefined"&&(window.Scout={init:ne,setScope:e=>{p=l(l({},p),e)},setConfig:e=>{a=l(l({},a),e)},setUser:Z,setContext:Q,setTag:Y,addBreadcrumb:g,error:K});})();
|
package/dist/vue.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var h=Object.defineProperty,B=Object.defineProperties,W=Object.getOwnPropertyDescriptor,X=Object.getOwnPropertyDescriptors,V=Object.getOwnPropertyNames,x=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var U=(e,o,r)=>o in e?h(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r,l=(e,o)=>{for(var r in o||(o={}))P.call(o,r)&&U(e,r,o[r]);if(x)for(var r of x(o))j.call(o,r)&&U(e,r,o[r]);return e},D=(e,o)=>B(e,X(o));var q=(e,o)=>{for(var r in o)h(e,r,{get:o[r],enumerable:!0})},z=(e,o,r,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of V(o))!P.call(e,s)&&s!==r&&h(e,s,{get:()=>o[s],enumerable:!(t=W(o,s))||t.enumerable});return e};var J=e=>z(h({},"__esModule",{value:!0}),e);var S=(e,o,r)=>new Promise((t,s)=>{var n=c=>{try{u(r.next(c))}catch(f){s(f)}},a=c=>{try{u(r.throw(c))}catch(f){s(f)}},u=c=>c.done?t(c.value):Promise.resolve(c.value).then(n,a);u((r=r.apply(e,o)).next())});var ce={};q(ce,{ScoutVue:()=>ie});module.exports=J(ce);var G={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},G),H,g={environment:typeof window!="undefined"&&((H=window.location)==null?void 0:H.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.
|
|
1
|
+
var h=Object.defineProperty,B=Object.defineProperties,W=Object.getOwnPropertyDescriptor,X=Object.getOwnPropertyDescriptors,V=Object.getOwnPropertyNames,x=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var U=(e,o,r)=>o in e?h(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r,l=(e,o)=>{for(var r in o||(o={}))P.call(o,r)&&U(e,r,o[r]);if(x)for(var r of x(o))j.call(o,r)&&U(e,r,o[r]);return e},D=(e,o)=>B(e,X(o));var q=(e,o)=>{for(var r in o)h(e,r,{get:o[r],enumerable:!0})},z=(e,o,r,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of V(o))!P.call(e,s)&&s!==r&&h(e,s,{get:()=>o[s],enumerable:!(t=W(o,s))||t.enumerable});return e};var J=e=>z(h({},"__esModule",{value:!0}),e);var S=(e,o,r)=>new Promise((t,s)=>{var n=c=>{try{u(r.next(c))}catch(f){s(f)}},a=c=>{try{u(r.throw(c))}catch(f){s(f)}},u=c=>c.done?t(c.value):Promise.resolve(c.value).then(n,a);u((r=r.apply(e,o)).next())});var ce={};q(ce,{ScoutVue:()=>ie});module.exports=J(ce);var G={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},G),H,g={environment:typeof window!="undefined"&&((H=window.location)==null?void 0:H.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.9",project:null,release:null,version:null,app:null},v={clicks:0,scrolls:0},C=null,A=!1,M=null,m={},k=[],K=30;var y=console.warn;var $=console.log;function L(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function Z(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",L("user")),localStorage.getItem("__scoutUserId")),o=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",L("session")),sessionStorage.getItem("__scoutSessionId"));return C=C||L("pageload"),{pageloadId:C,userId:e,sessionId:o}}function Q(){var r,t,s;if((t=(r=window._uaParserResult)==null?void 0:r.browser)!=null&&t.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((s=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:s.n)||"Unknown"}function Y(){var r,t,s;if((t=(r=window._uaParserResult)==null?void 0:r.os)!=null&&t.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((s=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:s.n)||"Unknown"}function ee(){var o,r,t,s,n,a,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:Q(),browserVersion:((r=(o=window._uaParserResult)==null?void 0:o.browser)==null?void 0:r.version)||null,os:Y(),osVersion:((s=(t=window._uaParserResult)==null?void 0:t.os)==null?void 0:s.version)||null,deviceType:((a=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:a.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:v.clicks,userScrolls:v.scrolls}}function E(e){return!i.ignoreErrors||!Array.isArray(i.ignoreErrors)?!1:i.ignoreErrors.some(o=>typeof o=="string"?e.includes(o):o instanceof RegExp?o.test(e):!1)}function N(e,o){let r=new AbortController,t=setTimeout(()=>r.abort(),5e3),s={"Content-Type":"application/json"};return i.token&&(s["X-Ingest-Token"]=i.token),fetch(e,{method:"POST",headers:s,body:JSON.stringify(o),signal:r.signal}).then(n=>(clearTimeout(t),n)).catch(()=>{clearTimeout(t)})}function _(e){let o=(e[0]||"")+"",r=[...e];return o.replace(/%[sdj]/g,t=>{let s=r.shift();return t==="%s"?String(s):t==="%d"?Number(s):t==="%j"?JSON.stringify(s):t})}function O(e,o){let r=document.createElement("script");r.src=e,r.async=!0,o&&(r.onload=o),document.head.appendChild(r)}function ne(e,o,r){return S(this,null,function*(){var t;try{let s=yield fetch(e);if(!s.ok)return null;let n=yield s.text(),a=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(a)c=JSON.parse(atob(a[1]));else if(u){let F=new URL(u[1],e).href,T=yield fetch(F);if(!T.ok)return null;c=yield T.json()}else return null;if(!((t=window.sourceMap)!=null&&t.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:o,column:r});if(!d.source)return null;let b=c.sources.indexOf(d.source),I=null;return c.sourcesContent&&c.sourcesContent[b]&&(I=c.sourcesContent[b]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:I}}catch(s){return null}})}function p(e){k.push(l({timestamp:Date.now()},e)),k.length>K&&k.shift()}function w(e){return S(this,null,function*(){let o=i.browserDetails?ee():{},r=Object.assign(e,o,g,Z());if(M&&(r.user=M),Object.keys(m).length&&(r.context=l({},m)),r.breadcrumbs=k.slice(),i.sampleRate&&Math.random()<1-parseFloat(i.sampleRate)){i.debug&&$("[Scout] Suppressed by sampling");return}if(i.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let t=e.errorTrace.split(`
|
|
2
2
|
`),s=[t[0]];for(let n=1;n<t.length;n++)!t[n].includes("/scout")&&!t[n].includes("scout.js")&&!t[n].includes("scout-error")&&s.push(t[n]);s.length>1&&(e.errorTrace=s.join(`
|
|
3
3
|
`))}catch(t){}if((e.errorTrace||e.stack)&&!e.source)try{let t=e.errorTrace||e.stack,s=t?t.split(`
|
|
4
4
|
`):[];for(let n=1;n<s.length;n++){let a=s[n].trim().match(/(http.*?):(\d+):(\d+)/);if(a){e.source=a[1],e.lineno=parseInt(a[2],10),e.colno=parseInt(a[3],10);break}}}catch(t){}if(i.debug&&$("[Scout] Sending:",r),i.endpoint&&N(i.endpoint,r),i.handleSourceMaps&&e.source&&e.lineno)try{let t=yield ne(e.source,e.lineno,e.colno||0);if(t){let s=D(l({},r),{originalSource:t.originalSource,originalLine:t.originalLine,originalColumn:t.originalColumn,originalName:t.originalName,highlightLineNumber:t.originalLine});t.snippet&&(s.snippet=t.snippet),i.endpoint&&N(i.endpoint,s)}}catch(t){}})}function R(e){i.enabled&&w(e)}function re(e){M=e}function oe(e){m=l(l({},m),e)}function te(e,o){m[e]=o}function se(){if(i.trackUserInteractions){document.addEventListener("click",a=>{v.clicks++;let u=a.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);p({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let a=Date.now();a-n>100&&(v.scrolls++,n=a)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let o=window.fetch;window.fetch=function(n,a){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(a==null?void 0:a.method)||"GET",f=Date.now();return o.apply(this,arguments).then(d=>(p({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw p({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let r=XMLHttpRequest.prototype.open,t=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,a){return this._scoutMethod=n,this._scoutUrl=a,r.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,a=Date.now();return n.addEventListener("loadend",()=>{p({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-a}})}),t.apply(this,arguments)},i.addErrorEventListener&&window.addEventListener("error",n=>S(this,null,function*(){if(i.enabled){try{let a=n.error?n.error.stack:"No stack trace available";if(E(n.message))return;i.sendErrors&&w({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:a})}catch(a){y("[Scout] Error handler failure:",a)}i.selfHealingErrors&&n.preventDefault()}})),i.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(i.enabled){try{let a=n.reason,u=(a==null?void 0:a.stack)||"No stack trace available";if(E((a==null?void 0:a.message)||""))return;i.sendErrors&&w({type:"Unhandled Promise Rejection",message:(a==null?void 0:a.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(a){y("[Scout] Rejection handler failure:",a)}i.selfHealingErrors&&n.preventDefault()}}),i.overrideConsoleError&&(console.error=function(...n){if(i.enabled)try{let a=new Error().stack;if(E(_(n)))return;i.sendErrors&&w({type:"console.error",errorTrace:a,args:_(n)})}catch(a){y("[Scout] console.error override failure:",a)}}),i.overrideConsoleWarn&&(console.warn=function(...n){if(i.enabled)try{let a=new Error().stack;if(E(_(n)))return;i.sendErrors&&w({type:"console.warn",errorTrace:a,args:_(n)})}catch(a){y("[Scout] console.warn override failure:",a)}});let s=i.endpoint?new URL(i.endpoint).origin:"";i.loadUAParser&&i.browserDetails&&s&&O(`${s}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),i.handleSourceMaps&&s&&O(`${s}/vendor/source-map.min.js`)}function ae(e={},o={}){if(e.user&&(M=e.user,delete e.user),A){g=l(l({},g),e),i=l(l({},i),o);return}g=l(l({},g),e),i=l(l({},i),o),A=!0,typeof window!="undefined"&&se()}typeof window!="undefined"&&(window.Scout={init:ae,setScope:e=>{g=l(l({},g),e)},setConfig:e=>{i=l(l({},i),e)},setUser:re,setContext:oe,setTag:te,addBreadcrumb:p,error:R});var ie={install(e){e.config.errorHandler=(o,r,t)=>{var s,n;R({message:o.message,stack:o.stack,errorTrace:o.stack,component:((s=r==null?void 0:r.$options)==null?void 0:s.name)||((n=r==null?void 0:r.$options)==null?void 0:n.__name)||"Anonymous",type:"vue-error-handler",info:t})},e.config.warnHandler=(o,r,t)=>{var s,n;R({message:o,component:((s=r==null?void 0:r.$options)==null?void 0:s.name)||((n=r==null?void 0:r.$options)==null?void 0:n.__name)||"Anonymous",type:"vue-warn-handler",errorTrace:t})}}};
|
package/dist/vue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var H=Object.defineProperty,F=Object.defineProperties;var B=Object.getOwnPropertyDescriptors;var T=Object.getOwnPropertySymbols;var W=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable;var x=(e,o,r)=>o in e?H(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r,l=(e,o)=>{for(var r in o||(o={}))W.call(o,r)&&x(e,r,o[r]);if(T)for(var r of T(o))X.call(o,r)&&x(e,r,o[r]);return e},U=(e,o)=>F(e,B(o));var h=(e,o,r)=>new Promise((t,a)=>{var n=c=>{try{u(r.next(c))}catch(f){a(f)}},s=c=>{try{u(r.throw(c))}catch(f){a(f)}},u=c=>c.done?t(c.value):Promise.resolve(c.value).then(n,s);u((r=r.apply(e,o)).next())});var V={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},V),N,g={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.
|
|
1
|
+
var H=Object.defineProperty,F=Object.defineProperties;var B=Object.getOwnPropertyDescriptors;var T=Object.getOwnPropertySymbols;var W=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable;var x=(e,o,r)=>o in e?H(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r,l=(e,o)=>{for(var r in o||(o={}))W.call(o,r)&&x(e,r,o[r]);if(T)for(var r of T(o))X.call(o,r)&&x(e,r,o[r]);return e},U=(e,o)=>F(e,B(o));var h=(e,o,r)=>new Promise((t,a)=>{var n=c=>{try{u(r.next(c))}catch(f){a(f)}},s=c=>{try{u(r.throw(c))}catch(f){a(f)}},u=c=>c.done?t(c.value):Promise.resolve(c.value).then(n,s);u((r=r.apply(e,o)).next())});var V={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},V),N,g={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.9",project:null,release:null,version:null,app:null},k={clicks:0,scrolls:0},R=null,P=!1,v=null,m={},_=[],j=30;var S=console.warn;var D=console.log;function C(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function q(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",C("user")),localStorage.getItem("__scoutUserId")),o=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",C("session")),sessionStorage.getItem("__scoutSessionId"));return R=R||C("pageload"),{pageloadId:R,userId:e,sessionId:o}}function z(){var r,t,a;if((t=(r=window._uaParserResult)==null?void 0:r.browser)!=null&&t.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((a=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:a.n)||"Unknown"}function J(){var r,t,a;if((t=(r=window._uaParserResult)==null?void 0:r.os)!=null&&t.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((a=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:a.n)||"Unknown"}function G(){var o,r,t,a,n,s,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:z(),browserVersion:((r=(o=window._uaParserResult)==null?void 0:o.browser)==null?void 0:r.version)||null,os:J(),osVersion:((a=(t=window._uaParserResult)==null?void 0:t.os)==null?void 0:a.version)||null,deviceType:((s=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:s.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:k.clicks,userScrolls:k.scrolls}}function y(e){return!i.ignoreErrors||!Array.isArray(i.ignoreErrors)?!1:i.ignoreErrors.some(o=>typeof o=="string"?e.includes(o):o instanceof RegExp?o.test(e):!1)}function A(e,o){let r=new AbortController,t=setTimeout(()=>r.abort(),5e3),a={"Content-Type":"application/json"};return i.token&&(a["X-Ingest-Token"]=i.token),fetch(e,{method:"POST",headers:a,body:JSON.stringify(o),signal:r.signal}).then(n=>(clearTimeout(t),n)).catch(()=>{clearTimeout(t)})}function E(e){let o=(e[0]||"")+"",r=[...e];return o.replace(/%[sdj]/g,t=>{let a=r.shift();return t==="%s"?String(a):t==="%d"?Number(a):t==="%j"?JSON.stringify(a):t})}function $(e,o){let r=document.createElement("script");r.src=e,r.async=!0,o&&(r.onload=o),document.head.appendChild(r)}function K(e,o,r){return h(this,null,function*(){var t;try{let a=yield fetch(e);if(!a.ok)return null;let n=yield a.text(),s=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(s)c=JSON.parse(atob(s[1]));else if(u){let O=new URL(u[1],e).href,I=yield fetch(O);if(!I.ok)return null;c=yield I.json()}else return null;if(!((t=window.sourceMap)!=null&&t.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:o,column:r});if(!d.source)return null;let L=c.sources.indexOf(d.source),b=null;return c.sourcesContent&&c.sourcesContent[L]&&(b=c.sourcesContent[L]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:b}}catch(a){return null}})}function p(e){_.push(l({timestamp:Date.now()},e)),_.length>j&&_.shift()}function w(e){return h(this,null,function*(){let o=i.browserDetails?G():{},r=Object.assign(e,o,g,q());if(v&&(r.user=v),Object.keys(m).length&&(r.context=l({},m)),r.breadcrumbs=_.slice(),i.sampleRate&&Math.random()<1-parseFloat(i.sampleRate)){i.debug&&D("[Scout] Suppressed by sampling");return}if(i.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let t=e.errorTrace.split(`
|
|
2
2
|
`),a=[t[0]];for(let n=1;n<t.length;n++)!t[n].includes("/scout")&&!t[n].includes("scout.js")&&!t[n].includes("scout-error")&&a.push(t[n]);a.length>1&&(e.errorTrace=a.join(`
|
|
3
3
|
`))}catch(t){}if((e.errorTrace||e.stack)&&!e.source)try{let t=e.errorTrace||e.stack,a=t?t.split(`
|
|
4
4
|
`):[];for(let n=1;n<a.length;n++){let s=a[n].trim().match(/(http.*?):(\d+):(\d+)/);if(s){e.source=s[1],e.lineno=parseInt(s[2],10),e.colno=parseInt(s[3],10);break}}}catch(t){}if(i.debug&&D("[Scout] Sending:",r),i.endpoint&&A(i.endpoint,r),i.handleSourceMaps&&e.source&&e.lineno)try{let t=yield K(e.source,e.lineno,e.colno||0);if(t){let a=U(l({},r),{originalSource:t.originalSource,originalLine:t.originalLine,originalColumn:t.originalColumn,originalName:t.originalName,highlightLineNumber:t.originalLine});t.snippet&&(a.snippet=t.snippet),i.endpoint&&A(i.endpoint,a)}}catch(t){}})}function M(e){i.enabled&&w(e)}function Z(e){v=e}function Q(e){m=l(l({},m),e)}function Y(e,o){m[e]=o}function ee(){if(i.trackUserInteractions){document.addEventListener("click",s=>{k.clicks++;let u=s.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);p({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let s=Date.now();s-n>100&&(k.scrolls++,n=s)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let o=window.fetch;window.fetch=function(n,s){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(s==null?void 0:s.method)||"GET",f=Date.now();return o.apply(this,arguments).then(d=>(p({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw p({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let r=XMLHttpRequest.prototype.open,t=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,s){return this._scoutMethod=n,this._scoutUrl=s,r.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,s=Date.now();return n.addEventListener("loadend",()=>{p({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-s}})}),t.apply(this,arguments)},i.addErrorEventListener&&window.addEventListener("error",n=>h(this,null,function*(){if(i.enabled){try{let s=n.error?n.error.stack:"No stack trace available";if(y(n.message))return;i.sendErrors&&w({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:s})}catch(s){S("[Scout] Error handler failure:",s)}i.selfHealingErrors&&n.preventDefault()}})),i.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(i.enabled){try{let s=n.reason,u=(s==null?void 0:s.stack)||"No stack trace available";if(y((s==null?void 0:s.message)||""))return;i.sendErrors&&w({type:"Unhandled Promise Rejection",message:(s==null?void 0:s.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(s){S("[Scout] Rejection handler failure:",s)}i.selfHealingErrors&&n.preventDefault()}}),i.overrideConsoleError&&(console.error=function(...n){if(i.enabled)try{let s=new Error().stack;if(y(E(n)))return;i.sendErrors&&w({type:"console.error",errorTrace:s,args:E(n)})}catch(s){S("[Scout] console.error override failure:",s)}}),i.overrideConsoleWarn&&(console.warn=function(...n){if(i.enabled)try{let s=new Error().stack;if(y(E(n)))return;i.sendErrors&&w({type:"console.warn",errorTrace:s,args:E(n)})}catch(s){S("[Scout] console.warn override failure:",s)}});let a=i.endpoint?new URL(i.endpoint).origin:"";i.loadUAParser&&i.browserDetails&&a&&$(`${a}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),i.handleSourceMaps&&a&&$(`${a}/vendor/source-map.min.js`)}function ne(e={},o={}){if(e.user&&(v=e.user,delete e.user),P){g=l(l({},g),e),i=l(l({},i),o);return}g=l(l({},g),e),i=l(l({},i),o),P=!0,typeof window!="undefined"&&ee()}typeof window!="undefined"&&(window.Scout={init:ne,setScope:e=>{g=l(l({},g),e)},setConfig:e=>{i=l(l({},i),e)},setUser:Z,setContext:Q,setTag:Y,addBreadcrumb:p,error:M});var ae={install(e){e.config.errorHandler=(o,r,t)=>{var a,n;M({message:o.message,stack:o.stack,errorTrace:o.stack,component:((a=r==null?void 0:r.$options)==null?void 0:a.name)||((n=r==null?void 0:r.$options)==null?void 0:n.__name)||"Anonymous",type:"vue-error-handler",info:t})},e.config.warnHandler=(o,r,t)=>{var a,n;M({message:o,component:((a=r==null?void 0:r.$options)==null?void 0:a.name)||((n=r==null?void 0:r.$options)==null?void 0:n.__name)||"Anonymous",type:"vue-warn-handler",errorTrace:t})}}};export{ae as ScoutVue};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scout-error",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"description": "Lightweight error tracking for JavaScript applications",
|
|
5
5
|
"author": "James Futhey",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
"require": "./dist/node.cjs"
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
|
+
"bin": {
|
|
29
|
+
"scout": "./dist/cli.js",
|
|
30
|
+
"scout-error": "./dist/cli.js"
|
|
31
|
+
},
|
|
28
32
|
"files": [
|
|
29
33
|
"dist"
|
|
30
34
|
],
|