@yametrica/core 0.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/dist/client.d.ts +32 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -0
- package/dist/e-commerce.d.ts +72 -0
- package/dist/e-commerce.d.ts.map +1 -0
- package/dist/e-commerce.js +2 -0
- package/dist/e-commerce.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1 -0
- package/dist/methods.d.ts +20 -0
- package/dist/methods.d.ts.map +1 -0
- package/dist/script.d.ts +15 -0
- package/dist/script.d.ts.map +1 -0
- package/dist/script.js +7 -0
- package/dist/script.js.map +1 -0
- package/dist/types.d.ts +152 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/ym.js +2 -0
- package/dist/ym.js.map +1 -0
- package/package.json +19 -0
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Methods } from "./methods.js";
|
|
2
|
+
import { HitOptions, InitParameters, People, UserParameters, VisitParameters } from "./types.js";
|
|
3
|
+
|
|
4
|
+
//#region src/client.d.ts
|
|
5
|
+
type YandexMetricaClientParams = {
|
|
6
|
+
clientID: string; /** Enable console log on method calls @default false */
|
|
7
|
+
debug?: boolean; /** Enable sending data to Yandex Metrica @default false */
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
};
|
|
10
|
+
type YandexMetricaClient = {
|
|
11
|
+
[Methods.Init]: (options?: Partial<InitParameters>) => void;
|
|
12
|
+
[Methods.AddFileExtension]: (extensions?: string | string[]) => void;
|
|
13
|
+
[Methods.ExtLink]: <CTX>(url: string, options?: Omit<HitOptions<CTX>, "referer">) => void;
|
|
14
|
+
[Methods.File]: <CTX>(url: string, options?: HitOptions<CTX>) => void;
|
|
15
|
+
[Methods.FirstPartyParams]: (people: People) => void;
|
|
16
|
+
[Methods.FirstPartyParamsHashed]: (people: People) => void;
|
|
17
|
+
[Methods.GetClientID]: (cb: (clientID: number) => void) => void;
|
|
18
|
+
[Methods.Hit]: <CTX>(url?: string, options?: HitOptions<CTX>) => void;
|
|
19
|
+
[Methods.NotBounce]: <CTX>(options?: Pick<HitOptions<CTX>, "ctx" | "callback">) => void;
|
|
20
|
+
[Methods.Params]: (params?: VisitParameters) => void;
|
|
21
|
+
[Methods.ReachGoal]: <CTX>(target: string, params?: VisitParameters, callback?: (this: CTX) => void, ctx?: CTX) => void;
|
|
22
|
+
[Methods.SetUserID]: (userId: string) => void;
|
|
23
|
+
[Methods.UserParams]: (params?: UserParameters) => void;
|
|
24
|
+
};
|
|
25
|
+
declare function createYandexMetricaClient({
|
|
26
|
+
clientID,
|
|
27
|
+
debug,
|
|
28
|
+
enabled
|
|
29
|
+
}: YandexMetricaClientParams): YandexMetricaClient;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { YandexMetricaClient, YandexMetricaClientParams, createYandexMetricaClient };
|
|
32
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","names":[],"sources":["../src/client.ts"],"mappings":";;;;KAIY,yBAAA;EACR,QAAA,UADQ;EAGR,KAAA;EAEA,OAAA;AAAA;AAAA,KAGQ,mBAAA;EAAA,CACP,OAAA,CAAQ,IAAA,IAAQ,OAAA,GAAU,OAAA,CAAQ,cAAA;EAAA,CAClC,OAAA,CAAQ,gBAAA,IAAoB,UAAA;EAAA,CAC5B,OAAA,CAAQ,OAAA,SAAgB,GAAA,UAAa,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,GAAA;EAAA,CAC/D,OAAA,CAAQ,IAAA,SAAa,GAAA,UAAa,OAAA,GAAU,UAAA,CAAW,GAAA;EAAA,CACvD,OAAA,CAAQ,gBAAA,IAAoB,MAAA,EAAQ,MAAA;EAAA,CACpC,OAAA,CAAQ,sBAAA,IAA0B,MAAA,EAAQ,MAAA;EAAA,CAC1C,OAAA,CAAQ,WAAA,IAAe,EAAA,GAAK,QAAA;EAAA,CAC5B,OAAA,CAAQ,GAAA,SAAY,GAAA,WAAc,OAAA,GAAU,UAAA,CAAW,GAAA;EAAA,CACvD,OAAA,CAAQ,SAAA,SAAkB,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,GAAA;EAAA,CACpD,OAAA,CAAQ,MAAA,IAAU,MAAA,GAAS,eAAA;EAAA,CAC3B,OAAA,CAAQ,SAAA,SACL,MAAA,UACA,MAAA,GAAS,eAAA,EACT,QAAA,IAAY,IAAA,EAAM,GAAA,WAClB,GAAA,GAAM,GAAA;EAAA,CAET,OAAA,CAAQ,SAAA,IAAa,MAAA;EAAA,CACrB,OAAA,CAAQ,UAAA,IAAc,MAAA,GAAS,cAAA;AAAA;AAAA,iBAGpB,yBAAA,CAAA;EACZ,QAAA;EACA,KAAA;EACA;AAAA,GACD,yBAAA,GAA4B,mBAAA"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { Methods } from \"./methods\";\r\nimport type { HitOptions, InitParameters, People, UserParameters, VisitParameters } from \"./types\";\r\nimport { ym } from \"./ym\";\r\n\r\nexport type YandexMetricaClientParams = {\r\n clientID: string;\r\n /** Enable console log on method calls @default false */\r\n debug?: boolean;\r\n /** Enable sending data to Yandex Metrica @default false */\r\n enabled?: boolean;\r\n};\r\n\r\nexport type YandexMetricaClient = {\r\n [Methods.Init]: (options?: Partial<InitParameters>) => void;\r\n [Methods.AddFileExtension]: (extensions?: string | string[]) => void;\r\n [Methods.ExtLink]: <CTX>(url: string, options?: Omit<HitOptions<CTX>, \"referer\">) => void;\r\n [Methods.File]: <CTX>(url: string, options?: HitOptions<CTX>) => void;\r\n [Methods.FirstPartyParams]: (people: People) => void;\r\n [Methods.FirstPartyParamsHashed]: (people: People) => void;\r\n [Methods.GetClientID]: (cb: (clientID: number) => void) => void;\r\n [Methods.Hit]: <CTX>(url?: string, options?: HitOptions<CTX>) => void;\r\n [Methods.NotBounce]: <CTX>(options?: Pick<HitOptions<CTX>, \"ctx\" | \"callback\">) => void;\r\n [Methods.Params]: (params?: VisitParameters) => void;\r\n [Methods.ReachGoal]: <CTX>(\r\n target: string,\r\n params?: VisitParameters,\r\n callback?: (this: CTX) => void,\r\n ctx?: CTX,\r\n ) => void;\r\n [Methods.SetUserID]: (userId: string) => void;\r\n [Methods.UserParams]: (params?: UserParameters) => void;\r\n};\r\n\r\nexport function createYandexMetricaClient({\r\n clientID,\r\n debug = false,\r\n enabled = false,\r\n}: YandexMetricaClientParams): YandexMetricaClient {\r\n return new Proxy({} as YandexMetricaClient, {\r\n get: (_, method: Methods) => {\r\n return (...args: unknown[]) => {\r\n if (debug) console.log(`[yandex-metrica] (${clientID}) ${method}:`, ...args);\r\n\r\n if (enabled) ym(clientID, method, ...args);\r\n };\r\n },\r\n });\r\n}\r\n"],"mappings":"6BAiCA,SAAgB,EAA0B,CACtC,WACA,QAAQ,GACR,UAAU,IACqC,CAC/C,OAAO,IAAI,MAAM,EAAE,CAAyB,CACxC,KAAM,EAAG,KACG,GAAG,IAAoB,CACvB,GAAO,QAAQ,IAAI,qBAAqB,EAAS,IAAI,EAAO,GAAI,GAAG,EAAK,CAExE,GAAS,EAAG,EAAU,EAAQ,GAAG,EAAK,EAGrD,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ActionField, CurrencyCode, ProductField, PromoField } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/e-commerce.d.ts
|
|
4
|
+
type YandexECommerceParams = {
|
|
5
|
+
/** Enable console log on method calls @default false */debug?: boolean; /** Enable sending data to Yandex Metrica @default false */
|
|
6
|
+
enabled?: boolean; /** @default "RUB" */
|
|
7
|
+
defaultCurrencyCode?: CurrencyCode;
|
|
8
|
+
};
|
|
9
|
+
declare function createYandexECommerce(params: YandexECommerceParams): {
|
|
10
|
+
impressions: ({
|
|
11
|
+
products,
|
|
12
|
+
currencyCode
|
|
13
|
+
}: {
|
|
14
|
+
products: ProductField[];
|
|
15
|
+
currencyCode?: CurrencyCode;
|
|
16
|
+
}) => void;
|
|
17
|
+
click: ({
|
|
18
|
+
products,
|
|
19
|
+
currencyCode
|
|
20
|
+
}: {
|
|
21
|
+
products: ProductField[];
|
|
22
|
+
currencyCode?: CurrencyCode;
|
|
23
|
+
}) => void;
|
|
24
|
+
detail: ({
|
|
25
|
+
products,
|
|
26
|
+
currencyCode
|
|
27
|
+
}: {
|
|
28
|
+
products: ProductField[];
|
|
29
|
+
currencyCode?: CurrencyCode;
|
|
30
|
+
}) => void;
|
|
31
|
+
add: ({
|
|
32
|
+
products,
|
|
33
|
+
currencyCode
|
|
34
|
+
}: {
|
|
35
|
+
products: ProductField[];
|
|
36
|
+
currencyCode?: CurrencyCode;
|
|
37
|
+
}) => void;
|
|
38
|
+
remove: ({
|
|
39
|
+
products,
|
|
40
|
+
currencyCode
|
|
41
|
+
}: {
|
|
42
|
+
products: ProductField[];
|
|
43
|
+
currencyCode?: CurrencyCode;
|
|
44
|
+
}) => void;
|
|
45
|
+
purchase: ({
|
|
46
|
+
products,
|
|
47
|
+
actionField,
|
|
48
|
+
currencyCode
|
|
49
|
+
}: {
|
|
50
|
+
actionField: ActionField;
|
|
51
|
+
products: ProductField[];
|
|
52
|
+
currencyCode?: CurrencyCode;
|
|
53
|
+
}) => void;
|
|
54
|
+
promoView: ({
|
|
55
|
+
promotions,
|
|
56
|
+
currencyCode
|
|
57
|
+
}: {
|
|
58
|
+
promotions: PromoField[];
|
|
59
|
+
currencyCode?: CurrencyCode;
|
|
60
|
+
}) => void;
|
|
61
|
+
promoClick: ({
|
|
62
|
+
promotions,
|
|
63
|
+
currencyCode
|
|
64
|
+
}: {
|
|
65
|
+
promotions: PromoField[];
|
|
66
|
+
currencyCode?: CurrencyCode;
|
|
67
|
+
}) => void;
|
|
68
|
+
};
|
|
69
|
+
type YandexECommerce = ReturnType<typeof createYandexECommerce>;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { YandexECommerce, YandexECommerceParams, createYandexECommerce };
|
|
72
|
+
//# sourceMappingURL=e-commerce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e-commerce.d.ts","names":[],"sources":["../src/e-commerce.ts"],"mappings":";;;KASY,qBAAA;0DAER,KAAA,YAF6B;EAI7B,OAAA,YAEkC;EAAlC,mBAAA,GAAsB,YAAA;AAAA;AAAA,iBAGV,qBAAA,CAAsB,MAAA,EAAQ,qBAAA;;;;;IAgBtC,QAAA,EAAU,YAAA;IACV,YAAA,GAAe,YAAA;EAAA;;;;;IAmBf,QAAA,EAAU,YAAA;IACV,YAAA,GAAe,YAAA;EAAA;;;;;IAmBf,QAAA,EAAU,YAAA;IACV,YAAA,GAAe,YAAA;EAAA;;;;;IAkBf,QAAA,EAAU,YAAA;IACV,YAAA,GAAe,YAAA;EAAA;;;;;IAkBf,QAAA,EAAU,YAAA;IACV,YAAA,GAAe,YAAA;EAAA;;;;;;IAmBf,WAAA,EAAa,WAAA;IACb,QAAA,EAAU,YAAA;IACV,YAAA,GAAe,YAAA;EAAA;;;;;IAmBf,UAAA,EAAY,UAAA;IACZ,YAAA,GAAe,YAAA;EAAA;;;;;IAkBf,UAAA,EAAY,UAAA;IACZ,YAAA,GAAe,YAAA;EAAA;AAAA;AAAA,KA2BX,eAAA,GAAkB,UAAA,QAAkB,qBAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){let t=e.defaultCurrencyCode??`RUB`;function n(t,n){if(!window.dataLayer)return console.error("[yandex-metrica] `ecommerce` must be set to `true` in your metrica client options");e.debug&&console.log(`[yandex-metrica] ecommerce ${n??`push`}`,t),e.enabled&&window.dataLayer.push(t)}function r({products:e,currencyCode:r=t}){n({ecommerce:{currencyCode:r,impressions:{products:e}}},`impressions`)}function i({products:e,currencyCode:r=t}){n({ecommerce:{currencyCode:r,click:{products:e}}},`click`)}function a({products:e,currencyCode:r=t}){n({ecommerce:{currencyCode:r,detail:{products:e}}},`detail`)}function o({products:e,currencyCode:r=t}){n({ecommerce:{currencyCode:r,add:{products:e}}},`add`)}function s({products:e,currencyCode:r=t}){n({ecommerce:{currencyCode:r,remove:{products:e}}},`remove`)}function c({products:e,actionField:r,currencyCode:i=t}){n({ecommerce:{currencyCode:i,purchase:{actionField:r,products:e}}},`purchase`)}function l({promotions:e,currencyCode:r=t}){n({ecommerce:{currencyCode:r,promoView:{promotions:e}}},`promoView`)}function u({promotions:e,currencyCode:r=t}){n({ecommerce:{currencyCode:r,promoClick:{promotions:e}}},`promoClick`)}return{impressions:r,click:i,detail:a,add:o,remove:s,purchase:c,promoView:l,promoClick:u}}export{e as createYandexECommerce};
|
|
2
|
+
//# sourceMappingURL=e-commerce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e-commerce.js","names":[],"sources":["../src/e-commerce.ts"],"sourcesContent":["import type {\n ActionField,\n CurrencyCode,\n ECommerceActionType,\n ECommerceContainer,\n ProductField,\n PromoField,\n} from \"./types\";\n\nexport type YandexECommerceParams = {\n /** Enable console log on method calls @default false */\n debug?: boolean;\n /** Enable sending data to Yandex Metrica @default false */\n enabled?: boolean;\n /** @default \"RUB\" */\n defaultCurrencyCode?: CurrencyCode;\n};\n\nexport function createYandexECommerce(params: YandexECommerceParams) {\n const defaultCurrencyCode = params.defaultCurrencyCode ?? \"RUB\";\n\n function push(container: ECommerceContainer, action?: ECommerceActionType) {\n if (!window.dataLayer)\n return console.error(\"[yandex-metrica] `ecommerce` must be set to `true` in your metrica client options\");\n\n if (params.debug) console.log(`[yandex-metrica] ecommerce ${action ?? \"push\"}`, container);\n\n if (params.enabled) window.dataLayer.push(container);\n }\n\n function impressions({\n products,\n currencyCode = defaultCurrencyCode,\n }: {\n products: ProductField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n impressions: {\n products,\n },\n },\n },\n \"impressions\",\n );\n }\n\n function click({\n products,\n currencyCode = defaultCurrencyCode,\n }: {\n products: ProductField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n click: {\n products,\n },\n },\n },\n \"click\",\n );\n }\n\n function detail({\n products,\n currencyCode = defaultCurrencyCode,\n }: {\n products: ProductField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n detail: {\n products,\n },\n },\n },\n \"detail\",\n );\n }\n function add({\n products,\n currencyCode = defaultCurrencyCode,\n }: {\n products: ProductField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n add: {\n products,\n },\n },\n },\n \"add\",\n );\n }\n function remove({\n products,\n currencyCode = defaultCurrencyCode,\n }: {\n products: ProductField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n remove: {\n products,\n },\n },\n },\n \"remove\",\n );\n }\n function purchase({\n products,\n actionField,\n currencyCode = defaultCurrencyCode,\n }: {\n actionField: ActionField;\n products: ProductField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n purchase: {\n actionField,\n products,\n },\n },\n },\n \"purchase\",\n );\n }\n function promoView({\n promotions,\n currencyCode = defaultCurrencyCode,\n }: {\n promotions: PromoField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n promoView: {\n promotions,\n },\n },\n },\n \"promoView\",\n );\n }\n function promoClick({\n promotions,\n currencyCode = defaultCurrencyCode,\n }: {\n promotions: PromoField[];\n currencyCode?: CurrencyCode;\n }) {\n push(\n {\n ecommerce: {\n currencyCode,\n promoClick: {\n promotions,\n },\n },\n },\n \"promoClick\",\n );\n }\n\n return {\n impressions,\n click,\n detail,\n add,\n remove,\n purchase,\n promoView,\n promoClick,\n } satisfies Record<ECommerceActionType, unknown>;\n}\n\nexport type YandexECommerce = ReturnType<typeof createYandexECommerce>;\n"],"mappings":"AAkBA,SAAgB,EAAsB,EAA+B,CACjE,IAAM,EAAsB,EAAO,qBAAuB,MAE1D,SAAS,EAAK,EAA+B,EAA8B,CACvE,GAAI,CAAC,OAAO,UACR,OAAO,QAAQ,MAAM,oFAAoF,CAEzG,EAAO,OAAO,QAAQ,IAAI,8BAA8B,GAAU,SAAU,EAAU,CAEtF,EAAO,SAAS,OAAO,UAAU,KAAK,EAAU,CAGxD,SAAS,EAAY,CACjB,WACA,eAAe,GAIhB,CACC,EACI,CACI,UAAW,CACP,eACA,YAAa,CACT,WACH,CACJ,CACJ,CACD,cACH,CAGL,SAAS,EAAM,CACX,WACA,eAAe,GAIhB,CACC,EACI,CACI,UAAW,CACP,eACA,MAAO,CACH,WACH,CACJ,CACJ,CACD,QACH,CAGL,SAAS,EAAO,CACZ,WACA,eAAe,GAIhB,CACC,EACI,CACI,UAAW,CACP,eACA,OAAQ,CACJ,WACH,CACJ,CACJ,CACD,SACH,CAEL,SAAS,EAAI,CACT,WACA,eAAe,GAIhB,CACC,EACI,CACI,UAAW,CACP,eACA,IAAK,CACD,WACH,CACJ,CACJ,CACD,MACH,CAEL,SAAS,EAAO,CACZ,WACA,eAAe,GAIhB,CACC,EACI,CACI,UAAW,CACP,eACA,OAAQ,CACJ,WACH,CACJ,CACJ,CACD,SACH,CAEL,SAAS,EAAS,CACd,WACA,cACA,eAAe,GAKhB,CACC,EACI,CACI,UAAW,CACP,eACA,SAAU,CACN,cACA,WACH,CACJ,CACJ,CACD,WACH,CAEL,SAAS,EAAU,CACf,aACA,eAAe,GAIhB,CACC,EACI,CACI,UAAW,CACP,eACA,UAAW,CACP,aACH,CACJ,CACJ,CACD,YACH,CAEL,SAAS,EAAW,CAChB,aACA,eAAe,GAIhB,CACC,EACI,CACI,UAAW,CACP,eACA,WAAY,CACR,aACH,CACJ,CACJ,CACD,aACH,CAGL,MAAO,CACH,cACA,QACA,SACA,MACA,SACA,WACA,YACA,aACH"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ActionField, CurrencyCode, ECommerceActionData, ECommerceActionType, ECommerceActions, ECommerceActionsData, ECommerceContainer, HitOptions, InitParameters, People, ProductField, PromoField, UserParameters, VisitParameters } from "./types.js";
|
|
2
|
+
import { YandexMetricaClient, YandexMetricaClientParams, createYandexMetricaClient } from "./client.js";
|
|
3
|
+
import { YandexECommerce, YandexECommerceParams, createYandexECommerce } from "./e-commerce.js";
|
|
4
|
+
import { createYandexMetricaNoscript, createYandexMetricaScript } from "./script.js";
|
|
5
|
+
export { ActionField, CurrencyCode, ECommerceActionData, ECommerceActionType, ECommerceActions, ECommerceActionsData, ECommerceContainer, HitOptions, InitParameters, People, ProductField, PromoField, UserParameters, VisitParameters, YandexECommerce, YandexECommerceParams, YandexMetricaClient, YandexMetricaClientParams, createYandexECommerce, createYandexMetricaClient, createYandexMetricaNoscript, createYandexMetricaScript };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createYandexMetricaClient as e}from"./client.js";import{createYandexECommerce as t}from"./e-commerce.js";import{createYandexMetricaNoscript as n,createYandexMetricaScript as r}from"./script.js";export{t as createYandexECommerce,e as createYandexMetricaClient,n as createYandexMetricaNoscript,r as createYandexMetricaScript};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/methods.d.ts
|
|
2
|
+
declare const Methods: {
|
|
3
|
+
readonly Init: "init";
|
|
4
|
+
readonly AddFileExtension: "addFileExtension";
|
|
5
|
+
readonly ExtLink: "extLink";
|
|
6
|
+
readonly File: "file";
|
|
7
|
+
readonly FirstPartyParams: "firstPartyParams";
|
|
8
|
+
readonly FirstPartyParamsHashed: "firstPartyParamsHashed";
|
|
9
|
+
readonly GetClientID: "getClientID";
|
|
10
|
+
readonly Hit: "hit";
|
|
11
|
+
readonly NotBounce: "notBounce";
|
|
12
|
+
readonly Params: "params";
|
|
13
|
+
readonly ReachGoal: "reachGoal";
|
|
14
|
+
readonly SetUserID: "setUserID";
|
|
15
|
+
readonly UserParams: "userParams";
|
|
16
|
+
};
|
|
17
|
+
type Methods = (typeof Methods)[keyof typeof Methods];
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Methods };
|
|
20
|
+
//# sourceMappingURL=methods.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methods.d.ts","names":[],"sources":["../src/methods.ts"],"mappings":";cAAa,OAAA;EAAA;;;;;;;;;;;;;;KAgBD,OAAA,WAAkB,OAAA,eAAsB,OAAA"}
|
package/dist/script.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/script.d.ts
|
|
2
|
+
/** Create string for Yandex Metrica script tag
|
|
3
|
+
*
|
|
4
|
+
* Default src is https://mc.yandex.ru/metrika/tag.js
|
|
5
|
+
*
|
|
6
|
+
* You could also use a CDN version: https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js
|
|
7
|
+
*/
|
|
8
|
+
declare function createYandexMetricaScript(src?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Create inner html string for Yandex Metrica noscript tag
|
|
11
|
+
*/
|
|
12
|
+
declare function createYandexMetricaNoscript(clientID: string): string;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { createYandexMetricaNoscript, createYandexMetricaScript };
|
|
15
|
+
//# sourceMappingURL=script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.d.ts","names":[],"sources":["../src/script.ts"],"mappings":";;AAMA;;;;;iBAAgB,yBAAA,CAA0B,GAAA;;;;iBAY1B,2BAAA,CAA4B,QAAA"}
|
package/dist/script.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
function e(e=`https://mc.yandex.ru/metrika/tag.js`){return`
|
|
2
|
+
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
|
3
|
+
m[i].l=1*new Date();
|
|
4
|
+
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
|
5
|
+
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
|
6
|
+
(window, document, "script", "${e}", "ym");`}function t(e){return`<div><img src="https://mc.yandex.ru/watch/${e}" style="position:absolute; left:-9999px;" alt="" /></div>`}export{t as createYandexMetricaNoscript,e as createYandexMetricaScript};
|
|
7
|
+
//# sourceMappingURL=script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.js","names":[],"sources":["../src/script.ts"],"sourcesContent":["/** Create string for Yandex Metrica script tag\n *\n * Default src is https://mc.yandex.ru/metrika/tag.js\n *\n * You could also use a CDN version: https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js\n */\nexport function createYandexMetricaScript(src: string = \"https://mc.yandex.ru/metrika/tag.js\") {\n return `\n(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};\nm[i].l=1*new Date();\nfor (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}\nk=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})\n(window, document, \"script\", \"${src}\", \"ym\");`;\n}\n\n/**\n * Create inner html string for Yandex Metrica noscript tag\n */\nexport function createYandexMetricaNoscript(clientID: string) {\n return `<div><img src=\"https://mc.yandex.ru/watch/${clientID}\" style=\"position:absolute; left:-9999px;\" alt=\"\" /></div>`;\n}\n"],"mappings":"AAMA,SAAgB,EAA0B,EAAc,sCAAuC,CAC3F,MAAO;;;;;gCAKqB,EAAI,WAMpC,SAAgB,EAA4B,EAAkB,CAC1D,MAAO,6CAA6C,EAAS"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
//#region src/types.d.ts
|
|
2
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: Who knows the spec? */
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
ym: ((...args: any[]) => void) & {
|
|
6
|
+
a: any[];
|
|
7
|
+
l: number;
|
|
8
|
+
};
|
|
9
|
+
dataLayer: any[] | undefined;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
interface VisitParameters {
|
|
13
|
+
order_price?: number;
|
|
14
|
+
currency?: string;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
interface UserParameters {
|
|
18
|
+
UserID?: number;
|
|
19
|
+
[key: string]: any;
|
|
20
|
+
}
|
|
21
|
+
/** @see https://yandex.ru/support/metrica/code/counter-initialize.html */
|
|
22
|
+
interface InitParameters {
|
|
23
|
+
/** Точный показатель отказов. Параметр может принимать значения: */
|
|
24
|
+
accurateTrackBounce?: boolean | number;
|
|
25
|
+
/** Признак записи содержимого iframe без счетчика в дочернем окне */
|
|
26
|
+
childIframe?: boolean;
|
|
27
|
+
/** Признак сбора данных для карты кликов */
|
|
28
|
+
clickmap?: boolean;
|
|
29
|
+
/** Признак отключения автоматической отправки данных при инициализации счетчика */
|
|
30
|
+
defer?: boolean;
|
|
31
|
+
/** Сбор данных электронной коммерции. */
|
|
32
|
+
ecommerce?: boolean | string;
|
|
33
|
+
/**
|
|
34
|
+
* Параметры визита, передаваемые во время инициализации счетчика.
|
|
35
|
+
*
|
|
36
|
+
* Для передачи параметров визита в произвольный момент времени используется метод params
|
|
37
|
+
*/
|
|
38
|
+
params?: VisitParameters | VisitParameters[];
|
|
39
|
+
/**
|
|
40
|
+
* Параметры посетителей сайта, передаваемые во время инициализации счетчика.
|
|
41
|
+
*
|
|
42
|
+
* Для передачи параметров посетителей в произвольный момент времени используется метод userParams
|
|
43
|
+
*/
|
|
44
|
+
userParams?: UserParameters;
|
|
45
|
+
/** Признак отслеживания изменений хеша в адресной строке браузера */
|
|
46
|
+
trackHash?: boolean;
|
|
47
|
+
/** Признак отслеживания переходов по внешним ссылкам */
|
|
48
|
+
trackLinks?: boolean;
|
|
49
|
+
/** Признак доверенного домена для записи содержимого дочернего окна iframe. Содержит адрес домена родительского окна */
|
|
50
|
+
trustedDomains?: string[];
|
|
51
|
+
/** Тип счетчика. Для РСЯ равен 1 */
|
|
52
|
+
type?: number;
|
|
53
|
+
/** Признак использования Вебвизора */
|
|
54
|
+
webvisor?: boolean;
|
|
55
|
+
/** Признак проверки готовности счетчика */
|
|
56
|
+
triggerEvent?: boolean;
|
|
57
|
+
/** Запись заголовков. Если в заголовках есть приватные данные, при инициализации счетчика укажите значение `false` */
|
|
58
|
+
sendTitle: boolean;
|
|
59
|
+
}
|
|
60
|
+
interface HitOptions<CTX> {
|
|
61
|
+
callback?: (this: CTX) => void;
|
|
62
|
+
ctx?: CTX;
|
|
63
|
+
params?: VisitParameters;
|
|
64
|
+
referer?: string;
|
|
65
|
+
title?: string;
|
|
66
|
+
}
|
|
67
|
+
interface People {
|
|
68
|
+
email?: string;
|
|
69
|
+
phone_number?: string;
|
|
70
|
+
first_name?: string;
|
|
71
|
+
last_name?: string;
|
|
72
|
+
yandex_cid?: number;
|
|
73
|
+
home_address?: {
|
|
74
|
+
street?: string;
|
|
75
|
+
city?: string;
|
|
76
|
+
region?: string;
|
|
77
|
+
postal_code?: number;
|
|
78
|
+
country?: string;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
type CurrencyCode = "AUD" | "EUR" | "AZN" | "EUR" | "ALL" | "DZD" | "USD" | "XCD" | "AOA" | "EUR" | "XCD" | "SYP" | "ARS" | "AMD" | "AWG" | "AFN" | "BSD" | "BDT" | "BBD" | "BHD" | "BYR" | "BZD" | "EUR" | "XOF" | "BMD" | "BGN" | "BOB" | "BOV" | "USD" | "BAM" | "BWP" | "BRL" | "USD" | "USD" | "BND" | "XOF" | "BIF" | "BTN" | "INR" | "VUV" | "EUR" | "GBP" | "HUF" | "VEF" | "USD" | "VND" | "GMD" | "XAF" | "HTG" | "USD" | "GYD" | "GHS" | "EUR" | "GTQ" | "EUR" | "GNF" | "XOF" | "EUR" | "GBP" | "GIP" | "EUR" | "HNL" | "HKD" | "XCD" | "DKK" | "EUR" | "GEL" | "USD" | "DKK" | "GBP" | "DJF" | "XCD" | "DOP" | "EUR" | "EGP" | "ZMW" | "MAD" | "USD" | "ZWL" | "ILS" | "INR" | "IDR" | "JOD" | "IQD" | "IRR" | "EUR" | "ISK" | "EUR" | "EUR" | "YER" | "CVE" | "KZT" | "KYD" | "KHR" | "XAF" | "CAD" | "QAR" | "KES" | "EUR" | "AUD" | "CNY" | "AUD" | "COP" | "COU" | "KMF" | "CDF" | "XAF" | "KPW" | "CRC" | "XOF" | "CUC" | "CUP" | "KWD" | "KGS" | "ANG" | "LAK" | "EUR" | "LSL" | "ZAR" | "LRD" | "LBP" | "LYD" | "EUR" | "CHF" | "EUR" | "MUR" | "MRO" | "MGA" | "EUR" | "MOP" | "MKD" | "MWK" | "MYR" | "XOF" | "FKP" | "MVR" | "EUR" | "MAD" | "EUR" | "USD" | "XDR" | "MXN" | "MXV" | "USD" | "MZN" | "MDL" | "EUR" | "MNT" | "XCD" | "MMK" | "NAD" | "ZAR" | "AUD" | "NPR" | "XOF" | "NGN" | "NIO" | "NZD" | "NZD" | "XPF" | "NOK" | "NOK" | "AED" | "OMR" | "NOK" | "GBP" | "AUD" | "AUD" | "SHP" | "AUD" | "NZD" | "NZD" | "USD" | "PKR" | "USD" | "PAB" | "USD" | "PGK" | "PYG" | "PEN" | "PLN" | "EUR" | "USD" | "EUR" | "RUB" | "RWF" | "RON" | "SVC" | "USD" | "WST" | "EUR" | "STD" | "XCD" | "SAR" | "SZL" | "USD" | "SCR" | "EUR" | "EUR" | "EUR" | "XOF" | "XCD" | "XCD" | "RSD" | "SGD" | "ANG" | "XSU" | "EUR" | "EUR" | "SBD" | "SOS" | "XUA" | "SDG" | "SRD" | "ZAR" | "USD" | "USN" | "SLL" | "TJS" | "THB" | "TWD" | "TZS" | "XOF" | "NZD" | "TOP" | "TTD" | "AUD" | "TND" | "TMT" | "TRY" | "USD" | "UGX" | "UZS" | "UAH" | "XPF" | "UYI" | "UYU" | "DKK" | "FJD" | "PHP" | "EUR" | "EUR" | "XPF" | "EUR" | "HRK" | "XAF" | "XAF" | "EUR" | "CZK" | "CLF" | "CLP" | "CHE" | "CHF" | "CHW" | "SEK" | "LKR" | "USD" | "XAF" | "ERN" | "EUR" | "ETB" | "KRW" | "SSP" | "JMD" | "JPY";
|
|
82
|
+
type ECommerceActionType = "impressions" | "click" | "detail" | "add" | "remove" | "purchase" | "promoView" | "promoClick";
|
|
83
|
+
type ECommerceActionData = {
|
|
84
|
+
/** Список описаний товаров, с которыми было произведено указанное действие. */products?: Array<ProductField>; /** Список описаний рекламной кампании, с которой было произведено указанное действие */
|
|
85
|
+
promotions?: Array<PromoField>;
|
|
86
|
+
};
|
|
87
|
+
type ECommerceActionsData = { [Action in Exclude<ECommerceActionType, "purchase">]: { [Key in Action]: ECommerceActionData } } & {
|
|
88
|
+
purchase: {
|
|
89
|
+
purchase: ECommerceActionData & {
|
|
90
|
+
actionField: ActionField;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
type ECommerceActions = ECommerceActionsData[keyof ECommerceActionsData];
|
|
95
|
+
type ECommerceContainer = {
|
|
96
|
+
ecommerce: {
|
|
97
|
+
currencyCode: CurrencyCode;
|
|
98
|
+
} & ECommerceActions;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* @see https://yandex.ru/support/metrica/ecommerce/data.html#about__action_data
|
|
102
|
+
*/
|
|
103
|
+
type ActionField = {
|
|
104
|
+
/** Идентификатор покупки */id: string; /** Промокод, ассоциированный со всей покупкой целиком */
|
|
105
|
+
coupon?: string; /** Номер цели. Указывается в том случае, если данное действие и было целью */
|
|
106
|
+
goal_id?: number;
|
|
107
|
+
revenue?: number;
|
|
108
|
+
};
|
|
109
|
+
/** @see https://yandex.ru/support/metrica/ecommerce/data.html#about__product_data */
|
|
110
|
+
type ProductField = {
|
|
111
|
+
/**
|
|
112
|
+
* Идентификатор товара. Например, SKU.
|
|
113
|
+
*
|
|
114
|
+
* **Необходимо обязательно указать или id, или name**
|
|
115
|
+
*/
|
|
116
|
+
id?: string;
|
|
117
|
+
/**
|
|
118
|
+
* Название товара. Например, "Футболка".
|
|
119
|
+
*
|
|
120
|
+
* **Необходимо обязательно указать или id, или name**
|
|
121
|
+
*/
|
|
122
|
+
name?: string; /** Бренд, торговая марка, ассоциированная с товаром. Например, "Яндекс / Яndex" */
|
|
123
|
+
brand?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Категория, к которой относится товар.
|
|
126
|
+
*
|
|
127
|
+
* Поддерживается иерархия категорий до 5 уровней вложенности. Разделителем уровней является символ /. Например, "Одежда/Мужская одежда/Футболки"
|
|
128
|
+
*/
|
|
129
|
+
category?: string; /** Промокод ассоциированный с товаром. Например, "PARTNER_SITE_15" */
|
|
130
|
+
coupon?: string; /** Размер скидки на товар (указывается как число) */
|
|
131
|
+
discount?: number;
|
|
132
|
+
/**
|
|
133
|
+
* Список, к которому относится товар.
|
|
134
|
+
*
|
|
135
|
+
* Чтобы оценивать эффективность списка на разных этапах взаимодействия пользователя с товаром, рекомендуем указывать список товара во всех событиях, которые были после просмотра списка.
|
|
136
|
+
*/
|
|
137
|
+
list?: string; /** Позиция товара в списке. Например, 2 */
|
|
138
|
+
position?: number; /** Цена единицы товара */
|
|
139
|
+
price?: number; /** Количество единиц товара */
|
|
140
|
+
quantity?: number; /** Разновидность товара. Например, "Красный цвет" */
|
|
141
|
+
variant?: string;
|
|
142
|
+
};
|
|
143
|
+
type PromoField = {
|
|
144
|
+
/** Идентификатор промокампании. */id: string; /** Название промокампании. */
|
|
145
|
+
name?: string; /** Название рекламного баннера. */
|
|
146
|
+
creative?: string; /** Слот рекламного баннера. */
|
|
147
|
+
creative_slot?: string; /** Позиция рекламного баннера. */
|
|
148
|
+
position?: string;
|
|
149
|
+
};
|
|
150
|
+
//#endregion
|
|
151
|
+
export { ActionField, CurrencyCode, ECommerceActionData, ECommerceActionType, ECommerceActions, ECommerceActionsData, ECommerceContainer, HitOptions, InitParameters, People, ProductField, PromoField, UserParameters, VisitParameters };
|
|
152
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;QAEQ,MAAA;EAAA,UACM,MAAA;IACN,EAAA,OAAS,IAAA;MAA0B,CAAA;MAAU,CAAA;IAAA;IAC7C,SAAA;EAAA;AAAA;AAAA,UAIS,eAAA;EACb,WAAA;EACA,QAAA;EAAA,CAEC,GAAA;AAAA;AAAA,UAGY,cAAA;EACb,MAAA;EAAA,CAEC,GAAA;AAAA;;UAIY,cAAA;EAVZ;EAYD,mBAAA;EAZY;EAcZ,WAAA;EAX2B;EAa3B,QAAA;EAZA;EAcA,KAAA;EARa;EAUb,SAAA;;;;;;EAMA,MAAA,GAAS,eAAA,GAAkB,eAAA;EAd3B;;;;;EAoBA,UAAA,GAAa,cAAA;EANJ;EAQT,SAAA;EAFA;EAIA,UAAA;EAFA;EAIA,cAAA;EAAA;EAEA,IAAA;EAEA;EAAA,QAAA;EAIA;EAFA,YAAA;EAES;EAAT,SAAA;AAAA;AAAA,UAGa,UAAA;EACb,QAAA,IAAY,IAAA,EAAM,GAAA;EAClB,GAAA,GAAM,GAAA;EACN,MAAA,GAAS,eAAA;EACT,OAAA;EACA,KAAA;AAAA;AAAA,UAGa,MAAA;EACb,KAAA;EACA,YAAA;EACA,UAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA;IACI,MAAA;IACA,IAAA;IACA,MAAA;IACA,WAAA;IACA,OAAA;EAAA;AAAA;AAAA,KAII,YAAA;AAAA,KA2QA,mBAAA;AAAA,KAUA,mBAAA;EAjSR,+EAmSA,QAAA,GAAW,KAAA,CAAM,YAAA,GAjSjB;EAmSA,UAAA,GAAa,KAAA,CAAM,UAAA;AAAA;AAAA,KAGX,oBAAA,gBACG,OAAA,CAAQ,mBAAA,0BACP,MAAA,GAAS,mBAAA;EAGrB,QAAA;IACI,QAAA,EAAU,mBAAA;MACN,WAAA,EAAa,WAAA;IAAA;EAAA;AAAA;AAAA,KAKb,gBAAA,GAAmB,oBAAA,OAA2B,oBAAA;AAAA,KAE9C,kBAAA;EACR,SAAA;IACI,YAAA,EAAc,YAAA;EAAA,IACd,gBAAA;AAAA;;;;KAMI,WAAA;EA1BW,4BA4BnB,EAAA,UA5BkB;EA8BlB,MAAA,WAhCA;EAkCA,OAAA;EACA,OAAA;AAAA;;KAIQ,YAAA;EArCqB;;AAGjC;;;EAwCI,EAAA;EAvCW;;;;;EA6CX,IAAA,WAvCgC;EAyChC,KAAA;EA/CW;;;;;EAqDX,QAAA,WAhDI;EAkDJ,MAAA,WAjDQ;EAmDR,QAAA;EAnDgC;;AAKpC;;;EAoDI,IAAA,WApD0E;EAsD1E,QAAA,WApD0B;EAsD1B,KAAA,WAnDoB;EAqDpB,QAAA,WAtDI;EAwDJ,OAAA;AAAA;AAAA,KAGQ,UAAA;EA1DY,mCA4DpB,EAAA,UAtDmB;EAwDnB,IAAA,WAxDmB;EA0DnB,QAAA,WAtDA;EAwDA,aAAA,WArDA;EAuDA,QAAA;AAAA"}
|
package/dist/ym.js
ADDED
package/dist/ym.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ym.js","names":[],"sources":["../src/ym.ts"],"sourcesContent":["import type { Methods } from \"./methods\";\r\n\r\nexport function ym<M extends Methods>(clientID: string, method: M, ...args: unknown[]) {\r\n if (typeof window === \"undefined\" || !window.ym) return console.error(\"[yandex-metrica] Script is not loaded!\");\r\n\r\n window.ym(clientID, method, ...args);\r\n}\r\n"],"mappings":"AAEA,SAAgB,EAAsB,EAAkB,EAAW,GAAG,EAAiB,CACnF,GAAI,OAAO,OAAW,KAAe,CAAC,OAAO,GAAI,OAAO,QAAQ,MAAM,yCAAyC,CAE/G,OAAO,GAAG,EAAU,EAAQ,GAAG,EAAK"}
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"publishConfig": {
|
|
3
|
+
"access": "public"
|
|
4
|
+
},
|
|
5
|
+
"name": "@yametrica/core",
|
|
6
|
+
"version": "0.0.1",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"exports": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsdown"
|
|
18
|
+
}
|
|
19
|
+
}
|