@artginzburg/next-ym 1.3.2 → 1.3.4

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.
@@ -2,6 +2,7 @@
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import Script from 'next/script';
4
4
  import { createContext, useMemo } from 'react';
5
+ import { METRICA_ALTERNATIVE_CDN_URL, METRICA_SCRIPT_URL } from '../constants/urls';
5
6
  import { useTrackRouteChange } from '../hooks/useTrackRouteChange';
6
7
  import { MetricaPixel } from './MetricaPixel';
7
8
  export const MetricaTagIDContext = createContext(null);
@@ -15,9 +16,8 @@ export const YandexMetricaProvider = ({ children, tagID, strategy = 'afterIntera
15
16
  console.warn('[next-yandex-metrica] Yandex.Metrica tag ID is not defined');
16
17
  return _jsx(_Fragment, { children: children });
17
18
  }
18
- const scriptSrc = shouldUseAlternativeCDN
19
- ? 'https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js'
20
- : 'https://mc.yandex.ru/metrika/tag.js';
19
+ const proxyPath = process.env.NEXT_PUBLIC_YM_PROXY_PATH;
20
+ const scriptSrc = proxyPath !== null && proxyPath !== void 0 ? proxyPath : (shouldUseAlternativeCDN ? METRICA_ALTERNATIVE_CDN_URL : METRICA_SCRIPT_URL);
21
21
  const sharedInit = `
22
22
  ym(${id}, "init", Object.assign({referrer: document.referrer, url: location.href}, ${JSON.stringify(initParameters !== null && initParameters !== void 0 ? initParameters : {})}));
23
23
  ${initEcommerce(initParameters === null || initParameters === void 0 ? void 0 : initParameters.ecommerce)}
@@ -1 +1 @@
1
- {"version":3,"file":"YandexMetricaProvider.js","sourceRoot":"","sources":["../../src/components/YandexMetricaProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"YandexMetricaProvider.js","sourceRoot":"","sources":["../../src/components/YandexMetricaProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** Path where the proxied Metrica script will be available. */
2
+ export declare const METRICA_PROXY_PATH = "/metrika-proxy.js";
3
+ /** Env variable set by withMetricaProxy so YandexMetricaProvider auto-detects the proxy. */
4
+ export declare const METRICA_PROXY_ENV = "NEXT_PUBLIC_YM_PROXY_PATH";
5
+ /**
6
+ * Wraps your Next.js config to proxy the Yandex Metrica script through your domain.
7
+ * This makes the script appear as first-party, bypassing Safari ITP blocking.
8
+ *
9
+ * Usage in next.config.ts:
10
+ * ```ts
11
+ * import { withMetricaProxy } from '@artginzburg/next-ym/config';
12
+ * export default withMetricaProxy(nextConfig);
13
+ * ```
14
+ *
15
+ * Then pass `customScriptSrc={METRICA_PROXY_PATH}` to `YandexMetricaProvider`,
16
+ * or import `METRICA_PROXY_PATH` from `@artginzburg/next-ym/config`.
17
+ */
18
+ export declare function withMetricaProxy<T extends Record<string, any>>(config: T): T;
package/dist/config.js ADDED
@@ -0,0 +1,44 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { METRICA_SCRIPT_URL } from './constants/urls.js';
11
+ /** Path where the proxied Metrica script will be available. */
12
+ export const METRICA_PROXY_PATH = '/metrika-proxy.js';
13
+ /** Env variable set by withMetricaProxy so YandexMetricaProvider auto-detects the proxy. */
14
+ export const METRICA_PROXY_ENV = 'NEXT_PUBLIC_YM_PROXY_PATH';
15
+ /**
16
+ * Wraps your Next.js config to proxy the Yandex Metrica script through your domain.
17
+ * This makes the script appear as first-party, bypassing Safari ITP blocking.
18
+ *
19
+ * Usage in next.config.ts:
20
+ * ```ts
21
+ * import { withMetricaProxy } from '@artginzburg/next-ym/config';
22
+ * export default withMetricaProxy(nextConfig);
23
+ * ```
24
+ *
25
+ * Then pass `customScriptSrc={METRICA_PROXY_PATH}` to `YandexMetricaProvider`,
26
+ * or import `METRICA_PROXY_PATH` from `@artginzburg/next-ym/config`.
27
+ */
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ export function withMetricaProxy(config) {
30
+ const originalRewrites = config.rewrites;
31
+ return Object.assign(Object.assign({}, config), { env: Object.assign(Object.assign({}, config.env), { [METRICA_PROXY_ENV]: METRICA_PROXY_PATH }), rewrites: () => __awaiter(this, void 0, void 0, function* () {
32
+ var _a;
33
+ const metricaRewrite = { source: METRICA_PROXY_PATH, destination: METRICA_SCRIPT_URL };
34
+ if (!originalRewrites) {
35
+ return [metricaRewrite];
36
+ }
37
+ const original = yield originalRewrites();
38
+ if (Array.isArray(original)) {
39
+ return [...original, metricaRewrite];
40
+ }
41
+ return Object.assign(Object.assign({}, original), { beforeFiles: [...((_a = original.beforeFiles) !== null && _a !== void 0 ? _a : []), metricaRewrite] });
42
+ }) });
43
+ }
44
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAEtD,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAAgC,MAAS;IACvE,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEzC,uCACK,MAAM,KACT,GAAG,kCACE,MAAM,CAAC,GAAG,KACb,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,KAEzC,QAAQ,EAAE,GAAS,EAAE;;YACnB,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;YAEvF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,CAAC,cAAc,CAAC,CAAC;YAC1B,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;YAE1C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,QAAQ,EAAE,cAAc,CAAC,CAAC;YACvC,CAAC;YAED,uCACK,QAAQ,KACX,WAAW,EAAE,CAAC,GAAG,CAAC,MAAA,QAAQ,CAAC,WAAW,mCAAI,EAAE,CAAC,EAAE,cAAc,CAAC,IAC9D;QACJ,CAAC,CAAA,IACD;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const METRICA_SCRIPT_URL = "https://mc.yandex.ru/metrika/tag.js";
2
+ export declare const METRICA_ALTERNATIVE_CDN_URL = "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js";
@@ -0,0 +1,3 @@
1
+ export const METRICA_SCRIPT_URL = 'https://mc.yandex.ru/metrika/tag.js';
2
+ export const METRICA_ALTERNATIVE_CDN_URL = 'https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js';
3
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/constants/urls.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AACxE,MAAM,CAAC,MAAM,2BAA2B,GACtC,0DAA0D,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,22 @@
1
1
  {
2
2
  "name": "@artginzburg/next-ym",
3
- "version": "1.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "Yandex Metrica integration for Next.js v14",
5
5
  "files": [
6
6
  "dist"
7
7
  ],
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./config": {
16
+ "types": "./dist/config.d.ts",
17
+ "default": "./dist/config.js"
18
+ }
19
+ },
10
20
  "repository": "artginzburg/next-ym",
11
21
  "funding": "https://github.com/artginzburg/next-ym?sponsor=1",
12
22
  "author": {