@leancodepl/gtag 8.5.0 → 8.5.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 ADDED
@@ -0,0 +1,56 @@
1
+ # @leancodepl/gtag
2
+
3
+ Type-safe Google Tag Manager data layer integration.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @leancodepl/gtag
9
+ # or
10
+ yarn add @leancodepl/gtag
11
+ ```
12
+
13
+ ## API
14
+
15
+ ### `mkgtag()`
16
+
17
+ Creates a type-safe Google Tag Manager data layer push function.
18
+
19
+ **Returns:** Function that accepts data layer arguments and pushes to GTM
20
+
21
+ ## Usage Examples
22
+
23
+ ### Basic Event Tracking
24
+
25
+ ```typescript
26
+ import { mkgtag } from '@leancodepl/gtag';
27
+
28
+ const gtag = mkgtag<{ event: 'page_view'; page_title: string }>();
29
+
30
+ gtag({
31
+ event: 'page_view',
32
+ page_title: 'Home Page',
33
+ });
34
+ ```
35
+
36
+ ### Custom Events with Callbacks
37
+
38
+ ```typescript
39
+ import { mkgtag } from '@leancodepl/gtag';
40
+
41
+ interface CustomEvent {
42
+ event: 'button_click';
43
+ element_id: string;
44
+ }
45
+
46
+ const gtag = mkgtag<CustomEvent>();
47
+
48
+ gtag({
49
+ event: 'button_click',
50
+ element_id: 'signup-button',
51
+ eventCallback: (containerId) => {
52
+ console.log('Event sent to container:', containerId);
53
+ },
54
+ eventTimeout: 2000,
55
+ });
56
+ ```
@@ -0,0 +1 @@
1
+ exports._default = require('./index.cjs.js').default;
package/index.cjs.js ADDED
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Creates a type-safe Google Tag Manager data layer push function.
5
+ *
6
+ * Returns a function that pushes events to the GTM data layer with type safety.
7
+ * Handles cases where GTM is not initialized by safely checking for dataLayer existence.
8
+ *
9
+ * @template T - Event object type extending { event: string }
10
+ * @returns Function that accepts data layer arguments and pushes to GTM
11
+ * @example
12
+ * ```typescript
13
+ * const gtag = mkgtag<{ event: 'purchase'; value: number }>();
14
+ * gtag({ event: 'purchase', value: 29.99 });
15
+ * ```
16
+ */ function mkgtag() {
17
+ return (dataLayerArguments)=>{
18
+ var _window_dataLayer;
19
+ (_window_dataLayer = window.dataLayer) == null ? void 0 : _window_dataLayer.push(dataLayerArguments);
20
+ };
21
+ }
22
+
23
+ exports.mkgtag = mkgtag;
package/index.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './index.cjs.js';
2
+ export { _default as default } from './index.cjs.default.js';
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/index";
package/index.esm.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Creates a type-safe Google Tag Manager data layer push function.
3
+ *
4
+ * Returns a function that pushes events to the GTM data layer with type safety.
5
+ * Handles cases where GTM is not initialized by safely checking for dataLayer existence.
6
+ *
7
+ * @template T - Event object type extending { event: string }
8
+ * @returns Function that accepts data layer arguments and pushes to GTM
9
+ * @example
10
+ * ```typescript
11
+ * const gtag = mkgtag<{ event: 'purchase'; value: number }>();
12
+ * gtag({ event: 'purchase', value: 29.99 });
13
+ * ```
14
+ */ function mkgtag() {
15
+ return (dataLayerArguments)=>{
16
+ var _window_dataLayer;
17
+ (_window_dataLayer = window.dataLayer) == null ? void 0 : _window_dataLayer.push(dataLayerArguments);
18
+ };
19
+ }
20
+
21
+ export { mkgtag };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leancodepl/gtag",
3
- "version": "8.5.0",
3
+ "version": "8.5.1",
4
4
  "license": "Apache-2.0",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -32,11 +32,6 @@
32
32
  "name": "LeanCode",
33
33
  "url": "https://leancode.co"
34
34
  },
35
- "files": [
36
- "dist",
37
- "README.md",
38
- "CHANGELOG.md"
39
- ],
40
35
  "sideEffects": false,
41
36
  "exports": {
42
37
  "./package.json": "./package.json",
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { mkgtag } from "./lib";
@@ -0,0 +1,36 @@
1
+ type DataLayerArguments<T extends {
2
+ event: string;
3
+ }> = T & {
4
+ /**
5
+ * Function that will be called after all Tags have fired for the given event
6
+ *
7
+ * Will not be called when GTM is not initialized
8
+ */
9
+ eventCallback?: (containerId: string) => void;
10
+ eventTimeout?: number;
11
+ };
12
+ declare global {
13
+ interface Window {
14
+ dataLayer?: DataLayerArguments<{
15
+ event: string;
16
+ }>[];
17
+ }
18
+ }
19
+ /**
20
+ * Creates a type-safe Google Tag Manager data layer push function.
21
+ *
22
+ * Returns a function that pushes events to the GTM data layer with type safety.
23
+ * Handles cases where GTM is not initialized by safely checking for dataLayer existence.
24
+ *
25
+ * @template T - Event object type extending { event: string }
26
+ * @returns Function that accepts data layer arguments and pushes to GTM
27
+ * @example
28
+ * ```typescript
29
+ * const gtag = mkgtag<{ event: 'purchase'; value: number }>();
30
+ * gtag({ event: 'purchase', value: 29.99 });
31
+ * ```
32
+ */
33
+ export declare function mkgtag<T extends {
34
+ event: string;
35
+ }>(): (dataLayerArguments: DataLayerArguments<T>) => void;
36
+ export {};