Skip to content

Commit

Permalink
feat: Configure metrika origin
Browse files Browse the repository at this point in the history
  • Loading branch information
Fsss126 committed Nov 17, 2024
1 parent 3b7c968 commit a752e1f
Show file tree
Hide file tree
Showing 9 changed files with 70 additions and 5 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
node_modules
.DS_Store
manual-test/manual-test.js
.idea
17 changes: 16 additions & 1 deletion dist/index.common.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,23 @@ var MAX_URL_LEN = 1024;
function prepareUrl(url) {
return truncate(url, MAX_URL_LEN);
}
function normalizeOrigin(origin) {
if (origin.endsWith('/')) {
return origin.slice(0, origin.length - 1);
}
return origin;
}

var metrikaOrigin = 'https://mc.yandex.ru';
/**
* Конфигурирует транспорт отправки событий
* @param params
*/
function configureTransport(params) {
metrikaOrigin = normalizeOrigin(params.metrikaOrigin);
}
function sendData(counterId, queryParams) {
var url = 'https://mc.yandex.ru/watch/' + counterId + '?' + queryStringify(queryParams);
var url = metrikaOrigin + '/watch/' + counterId + '?' + queryStringify(queryParams);
var hasBeacon = typeof navigator !== 'undefined' && navigator.sendBeacon;
if (!hasBeacon || !navigator.sendBeacon(url, ' ')) {
if (typeof fetch !== 'undefined') {
Expand Down Expand Up @@ -294,6 +308,7 @@ function notBounce(counterId) {
});
}

exports.configureTransport = configureTransport;
exports.extLink = extLink;
exports.file = file;
exports.hit = hit;
Expand Down
1 change: 1 addition & 0 deletions dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export { configureTransport } from './transport';
export interface LyamHitParams {
referrer?: string;
title?: string;
Expand Down
18 changes: 16 additions & 2 deletions dist/index.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,23 @@ var MAX_URL_LEN = 1024;
function prepareUrl(url) {
return truncate(url, MAX_URL_LEN);
}
function normalizeOrigin(origin) {
if (origin.endsWith('/')) {
return origin.slice(0, origin.length - 1);
}
return origin;
}

var metrikaOrigin = 'https://mc.yandex.ru';
/**
* Конфигурирует транспорт отправки событий
* @param params
*/
function configureTransport(params) {
metrikaOrigin = normalizeOrigin(params.metrikaOrigin);
}
function sendData(counterId, queryParams) {
var url = 'https://mc.yandex.ru/watch/' + counterId + '?' + queryStringify(queryParams);
var url = metrikaOrigin + '/watch/' + counterId + '?' + queryStringify(queryParams);
var hasBeacon = typeof navigator !== 'undefined' && navigator.sendBeacon;
if (!hasBeacon || !navigator.sendBeacon(url, ' ')) {
if (typeof fetch !== 'undefined') {
Expand Down Expand Up @@ -292,4 +306,4 @@ function notBounce(counterId) {
});
}

export { extLink, file, hit, hitExt, notBounce, params, reachGoal, userParams };
export { configureTransport, extLink, file, hit, hitExt, notBounce, params, reachGoal, userParams };
9 changes: 9 additions & 0 deletions dist/transport.d.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,11 @@
import type { LyamQueryParams } from './index';
interface LyamTrasportConfigParams {
metrikaOrigin: string;
}
/**
* Конфигурирует транспорт отправки событий
* @param params
*/
export declare function configureTransport(params: LyamTrasportConfigParams): void;
export declare function sendData(counterId: string, queryParams: LyamQueryParams): void;
export {};
1 change: 1 addition & 0 deletions dist/url.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { LyamQueryParams } from './index';
export declare function queryStringify(params: LyamQueryParams): string;
export declare function prepareUrl(url: string): string;
export declare function normalizeOrigin(origin: string): string;
2 changes: 2 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import { getRandom } from './number';
import { sendData } from './transport';
import { prepareUrl } from './url';

export { configureTransport } from './transport';

export interface LyamHitParams {
referrer?: string;
title?: string;
Expand Down
18 changes: 16 additions & 2 deletions src/transport.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
import { queryStringify } from './url';
import {normalizeOrigin, queryStringify} from './url';
import type { LyamQueryParams } from './index';

interface LyamTrasportConfigParams {
metrikaOrigin: string;
}

let metrikaOrigin = 'https://mc.yandex.ru';

/**
* Конфигурирует транспорт отправки событий
* @param params
*/
export function configureTransport(params: LyamTrasportConfigParams) {
metrikaOrigin = normalizeOrigin(params.metrikaOrigin);
}

export function sendData(counterId: string, queryParams: LyamQueryParams): void {
const url = 'https://mc.yandex.ru/watch/' + counterId + '?' + queryStringify(queryParams);
const url = metrikaOrigin + '/watch/' + counterId + '?' + queryStringify(queryParams);
const hasBeacon = typeof navigator !== 'undefined' && navigator.sendBeacon;

if (!hasBeacon || !navigator.sendBeacon(url, ' ')) {
Expand Down
8 changes: 8 additions & 0 deletions src/url.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,11 @@ const MAX_URL_LEN = 1024;
export function prepareUrl(url: string): string {
return truncate(url, MAX_URL_LEN);
}

export function normalizeOrigin(origin: string): string {
if (origin.endsWith('/')) {
return origin.slice(0, origin.length - 1)
}

return origin;
}

0 comments on commit a752e1f

Please sign in to comment.