@power-seo/tracking 1.0.0 → 1.0.1
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/README.md +405 -384
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.js.map +1 -1
- package/package.json +6 -6
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/consent.ts","../src/scripts/ga4.ts","../src/scripts/clarity.ts","../src/scripts/posthog.ts","../src/scripts/plausible.ts","../src/scripts/fathom.ts","../src/api/ga4.ts","../src/api/clarity.ts","../src/api/posthog.ts","../src/api/plausible.ts","../src/api/fathom.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["// ============================================================================\r\n// @power-seo/tracking — Consent Manager\r\n// ============================================================================\r\n\r\nimport type { ConsentState, ConsentCategory, ConsentManager, ConsentChangeCallback } from './types.js';\r\n\r\nconst DEFAULT_STATE: ConsentState = {\r\n necessary: true,\r\n analytics: false,\r\n marketing: false,\r\n preferences: false,\r\n};\r\n\r\nexport function createConsentManager(\r\n initial?: Partial<ConsentState>,\r\n): ConsentManager {\r\n const state: ConsentState = {\r\n ...DEFAULT_STATE,\r\n ...initial,\r\n necessary: true, // necessary cannot be overridden\r\n };\r\n\r\n const listeners = new Set<ConsentChangeCallback>();\r\n\r\n function notify(): void {\r\n for (const cb of listeners) {\r\n cb({ ...state });\r\n }\r\n }\r\n\r\n return {\r\n getState() {\r\n return { ...state };\r\n },\r\n\r\n grant(category: ConsentCategory) {\r\n if (state[category]) return; // already granted\r\n state[category] = true;\r\n notify();\r\n },\r\n\r\n revoke(category: ConsentCategory) {\r\n if (category === 'necessary') return; // cannot revoke necessary\r\n if (!state[category]) return; // already revoked\r\n state[category] = false;\r\n notify();\r\n },\r\n\r\n grantAll() {\r\n state.analytics = true;\r\n state.marketing = true;\r\n state.preferences = true;\r\n notify();\r\n },\r\n\r\n revokeAll() {\r\n state.analytics = false;\r\n state.marketing = false;\r\n state.preferences = false;\r\n notify();\r\n },\r\n\r\n isGranted(category: ConsentCategory) {\r\n return state[category];\r\n },\r\n\r\n onChange(callback: ConsentChangeCallback) {\r\n listeners.add(callback);\r\n return () => {\r\n listeners.delete(callback);\r\n };\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — GA4 Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, GA4Config, ConsentState } from '../types.js';\r\n\r\nexport function buildGA4Script(config: GA4Config): ScriptConfig[] {\r\n const { measurementId, consentModeV2 = true, anonymizeIp = true, sendPageView = true } = config;\r\n\r\n const scripts: ScriptConfig[] = [];\r\n\r\n if (consentModeV2) {\r\n scripts.push({\r\n id: `ga4-consent-${measurementId}`,\r\n innerHTML: `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('consent','default',{'analytics_storage':'denied','ad_storage':'denied','ad_user_data':'denied','ad_personalization':'denied'});`,\r\n consentCategory: 'necessary',\r\n shouldLoad: () => true,\r\n });\r\n }\r\n\r\n scripts.push({\r\n id: `ga4-gtag-${measurementId}`,\r\n src: `https://www.googletagmanager.com/gtag/js?id=${measurementId}`,\r\n async: true,\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n });\r\n\r\n const configParts = [\r\n `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());`,\r\n `gtag('config','${measurementId}',{${anonymizeIp ? \"'anonymize_ip':true,\" : ''}${!sendPageView ? \"'send_page_view':false\" : ''}});`,\r\n ];\r\n\r\n if (consentModeV2) {\r\n configParts.push(\r\n `gtag('consent','update',{'analytics_storage':'granted'});`,\r\n );\r\n }\r\n\r\n scripts.push({\r\n id: `ga4-config-${measurementId}`,\r\n innerHTML: configParts.join(''),\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n });\r\n\r\n return scripts;\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Clarity Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, ClarityConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildClarityScript(config: ClarityConfig): ScriptConfig {\r\n const { projectId } = config;\r\n\r\n return {\r\n id: `clarity-${projectId}`,\r\n innerHTML: `(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,\"clarity\",\"script\",\"${projectId}\");`,\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — PostHog Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, PostHogConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildPostHogScript(config: PostHogConfig): ScriptConfig {\r\n const { apiKey, host = 'https://us.i.posthog.com' } = config;\r\n\r\n return {\r\n id: `posthog-${apiKey}`,\r\n innerHTML: `!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(\".\");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement(\"script\")).type=\"text/javascript\",p.async=!0,p.src=s.api_host+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a=\"posthog\",u.people=u.people||[],u.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},u.people.toString=function(){return u.toString(1)+\".people (stub)\"},o=\"init capture register register_once register_for_session unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onFeatureFlags\".split(\" \"),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);posthog.init('${apiKey}',{api_host:'${host}',person_profiles:'identified_only'});`,\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Plausible Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, PlausibleConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildPlausibleScript(config: PlausibleConfig): ScriptConfig {\r\n const { domain, selfHostedUrl } = config;\r\n const scriptSrc = selfHostedUrl\r\n ? `${selfHostedUrl.replace(/\\/$/, '')}/js/script.js`\r\n : 'https://plausible.io/js/script.js';\r\n\r\n return {\r\n id: `plausible-${domain}`,\r\n src: scriptSrc,\r\n defer: true,\r\n consentCategory: 'analytics',\r\n attributes: {\r\n 'data-domain': domain,\r\n },\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Fathom Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, FathomConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildFathomScript(config: FathomConfig): ScriptConfig {\r\n const { siteId } = config;\r\n\r\n return {\r\n id: `fathom-${siteId}`,\r\n src: 'https://cdn.usefathom.com/script.js',\r\n defer: true,\r\n consentCategory: 'analytics',\r\n attributes: {\r\n 'data-site': siteId,\r\n },\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — GA4 API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n GA4Client,\r\n GA4ReportResponse,\r\n GA4ReportRow,\r\n GA4Metadata,\r\n} from '../types.js';\r\n\r\nconst GA4_BASE = 'https://analyticsdata.googleapis.com/v1beta';\r\n\r\nexport function createGA4Client(accessToken: string): GA4Client {\r\n async function request<T>(url: string, body?: unknown): Promise<T> {\r\n const response = await globalThis.fetch(url, {\r\n method: body ? 'POST' : 'GET',\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body ? JSON.stringify(body) : undefined,\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`GA4 API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async queryReport(propertyId, req) {\r\n const body = {\r\n dateRanges: [{ startDate: req.startDate, endDate: req.endDate }],\r\n metrics: req.metrics.map((m) => ({ name: m })),\r\n dimensions: (req.dimensions ?? []).map((d) => ({ name: d })),\r\n limit: req.limit ?? 1000,\r\n };\r\n\r\n const raw = await request<{\r\n rows?: Array<{\r\n dimensionValues?: Array<{ value: string }>;\r\n metricValues?: Array<{ value: string }>;\r\n }>;\r\n rowCount?: number;\r\n metricHeaders?: Array<{ name: string; type: string }>;\r\n }>(`${GA4_BASE}/properties/${propertyId}:runReport`, body);\r\n\r\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\r\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\r\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\r\n }));\r\n\r\n return {\r\n rows,\r\n rowCount: raw.rowCount ?? rows.length,\r\n metadata: raw.metricHeaders ? { metricHeaders: raw.metricHeaders } : undefined,\r\n } satisfies GA4ReportResponse;\r\n },\r\n\r\n async getRealtimeReport(propertyId, metrics) {\r\n const body = {\r\n metrics: metrics.map((m) => ({ name: m })),\r\n };\r\n\r\n const raw = await request<{\r\n rows?: Array<{\r\n dimensionValues?: Array<{ value: string }>;\r\n metricValues?: Array<{ value: string }>;\r\n }>;\r\n rowCount?: number;\r\n }>(`${GA4_BASE}/properties/${propertyId}:runRealtimeReport`, body);\r\n\r\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\r\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\r\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\r\n }));\r\n\r\n return { rows, rowCount: raw.rowCount ?? rows.length } satisfies GA4ReportResponse;\r\n },\r\n\r\n async getMetadata(propertyId) {\r\n const raw = await request<{\r\n dimensions?: Array<{ apiName: string; uiName: string; description: string }>;\r\n metrics?: Array<{ apiName: string; uiName: string; description: string; type: string }>;\r\n }>(`${GA4_BASE}/properties/${propertyId}/metadata`);\r\n\r\n return {\r\n dimensions: raw.dimensions ?? [],\r\n metrics: raw.metrics ?? [],\r\n } satisfies GA4Metadata;\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Clarity API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n ClarityClient,\r\n ClarityProject,\r\n ClarityInsight,\r\n ClarityHeatmapData,\r\n} from '../types.js';\r\n\r\nconst CLARITY_BASE = 'https://www.clarity.ms/api/v1';\r\n\r\nexport function createClarityClient(apiKey: string): ClarityClient {\r\n async function request<T>(path: string): Promise<T> {\r\n const response = await globalThis.fetch(`${CLARITY_BASE}${path}`, {\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Clarity API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async getProjects() {\r\n return request<ClarityProject[]>('/projects');\r\n },\r\n\r\n async getInsights(projectId) {\r\n return request<ClarityInsight[]>(`/projects/${projectId}/insights`);\r\n },\r\n\r\n async getHeatmapData(projectId, url) {\r\n const encodedUrl = encodeURIComponent(url);\r\n return request<ClarityHeatmapData>(\r\n `/projects/${projectId}/heatmaps?url=${encodedUrl}`,\r\n );\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — PostHog API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n PostHogClient,\r\n PostHogEvent,\r\n PostHogTrendResult,\r\n PostHogFunnelStep,\r\n} from '../types.js';\r\n\r\nconst POSTHOG_BASE = 'https://us.posthog.com/api';\r\n\r\nexport function createPostHogClient(apiKey: string, host?: string): PostHogClient {\r\n const baseUrl = host ? `${host.replace(/\\/$/, '')}/api` : POSTHOG_BASE;\r\n\r\n async function request<T>(path: string, body?: unknown): Promise<T> {\r\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\r\n method: body ? 'POST' : 'GET',\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body ? JSON.stringify(body) : undefined,\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`PostHog API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async queryEvents(projectId, event, limit = 100) {\r\n const raw = await request<{ results: PostHogEvent[] }>(\r\n `/projects/${projectId}/events?event=${encodeURIComponent(event)}&limit=${limit}`,\r\n );\r\n return raw.results ?? [];\r\n },\r\n\r\n async getTrends(projectId, events, days = 7) {\r\n const body = {\r\n events: events.map((e) => ({ id: e, type: 'events' })),\r\n date_from: `-${days}d`,\r\n };\r\n const raw = await request<{ result: PostHogTrendResult[] }>(\r\n `/projects/${projectId}/insights/trend`,\r\n body,\r\n );\r\n return raw.result ?? [];\r\n },\r\n\r\n async getFunnels(projectId, steps) {\r\n const body = {\r\n events: steps.map((s) => ({ id: s, type: 'events' })),\r\n };\r\n const raw = await request<{ result: PostHogFunnelStep[] }>(\r\n `/projects/${projectId}/insights/funnel`,\r\n body,\r\n );\r\n return raw.result ?? [];\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Plausible API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n PlausibleClient,\r\n PlausibleTimeseriesPoint,\r\n PlausibleBreakdownEntry,\r\n PlausibleAggregateResult,\r\n} from '../types.js';\r\n\r\nconst PLAUSIBLE_BASE = 'https://plausible.io/api/v1';\r\n\r\nexport function createPlausibleClient(apiKey: string, selfHostedUrl?: string): PlausibleClient {\r\n const baseUrl = selfHostedUrl\r\n ? `${selfHostedUrl.replace(/\\/$/, '')}/api/v1`\r\n : PLAUSIBLE_BASE;\r\n\r\n async function request<T>(path: string): Promise<T> {\r\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Plausible API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async getTimeseries(siteId, period = '30d') {\r\n const raw = await request<{ results: PlausibleTimeseriesPoint[] }>(\r\n `/stats/timeseries?site_id=${encodeURIComponent(siteId)}&period=${period}`,\r\n );\r\n return raw.results ?? [];\r\n },\r\n\r\n async getBreakdown(siteId, property, period = '30d') {\r\n const raw = await request<{ results: PlausibleBreakdownEntry[] }>(\r\n `/stats/breakdown?site_id=${encodeURIComponent(siteId)}&property=${encodeURIComponent(property)}&period=${period}`,\r\n );\r\n return raw.results ?? [];\r\n },\r\n\r\n async getAggregate(siteId, period = '30d') {\r\n const raw = await request<{ results: PlausibleAggregateResult }>(\r\n `/stats/aggregate?site_id=${encodeURIComponent(siteId)}&period=${period}&metrics=visitors,pageviews,bounce_rate,visit_duration,events`,\r\n );\r\n return raw.results;\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Fathom API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n FathomClient,\r\n FathomSite,\r\n FathomPageview,\r\n FathomReferrer,\r\n} from '../types.js';\r\n\r\nconst FATHOM_BASE = 'https://api.usefathom.com/v1';\r\n\r\nexport function createFathomClient(apiKey: string): FathomClient {\r\n async function request<T>(path: string): Promise<T> {\r\n const response = await globalThis.fetch(`${FATHOM_BASE}${path}`, {\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Fathom API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async getSites() {\r\n const raw = await request<{ data: FathomSite[] }>('/sites');\r\n return raw.data ?? [];\r\n },\r\n\r\n async getPageviews(siteId, period = '30d') {\r\n const raw = await request<{ data: FathomPageview[] }>(\r\n `/sites/${siteId}/pages?period=${period}`,\r\n );\r\n return raw.data ?? [];\r\n },\r\n\r\n async getReferrers(siteId, period = '30d') {\r\n const raw = await request<{ data: FathomReferrer[] }>(\r\n `/sites/${siteId}/referrers?period=${period}`,\r\n );\r\n return raw.data ?? [];\r\n },\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/consent.ts","../src/scripts/ga4.ts","../src/scripts/clarity.ts","../src/scripts/posthog.ts","../src/scripts/plausible.ts","../src/scripts/fathom.ts","../src/api/ga4.ts","../src/api/clarity.ts","../src/api/posthog.ts","../src/api/plausible.ts","../src/api/fathom.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["// ============================================================================\n// @power-seo/tracking — Consent Manager\n// ============================================================================\n\nimport type { ConsentState, ConsentCategory, ConsentManager, ConsentChangeCallback } from './types.js';\n\nconst DEFAULT_STATE: ConsentState = {\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false,\n};\n\nexport function createConsentManager(\n initial?: Partial<ConsentState>,\n): ConsentManager {\n const state: ConsentState = {\n ...DEFAULT_STATE,\n ...initial,\n necessary: true, // necessary cannot be overridden\n };\n\n const listeners = new Set<ConsentChangeCallback>();\n\n function notify(): void {\n for (const cb of listeners) {\n cb({ ...state });\n }\n }\n\n return {\n getState() {\n return { ...state };\n },\n\n grant(category: ConsentCategory) {\n if (state[category]) return; // already granted\n state[category] = true;\n notify();\n },\n\n revoke(category: ConsentCategory) {\n if (category === 'necessary') return; // cannot revoke necessary\n if (!state[category]) return; // already revoked\n state[category] = false;\n notify();\n },\n\n grantAll() {\n state.analytics = true;\n state.marketing = true;\n state.preferences = true;\n notify();\n },\n\n revokeAll() {\n state.analytics = false;\n state.marketing = false;\n state.preferences = false;\n notify();\n },\n\n isGranted(category: ConsentCategory) {\n return state[category];\n },\n\n onChange(callback: ConsentChangeCallback) {\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n };\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — GA4 Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, GA4Config, ConsentState } from '../types.js';\n\nexport function buildGA4Script(config: GA4Config): ScriptConfig[] {\n const { measurementId, consentModeV2 = true, anonymizeIp = true, sendPageView = true } = config;\n\n const scripts: ScriptConfig[] = [];\n\n if (consentModeV2) {\n scripts.push({\n id: `ga4-consent-${measurementId}`,\n innerHTML: `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('consent','default',{'analytics_storage':'denied','ad_storage':'denied','ad_user_data':'denied','ad_personalization':'denied'});`,\n consentCategory: 'necessary',\n shouldLoad: () => true,\n });\n }\n\n scripts.push({\n id: `ga4-gtag-${measurementId}`,\n src: `https://www.googletagmanager.com/gtag/js?id=${measurementId}`,\n async: true,\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n });\n\n const configParts = [\n `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());`,\n `gtag('config','${measurementId}',{${anonymizeIp ? \"'anonymize_ip':true,\" : ''}${!sendPageView ? \"'send_page_view':false\" : ''}});`,\n ];\n\n if (consentModeV2) {\n configParts.push(\n `gtag('consent','update',{'analytics_storage':'granted'});`,\n );\n }\n\n scripts.push({\n id: `ga4-config-${measurementId}`,\n innerHTML: configParts.join(''),\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n });\n\n return scripts;\n}\n","// ============================================================================\n// @power-seo/tracking — Clarity Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, ClarityConfig, ConsentState } from '../types.js';\n\nexport function buildClarityScript(config: ClarityConfig): ScriptConfig {\n const { projectId } = config;\n\n return {\n id: `clarity-${projectId}`,\n innerHTML: `(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,\"clarity\",\"script\",\"${projectId}\");`,\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — PostHog Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, PostHogConfig, ConsentState } from '../types.js';\n\nexport function buildPostHogScript(config: PostHogConfig): ScriptConfig {\n const { apiKey, host = 'https://us.i.posthog.com' } = config;\n\n return {\n id: `posthog-${apiKey}`,\n innerHTML: `!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(\".\");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement(\"script\")).type=\"text/javascript\",p.async=!0,p.src=s.api_host+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a=\"posthog\",u.people=u.people||[],u.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},u.people.toString=function(){return u.toString(1)+\".people (stub)\"},o=\"init capture register register_once register_for_session unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onFeatureFlags\".split(\" \"),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);posthog.init('${apiKey}',{api_host:'${host}',person_profiles:'identified_only'});`,\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Plausible Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, PlausibleConfig, ConsentState } from '../types.js';\n\nexport function buildPlausibleScript(config: PlausibleConfig): ScriptConfig {\n const { domain, selfHostedUrl } = config;\n const scriptSrc = selfHostedUrl\n ? `${selfHostedUrl.replace(/\\/$/, '')}/js/script.js`\n : 'https://plausible.io/js/script.js';\n\n return {\n id: `plausible-${domain}`,\n src: scriptSrc,\n defer: true,\n consentCategory: 'analytics',\n attributes: {\n 'data-domain': domain,\n },\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Fathom Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, FathomConfig, ConsentState } from '../types.js';\n\nexport function buildFathomScript(config: FathomConfig): ScriptConfig {\n const { siteId } = config;\n\n return {\n id: `fathom-${siteId}`,\n src: 'https://cdn.usefathom.com/script.js',\n defer: true,\n consentCategory: 'analytics',\n attributes: {\n 'data-site': siteId,\n },\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — GA4 API Client\n// ============================================================================\n\nimport type {\n GA4Client,\n GA4ReportResponse,\n GA4ReportRow,\n GA4Metadata,\n} from '../types.js';\n\nconst GA4_BASE = 'https://analyticsdata.googleapis.com/v1beta';\n\nexport function createGA4Client(accessToken: string): GA4Client {\n async function request<T>(url: string, body?: unknown): Promise<T> {\n const response = await globalThis.fetch(url, {\n method: body ? 'POST' : 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`GA4 API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async queryReport(propertyId, req) {\n const body = {\n dateRanges: [{ startDate: req.startDate, endDate: req.endDate }],\n metrics: req.metrics.map((m) => ({ name: m })),\n dimensions: (req.dimensions ?? []).map((d) => ({ name: d })),\n limit: req.limit ?? 1000,\n };\n\n const raw = await request<{\n rows?: Array<{\n dimensionValues?: Array<{ value: string }>;\n metricValues?: Array<{ value: string }>;\n }>;\n rowCount?: number;\n metricHeaders?: Array<{ name: string; type: string }>;\n }>(`${GA4_BASE}/properties/${propertyId}:runReport`, body);\n\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\n }));\n\n return {\n rows,\n rowCount: raw.rowCount ?? rows.length,\n metadata: raw.metricHeaders ? { metricHeaders: raw.metricHeaders } : undefined,\n } satisfies GA4ReportResponse;\n },\n\n async getRealtimeReport(propertyId, metrics) {\n const body = {\n metrics: metrics.map((m) => ({ name: m })),\n };\n\n const raw = await request<{\n rows?: Array<{\n dimensionValues?: Array<{ value: string }>;\n metricValues?: Array<{ value: string }>;\n }>;\n rowCount?: number;\n }>(`${GA4_BASE}/properties/${propertyId}:runRealtimeReport`, body);\n\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\n }));\n\n return { rows, rowCount: raw.rowCount ?? rows.length } satisfies GA4ReportResponse;\n },\n\n async getMetadata(propertyId) {\n const raw = await request<{\n dimensions?: Array<{ apiName: string; uiName: string; description: string }>;\n metrics?: Array<{ apiName: string; uiName: string; description: string; type: string }>;\n }>(`${GA4_BASE}/properties/${propertyId}/metadata`);\n\n return {\n dimensions: raw.dimensions ?? [],\n metrics: raw.metrics ?? [],\n } satisfies GA4Metadata;\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Clarity API Client\n// ============================================================================\n\nimport type {\n ClarityClient,\n ClarityProject,\n ClarityInsight,\n ClarityHeatmapData,\n} from '../types.js';\n\nconst CLARITY_BASE = 'https://www.clarity.ms/api/v1';\n\nexport function createClarityClient(apiKey: string): ClarityClient {\n async function request<T>(path: string): Promise<T> {\n const response = await globalThis.fetch(`${CLARITY_BASE}${path}`, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Clarity API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async getProjects() {\n return request<ClarityProject[]>('/projects');\n },\n\n async getInsights(projectId) {\n return request<ClarityInsight[]>(`/projects/${projectId}/insights`);\n },\n\n async getHeatmapData(projectId, url) {\n const encodedUrl = encodeURIComponent(url);\n return request<ClarityHeatmapData>(\n `/projects/${projectId}/heatmaps?url=${encodedUrl}`,\n );\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — PostHog API Client\n// ============================================================================\n\nimport type {\n PostHogClient,\n PostHogEvent,\n PostHogTrendResult,\n PostHogFunnelStep,\n} from '../types.js';\n\nconst POSTHOG_BASE = 'https://us.posthog.com/api';\n\nexport function createPostHogClient(apiKey: string, host?: string): PostHogClient {\n const baseUrl = host ? `${host.replace(/\\/$/, '')}/api` : POSTHOG_BASE;\n\n async function request<T>(path: string, body?: unknown): Promise<T> {\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\n method: body ? 'POST' : 'GET',\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`PostHog API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async queryEvents(projectId, event, limit = 100) {\n const raw = await request<{ results: PostHogEvent[] }>(\n `/projects/${projectId}/events?event=${encodeURIComponent(event)}&limit=${limit}`,\n );\n return raw.results ?? [];\n },\n\n async getTrends(projectId, events, days = 7) {\n const body = {\n events: events.map((e) => ({ id: e, type: 'events' })),\n date_from: `-${days}d`,\n };\n const raw = await request<{ result: PostHogTrendResult[] }>(\n `/projects/${projectId}/insights/trend`,\n body,\n );\n return raw.result ?? [];\n },\n\n async getFunnels(projectId, steps) {\n const body = {\n events: steps.map((s) => ({ id: s, type: 'events' })),\n };\n const raw = await request<{ result: PostHogFunnelStep[] }>(\n `/projects/${projectId}/insights/funnel`,\n body,\n );\n return raw.result ?? [];\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Plausible API Client\n// ============================================================================\n\nimport type {\n PlausibleClient,\n PlausibleTimeseriesPoint,\n PlausibleBreakdownEntry,\n PlausibleAggregateResult,\n} from '../types.js';\n\nconst PLAUSIBLE_BASE = 'https://plausible.io/api/v1';\n\nexport function createPlausibleClient(apiKey: string, selfHostedUrl?: string): PlausibleClient {\n const baseUrl = selfHostedUrl\n ? `${selfHostedUrl.replace(/\\/$/, '')}/api/v1`\n : PLAUSIBLE_BASE;\n\n async function request<T>(path: string): Promise<T> {\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Plausible API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async getTimeseries(siteId, period = '30d') {\n const raw = await request<{ results: PlausibleTimeseriesPoint[] }>(\n `/stats/timeseries?site_id=${encodeURIComponent(siteId)}&period=${period}`,\n );\n return raw.results ?? [];\n },\n\n async getBreakdown(siteId, property, period = '30d') {\n const raw = await request<{ results: PlausibleBreakdownEntry[] }>(\n `/stats/breakdown?site_id=${encodeURIComponent(siteId)}&property=${encodeURIComponent(property)}&period=${period}`,\n );\n return raw.results ?? [];\n },\n\n async getAggregate(siteId, period = '30d') {\n const raw = await request<{ results: PlausibleAggregateResult }>(\n `/stats/aggregate?site_id=${encodeURIComponent(siteId)}&period=${period}&metrics=visitors,pageviews,bounce_rate,visit_duration,events`,\n );\n return raw.results;\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Fathom API Client\n// ============================================================================\n\nimport type {\n FathomClient,\n FathomSite,\n FathomPageview,\n FathomReferrer,\n} from '../types.js';\n\nconst FATHOM_BASE = 'https://api.usefathom.com/v1';\n\nexport function createFathomClient(apiKey: string): FathomClient {\n async function request<T>(path: string): Promise<T> {\n const response = await globalThis.fetch(`${FATHOM_BASE}${path}`, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Fathom API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async getSites() {\n const raw = await request<{ data: FathomSite[] }>('/sites');\n return raw.data ?? [];\n },\n\n async getPageviews(siteId, period = '30d') {\n const raw = await request<{ data: FathomPageview[] }>(\n `/sites/${siteId}/pages?period=${period}`,\n );\n return raw.data ?? [];\n },\n\n async getReferrers(siteId, period = '30d') {\n const raw = await request<{ data: FathomReferrer[] }>(\n `/sites/${siteId}/referrers?period=${period}`,\n );\n return raw.data ?? [];\n },\n };\n}\n"]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/consent.ts","../src/scripts/ga4.ts","../src/scripts/clarity.ts","../src/scripts/posthog.ts","../src/scripts/plausible.ts","../src/scripts/fathom.ts","../src/api/ga4.ts","../src/api/clarity.ts","../src/api/posthog.ts","../src/api/plausible.ts","../src/api/fathom.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// ============================================================================\r\n// @power-seo/tracking — Consent Manager\r\n// ============================================================================\r\n\r\nimport type { ConsentState, ConsentCategory, ConsentManager, ConsentChangeCallback } from './types.js';\r\n\r\nconst DEFAULT_STATE: ConsentState = {\r\n necessary: true,\r\n analytics: false,\r\n marketing: false,\r\n preferences: false,\r\n};\r\n\r\nexport function createConsentManager(\r\n initial?: Partial<ConsentState>,\r\n): ConsentManager {\r\n const state: ConsentState = {\r\n ...DEFAULT_STATE,\r\n ...initial,\r\n necessary: true, // necessary cannot be overridden\r\n };\r\n\r\n const listeners = new Set<ConsentChangeCallback>();\r\n\r\n function notify(): void {\r\n for (const cb of listeners) {\r\n cb({ ...state });\r\n }\r\n }\r\n\r\n return {\r\n getState() {\r\n return { ...state };\r\n },\r\n\r\n grant(category: ConsentCategory) {\r\n if (state[category]) return; // already granted\r\n state[category] = true;\r\n notify();\r\n },\r\n\r\n revoke(category: ConsentCategory) {\r\n if (category === 'necessary') return; // cannot revoke necessary\r\n if (!state[category]) return; // already revoked\r\n state[category] = false;\r\n notify();\r\n },\r\n\r\n grantAll() {\r\n state.analytics = true;\r\n state.marketing = true;\r\n state.preferences = true;\r\n notify();\r\n },\r\n\r\n revokeAll() {\r\n state.analytics = false;\r\n state.marketing = false;\r\n state.preferences = false;\r\n notify();\r\n },\r\n\r\n isGranted(category: ConsentCategory) {\r\n return state[category];\r\n },\r\n\r\n onChange(callback: ConsentChangeCallback) {\r\n listeners.add(callback);\r\n return () => {\r\n listeners.delete(callback);\r\n };\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — GA4 Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, GA4Config, ConsentState } from '../types.js';\r\n\r\nexport function buildGA4Script(config: GA4Config): ScriptConfig[] {\r\n const { measurementId, consentModeV2 = true, anonymizeIp = true, sendPageView = true } = config;\r\n\r\n const scripts: ScriptConfig[] = [];\r\n\r\n if (consentModeV2) {\r\n scripts.push({\r\n id: `ga4-consent-${measurementId}`,\r\n innerHTML: `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('consent','default',{'analytics_storage':'denied','ad_storage':'denied','ad_user_data':'denied','ad_personalization':'denied'});`,\r\n consentCategory: 'necessary',\r\n shouldLoad: () => true,\r\n });\r\n }\r\n\r\n scripts.push({\r\n id: `ga4-gtag-${measurementId}`,\r\n src: `https://www.googletagmanager.com/gtag/js?id=${measurementId}`,\r\n async: true,\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n });\r\n\r\n const configParts = [\r\n `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());`,\r\n `gtag('config','${measurementId}',{${anonymizeIp ? \"'anonymize_ip':true,\" : ''}${!sendPageView ? \"'send_page_view':false\" : ''}});`,\r\n ];\r\n\r\n if (consentModeV2) {\r\n configParts.push(\r\n `gtag('consent','update',{'analytics_storage':'granted'});`,\r\n );\r\n }\r\n\r\n scripts.push({\r\n id: `ga4-config-${measurementId}`,\r\n innerHTML: configParts.join(''),\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n });\r\n\r\n return scripts;\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Clarity Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, ClarityConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildClarityScript(config: ClarityConfig): ScriptConfig {\r\n const { projectId } = config;\r\n\r\n return {\r\n id: `clarity-${projectId}`,\r\n innerHTML: `(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,\"clarity\",\"script\",\"${projectId}\");`,\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — PostHog Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, PostHogConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildPostHogScript(config: PostHogConfig): ScriptConfig {\r\n const { apiKey, host = 'https://us.i.posthog.com' } = config;\r\n\r\n return {\r\n id: `posthog-${apiKey}`,\r\n innerHTML: `!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(\".\");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement(\"script\")).type=\"text/javascript\",p.async=!0,p.src=s.api_host+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a=\"posthog\",u.people=u.people||[],u.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},u.people.toString=function(){return u.toString(1)+\".people (stub)\"},o=\"init capture register register_once register_for_session unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onFeatureFlags\".split(\" \"),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);posthog.init('${apiKey}',{api_host:'${host}',person_profiles:'identified_only'});`,\r\n consentCategory: 'analytics',\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Plausible Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, PlausibleConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildPlausibleScript(config: PlausibleConfig): ScriptConfig {\r\n const { domain, selfHostedUrl } = config;\r\n const scriptSrc = selfHostedUrl\r\n ? `${selfHostedUrl.replace(/\\/$/, '')}/js/script.js`\r\n : 'https://plausible.io/js/script.js';\r\n\r\n return {\r\n id: `plausible-${domain}`,\r\n src: scriptSrc,\r\n defer: true,\r\n consentCategory: 'analytics',\r\n attributes: {\r\n 'data-domain': domain,\r\n },\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Fathom Script Builder\r\n// ============================================================================\r\n\r\nimport type { ScriptConfig, FathomConfig, ConsentState } from '../types.js';\r\n\r\nexport function buildFathomScript(config: FathomConfig): ScriptConfig {\r\n const { siteId } = config;\r\n\r\n return {\r\n id: `fathom-${siteId}`,\r\n src: 'https://cdn.usefathom.com/script.js',\r\n defer: true,\r\n consentCategory: 'analytics',\r\n attributes: {\r\n 'data-site': siteId,\r\n },\r\n shouldLoad: (consent: ConsentState) => consent.analytics,\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — GA4 API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n GA4Client,\r\n GA4ReportResponse,\r\n GA4ReportRow,\r\n GA4Metadata,\r\n} from '../types.js';\r\n\r\nconst GA4_BASE = 'https://analyticsdata.googleapis.com/v1beta';\r\n\r\nexport function createGA4Client(accessToken: string): GA4Client {\r\n async function request<T>(url: string, body?: unknown): Promise<T> {\r\n const response = await globalThis.fetch(url, {\r\n method: body ? 'POST' : 'GET',\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body ? JSON.stringify(body) : undefined,\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`GA4 API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async queryReport(propertyId, req) {\r\n const body = {\r\n dateRanges: [{ startDate: req.startDate, endDate: req.endDate }],\r\n metrics: req.metrics.map((m) => ({ name: m })),\r\n dimensions: (req.dimensions ?? []).map((d) => ({ name: d })),\r\n limit: req.limit ?? 1000,\r\n };\r\n\r\n const raw = await request<{\r\n rows?: Array<{\r\n dimensionValues?: Array<{ value: string }>;\r\n metricValues?: Array<{ value: string }>;\r\n }>;\r\n rowCount?: number;\r\n metricHeaders?: Array<{ name: string; type: string }>;\r\n }>(`${GA4_BASE}/properties/${propertyId}:runReport`, body);\r\n\r\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\r\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\r\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\r\n }));\r\n\r\n return {\r\n rows,\r\n rowCount: raw.rowCount ?? rows.length,\r\n metadata: raw.metricHeaders ? { metricHeaders: raw.metricHeaders } : undefined,\r\n } satisfies GA4ReportResponse;\r\n },\r\n\r\n async getRealtimeReport(propertyId, metrics) {\r\n const body = {\r\n metrics: metrics.map((m) => ({ name: m })),\r\n };\r\n\r\n const raw = await request<{\r\n rows?: Array<{\r\n dimensionValues?: Array<{ value: string }>;\r\n metricValues?: Array<{ value: string }>;\r\n }>;\r\n rowCount?: number;\r\n }>(`${GA4_BASE}/properties/${propertyId}:runRealtimeReport`, body);\r\n\r\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\r\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\r\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\r\n }));\r\n\r\n return { rows, rowCount: raw.rowCount ?? rows.length } satisfies GA4ReportResponse;\r\n },\r\n\r\n async getMetadata(propertyId) {\r\n const raw = await request<{\r\n dimensions?: Array<{ apiName: string; uiName: string; description: string }>;\r\n metrics?: Array<{ apiName: string; uiName: string; description: string; type: string }>;\r\n }>(`${GA4_BASE}/properties/${propertyId}/metadata`);\r\n\r\n return {\r\n dimensions: raw.dimensions ?? [],\r\n metrics: raw.metrics ?? [],\r\n } satisfies GA4Metadata;\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Clarity API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n ClarityClient,\r\n ClarityProject,\r\n ClarityInsight,\r\n ClarityHeatmapData,\r\n} from '../types.js';\r\n\r\nconst CLARITY_BASE = 'https://www.clarity.ms/api/v1';\r\n\r\nexport function createClarityClient(apiKey: string): ClarityClient {\r\n async function request<T>(path: string): Promise<T> {\r\n const response = await globalThis.fetch(`${CLARITY_BASE}${path}`, {\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Clarity API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async getProjects() {\r\n return request<ClarityProject[]>('/projects');\r\n },\r\n\r\n async getInsights(projectId) {\r\n return request<ClarityInsight[]>(`/projects/${projectId}/insights`);\r\n },\r\n\r\n async getHeatmapData(projectId, url) {\r\n const encodedUrl = encodeURIComponent(url);\r\n return request<ClarityHeatmapData>(\r\n `/projects/${projectId}/heatmaps?url=${encodedUrl}`,\r\n );\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — PostHog API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n PostHogClient,\r\n PostHogEvent,\r\n PostHogTrendResult,\r\n PostHogFunnelStep,\r\n} from '../types.js';\r\n\r\nconst POSTHOG_BASE = 'https://us.posthog.com/api';\r\n\r\nexport function createPostHogClient(apiKey: string, host?: string): PostHogClient {\r\n const baseUrl = host ? `${host.replace(/\\/$/, '')}/api` : POSTHOG_BASE;\r\n\r\n async function request<T>(path: string, body?: unknown): Promise<T> {\r\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\r\n method: body ? 'POST' : 'GET',\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body ? JSON.stringify(body) : undefined,\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`PostHog API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async queryEvents(projectId, event, limit = 100) {\r\n const raw = await request<{ results: PostHogEvent[] }>(\r\n `/projects/${projectId}/events?event=${encodeURIComponent(event)}&limit=${limit}`,\r\n );\r\n return raw.results ?? [];\r\n },\r\n\r\n async getTrends(projectId, events, days = 7) {\r\n const body = {\r\n events: events.map((e) => ({ id: e, type: 'events' })),\r\n date_from: `-${days}d`,\r\n };\r\n const raw = await request<{ result: PostHogTrendResult[] }>(\r\n `/projects/${projectId}/insights/trend`,\r\n body,\r\n );\r\n return raw.result ?? [];\r\n },\r\n\r\n async getFunnels(projectId, steps) {\r\n const body = {\r\n events: steps.map((s) => ({ id: s, type: 'events' })),\r\n };\r\n const raw = await request<{ result: PostHogFunnelStep[] }>(\r\n `/projects/${projectId}/insights/funnel`,\r\n body,\r\n );\r\n return raw.result ?? [];\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Plausible API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n PlausibleClient,\r\n PlausibleTimeseriesPoint,\r\n PlausibleBreakdownEntry,\r\n PlausibleAggregateResult,\r\n} from '../types.js';\r\n\r\nconst PLAUSIBLE_BASE = 'https://plausible.io/api/v1';\r\n\r\nexport function createPlausibleClient(apiKey: string, selfHostedUrl?: string): PlausibleClient {\r\n const baseUrl = selfHostedUrl\r\n ? `${selfHostedUrl.replace(/\\/$/, '')}/api/v1`\r\n : PLAUSIBLE_BASE;\r\n\r\n async function request<T>(path: string): Promise<T> {\r\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Plausible API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async getTimeseries(siteId, period = '30d') {\r\n const raw = await request<{ results: PlausibleTimeseriesPoint[] }>(\r\n `/stats/timeseries?site_id=${encodeURIComponent(siteId)}&period=${period}`,\r\n );\r\n return raw.results ?? [];\r\n },\r\n\r\n async getBreakdown(siteId, property, period = '30d') {\r\n const raw = await request<{ results: PlausibleBreakdownEntry[] }>(\r\n `/stats/breakdown?site_id=${encodeURIComponent(siteId)}&property=${encodeURIComponent(property)}&period=${period}`,\r\n );\r\n return raw.results ?? [];\r\n },\r\n\r\n async getAggregate(siteId, period = '30d') {\r\n const raw = await request<{ results: PlausibleAggregateResult }>(\r\n `/stats/aggregate?site_id=${encodeURIComponent(siteId)}&period=${period}&metrics=visitors,pageviews,bounce_rate,visit_duration,events`,\r\n );\r\n return raw.results;\r\n },\r\n };\r\n}\r\n","// ============================================================================\r\n// @power-seo/tracking — Fathom API Client\r\n// ============================================================================\r\n\r\nimport type {\r\n FathomClient,\r\n FathomSite,\r\n FathomPageview,\r\n FathomReferrer,\r\n} from '../types.js';\r\n\r\nconst FATHOM_BASE = 'https://api.usefathom.com/v1';\r\n\r\nexport function createFathomClient(apiKey: string): FathomClient {\r\n async function request<T>(path: string): Promise<T> {\r\n const response = await globalThis.fetch(`${FATHOM_BASE}${path}`, {\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n throw new Error(`Fathom API error: ${response.status} ${text}`);\r\n }\r\n\r\n return (await response.json()) as T;\r\n }\r\n\r\n return {\r\n async getSites() {\r\n const raw = await request<{ data: FathomSite[] }>('/sites');\r\n return raw.data ?? [];\r\n },\r\n\r\n async getPageviews(siteId, period = '30d') {\r\n const raw = await request<{ data: FathomPageview[] }>(\r\n `/sites/${siteId}/pages?period=${period}`,\r\n );\r\n return raw.data ?? [];\r\n },\r\n\r\n async getReferrers(siteId, period = '30d') {\r\n const raw = await request<{ data: FathomReferrer[] }>(\r\n `/sites/${siteId}/referrers?period=${period}`,\r\n );\r\n return raw.data ?? [];\r\n },\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/consent.ts","../src/scripts/ga4.ts","../src/scripts/clarity.ts","../src/scripts/posthog.ts","../src/scripts/plausible.ts","../src/scripts/fathom.ts","../src/api/ga4.ts","../src/api/clarity.ts","../src/api/posthog.ts","../src/api/plausible.ts","../src/api/fathom.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// ============================================================================\n// @power-seo/tracking — Consent Manager\n// ============================================================================\n\nimport type { ConsentState, ConsentCategory, ConsentManager, ConsentChangeCallback } from './types.js';\n\nconst DEFAULT_STATE: ConsentState = {\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false,\n};\n\nexport function createConsentManager(\n initial?: Partial<ConsentState>,\n): ConsentManager {\n const state: ConsentState = {\n ...DEFAULT_STATE,\n ...initial,\n necessary: true, // necessary cannot be overridden\n };\n\n const listeners = new Set<ConsentChangeCallback>();\n\n function notify(): void {\n for (const cb of listeners) {\n cb({ ...state });\n }\n }\n\n return {\n getState() {\n return { ...state };\n },\n\n grant(category: ConsentCategory) {\n if (state[category]) return; // already granted\n state[category] = true;\n notify();\n },\n\n revoke(category: ConsentCategory) {\n if (category === 'necessary') return; // cannot revoke necessary\n if (!state[category]) return; // already revoked\n state[category] = false;\n notify();\n },\n\n grantAll() {\n state.analytics = true;\n state.marketing = true;\n state.preferences = true;\n notify();\n },\n\n revokeAll() {\n state.analytics = false;\n state.marketing = false;\n state.preferences = false;\n notify();\n },\n\n isGranted(category: ConsentCategory) {\n return state[category];\n },\n\n onChange(callback: ConsentChangeCallback) {\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n };\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — GA4 Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, GA4Config, ConsentState } from '../types.js';\n\nexport function buildGA4Script(config: GA4Config): ScriptConfig[] {\n const { measurementId, consentModeV2 = true, anonymizeIp = true, sendPageView = true } = config;\n\n const scripts: ScriptConfig[] = [];\n\n if (consentModeV2) {\n scripts.push({\n id: `ga4-consent-${measurementId}`,\n innerHTML: `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('consent','default',{'analytics_storage':'denied','ad_storage':'denied','ad_user_data':'denied','ad_personalization':'denied'});`,\n consentCategory: 'necessary',\n shouldLoad: () => true,\n });\n }\n\n scripts.push({\n id: `ga4-gtag-${measurementId}`,\n src: `https://www.googletagmanager.com/gtag/js?id=${measurementId}`,\n async: true,\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n });\n\n const configParts = [\n `window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());`,\n `gtag('config','${measurementId}',{${anonymizeIp ? \"'anonymize_ip':true,\" : ''}${!sendPageView ? \"'send_page_view':false\" : ''}});`,\n ];\n\n if (consentModeV2) {\n configParts.push(\n `gtag('consent','update',{'analytics_storage':'granted'});`,\n );\n }\n\n scripts.push({\n id: `ga4-config-${measurementId}`,\n innerHTML: configParts.join(''),\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n });\n\n return scripts;\n}\n","// ============================================================================\n// @power-seo/tracking — Clarity Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, ClarityConfig, ConsentState } from '../types.js';\n\nexport function buildClarityScript(config: ClarityConfig): ScriptConfig {\n const { projectId } = config;\n\n return {\n id: `clarity-${projectId}`,\n innerHTML: `(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,\"clarity\",\"script\",\"${projectId}\");`,\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — PostHog Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, PostHogConfig, ConsentState } from '../types.js';\n\nexport function buildPostHogScript(config: PostHogConfig): ScriptConfig {\n const { apiKey, host = 'https://us.i.posthog.com' } = config;\n\n return {\n id: `posthog-${apiKey}`,\n innerHTML: `!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(\".\");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement(\"script\")).type=\"text/javascript\",p.async=!0,p.src=s.api_host+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a=\"posthog\",u.people=u.people||[],u.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},u.people.toString=function(){return u.toString(1)+\".people (stub)\"},o=\"init capture register register_once register_for_session unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onFeatureFlags\".split(\" \"),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);posthog.init('${apiKey}',{api_host:'${host}',person_profiles:'identified_only'});`,\n consentCategory: 'analytics',\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Plausible Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, PlausibleConfig, ConsentState } from '../types.js';\n\nexport function buildPlausibleScript(config: PlausibleConfig): ScriptConfig {\n const { domain, selfHostedUrl } = config;\n const scriptSrc = selfHostedUrl\n ? `${selfHostedUrl.replace(/\\/$/, '')}/js/script.js`\n : 'https://plausible.io/js/script.js';\n\n return {\n id: `plausible-${domain}`,\n src: scriptSrc,\n defer: true,\n consentCategory: 'analytics',\n attributes: {\n 'data-domain': domain,\n },\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Fathom Script Builder\n// ============================================================================\n\nimport type { ScriptConfig, FathomConfig, ConsentState } from '../types.js';\n\nexport function buildFathomScript(config: FathomConfig): ScriptConfig {\n const { siteId } = config;\n\n return {\n id: `fathom-${siteId}`,\n src: 'https://cdn.usefathom.com/script.js',\n defer: true,\n consentCategory: 'analytics',\n attributes: {\n 'data-site': siteId,\n },\n shouldLoad: (consent: ConsentState) => consent.analytics,\n };\n}\n","// ============================================================================\n// @power-seo/tracking — GA4 API Client\n// ============================================================================\n\nimport type {\n GA4Client,\n GA4ReportResponse,\n GA4ReportRow,\n GA4Metadata,\n} from '../types.js';\n\nconst GA4_BASE = 'https://analyticsdata.googleapis.com/v1beta';\n\nexport function createGA4Client(accessToken: string): GA4Client {\n async function request<T>(url: string, body?: unknown): Promise<T> {\n const response = await globalThis.fetch(url, {\n method: body ? 'POST' : 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`GA4 API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async queryReport(propertyId, req) {\n const body = {\n dateRanges: [{ startDate: req.startDate, endDate: req.endDate }],\n metrics: req.metrics.map((m) => ({ name: m })),\n dimensions: (req.dimensions ?? []).map((d) => ({ name: d })),\n limit: req.limit ?? 1000,\n };\n\n const raw = await request<{\n rows?: Array<{\n dimensionValues?: Array<{ value: string }>;\n metricValues?: Array<{ value: string }>;\n }>;\n rowCount?: number;\n metricHeaders?: Array<{ name: string; type: string }>;\n }>(`${GA4_BASE}/properties/${propertyId}:runReport`, body);\n\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\n }));\n\n return {\n rows,\n rowCount: raw.rowCount ?? rows.length,\n metadata: raw.metricHeaders ? { metricHeaders: raw.metricHeaders } : undefined,\n } satisfies GA4ReportResponse;\n },\n\n async getRealtimeReport(propertyId, metrics) {\n const body = {\n metrics: metrics.map((m) => ({ name: m })),\n };\n\n const raw = await request<{\n rows?: Array<{\n dimensionValues?: Array<{ value: string }>;\n metricValues?: Array<{ value: string }>;\n }>;\n rowCount?: number;\n }>(`${GA4_BASE}/properties/${propertyId}:runRealtimeReport`, body);\n\n const rows: GA4ReportRow[] = (raw.rows ?? []).map((r) => ({\n dimensions: (r.dimensionValues ?? []).map((d) => d.value),\n metrics: (r.metricValues ?? []).map((m) => Number(m.value)),\n }));\n\n return { rows, rowCount: raw.rowCount ?? rows.length } satisfies GA4ReportResponse;\n },\n\n async getMetadata(propertyId) {\n const raw = await request<{\n dimensions?: Array<{ apiName: string; uiName: string; description: string }>;\n metrics?: Array<{ apiName: string; uiName: string; description: string; type: string }>;\n }>(`${GA4_BASE}/properties/${propertyId}/metadata`);\n\n return {\n dimensions: raw.dimensions ?? [],\n metrics: raw.metrics ?? [],\n } satisfies GA4Metadata;\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Clarity API Client\n// ============================================================================\n\nimport type {\n ClarityClient,\n ClarityProject,\n ClarityInsight,\n ClarityHeatmapData,\n} from '../types.js';\n\nconst CLARITY_BASE = 'https://www.clarity.ms/api/v1';\n\nexport function createClarityClient(apiKey: string): ClarityClient {\n async function request<T>(path: string): Promise<T> {\n const response = await globalThis.fetch(`${CLARITY_BASE}${path}`, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Clarity API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async getProjects() {\n return request<ClarityProject[]>('/projects');\n },\n\n async getInsights(projectId) {\n return request<ClarityInsight[]>(`/projects/${projectId}/insights`);\n },\n\n async getHeatmapData(projectId, url) {\n const encodedUrl = encodeURIComponent(url);\n return request<ClarityHeatmapData>(\n `/projects/${projectId}/heatmaps?url=${encodedUrl}`,\n );\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — PostHog API Client\n// ============================================================================\n\nimport type {\n PostHogClient,\n PostHogEvent,\n PostHogTrendResult,\n PostHogFunnelStep,\n} from '../types.js';\n\nconst POSTHOG_BASE = 'https://us.posthog.com/api';\n\nexport function createPostHogClient(apiKey: string, host?: string): PostHogClient {\n const baseUrl = host ? `${host.replace(/\\/$/, '')}/api` : POSTHOG_BASE;\n\n async function request<T>(path: string, body?: unknown): Promise<T> {\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\n method: body ? 'POST' : 'GET',\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`PostHog API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async queryEvents(projectId, event, limit = 100) {\n const raw = await request<{ results: PostHogEvent[] }>(\n `/projects/${projectId}/events?event=${encodeURIComponent(event)}&limit=${limit}`,\n );\n return raw.results ?? [];\n },\n\n async getTrends(projectId, events, days = 7) {\n const body = {\n events: events.map((e) => ({ id: e, type: 'events' })),\n date_from: `-${days}d`,\n };\n const raw = await request<{ result: PostHogTrendResult[] }>(\n `/projects/${projectId}/insights/trend`,\n body,\n );\n return raw.result ?? [];\n },\n\n async getFunnels(projectId, steps) {\n const body = {\n events: steps.map((s) => ({ id: s, type: 'events' })),\n };\n const raw = await request<{ result: PostHogFunnelStep[] }>(\n `/projects/${projectId}/insights/funnel`,\n body,\n );\n return raw.result ?? [];\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Plausible API Client\n// ============================================================================\n\nimport type {\n PlausibleClient,\n PlausibleTimeseriesPoint,\n PlausibleBreakdownEntry,\n PlausibleAggregateResult,\n} from '../types.js';\n\nconst PLAUSIBLE_BASE = 'https://plausible.io/api/v1';\n\nexport function createPlausibleClient(apiKey: string, selfHostedUrl?: string): PlausibleClient {\n const baseUrl = selfHostedUrl\n ? `${selfHostedUrl.replace(/\\/$/, '')}/api/v1`\n : PLAUSIBLE_BASE;\n\n async function request<T>(path: string): Promise<T> {\n const response = await globalThis.fetch(`${baseUrl}${path}`, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Plausible API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async getTimeseries(siteId, period = '30d') {\n const raw = await request<{ results: PlausibleTimeseriesPoint[] }>(\n `/stats/timeseries?site_id=${encodeURIComponent(siteId)}&period=${period}`,\n );\n return raw.results ?? [];\n },\n\n async getBreakdown(siteId, property, period = '30d') {\n const raw = await request<{ results: PlausibleBreakdownEntry[] }>(\n `/stats/breakdown?site_id=${encodeURIComponent(siteId)}&property=${encodeURIComponent(property)}&period=${period}`,\n );\n return raw.results ?? [];\n },\n\n async getAggregate(siteId, period = '30d') {\n const raw = await request<{ results: PlausibleAggregateResult }>(\n `/stats/aggregate?site_id=${encodeURIComponent(siteId)}&period=${period}&metrics=visitors,pageviews,bounce_rate,visit_duration,events`,\n );\n return raw.results;\n },\n };\n}\n","// ============================================================================\n// @power-seo/tracking — Fathom API Client\n// ============================================================================\n\nimport type {\n FathomClient,\n FathomSite,\n FathomPageview,\n FathomReferrer,\n} from '../types.js';\n\nconst FATHOM_BASE = 'https://api.usefathom.com/v1';\n\nexport function createFathomClient(apiKey: string): FathomClient {\n async function request<T>(path: string): Promise<T> {\n const response = await globalThis.fetch(`${FATHOM_BASE}${path}`, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Fathom API error: ${response.status} ${text}`);\n }\n\n return (await response.json()) as T;\n }\n\n return {\n async getSites() {\n const raw = await request<{ data: FathomSite[] }>('/sites');\n return raw.data ?? [];\n },\n\n async getPageviews(siteId, period = '30d') {\n const raw = await request<{ data: FathomPageview[] }>(\n `/sites/${siteId}/pages?period=${period}`,\n );\n return raw.data ?? [];\n },\n\n async getReferrers(siteId, period = '30d') {\n const raw = await request<{ data: FathomReferrer[] }>(\n `/sites/${siteId}/referrers?period=${period}`,\n );\n return raw.data ?? [];\n },\n };\n}\n"]}
|
package/dist/react.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react.ts"],"names":["createElement","useState","useEffect","useCallback"],"mappings":"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","file":"react.cjs","sourcesContent":["// ============================================================================\
|
|
1
|
+
{"version":3,"sources":["../src/react.ts"],"names":["createElement","useState","useEffect","useCallback"],"mappings":"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","file":"react.cjs","sourcesContent":["// ============================================================================\n// @power-seo/tracking — React Components\n// ============================================================================\n\nimport { createElement, useEffect, useState, useCallback } from 'react';\nimport type { ScriptConfig, ConsentManager, ConsentState } from './types.js';\n\n// --- AnalyticsScript ---\n\nexport interface AnalyticsScriptProps {\n scripts: ScriptConfig[];\n consent: ConsentState;\n}\n\nexport function AnalyticsScript({ scripts, consent }: AnalyticsScriptProps) {\n const loadable = scripts.filter((s) => s.shouldLoad(consent));\n\n if (loadable.length === 0) return null;\n\n return createElement(\n 'div',\n { 'data-testid': 'analytics-scripts' },\n ...loadable.map((script) =>\n script.src\n ? createElement('script', {\n key: script.id,\n src: script.src,\n async: script.async ?? false,\n defer: script.defer ?? false,\n ...Object.fromEntries(\n Object.entries(script.attributes ?? {}).map(([k, v]) => [k, v]),\n ),\n })\n : createElement('script', {\n key: script.id,\n dangerouslySetInnerHTML: { __html: script.innerHTML ?? '' },\n }),\n ),\n );\n}\n\n// --- ConsentBanner ---\n\nexport interface ConsentBannerProps {\n manager: ConsentManager;\n privacyPolicyUrl?: string;\n}\n\nexport function ConsentBanner({ manager, privacyPolicyUrl }: ConsentBannerProps) {\n const [state, setState] = useState<ConsentState>(manager.getState());\n const [visible, setVisible] = useState(!state.analytics);\n\n useEffect(() => {\n return manager.onChange((newState) => {\n setState(newState);\n });\n }, [manager]);\n\n const handleAcceptAll = useCallback(() => {\n manager.grantAll();\n setVisible(false);\n }, [manager]);\n\n const handleRejectAll = useCallback(() => {\n manager.revokeAll();\n setVisible(false);\n }, [manager]);\n\n if (!visible) return null;\n\n return createElement(\n 'div',\n {\n 'data-testid': 'consent-banner',\n role: 'dialog',\n 'aria-label': 'Cookie consent',\n style: {\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n padding: '16px 24px',\n backgroundColor: '#fff',\n borderTop: '1px solid #e0e0e0',\n boxShadow: '0 -2px 10px rgba(0,0,0,0.1)',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: '16px',\n fontFamily: 'system-ui, -apple-system, sans-serif',\n fontSize: '14px',\n zIndex: 9999,\n },\n },\n createElement(\n 'div',\n { style: { flex: 1 } },\n createElement(\n 'p',\n { style: { margin: 0, color: '#333' } },\n 'We use cookies to improve your experience and analyze site traffic.',\n privacyPolicyUrl\n ? createElement(\n 'a',\n {\n href: privacyPolicyUrl,\n style: { marginLeft: '4px', color: '#1a73e8', textDecoration: 'underline' },\n target: '_blank',\n rel: 'noopener noreferrer',\n },\n 'Privacy Policy',\n )\n : null,\n ),\n ),\n createElement(\n 'div',\n { style: { display: 'flex', gap: '8px', flexShrink: 0 } },\n createElement(\n 'button',\n {\n 'data-testid': 'consent-reject',\n onClick: handleRejectAll,\n style: {\n padding: '8px 16px',\n border: '1px solid #dadce0',\n borderRadius: '4px',\n backgroundColor: '#fff',\n cursor: 'pointer',\n fontSize: '13px',\n color: '#333',\n },\n },\n 'Reject All',\n ),\n createElement(\n 'button',\n {\n 'data-testid': 'consent-accept',\n onClick: handleAcceptAll,\n style: {\n padding: '8px 16px',\n border: 'none',\n borderRadius: '4px',\n backgroundColor: '#1a73e8',\n color: '#fff',\n cursor: 'pointer',\n fontSize: '13px',\n },\n },\n 'Accept All',\n ),\n ),\n );\n}\n"]}
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react.ts"],"names":[],"mappings":"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","file":"react.js","sourcesContent":["// ============================================================================\
|
|
1
|
+
{"version":3,"sources":["../src/react.ts"],"names":[],"mappings":"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","file":"react.js","sourcesContent":["// ============================================================================\n// @power-seo/tracking — React Components\n// ============================================================================\n\nimport { createElement, useEffect, useState, useCallback } from 'react';\nimport type { ScriptConfig, ConsentManager, ConsentState } from './types.js';\n\n// --- AnalyticsScript ---\n\nexport interface AnalyticsScriptProps {\n scripts: ScriptConfig[];\n consent: ConsentState;\n}\n\nexport function AnalyticsScript({ scripts, consent }: AnalyticsScriptProps) {\n const loadable = scripts.filter((s) => s.shouldLoad(consent));\n\n if (loadable.length === 0) return null;\n\n return createElement(\n 'div',\n { 'data-testid': 'analytics-scripts' },\n ...loadable.map((script) =>\n script.src\n ? createElement('script', {\n key: script.id,\n src: script.src,\n async: script.async ?? false,\n defer: script.defer ?? false,\n ...Object.fromEntries(\n Object.entries(script.attributes ?? {}).map(([k, v]) => [k, v]),\n ),\n })\n : createElement('script', {\n key: script.id,\n dangerouslySetInnerHTML: { __html: script.innerHTML ?? '' },\n }),\n ),\n );\n}\n\n// --- ConsentBanner ---\n\nexport interface ConsentBannerProps {\n manager: ConsentManager;\n privacyPolicyUrl?: string;\n}\n\nexport function ConsentBanner({ manager, privacyPolicyUrl }: ConsentBannerProps) {\n const [state, setState] = useState<ConsentState>(manager.getState());\n const [visible, setVisible] = useState(!state.analytics);\n\n useEffect(() => {\n return manager.onChange((newState) => {\n setState(newState);\n });\n }, [manager]);\n\n const handleAcceptAll = useCallback(() => {\n manager.grantAll();\n setVisible(false);\n }, [manager]);\n\n const handleRejectAll = useCallback(() => {\n manager.revokeAll();\n setVisible(false);\n }, [manager]);\n\n if (!visible) return null;\n\n return createElement(\n 'div',\n {\n 'data-testid': 'consent-banner',\n role: 'dialog',\n 'aria-label': 'Cookie consent',\n style: {\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n padding: '16px 24px',\n backgroundColor: '#fff',\n borderTop: '1px solid #e0e0e0',\n boxShadow: '0 -2px 10px rgba(0,0,0,0.1)',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: '16px',\n fontFamily: 'system-ui, -apple-system, sans-serif',\n fontSize: '14px',\n zIndex: 9999,\n },\n },\n createElement(\n 'div',\n { style: { flex: 1 } },\n createElement(\n 'p',\n { style: { margin: 0, color: '#333' } },\n 'We use cookies to improve your experience and analyze site traffic.',\n privacyPolicyUrl\n ? createElement(\n 'a',\n {\n href: privacyPolicyUrl,\n style: { marginLeft: '4px', color: '#1a73e8', textDecoration: 'underline' },\n target: '_blank',\n rel: 'noopener noreferrer',\n },\n 'Privacy Policy',\n )\n : null,\n ),\n ),\n createElement(\n 'div',\n { style: { display: 'flex', gap: '8px', flexShrink: 0 } },\n createElement(\n 'button',\n {\n 'data-testid': 'consent-reject',\n onClick: handleRejectAll,\n style: {\n padding: '8px 16px',\n border: '1px solid #dadce0',\n borderRadius: '4px',\n backgroundColor: '#fff',\n cursor: 'pointer',\n fontSize: '13px',\n color: '#333',\n },\n },\n 'Reject All',\n ),\n createElement(\n 'button',\n {\n 'data-testid': 'consent-accept',\n onClick: handleAcceptAll,\n style: {\n padding: '8px 16px',\n border: 'none',\n borderRadius: '4px',\n backgroundColor: '#1a73e8',\n color: '#fff',\n cursor: 'pointer',\n fontSize: '13px',\n },\n },\n 'Accept All',\n ),\n ),\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@power-seo/tracking",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Analytics platform integration with script builders, consent management, and React components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
9
10
|
"import": "./dist/index.js",
|
|
10
|
-
"require": "./dist/index.cjs"
|
|
11
|
-
"types": "./dist/index.d.ts"
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
12
|
},
|
|
13
13
|
"./react": {
|
|
14
|
+
"types": "./dist/react.d.ts",
|
|
14
15
|
"import": "./dist/react.js",
|
|
15
|
-
"require": "./dist/react.cjs"
|
|
16
|
-
"types": "./dist/react.d.ts"
|
|
16
|
+
"require": "./dist/react.cjs"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"main": "./dist/index.cjs",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"author": "CyberCraft Bangladesh <info@ccbd.dev>",
|
|
69
69
|
"repository": {
|
|
70
70
|
"type": "git",
|
|
71
|
-
"url": "git+https://github.com/
|
|
71
|
+
"url": "git+https://github.com/CyberCraftBD/power-seo.git",
|
|
72
72
|
"directory": "packages/tracking"
|
|
73
73
|
},
|
|
74
74
|
"publishConfig": {
|