@c15t/scripts 2.0.0-rc.1 → 2.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 +3 -3
- package/dist/databuddy.cjs +103 -48
- package/dist/databuddy.js +99 -47
- package/dist/e2e-test-utils.cjs +125 -0
- package/dist/e2e-test-utils.js +67 -0
- package/dist/engine/compile.cjs +126 -0
- package/dist/engine/compile.js +89 -0
- package/dist/engine/runtime.cjs +378 -0
- package/dist/engine/runtime.js +344 -0
- package/dist/google-tag-manager.cjs +78 -86
- package/dist/google-tag-manager.js +74 -79
- package/dist/google-tag.cjs +86 -37
- package/dist/google-tag.js +82 -36
- package/dist/linkedin-insights.cjs +51 -33
- package/dist/linkedin-insights.js +46 -31
- package/dist/meta-pixel.cjs +90 -28
- package/dist/meta-pixel.js +86 -27
- package/dist/microsoft-uet.cjs +90 -50
- package/dist/microsoft-uet.js +86 -49
- package/dist/posthog.cjs +100 -51
- package/dist/posthog.js +96 -50
- package/dist/resolve.cjs +67 -0
- package/dist/resolve.js +33 -0
- package/dist/tiktok-pixel.cjs +91 -29
- package/dist/tiktok-pixel.js +86 -27
- package/dist/types.cjs +47 -0
- package/dist/types.js +7 -0
- package/dist/x-pixel.cjs +48 -14
- package/dist/x-pixel.js +43 -12
- package/dist-types/databuddy.d.ts +144 -0
- package/dist-types/engine/compile.d.ts +3 -0
- package/dist-types/engine/runtime.d.ts +3 -0
- package/dist-types/google-tag-manager.d.ts +97 -0
- package/dist-types/google-tag.d.ts +96 -0
- package/dist-types/linkedin-insights.d.ts +79 -0
- package/{dist → dist-types}/meta-pixel.d.ts +61 -14
- package/dist-types/microsoft-uet.d.ts +94 -0
- package/dist-types/posthog.d.ts +112 -0
- package/dist-types/resolve.d.ts +9 -0
- package/dist-types/tiktok-pixel.d.ts +91 -0
- package/dist-types/types.d.ts +259 -0
- package/{dist → dist-types}/x-pixel.d.ts +38 -12
- package/package.json +9 -8
- package/dist/databuddy.d.ts +0 -104
- package/dist/databuddy.d.ts.map +0 -1
- package/dist/google-tag-manager.d.ts +0 -63
- package/dist/google-tag-manager.d.ts.map +0 -1
- package/dist/google-tag.d.ts +0 -38
- package/dist/google-tag.d.ts.map +0 -1
- package/dist/linkedin-insights.d.ts +0 -48
- package/dist/linkedin-insights.d.ts.map +0 -1
- package/dist/meta-pixel.d.ts.map +0 -1
- package/dist/microsoft-uet.d.ts +0 -40
- package/dist/microsoft-uet.d.ts.map +0 -1
- package/dist/posthog.d.ts +0 -54
- package/dist/posthog.d.ts.map +0 -1
- package/dist/tiktok-pixel.d.ts +0 -44
- package/dist/tiktok-pixel.d.ts.map +0 -1
- package/dist/x-pixel.d.ts.map +0 -1
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import type { AllConsentNames, HasCondition } from 'c15t';
|
|
2
|
+
export declare const VENDOR_MANIFEST_KIND = "c15t.vendor-manifest";
|
|
3
|
+
export declare const VENDOR_MANIFEST_SCHEMA_VERSION = 1;
|
|
4
|
+
export declare const vendorManifestContract: {
|
|
5
|
+
readonly kind: "c15t.vendor-manifest";
|
|
6
|
+
readonly schemaVersion: 1;
|
|
7
|
+
};
|
|
8
|
+
export interface ManifestContract {
|
|
9
|
+
kind: typeof VENDOR_MANIFEST_KIND;
|
|
10
|
+
schemaVersion: typeof VENDOR_MANIFEST_SCHEMA_VERSION;
|
|
11
|
+
}
|
|
12
|
+
type ManifestInterpolationToken = `{{${string}}}`;
|
|
13
|
+
export type ManifestCategoryCondition = HasCondition<AllConsentNames | ManifestInterpolationToken>;
|
|
14
|
+
export interface LoadScriptStep {
|
|
15
|
+
type: 'loadScript';
|
|
16
|
+
src: string;
|
|
17
|
+
async?: boolean;
|
|
18
|
+
defer?: boolean;
|
|
19
|
+
attributes?: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export interface SetGlobalStep {
|
|
22
|
+
type: 'setGlobal';
|
|
23
|
+
/** Global variable name (e.g. 'dataLayer') */
|
|
24
|
+
name: string;
|
|
25
|
+
/** Value to assign. Arrays and objects are recursively cloned on execution. */
|
|
26
|
+
value: unknown;
|
|
27
|
+
/**
|
|
28
|
+
* Only set the global if it's not already defined.
|
|
29
|
+
* Mirrors the common `window.x = window.x || value` pattern.
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
ifUndefined?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface DefineQueueFunctionStep {
|
|
35
|
+
type: 'defineQueueFunction';
|
|
36
|
+
/** Global function name (e.g. 'gtag') */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Global array name that receives queued calls (e.g. 'dataLayer') */
|
|
39
|
+
queue: string;
|
|
40
|
+
/**
|
|
41
|
+
* Only define the function if it is not already present.
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
44
|
+
ifUndefined?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Whether queued calls should store the `arguments` object or a copied array.
|
|
47
|
+
* @default 'arguments'
|
|
48
|
+
*/
|
|
49
|
+
pushStyle?: 'arguments' | 'array';
|
|
50
|
+
}
|
|
51
|
+
export interface DefineStubFunctionStep {
|
|
52
|
+
type: 'defineStubFunction';
|
|
53
|
+
/** Global function name (e.g. 'fbq', 'twq', 'lintrk') */
|
|
54
|
+
name: string;
|
|
55
|
+
/**
|
|
56
|
+
* Queue storage location:
|
|
57
|
+
* - `global` pushes into another global array (e.g. `dataLayer`)
|
|
58
|
+
* - `property` pushes into a property on the stub function itself (e.g. `fbq.queue`)
|
|
59
|
+
*/
|
|
60
|
+
queue: {
|
|
61
|
+
global: string;
|
|
62
|
+
property?: never;
|
|
63
|
+
} | {
|
|
64
|
+
global?: never;
|
|
65
|
+
property: string;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* If present, calls `stub[dispatchProperty](...args)` when available instead of queueing.
|
|
69
|
+
* Mirrors vendor APIs like Meta Pixel's `callMethod`.
|
|
70
|
+
*/
|
|
71
|
+
dispatchProperty?: string;
|
|
72
|
+
/**
|
|
73
|
+
* How queued values should be stored.
|
|
74
|
+
* - `'arguments'` => push the `arguments` object
|
|
75
|
+
* - `'array'` => push a copied array of arguments
|
|
76
|
+
*/
|
|
77
|
+
queueFormat?: 'arguments' | 'array';
|
|
78
|
+
/** Additional globals that should reference the same stub */
|
|
79
|
+
aliases?: string[];
|
|
80
|
+
/** Properties on the stub that should reference the stub itself (e.g. `push`) */
|
|
81
|
+
selfReferences?: string[];
|
|
82
|
+
/** Additional scalar/object properties assigned to the stub */
|
|
83
|
+
properties?: Record<string, unknown>;
|
|
84
|
+
/** Only define the stub if not already present. */
|
|
85
|
+
ifUndefined?: boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface CallGlobalStep {
|
|
88
|
+
type: 'callGlobal';
|
|
89
|
+
/** Global object name (e.g. 'posthog', 'fbq') */
|
|
90
|
+
global: string;
|
|
91
|
+
/** Method to call on the global. If omitted, the global itself is called as a function. */
|
|
92
|
+
method?: string;
|
|
93
|
+
/** Arguments to pass */
|
|
94
|
+
args?: unknown[];
|
|
95
|
+
}
|
|
96
|
+
export interface PushToQueueStep {
|
|
97
|
+
type: 'pushToQueue';
|
|
98
|
+
/** Global array name that receives queued values (e.g. 'dataLayer') */
|
|
99
|
+
queue: string;
|
|
100
|
+
/** Value to push onto the queue */
|
|
101
|
+
value: unknown;
|
|
102
|
+
}
|
|
103
|
+
export interface SetGlobalPathStep {
|
|
104
|
+
type: 'setGlobalPath';
|
|
105
|
+
/** Path segments under window (e.g. ['databuddy', 'options', 'disabled']) */
|
|
106
|
+
path: string[];
|
|
107
|
+
/** Value to assign at the target path */
|
|
108
|
+
value: unknown;
|
|
109
|
+
}
|
|
110
|
+
export interface DefineQueueMethodsStep {
|
|
111
|
+
type: 'defineQueueMethods';
|
|
112
|
+
/** Global array/object name that owns the queue methods */
|
|
113
|
+
target: string;
|
|
114
|
+
/** Method names to attach */
|
|
115
|
+
methods: string[];
|
|
116
|
+
/** Optional queue location. Defaults to the target itself. */
|
|
117
|
+
queue?: {
|
|
118
|
+
global: string;
|
|
119
|
+
property?: never;
|
|
120
|
+
} | {
|
|
121
|
+
global?: never;
|
|
122
|
+
property: string;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export type GlobalMethodBehavior = {
|
|
126
|
+
name: string;
|
|
127
|
+
behavior: 'noop';
|
|
128
|
+
} | {
|
|
129
|
+
name: string;
|
|
130
|
+
behavior: 'return';
|
|
131
|
+
value: unknown;
|
|
132
|
+
};
|
|
133
|
+
export interface DefineGlobalMethodsStep {
|
|
134
|
+
type: 'defineGlobalMethods';
|
|
135
|
+
/** Global object name to receive the methods */
|
|
136
|
+
target: string;
|
|
137
|
+
methods: Array<GlobalMethodBehavior>;
|
|
138
|
+
}
|
|
139
|
+
export interface ConstructGlobalStep {
|
|
140
|
+
type: 'constructGlobal';
|
|
141
|
+
/** Global constructor name (e.g. `UET`) */
|
|
142
|
+
constructor: string;
|
|
143
|
+
/** Global name to assign the constructed instance to */
|
|
144
|
+
assignTo: string;
|
|
145
|
+
/** Constructor args */
|
|
146
|
+
args?: unknown[];
|
|
147
|
+
/**
|
|
148
|
+
* Copies the current `window[assignTo]` value into the first constructor arg object
|
|
149
|
+
* under this property before constructing.
|
|
150
|
+
*/
|
|
151
|
+
copyAssignedValueToArgProperty?: string;
|
|
152
|
+
}
|
|
153
|
+
export type ManifestStep = LoadScriptStep | SetGlobalStep | DefineQueueFunctionStep | DefineStubFunctionStep | CallGlobalStep | PushToQueueStep | SetGlobalPathStep | DefineQueueMethodsStep | DefineGlobalMethodsStep | ConstructGlobalStep;
|
|
154
|
+
/**
|
|
155
|
+
* Consent signal type determines how consent state is communicated to the vendor.
|
|
156
|
+
*
|
|
157
|
+
* - `'gtag'` — Google Consent Mode pattern: calls `gtag('consent', 'default'|'update', state)`
|
|
158
|
+
*/
|
|
159
|
+
export type ConsentSignalType = 'gtag';
|
|
160
|
+
/**
|
|
161
|
+
* A declarative definition of a vendor integration.
|
|
162
|
+
*
|
|
163
|
+
* Manifests are the source definition that the scripts engine compiles into a
|
|
164
|
+
* serializable resolved manifest and then converts into a runtime `Script`.
|
|
165
|
+
*/
|
|
166
|
+
export interface VendorManifest extends ManifestContract {
|
|
167
|
+
/** Manifest contract identifier. */
|
|
168
|
+
kind: typeof VENDOR_MANIFEST_KIND;
|
|
169
|
+
/** Manifest schema version. */
|
|
170
|
+
schemaVersion: typeof VENDOR_MANIFEST_SCHEMA_VERSION;
|
|
171
|
+
/** Unique vendor identifier (used as Script.id) */
|
|
172
|
+
vendor: string;
|
|
173
|
+
/** Consent category or condition required to load this vendor */
|
|
174
|
+
category: ManifestCategoryCondition;
|
|
175
|
+
/** Load regardless of consent state (vendor manages its own consent internally) */
|
|
176
|
+
alwaysLoad?: boolean | string;
|
|
177
|
+
/** Keep script in DOM after consent revocation (vendor has a consent API) */
|
|
178
|
+
persistAfterConsentRevoked?: boolean | string;
|
|
179
|
+
/**
|
|
180
|
+
* Steps that must execute before default consent signaling.
|
|
181
|
+
*
|
|
182
|
+
* This is primarily used for integrations such as Google tags where a stub
|
|
183
|
+
* global must exist before calling the vendor's consent API.
|
|
184
|
+
*/
|
|
185
|
+
bootstrap?: ManifestStep[];
|
|
186
|
+
/**
|
|
187
|
+
* Steps to execute when installing the vendor.
|
|
188
|
+
*
|
|
189
|
+
* The resolver extracts the script source from these steps:
|
|
190
|
+
* - If a `loadScript` step exists, its `src` becomes `Script.src`
|
|
191
|
+
* - All non-`loadScript` steps run as part of `onBeforeLoad`
|
|
192
|
+
*/
|
|
193
|
+
install: ManifestStep[];
|
|
194
|
+
/** Steps to execute after the main script loads */
|
|
195
|
+
afterLoad?: ManifestStep[];
|
|
196
|
+
/** Steps to execute before load when the vendor has consent */
|
|
197
|
+
onBeforeLoadGranted?: ManifestStep[];
|
|
198
|
+
/** Steps to execute before load when the vendor does not have consent */
|
|
199
|
+
onBeforeLoadDenied?: ManifestStep[];
|
|
200
|
+
/** Steps to execute after load when the vendor has consent */
|
|
201
|
+
onLoadGranted?: ManifestStep[];
|
|
202
|
+
/** Steps to execute after load when the vendor does not have consent */
|
|
203
|
+
onLoadDenied?: ManifestStep[];
|
|
204
|
+
/** Steps to run on any consent state change */
|
|
205
|
+
onConsentChange?: ManifestStep[];
|
|
206
|
+
/** Steps to run when this vendor's category consent is granted */
|
|
207
|
+
onConsentGranted?: ManifestStep[];
|
|
208
|
+
/** Steps to run when this vendor's category consent is denied */
|
|
209
|
+
onConsentDenied?: ManifestStep[];
|
|
210
|
+
/**
|
|
211
|
+
* Maps c15t consent categories to vendor-specific consent type names.
|
|
212
|
+
*
|
|
213
|
+
* Used with `consentSignal` to translate c15t consent state into
|
|
214
|
+
* the vendor's consent API format.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```ts
|
|
218
|
+
* // Google Consent Mode v2 mapping
|
|
219
|
+
* consentMapping: {
|
|
220
|
+
* marketing: ['ad_storage', 'ad_user_data', 'ad_personalization'],
|
|
221
|
+
* measurement: ['analytics_storage'],
|
|
222
|
+
* functionality: ['functionality_storage'],
|
|
223
|
+
* necessary: ['security_storage'],
|
|
224
|
+
* experience: ['personalization_storage'],
|
|
225
|
+
* }
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
consentMapping?: Record<string, string[]>;
|
|
229
|
+
/** How to signal consent state to the vendor */
|
|
230
|
+
consentSignal?: ConsentSignalType;
|
|
231
|
+
/** Target global for consent signaling (defaults based on signal type) */
|
|
232
|
+
consentSignalTarget?: string;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Internal transport-ready manifest shape produced by the compile phase.
|
|
236
|
+
*
|
|
237
|
+
* Contains only serializable data and no runtime callbacks.
|
|
238
|
+
*/
|
|
239
|
+
export interface ResolvedManifest extends ManifestContract {
|
|
240
|
+
vendor: string;
|
|
241
|
+
category: HasCondition<AllConsentNames>;
|
|
242
|
+
alwaysLoad?: boolean;
|
|
243
|
+
persistAfterConsentRevoked?: boolean;
|
|
244
|
+
bootstrapSteps: ManifestStep[];
|
|
245
|
+
setupSteps: ManifestStep[];
|
|
246
|
+
loadScript?: LoadScriptStep;
|
|
247
|
+
afterLoadSteps: ManifestStep[];
|
|
248
|
+
onBeforeLoadGrantedSteps: ManifestStep[];
|
|
249
|
+
onBeforeLoadDeniedSteps: ManifestStep[];
|
|
250
|
+
onLoadGrantedSteps: ManifestStep[];
|
|
251
|
+
onLoadDeniedSteps: ManifestStep[];
|
|
252
|
+
onConsentChangeSteps: ManifestStep[];
|
|
253
|
+
onConsentGrantedSteps: ManifestStep[];
|
|
254
|
+
onConsentDeniedSteps: ManifestStep[];
|
|
255
|
+
consentMapping?: Record<string, string[]>;
|
|
256
|
+
consentSignal?: ConsentSignalType;
|
|
257
|
+
consentSignalTarget?: string;
|
|
258
|
+
}
|
|
259
|
+
export {};
|
|
@@ -84,25 +84,52 @@ declare global {
|
|
|
84
84
|
twq?: (event: string, ...args: unknown[]) => void;
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* X (Twitter) Pixel vendor manifest.
|
|
89
|
+
*
|
|
90
|
+
* Uses structured startup steps to load the X tracking pixel.
|
|
91
|
+
* No consent API — the script simply loads or doesn't based on consent.
|
|
92
|
+
*/
|
|
93
|
+
export declare const xPixelManifest: {
|
|
94
|
+
readonly vendor: "x-pixel";
|
|
95
|
+
readonly category: "marketing";
|
|
96
|
+
readonly bootstrap: [{
|
|
97
|
+
readonly type: "defineStubFunction";
|
|
98
|
+
readonly name: "twq";
|
|
99
|
+
readonly queue: {
|
|
100
|
+
readonly property: "queue";
|
|
101
|
+
};
|
|
102
|
+
readonly dispatchProperty: "exe";
|
|
103
|
+
readonly properties: {
|
|
104
|
+
readonly version: "1.1";
|
|
105
|
+
};
|
|
106
|
+
readonly ifUndefined: true;
|
|
107
|
+
}];
|
|
108
|
+
readonly install: [{
|
|
109
|
+
readonly type: "callGlobal";
|
|
110
|
+
readonly global: "twq";
|
|
111
|
+
readonly args: ["config", "{{pixelId}}"];
|
|
112
|
+
}, {
|
|
113
|
+
readonly type: "loadScript";
|
|
114
|
+
readonly src: "{{scriptSrc}}";
|
|
115
|
+
readonly async: true;
|
|
116
|
+
}];
|
|
117
|
+
readonly kind: "c15t.vendor-manifest";
|
|
118
|
+
readonly schemaVersion: 1;
|
|
119
|
+
};
|
|
87
120
|
export interface XPixelOptions {
|
|
88
121
|
/**
|
|
89
122
|
* Your X Pixel ID
|
|
90
123
|
* @example `123456789012345`
|
|
91
124
|
*/
|
|
92
125
|
pixelId: string;
|
|
93
|
-
/**
|
|
94
|
-
|
|
95
|
-
*
|
|
96
|
-
* Default values:
|
|
97
|
-
* - `id`: 'x-pixel'
|
|
98
|
-
* - `src`: `https://static.ads-twitter.com/uwt.js`
|
|
99
|
-
* - `category`: 'marketing'
|
|
100
|
-
*/
|
|
101
|
-
script?: Partial<Script>;
|
|
126
|
+
/** X Pixel loader URL. */
|
|
127
|
+
scriptSrc?: string;
|
|
102
128
|
}
|
|
103
129
|
/**
|
|
104
130
|
* Creates an X Pixel script.
|
|
105
|
-
* This script
|
|
131
|
+
* This script loads only when consent is granted.
|
|
132
|
+
* X Pixel does not expose a consent update API, so c15t treats it as a standard consent-gated loader.
|
|
106
133
|
*
|
|
107
134
|
* @param options - The options for the X Pixel script
|
|
108
135
|
* @returns The X Pixel script configuration
|
|
@@ -116,7 +143,7 @@ export interface XPixelOptions {
|
|
|
116
143
|
*
|
|
117
144
|
* @see {@link https://ads.twitter.com/help/article/x-pixel} X Pixel documentation
|
|
118
145
|
*/
|
|
119
|
-
export declare function xPixel({ pixelId,
|
|
146
|
+
export declare function xPixel({ pixelId, scriptSrc }: XPixelOptions): Script;
|
|
120
147
|
/**
|
|
121
148
|
* @param eventId - The event ID to track
|
|
122
149
|
* @example 'tw-xxxx-xxxx'
|
|
@@ -137,4 +164,3 @@ export declare function xPixel({ pixelId, script }: XPixelOptions): Script;
|
|
|
137
164
|
* @see {@link https://business.x.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites#event-types-and-parameters}
|
|
138
165
|
*/
|
|
139
166
|
export declare const xPixelEvent: (eventId: string, metadata?: XPixelEvent) => void | undefined;
|
|
140
|
-
//# sourceMappingURL=x-pixel.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c15t/scripts",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Pre-built scripts of popular tools for c15t's script loader.",
|
|
5
5
|
"homepage": "https://c15t.com/docs/frameworks/javascript/script-loader",
|
|
6
6
|
"repository": {
|
|
@@ -8,23 +8,24 @@
|
|
|
8
8
|
"url": "https://github.com/c15t/c15t.git",
|
|
9
9
|
"directory": "packages/scripts"
|
|
10
10
|
},
|
|
11
|
-
"license": "
|
|
11
|
+
"license": "Apache-2.0",
|
|
12
12
|
"sideEffects": false,
|
|
13
13
|
"type": "module",
|
|
14
14
|
"exports": {
|
|
15
15
|
"./*": {
|
|
16
|
-
"types": "./dist/*.d.ts",
|
|
16
|
+
"types": "./dist-types/*.d.ts",
|
|
17
17
|
"import": "./dist/*.js",
|
|
18
18
|
"require": "./dist/*.cjs"
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
|
-
"dist"
|
|
22
|
+
"dist",
|
|
23
|
+
"dist-types"
|
|
23
24
|
],
|
|
24
25
|
"scripts": {
|
|
25
|
-
"build": "rslib build",
|
|
26
|
+
"build": "rslib build && bun ../../scripts/normalize-dist-types.mjs",
|
|
26
27
|
"check-types": "tsc --noEmit",
|
|
27
|
-
"dev": "rslib build",
|
|
28
|
+
"dev": "sh -c 'rslib build --no-dts --no-clean && rslib build --watch --no-dts --no-clean'",
|
|
28
29
|
"fmt": "bun biome format --write . && bun biome check --formatter-enabled=false --linter-enabled=false --write",
|
|
29
30
|
"lint": "bun biome lint ./src",
|
|
30
31
|
"test": "vitest run --passWithNoTests",
|
|
@@ -36,9 +37,9 @@
|
|
|
36
37
|
"not op_mini all"
|
|
37
38
|
],
|
|
38
39
|
"devDependencies": {
|
|
39
|
-
"@c15t/typescript-config": "0.0.1
|
|
40
|
+
"@c15t/typescript-config": "0.0.1",
|
|
40
41
|
"@c15t/vitest-config": "1.0.0",
|
|
41
|
-
"c15t": "2.0.0
|
|
42
|
+
"c15t": "2.0.0"
|
|
42
43
|
},
|
|
43
44
|
"publishConfig": {
|
|
44
45
|
"access": "public"
|
package/dist/databuddy.d.ts
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import type { Script } from 'c15t';
|
|
2
|
-
declare global {
|
|
3
|
-
interface Window {
|
|
4
|
-
databuddy?: {
|
|
5
|
-
track: (eventName: string, properties?: Record<string, unknown>) => void;
|
|
6
|
-
screenView: (screenName?: string, properties?: Record<string, unknown>) => void;
|
|
7
|
-
clear: () => void;
|
|
8
|
-
flush: () => void;
|
|
9
|
-
setGlobalProperties: (properties: Record<string, unknown>) => void;
|
|
10
|
-
trackCustomEvent: (eventName: string, properties?: Record<string, unknown>) => void;
|
|
11
|
-
options: {
|
|
12
|
-
disabled: boolean;
|
|
13
|
-
[key: string]: unknown;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
databuddyConfig?: {
|
|
17
|
-
clientId?: string;
|
|
18
|
-
apiUrl?: string;
|
|
19
|
-
[key: string]: unknown;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export interface DatabuddyConsentOptions {
|
|
24
|
-
/**
|
|
25
|
-
* Your Databuddy client ID.
|
|
26
|
-
*/
|
|
27
|
-
clientId: string;
|
|
28
|
-
/**
|
|
29
|
-
* Your Databuddy API URL.
|
|
30
|
-
* @default 'https://basket.databuddy.cc'
|
|
31
|
-
*/
|
|
32
|
-
apiUrl?: string;
|
|
33
|
-
/**
|
|
34
|
-
* The Databuddy script URL.
|
|
35
|
-
* @default 'https://cdn.databuddy.cc/databuddy.js'
|
|
36
|
-
*/
|
|
37
|
-
scriptUrl?: string;
|
|
38
|
-
/**
|
|
39
|
-
* Additional configuration options for Databuddy.
|
|
40
|
-
* @example { trackScreenViews: true, trackOutgoingLinks: true }
|
|
41
|
-
*/
|
|
42
|
-
options?: Record<string, unknown>;
|
|
43
|
-
/**
|
|
44
|
-
* Override or extend the default script values.
|
|
45
|
-
*
|
|
46
|
-
* Default values:
|
|
47
|
-
* - `id`: 'databuddy'
|
|
48
|
-
* - `category`: 'measurement'
|
|
49
|
-
*/
|
|
50
|
-
script?: Partial<Script>;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Loads the Databuddy script and manages consent state through a comprehensive lifecycle.
|
|
54
|
-
*
|
|
55
|
-
* This function orchestrates consent-aware analytics by coordinating between c15t's consent
|
|
56
|
-
* state and Databuddy's tracking behavior. The consent management lifecycle works as follows:
|
|
57
|
-
*
|
|
58
|
-
* 1. **Before Script Load** (`onBeforeLoad`): Seeds `window.databuddyConfig` with the client
|
|
59
|
-
* configuration, including setting `disabled: !hasConsent` to ensure Databuddy initializes
|
|
60
|
-
* in the correct state. The Databuddy script reads this configuration object on initialization.
|
|
61
|
-
*
|
|
62
|
-
* 2. **On Script Load** (`onLoad`): After Databuddy has initialized, verifies that
|
|
63
|
-
* `window.databuddy.options.disabled` matches the current consent state by calling
|
|
64
|
-
* `handleConsentOpt()`.
|
|
65
|
-
*
|
|
66
|
-
* 3. **On Consent Change** (`onConsentChange`): Dynamically toggles `window.databuddy.options.disabled`
|
|
67
|
-
* to enable tracking when consent is granted or disable tracking when consent is revoked.
|
|
68
|
-
* This ensures real-time compliance with user preferences.
|
|
69
|
-
*
|
|
70
|
-
* The script always loads (`alwaysLoad: true`) but tracking is controlled via the `disabled` flag,
|
|
71
|
-
* allowing Databuddy to remain present in the DOM while respecting consent boundaries.
|
|
72
|
-
*
|
|
73
|
-
* @param options - Configuration for the Databuddy consent script
|
|
74
|
-
* @returns The Databuddy script configuration object for c15t's script loader
|
|
75
|
-
*
|
|
76
|
-
* @throws This function does not throw errors directly. However, network failures or script
|
|
77
|
-
* loading errors may cause the Databuddy script to fail silently without initializing
|
|
78
|
-
* `window.databuddy`. The lifecycle callbacks handle these cases gracefully by checking for
|
|
79
|
-
* the presence of `window.databuddy` before attempting to modify its state.
|
|
80
|
-
*
|
|
81
|
-
* @example
|
|
82
|
-
* ```ts
|
|
83
|
-
* import { configureConsentManager } from 'c15t';
|
|
84
|
-
* import { databuddy } from '@c15t/scripts/databuddy';
|
|
85
|
-
*
|
|
86
|
-
* configureConsentManager({
|
|
87
|
-
* scripts: [
|
|
88
|
-
* databuddy({
|
|
89
|
-
* clientId: 'db_1234567890abcdef',
|
|
90
|
-
* // scriptUrl: 'https://cdn.databuddy.cc/databuddy.js', // Optional, defaults to cdn.databuddy.cc
|
|
91
|
-
* // apiUrl: 'https://basket.databuddy.cc', // Optional, defaults to basket.databuddy.cc
|
|
92
|
-
* options: {
|
|
93
|
-
* trackScreenViews: true,
|
|
94
|
-
* trackOutgoingLinks: true,
|
|
95
|
-
* trackPerformance: true,
|
|
96
|
-
* samplingRate: 1.0,
|
|
97
|
-
* },
|
|
98
|
-
* }),
|
|
99
|
-
* ],
|
|
100
|
-
* });
|
|
101
|
-
* ```
|
|
102
|
-
*/
|
|
103
|
-
export declare function databuddy(options: DatabuddyConsentOptions): Script;
|
|
104
|
-
//# sourceMappingURL=databuddy.d.ts.map
|
package/dist/databuddy.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"databuddy.d.ts","sourceRoot":"","sources":["../src/databuddy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,SAAS,CAAC,EAAE;YACX,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;YACzE,UAAU,EAAE,CACX,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,IAAI,CAAC;YACV,KAAK,EAAE,MAAM,IAAI,CAAC;YAClB,KAAK,EAAE,MAAM,IAAI,CAAC;YAClB,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;YACnE,gBAAgB,EAAE,CACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,IAAI,CAAC;YACV,OAAO,EAAE;gBACR,QAAQ,EAAE,OAAO,CAAC;gBAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aACvB,CAAC;SACF,CAAC;QACF,eAAe,CAAC,EAAE;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACvB,CAAC;KACF;CACD;AAED,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAyDlE"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { ConsentState, Script } from 'c15t';
|
|
2
|
-
declare global {
|
|
3
|
-
interface Window {
|
|
4
|
-
dataLayer: unknown[];
|
|
5
|
-
gtag: (...args: unknown[]) => void;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
interface GTMConsentConfiguration {
|
|
9
|
-
ad_storage: 'granted' | 'denied';
|
|
10
|
-
ad_personalization: 'granted' | 'denied';
|
|
11
|
-
ad_user_data: 'granted' | 'denied';
|
|
12
|
-
analytics_storage: 'granted' | 'denied';
|
|
13
|
-
personalization_storage: 'granted' | 'denied';
|
|
14
|
-
functionality_storage: 'granted' | 'denied';
|
|
15
|
-
security_storage: 'granted' | 'denied';
|
|
16
|
-
}
|
|
17
|
-
export declare const DEFAULT_GTM_CONSENT_CONFIG: GTMConsentConfiguration;
|
|
18
|
-
/**
|
|
19
|
-
* Converts ConsentState to GTM consent configuration
|
|
20
|
-
*
|
|
21
|
-
* @param consentState - The application's consent state
|
|
22
|
-
* @returns GTM-compatible consent configuration
|
|
23
|
-
*
|
|
24
|
-
* @see {@link CONSENT_STATE_TO_GTM_MAPPING} for the mapping logic
|
|
25
|
-
*/
|
|
26
|
-
export declare function mapConsentStateToGTM(consentState: ConsentState): GTMConsentConfiguration;
|
|
27
|
-
export interface GoogleTagManagerOptions {
|
|
28
|
-
/**
|
|
29
|
-
* Your Google Tag Manager container ID. Begins with 'GTM-'.
|
|
30
|
-
* @example `GTM-1234XXX`
|
|
31
|
-
*/
|
|
32
|
-
id: string;
|
|
33
|
-
/**
|
|
34
|
-
* Update Event Name
|
|
35
|
-
* A custom event name used as a trigger to load your script once the consent has been updated.
|
|
36
|
-
*
|
|
37
|
-
* @default 'consent-update'
|
|
38
|
-
* @example 'consent-update'
|
|
39
|
-
*/
|
|
40
|
-
updateEventName?: string;
|
|
41
|
-
/**
|
|
42
|
-
* Override or extend the default script values.
|
|
43
|
-
*
|
|
44
|
-
* Default values:
|
|
45
|
-
* - `id`: 'google-tag-manager'
|
|
46
|
-
* - `src`: `https://www.googletagmanager.com/gtm.js?id=${id}`
|
|
47
|
-
* - `category`: 'necessary' (You control what scripts get loaded via Google Tag Manager)
|
|
48
|
-
* - `alwaysLoad`: true
|
|
49
|
-
* - `async`: true
|
|
50
|
-
*/
|
|
51
|
-
script?: Partial<Script>;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Creates a Google Tag Manager script.
|
|
55
|
-
* GTM can be used for managing the consent of other scripts via Google Tag Manager consent mode.
|
|
56
|
-
* We recommend using c15t's script loader instead so your script logic is centralised.
|
|
57
|
-
*
|
|
58
|
-
* @param options - The options for the Google Tag Manager script.
|
|
59
|
-
* @returns The Google Tag Manager script.
|
|
60
|
-
*/
|
|
61
|
-
export declare function googleTagManager({ id, script, updateEventName, }: GoogleTagManagerOptions): Script;
|
|
62
|
-
export {};
|
|
63
|
-
//# sourceMappingURL=google-tag-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google-tag-manager.d.ts","sourceRoot":"","sources":["../src/google-tag-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGlE,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,SAAS,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KACnC;CACD;AAGD,UAAU,uBAAuB;IAChC,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC,kBAAkB,EAAE,SAAS,GAAG,QAAQ,CAAC;IACzC,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC;IACxC,uBAAuB,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9C,qBAAqB,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5C,gBAAgB,EAAE,SAAS,GAAG,QAAQ,CAAC;CACvC;AAGD,eAAO,MAAM,0BAA0B,EAAE,uBAQ/B,CAAC;AAaX;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,YAAY,GACxB,uBAAuB,CAczB;AAED,MAAM,WAAW,uBAAuB;IACvC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAChC,EAAE,EACF,MAAM,EACN,eAAe,GACf,EAAE,uBAAuB,GAAG,MAAM,CA2DlC"}
|
package/dist/google-tag.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { AllConsentNames, Script } from 'c15t';
|
|
2
|
-
declare global {
|
|
3
|
-
interface Window {
|
|
4
|
-
dataLayer: unknown[];
|
|
5
|
-
gtag: (...args: unknown[]) => void;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
export interface GtagOptions {
|
|
9
|
-
/**
|
|
10
|
-
* Your gtag id
|
|
11
|
-
* @example `G-XXXXXXX`
|
|
12
|
-
*/
|
|
13
|
-
id: string;
|
|
14
|
-
/**
|
|
15
|
-
* The consent category to use for the gtag script. This is typically marketing (Ads & Floodlight) or measurement (Analytics)
|
|
16
|
-
* @example 'marketing'
|
|
17
|
-
*/
|
|
18
|
-
category: AllConsentNames;
|
|
19
|
-
/**
|
|
20
|
-
* Override or extend the default script values.
|
|
21
|
-
*
|
|
22
|
-
* Default values:
|
|
23
|
-
* - `id`: 'gtag'
|
|
24
|
-
* - `src`: `https://www.googletagmanager.com/gtag/js?id=${id}`
|
|
25
|
-
* - `async`: true
|
|
26
|
-
* - `alwaysLoad`: true
|
|
27
|
-
*/
|
|
28
|
-
script?: Partial<Omit<Script, 'category'>>;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Creates a Google Tag (gtag.js) script.
|
|
32
|
-
* Allows you to send data website to linked Google products like Analytics, Ads & Floodlight.
|
|
33
|
-
*
|
|
34
|
-
* @param options - The options for the gtag script.
|
|
35
|
-
* @returns The Google Tag Manager script.
|
|
36
|
-
*/
|
|
37
|
-
export declare function gtag({ id, script, category }: GtagOptions): Script;
|
|
38
|
-
//# sourceMappingURL=google-tag.d.ts.map
|
package/dist/google-tag.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google-tag.d.ts","sourceRoot":"","sources":["../src/google-tag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAQpD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,SAAS,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KACnC;CACD;AAED,MAAM,WAAW,WAAW;IAC3B;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,QAAQ,EAAE,eAAe,CAAC;IAE1B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,WAAW,GAAG,MAAM,CAsDlE"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type { Script } from 'c15t';
|
|
2
|
-
declare global {
|
|
3
|
-
interface Window {
|
|
4
|
-
lintrk: ((...args: unknown[]) => void) & {
|
|
5
|
-
q?: unknown[][];
|
|
6
|
-
};
|
|
7
|
-
_linkedin_partner_id?: string;
|
|
8
|
-
_linkedin_data_partner_ids?: string[];
|
|
9
|
-
ORIBILI?: {
|
|
10
|
-
_DEBUG?: {
|
|
11
|
-
disableScript?: () => void;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export interface LinkedInInsightsOptions {
|
|
17
|
-
/**
|
|
18
|
-
* Your LinkedIn Insights ID
|
|
19
|
-
* @example `123456789012345`
|
|
20
|
-
*/
|
|
21
|
-
id: string;
|
|
22
|
-
/**
|
|
23
|
-
* Override or extend the default script values.
|
|
24
|
-
*
|
|
25
|
-
* Default values:
|
|
26
|
-
* - `id`: 'linkedin-insights'
|
|
27
|
-
* - `src`: `https://snap.licdn.com/li.lms-analytics/insight.min.js`
|
|
28
|
-
* - `category`: 'marketing'
|
|
29
|
-
*/
|
|
30
|
-
script?: Partial<Script>;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* LinkedIn Insights Script
|
|
34
|
-
*
|
|
35
|
-
* @param options - The options for the LinkedIn Insights script
|
|
36
|
-
* @returns The LinkedIn Insights script configuration
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```ts
|
|
40
|
-
* const linkedinInsightsScript = linkedinInsights({
|
|
41
|
-
* id: '123456789012345',
|
|
42
|
-
* });
|
|
43
|
-
* ```
|
|
44
|
-
*
|
|
45
|
-
* @see {@link https://business.linkedin.com/marketing-solutions/ad-libraries/insights} LinkedIn Insights documentation
|
|
46
|
-
*/
|
|
47
|
-
export declare function linkedinInsights({ id, script, }: LinkedInInsightsOptions): Script;
|
|
48
|
-
//# sourceMappingURL=linkedin-insights.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"linkedin-insights.d.ts","sourceRoot":"","sources":["../src/linkedin-insights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG;YAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAA;SAAE,CAAC;QAC7D,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;QACtC,OAAO,CAAC,EAAE;YACT,MAAM,CAAC,EAAE;gBACR,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;aAC3B,CAAC;SACF,CAAC;KACF;CACD;AAED,MAAM,WAAW,uBAAuB;IACvC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,EAChC,EAAE,EACF,MAAM,GACN,EAAE,uBAAuB,GAAG,MAAM,CAsClC"}
|
package/dist/meta-pixel.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meta-pixel.d.ts","sourceRoot":"","sources":["../src/meta-pixel.ts"],"names":[],"mappings":"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"}
|