values.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import type { Effect, Fiber } from "effect"
  2. export class SandboxPromise {
  3. interrupted = false
  4. constructor(
  5. readonly fiber: Fiber.Fiber<unknown, unknown> | undefined,
  6. readonly immediate?: Effect.Effect<unknown, unknown>,
  7. ) {}
  8. }
  9. export class SandboxDate {
  10. constructor(readonly time: number) {}
  11. }
  12. export class SandboxRegExp {
  13. readonly regex: RegExp
  14. constructor(pattern: string, flags: string) {
  15. this.regex = new RegExp(pattern, flags)
  16. }
  17. }
  18. export class SandboxMap {
  19. readonly map = new Map<unknown, unknown>()
  20. }
  21. export class SandboxSet {
  22. readonly set = new Set<unknown>()
  23. }
  24. export class SandboxURLSearchParams {
  25. constructor(readonly params: URLSearchParams) {}
  26. }
  27. export class SandboxURL {
  28. readonly searchParams: SandboxURLSearchParams
  29. constructor(readonly url: URL) {
  30. this.searchParams = new SandboxURLSearchParams(url.searchParams)
  31. }
  32. }
  33. export const isSandboxValue = (
  34. value: unknown,
  35. ): value is SandboxDate | SandboxRegExp | SandboxMap | SandboxSet | SandboxURL | SandboxURLSearchParams =>
  36. value instanceof SandboxDate ||
  37. value instanceof SandboxRegExp ||
  38. value instanceof SandboxMap ||
  39. value instanceof SandboxSet ||
  40. value instanceof SandboxURL ||
  41. value instanceof SandboxURLSearchParams