@bagelink/blox 1.19.1 → 1.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics/attribution.d.ts +54 -0
- package/dist/analytics/attribution.d.ts.map +1 -0
- package/dist/index.cjs +175 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +175 -0
- package/dist/ssg/cli.mjs +0 -0
- package/package.json +125 -124
- package/LICENSE +0 -21
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-neutral browser attribution capture for Blox marketing sites.
|
|
3
|
+
*
|
|
4
|
+
* Campaign context is stored in one first-party cookie for 90 days. A visit
|
|
5
|
+
* carrying any campaign parameter replaces the previous snapshot; ordinary
|
|
6
|
+
* navigation retains it. Runtime fields (form page, device, browser, consent)
|
|
7
|
+
* are derived again whenever a form request is sent.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ATTRIBUTION_CAMPAIGN_KEYS: readonly ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content", "gclid", "gbraid", "wbraid", "fbclid", "msclkid", "ttclid", "li_fat_id"];
|
|
10
|
+
export interface AttributionSnapshot {
|
|
11
|
+
utm_source: string;
|
|
12
|
+
utm_medium: string;
|
|
13
|
+
utm_campaign: string;
|
|
14
|
+
utm_term: string;
|
|
15
|
+
utm_content: string;
|
|
16
|
+
gclid: string;
|
|
17
|
+
gbraid: string;
|
|
18
|
+
wbraid: string;
|
|
19
|
+
fbclid: string;
|
|
20
|
+
msclkid: string;
|
|
21
|
+
ttclid: string;
|
|
22
|
+
li_fat_id: string;
|
|
23
|
+
fbp: string;
|
|
24
|
+
fbc: string;
|
|
25
|
+
ga_client_id: string;
|
|
26
|
+
ga_session_id: string;
|
|
27
|
+
landing_page: string;
|
|
28
|
+
referrer: string;
|
|
29
|
+
form_page: string;
|
|
30
|
+
device_type: string;
|
|
31
|
+
device_os: string;
|
|
32
|
+
browser: string;
|
|
33
|
+
user_agent_raw: string;
|
|
34
|
+
in_app_source: string;
|
|
35
|
+
ad_consent: string;
|
|
36
|
+
}
|
|
37
|
+
export interface AttributionBrowser {
|
|
38
|
+
href: string;
|
|
39
|
+
search: string;
|
|
40
|
+
referrer: string;
|
|
41
|
+
userAgent: string;
|
|
42
|
+
cookie: string;
|
|
43
|
+
now: () => number;
|
|
44
|
+
writeCookie: (value: string) => void;
|
|
45
|
+
adConsent?: () => string;
|
|
46
|
+
}
|
|
47
|
+
export interface AttributionOptions {
|
|
48
|
+
cookieName?: string;
|
|
49
|
+
maxAgeSeconds?: number;
|
|
50
|
+
browser?: AttributionBrowser;
|
|
51
|
+
}
|
|
52
|
+
/** Capture or read attribution and return a complete, empty-string-safe wire object. */
|
|
53
|
+
export declare function captureAttribution(options?: AttributionOptions): AttributionSnapshot;
|
|
54
|
+
//# sourceMappingURL=attribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../src/analytics/attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,yBAAyB,2JAG5B,CAAA;AAEV,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CAClB;AASD,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,MAAM,CAAA;IACjB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAC5B;AAsGD,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,mBAAmB,CAqDxF"}
|
package/dist/index.cjs
CHANGED
|
@@ -431,6 +431,179 @@ function createBloxApp(options) {
|
|
|
431
431
|
});
|
|
432
432
|
return { app, router, blox };
|
|
433
433
|
}
|
|
434
|
+
const ATTRIBUTION_CAMPAIGN_KEYS = [
|
|
435
|
+
"utm_source",
|
|
436
|
+
"utm_medium",
|
|
437
|
+
"utm_campaign",
|
|
438
|
+
"utm_term",
|
|
439
|
+
"utm_content",
|
|
440
|
+
"gclid",
|
|
441
|
+
"gbraid",
|
|
442
|
+
"wbraid",
|
|
443
|
+
"fbclid",
|
|
444
|
+
"msclkid",
|
|
445
|
+
"ttclid",
|
|
446
|
+
"li_fat_id"
|
|
447
|
+
];
|
|
448
|
+
const DEFAULT_COOKIE = "blox_attribution";
|
|
449
|
+
const DEFAULT_MAX_AGE = 60 * 60 * 24 * 90;
|
|
450
|
+
const empty = () => ({
|
|
451
|
+
utm_source: "",
|
|
452
|
+
utm_medium: "",
|
|
453
|
+
utm_campaign: "",
|
|
454
|
+
utm_term: "",
|
|
455
|
+
utm_content: "",
|
|
456
|
+
gclid: "",
|
|
457
|
+
gbraid: "",
|
|
458
|
+
wbraid: "",
|
|
459
|
+
fbclid: "",
|
|
460
|
+
msclkid: "",
|
|
461
|
+
ttclid: "",
|
|
462
|
+
li_fat_id: "",
|
|
463
|
+
fbp: "",
|
|
464
|
+
fbc: "",
|
|
465
|
+
ga_client_id: "",
|
|
466
|
+
ga_session_id: "",
|
|
467
|
+
landing_page: "",
|
|
468
|
+
referrer: "",
|
|
469
|
+
form_page: "",
|
|
470
|
+
device_type: "",
|
|
471
|
+
device_os: "",
|
|
472
|
+
browser: "",
|
|
473
|
+
user_agent_raw: "",
|
|
474
|
+
in_app_source: "",
|
|
475
|
+
ad_consent: ""
|
|
476
|
+
});
|
|
477
|
+
function cookieMap(raw) {
|
|
478
|
+
return new Map(raw.split(";").flatMap((item) => {
|
|
479
|
+
const [name, ...parts] = item.trim().split("=");
|
|
480
|
+
return name ? [[name, decodeURIComponent(parts.join("="))]] : [];
|
|
481
|
+
}));
|
|
482
|
+
}
|
|
483
|
+
function defaultAdConsent() {
|
|
484
|
+
var _a, _b;
|
|
485
|
+
const target = globalThis;
|
|
486
|
+
const marketing = (_b = (_a = target.Cookiebot) == null ? void 0 : _a.consent) == null ? void 0 : _b.marketing;
|
|
487
|
+
return marketing === true ? "granted" : marketing === false ? "denied" : "";
|
|
488
|
+
}
|
|
489
|
+
function browser() {
|
|
490
|
+
if (typeof window === "undefined" || typeof document === "undefined") return void 0;
|
|
491
|
+
return {
|
|
492
|
+
href: window.location.href,
|
|
493
|
+
search: window.location.search,
|
|
494
|
+
referrer: document.referrer,
|
|
495
|
+
userAgent: navigator.userAgent,
|
|
496
|
+
cookie: document.cookie,
|
|
497
|
+
now: () => Date.now(),
|
|
498
|
+
writeCookie: (value) => {
|
|
499
|
+
document.cookie = value;
|
|
500
|
+
},
|
|
501
|
+
adConsent: defaultAdConsent
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
function readStored(cookies, name) {
|
|
505
|
+
try {
|
|
506
|
+
const parsed = JSON.parse(cookies.get(name) ?? "");
|
|
507
|
+
return parsed && typeof parsed === "object" && typeof parsed.captured_at === "number" ? parsed : void 0;
|
|
508
|
+
} catch {
|
|
509
|
+
return void 0;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
function googleClickId(value) {
|
|
513
|
+
const parts = value.split(".");
|
|
514
|
+
return parts[0] === "GCL" && parts.length >= 3 ? parts.slice(2).join(".") : "";
|
|
515
|
+
}
|
|
516
|
+
function gaClientId(value) {
|
|
517
|
+
var _a;
|
|
518
|
+
const parts = value.split(".");
|
|
519
|
+
return parts.length >= 4 && ((_a = parts[0]) == null ? void 0 : _a.startsWith("GA")) ? parts.slice(-2).join(".") : "";
|
|
520
|
+
}
|
|
521
|
+
function gaSessionId(value) {
|
|
522
|
+
var _a;
|
|
523
|
+
if (value.startsWith("GS1")) return value.split(".")[2] ?? "";
|
|
524
|
+
if (value.startsWith("GS2")) return ((_a = value.match(/(?:^|\.)s(\d+)(?:\$|$)/)) == null ? void 0 : _a[1]) ?? "";
|
|
525
|
+
return "";
|
|
526
|
+
}
|
|
527
|
+
function deviceType(ua) {
|
|
528
|
+
if (/iPad|Tablet|Android(?!.*Mobile)/i.test(ua)) return "tablet";
|
|
529
|
+
if (/Mobi|Android|iPhone|iPod/i.test(ua)) return "mobile";
|
|
530
|
+
return "desktop";
|
|
531
|
+
}
|
|
532
|
+
function operatingSystem(ua) {
|
|
533
|
+
if (/iPhone|iPad|iPod/i.test(ua)) return "iOS";
|
|
534
|
+
if (/Android/i.test(ua)) return "Android";
|
|
535
|
+
if (/Windows/i.test(ua)) return "Windows";
|
|
536
|
+
if (/Macintosh|Mac OS X/i.test(ua)) return "macOS";
|
|
537
|
+
if (/Linux/i.test(ua)) return "Linux";
|
|
538
|
+
return "";
|
|
539
|
+
}
|
|
540
|
+
function browserName(ua) {
|
|
541
|
+
if (/SamsungBrowser/i.test(ua)) return "Samsung Internet";
|
|
542
|
+
if (/Edg\//i.test(ua)) return "Edge";
|
|
543
|
+
if (/CriOS|Chrome\//i.test(ua)) return "Chrome";
|
|
544
|
+
if (/FxiOS|Firefox\//i.test(ua)) return "Firefox";
|
|
545
|
+
if (/Safari\//i.test(ua)) return "Safari";
|
|
546
|
+
return "";
|
|
547
|
+
}
|
|
548
|
+
function inAppSource(ua) {
|
|
549
|
+
if (/Instagram/i.test(ua)) return "instagram";
|
|
550
|
+
if (/FBAN|FBAV/i.test(ua)) return "facebook";
|
|
551
|
+
if (/TikTok|BytedanceWebview|musical_ly/i.test(ua)) return "tiktok";
|
|
552
|
+
return "";
|
|
553
|
+
}
|
|
554
|
+
function captureAttribution(options = {}) {
|
|
555
|
+
var _a, _b;
|
|
556
|
+
const env = options.browser ?? browser();
|
|
557
|
+
if (!env) return empty();
|
|
558
|
+
const cookieName = options.cookieName ?? DEFAULT_COOKIE;
|
|
559
|
+
const maxAge = options.maxAgeSeconds ?? DEFAULT_MAX_AGE;
|
|
560
|
+
const cookies = cookieMap(env.cookie);
|
|
561
|
+
const params = new URLSearchParams(env.search);
|
|
562
|
+
const incoming = Object.fromEntries(ATTRIBUTION_CAMPAIGN_KEYS.flatMap((key) => {
|
|
563
|
+
var _a2;
|
|
564
|
+
const value = (_a2 = params.get(key)) == null ? void 0 : _a2.trim();
|
|
565
|
+
return value ? [[key, value]] : [];
|
|
566
|
+
}));
|
|
567
|
+
const startsCampaign = Object.keys(incoming).length > 0;
|
|
568
|
+
let stored = readStored(cookies, cookieName);
|
|
569
|
+
if (!stored || startsCampaign) {
|
|
570
|
+
stored = {
|
|
571
|
+
captured_at: env.now(),
|
|
572
|
+
landing_page: env.href,
|
|
573
|
+
referrer: env.referrer,
|
|
574
|
+
campaign: incoming
|
|
575
|
+
};
|
|
576
|
+
const secure = env.href.startsWith("https:") ? "; Secure" : "";
|
|
577
|
+
env.writeCookie(
|
|
578
|
+
`${cookieName}=${encodeURIComponent(JSON.stringify(stored))}; Path=/; Max-Age=${maxAge}; SameSite=Lax${secure}`
|
|
579
|
+
);
|
|
580
|
+
}
|
|
581
|
+
const campaign = stored.campaign;
|
|
582
|
+
const gclid = campaign.gclid || googleClickId(cookies.get("_gcl_aw") ?? "");
|
|
583
|
+
const fbclid = campaign.fbclid ?? "";
|
|
584
|
+
const fbp = cookies.get("_fbp") ?? "";
|
|
585
|
+
const fbc = cookies.get("_fbc") || (fbclid ? `fb.1.${env.now()}.${fbclid}` : "");
|
|
586
|
+
const gaCookie = ((_a = [...cookies.entries()].find(([key]) => /^_ga_[A-Z0-9]+$/.test(key))) == null ? void 0 : _a[1]) ?? "";
|
|
587
|
+
return {
|
|
588
|
+
...empty(),
|
|
589
|
+
...campaign,
|
|
590
|
+
gclid,
|
|
591
|
+
fbclid,
|
|
592
|
+
fbp,
|
|
593
|
+
fbc,
|
|
594
|
+
ga_client_id: gaClientId(cookies.get("_ga") ?? ""),
|
|
595
|
+
ga_session_id: gaSessionId(gaCookie),
|
|
596
|
+
landing_page: stored.landing_page,
|
|
597
|
+
referrer: stored.referrer,
|
|
598
|
+
form_page: env.href,
|
|
599
|
+
device_type: deviceType(env.userAgent),
|
|
600
|
+
device_os: operatingSystem(env.userAgent),
|
|
601
|
+
browser: browserName(env.userAgent),
|
|
602
|
+
user_agent_raw: env.userAgent,
|
|
603
|
+
in_app_source: inAppSource(env.userAgent),
|
|
604
|
+
ad_consent: ((_b = env.adConsent) == null ? void 0 : _b.call(env)) ?? ""
|
|
605
|
+
};
|
|
606
|
+
}
|
|
434
607
|
function defineBloxSite(config) {
|
|
435
608
|
return config;
|
|
436
609
|
}
|
|
@@ -559,8 +732,10 @@ exports.readBloxHydration = ssg_client.readBloxHydration;
|
|
|
559
732
|
exports.getPageSlugMap = localeStrategy.getPageSlugMap;
|
|
560
733
|
exports.localizePageSlug = localeStrategy.localizePageSlug;
|
|
561
734
|
exports.setPageSlugMap = localeStrategy.setPageSlugMap;
|
|
735
|
+
exports.ATTRIBUTION_CAMPAIGN_KEYS = ATTRIBUTION_CAMPAIGN_KEYS;
|
|
562
736
|
exports.BloxRouterView = _sfc_main;
|
|
563
737
|
exports.buildBloxManifest = buildBloxManifest;
|
|
738
|
+
exports.captureAttribution = captureAttribution;
|
|
564
739
|
exports.createBloxApp = createBloxApp;
|
|
565
740
|
exports.defineBlock = defineBlock;
|
|
566
741
|
exports.defineBloxSite = defineBloxSite;
|
package/dist/index.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export { createBloxApp, injectPlausible } from './createBloxApp';
|
|
|
27
27
|
export type { BloxAppResult, CreateBloxAppOptions, PlausibleOptions } from './createBloxApp';
|
|
28
28
|
export { injectGtm, installGtm, isGtmInstalled } from './analytics/gtm';
|
|
29
29
|
export type { GtmOptions, GtmStrategy } from './analytics/gtm';
|
|
30
|
+
export { ATTRIBUTION_CAMPAIGN_KEYS, captureAttribution } from './analytics/attribution';
|
|
31
|
+
export type { AttributionBrowser, AttributionOptions, AttributionSnapshot, } from './analytics/attribution';
|
|
30
32
|
export { defineBloxSite } from './siteConfig';
|
|
31
33
|
export type { BloxSiteConfig } from './siteConfig';
|
|
32
34
|
export { defineBlock } from './defineBlock';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -432,6 +432,179 @@ function createBloxApp(options) {
|
|
|
432
432
|
});
|
|
433
433
|
return { app, router, blox };
|
|
434
434
|
}
|
|
435
|
+
const ATTRIBUTION_CAMPAIGN_KEYS = [
|
|
436
|
+
"utm_source",
|
|
437
|
+
"utm_medium",
|
|
438
|
+
"utm_campaign",
|
|
439
|
+
"utm_term",
|
|
440
|
+
"utm_content",
|
|
441
|
+
"gclid",
|
|
442
|
+
"gbraid",
|
|
443
|
+
"wbraid",
|
|
444
|
+
"fbclid",
|
|
445
|
+
"msclkid",
|
|
446
|
+
"ttclid",
|
|
447
|
+
"li_fat_id"
|
|
448
|
+
];
|
|
449
|
+
const DEFAULT_COOKIE = "blox_attribution";
|
|
450
|
+
const DEFAULT_MAX_AGE = 60 * 60 * 24 * 90;
|
|
451
|
+
const empty = () => ({
|
|
452
|
+
utm_source: "",
|
|
453
|
+
utm_medium: "",
|
|
454
|
+
utm_campaign: "",
|
|
455
|
+
utm_term: "",
|
|
456
|
+
utm_content: "",
|
|
457
|
+
gclid: "",
|
|
458
|
+
gbraid: "",
|
|
459
|
+
wbraid: "",
|
|
460
|
+
fbclid: "",
|
|
461
|
+
msclkid: "",
|
|
462
|
+
ttclid: "",
|
|
463
|
+
li_fat_id: "",
|
|
464
|
+
fbp: "",
|
|
465
|
+
fbc: "",
|
|
466
|
+
ga_client_id: "",
|
|
467
|
+
ga_session_id: "",
|
|
468
|
+
landing_page: "",
|
|
469
|
+
referrer: "",
|
|
470
|
+
form_page: "",
|
|
471
|
+
device_type: "",
|
|
472
|
+
device_os: "",
|
|
473
|
+
browser: "",
|
|
474
|
+
user_agent_raw: "",
|
|
475
|
+
in_app_source: "",
|
|
476
|
+
ad_consent: ""
|
|
477
|
+
});
|
|
478
|
+
function cookieMap(raw) {
|
|
479
|
+
return new Map(raw.split(";").flatMap((item) => {
|
|
480
|
+
const [name, ...parts] = item.trim().split("=");
|
|
481
|
+
return name ? [[name, decodeURIComponent(parts.join("="))]] : [];
|
|
482
|
+
}));
|
|
483
|
+
}
|
|
484
|
+
function defaultAdConsent() {
|
|
485
|
+
var _a, _b;
|
|
486
|
+
const target = globalThis;
|
|
487
|
+
const marketing = (_b = (_a = target.Cookiebot) == null ? void 0 : _a.consent) == null ? void 0 : _b.marketing;
|
|
488
|
+
return marketing === true ? "granted" : marketing === false ? "denied" : "";
|
|
489
|
+
}
|
|
490
|
+
function browser() {
|
|
491
|
+
if (typeof window === "undefined" || typeof document === "undefined") return void 0;
|
|
492
|
+
return {
|
|
493
|
+
href: window.location.href,
|
|
494
|
+
search: window.location.search,
|
|
495
|
+
referrer: document.referrer,
|
|
496
|
+
userAgent: navigator.userAgent,
|
|
497
|
+
cookie: document.cookie,
|
|
498
|
+
now: () => Date.now(),
|
|
499
|
+
writeCookie: (value) => {
|
|
500
|
+
document.cookie = value;
|
|
501
|
+
},
|
|
502
|
+
adConsent: defaultAdConsent
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
function readStored(cookies, name) {
|
|
506
|
+
try {
|
|
507
|
+
const parsed = JSON.parse(cookies.get(name) ?? "");
|
|
508
|
+
return parsed && typeof parsed === "object" && typeof parsed.captured_at === "number" ? parsed : void 0;
|
|
509
|
+
} catch {
|
|
510
|
+
return void 0;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
function googleClickId(value) {
|
|
514
|
+
const parts = value.split(".");
|
|
515
|
+
return parts[0] === "GCL" && parts.length >= 3 ? parts.slice(2).join(".") : "";
|
|
516
|
+
}
|
|
517
|
+
function gaClientId(value) {
|
|
518
|
+
var _a;
|
|
519
|
+
const parts = value.split(".");
|
|
520
|
+
return parts.length >= 4 && ((_a = parts[0]) == null ? void 0 : _a.startsWith("GA")) ? parts.slice(-2).join(".") : "";
|
|
521
|
+
}
|
|
522
|
+
function gaSessionId(value) {
|
|
523
|
+
var _a;
|
|
524
|
+
if (value.startsWith("GS1")) return value.split(".")[2] ?? "";
|
|
525
|
+
if (value.startsWith("GS2")) return ((_a = value.match(/(?:^|\.)s(\d+)(?:\$|$)/)) == null ? void 0 : _a[1]) ?? "";
|
|
526
|
+
return "";
|
|
527
|
+
}
|
|
528
|
+
function deviceType(ua) {
|
|
529
|
+
if (/iPad|Tablet|Android(?!.*Mobile)/i.test(ua)) return "tablet";
|
|
530
|
+
if (/Mobi|Android|iPhone|iPod/i.test(ua)) return "mobile";
|
|
531
|
+
return "desktop";
|
|
532
|
+
}
|
|
533
|
+
function operatingSystem(ua) {
|
|
534
|
+
if (/iPhone|iPad|iPod/i.test(ua)) return "iOS";
|
|
535
|
+
if (/Android/i.test(ua)) return "Android";
|
|
536
|
+
if (/Windows/i.test(ua)) return "Windows";
|
|
537
|
+
if (/Macintosh|Mac OS X/i.test(ua)) return "macOS";
|
|
538
|
+
if (/Linux/i.test(ua)) return "Linux";
|
|
539
|
+
return "";
|
|
540
|
+
}
|
|
541
|
+
function browserName(ua) {
|
|
542
|
+
if (/SamsungBrowser/i.test(ua)) return "Samsung Internet";
|
|
543
|
+
if (/Edg\//i.test(ua)) return "Edge";
|
|
544
|
+
if (/CriOS|Chrome\//i.test(ua)) return "Chrome";
|
|
545
|
+
if (/FxiOS|Firefox\//i.test(ua)) return "Firefox";
|
|
546
|
+
if (/Safari\//i.test(ua)) return "Safari";
|
|
547
|
+
return "";
|
|
548
|
+
}
|
|
549
|
+
function inAppSource(ua) {
|
|
550
|
+
if (/Instagram/i.test(ua)) return "instagram";
|
|
551
|
+
if (/FBAN|FBAV/i.test(ua)) return "facebook";
|
|
552
|
+
if (/TikTok|BytedanceWebview|musical_ly/i.test(ua)) return "tiktok";
|
|
553
|
+
return "";
|
|
554
|
+
}
|
|
555
|
+
function captureAttribution(options = {}) {
|
|
556
|
+
var _a, _b;
|
|
557
|
+
const env = options.browser ?? browser();
|
|
558
|
+
if (!env) return empty();
|
|
559
|
+
const cookieName = options.cookieName ?? DEFAULT_COOKIE;
|
|
560
|
+
const maxAge = options.maxAgeSeconds ?? DEFAULT_MAX_AGE;
|
|
561
|
+
const cookies = cookieMap(env.cookie);
|
|
562
|
+
const params = new URLSearchParams(env.search);
|
|
563
|
+
const incoming = Object.fromEntries(ATTRIBUTION_CAMPAIGN_KEYS.flatMap((key) => {
|
|
564
|
+
var _a2;
|
|
565
|
+
const value = (_a2 = params.get(key)) == null ? void 0 : _a2.trim();
|
|
566
|
+
return value ? [[key, value]] : [];
|
|
567
|
+
}));
|
|
568
|
+
const startsCampaign = Object.keys(incoming).length > 0;
|
|
569
|
+
let stored = readStored(cookies, cookieName);
|
|
570
|
+
if (!stored || startsCampaign) {
|
|
571
|
+
stored = {
|
|
572
|
+
captured_at: env.now(),
|
|
573
|
+
landing_page: env.href,
|
|
574
|
+
referrer: env.referrer,
|
|
575
|
+
campaign: incoming
|
|
576
|
+
};
|
|
577
|
+
const secure = env.href.startsWith("https:") ? "; Secure" : "";
|
|
578
|
+
env.writeCookie(
|
|
579
|
+
`${cookieName}=${encodeURIComponent(JSON.stringify(stored))}; Path=/; Max-Age=${maxAge}; SameSite=Lax${secure}`
|
|
580
|
+
);
|
|
581
|
+
}
|
|
582
|
+
const campaign = stored.campaign;
|
|
583
|
+
const gclid = campaign.gclid || googleClickId(cookies.get("_gcl_aw") ?? "");
|
|
584
|
+
const fbclid = campaign.fbclid ?? "";
|
|
585
|
+
const fbp = cookies.get("_fbp") ?? "";
|
|
586
|
+
const fbc = cookies.get("_fbc") || (fbclid ? `fb.1.${env.now()}.${fbclid}` : "");
|
|
587
|
+
const gaCookie = ((_a = [...cookies.entries()].find(([key]) => /^_ga_[A-Z0-9]+$/.test(key))) == null ? void 0 : _a[1]) ?? "";
|
|
588
|
+
return {
|
|
589
|
+
...empty(),
|
|
590
|
+
...campaign,
|
|
591
|
+
gclid,
|
|
592
|
+
fbclid,
|
|
593
|
+
fbp,
|
|
594
|
+
fbc,
|
|
595
|
+
ga_client_id: gaClientId(cookies.get("_ga") ?? ""),
|
|
596
|
+
ga_session_id: gaSessionId(gaCookie),
|
|
597
|
+
landing_page: stored.landing_page,
|
|
598
|
+
referrer: stored.referrer,
|
|
599
|
+
form_page: env.href,
|
|
600
|
+
device_type: deviceType(env.userAgent),
|
|
601
|
+
device_os: operatingSystem(env.userAgent),
|
|
602
|
+
browser: browserName(env.userAgent),
|
|
603
|
+
user_agent_raw: env.userAgent,
|
|
604
|
+
in_app_source: inAppSource(env.userAgent),
|
|
605
|
+
ad_consent: ((_b = env.adConsent) == null ? void 0 : _b.call(env)) ?? ""
|
|
606
|
+
};
|
|
607
|
+
}
|
|
435
608
|
function defineBloxSite(config) {
|
|
436
609
|
return config;
|
|
437
610
|
}
|
|
@@ -501,6 +674,7 @@ function buildBloxManifest(blox) {
|
|
|
501
674
|
return serializeRegistry(blox.getRegistry());
|
|
502
675
|
}
|
|
503
676
|
export {
|
|
677
|
+
ATTRIBUTION_CAMPAIGN_KEYS,
|
|
504
678
|
_2 as AdminEditBar,
|
|
505
679
|
t as BLOX_ADMIN_CONFIG_KEY,
|
|
506
680
|
v as BLOX_CONFIG_KEY,
|
|
@@ -518,6 +692,7 @@ export {
|
|
|
518
692
|
P as PreviewRenderer,
|
|
519
693
|
D as applyLayoutChrome,
|
|
520
694
|
buildBloxManifest,
|
|
695
|
+
captureAttribution,
|
|
521
696
|
E as classifyLink,
|
|
522
697
|
c as collectBloxData,
|
|
523
698
|
a2 as collectBloxSeo,
|
package/dist/ssg/cli.mjs
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,125 +1,126 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
2
|
+
"name": "@bagelink/blox",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "1.19.2",
|
|
5
|
+
"description": "Blox page builder library for drag-and-drop page building and static data management",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Bagel Studio",
|
|
8
|
+
"email": "info@bagelstudio.co.il",
|
|
9
|
+
"url": "https://bagelstudio.co.il"
|
|
10
|
+
},
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"homepage": "https://github.com/bageldb/bagelink/tree/master/packages/blox#readme",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/bageldb/bagelink.git",
|
|
16
|
+
"directory": "packages/blox"
|
|
17
|
+
},
|
|
18
|
+
"bugs": "https://github.com/bageldb/bagelink/issues",
|
|
19
|
+
"keywords": [
|
|
20
|
+
"blox",
|
|
21
|
+
"page-builder",
|
|
22
|
+
"preview",
|
|
23
|
+
"external-preview",
|
|
24
|
+
"cms",
|
|
25
|
+
"vue",
|
|
26
|
+
"component-library",
|
|
27
|
+
"drag-and-drop",
|
|
28
|
+
"static-pages"
|
|
29
|
+
],
|
|
30
|
+
"bin": {
|
|
31
|
+
"blox-ssg": "dist/ssg/cli.mjs"
|
|
32
|
+
},
|
|
33
|
+
"sideEffects": [
|
|
34
|
+
"**/*.css",
|
|
35
|
+
"**/*.vue"
|
|
36
|
+
],
|
|
37
|
+
"exports": {
|
|
38
|
+
"./package.json": "./package.json",
|
|
39
|
+
"./vite": {
|
|
40
|
+
"types": "./dist/vite-plugin.d.ts",
|
|
41
|
+
"import": "./dist/vite-plugin.mjs"
|
|
42
|
+
},
|
|
43
|
+
".": {
|
|
44
|
+
"types": "./dist/index.d.ts",
|
|
45
|
+
"require": "./dist/index.cjs",
|
|
46
|
+
"import": "./dist/index.mjs"
|
|
47
|
+
},
|
|
48
|
+
"./ssg": {
|
|
49
|
+
"types": "./dist/ssg/index.d.ts",
|
|
50
|
+
"import": "./dist/ssg/index.mjs"
|
|
51
|
+
},
|
|
52
|
+
"./ssg/client": {
|
|
53
|
+
"types": "./dist/ssg/client.d.ts",
|
|
54
|
+
"import": "./dist/ssg/client.mjs"
|
|
55
|
+
},
|
|
56
|
+
"./ssg/build-grant": {
|
|
57
|
+
"types": "./dist/ssg/build-grant.d.ts",
|
|
58
|
+
"import": "./dist/ssg/build-grant.mjs"
|
|
59
|
+
},
|
|
60
|
+
"./style.css": "./dist/style.css",
|
|
61
|
+
"./dist/style.css": "./dist/style.css"
|
|
62
|
+
},
|
|
63
|
+
"main": "./dist/index.cjs",
|
|
64
|
+
"module": "./dist/index.mjs",
|
|
65
|
+
"types": "./dist/index.d.ts",
|
|
66
|
+
"typesVersions": {
|
|
67
|
+
"*": {
|
|
68
|
+
"*": [
|
|
69
|
+
"./dist/*",
|
|
70
|
+
"./dist/index.d.ts"
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"files": [
|
|
75
|
+
"dist",
|
|
76
|
+
"core",
|
|
77
|
+
"components",
|
|
78
|
+
"config",
|
|
79
|
+
"ssg",
|
|
80
|
+
"utils",
|
|
81
|
+
"views",
|
|
82
|
+
"setup.ts",
|
|
83
|
+
"index.ts",
|
|
84
|
+
"README.md"
|
|
85
|
+
],
|
|
86
|
+
"scripts": {
|
|
87
|
+
"prepublishOnly": "pnpm build",
|
|
88
|
+
"dev": "vite build --watch",
|
|
89
|
+
"build": "vite build",
|
|
90
|
+
"typecheck": "vue-tsc --noEmit"
|
|
91
|
+
},
|
|
92
|
+
"publishConfig": {
|
|
93
|
+
"access": "public"
|
|
94
|
+
},
|
|
95
|
+
"peerDependencies": {
|
|
96
|
+
"@bagelink/vue": "*",
|
|
97
|
+
"happy-dom": ">=14.0.0",
|
|
98
|
+
"vite": ">=5.0.0",
|
|
99
|
+
"vue": "^3.3.0",
|
|
100
|
+
"vue-router": "^4.0.0"
|
|
101
|
+
},
|
|
102
|
+
"peerDependenciesMeta": {
|
|
103
|
+
"happy-dom": {
|
|
104
|
+
"optional": true
|
|
105
|
+
},
|
|
106
|
+
"vite": {
|
|
107
|
+
"optional": true
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"devDependencies": {
|
|
111
|
+
"@vitejs/plugin-vue": "^5.2.4",
|
|
112
|
+
"@vue/tsconfig": "^0.7.0",
|
|
113
|
+
"typescript": "^5.9.3",
|
|
114
|
+
"vite": "^5.4.21",
|
|
115
|
+
"vite-plugin-dts": "^4.5.4",
|
|
116
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
117
|
+
"vitest": "^3.2.7",
|
|
118
|
+
"vue": "^3.5.43",
|
|
119
|
+
"vue-router": "^4.6.4",
|
|
120
|
+
"vue-tsc": "^2.2.12"
|
|
121
|
+
},
|
|
122
|
+
"dependencies": {
|
|
123
|
+
"magic-string": "^0.30.21",
|
|
124
|
+
"pinia": "^3.0.4"
|
|
125
|
+
}
|
|
126
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2023 Bagel Studio
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|