@tracetail/vue 2.3.13 → 2.3.15

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.
@@ -0,0 +1,27 @@
1
+ import { type DeepReadonly, type Ref } from 'vue';
2
+ import { type ComplianceContext } from '@tracetail/js';
3
+ /**
4
+ * Vue composable returning client-side privacy / region compliance signals
5
+ * (GPC, DNT, timezone, locale, inferred region, and a conservative
6
+ * `likelyRequiresConsent` hint).
7
+ *
8
+ * The context is computed ONCE when the composable is first invoked (the
9
+ * underlying signals do not change during a session) and returned as a readonly
10
+ * ref. SSR-safe: returns the same safe defaults as `getComplianceContext()`
11
+ * when browser globals are unavailable.
12
+ *
13
+ * These are CLIENT-SIDE HEURISTICS, not authoritative geolocation, and do NOT
14
+ * gate or alter fingerprint collection. Use `likelyRequiresConsent` together
15
+ * with your own consent state to decide whether to collect a fingerprint —
16
+ * obtaining consent where required (EU ePrivacy/GDPR, UK PECR, etc.) is the
17
+ * merchant's responsibility.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const compliance = useComplianceContext();
22
+ * const shouldCollect = computed(
23
+ * () => !compliance.value.likelyRequiresConsent || hasConsent.value
24
+ * );
25
+ * ```
26
+ */
27
+ export declare function useComplianceContext(): Readonly<Ref<DeepReadonly<ComplianceContext>>>;
package/dist/index.d.ts CHANGED
@@ -3,5 +3,8 @@ export { useFingerprint } from './composables/useFingerprint';
3
3
  export { useTrackEvent } from './composables/useTrackEvent';
4
4
  export { useFraudDetection } from './composables/useFraudDetection';
5
5
  export { useTraceTail } from './composables/useTraceTail';
6
+ export { useComplianceContext } from './composables/useComplianceContext';
6
7
  export * from './types';
7
8
  export { TRACETAIL_KEY } from './injection-keys';
9
+ export { getComplianceContext } from '@tracetail/js';
10
+ export type { ComplianceContext, ComplianceRegion } from '@tracetail/js';
@@ -204,8 +204,42 @@ function useFraudDetection() {
204
204
  };
205
205
  }
206
206
 
207
+ /**
208
+ * Vue composable returning client-side privacy / region compliance signals
209
+ * (GPC, DNT, timezone, locale, inferred region, and a conservative
210
+ * `likelyRequiresConsent` hint).
211
+ *
212
+ * The context is computed ONCE when the composable is first invoked (the
213
+ * underlying signals do not change during a session) and returned as a readonly
214
+ * ref. SSR-safe: returns the same safe defaults as `getComplianceContext()`
215
+ * when browser globals are unavailable.
216
+ *
217
+ * These are CLIENT-SIDE HEURISTICS, not authoritative geolocation, and do NOT
218
+ * gate or alter fingerprint collection. Use `likelyRequiresConsent` together
219
+ * with your own consent state to decide whether to collect a fingerprint —
220
+ * obtaining consent where required (EU ePrivacy/GDPR, UK PECR, etc.) is the
221
+ * merchant's responsibility.
222
+ *
223
+ * @example
224
+ * ```ts
225
+ * const compliance = useComplianceContext();
226
+ * const shouldCollect = computed(
227
+ * () => !compliance.value.likelyRequiresConsent || hasConsent.value
228
+ * );
229
+ * ```
230
+ */
231
+ function useComplianceContext() {
232
+ const context = vue.ref(TraceTail.getComplianceContext());
233
+ return vue.readonly(context);
234
+ }
235
+
236
+ Object.defineProperty(exports, "getComplianceContext", {
237
+ enumerable: true,
238
+ get: function () { return TraceTail.getComplianceContext; }
239
+ });
207
240
  exports.TRACETAIL_KEY = TRACETAIL_KEY;
208
241
  exports.TraceTailPlugin = TraceTailPlugin;
242
+ exports.useComplianceContext = useComplianceContext;
209
243
  exports.useFingerprint = useFingerprint;
210
244
  exports.useFraudDetection = useFraudDetection;
211
245
  exports.useTraceTail = useTraceTail;
@@ -1 +1 @@
1
- {"version":3,"file":"tracetail-vue.cjs.js","sources":["../src/injection-keys.ts","../src/plugin.ts","../node_modules/tslib/tslib.es6.js","../src/composables/useTraceTail.ts","../src/composables/useFingerprint.ts","../src/composables/useTrackEvent.ts","../src/composables/useFraudDetection.ts"],"sourcesContent":["import { InjectionKey } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\n\nexport const TRACETAIL_KEY: InjectionKey<{\n client: TraceTail;\n options: TraceTailOptions;\n}> = Symbol('tracetail');","import { App, Plugin } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\nimport { TRACETAIL_KEY } from './injection-keys';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use the fingerprinting SDK to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport const TraceTailPlugin: Plugin = {\n install(app: App, options: TraceTailOptions) {\n if (!options.apiKey) {\n console.error('[TraceTail] API key is required');\n return;\n }\n\n // Create TraceTail client instance. Pass through endpoint so a custom config.endpoint\n // is honored (previously dropped, so it always defaulted to '/api').\n const client = new TraceTail({\n apiKey: options.apiKey,\n timeout: options.config?.timeout ?? 5000,\n ...(options.config?.endpoint ? { endpoint: options.config.endpoint } : {}),\n });\n\n // Provide the client and options to all components\n app.provide(TRACETAIL_KEY, {\n client,\n options\n });\n\n // Add global property for Options API compatibility\n app.config.globalProperties.$tracetail = {\n client,\n getFingerprint: () => client.generateFingerprint(),\n track: () => Promise.reject(new Error(TRACKING_UNSUPPORTED_ERROR))\n };\n }\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { inject } from 'vue';\nimport { TRACETAIL_KEY } from '../injection-keys';\n\nexport function useTraceTail() {\n const tracetail = inject(TRACETAIL_KEY);\n\n if (!tracetail) {\n throw new Error(\n '[TraceTail] No TraceTail instance found. ' +\n 'Make sure to install the TraceTail plugin at the app level.'\n );\n }\n\n return tracetail;\n}","import { ref, onMounted, computed } from 'vue';\nimport { useTraceTail } from './useTraceTail';\nimport { Fingerprint, FingerprintComposable } from '../types';\n\nexport function useFingerprint(): FingerprintComposable {\n const { client, options } = useTraceTail();\n \n const fingerprint = ref<Fingerprint | null>(null);\n const loading = ref(true);\n const error = ref<Error | null>(null);\n\n // Computed properties for easy access\n const visitorId = computed(() => fingerprint.value?.visitorId || null);\n const confidence = computed(() => fingerprint.value?.confidence || 0);\n const riskScore = computed(() => fingerprint.value?.riskScore || 0);\n const fraudulent = computed(() => fingerprint.value?.fraudulent || false);\n const signals = computed(() => fingerprint.value?.signals || null);\n const processingTime = computed(() => fingerprint.value?.processingTime || 0);\n\n const loadFingerprint = async () => {\n try {\n loading.value = true;\n error.value = null;\n\n // Handle test mode\n if (options.config?.testMode && options.config.mockData) {\n fingerprint.value = {\n visitorId: 'mock-visitor-123',\n confidence: 0.99,\n riskScore: 0.1,\n fraudulent: false,\n signals: {} as any,\n timestamp: new Date(),\n ...options.config.mockData\n } as Fingerprint;\n loading.value = false;\n return;\n }\n\n // Use verbose: true to get components in the response\n const result = await client.generateFingerprint({ verbose: true });\n\n fingerprint.value = {\n visitorId: result.visitorId,\n confidence: result.confidence,\n riskScore: 0, // Not in base SDK\n fraudulent: false, // Not in base SDK\n signals: result.components || {} as any,\n timestamp: new Date(),\n processingTime: result.processingTime\n };\n } catch (err) {\n error.value = err as Error;\n console.error('[TraceTail] Error getting fingerprint:', err);\n } finally {\n loading.value = false;\n }\n };\n\n const retry = async () => {\n await loadFingerprint();\n };\n\n const refresh = async () => {\n fingerprint.value = null;\n await loadFingerprint();\n };\n\n // Load fingerprint on mount\n onMounted(() => {\n loadFingerprint();\n });\n\n return {\n visitorId,\n confidence,\n riskScore,\n fraudulent,\n signals,\n processingTime,\n loading,\n error,\n retry,\n refresh\n };\n}","import { useTraceTail } from './useTraceTail';\nimport { TrackingResult } from '../types';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use useFingerprint() to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport function useTrackEvent() {\n useTraceTail();\n\n const trackEvent = async (\n event: string,\n data?: any\n ): Promise<TrackingResult> => {\n console.warn('[TraceTail] useTrackEvent() was called with:', { event, data });\n throw new Error(TRACKING_UNSUPPORTED_ERROR);\n };\n\n return trackEvent;\n}","import { ref, computed } from 'vue';\nimport { useFingerprint } from './useFingerprint';\nimport { FraudResult, FraudDetectionComposable } from '../types';\n\nexport function useFraudDetection(): FraudDetectionComposable {\n const { signals, riskScore } = useFingerprint();\n const isChecking = ref(false);\n\n const fraudSignals = computed(() => {\n if (!signals.value) return {};\n \n return {\n vpn: signals.value.vpn || false,\n tor: signals.value.tor || false,\n proxy: signals.value.proxy || false\n };\n });\n\n const checkFraud = async (data: any = {}): Promise<FraudResult> => {\n isChecking.value = true;\n \n try {\n // Determine fraud based on risk score and signals\n const currentRiskScore = riskScore.value;\n const block = currentRiskScore > 0.8 || signals.value?.tor || false;\n const challenge = currentRiskScore > 0.5 && currentRiskScore <= 0.8;\n const allow = currentRiskScore <= 0.5;\n \n const reasons: string[] = [];\n \n if (signals.value?.vpn) reasons.push('VPN detected');\n if (signals.value?.tor) reasons.push('Tor browser detected');\n if (signals.value?.proxy) reasons.push('Proxy detected');\n if (currentRiskScore > 0.7) reasons.push('High risk score');\n \n // Check transaction-specific risks\n if (data.amount && data.amount > 1000) {\n if (currentRiskScore > 0.3) {\n reasons.push('High-value transaction with elevated risk');\n }\n }\n\n return {\n block,\n challenge,\n allow,\n riskScore: currentRiskScore,\n reasons\n };\n } finally {\n isChecking.value = false;\n }\n };\n\n return {\n checkFraud,\n fraudSignals,\n isChecking\n };\n}"],"names":["TRACKING_UNSUPPORTED_ERROR","inject","ref","computed","onMounted"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"tracetail-vue.cjs.js","sources":["../src/injection-keys.ts","../src/plugin.ts","../node_modules/tslib/tslib.es6.js","../src/composables/useTraceTail.ts","../src/composables/useFingerprint.ts","../src/composables/useTrackEvent.ts","../src/composables/useFraudDetection.ts","../src/composables/useComplianceContext.ts"],"sourcesContent":["import { InjectionKey } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\n\nexport const TRACETAIL_KEY: InjectionKey<{\n client: TraceTail;\n options: TraceTailOptions;\n}> = Symbol('tracetail');","import { App, Plugin } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\nimport { TRACETAIL_KEY } from './injection-keys';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use the fingerprinting SDK to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport const TraceTailPlugin: Plugin = {\n install(app: App, options: TraceTailOptions) {\n if (!options.apiKey) {\n console.error('[TraceTail] API key is required');\n return;\n }\n\n // Create TraceTail client instance. Pass through endpoint so a custom config.endpoint\n // is honored (previously dropped, so it always defaulted to '/api').\n const client = new TraceTail({\n apiKey: options.apiKey,\n timeout: options.config?.timeout ?? 5000,\n ...(options.config?.endpoint ? { endpoint: options.config.endpoint } : {}),\n });\n\n // Provide the client and options to all components\n app.provide(TRACETAIL_KEY, {\n client,\n options\n });\n\n // Add global property for Options API compatibility\n app.config.globalProperties.$tracetail = {\n client,\n getFingerprint: () => client.generateFingerprint(),\n track: () => Promise.reject(new Error(TRACKING_UNSUPPORTED_ERROR))\n };\n }\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { inject } from 'vue';\nimport { TRACETAIL_KEY } from '../injection-keys';\n\nexport function useTraceTail() {\n const tracetail = inject(TRACETAIL_KEY);\n\n if (!tracetail) {\n throw new Error(\n '[TraceTail] No TraceTail instance found. ' +\n 'Make sure to install the TraceTail plugin at the app level.'\n );\n }\n\n return tracetail;\n}","import { ref, onMounted, computed } from 'vue';\nimport { useTraceTail } from './useTraceTail';\nimport { Fingerprint, FingerprintComposable } from '../types';\n\nexport function useFingerprint(): FingerprintComposable {\n const { client, options } = useTraceTail();\n \n const fingerprint = ref<Fingerprint | null>(null);\n const loading = ref(true);\n const error = ref<Error | null>(null);\n\n // Computed properties for easy access\n const visitorId = computed(() => fingerprint.value?.visitorId || null);\n const confidence = computed(() => fingerprint.value?.confidence || 0);\n const riskScore = computed(() => fingerprint.value?.riskScore || 0);\n const fraudulent = computed(() => fingerprint.value?.fraudulent || false);\n const signals = computed(() => fingerprint.value?.signals || null);\n const processingTime = computed(() => fingerprint.value?.processingTime || 0);\n\n const loadFingerprint = async () => {\n try {\n loading.value = true;\n error.value = null;\n\n // Handle test mode\n if (options.config?.testMode && options.config.mockData) {\n fingerprint.value = {\n visitorId: 'mock-visitor-123',\n confidence: 0.99,\n riskScore: 0.1,\n fraudulent: false,\n signals: {} as any,\n timestamp: new Date(),\n ...options.config.mockData\n } as Fingerprint;\n loading.value = false;\n return;\n }\n\n // Use verbose: true to get components in the response\n const result = await client.generateFingerprint({ verbose: true });\n\n fingerprint.value = {\n visitorId: result.visitorId,\n confidence: result.confidence,\n riskScore: 0, // Not in base SDK\n fraudulent: false, // Not in base SDK\n signals: result.components || {} as any,\n timestamp: new Date(),\n processingTime: result.processingTime\n };\n } catch (err) {\n error.value = err as Error;\n console.error('[TraceTail] Error getting fingerprint:', err);\n } finally {\n loading.value = false;\n }\n };\n\n const retry = async () => {\n await loadFingerprint();\n };\n\n const refresh = async () => {\n fingerprint.value = null;\n await loadFingerprint();\n };\n\n // Load fingerprint on mount\n onMounted(() => {\n loadFingerprint();\n });\n\n return {\n visitorId,\n confidence,\n riskScore,\n fraudulent,\n signals,\n processingTime,\n loading,\n error,\n retry,\n refresh\n };\n}","import { useTraceTail } from './useTraceTail';\nimport { TrackingResult } from '../types';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use useFingerprint() to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport function useTrackEvent() {\n useTraceTail();\n\n const trackEvent = async (\n event: string,\n data?: any\n ): Promise<TrackingResult> => {\n console.warn('[TraceTail] useTrackEvent() was called with:', { event, data });\n throw new Error(TRACKING_UNSUPPORTED_ERROR);\n };\n\n return trackEvent;\n}","import { ref, computed } from 'vue';\nimport { useFingerprint } from './useFingerprint';\nimport { FraudResult, FraudDetectionComposable } from '../types';\n\nexport function useFraudDetection(): FraudDetectionComposable {\n const { signals, riskScore } = useFingerprint();\n const isChecking = ref(false);\n\n const fraudSignals = computed(() => {\n if (!signals.value) return {};\n \n return {\n vpn: signals.value.vpn || false,\n tor: signals.value.tor || false,\n proxy: signals.value.proxy || false\n };\n });\n\n const checkFraud = async (data: any = {}): Promise<FraudResult> => {\n isChecking.value = true;\n \n try {\n // Determine fraud based on risk score and signals\n const currentRiskScore = riskScore.value;\n const block = currentRiskScore > 0.8 || signals.value?.tor || false;\n const challenge = currentRiskScore > 0.5 && currentRiskScore <= 0.8;\n const allow = currentRiskScore <= 0.5;\n \n const reasons: string[] = [];\n \n if (signals.value?.vpn) reasons.push('VPN detected');\n if (signals.value?.tor) reasons.push('Tor browser detected');\n if (signals.value?.proxy) reasons.push('Proxy detected');\n if (currentRiskScore > 0.7) reasons.push('High risk score');\n \n // Check transaction-specific risks\n if (data.amount && data.amount > 1000) {\n if (currentRiskScore > 0.3) {\n reasons.push('High-value transaction with elevated risk');\n }\n }\n\n return {\n block,\n challenge,\n allow,\n riskScore: currentRiskScore,\n reasons\n };\n } finally {\n isChecking.value = false;\n }\n };\n\n return {\n checkFraud,\n fraudSignals,\n isChecking\n };\n}","import { readonly, ref, type DeepReadonly, type Ref } from 'vue';\nimport {\n getComplianceContext,\n type ComplianceContext,\n} from '@tracetail/js';\n\n/**\n * Vue composable returning client-side privacy / region compliance signals\n * (GPC, DNT, timezone, locale, inferred region, and a conservative\n * `likelyRequiresConsent` hint).\n *\n * The context is computed ONCE when the composable is first invoked (the\n * underlying signals do not change during a session) and returned as a readonly\n * ref. SSR-safe: returns the same safe defaults as `getComplianceContext()`\n * when browser globals are unavailable.\n *\n * These are CLIENT-SIDE HEURISTICS, not authoritative geolocation, and do NOT\n * gate or alter fingerprint collection. Use `likelyRequiresConsent` together\n * with your own consent state to decide whether to collect a fingerprint —\n * obtaining consent where required (EU ePrivacy/GDPR, UK PECR, etc.) is the\n * merchant's responsibility.\n *\n * @example\n * ```ts\n * const compliance = useComplianceContext();\n * const shouldCollect = computed(\n * () => !compliance.value.likelyRequiresConsent || hasConsent.value\n * );\n * ```\n */\nexport function useComplianceContext(): Readonly<Ref<DeepReadonly<ComplianceContext>>> {\n const context = ref<ComplianceContext>(getComplianceContext());\n return readonly(context);\n}\n"],"names":["TRACKING_UNSUPPORTED_ERROR","inject","ref","computed","onMounted","getComplianceContext","readonly"],"mappings":"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","x_google_ignoreList":[2]}
@@ -1,5 +1,6 @@
1
- import TraceTail from '@tracetail/js';
2
- import { inject, ref, computed, onMounted } from 'vue';
1
+ import TraceTail, { getComplianceContext } from '@tracetail/js';
2
+ export { getComplianceContext } from '@tracetail/js';
3
+ import { inject, ref, computed, onMounted, readonly } from 'vue';
3
4
 
4
5
  const TRACETAIL_KEY = Symbol('tracetail');
5
6
 
@@ -202,5 +203,34 @@ function useFraudDetection() {
202
203
  };
203
204
  }
204
205
 
205
- export { TRACETAIL_KEY, TraceTailPlugin, useFingerprint, useFraudDetection, useTraceTail, useTrackEvent };
206
+ /**
207
+ * Vue composable returning client-side privacy / region compliance signals
208
+ * (GPC, DNT, timezone, locale, inferred region, and a conservative
209
+ * `likelyRequiresConsent` hint).
210
+ *
211
+ * The context is computed ONCE when the composable is first invoked (the
212
+ * underlying signals do not change during a session) and returned as a readonly
213
+ * ref. SSR-safe: returns the same safe defaults as `getComplianceContext()`
214
+ * when browser globals are unavailable.
215
+ *
216
+ * These are CLIENT-SIDE HEURISTICS, not authoritative geolocation, and do NOT
217
+ * gate or alter fingerprint collection. Use `likelyRequiresConsent` together
218
+ * with your own consent state to decide whether to collect a fingerprint —
219
+ * obtaining consent where required (EU ePrivacy/GDPR, UK PECR, etc.) is the
220
+ * merchant's responsibility.
221
+ *
222
+ * @example
223
+ * ```ts
224
+ * const compliance = useComplianceContext();
225
+ * const shouldCollect = computed(
226
+ * () => !compliance.value.likelyRequiresConsent || hasConsent.value
227
+ * );
228
+ * ```
229
+ */
230
+ function useComplianceContext() {
231
+ const context = ref(getComplianceContext());
232
+ return readonly(context);
233
+ }
234
+
235
+ export { TRACETAIL_KEY, TraceTailPlugin, useComplianceContext, useFingerprint, useFraudDetection, useTraceTail, useTrackEvent };
206
236
  //# sourceMappingURL=tracetail-vue.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracetail-vue.esm.js","sources":["../src/injection-keys.ts","../src/plugin.ts","../node_modules/tslib/tslib.es6.js","../src/composables/useTraceTail.ts","../src/composables/useFingerprint.ts","../src/composables/useTrackEvent.ts","../src/composables/useFraudDetection.ts"],"sourcesContent":["import { InjectionKey } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\n\nexport const TRACETAIL_KEY: InjectionKey<{\n client: TraceTail;\n options: TraceTailOptions;\n}> = Symbol('tracetail');","import { App, Plugin } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\nimport { TRACETAIL_KEY } from './injection-keys';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use the fingerprinting SDK to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport const TraceTailPlugin: Plugin = {\n install(app: App, options: TraceTailOptions) {\n if (!options.apiKey) {\n console.error('[TraceTail] API key is required');\n return;\n }\n\n // Create TraceTail client instance. Pass through endpoint so a custom config.endpoint\n // is honored (previously dropped, so it always defaulted to '/api').\n const client = new TraceTail({\n apiKey: options.apiKey,\n timeout: options.config?.timeout ?? 5000,\n ...(options.config?.endpoint ? { endpoint: options.config.endpoint } : {}),\n });\n\n // Provide the client and options to all components\n app.provide(TRACETAIL_KEY, {\n client,\n options\n });\n\n // Add global property for Options API compatibility\n app.config.globalProperties.$tracetail = {\n client,\n getFingerprint: () => client.generateFingerprint(),\n track: () => Promise.reject(new Error(TRACKING_UNSUPPORTED_ERROR))\n };\n }\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { inject } from 'vue';\nimport { TRACETAIL_KEY } from '../injection-keys';\n\nexport function useTraceTail() {\n const tracetail = inject(TRACETAIL_KEY);\n\n if (!tracetail) {\n throw new Error(\n '[TraceTail] No TraceTail instance found. ' +\n 'Make sure to install the TraceTail plugin at the app level.'\n );\n }\n\n return tracetail;\n}","import { ref, onMounted, computed } from 'vue';\nimport { useTraceTail } from './useTraceTail';\nimport { Fingerprint, FingerprintComposable } from '../types';\n\nexport function useFingerprint(): FingerprintComposable {\n const { client, options } = useTraceTail();\n \n const fingerprint = ref<Fingerprint | null>(null);\n const loading = ref(true);\n const error = ref<Error | null>(null);\n\n // Computed properties for easy access\n const visitorId = computed(() => fingerprint.value?.visitorId || null);\n const confidence = computed(() => fingerprint.value?.confidence || 0);\n const riskScore = computed(() => fingerprint.value?.riskScore || 0);\n const fraudulent = computed(() => fingerprint.value?.fraudulent || false);\n const signals = computed(() => fingerprint.value?.signals || null);\n const processingTime = computed(() => fingerprint.value?.processingTime || 0);\n\n const loadFingerprint = async () => {\n try {\n loading.value = true;\n error.value = null;\n\n // Handle test mode\n if (options.config?.testMode && options.config.mockData) {\n fingerprint.value = {\n visitorId: 'mock-visitor-123',\n confidence: 0.99,\n riskScore: 0.1,\n fraudulent: false,\n signals: {} as any,\n timestamp: new Date(),\n ...options.config.mockData\n } as Fingerprint;\n loading.value = false;\n return;\n }\n\n // Use verbose: true to get components in the response\n const result = await client.generateFingerprint({ verbose: true });\n\n fingerprint.value = {\n visitorId: result.visitorId,\n confidence: result.confidence,\n riskScore: 0, // Not in base SDK\n fraudulent: false, // Not in base SDK\n signals: result.components || {} as any,\n timestamp: new Date(),\n processingTime: result.processingTime\n };\n } catch (err) {\n error.value = err as Error;\n console.error('[TraceTail] Error getting fingerprint:', err);\n } finally {\n loading.value = false;\n }\n };\n\n const retry = async () => {\n await loadFingerprint();\n };\n\n const refresh = async () => {\n fingerprint.value = null;\n await loadFingerprint();\n };\n\n // Load fingerprint on mount\n onMounted(() => {\n loadFingerprint();\n });\n\n return {\n visitorId,\n confidence,\n riskScore,\n fraudulent,\n signals,\n processingTime,\n loading,\n error,\n retry,\n refresh\n };\n}","import { useTraceTail } from './useTraceTail';\nimport { TrackingResult } from '../types';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use useFingerprint() to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport function useTrackEvent() {\n useTraceTail();\n\n const trackEvent = async (\n event: string,\n data?: any\n ): Promise<TrackingResult> => {\n console.warn('[TraceTail] useTrackEvent() was called with:', { event, data });\n throw new Error(TRACKING_UNSUPPORTED_ERROR);\n };\n\n return trackEvent;\n}","import { ref, computed } from 'vue';\nimport { useFingerprint } from './useFingerprint';\nimport { FraudResult, FraudDetectionComposable } from '../types';\n\nexport function useFraudDetection(): FraudDetectionComposable {\n const { signals, riskScore } = useFingerprint();\n const isChecking = ref(false);\n\n const fraudSignals = computed(() => {\n if (!signals.value) return {};\n \n return {\n vpn: signals.value.vpn || false,\n tor: signals.value.tor || false,\n proxy: signals.value.proxy || false\n };\n });\n\n const checkFraud = async (data: any = {}): Promise<FraudResult> => {\n isChecking.value = true;\n \n try {\n // Determine fraud based on risk score and signals\n const currentRiskScore = riskScore.value;\n const block = currentRiskScore > 0.8 || signals.value?.tor || false;\n const challenge = currentRiskScore > 0.5 && currentRiskScore <= 0.8;\n const allow = currentRiskScore <= 0.5;\n \n const reasons: string[] = [];\n \n if (signals.value?.vpn) reasons.push('VPN detected');\n if (signals.value?.tor) reasons.push('Tor browser detected');\n if (signals.value?.proxy) reasons.push('Proxy detected');\n if (currentRiskScore > 0.7) reasons.push('High risk score');\n \n // Check transaction-specific risks\n if (data.amount && data.amount > 1000) {\n if (currentRiskScore > 0.3) {\n reasons.push('High-value transaction with elevated risk');\n }\n }\n\n return {\n block,\n challenge,\n allow,\n riskScore: currentRiskScore,\n reasons\n };\n } finally {\n isChecking.value = false;\n }\n };\n\n return {\n checkFraud,\n fraudSignals,\n isChecking\n };\n}"],"names":["TRACKING_UNSUPPORTED_ERROR"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"tracetail-vue.esm.js","sources":["../src/injection-keys.ts","../src/plugin.ts","../node_modules/tslib/tslib.es6.js","../src/composables/useTraceTail.ts","../src/composables/useFingerprint.ts","../src/composables/useTrackEvent.ts","../src/composables/useFraudDetection.ts","../src/composables/useComplianceContext.ts"],"sourcesContent":["import { InjectionKey } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\n\nexport const TRACETAIL_KEY: InjectionKey<{\n client: TraceTail;\n options: TraceTailOptions;\n}> = Symbol('tracetail');","import { App, Plugin } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\nimport { TRACETAIL_KEY } from './injection-keys';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use the fingerprinting SDK to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport const TraceTailPlugin: Plugin = {\n install(app: App, options: TraceTailOptions) {\n if (!options.apiKey) {\n console.error('[TraceTail] API key is required');\n return;\n }\n\n // Create TraceTail client instance. Pass through endpoint so a custom config.endpoint\n // is honored (previously dropped, so it always defaulted to '/api').\n const client = new TraceTail({\n apiKey: options.apiKey,\n timeout: options.config?.timeout ?? 5000,\n ...(options.config?.endpoint ? { endpoint: options.config.endpoint } : {}),\n });\n\n // Provide the client and options to all components\n app.provide(TRACETAIL_KEY, {\n client,\n options\n });\n\n // Add global property for Options API compatibility\n app.config.globalProperties.$tracetail = {\n client,\n getFingerprint: () => client.generateFingerprint(),\n track: () => Promise.reject(new Error(TRACKING_UNSUPPORTED_ERROR))\n };\n }\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { inject } from 'vue';\nimport { TRACETAIL_KEY } from '../injection-keys';\n\nexport function useTraceTail() {\n const tracetail = inject(TRACETAIL_KEY);\n\n if (!tracetail) {\n throw new Error(\n '[TraceTail] No TraceTail instance found. ' +\n 'Make sure to install the TraceTail plugin at the app level.'\n );\n }\n\n return tracetail;\n}","import { ref, onMounted, computed } from 'vue';\nimport { useTraceTail } from './useTraceTail';\nimport { Fingerprint, FingerprintComposable } from '../types';\n\nexport function useFingerprint(): FingerprintComposable {\n const { client, options } = useTraceTail();\n \n const fingerprint = ref<Fingerprint | null>(null);\n const loading = ref(true);\n const error = ref<Error | null>(null);\n\n // Computed properties for easy access\n const visitorId = computed(() => fingerprint.value?.visitorId || null);\n const confidence = computed(() => fingerprint.value?.confidence || 0);\n const riskScore = computed(() => fingerprint.value?.riskScore || 0);\n const fraudulent = computed(() => fingerprint.value?.fraudulent || false);\n const signals = computed(() => fingerprint.value?.signals || null);\n const processingTime = computed(() => fingerprint.value?.processingTime || 0);\n\n const loadFingerprint = async () => {\n try {\n loading.value = true;\n error.value = null;\n\n // Handle test mode\n if (options.config?.testMode && options.config.mockData) {\n fingerprint.value = {\n visitorId: 'mock-visitor-123',\n confidence: 0.99,\n riskScore: 0.1,\n fraudulent: false,\n signals: {} as any,\n timestamp: new Date(),\n ...options.config.mockData\n } as Fingerprint;\n loading.value = false;\n return;\n }\n\n // Use verbose: true to get components in the response\n const result = await client.generateFingerprint({ verbose: true });\n\n fingerprint.value = {\n visitorId: result.visitorId,\n confidence: result.confidence,\n riskScore: 0, // Not in base SDK\n fraudulent: false, // Not in base SDK\n signals: result.components || {} as any,\n timestamp: new Date(),\n processingTime: result.processingTime\n };\n } catch (err) {\n error.value = err as Error;\n console.error('[TraceTail] Error getting fingerprint:', err);\n } finally {\n loading.value = false;\n }\n };\n\n const retry = async () => {\n await loadFingerprint();\n };\n\n const refresh = async () => {\n fingerprint.value = null;\n await loadFingerprint();\n };\n\n // Load fingerprint on mount\n onMounted(() => {\n loadFingerprint();\n });\n\n return {\n visitorId,\n confidence,\n riskScore,\n fraudulent,\n signals,\n processingTime,\n loading,\n error,\n retry,\n refresh\n };\n}","import { useTraceTail } from './useTraceTail';\nimport { TrackingResult } from '../types';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use useFingerprint() to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport function useTrackEvent() {\n useTraceTail();\n\n const trackEvent = async (\n event: string,\n data?: any\n ): Promise<TrackingResult> => {\n console.warn('[TraceTail] useTrackEvent() was called with:', { event, data });\n throw new Error(TRACKING_UNSUPPORTED_ERROR);\n };\n\n return trackEvent;\n}","import { ref, computed } from 'vue';\nimport { useFingerprint } from './useFingerprint';\nimport { FraudResult, FraudDetectionComposable } from '../types';\n\nexport function useFraudDetection(): FraudDetectionComposable {\n const { signals, riskScore } = useFingerprint();\n const isChecking = ref(false);\n\n const fraudSignals = computed(() => {\n if (!signals.value) return {};\n \n return {\n vpn: signals.value.vpn || false,\n tor: signals.value.tor || false,\n proxy: signals.value.proxy || false\n };\n });\n\n const checkFraud = async (data: any = {}): Promise<FraudResult> => {\n isChecking.value = true;\n \n try {\n // Determine fraud based on risk score and signals\n const currentRiskScore = riskScore.value;\n const block = currentRiskScore > 0.8 || signals.value?.tor || false;\n const challenge = currentRiskScore > 0.5 && currentRiskScore <= 0.8;\n const allow = currentRiskScore <= 0.5;\n \n const reasons: string[] = [];\n \n if (signals.value?.vpn) reasons.push('VPN detected');\n if (signals.value?.tor) reasons.push('Tor browser detected');\n if (signals.value?.proxy) reasons.push('Proxy detected');\n if (currentRiskScore > 0.7) reasons.push('High risk score');\n \n // Check transaction-specific risks\n if (data.amount && data.amount > 1000) {\n if (currentRiskScore > 0.3) {\n reasons.push('High-value transaction with elevated risk');\n }\n }\n\n return {\n block,\n challenge,\n allow,\n riskScore: currentRiskScore,\n reasons\n };\n } finally {\n isChecking.value = false;\n }\n };\n\n return {\n checkFraud,\n fraudSignals,\n isChecking\n };\n}","import { readonly, ref, type DeepReadonly, type Ref } from 'vue';\nimport {\n getComplianceContext,\n type ComplianceContext,\n} from '@tracetail/js';\n\n/**\n * Vue composable returning client-side privacy / region compliance signals\n * (GPC, DNT, timezone, locale, inferred region, and a conservative\n * `likelyRequiresConsent` hint).\n *\n * The context is computed ONCE when the composable is first invoked (the\n * underlying signals do not change during a session) and returned as a readonly\n * ref. SSR-safe: returns the same safe defaults as `getComplianceContext()`\n * when browser globals are unavailable.\n *\n * These are CLIENT-SIDE HEURISTICS, not authoritative geolocation, and do NOT\n * gate or alter fingerprint collection. Use `likelyRequiresConsent` together\n * with your own consent state to decide whether to collect a fingerprint —\n * obtaining consent where required (EU ePrivacy/GDPR, UK PECR, etc.) is the\n * merchant's responsibility.\n *\n * @example\n * ```ts\n * const compliance = useComplianceContext();\n * const shouldCollect = computed(\n * () => !compliance.value.likelyRequiresConsent || hasConsent.value\n * );\n * ```\n */\nexport function useComplianceContext(): Readonly<Ref<DeepReadonly<ComplianceContext>>> {\n const context = ref<ComplianceContext>(getComplianceContext());\n return readonly(context);\n}\n"],"names":["TRACKING_UNSUPPORTED_ERROR"],"mappings":"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","x_google_ignoreList":[2]}
@@ -205,8 +205,42 @@
205
205
  };
206
206
  }
207
207
 
208
+ /**
209
+ * Vue composable returning client-side privacy / region compliance signals
210
+ * (GPC, DNT, timezone, locale, inferred region, and a conservative
211
+ * `likelyRequiresConsent` hint).
212
+ *
213
+ * The context is computed ONCE when the composable is first invoked (the
214
+ * underlying signals do not change during a session) and returned as a readonly
215
+ * ref. SSR-safe: returns the same safe defaults as `getComplianceContext()`
216
+ * when browser globals are unavailable.
217
+ *
218
+ * These are CLIENT-SIDE HEURISTICS, not authoritative geolocation, and do NOT
219
+ * gate or alter fingerprint collection. Use `likelyRequiresConsent` together
220
+ * with your own consent state to decide whether to collect a fingerprint —
221
+ * obtaining consent where required (EU ePrivacy/GDPR, UK PECR, etc.) is the
222
+ * merchant's responsibility.
223
+ *
224
+ * @example
225
+ * ```ts
226
+ * const compliance = useComplianceContext();
227
+ * const shouldCollect = computed(
228
+ * () => !compliance.value.likelyRequiresConsent || hasConsent.value
229
+ * );
230
+ * ```
231
+ */
232
+ function useComplianceContext() {
233
+ const context = vue.ref(TraceTail.getComplianceContext());
234
+ return vue.readonly(context);
235
+ }
236
+
237
+ Object.defineProperty(exports, "getComplianceContext", {
238
+ enumerable: true,
239
+ get: function () { return TraceTail.getComplianceContext; }
240
+ });
208
241
  exports.TRACETAIL_KEY = TRACETAIL_KEY;
209
242
  exports.TraceTailPlugin = TraceTailPlugin;
243
+ exports.useComplianceContext = useComplianceContext;
210
244
  exports.useFingerprint = useFingerprint;
211
245
  exports.useFraudDetection = useFraudDetection;
212
246
  exports.useTraceTail = useTraceTail;
@@ -1 +1 @@
1
- {"version":3,"file":"tracetail-vue.umd.js","sources":["../src/injection-keys.ts","../src/plugin.ts","../node_modules/tslib/tslib.es6.js","../src/composables/useTraceTail.ts","../src/composables/useFingerprint.ts","../src/composables/useTrackEvent.ts","../src/composables/useFraudDetection.ts"],"sourcesContent":["import { InjectionKey } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\n\nexport const TRACETAIL_KEY: InjectionKey<{\n client: TraceTail;\n options: TraceTailOptions;\n}> = Symbol('tracetail');","import { App, Plugin } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\nimport { TRACETAIL_KEY } from './injection-keys';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use the fingerprinting SDK to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport const TraceTailPlugin: Plugin = {\n install(app: App, options: TraceTailOptions) {\n if (!options.apiKey) {\n console.error('[TraceTail] API key is required');\n return;\n }\n\n // Create TraceTail client instance. Pass through endpoint so a custom config.endpoint\n // is honored (previously dropped, so it always defaulted to '/api').\n const client = new TraceTail({\n apiKey: options.apiKey,\n timeout: options.config?.timeout ?? 5000,\n ...(options.config?.endpoint ? { endpoint: options.config.endpoint } : {}),\n });\n\n // Provide the client and options to all components\n app.provide(TRACETAIL_KEY, {\n client,\n options\n });\n\n // Add global property for Options API compatibility\n app.config.globalProperties.$tracetail = {\n client,\n getFingerprint: () => client.generateFingerprint(),\n track: () => Promise.reject(new Error(TRACKING_UNSUPPORTED_ERROR))\n };\n }\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { inject } from 'vue';\nimport { TRACETAIL_KEY } from '../injection-keys';\n\nexport function useTraceTail() {\n const tracetail = inject(TRACETAIL_KEY);\n\n if (!tracetail) {\n throw new Error(\n '[TraceTail] No TraceTail instance found. ' +\n 'Make sure to install the TraceTail plugin at the app level.'\n );\n }\n\n return tracetail;\n}","import { ref, onMounted, computed } from 'vue';\nimport { useTraceTail } from './useTraceTail';\nimport { Fingerprint, FingerprintComposable } from '../types';\n\nexport function useFingerprint(): FingerprintComposable {\n const { client, options } = useTraceTail();\n \n const fingerprint = ref<Fingerprint | null>(null);\n const loading = ref(true);\n const error = ref<Error | null>(null);\n\n // Computed properties for easy access\n const visitorId = computed(() => fingerprint.value?.visitorId || null);\n const confidence = computed(() => fingerprint.value?.confidence || 0);\n const riskScore = computed(() => fingerprint.value?.riskScore || 0);\n const fraudulent = computed(() => fingerprint.value?.fraudulent || false);\n const signals = computed(() => fingerprint.value?.signals || null);\n const processingTime = computed(() => fingerprint.value?.processingTime || 0);\n\n const loadFingerprint = async () => {\n try {\n loading.value = true;\n error.value = null;\n\n // Handle test mode\n if (options.config?.testMode && options.config.mockData) {\n fingerprint.value = {\n visitorId: 'mock-visitor-123',\n confidence: 0.99,\n riskScore: 0.1,\n fraudulent: false,\n signals: {} as any,\n timestamp: new Date(),\n ...options.config.mockData\n } as Fingerprint;\n loading.value = false;\n return;\n }\n\n // Use verbose: true to get components in the response\n const result = await client.generateFingerprint({ verbose: true });\n\n fingerprint.value = {\n visitorId: result.visitorId,\n confidence: result.confidence,\n riskScore: 0, // Not in base SDK\n fraudulent: false, // Not in base SDK\n signals: result.components || {} as any,\n timestamp: new Date(),\n processingTime: result.processingTime\n };\n } catch (err) {\n error.value = err as Error;\n console.error('[TraceTail] Error getting fingerprint:', err);\n } finally {\n loading.value = false;\n }\n };\n\n const retry = async () => {\n await loadFingerprint();\n };\n\n const refresh = async () => {\n fingerprint.value = null;\n await loadFingerprint();\n };\n\n // Load fingerprint on mount\n onMounted(() => {\n loadFingerprint();\n });\n\n return {\n visitorId,\n confidence,\n riskScore,\n fraudulent,\n signals,\n processingTime,\n loading,\n error,\n retry,\n refresh\n };\n}","import { useTraceTail } from './useTraceTail';\nimport { TrackingResult } from '../types';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use useFingerprint() to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport function useTrackEvent() {\n useTraceTail();\n\n const trackEvent = async (\n event: string,\n data?: any\n ): Promise<TrackingResult> => {\n console.warn('[TraceTail] useTrackEvent() was called with:', { event, data });\n throw new Error(TRACKING_UNSUPPORTED_ERROR);\n };\n\n return trackEvent;\n}","import { ref, computed } from 'vue';\nimport { useFingerprint } from './useFingerprint';\nimport { FraudResult, FraudDetectionComposable } from '../types';\n\nexport function useFraudDetection(): FraudDetectionComposable {\n const { signals, riskScore } = useFingerprint();\n const isChecking = ref(false);\n\n const fraudSignals = computed(() => {\n if (!signals.value) return {};\n \n return {\n vpn: signals.value.vpn || false,\n tor: signals.value.tor || false,\n proxy: signals.value.proxy || false\n };\n });\n\n const checkFraud = async (data: any = {}): Promise<FraudResult> => {\n isChecking.value = true;\n \n try {\n // Determine fraud based on risk score and signals\n const currentRiskScore = riskScore.value;\n const block = currentRiskScore > 0.8 || signals.value?.tor || false;\n const challenge = currentRiskScore > 0.5 && currentRiskScore <= 0.8;\n const allow = currentRiskScore <= 0.5;\n \n const reasons: string[] = [];\n \n if (signals.value?.vpn) reasons.push('VPN detected');\n if (signals.value?.tor) reasons.push('Tor browser detected');\n if (signals.value?.proxy) reasons.push('Proxy detected');\n if (currentRiskScore > 0.7) reasons.push('High risk score');\n \n // Check transaction-specific risks\n if (data.amount && data.amount > 1000) {\n if (currentRiskScore > 0.3) {\n reasons.push('High-value transaction with elevated risk');\n }\n }\n\n return {\n block,\n challenge,\n allow,\n riskScore: currentRiskScore,\n reasons\n };\n } finally {\n isChecking.value = false;\n }\n };\n\n return {\n checkFraud,\n fraudSignals,\n isChecking\n };\n}"],"names":["TRACKING_UNSUPPORTED_ERROR","inject","ref","computed","onMounted"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"tracetail-vue.umd.js","sources":["../src/injection-keys.ts","../src/plugin.ts","../node_modules/tslib/tslib.es6.js","../src/composables/useTraceTail.ts","../src/composables/useFingerprint.ts","../src/composables/useTrackEvent.ts","../src/composables/useFraudDetection.ts","../src/composables/useComplianceContext.ts"],"sourcesContent":["import { InjectionKey } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\n\nexport const TRACETAIL_KEY: InjectionKey<{\n client: TraceTail;\n options: TraceTailOptions;\n}> = Symbol('tracetail');","import { App, Plugin } from 'vue';\nimport TraceTail from '@tracetail/js';\nimport { TraceTailOptions } from './types';\nimport { TRACETAIL_KEY } from './injection-keys';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use the fingerprinting SDK to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport const TraceTailPlugin: Plugin = {\n install(app: App, options: TraceTailOptions) {\n if (!options.apiKey) {\n console.error('[TraceTail] API key is required');\n return;\n }\n\n // Create TraceTail client instance. Pass through endpoint so a custom config.endpoint\n // is honored (previously dropped, so it always defaulted to '/api').\n const client = new TraceTail({\n apiKey: options.apiKey,\n timeout: options.config?.timeout ?? 5000,\n ...(options.config?.endpoint ? { endpoint: options.config.endpoint } : {}),\n });\n\n // Provide the client and options to all components\n app.provide(TRACETAIL_KEY, {\n client,\n options\n });\n\n // Add global property for Options API compatibility\n app.config.globalProperties.$tracetail = {\n client,\n getFingerprint: () => client.generateFingerprint(),\n track: () => Promise.reject(new Error(TRACKING_UNSUPPORTED_ERROR))\n };\n }\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { inject } from 'vue';\nimport { TRACETAIL_KEY } from '../injection-keys';\n\nexport function useTraceTail() {\n const tracetail = inject(TRACETAIL_KEY);\n\n if (!tracetail) {\n throw new Error(\n '[TraceTail] No TraceTail instance found. ' +\n 'Make sure to install the TraceTail plugin at the app level.'\n );\n }\n\n return tracetail;\n}","import { ref, onMounted, computed } from 'vue';\nimport { useTraceTail } from './useTraceTail';\nimport { Fingerprint, FingerprintComposable } from '../types';\n\nexport function useFingerprint(): FingerprintComposable {\n const { client, options } = useTraceTail();\n \n const fingerprint = ref<Fingerprint | null>(null);\n const loading = ref(true);\n const error = ref<Error | null>(null);\n\n // Computed properties for easy access\n const visitorId = computed(() => fingerprint.value?.visitorId || null);\n const confidence = computed(() => fingerprint.value?.confidence || 0);\n const riskScore = computed(() => fingerprint.value?.riskScore || 0);\n const fraudulent = computed(() => fingerprint.value?.fraudulent || false);\n const signals = computed(() => fingerprint.value?.signals || null);\n const processingTime = computed(() => fingerprint.value?.processingTime || 0);\n\n const loadFingerprint = async () => {\n try {\n loading.value = true;\n error.value = null;\n\n // Handle test mode\n if (options.config?.testMode && options.config.mockData) {\n fingerprint.value = {\n visitorId: 'mock-visitor-123',\n confidence: 0.99,\n riskScore: 0.1,\n fraudulent: false,\n signals: {} as any,\n timestamp: new Date(),\n ...options.config.mockData\n } as Fingerprint;\n loading.value = false;\n return;\n }\n\n // Use verbose: true to get components in the response\n const result = await client.generateFingerprint({ verbose: true });\n\n fingerprint.value = {\n visitorId: result.visitorId,\n confidence: result.confidence,\n riskScore: 0, // Not in base SDK\n fraudulent: false, // Not in base SDK\n signals: result.components || {} as any,\n timestamp: new Date(),\n processingTime: result.processingTime\n };\n } catch (err) {\n error.value = err as Error;\n console.error('[TraceTail] Error getting fingerprint:', err);\n } finally {\n loading.value = false;\n }\n };\n\n const retry = async () => {\n await loadFingerprint();\n };\n\n const refresh = async () => {\n fingerprint.value = null;\n await loadFingerprint();\n };\n\n // Load fingerprint on mount\n onMounted(() => {\n loadFingerprint();\n });\n\n return {\n visitorId,\n confidence,\n riskScore,\n fraudulent,\n signals,\n processingTime,\n loading,\n error,\n retry,\n refresh\n };\n}","import { useTraceTail } from './useTraceTail';\nimport { TrackingResult } from '../types';\n\nconst TRACKING_UNSUPPORTED_ERROR =\n '[TraceTail] Event tracking is not implemented in @tracetail/vue. Use useFingerprint() to collect visitorId/requestId, then send your event to your own backend or analytics pipeline.';\n\nexport function useTrackEvent() {\n useTraceTail();\n\n const trackEvent = async (\n event: string,\n data?: any\n ): Promise<TrackingResult> => {\n console.warn('[TraceTail] useTrackEvent() was called with:', { event, data });\n throw new Error(TRACKING_UNSUPPORTED_ERROR);\n };\n\n return trackEvent;\n}","import { ref, computed } from 'vue';\nimport { useFingerprint } from './useFingerprint';\nimport { FraudResult, FraudDetectionComposable } from '../types';\n\nexport function useFraudDetection(): FraudDetectionComposable {\n const { signals, riskScore } = useFingerprint();\n const isChecking = ref(false);\n\n const fraudSignals = computed(() => {\n if (!signals.value) return {};\n \n return {\n vpn: signals.value.vpn || false,\n tor: signals.value.tor || false,\n proxy: signals.value.proxy || false\n };\n });\n\n const checkFraud = async (data: any = {}): Promise<FraudResult> => {\n isChecking.value = true;\n \n try {\n // Determine fraud based on risk score and signals\n const currentRiskScore = riskScore.value;\n const block = currentRiskScore > 0.8 || signals.value?.tor || false;\n const challenge = currentRiskScore > 0.5 && currentRiskScore <= 0.8;\n const allow = currentRiskScore <= 0.5;\n \n const reasons: string[] = [];\n \n if (signals.value?.vpn) reasons.push('VPN detected');\n if (signals.value?.tor) reasons.push('Tor browser detected');\n if (signals.value?.proxy) reasons.push('Proxy detected');\n if (currentRiskScore > 0.7) reasons.push('High risk score');\n \n // Check transaction-specific risks\n if (data.amount && data.amount > 1000) {\n if (currentRiskScore > 0.3) {\n reasons.push('High-value transaction with elevated risk');\n }\n }\n\n return {\n block,\n challenge,\n allow,\n riskScore: currentRiskScore,\n reasons\n };\n } finally {\n isChecking.value = false;\n }\n };\n\n return {\n checkFraud,\n fraudSignals,\n isChecking\n };\n}","import { readonly, ref, type DeepReadonly, type Ref } from 'vue';\nimport {\n getComplianceContext,\n type ComplianceContext,\n} from '@tracetail/js';\n\n/**\n * Vue composable returning client-side privacy / region compliance signals\n * (GPC, DNT, timezone, locale, inferred region, and a conservative\n * `likelyRequiresConsent` hint).\n *\n * The context is computed ONCE when the composable is first invoked (the\n * underlying signals do not change during a session) and returned as a readonly\n * ref. SSR-safe: returns the same safe defaults as `getComplianceContext()`\n * when browser globals are unavailable.\n *\n * These are CLIENT-SIDE HEURISTICS, not authoritative geolocation, and do NOT\n * gate or alter fingerprint collection. Use `likelyRequiresConsent` together\n * with your own consent state to decide whether to collect a fingerprint —\n * obtaining consent where required (EU ePrivacy/GDPR, UK PECR, etc.) is the\n * merchant's responsibility.\n *\n * @example\n * ```ts\n * const compliance = useComplianceContext();\n * const shouldCollect = computed(\n * () => !compliance.value.likelyRequiresConsent || hasConsent.value\n * );\n * ```\n */\nexport function useComplianceContext(): Readonly<Ref<DeepReadonly<ComplianceContext>>> {\n const context = ref<ComplianceContext>(getComplianceContext());\n return readonly(context);\n}\n"],"names":["TRACKING_UNSUPPORTED_ERROR","inject","ref","computed","onMounted","getComplianceContext","readonly"],"mappings":"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","x_google_ignoreList":[2]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracetail/vue",
3
- "version": "2.3.13",
3
+ "version": "2.3.15",
4
4
  "description": "Vue SDK for TraceTail browser fingerprinting - over 99.5% accuracy",
5
5
  "type": "module",
6
6
  "main": "dist/tracetail-vue.cjs.js",
@@ -50,7 +50,7 @@
50
50
  "vue": "^3.0.0"
51
51
  },
52
52
  "dependencies": {
53
- "@tracetail/js": "^2.3.13"
53
+ "@tracetail/js": "^2.3.15"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@rollup/plugin-commonjs": "^25.0.0",