diff --git a/.gitignore b/.gitignore index 83815eb..a40bb0f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules .DS_Store manual-test/manual-test.js +.idea diff --git a/src/index.ts b/src/index.ts index dd836c3..41c697e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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; diff --git a/src/transport.ts b/src/transport.ts index 7eff620..57ed2fa 100644 --- a/src/transport.ts +++ b/src/transport.ts @@ -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, ' ')) { diff --git a/src/url.ts b/src/url.ts index e204ef7..559881a 100644 --- a/src/url.ts +++ b/src/url.ts @@ -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; +}