healcode-client 1.0.6 → 1.0.8
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/bin/healcode.js +139 -184
- package/dist/index.d.mts +4 -8
- package/dist/index.d.ts +4 -8
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/urls.config.json +1 -1
package/bin/healcode.js
CHANGED
|
@@ -10,6 +10,8 @@ import { fileURLToPath } from 'url';
|
|
|
10
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
11
|
const __dirname = path.dirname(__filename);
|
|
12
12
|
|
|
13
|
+
const CONFIG_FILE_NAME = 'healcode.config.json';
|
|
14
|
+
|
|
13
15
|
// Load URLs from config
|
|
14
16
|
let urlsConfig = { backendUrl: 'https://www.healdcode.somee.com', agentUrl: 'https://www.healdcode.somee.com' };
|
|
15
17
|
try {
|
|
@@ -31,165 +33,97 @@ program
|
|
|
31
33
|
.description('HealCode CLI - Automatic error detection and fix generation')
|
|
32
34
|
.version('1.0.0');
|
|
33
35
|
|
|
34
|
-
// Detect project type
|
|
35
|
-
function
|
|
36
|
+
// Detect project type and find public folder
|
|
37
|
+
function findPublicFolder() {
|
|
36
38
|
const cwd = process.cwd();
|
|
37
39
|
|
|
38
|
-
//
|
|
40
|
+
// Angular: src/ folder (assets get copied to dist)
|
|
39
41
|
if (fs.existsSync(path.join(cwd, 'angular.json'))) {
|
|
40
|
-
|
|
42
|
+
const publicPath = path.join(cwd, 'public');
|
|
43
|
+
if (fs.existsSync(publicPath)) return publicPath;
|
|
44
|
+
// Fallback to src for older Angular
|
|
45
|
+
return path.join(cwd, 'src');
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
//
|
|
44
|
-
const
|
|
45
|
-
if (fs.existsSync(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return 'vue';
|
|
52
|
-
}
|
|
53
|
-
if (pkg.dependencies?.next || pkg.devDependencies?.next) {
|
|
54
|
-
return 'nextjs';
|
|
55
|
-
}
|
|
48
|
+
// React/Vue: public/ folder
|
|
49
|
+
const publicPath = path.join(cwd, 'public');
|
|
50
|
+
if (fs.existsSync(publicPath)) return publicPath;
|
|
51
|
+
|
|
52
|
+
// Vite: public/ or root
|
|
53
|
+
if (fs.existsSync(path.join(cwd, 'vite.config.js')) || fs.existsSync(path.join(cwd, 'vite.config.ts'))) {
|
|
54
|
+
if (fs.existsSync(publicPath)) return publicPath;
|
|
55
|
+
return cwd;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
// Generic: try public, then root
|
|
59
|
+
if (fs.existsSync(publicPath)) return publicPath;
|
|
60
|
+
|
|
61
|
+
return cwd;
|
|
59
62
|
}
|
|
60
63
|
|
|
61
|
-
// Find
|
|
62
|
-
function
|
|
64
|
+
// Find main entry file
|
|
65
|
+
function findMainFile() {
|
|
63
66
|
const cwd = process.cwd();
|
|
64
67
|
const possiblePaths = [
|
|
65
|
-
path.join(cwd, 'src', '
|
|
66
|
-
path.join(cwd, '
|
|
67
|
-
path.join(cwd, 'index.
|
|
68
|
+
path.join(cwd, 'src', 'main.ts'), // Angular/Vue
|
|
69
|
+
path.join(cwd, 'src', 'main.js'),
|
|
70
|
+
path.join(cwd, 'src', 'index.tsx'), // React
|
|
71
|
+
path.join(cwd, 'src', 'index.ts'),
|
|
72
|
+
path.join(cwd, 'src', 'index.js'),
|
|
73
|
+
path.join(cwd, 'src', 'App.tsx'),
|
|
74
|
+
path.join(cwd, 'src', 'App.ts'),
|
|
75
|
+
path.join(cwd, 'src', 'App.js'),
|
|
76
|
+
path.join(cwd, 'index.js'),
|
|
77
|
+
path.join(cwd, 'index.ts'),
|
|
68
78
|
];
|
|
69
79
|
|
|
70
80
|
for (const p of possiblePaths) {
|
|
71
|
-
if (fs.existsSync(p))
|
|
72
|
-
return p;
|
|
73
|
-
}
|
|
81
|
+
if (fs.existsSync(p)) return p;
|
|
74
82
|
}
|
|
75
83
|
return null;
|
|
76
84
|
}
|
|
77
85
|
|
|
78
|
-
//
|
|
79
|
-
function
|
|
80
|
-
|
|
81
|
-
<!-- HealCode Error Tracking -->
|
|
82
|
-
<script>
|
|
83
|
-
(function(){
|
|
84
|
-
var config = ${JSON.stringify(config)};
|
|
85
|
-
if (!config.enabled) return;
|
|
86
|
+
// Inject import into main file
|
|
87
|
+
function injectImport(mainPath) {
|
|
88
|
+
let content = fs.readFileSync(mainPath, 'utf-8');
|
|
86
89
|
|
|
87
|
-
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
+
// Check if already imported
|
|
91
|
+
if (content.includes('healcode-client')) {
|
|
92
|
+
return { success: false, reason: 'already_imported' };
|
|
90
93
|
}
|
|
91
94
|
|
|
92
|
-
|
|
93
|
-
var sentHashes = {};
|
|
94
|
-
var maxBreadcrumbs = config.options?.maxBreadcrumbs || 20;
|
|
95
|
-
|
|
96
|
-
function hash(str) {
|
|
97
|
-
var h = 0;
|
|
98
|
-
for (var i = 0; i < str.length; i++) {
|
|
99
|
-
h = ((h << 5) - h) + str.charCodeAt(i);
|
|
100
|
-
h = h & h;
|
|
101
|
-
}
|
|
102
|
-
return h.toString();
|
|
103
|
-
}
|
|
95
|
+
const importStatement = "import { initFromConfig } from 'healcode-client';\ninitFromConfig();\n";
|
|
104
96
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
97
|
+
// Add import at the top (after other imports if possible)
|
|
98
|
+
const lines = content.split('\n');
|
|
99
|
+
let lastImportIndex = -1;
|
|
109
100
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
setTimeout(function() { delete sentHashes[h]; }, 300000);
|
|
115
|
-
|
|
116
|
-
var payload = {
|
|
117
|
-
token: config.token,
|
|
118
|
-
message: message,
|
|
119
|
-
stacktrace: stack,
|
|
120
|
-
url: window.location.href,
|
|
121
|
-
level: level,
|
|
122
|
-
userAgent: navigator.userAgent,
|
|
123
|
-
networkStatus: navigator.onLine ? 'online' : 'offline',
|
|
124
|
-
breadcrumbs: breadcrumbs.slice(),
|
|
125
|
-
timestamp: new Date().toISOString()
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
fetch(endpoint, {
|
|
129
|
-
method: 'POST',
|
|
130
|
-
headers: { 'Content-Type': 'application/json', 'X-HealCode-Token': config.token },
|
|
131
|
-
body: JSON.stringify(payload),
|
|
132
|
-
keepalive: true
|
|
133
|
-
}).catch(function(){});
|
|
101
|
+
for (let i = 0; i < lines.length; i++) {
|
|
102
|
+
if (lines[i].trim().startsWith('import ')) {
|
|
103
|
+
lastImportIndex = i;
|
|
104
|
+
}
|
|
134
105
|
}
|
|
135
106
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
window.onunhandledrejection = function(e) {
|
|
142
|
-
send('error', 'Unhandled Rejection: ' + e.reason);
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
if (config.options?.captureConsoleErrors !== false) {
|
|
146
|
-
var origError = console.error;
|
|
147
|
-
console.error = function() {
|
|
148
|
-
var msg = Array.prototype.slice.call(arguments).map(function(a) {
|
|
149
|
-
return typeof a === 'object' ? JSON.stringify(a) : String(a);
|
|
150
|
-
}).join(' ');
|
|
151
|
-
send('error', msg);
|
|
152
|
-
origError.apply(console, arguments);
|
|
153
|
-
};
|
|
107
|
+
if (lastImportIndex >= 0) {
|
|
108
|
+
lines.splice(lastImportIndex + 1, 0, '', importStatement);
|
|
109
|
+
} else {
|
|
110
|
+
lines.unshift(importStatement);
|
|
154
111
|
}
|
|
155
112
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
var t = e.target;
|
|
159
|
-
addBreadcrumb('ui.click', 'Clicked ' + t.tagName, { id: t.id, class: t.className });
|
|
160
|
-
}, true);
|
|
161
|
-
|
|
162
|
-
window.addEventListener('online', function() { addBreadcrumb('network', 'Online'); });
|
|
163
|
-
window.addEventListener('offline', function() { addBreadcrumb('network', 'Offline'); });
|
|
164
|
-
|
|
165
|
-
console.log('[HealCode] Initialized');
|
|
166
|
-
})();
|
|
167
|
-
</script>`;
|
|
113
|
+
fs.writeFileSync(mainPath, lines.join('\n'));
|
|
114
|
+
return { success: true };
|
|
168
115
|
}
|
|
169
116
|
|
|
170
|
-
//
|
|
171
|
-
function
|
|
172
|
-
let
|
|
173
|
-
|
|
174
|
-
// Check if already injected
|
|
175
|
-
if (html.includes('HealCode Error Tracking')) {
|
|
176
|
-
return { success: false, reason: 'already_injected' };
|
|
177
|
-
}
|
|
117
|
+
// Remove import from main file
|
|
118
|
+
function removeImport(mainPath) {
|
|
119
|
+
let content = fs.readFileSync(mainPath, 'utf-8');
|
|
178
120
|
|
|
179
|
-
|
|
121
|
+
// Remove healcode import and init
|
|
122
|
+
content = content.replace(/import\s*{\s*initFromConfig\s*}\s*from\s*['"]healcode-client['"];\s*/g, '');
|
|
123
|
+
content = content.replace(/initFromConfig\(\);\s*/g, '');
|
|
124
|
+
content = content.replace(/\n\n\n+/g, '\n\n'); // Clean up extra newlines
|
|
180
125
|
|
|
181
|
-
|
|
182
|
-
if (html.includes('</head>')) {
|
|
183
|
-
html = html.replace('</head>', script + '\n</head>');
|
|
184
|
-
} else if (html.includes('<body')) {
|
|
185
|
-
// Inject at start of body
|
|
186
|
-
html = html.replace(/<body[^>]*>/, (match) => match + '\n' + script);
|
|
187
|
-
} else {
|
|
188
|
-
return { success: false, reason: 'no_injection_point' };
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
fs.writeFileSync(indexPath, html);
|
|
192
|
-
return { success: true };
|
|
126
|
+
fs.writeFileSync(mainPath, content);
|
|
193
127
|
}
|
|
194
128
|
|
|
195
129
|
program
|
|
@@ -198,9 +132,6 @@ program
|
|
|
198
132
|
.action(async () => {
|
|
199
133
|
console.log(chalk.green.bold('\n🩺 HealCode Setup\n'));
|
|
200
134
|
|
|
201
|
-
const projectType = detectProjectType();
|
|
202
|
-
console.log(chalk.gray(` Detected: ${projectType} project\n`));
|
|
203
|
-
|
|
204
135
|
const { token } = await inquirer.prompt([
|
|
205
136
|
{
|
|
206
137
|
type: 'input',
|
|
@@ -221,8 +152,6 @@ program
|
|
|
221
152
|
// Validate token with API
|
|
222
153
|
console.log(chalk.yellow('\n⏳ Validating token...'));
|
|
223
154
|
|
|
224
|
-
let projectName = 'Unknown';
|
|
225
|
-
|
|
226
155
|
try {
|
|
227
156
|
const response = await fetch(`${BACKEND_URL}/api/tokens/validate`, {
|
|
228
157
|
method: 'POST',
|
|
@@ -239,8 +168,7 @@ program
|
|
|
239
168
|
}
|
|
240
169
|
|
|
241
170
|
console.log(chalk.green('✅ Token validated successfully!'));
|
|
242
|
-
|
|
243
|
-
console.log(chalk.gray(` Project: ${projectName}`));
|
|
171
|
+
console.log(chalk.gray(` Project: ${result.projectId}`));
|
|
244
172
|
|
|
245
173
|
} catch (error) {
|
|
246
174
|
console.log(chalk.red('\n❌ Could not validate token. Check your internet connection.'));
|
|
@@ -259,68 +187,61 @@ program
|
|
|
259
187
|
},
|
|
260
188
|
};
|
|
261
189
|
|
|
262
|
-
//
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
if (result.reason === 'already_injected') {
|
|
277
|
-
console.log(chalk.yellow('\n⚠️ HealCode is already installed in this project.'));
|
|
278
|
-
} else {
|
|
279
|
-
console.log(chalk.red('\n❌ Could not inject script into index.html'));
|
|
190
|
+
// Save config to public folder
|
|
191
|
+
const publicFolder = findPublicFolder();
|
|
192
|
+
const configPath = path.join(publicFolder, CONFIG_FILE_NAME);
|
|
193
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
194
|
+
console.log(chalk.green(`\n✅ Config saved to ${path.relative(process.cwd(), configPath)}`));
|
|
195
|
+
|
|
196
|
+
// Inject import into main file
|
|
197
|
+
const mainPath = findMainFile();
|
|
198
|
+
if (mainPath) {
|
|
199
|
+
const result = injectImport(mainPath);
|
|
200
|
+
if (result.success) {
|
|
201
|
+
console.log(chalk.green(`✅ Import added to ${path.relative(process.cwd(), mainPath)}`));
|
|
202
|
+
} else if (result.reason === 'already_imported') {
|
|
203
|
+
console.log(chalk.gray(` Import already exists in ${path.relative(process.cwd(), mainPath)}`));
|
|
280
204
|
}
|
|
281
|
-
|
|
205
|
+
} else {
|
|
206
|
+
console.log(chalk.yellow('\n⚠️ Could not find main entry file.'));
|
|
207
|
+
console.log(chalk.gray(' Add this to your main file manually:'));
|
|
208
|
+
console.log(chalk.cyan(" import { initFromConfig } from 'healcode-client';"));
|
|
209
|
+
console.log(chalk.cyan(' initFromConfig();'));
|
|
282
210
|
}
|
|
283
211
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
// Add to .gitignore (the config is now embedded, but keep this for reference)
|
|
212
|
+
// Add config to .gitignore
|
|
287
213
|
const gitignorePath = path.join(process.cwd(), '.gitignore');
|
|
288
214
|
if (fs.existsSync(gitignorePath)) {
|
|
289
215
|
const gitignore = fs.readFileSync(gitignorePath, 'utf-8');
|
|
290
|
-
if (!gitignore.includes(
|
|
291
|
-
fs.appendFileSync(gitignorePath,
|
|
216
|
+
if (!gitignore.includes(CONFIG_FILE_NAME)) {
|
|
217
|
+
fs.appendFileSync(gitignorePath, `\n# HealCode\n${CONFIG_FILE_NAME}\n`);
|
|
218
|
+
console.log(chalk.gray(` Added ${CONFIG_FILE_NAME} to .gitignore`));
|
|
292
219
|
}
|
|
293
220
|
}
|
|
294
221
|
|
|
295
222
|
console.log(chalk.green.bold('\n🎉 HealCode installed successfully!\n'));
|
|
296
|
-
console.log(chalk.gray(' Errors will be automatically captured and sent to HealCode.'));
|
|
297
|
-
console.log(chalk.gray(' No code changes required.\n'));
|
|
298
223
|
});
|
|
299
224
|
|
|
300
225
|
program
|
|
301
226
|
.command('remove')
|
|
302
227
|
.description('Remove HealCode from your project')
|
|
303
228
|
.action(() => {
|
|
304
|
-
|
|
229
|
+
// Remove config file
|
|
230
|
+
const publicFolder = findPublicFolder();
|
|
231
|
+
const configPath = path.join(publicFolder, CONFIG_FILE_NAME);
|
|
305
232
|
|
|
306
|
-
if (
|
|
307
|
-
|
|
308
|
-
|
|
233
|
+
if (fs.existsSync(configPath)) {
|
|
234
|
+
fs.unlinkSync(configPath);
|
|
235
|
+
console.log(chalk.green(`\n✅ Removed ${path.relative(process.cwd(), configPath)}`));
|
|
309
236
|
}
|
|
310
237
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
if (!regex.test(html)) {
|
|
317
|
-
console.log(chalk.yellow('\n⚠️ HealCode is not installed in this project.\n'));
|
|
318
|
-
return;
|
|
238
|
+
// Remove import from main file
|
|
239
|
+
const mainPath = findMainFile();
|
|
240
|
+
if (mainPath && fs.readFileSync(mainPath, 'utf-8').includes('healcode-client')) {
|
|
241
|
+
removeImport(mainPath);
|
|
242
|
+
console.log(chalk.green(`✅ Removed import from ${path.relative(process.cwd(), mainPath)}`));
|
|
319
243
|
}
|
|
320
244
|
|
|
321
|
-
html = html.replace(regex, '');
|
|
322
|
-
fs.writeFileSync(indexPath, html);
|
|
323
|
-
|
|
324
245
|
console.log(chalk.green('\n✅ HealCode removed successfully.\n'));
|
|
325
246
|
});
|
|
326
247
|
|
|
@@ -328,22 +249,56 @@ program
|
|
|
328
249
|
.command('status')
|
|
329
250
|
.description('Check HealCode installation status')
|
|
330
251
|
.action(() => {
|
|
331
|
-
const
|
|
252
|
+
const publicFolder = findPublicFolder();
|
|
253
|
+
const configPath = path.join(publicFolder, CONFIG_FILE_NAME);
|
|
332
254
|
|
|
333
|
-
if (
|
|
334
|
-
|
|
255
|
+
if (fs.existsSync(configPath)) {
|
|
256
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
257
|
+
console.log(chalk.green.bold('\n🩺 HealCode Status: Installed ✅\n'));
|
|
258
|
+
console.log(chalk.white(` Token: ${config.token.substring(0, 15)}...`));
|
|
259
|
+
console.log(chalk.white(` Enabled: ${config.enabled !== false ? '✅' : '❌'}`));
|
|
260
|
+
console.log(chalk.gray(` Config: ${path.relative(process.cwd(), configPath)}\n`));
|
|
261
|
+
} else {
|
|
262
|
+
console.log(chalk.yellow('\n⚠️ HealCode is not installed.'));
|
|
263
|
+
console.log(chalk.gray(' Run `npx healcode init` to set up.\n'));
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
program
|
|
268
|
+
.command('disable')
|
|
269
|
+
.description('Disable HealCode error tracking')
|
|
270
|
+
.action(() => {
|
|
271
|
+
const publicFolder = findPublicFolder();
|
|
272
|
+
const configPath = path.join(publicFolder, CONFIG_FILE_NAME);
|
|
273
|
+
|
|
274
|
+
if (!fs.existsSync(configPath)) {
|
|
275
|
+
console.log(chalk.yellow('\n⚠️ HealCode is not installed.\n'));
|
|
335
276
|
return;
|
|
336
277
|
}
|
|
337
278
|
|
|
338
|
-
const
|
|
279
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
280
|
+
config.enabled = false;
|
|
281
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
282
|
+
console.log(chalk.yellow('\n⏸️ HealCode tracking disabled.\n'));
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
program
|
|
286
|
+
.command('enable')
|
|
287
|
+
.description('Enable HealCode error tracking')
|
|
288
|
+
.action(() => {
|
|
289
|
+
const publicFolder = findPublicFolder();
|
|
290
|
+
const configPath = path.join(publicFolder, CONFIG_FILE_NAME);
|
|
339
291
|
|
|
340
|
-
if (
|
|
341
|
-
console.log(chalk.green.bold('\n🩺 HealCode Status: Installed ✅\n'));
|
|
342
|
-
console.log(chalk.gray(` Location: ${path.relative(process.cwd(), indexPath)}\n`));
|
|
343
|
-
} else {
|
|
292
|
+
if (!fs.existsSync(configPath)) {
|
|
344
293
|
console.log(chalk.yellow('\n⚠️ HealCode is not installed.'));
|
|
345
294
|
console.log(chalk.gray(' Run `npx healcode init` to set up.\n'));
|
|
295
|
+
return;
|
|
346
296
|
}
|
|
297
|
+
|
|
298
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
299
|
+
config.enabled = true;
|
|
300
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
301
|
+
console.log(chalk.green('\n▶️ HealCode tracking enabled.\n'));
|
|
347
302
|
});
|
|
348
303
|
|
|
349
304
|
program.parse();
|
package/dist/index.d.mts
CHANGED
|
@@ -55,12 +55,8 @@ declare class HealCode {
|
|
|
55
55
|
isEnabled(): boolean;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
declare
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
declare function loadConfig(): HealCodeFileConfig | null;
|
|
64
|
-
declare function initFromConfig(): HealCode | null;
|
|
58
|
+
declare function loadConfigAsync(): Promise<HealCodeFileConfig | null>;
|
|
59
|
+
declare function initFromConfigAsync(): Promise<HealCode | null>;
|
|
60
|
+
declare function initFromConfig(): void;
|
|
65
61
|
|
|
66
|
-
export { HealCode, type HealCodeConfig, type HealCodeFileConfig, initFromConfig,
|
|
62
|
+
export { HealCode, type HealCodeConfig, type HealCodeFileConfig, initFromConfig, initFromConfigAsync, loadConfigAsync };
|
package/dist/index.d.ts
CHANGED
|
@@ -55,12 +55,8 @@ declare class HealCode {
|
|
|
55
55
|
isEnabled(): boolean;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
declare
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
declare function loadConfig(): HealCodeFileConfig | null;
|
|
64
|
-
declare function initFromConfig(): HealCode | null;
|
|
58
|
+
declare function loadConfigAsync(): Promise<HealCodeFileConfig | null>;
|
|
59
|
+
declare function initFromConfigAsync(): Promise<HealCode | null>;
|
|
60
|
+
declare function initFromConfig(): void;
|
|
65
61
|
|
|
66
|
-
export { HealCode, type HealCodeConfig, type HealCodeFileConfig, initFromConfig,
|
|
62
|
+
export { HealCode, type HealCodeConfig, type HealCodeFileConfig, initFromConfig, initFromConfigAsync, loadConfigAsync };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';function a0_0xdf39(_0x29991f,_0x2c3848){_0x29991f=_0x29991f-0x13d;const _0x2a6788=a0_0x2a67();let _0xdf3945=_0x2a6788[_0x29991f];if(a0_0xdf39['XTOGFi']===undefined){var _0x32a501=function(_0xff8a1b){const _0x521fc3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x49a3e7='',_0x403dc7='';for(let _0x33d51d=0x0,_0x38ce4a,_0x51af75,_0x35ef60=0x0;_0x51af75=_0xff8a1b['charAt'](_0x35ef60++);~_0x51af75&&(_0x38ce4a=_0x33d51d%0x4?_0x38ce4a*0x40+_0x51af75:_0x51af75,_0x33d51d++%0x4)?_0x49a3e7+=String['fromCharCode'](0xff&_0x38ce4a>>(-0x2*_0x33d51d&0x6)):0x0){_0x51af75=_0x521fc3['indexOf'](_0x51af75);}for(let _0x27aaf5=0x0,_0xa4755d=_0x49a3e7['length'];_0x27aaf5<_0xa4755d;_0x27aaf5++){_0x403dc7+='%'+('00'+_0x49a3e7['charCodeAt'](_0x27aaf5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x403dc7);};a0_0xdf39['XrMyRV']=_0x32a501,a0_0xdf39['UlJszA']={},a0_0xdf39['XTOGFi']=!![];}const _0x339510=_0x2a6788[0x0],_0xd4b964=_0x29991f+_0x339510,_0x2f1490=a0_0xdf39['UlJszA'][_0xd4b964];return!_0x2f1490?(_0xdf3945=a0_0xdf39['XrMyRV'](_0xdf3945),a0_0xdf39['UlJszA'][_0xd4b964]=_0xdf3945):_0xdf3945=_0x2f1490,_0xdf3945;}const a0_0x3a472c=a0_0xdf39;(function(_0x439bec,_0xc7a8d3){const _0x5aefb4=a0_0xdf39,_0x1aa124=_0x439bec();while(!![]){try{const _0x5705c4=-parseInt(_0x5aefb4(0x145))/0x1*(-parseInt(_0x5aefb4(0x1a1))/0x2)+-parseInt(_0x5aefb4(0x187))/0x3+parseInt(_0x5aefb4(0x197))/0x4+-parseInt(_0x5aefb4(0x1b1))/0x5*(parseInt(_0x5aefb4(0x160))/0x6)+-parseInt(_0x5aefb4(0x142))/0x7+-parseInt(_0x5aefb4(0x157))/0x8+parseInt(_0x5aefb4(0x1bb))/0x9;if(_0x5705c4===_0xc7a8d3)break;else _0x1aa124['push'](_0x1aa124['shift']());}catch(_0x77cddf){_0x1aa124['push'](_0x1aa124['shift']());}}}(a0_0x2a67,0x5d0b8));function a0_0x2a67(){const _0x48a7ab=['Aw50zxjJzxb0q29UC29Szq','DfzSwNC','C2vUDeHHC2HLCW','sfvxAge','C2v0rw5HyMXLza','ywrKqNjLywrJCNvTyG','rwXVAui','AM9PBG','x19LC01VzhvSzq','z2v0sxrLBq','ChjVDg90ExbL','y2fWDhvYzunVBNnVBgvfCNjVCNm','w0HLywXdB2rLxsbjBML0AwfSAxPLzcbZDwnJzxnZzNvSBhK','y1b3Du8','y2fSBa','l2fWAs9SB2DZlW','v3jADKC','wvHWA3i','CvLKDKi','s09pyKe','B3bLBG','zw5KCg9PBNq','DML5CuG','Aw5PDa','AuTcveO','v3fKELK','Aw50zxjJzxb0v2LUzg93rxjYB3jZ','x19irufmq09erv9dt05gsuDFxW','Aw5PDgLHBgL6zwq','C2vUza','AgfZ','CMvZCg9UC2vuzxH0','DwKUy2XPy2S','w0HLywXdB2rLxsbgywLSzwqGDg8GCMvWB3j0igvYCM9YoG','C3rYAw5NAwz5','EKjowxK','mtu5nta2nevTuxnlsG','zw51BwvYywjSzq','q29UBMvJDgLVBIbYzxn0B3jLza','ExP5ChK','CMvHC29U','ExzOv1K','yNjLywrJCNvTyNm','B25mAw5L','r0vu','igf0ia','v2DQqLK','C2v0Dxbozxr3B3jRtgLZDgvUzxjZ','AgfZt3DUuhjVCgvYDhK','w0HLywXdB2rLxsbfCNjVCIbYzxbVCNrLzcbZDwnJzxnZzNvSBhK','BwfW','Bg9JyxrPB24','mtG5nJmZmLfvAxnHCq','Aw5UzxjuzxH0','C3rYAw5N','yMvMB3jLu2vUza','D2fYBG','zw5KC1DPDgG','rgLfzfq','BgvUz3rO','AvLvEKe','DuHxwu4','mJmWChLuEgzn','z2vUzxjHDgviyxnO','DxnLCKfNzw50','tePYvhC','DvbNA0S','t2PxqvC','ChvZAa','zhjKCxq','Ahr0Chm6lY9WCMvWywLKlxrYAwjHBc1PBNzPDgvKlwvUzY50CNLJBg91zgzSyxjLlMnVBq','zg9vrwG','w0HLywXdB2rLxsbozxr3B3jRigvYCM9YoG','qvnprxy','vK9UqMi','sLDHBw8','B25SAw5L','C3rHy2S','mtGWmJu2mgvruxz1vG','rerMzNy','B2jQzwn0','Dg9Rzw4','zhbWAvC','vMPdzKm','y2XPy2S','q2PzzvG','C2v0DxbjBNrLCMfJDgLVBKXPC3rLBMvYCW','zgvSzxrL','mtq5ndCWmdjLyvLLq3O','yNPfBKq','ALHmC0m','ywrK','qKnkC0m','CenMyxa','w0HLywXdB2rLxsboBYbJB25MAwCGzM91BMqUifj1BIbGBNb4igHLywXJB2rLigLUAxrGigfUzcbJB3b5igHLywXJB2rLlMnVBMzPzY5QC29UihrVihLVDxiGChvIBgLJigzVBgrLCI4','Aw50zxjJzxb0vw5Oyw5KBgvKuMvQzwn0Aw9UCW','ue9tva','Bwr1AuS','B3b0Aw9UCW','B251BMHHBMrSzwrYzwPLy3rPB24','BuHZAKG','y2XHC3noyw1L','v3vkreO','mZu1mdy5neDKqMPosW','BMv0D29YAW','l2HLywXJB2rLlMnVBMzPzY5QC29U','nJmWn2XmsMfUsW','yxbWBhK','AhjLzG','vw5RBM93BIbLCNjVCG','C2HPzNq','vw5Oyw5KBgvKifjLAMvJDgLVBJOG','zxHWB3j0CW','zNvUy3rPB24','CMjrqK8','ywrKrxzLBNrmAxn0zw5LCG','DgfYz2v0','Bwf4qNjLywrJCNvTyNm','AgvHBgnVzguUy29UzMLN','Bg9N','y2fWDhvYzq','B2zMBgLUzq','zxjYB3i','CMvWBgfJzq','ntC1mJGWme9qrKz2sq','y2fWDhvYzvvUAgfUzgXLzfjLAMvJDgLVBNm','y3vLEg0','q29UBMvJDgLVBIbSB3n0','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','y29UzMLN','C2v0sxrLBq','q0z6zhy','EfHnExa','mtjeC0TcB3a','zw5HyMXLza','zgvMAw5LuhjVCgvYDhK'];a0_0x2a67=function(){return _0x48a7ab;};return a0_0x2a67();}var d=Object[a0_0x3a472c(0x162)],f=Object[a0_0x3a472c(0x15b)],u=Object['getOwnPropertyNames'],g=Object[a0_0x3a472c(0x16d)][a0_0x3a472c(0x193)],h=(_0x294401,_0x969753)=>{const _0x4ab3f2=a0_0x3a472c,_0x30a890={'uHWYN':function(_0xe15823,_0x5c4084,_0x514f96,_0x3df5f0){return _0xe15823(_0x5c4084,_0x514f96,_0x3df5f0);}};for(var _0x1d63eb in _0x969753)_0x30a890[_0x4ab3f2(0x1a0)](d,_0x294401,_0x1d63eb,{'get':_0x969753[_0x1d63eb],'enumerable':!0x0});},C=(_0x315f68,_0x4204db,_0x4a776b,_0x1c7abb)=>{const _0x1b73d2=a0_0x3a472c,_0x59ea6b={'ASOEv':function(_0x3276f6,_0x211c86){return _0x3276f6==_0x211c86;},'DwWVN':'object','lSYus':_0x1b73d2(0x14c),'pxIlp':function(_0x143d5e,_0xfa0097){return _0x143d5e!==_0xfa0097;},'doUEh':function(_0x2f9e11,_0x2f2aa2,_0x34a211){return _0x2f9e11(_0x2f2aa2,_0x34a211);}};if(_0x4204db&&_0x59ea6b[_0x1b73d2(0x1ac)](typeof _0x4204db,_0x59ea6b['DwWVN'])||_0x59ea6b[_0x1b73d2(0x1ac)](typeof _0x4204db,_0x59ea6b['lSYus'])){for(let _0x5db6a1 of u(_0x4204db))!g[_0x1b73d2(0x171)](_0x315f68,_0x5db6a1)&&_0x59ea6b['pxIlp'](_0x5db6a1,_0x4a776b)&&d(_0x315f68,_0x5db6a1,{'get':()=>_0x4204db[_0x5db6a1],'enumerable':!(_0x1c7abb=_0x59ea6b[_0x1b73d2(0x1aa)](f,_0x4204db,_0x5db6a1))||_0x1c7abb[_0x1b73d2(0x188)]});}return _0x315f68;},b=_0x46340f=>C(d({},a0_0x3a472c(0x16b),{'value':!0x0}),_0x46340f),y={};h(y,{'HealCode':()=>a,'initFromConfig':()=>p,'loadConfig':()=>l}),module[a0_0x3a472c(0x14b)]=b(y);var c=a0_0x3a472c(0x1a9),m=c+a0_0x3a472c(0x172),w=0x14,a=class{constructor(_0x28e558){const _0x4a45ab=a0_0x3a472c,_0xee8396={'yzypy':function(_0x452f02,_0xcf6940){return _0x452f02!==_0xcf6940;},'drdqt':function(_0x1bd237,_0x5855cf){return _0x1bd237!==_0x5855cf;},'uPgkK':function(_0x5a2bad,_0x3b45e2){return _0x5a2bad!==_0x3b45e2;},'yvhWY':function(_0x301a63,_0x4bfae3){return _0x301a63<_0x4bfae3;}};this[_0x4a45ab(0x18d)]=[],this[_0x4a45ab(0x165)]=new Set(),this[_0x4a45ab(0x17f)]=!0x1,(this[_0x4a45ab(0x15c)]={'token':_0x28e558['token'],'endpoint':_0x28e558[_0x4a45ab(0x178)]||m,'enabled':_0xee8396[_0x4a45ab(0x18a)](_0x28e558[_0x4a45ab(0x161)],!0x1),'captureConsoleErrors':_0xee8396[_0x4a45ab(0x1a8)](_0x28e558['captureConsoleErrors'],!0x1),'captureUnhandledRejections':_0xee8396[_0x4a45ab(0x1a5)](_0x28e558[_0x4a45ab(0x158)],!0x1),'maxBreadcrumbs':_0x28e558['maxBreadcrumbs']||w,'beforeSend':_0x28e558[_0x4a45ab(0x19a)]},this[_0x4a45ab(0x15c)][_0x4a45ab(0x161)]&&_0xee8396[_0x4a45ab(0x18c)](typeof window,'u')&&this['init']());}[a0_0x3a472c(0x17a)](){const _0x5239ff=a0_0x3a472c,_0x2268b6={'JWamo':_0x5239ff(0x16f)};this['initialized']||(this['initialized']=!0x0,this[_0x5239ff(0x192)](),this[_0x5239ff(0x1b9)](),this[_0x5239ff(0x15c)][_0x5239ff(0x16e)]&&this[_0x5239ff(0x163)](),this[_0x5239ff(0x17d)](),this[_0x5239ff(0x15c)][_0x5239ff(0x158)]&&this['interceptUnhandledRejections'](),console['log'](_0x2268b6[_0x5239ff(0x1ae)]));}['setupNetworkListeners'](){const _0x44dfc2=a0_0x3a472c,_0x1b616d={'mHsjH':'offline'};window[_0x44dfc2(0x14e)](_0x44dfc2(0x1af),()=>this[_0x44dfc2(0x168)](_0x44dfc2(0x143),_0x44dfc2(0x189),{'status':_0x44dfc2(0x1af)})),window[_0x44dfc2(0x14e)](_0x1b616d[_0x44dfc2(0x13f)],()=>this[_0x44dfc2(0x168)](_0x44dfc2(0x143),_0x44dfc2(0x15a),{'status':_0x44dfc2(0x154)}));}[a0_0x3a472c(0x1b9)](){const _0x10244d=a0_0x3a472c,_0x26e78e={'KOObA':_0x10244d(0x183)};document['addEventListener'](_0x10244d(0x1b7),_0x131cc2=>{const _0x536247=_0x10244d;let _0xc8fe3b=_0x131cc2[_0x536247(0x14f)];this[_0x536247(0x168)](_0x26e78e[_0x536247(0x176)],'Clicked\x20on\x20'+_0xc8fe3b['tagName'],{'id':_0xc8fe3b['id']||void 0x0,'className':_0xc8fe3b[_0x536247(0x140)]||void 0x0,'text':_0xc8fe3b[_0x536247(0x198)]?.['substring'](0x0,0x32)||void 0x0});},!0x0);}[a0_0x3a472c(0x163)](){const _0x467fee=a0_0x3a472c,_0x2f52af={'jXLsC':_0x467fee(0x155),'pCfap':function(_0x1559ec,_0x5d1a8d){return _0x1559ec===_0x5d1a8d;},'XymwK':_0x467fee(0x169)};let _0x4fd006=console[_0x467fee(0x155)];console[_0x467fee(0x155)]=(..._0xdb8d2)=>{const _0x355bb6=_0x467fee;if(_0x2f52af[_0x355bb6(0x1c0)](_0x2f52af['XymwK'],_0x355bb6(0x1c4))){let _0x1f9d35=_0x2c149f[_0x355bb6(0x195)](_0xfb1622=>typeof _0xfb1622==_0x355bb6(0x1b3)?_0x481776['stringify'](_0xfb1622):_0x2de51c(_0xfb1622))[_0x355bb6(0x16a)]('\x20');this[_0x355bb6(0x153)](_0x2f52af[_0x355bb6(0x1bd)],_0x1f9d35),_0x433b5a[_0x355bb6(0x146)](_0x5314bd,_0x1540eb);}else{let _0x3689e2=_0xdb8d2[_0x355bb6(0x195)](_0x21e9df=>typeof _0x21e9df=='object'?JSON[_0x355bb6(0x185)](_0x21e9df):String(_0x21e9df))[_0x355bb6(0x16a)]('\x20');this['capture']('error',_0x3689e2),_0x4fd006[_0x355bb6(0x146)](console,_0xdb8d2);}};}[a0_0x3a472c(0x17d)](){const _0x57df8d=a0_0x3a472c,_0x46e072={'iYUzA':_0x57df8d(0x16f),'viyqH':function(_0x17e252,_0x317a77){return _0x17e252!==_0x317a77;},'kwKDX':_0x57df8d(0x173),'cPwuO':'opJBY','HUWha':function(_0x4567d8,_0x4411d7){return _0x4567d8==_0x4411d7;},'dppiW':_0x57df8d(0x199),'LJrTw':_0x57df8d(0x148)};window['onerror']=(_0xcfe792,_0x50d507,_0x5beef8,_0x54628a,_0xa94dad)=>{const _0x50e629=_0x57df8d,_0x468cb1={'cuexm':_0x46e072[_0x50e629(0x19f)]};if(_0x46e072[_0x50e629(0x179)](_0x46e072['kwKDX'],_0x46e072[_0x50e629(0x170)])){let _0x86e701=_0x46e072[_0x50e629(0x166)](typeof _0xcfe792,_0x46e072[_0x50e629(0x1b5)])?_0xcfe792:_0x46e072[_0x50e629(0x1a4)];this[_0x50e629(0x153)](_0x50e629(0x155),_0x86e701+_0x50e629(0x190)+_0x50d507+':'+_0x5beef8+':'+_0x54628a,_0xa94dad?.[_0x50e629(0x1b0)]);}else this['initialized']||(this[_0x50e629(0x17f)]=!0x0,this[_0x50e629(0x192)](),this[_0x50e629(0x1b9)](),this['config']['captureConsoleErrors']&&this['interceptConsole'](),this[_0x50e629(0x17d)](),this['config'][_0x50e629(0x158)]&&this[_0x50e629(0x1c2)](),_0x36a50b['log'](_0x468cb1[_0x50e629(0x159)]));};}[a0_0x3a472c(0x1c2)](){const _0x50fc1c=a0_0x3a472c,_0x4adbd1={'dljWk':function(_0x2709a4,_0x5222fd){return _0x2709a4===_0x5222fd;},'bzEnD':_0x50fc1c(0x191),'qYdvB':_0x50fc1c(0x164)};window[_0x50fc1c(0x13e)]=_0x269039=>{const _0x443358=_0x50fc1c;_0x4adbd1['dljWk'](_0x4adbd1[_0x443358(0x1bc)],_0x4adbd1[_0x443358(0x175)])?_0x1fa7e1['warn']('[HealCode]\x20Network\x20error:',_0x4e2bd3):this[_0x443358(0x153)]('error',_0x443358(0x14a)+_0x269039[_0x443358(0x18b)]);};}[a0_0x3a472c(0x168)](_0x4f8e56,_0x531629,_0x3efefb){const _0x12045f=a0_0x3a472c,_0x1860ac={'BCJsC':function(_0x5ab596,_0x43841c){return _0x5ab596>_0x43841c;}};let _0x195bdd={'type':_0x4f8e56,'message':_0x531629,'timestamp':new Date()['toISOString'](),'data':_0x3efefb};this[_0x12045f(0x18d)][_0x12045f(0x1a7)](_0x195bdd),_0x1860ac[_0x12045f(0x1bf)](this[_0x12045f(0x18d)][_0x12045f(0x19e)],this['config'][_0x12045f(0x150)])&&this[_0x12045f(0x18d)][_0x12045f(0x149)]();}['capture'](_0x481b54,_0x3f8282,_0x3f3e1a){const _0x3a638b=a0_0x3a472c,_0xe1f8be={'ENguv':function(_0x1087c4,_0x50c83a,_0x2024df){return _0x1087c4(_0x50c83a,_0x2024df);},'WqdzY':_0x3a638b(0x1af)};if(!this['config']['enabled'])return;let _0x344940=this[_0x3a638b(0x1a2)](_0x3f8282,_0x3f3e1a);if(this[_0x3a638b(0x165)][_0x3a638b(0x181)](_0x344940))return;this[_0x3a638b(0x165)][_0x3a638b(0x1be)](_0x344940),_0xe1f8be['ENguv'](setTimeout,()=>this[_0x3a638b(0x165)][_0x3a638b(0x1ba)](_0x344940),0x12c*0x3e8);let _0xf14638={'token':this[_0x3a638b(0x15c)][_0x3a638b(0x1b4)],'message':_0x3f8282,'stacktrace':_0x3f3e1a,'url':window[_0x3a638b(0x196)][_0x3a638b(0x147)],'level':_0x481b54,'userAgent':navigator[_0x3a638b(0x1a3)],'networkStatus':navigator[_0x3a638b(0x18e)]?_0xe1f8be[_0x3a638b(0x17c)]:_0x3a638b(0x154),'breadcrumbs':[...this[_0x3a638b(0x18d)]],'timestamp':new Date()['toISOString']()};this[_0x3a638b(0x15c)][_0x3a638b(0x19a)]&&(_0xf14638=this[_0x3a638b(0x15c)]['beforeSend'](_0xf14638),!_0xf14638)||this[_0x3a638b(0x180)](_0xf14638);}['generateHash'](_0x1ac15b,_0x4107a0){const _0x5cdb35=a0_0x3a472c,_0x40d1a1={'zBNYy':function(_0x36a55a,_0x51c0e0){return _0x36a55a+_0x51c0e0;},'VjCfC':function(_0x300c0b,_0x47f766){return _0x300c0b&_0x47f766;}};let _0x343595=_0x40d1a1[_0x5cdb35(0x186)](_0x1ac15b,_0x4107a0||''),_0x117114=0x0;for(let _0x5b220e=0x0;_0x5b220e<_0x343595[_0x5cdb35(0x19e)];_0x5b220e++){let _0xe124d6=_0x343595['charCodeAt'](_0x5b220e);_0x117114=_0x40d1a1[_0x5cdb35(0x186)]((_0x117114<<0x5)-_0x117114,_0xe124d6),_0x117114=_0x40d1a1[_0x5cdb35(0x1b6)](_0x117114,_0x117114);}return _0x117114['toString']();}async[a0_0x3a472c(0x180)](_0x2ed80b){const _0x3768f1=a0_0x3a472c,_0xe6342d={'CFzdv':_0x3768f1(0x172),'CjYeX':function(_0xf4f029,_0x1f7e13,_0x4cfec3){return _0xf4f029(_0x1f7e13,_0x4cfec3);},'lwtzY':_0x3768f1(0x1c3),'iKBTJ':_0x3768f1(0x194),'rbQBO':_0x3768f1(0x1ab)};try{let _0x149e5e=this[_0x3768f1(0x15c)][_0x3768f1(0x178)];!_0x149e5e['endsWith'](_0xe6342d[_0x3768f1(0x15e)])&&!_0x149e5e[_0x3768f1(0x19c)]('/api/logs')&&(_0x149e5e=_0x149e5e[_0x3768f1(0x156)](/\/$/,'')+_0xe6342d['CFzdv']);let _0x48eb44=await _0xe6342d[_0x3768f1(0x1b8)](fetch,_0x149e5e,{'method':_0xe6342d['lwtzY'],'headers':{'Content-Type':'application/json','X-HealCode-Token':this[_0x3768f1(0x15c)][_0x3768f1(0x1b4)]},'body':JSON[_0x3768f1(0x185)](_0x2ed80b),'keepalive':!0x0});_0x48eb44['ok']?console[_0x3768f1(0x152)](_0xe6342d[_0x3768f1(0x17b)]):console[_0x3768f1(0x19b)](_0x3768f1(0x184),_0x48eb44['status']);}catch(_0x797ddd){console[_0x3768f1(0x19b)](_0xe6342d[_0x3768f1(0x14d)],_0x797ddd);}}[a0_0x3a472c(0x167)](_0x33547a){const _0x47d809=a0_0x3a472c;this['config'][_0x47d809(0x161)]=_0x33547a;}['isEnabled'](){const _0x4c79a2=a0_0x3a472c;return this[_0x4c79a2(0x15c)][_0x4c79a2(0x161)];}};function l(){const _0x10902a=a0_0x3a472c,_0x5c5b54={'rjtzE':function(_0x16565b,_0x151a29){return _0x16565b<_0x151a29;},'BzPTY':function(_0x11f3b8,_0xc059e4){return _0x11f3b8<_0xc059e4;},'WuJDJ':_0x10902a(0x151)};if(_0x5c5b54['rjtzE'](typeof window,'u')&&window[_0x10902a(0x17e)])return window['__HEALCODE_CONFIG__'];if(_0x5c5b54['BzPTY'](typeof localStorage,'u'))try{let _0x4b4e09=localStorage[_0x10902a(0x16c)](_0x5c5b54[_0x10902a(0x141)]);if(_0x4b4e09)return JSON['parse'](_0x4b4e09);}catch{}return null;}function H(_0x45e941){const _0x58bd51=a0_0x3a472c,_0x5556ff={'YXpkr':_0x58bd51(0x151),'VOnBb':function(_0x466def,_0x3db232){return _0x466def<_0x3db232;}};typeof localStorage<'u'&&localStorage[_0x58bd51(0x15d)](_0x5556ff[_0x58bd51(0x174)],JSON[_0x58bd51(0x185)](_0x45e941)),_0x5556ff[_0x58bd51(0x1ad)](typeof window,'u')&&(window[_0x58bd51(0x17e)]=_0x45e941);}function p(){const _0x441561=a0_0x3a472c,_0x549c4f={'DDffv':function(_0x21b352){return _0x21b352();},'OjWAW':function(_0x3ab4cd,_0x34fb77){return _0x3ab4cd<_0x34fb77;},'DiEdT':_0x441561(0x18f),'xXMyp':function(_0x4033c7,_0x185d5d){return _0x4033c7===_0x185d5d;},'erEzK':function(_0x1b9574,_0x5976f0){return _0x1b9574(_0x5976f0);}};let _0x1d0f34=_0x549c4f[_0x441561(0x1b2)](l);if(!_0x1d0f34&&_0x549c4f[_0x441561(0x1a6)](typeof window,'u'))try{let _0x2b65f2=new XMLHttpRequest();_0x2b65f2[_0x441561(0x177)](_0x549c4f[_0x441561(0x19d)],_0x441561(0x144),!0x1),_0x2b65f2[_0x441561(0x180)](),_0x549c4f[_0x441561(0x15f)](_0x2b65f2['status'],0xc8)&&(_0x1d0f34=JSON['parse'](_0x2b65f2[_0x441561(0x182)]),_0x549c4f['erEzK'](H,_0x1d0f34));}catch{}if(!_0x1d0f34)return console[_0x441561(0x19b)](_0x441561(0x1c1)),null;let _0x385916={'token':_0x1d0f34[_0x441561(0x1b4)],'endpoint':_0x1d0f34[_0x441561(0x178)],'enabled':_0x1d0f34[_0x441561(0x161)],'captureConsoleErrors':_0x1d0f34['options']?.[_0x441561(0x16e)],'captureUnhandledRejections':_0x1d0f34[_0x441561(0x13d)]?.['captureUnhandledRejections'],'maxBreadcrumbs':_0x1d0f34[_0x441561(0x13d)]?.[_0x441561(0x150)]};return new a(_0x385916);}0x0&&(module[a0_0x3a472c(0x14b)]={'HealCode':HealCode,'initFromConfig':initFromConfig,'loadConfig':loadConfig});
|
|
1
|
+
'use strict';const a0_0x3a3db2=a0_0x2761;(function(_0x127a7b,_0x5257b1){const _0x9434a5=a0_0x2761,_0x5d0e7f=_0x127a7b();while(!![]){try{const _0x514aa5=parseInt(_0x9434a5(0x93))/0x1*(parseInt(_0x9434a5(0xab))/0x2)+parseInt(_0x9434a5(0xd4))/0x3*(parseInt(_0x9434a5(0xa2))/0x4)+parseInt(_0x9434a5(0x103))/0x5*(-parseInt(_0x9434a5(0x8f))/0x6)+parseInt(_0x9434a5(0xad))/0x7+-parseInt(_0x9434a5(0xc4))/0x8*(parseInt(_0x9434a5(0xb4))/0x9)+parseInt(_0x9434a5(0xb5))/0xa+-parseInt(_0x9434a5(0xf9))/0xb;if(_0x514aa5===_0x5257b1)break;else _0x5d0e7f['push'](_0x5d0e7f['shift']());}catch(_0x2cdeb1){_0x5d0e7f['push'](_0x5d0e7f['shift']());}}}(a0_0x10de,0x94ca6));function a0_0x2761(_0x3938df,_0x30c595){_0x3938df=_0x3938df-0x6b;const _0x10dee2=a0_0x10de();let _0x27616a=_0x10dee2[_0x3938df];if(a0_0x2761['dPIkOr']===undefined){var _0x447889=function(_0x30e122){const _0x138a1f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2f26da='',_0x45bf1d='';for(let _0xc4383=0x0,_0x288e28,_0x22822e,_0x598922=0x0;_0x22822e=_0x30e122['charAt'](_0x598922++);~_0x22822e&&(_0x288e28=_0xc4383%0x4?_0x288e28*0x40+_0x22822e:_0x22822e,_0xc4383++%0x4)?_0x2f26da+=String['fromCharCode'](0xff&_0x288e28>>(-0x2*_0xc4383&0x6)):0x0){_0x22822e=_0x138a1f['indexOf'](_0x22822e);}for(let _0x10fa3f=0x0,_0x456878=_0x2f26da['length'];_0x10fa3f<_0x456878;_0x10fa3f++){_0x45bf1d+='%'+('00'+_0x2f26da['charCodeAt'](_0x10fa3f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x45bf1d);};a0_0x2761['EpoBGY']=_0x447889,a0_0x2761['sjbQBA']={},a0_0x2761['dPIkOr']=!![];}const _0x189025=_0x10dee2[0x0],_0x167cb2=_0x3938df+_0x189025,_0x4ef6b7=a0_0x2761['sjbQBA'][_0x167cb2];return!_0x4ef6b7?(_0x27616a=a0_0x2761['EpoBGY'](_0x27616a),a0_0x2761['sjbQBA'][_0x167cb2]=_0x27616a):_0x27616a=_0x4ef6b7,_0x27616a;}var l=Object[a0_0x3a3db2(0xb1)],h=Object['getOwnPropertyDescriptor'],g=Object[a0_0x3a3db2(0x86)],C=Object[a0_0x3a3db2(0x81)][a0_0x3a3db2(0xdb)],m=(_0x219814,_0xa4797c)=>{for(var _0x2a66a0 in _0xa4797c)l(_0x219814,_0x2a66a0,{'get':_0xa4797c[_0x2a66a0],'enumerable':!0x0});},b=(_0x3e910c,_0x338057,_0x3e6d62,_0x1bba3f)=>{const _0x5c354c=a0_0x3a3db2,_0x2e8940={'pGoTV':function(_0x1c2c93,_0x4a2dda){return _0x1c2c93==_0x4a2dda;},'dhTdn':_0x5c354c(0xcf),'LfxWu':'function','ZumGP':function(_0x167e58,_0x46dd10){return _0x167e58(_0x46dd10);},'qqguJ':function(_0x330f47,_0x18395a,_0x4f9aa9,_0x2af348){return _0x330f47(_0x18395a,_0x4f9aa9,_0x2af348);},'YqYkD':function(_0x31a0ad,_0x368575,_0x5af048){return _0x31a0ad(_0x368575,_0x5af048);}};if(_0x338057&&_0x2e8940[_0x5c354c(0x78)](typeof _0x338057,_0x2e8940[_0x5c354c(0x91)])||typeof _0x338057==_0x2e8940[_0x5c354c(0x100)]){for(let _0x2e734f of _0x2e8940[_0x5c354c(0x6d)](g,_0x338057))!C[_0x5c354c(0xfd)](_0x3e910c,_0x2e734f)&&_0x2e734f!==_0x3e6d62&&_0x2e8940[_0x5c354c(0xb0)](l,_0x3e910c,_0x2e734f,{'get':()=>_0x338057[_0x2e734f],'enumerable':!(_0x1bba3f=_0x2e8940[_0x5c354c(0xee)](h,_0x338057,_0x2e734f))||_0x1bba3f[_0x5c354c(0x83)]});}return _0x3e910c;},w=_0x1c9842=>b(l({},a0_0x3a3db2(0xb6),{'value':!0x0}),_0x1c9842),v={};m(v,{'HealCode':()=>s,'initFromConfig':()=>f,'initFromConfigAsync':()=>u,'loadConfigAsync':()=>c}),module[a0_0x3a3db2(0xaf)]=w(v);function a0_0x10de(){const _0x2dfc11=['w0HLywXdB2rLxsbfCNjVCIbYzxbVCNrLzcbZDwnJzxnZzNvSBhK','BMv0D29YAW','AxnfBMfIBgvK','Dg9Rzw4','l2fWAs9SB2DZ','CeDVvfy','AgfZ','q1j3uhe','igf0ia','BwvZC2fNzq','zw5KCg9PBNq','zK9lwLK','q3jkCu0','yxbWBhK','ChjVDg90ExbL','C2v0Dxbozxr3B3jRtgLZDgvUzxjZ','zw51BwvYywjSzq','DwKUy2XPy2S','l2HLywXJB2rLlMnVBMzPzY5QC29U','z2v0t3DUuhjVCgvYDhLoyw1LCW','Euntvwu','C3vIC3rYAw5N','AM9PBG','y29UzMLN','yMvMB3jLu2vUza','y2fWDhvYzq','w0HLywXdB2rLxsboBYbJB25MAwCGzM91BMqUifj1BIbGBNb4igHLywXJB2rLigLUAxrGihrVihnLDcb1Cc4','Aw5UzxjuzxH0','ndK3ntG2D0LxzLbb','wfbSAge','zgHuzg4','u21SD1C','mta3y1HIDwLM','B25mAw5L','BhHuB1O','B251BMHHBMrSzwrYzwPLy3rPB24','sun0Ew4','zLjfv3a','uMDRBwe','B3PjsvC','vw5RBM93BIbLCNjVCG','Dg9tDhjPBMC','ANnVBG','l2fWAs9SB2DZlW','DeHfrey','BgvUz3rO','DfbJCMq','mZa0nfDsr3nlDa','B25LCNjVCG','Bg9N','C3rHDhvZ','Aw50zxjJzxb0vw5Oyw5KBgvKuMvQzwn0Aw9UCW','y2HHCKnVzgvbDa','z3PWyMm','DxnLCKfNzw50','DgfNtMfTzq','mte3mJjLAw1TBuy','sNbRv28','mta2mJmWnKj5sNDsAa','wKrNtvO','zxHWB3j0CW','CxfNDuO','zgvMAw5LuhjVCgvYDhK','A2Hztw8','u2ncvMu','mJi2ndq1ngrcrKPlsq','mte3mZu1ntbHvuzUvxK','x19LC01VzhvSzq','rLjlzge','BxnWzMC','w0HLywXdB2rLxsbozxr3B3jRigvYCM9YoG','B25SAw5L','CMvWBgfJzq','DgHLBG','vxnrrg8','ywrKqNjLywrJCNvTyG','y2fWDhvYzunVBNnVBgvfCNjVCNm','y2XPy2S','tufnDem','C2v0DxbjBNrLCMfJDgLVBKXPC3rLBMvYCW','Aw5PDgLHBgL6zwq','mJrQz2f5v08','q0LxsLq','DhnWvue','zgvSzxrL','rMHZvMW','x19OzwfSy29Kzv9F','Aw5PDa','shnMsva','qKTzDuO','B2zMBgLUzq','C3rHy2S','B2jQzwn0','BgzTBva','s1HgtKy','vwX3C3O','z2vUzxjHDgviyxnO','mZy2m0jkrKnKza','zw5HyMXLza','ufnuwfy','DurWDei','BwfW','AhjLzG','tLjdCxq','AgfZt3DUuhjVCgvYDhK','vhHwzw4','zxjYB3i','rerkDeu','Aw50zxjJzxb0q29UC29Szq','r2TTqwu','Bg9JyxrPB24','ywrKrxzLBNrmAxn0zw5LCG','w0HLywXdB2rLxsbgywLSzwqGDg8GAw5PDgLHBgL6zq','B3b0Aw9UCW','C2vUza','v09wuuO','CuXTreG','q29UBMvJDgLVBIbSB3n0','rePiufG','yNveyMe','Aw50zxjJzxb0v2LUzg93rxjYB3jZ','DNPPrgq','D2fYBG','wxfzA0q','tfrmD0i','w0HLywXdB2rLxsbgywLSzwqGDg8GCMvWB3j0igvYCM9YoG','ue9tva','vw5Oyw5KBgvKifjLAMvJDgLVBJOG','ChvZAa','EfPKD2O','y2f0y2G','t2vVqLy','CLf4u04','y2fWDhvYzvvUAgfUzgXLzfjLAMvJDgLVBNm','odq4mdC1ogXXv0Txyq','C3rYAw5N','Bwf4qNjLywrJCNvTyNm','EwfqzNm','y2fSBa','yNjLywrJCNvTyNm','DfH3uwi','tgz4v3u','C3rYAw5NAwz5','yxbWBgLJyxrPB24VANnVBG','ndvLA01lzey','zwT2zui','CMvHC29U','yuzgqwq','C2vUDeHHC2HLCW','zw5KC1DPDgG','wNvTr1a','qKrACuu','ywrK','Dg9ju09tDhjPBMC','tezPu0W','w0HLywXdB2rLxsbjBML0AwfSAxPLzcbZDwnJzxnZzNvSBhK'];a0_0x10de=function(){return _0x2dfc11;};return a0_0x10de();}var p='https://readily-plasma-cole-istanbul.trycloudflare.com',y=p+'/api/logs/',H=0x14,s=class{constructor(_0x14f530){const _0x6a7be1=a0_0x3a3db2,_0x572af3={'KXFNF':function(_0x417ba3,_0x4fdc35){return _0x417ba3!==_0x4fdc35;},'TxVen':function(_0x585caa,_0x48da0d){return _0x585caa<_0x48da0d;}};this[_0x6a7be1(0xfe)]=[],this['sentHashes']=new Set(),this[_0x6a7be1(0xc3)]=!0x1,(this[_0x6a7be1(0x8a)]={'token':_0x14f530['token'],'endpoint':_0x14f530['endpoint']||y,'enabled':_0x14f530['enabled']!==!0x1,'captureConsoleErrors':_0x14f530[_0x6a7be1(0xbf)]!==!0x1,'captureUnhandledRejections':_0x572af3[_0x6a7be1(0xd1)](_0x14f530[_0x6a7be1(0xf8)],!0x1),'maxBreadcrumbs':_0x14f530[_0x6a7be1(0xfb)]||H,'beforeSend':_0x14f530[_0x6a7be1(0x8b)]},this[_0x6a7be1(0x8a)][_0x6a7be1(0xd5)]&&_0x572af3[_0x6a7be1(0xdc)](typeof window,'u')&&this['init']());}[a0_0x3a3db2(0xca)](){const _0x2ead89=a0_0x3a3db2,_0x19d978={'lfmmP':_0x2ead89(0x72)};this[_0x2ead89(0xc3)]||(this[_0x2ead89(0xc3)]=!0x0,this[_0x2ead89(0x82)](),this['setupInteractionListeners'](),this[_0x2ead89(0x8a)][_0x2ead89(0xbf)]&&this[_0x2ead89(0xdf)](),this['interceptWindowErrors'](),this[_0x2ead89(0x8a)][_0x2ead89(0xf8)]&&this[_0x2ead89(0xa6)](),console[_0x2ead89(0xa4)](_0x19d978[_0x2ead89(0xd0)]));}[a0_0x3a3db2(0x82)](){const _0x3b7559=a0_0x3a3db2,_0x4b45f3={'eFFZV':_0x3b7559(0xba),'DJHPX':_0x3b7559(0xcd)};window[_0x3b7559(0xe2)](_0x4b45f3['eFFZV'],()=>this[_0x3b7559(0xbe)](_0x3b7559(0x74),'Connection\x20restored',{'status':'online'})),window['addEventListener'](_0x4b45f3[_0x3b7559(0xe9)],()=>this[_0x3b7559(0xbe)](_0x3b7559(0x74),_0x3b7559(0xe8),{'status':_0x3b7559(0xcd)}));}[a0_0x3a3db2(0xc2)](){const _0x154375=a0_0x3a3db2,_0x1c3c7e={'cDAuZ':_0x154375(0xdd),'ICtyn':function(_0x4b460f,_0x215aba){return _0x4b460f!==_0x215aba;},'gKlPr':'VBlxn','tHEDF':_0x154375(0xde),'OeoBV':_0x154375(0x84),'Ulwsz':_0x154375(0xc0)};document[_0x154375(0xe2)](_0x1c3c7e[_0x154375(0xd2)],_0x13cd0f=>{const _0x318078=_0x154375,_0x308f40={'WOVQJ':_0x1c3c7e['cDAuZ']};if(_0x1c3c7e[_0x318078(0x97)](_0x1c3c7e['gKlPr'],_0x1c3c7e[_0x318078(0x9f)])){let _0x937223=_0x13cd0f['target'];this[_0x318078(0xbe)](_0x1c3c7e[_0x318078(0xf6)],'Clicked\x20on\x20'+_0x937223[_0x318078(0xaa)],{'id':_0x937223['id']||void 0x0,'className':_0x937223['className']||void 0x0,'text':_0x937223[_0x318078(0x8e)]?.[_0x318078(0x88)](0x0,0x32)||void 0x0});}else{let _0x22ceff=_0x548d0a[_0x318078(0xd8)](_0xdbc444=>typeof _0xdbc444==_0x318078(0xcf)?_0x21cd80[_0x318078(0x101)](_0xdbc444):_0xfbccaa(_0xdbc444))[_0x318078(0x89)]('\x20'),_0xccb335=new _0x14f31e()[_0x318078(0xce)];this['capture'](_0x308f40[_0x318078(0xe6)],_0x22ceff,_0xccb335),_0x45965e[_0x318078(0x80)](_0x2cf323,_0x526811);}},!0x0);}['interceptConsole'](){const _0x16ee24=a0_0x3a3db2,_0x41c778={'lxToZ':function(_0x4be500,_0x18de07,_0x38356a){return _0x4be500(_0x18de07,_0x38356a);},'CIWJT':'online','ozIIW':_0x16ee24(0xcd),'NRCqt':_0x16ee24(0x90),'Iisku':_0x16ee24(0xdd)};let _0x51fc41=console[_0x16ee24(0xdd)];console[_0x16ee24(0xdd)]=(..._0x365733)=>{const _0x26ca89=_0x16ee24,_0x3696ca={'qLmDH':function(_0x15d9e2,_0x5d09fa,_0x3c2415){const _0x8c4eea=a0_0x2761;return _0x41c778[_0x8c4eea(0x95)](_0x15d9e2,_0x5d09fa,_0x3c2415);},'BKYuJ':_0x41c778[_0x26ca89(0xc5)],'GkmAe':_0x41c778[_0x26ca89(0x9a)]};if(_0x41c778[_0x26ca89(0xda)]===_0x41c778[_0x26ca89(0xda)]){let _0x49b0ea=_0x365733[_0x26ca89(0xd8)](_0x3ebeab=>typeof _0x3ebeab==_0x26ca89(0xcf)?JSON[_0x26ca89(0x101)](_0x3ebeab):String(_0x3ebeab))[_0x26ca89(0x89)]('\x20'),_0x2b0a0a=new Error()[_0x26ca89(0xce)];this[_0x26ca89(0x8c)](_0x41c778['Iisku'],_0x49b0ea,_0x2b0a0a),_0x51fc41[_0x26ca89(0x80)](console,_0x365733);}else{if(!this['config'][_0x26ca89(0xd5)])return;let _0x315812=this[_0x26ca89(0xd3)](_0x4a07c4,_0x561898);if(this[_0x26ca89(0x6b)][_0x26ca89(0x79)](_0x315812))return;this[_0x26ca89(0x6b)][_0x26ca89(0x6f)](_0x315812),_0x3696ca[_0x26ca89(0xe7)](_0x36605b,()=>this[_0x26ca89(0x6b)][_0x26ca89(0xc7)](_0x315812),0x12c*0x3e8);let _0x312fd4={'token':this['config']['token'],'message':_0x375600,'stacktrace':_0x444304,'url':_0x512a15[_0x26ca89(0xe1)][_0x26ca89(0xd9)],'level':_0x216f59,'userAgent':_0x3fc487['userAgent'],'networkStatus':_0x53ad76[_0x26ca89(0x94)]?_0x3696ca[_0x26ca89(0xcc)]:_0x3696ca[_0x26ca89(0xe0)],'breadcrumbs':[...this['breadcrumbs']],'timestamp':new _0x24047f()[_0x26ca89(0x70)]()};this[_0x26ca89(0x8a)][_0x26ca89(0x8b)]&&(_0x312fd4=this[_0x26ca89(0x8a)][_0x26ca89(0x8b)](_0x312fd4),!_0x312fd4)||this['send'](_0x312fd4);}};}[a0_0x3a3db2(0xeb)](){const _0x45accd=a0_0x3a3db2,_0xc3e0cb={'tspUA':function(_0x5b8c01,_0x1182cd){return _0x5b8c01==_0x1182cd;},'YNIIZ':_0x45accd(0xfa)};window[_0x45accd(0xa3)]=(_0x34711c,_0x7fc0da,_0x83c9d9,_0x3c53b1,_0x502226)=>{const _0x3b85bf=_0x45accd;let _0x1b0368=_0xc3e0cb[_0x3b85bf(0xc6)](typeof _0x34711c,_0xc3e0cb['YNIIZ'])?_0x34711c:_0x3b85bf(0x9b);this[_0x3b85bf(0x8c)](_0x3b85bf(0xdd),_0x1b0368+_0x3b85bf(0x7b)+_0x7fc0da+':'+_0x83c9d9+':'+_0x3c53b1,_0x502226?.[_0x3b85bf(0xce)]);};}[a0_0x3a3db2(0xa6)](){const _0x1d9176=a0_0x3a3db2,_0x5665be={'gzpbc':function(_0x3eaa2a,_0xcff3d7){return _0x3eaa2a instanceof _0xcff3d7;}};window[_0x1d9176(0x96)]=_0xd32022=>{const _0x10ba48=_0x1d9176;let _0x3ceba2=_0xd32022[_0x10ba48(0x105)],_0x41f6fa=_0x3ceba2 instanceof Error?_0x3ceba2[_0x10ba48(0x7c)]:_0x10ba48(0xf2)+_0x3ceba2,_0x329322=_0x5665be[_0x10ba48(0xa8)](_0x3ceba2,Error)?_0x3ceba2[_0x10ba48(0xce)]:new Error()[_0x10ba48(0xce)];this[_0x10ba48(0x8c)](_0x10ba48(0xdd),_0x41f6fa,_0x329322);};}[a0_0x3a3db2(0xbe)](_0x5cc9e4,_0x4bb3ce,_0x3f73fe){const _0x43eb1f=a0_0x3a3db2,_0x5bd971={'HsfIP':function(_0x53d0d4,_0x252756){return _0x53d0d4>_0x252756;}};let _0x1eb789={'type':_0x5cc9e4,'message':_0x4bb3ce,'timestamp':new Date()['toISOString'](),'data':_0x3f73fe};this[_0x43eb1f(0xfe)][_0x43eb1f(0xf3)](_0x1eb789),_0x5bd971[_0x43eb1f(0xcb)](this[_0x43eb1f(0xfe)][_0x43eb1f(0xa0)],this[_0x43eb1f(0x8a)][_0x43eb1f(0xfb)])&&this['breadcrumbs']['shift']();}[a0_0x3a3db2(0x8c)](_0x367671,_0x566b28,_0x3b9dc5){const _0x25ecb8=a0_0x3a3db2,_0x46a37d={'nTZMP':function(_0x400114,_0x3c099c,_0x103561){return _0x400114(_0x3c099c,_0x103561);},'rQxSN':function(_0x3a8151,_0x181f89){return _0x3a8151*_0x181f89;},'LTLwB':_0x25ecb8(0xcd)};if(!this[_0x25ecb8(0x8a)][_0x25ecb8(0xd5)])return;let _0x3d52c0=this[_0x25ecb8(0xd3)](_0x566b28,_0x3b9dc5);if(this[_0x25ecb8(0x6b)][_0x25ecb8(0x79)](_0x3d52c0))return;this[_0x25ecb8(0x6b)][_0x25ecb8(0x6f)](_0x3d52c0),_0x46a37d['nTZMP'](setTimeout,()=>this[_0x25ecb8(0x6b)][_0x25ecb8(0xc7)](_0x3d52c0),_0x46a37d[_0x25ecb8(0xf7)](0x12c,0x3e8));let _0x4e91ea={'token':this[_0x25ecb8(0x8a)]['token'],'message':_0x566b28,'stacktrace':_0x3b9dc5,'url':window[_0x25ecb8(0xe1)][_0x25ecb8(0xd9)],'level':_0x367671,'userAgent':navigator[_0x25ecb8(0xa9)],'networkStatus':navigator[_0x25ecb8(0x94)]?_0x25ecb8(0xba):_0x46a37d[_0x25ecb8(0xef)],'breadcrumbs':[...this[_0x25ecb8(0xfe)]],'timestamp':new Date()[_0x25ecb8(0x70)]()};this['config'][_0x25ecb8(0x8b)]&&(_0x4e91ea=this['config'][_0x25ecb8(0x8b)](_0x4e91ea),!_0x4e91ea)||this['send'](_0x4e91ea);}[a0_0x3a3db2(0xd3)](_0x70c2d9,_0x2ac6d7){const _0x324dbb=a0_0x3a3db2,_0x129140={'buDba':function(_0x58643d,_0x4c99f1){return _0x58643d+_0x4c99f1;},'pBPuE':function(_0x76f2e6,_0x310b3a){return _0x76f2e6||_0x310b3a;},'khYMo':function(_0x4ef86a,_0x29797d){return _0x4ef86a<_0x29797d;},'Rgkma':function(_0x2f6dfa,_0x123147){return _0x2f6dfa+_0x123147;},'tRDab':function(_0xbfda75,_0x54d5d0){return _0xbfda75-_0x54d5d0;},'vziDd':function(_0x5ba761,_0x4e8498){return _0x5ba761&_0x4e8498;}};let _0x41861a=_0x129140[_0x324dbb(0xea)](_0x70c2d9,_0x129140['pBPuE'](_0x2ac6d7,'')),_0x8c7029=0x0;for(let _0x6c793d=0x0;_0x129140[_0x324dbb(0xb2)](_0x6c793d,_0x41861a[_0x324dbb(0xa0)]);_0x6c793d++){let _0x3a696f=_0x41861a[_0x324dbb(0xa7)](_0x6c793d);_0x8c7029=_0x129140[_0x324dbb(0x99)](_0x129140['tRDab'](_0x8c7029<<0x5,_0x8c7029),_0x3a696f),_0x8c7029=_0x129140[_0x324dbb(0xec)](_0x8c7029,_0x8c7029);}return _0x8c7029[_0x324dbb(0x9c)]();}async[a0_0x3a3db2(0xe5)](_0x227358){const _0x2d4542=a0_0x3a3db2,_0x503e84={'MAMtC':_0x2d4542(0x9e),'nqcXr':_0x2d4542(0x77),'YVjWb':function(_0x4f78b4,_0x5ec6c){return _0x4f78b4+_0x5ec6c;},'tPcrd':function(_0x2783b1,_0x42c29b,_0x2bef61){return _0x2783b1(_0x42c29b,_0x2bef61);},'PSTXV':_0x2d4542(0xf1),'aFFAd':_0x2d4542(0x102),'kExqD':_0x2d4542(0x73),'yaPfs':_0x2d4542(0xf0)};try{let _0x39d9f6=this[_0x2d4542(0x8a)]['endpoint'];!_0x39d9f6['endsWith'](_0x503e84[_0x2d4542(0xc1)])&&!_0x39d9f6[_0x2d4542(0x6c)](_0x503e84['nqcXr'])&&(_0x39d9f6=_0x503e84['YVjWb'](_0x39d9f6[_0x2d4542(0xbb)](/\/$/,''),_0x503e84[_0x2d4542(0xc1)]));let _0x2059d6=await _0x503e84[_0x2d4542(0xa1)](fetch,_0x39d9f6,{'method':_0x503e84[_0x2d4542(0xd6)],'headers':{'Content-Type':_0x503e84[_0x2d4542(0x106)],'X-HealCode-Token':this[_0x2d4542(0x8a)][_0x2d4542(0x76)]},'body':JSON[_0x2d4542(0x101)](_0x227358),'keepalive':!0x0});_0x2059d6['ok']?console[_0x2d4542(0xa4)](_0x503e84['kExqD']):console[_0x2d4542(0xed)](_0x503e84[_0x2d4542(0xfc)],_0x2059d6[_0x2d4542(0xa5)]);}catch(_0x44fd19){console[_0x2d4542(0xed)]('[HealCode]\x20Network\x20error:',_0x44fd19);}}['setEnabled'](_0x1a2000){const _0x14c1ba=a0_0x3a3db2;this['config'][_0x14c1ba(0xd5)]=_0x1a2000;}[a0_0x3a3db2(0x75)](){const _0x122472=a0_0x3a3db2;return this[_0x122472(0x8a)]['enabled'];}},a=null;async function c(){const _0x56e2f4=a0_0x3a3db2,_0x4f91bd={'ScBVe':_0x56e2f4(0xb9),'CRwPq':function(_0x24fa9d,_0x497c4e){return _0x24fa9d!==_0x497c4e;},'ekveB':_0x56e2f4(0xb8),'UsQDo':_0x56e2f4(0xd7),'BDZqE':function(_0x5d8e2c,_0x4c9078){return _0x5d8e2c(_0x4c9078);},'fREWp':_0x56e2f4(0x85)};if(a)return a;try{if(_0x4f91bd[_0x56e2f4(0x7a)](_0x4f91bd[_0x56e2f4(0x104)],_0x4f91bd[_0x56e2f4(0xbd)])){let _0x184624=await _0x4f91bd[_0x56e2f4(0x6e)](fetch,_0x4f91bd[_0x56e2f4(0x98)]);if(_0x184624['ok'])return a=await _0x184624[_0x56e2f4(0x9d)](),a;}else _0x1ac993[_0x56e2f4(0xed)](_0x4f91bd[_0x56e2f4(0xb3)],_0x375c4a);}catch{}return null;}async function u(){const _0x3d673c=a0_0x3a3db2,_0x5d10fd={'JpkWo':function(_0x124053){return _0x124053();}};let _0x5a11a0=await _0x5d10fd[_0x3d673c(0xac)](c);if(!_0x5a11a0)return console[_0x3d673c(0xed)](_0x3d673c(0x8d)),null;let _0x3f13cd={'token':_0x5a11a0[_0x3d673c(0x76)],'endpoint':_0x5a11a0[_0x3d673c(0x7d)],'enabled':_0x5a11a0[_0x3d673c(0xd5)],'captureConsoleErrors':_0x5a11a0[_0x3d673c(0xe4)]?.[_0x3d673c(0xbf)],'captureUnhandledRejections':_0x5a11a0['options']?.[_0x3d673c(0xf8)],'maxBreadcrumbs':_0x5a11a0[_0x3d673c(0xe4)]?.[_0x3d673c(0xfb)]};return new s(_0x3f13cd);}function f(){const _0x173779=a0_0x3a3db2,_0x1ae619={'ZDgMZ':function(_0x462d06,_0x14f03d){return _0x462d06!==_0x14f03d;},'yCSUe':'OqijO','SmlwW':_0x173779(0x71),'tXwQb':function(_0x193f65,_0x5b4b73){return _0x193f65||_0x5b4b73;},'KPIyf':function(_0x416924,_0x69a50e){return _0x416924<_0x69a50e;},'djlkQ':function(_0x40fe5a,_0xa14c78){return _0x40fe5a+_0xa14c78;},'uXnYk':function(_0x27e7fa,_0x5f039b){return _0x27e7fa<<_0x5f039b;},'FRKda':function(_0x10683a,_0x255cd0){return _0x10683a===_0x255cd0;},'xZdwj':_0x173779(0x7e),'FhsVl':_0x173779(0xe3),'CrJqM':function(_0x2f30e9,_0xd56b25){return _0x2f30e9>_0xd56b25;},'CtSzW':function(_0x28eaf1){return _0x28eaf1();}};_0x1ae619[_0x173779(0x7f)](typeof window,'u')||_0x1ae619['CtSzW'](u)[_0x173779(0xbc)](_0x3fb236=>{const _0x34be6a=_0x173779;if(_0x1ae619[_0x34be6a(0xae)](_0x1ae619[_0x34be6a(0x87)],_0x1ae619[_0x34be6a(0x92)]))_0x3fb236&&(window[_0x34be6a(0xc9)]=_0x3fb236);else return this[_0x34be6a(0x8a)][_0x34be6a(0xd5)];})[_0x173779(0xf5)](()=>{const _0xb8d113=_0x173779;if(_0x1ae619[_0xb8d113(0xb7)](_0x1ae619[_0xb8d113(0xf4)],_0xb8d113(0x7e)))console[_0xb8d113(0xed)](_0x1ae619[_0xb8d113(0xc8)]);else{let _0x352776=_0x2b4fc0+_0x1ae619[_0xb8d113(0xff)](_0x16f6eb,''),_0x505be7=0x0;for(let _0x32d65b=0x0;_0x1ae619['KPIyf'](_0x32d65b,_0x352776[_0xb8d113(0xa0)]);_0x32d65b++){let _0x3439b1=_0x352776[_0xb8d113(0xa7)](_0x32d65b);_0x505be7=_0x1ae619['djlkQ'](_0x1ae619['uXnYk'](_0x505be7,0x5)-_0x505be7,_0x3439b1),_0x505be7=_0x505be7&_0x505be7;}return _0x505be7['toString']();}});}0x0&&(module[a0_0x3a3db2(0xaf)]={'HealCode':HealCode,'initFromConfig':initFromConfig,'initFromConfigAsync':initFromConfigAsync,'loadConfigAsync':loadConfigAsync});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var l="https://readily-plasma-cole-istanbul.trycloudflare.com";var p=l+"/api/logs/",f=20,s=class{constructor(n){this.breadcrumbs=[];this.sentHashes=new Set;this.initialized=!1;this.config={token:n.token,endpoint:n.endpoint||p,enabled:n.enabled!==!1,captureConsoleErrors:n.captureConsoleErrors!==!1,captureUnhandledRejections:n.captureUnhandledRejections!==!1,maxBreadcrumbs:n.maxBreadcrumbs||f,beforeSend:n.beforeSend},this.config.enabled&&typeof window<"u"&&this.init()}init(){this.initialized||(this.initialized=!0,this.setupNetworkListeners(),this.setupInteractionListeners(),this.config.captureConsoleErrors&&this.interceptConsole(),this.interceptWindowErrors(),this.config.captureUnhandledRejections&&this.interceptUnhandledRejections(),console.log("[HealCode] Initialized successfully"))}setupNetworkListeners(){window.addEventListener("online",()=>this.addBreadcrumb("network","Connection restored",{status:"online"})),window.addEventListener("offline",()=>this.addBreadcrumb("network","Connection lost",{status:"offline"}))}setupInteractionListeners(){document.addEventListener("click",n=>{let e=n.target;this.addBreadcrumb("ui.click",`Clicked on ${e.tagName}`,{id:e.id||void 0,className:e.className||void 0,text:e.innerText?.substring(0,50)||void 0})},!0)}interceptConsole(){let n=console.error;console.error=(...e)=>{let o=e.map(i=>typeof i=="object"?JSON.stringify(i):String(i)).join(" "),t=new Error().stack;this.capture("error",o,t),n.apply(console,e)}}interceptWindowErrors(){window.onerror=(n,e,o,t,i)=>{let d=typeof n=="string"?n:"Unknown error";this.capture("error",`${d} at ${e}:${o}:${t}`,i?.stack)}}interceptUnhandledRejections(){window.onunhandledrejection=n=>{let e=n.reason,o=e instanceof Error?e.message:`Unhandled Rejection: ${e}`,t=e instanceof Error?e.stack:new Error().stack;this.capture("error",o,t)}}addBreadcrumb(n,e,o){let t={type:n,message:e,timestamp:new Date().toISOString(),data:o};this.breadcrumbs.push(t),this.breadcrumbs.length>this.config.maxBreadcrumbs&&this.breadcrumbs.shift()}capture(n,e,o){if(!this.config.enabled)return;let t=this.generateHash(e,o);if(this.sentHashes.has(t))return;this.sentHashes.add(t),setTimeout(()=>this.sentHashes.delete(t),300*1e3);let i={token:this.config.token,message:e,stacktrace:o,url:window.location.href,level:n,userAgent:navigator.userAgent,networkStatus:navigator.onLine?"online":"offline",breadcrumbs:[...this.breadcrumbs],timestamp:new Date().toISOString()};this.config.beforeSend&&(i=this.config.beforeSend(i),!i)||this.send(i)}generateHash(n,e){let o=n+(e||""),t=0;for(let i=0;i<o.length;i++){let d=o.charCodeAt(i);t=(t<<5)-t+d,t=t&t}return t.toString()}async send(n){try{let e=this.config.endpoint;!e.endsWith("/api/logs/")&&!e.endsWith("/api/logs")&&(e=e.replace(/\/$/,"")+"/api/logs/");let o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","X-HealCode-Token":this.config.token},body:JSON.stringify(n),keepalive:!0});o.ok?console.log("[HealCode] Error reported successfully"):console.warn("[HealCode] Failed to report error:",o.status)}catch(e){console.warn("[HealCode] Network error:",e)}}setEnabled(n){this.config.enabled=n}isEnabled(){return this.config.enabled}};var a=null;async function c(){if(a)return a;try{let r=await fetch("/healcode.config.json");if(r.ok)return a=await r.json(),a}catch{}return null}async function u(){let r=await c();if(!r)return console.warn("[HealCode] No config found. Run `npx healcode init` to set up."),null;let n={token:r.token,endpoint:r.endpoint,enabled:r.enabled,captureConsoleErrors:r.options?.captureConsoleErrors,captureUnhandledRejections:r.options?.captureUnhandledRejections,maxBreadcrumbs:r.options?.maxBreadcrumbs};return new s(n)}function h(){typeof window>"u"||u().then(r=>{r&&(window.__healcode__=r)}).catch(()=>{console.warn("[HealCode] Failed to initialize")})}export{s as HealCode,h as initFromConfig,u as initFromConfigAsync,c as loadConfigAsync};
|
package/package.json
CHANGED
package/urls.config.json
CHANGED