langfuse

Форк
0
56 строк · 1.6 Кб
1
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
/* eslint-disable @typescript-eslint/no-unsafe-call */
3
import { type Router } from "next/router";
4
import type { UrlObject } from "url";
5
import { type LocationMock } from "@jedmao/location";
6

7
type PartialRouter = Partial<Router>;
8

9
export const BASE_URL = "https://langfuse.com";
10

11
/**
12
 * A Router to be used for testing which provides the bare minimum needed
13
 * for the useQueryParam(s) hook and NextAdapter to work.
14
 */
15
export class TestRouter implements PartialRouter {
16
  isReady = true;
17
  pathname = "/";
18
  private currentUrl = "";
19
  private history: string[] = [];
20

21
  constructor(private locationMock: LocationMock) {}
22

23
  replace = (url: string | UrlObject) => {
24
    // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions
25
    this.locationMock.assign(`${BASE_URL}${url}`);
26
    this.currentUrl = TestRouter.getURLString(url);
27
    this.locationMock.assign(`${BASE_URL}${this.currentUrl}`);
28
    return Promise.resolve(true);
29
  };
30

31
  push = (url: string | UrlObject) => {
32
    this.history.push(this.currentUrl);
33
    this.currentUrl = TestRouter.getURLString(url);
34
    this.locationMock.assign(`${BASE_URL}${this.currentUrl}`);
35
    return Promise.resolve(true);
36
  };
37

38
  setIsReady = (isReady: boolean) => {
39
    this.isReady = isReady;
40
  };
41

42
  get asPath() {
43
    return this.pathname;
44
  }
45

46
  static getURLString(url: string | UrlObject): string {
47
    if (typeof url === "string") {
48
      return url;
49
    }
50
    return `${url.pathname}${url.search}`;
51
  }
52

53
  getParams(): URLSearchParams {
54
    return new URL(`${BASE_URL}${this.currentUrl}`).searchParams;
55
  }
56
}
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.