{"version":3,"sources":["../src/api/gamecenter/index.ts","../src/api/gamecenter/draft.ts","../src/config/env.ts","../src/errors/index.ts","../src/client/types.ts","../src/client/index.ts","../src/utils/date.ts","../src/constants/edge-adv.ts","../src/constants/edge-stats.ts","../src/constants/nhl.ts","../src/constants/index.ts","../src/utils/schemas.ts","../src/utils/utils.ts","../src/api/gamecenter/game.ts","../src/api/gamecenter/misc.ts","../src/api/gamecenter/player.ts","../src/api/gamecenter/score.ts","../src/api/gamecenter/team.ts"],"names":["type","route","_paths","landing","schedule"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * NHL API Endpoints\n * This file re-exports all the API endpoint functions\n */\nexport * as draft from './draft.ts';\nexport * as game from './game.ts';\nexport * as misc from './misc.ts';\nexport * as player from './player.ts';\nexport * from './score.ts';\nexport * as team from './team.ts';\n","/**\n * Draft-related API endpoints\n */\n\nimport nhlClient from '#/client/index.ts';\nimport type { APIResponse } from '#/client/types.ts';\nimport { ValidationError } from '#/errors/index.ts';\nimport type {\n   DraftPicks,\n   DraftRankings,\n   DraftRound,\n   DraftTracker,\n   Year,\n} from '#/types/index.ts';\nimport { getCurrentYear } from '#/utils/date.ts';\nimport {\n   DraftParams,\n   isParseError,\n   Year as YearType,\n} from '#/utils/schemas.ts';\nimport { route } from '#/utils/utils.ts';\n\nconst _paths = {\n   draftPicks: {\n      byYearAndRound: 'draft/picks/{year}/{round}',\n      byYear: 'draft/picks/{year}/all',\n   },\n   draftRankings: 'draft/rankings/{year}/{type}',\n   draftTracker: 'draft-tracker/picks/now',\n};\n\nconst DraftRankingsEnum = {\n   skatersNA: '1',\n   skatersIntl: '2',\n   goaliesNA: '3',\n   goaliesIntl: '4',\n} as const;\n\n/**\n * Get draft picks for a specific year and round\n * @param year - The draft year\n * @param round - The draft round\n * @returns Promise resolving to draft picks for the specified year and round\n */\nexport const picks = (\n   year?: Year,\n   round?: DraftRound,\n): Promise<APIResponse<DraftPicks>> => {\n   const parsed = DraftParams({ year, round });\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: _paths.draftPicks.byYearAndRound,\n         }),\n      });\n   }\n   if (parsed.year && !parsed.round)\n      return nhlClient.get(route(_paths.draftPicks.byYear, parsed));\n\n   return nhlClient.get(route(_paths.draftPicks.byYearAndRound, parsed));\n};\n\n/**\n * Get current draft tracker information\n * @returns Promise resolving to current draft tracker data\n */\nexport const tracker = (): Promise<APIResponse<DraftTracker>> =>\n   nhlClient.get(_paths.draftTracker);\n\n/**\n * Access draft rankings related endpoints\n */\nexport const rankings = (year?: Year) => {\n   const getRankings = (\n      type: '1' | '2' | '3' | '4',\n   ): Promise<APIResponse<DraftRankings>> => {\n      const parsedYear = YearType(year ?? getCurrentYear());\n      if (isParseError(parsedYear)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsedYear.summary, {\n               endpoint: _paths.draftRankings,\n            }),\n         });\n      }\n      return nhlClient.get(\n         route(_paths.draftRankings, {\n            year: parsedYear,\n            type,\n         }),\n      );\n   };\n\n   return {\n      skatersNA: (): Promise<APIResponse<DraftRankings>> =>\n         getRankings(DraftRankingsEnum.skatersNA),\n      skatersIntl: (): Promise<APIResponse<DraftRankings>> =>\n         getRankings(DraftRankingsEnum.skatersIntl),\n      goaliesNA: (): Promise<APIResponse<DraftRankings>> =>\n         getRankings(DraftRankingsEnum.goaliesNA),\n      goaliesIntl: (): Promise<APIResponse<DraftRankings>> =>\n         getRankings(DraftRankingsEnum.goaliesIntl),\n      all: (): Promise<APIResponse<DraftRankings>[]> =>\n         Promise.all([\n            getRankings(DraftRankingsEnum.skatersNA),\n            getRankings(DraftRankingsEnum.skatersIntl),\n            getRankings(DraftRankingsEnum.goaliesNA),\n            getRankings(DraftRankingsEnum.goaliesIntl),\n         ]),\n   };\n};\n","/**\n * Environment Variable Configuration\n * Simple configuration system for NHL API client based on environment variables\n *\n * Supported environment variables:\n * - NHLE_API_TIMEOUT: Request timeout in milliseconds (default: 5000)\n * - NHLE_API_LANGUAGE: Language code 'en' or 'fr' (default: 'en')\n * - NHLE_API_LOGLEVEL: Logging level 'silent', 'error', 'warn', 'info', 'debug' (default: 'warn')\n *\n * @example\n * // In .env or shell\n * NHLE_API_TIMEOUT=10000\n * NHLE_API_LANGUAGE=fr\n * NHLE_API_LOGLEVEL=debug\n *\n * @module config/env\n */\n\nexport type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug';\n\n/**\n * Parse timeout from environment variable\n * @internal\n */\nfunction parseTimeout(): number {\n   const timeout = process.env.NHLE_API_TIMEOUT;\n   if (!timeout) return 5000;\n\n   const parsed = parseInt(timeout, 10);\n   if (Number.isNaN(parsed) || parsed <= 0) {\n      console.warn(\n         `Invalid NHLE_API_TIMEOUT: \"${timeout}\". Using default 5000ms`,\n      );\n      return 5000;\n   }\n   return parsed;\n}\n\n/**\n * Parse language from environment variable\n * @internal\n */\nfunction parseLanguage(): 'en' | 'fr' {\n   const language = process.env.NHLE_API_LANGUAGE?.toLowerCase();\n   if (language === 'fr') return 'fr';\n   if (language && language !== 'en') {\n      console.warn(\n         `Invalid NHLE_API_LANGUAGE: \"${language}\". Using default 'en'`,\n      );\n   }\n   return 'en';\n}\n\n/**\n * Parse log level from environment variable\n * @internal\n */\nfunction parseLogLevel(): LogLevel {\n   const logLevel = process.env.NHLE_API_LOGLEVEL?.toLowerCase();\n   const validLevels: LogLevel[] = [\n      'silent',\n      'error',\n      'warn',\n      'info',\n      'debug',\n   ];\n\n   if (!logLevel) return 'warn';\n   if (validLevels.includes(logLevel as LogLevel)) {\n      return logLevel as LogLevel;\n   }\n\n   console.warn(\n      `Invalid NHLE_API_LOGLEVEL: \"${logLevel}\". Valid options: ${validLevels.join(', ')}. Using default 'warn'`,\n   );\n   return 'warn';\n}\n\n/**\n * Environment-based configuration for NHL API client\n * Reads from process.env at initialization time\n */\nexport const envConfig = {\n   /**\n    * Request timeout in milliseconds\n    * Set via NHLE_API_TIMEOUT environment variable\n    * @default 5000\n    */\n   timeout: parseTimeout(),\n\n   /**\n    * Language code for API responses\n    * Set via NHLE_API_LANGUAGE environment variable\n    * @default 'en'\n    */\n   language: parseLanguage() as 'en' | 'fr',\n\n   /**\n    * Logging level for the client\n    * Set via NHLE_API_LOGLEVEL environment variable\n    * @default 'warn'\n    */\n   logLevel: parseLogLevel(),\n};\n\n/**\n * Log current environment configuration (useful for debugging)\n * Only logs if environment variables are explicitly set\n */\nexport function logEnvConfig(): void {\n   const vars = {\n      timeout: process.env.NHLE_API_TIMEOUT,\n      language: process.env.NHLE_API_LANGUAGE,\n      logLevel: process.env.NHLE_API_LOGLEVEL,\n   };\n\n   const configured = Object.entries(vars).filter(\n      ([, v]) => v !== undefined,\n   );\n   if (configured.length > 0) {\n      console.debug('NHL API Environment Configuration:', {\n         ...Object.fromEntries(configured),\n         resolvedTimeout: envConfig.timeout,\n         resolvedLanguage: envConfig.language,\n         resolvedLogLevel: envConfig.logLevel,\n      });\n   }\n}\n","/**\n * Error handling module for NHL Sports Data API wrapper\n * Provides structured error classification and logging for API interactions\n */\n\nexport const ErrorCategory = {\n   /** Network-level errors (connection refused, timeout, etc.) */\n   NETWORK: 'NETWORK',\n\n   /** HTTP 4xx client errors (invalid params, not found, etc.) */\n   CLIENT: 'CLIENT',\n\n   /** HTTP 5xx server errors */\n   SERVER: 'SERVER',\n\n   /** Rate limiting (HTTP 429) */\n   RATE_LIMIT: 'RATE_LIMIT',\n\n   /** Valid HTTP response but with error payload */\n   API_ERROR: 'API_ERROR',\n\n   /** Response parsing/validation failures */\n   PARSE: 'PARSE',\n\n   /** Invalid user input or configuration */\n   VALIDATION: 'VALIDATION',\n} as const;\n\nexport type ErrorCategory =\n   (typeof ErrorCategory)[keyof typeof ErrorCategory];\n\nexport const LogLevel = {\n   NONE: 0,\n   ERROR: 1,\n   WARN: 2,\n   INFO: 3,\n   DEBUG: 4,\n};\n\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\n\nexport interface ErrorContext {\n   /** HTTP status code if applicable */\n   statusCode?: number;\n\n   /** Original error object */\n   cause?: unknown;\n\n   /** Request URL or endpoint */\n   endpoint?: string;\n\n   /** Request method */\n   method?: string;\n\n   /** Request parameters */\n   params?: Record<string, unknown>;\n\n   /** Response body if available */\n   responseBody?: unknown;\n\n   /** Timestamp of error */\n   timestamp?: Date;\n\n   /** Additional metadata */\n   metadata?: Record<string, unknown>;\n}\n\nexport interface ErrorConfig {\n   /** Logging level for error output */\n   logLevel?: LogLevel;\n\n   /** Custom logger function */\n   logger?: (\n      level: LogLevel,\n      message: string,\n      context?: ErrorContext,\n   ) => void;\n\n   /** Whether to include stack traces */\n   includeStack?: boolean;\n}\n\n/**\n * Base error class for all NHL API errors\n */\nexport class NHLError extends Error {\n   public readonly category: ErrorCategory;\n   public readonly context: ErrorContext;\n\n   constructor(\n      message: string,\n      category: ErrorCategory,\n      context: ErrorContext = {},\n   ) {\n      super(message);\n      this.name = this.constructor.name;\n      this.category = category;\n      this.context = {\n         ...context,\n         timestamp: context.timestamp || new Date(),\n      };\n\n      // Maintain proper stack trace\n      Error.captureStackTrace?.(this, this.constructor);\n   }\n\n   /**\n    * Serialize error to JSON\n    */\n   toJSON() {\n      return {\n         name: this.name,\n         message: this.message,\n         category: this.category,\n         context: this.context,\n         ...(this.stack && { stack: this.stack }),\n      };\n   }\n}\n\n/**\n * Network-level errors (timeouts, connection failures)\n */\nexport class NetworkError extends NHLError {\n   constructor(message: string, context: ErrorContext = {}) {\n      super(message, ErrorCategory.NETWORK, context);\n   }\n}\n\n/**\n * HTTP 4xx client errors\n */\nexport class ClientError extends NHLError {\n   constructor(message: string, context: ErrorContext = {}) {\n      super(message, ErrorCategory.CLIENT, context);\n   }\n}\n\n/**\n * HTTP 404 resource not found\n */\nexport class NotFoundError extends ClientError {\n   constructor(\n      message: string = 'Resource not found',\n      context: ErrorContext = {},\n   ) {\n      super(message, { ...context, statusCode: context.statusCode || 404 });\n   }\n}\n\n/**\n * HTTP 5xx server errors\n */\nexport class ServerError extends NHLError {\n   constructor(message: string, context: ErrorContext = {}) {\n      super(message, ErrorCategory.SERVER, context);\n   }\n}\n\n/**\n * HTTP 429 rate limit errors\n */\nexport class RateLimitError extends NHLError {\n   public readonly retryAfter?: number;\n\n   constructor(\n      message: string = 'Rate limit exceeded',\n      context: ErrorContext = {},\n      retryAfter?: number,\n   ) {\n      super(message, ErrorCategory.RATE_LIMIT, {\n         ...context,\n         statusCode: context.statusCode || 429,\n      });\n      this.retryAfter = retryAfter || 0;\n   }\n}\n\n/**\n * API returned 200 but with error message in JSON payload\n */\nexport class APIError extends NHLError {\n   constructor(message: string, context: ErrorContext = {}) {\n      super(message, ErrorCategory.API_ERROR, context);\n   }\n}\n\n/**\n * Response parsing or validation failures\n */\nexport class ParseError extends NHLError {\n   constructor(message: string, context: ErrorContext = {}) {\n      super(message, ErrorCategory.PARSE, context);\n   }\n}\n\n/**\n * Invalid user input or configuration\n */\nexport class ValidationError extends NHLError {\n   constructor(message: string, context: ErrorContext = {}) {\n      super(message, ErrorCategory.VALIDATION, context);\n   }\n}\n\n/**\n * Error handler utility class\n */\nexport class ErrorHandler {\n   private config: Required<ErrorConfig>;\n\n   constructor(config: ErrorConfig = {}) {\n      this.config = {\n         logLevel: config.logLevel ?? LogLevel.ERROR,\n         logger: config.logger ?? this.defaultLogger.bind(this),\n         includeStack: config.includeStack ?? true,\n      };\n   }\n\n   /**\n    * Default console-based logger\n    */\n   private defaultLogger(\n      level: LogLevel,\n      message: string,\n      context?: ErrorContext,\n   ): void {\n      if (level > this.config.logLevel) return;\n\n      const logFn =\n         level === LogLevel.ERROR\n            ? console.error\n            : level === LogLevel.WARN\n              ? console.warn\n              : console.log;\n\n      logFn(`[NHL API] ${message}`, context);\n   }\n\n   /**\n    * Log an error based on configuration\n    */\n   log(error: NHLError): void {\n      const level = this.getLogLevel(error.category);\n      const context = this.config.includeStack\n         ? { ...error.context, stack: error.stack }\n         : error.context;\n\n      this.config.logger(level, error.message, context);\n   }\n\n   /**\n    * Determine log level based on error category\n    */\n   private getLogLevel(category: ErrorCategory): LogLevel {\n      switch (category) {\n         case ErrorCategory.NETWORK:\n         case ErrorCategory.SERVER:\n            return LogLevel.ERROR;\n         case ErrorCategory.RATE_LIMIT:\n            return LogLevel.WARN;\n         case ErrorCategory.CLIENT:\n         case ErrorCategory.API_ERROR:\n            return LogLevel.INFO;\n         case ErrorCategory.PARSE:\n         case ErrorCategory.VALIDATION:\n            return LogLevel.DEBUG;\n         default:\n            return LogLevel.ERROR;\n      }\n   }\n\n   /**\n    * Create error from HTTP response\n    */\n   async fromResponse(\n      response: Response,\n      context: Omit<ErrorContext, 'statusCode'> = {},\n   ): Promise<NHLError> {\n      const statusCode = response.status;\n      const baseContext: ErrorContext = {\n         ...context,\n         statusCode,\n         endpoint: context.endpoint || response.url,\n      };\n\n      // Try to parse response body\n      let responseBody: unknown;\n      try {\n         const text = await response.text();\n         responseBody = text ? JSON.parse(text) : null;\n         baseContext.responseBody = responseBody;\n      } catch {\n         // Response body not parseable as JSON\n      }\n\n      // Extract error message from JSON response if available\n      const errorMessage =\n         responseBody &&\n         typeof responseBody === 'object' &&\n         'message' in responseBody\n            ? String(responseBody.message)\n            : `HTTP ${statusCode}: ${response.statusText}`;\n\n      // Classify by status code\n      if (statusCode === 429) {\n         const retryAfter = response.headers.get('Retry-After');\n         return new RateLimitError(\n            errorMessage,\n            baseContext,\n            retryAfter ? parseInt(retryAfter, 10) : undefined,\n         );\n      }\n\n      if (statusCode === 404) {\n         return new NotFoundError(errorMessage, baseContext);\n      }\n\n      if (statusCode >= 500) {\n         return new ServerError(errorMessage, baseContext);\n      }\n\n      if (statusCode >= 400) {\n         return new ClientError(errorMessage, baseContext);\n      }\n\n      // 200-level response with error in JSON body\n      if (\n         responseBody &&\n         typeof responseBody === 'object' &&\n         'message' in responseBody\n      ) {\n         return new APIError(errorMessage, baseContext);\n      }\n\n      // Fallback\n      return new NHLError(errorMessage, ErrorCategory.CLIENT, baseContext);\n   }\n\n   /**\n    * Create error from caught exception\n    */\n   fromError(error: unknown, context: ErrorContext = {}): NHLError {\n      if (error instanceof NHLError) {\n         return error;\n      }\n\n      if (error instanceof Error) {\n         // Network/fetch errors\n         if (error.name === 'TypeError' || error.name === 'NetworkError') {\n            return new NetworkError(error.message, {\n               ...context,\n               cause: error,\n            });\n         }\n\n         // Generic error wrapper\n         return new NHLError(error.message, ErrorCategory.NETWORK, {\n            ...context,\n            cause: error,\n         });\n      }\n\n      // Unknown error type\n      return new NHLError(\n         'An unknown error occurred',\n         ErrorCategory.NETWORK,\n         { ...context, cause: error },\n      );\n   }\n\n   /**\n    * Update configuration\n    */\n   configure(config: Partial<ErrorConfig>): void {\n      this.config = { ...this.config, ...config };\n   }\n}\n\n/**\n * Default error handler instance\n */\nexport const defaultErrorHandler = new ErrorHandler();\n\n/**\n * Convenience function to create errors from responses\n */\nexport const fromResponse = (\n   response: Response,\n   context?: Omit<ErrorContext, 'statusCode'>,\n) => defaultErrorHandler.fromResponse(response, context);\n\n/**\n * Convenience function to create errors from exceptions\n */\nexport const fromError = (error: unknown, context?: ErrorContext) =>\n   defaultErrorHandler.fromError(error, context);\n","/**\r\n * NHL API Client Type Definitions\r\n */\r\n\r\nimport type { NHLError } from '#/errors/index.ts';\r\n/**\r\n * Configuration options for the NHL API client\r\n */\r\nexport interface NHLClientConfig {\r\n   /**\r\n    * Base URL for the NHL API\r\n    * @default 'https://api-web.nhle.com/v1'\r\n    */\r\n   baseUrl?: string;\r\n\r\n   /**\r\n    * Request timeout in milliseconds\r\n    * @default 5000 (5 seconds)\r\n    */\r\n   timeout?: number;\r\n\r\n   /**\r\n    * Additional headers to include with every request\r\n    */\r\n   headers?: Record<string, string>;\r\n\r\n   /**\r\n    * Language code for localized responses\r\n    * @default 'en' (English)\r\n    */\r\n   language?: 'en' | 'fr';\r\n}\r\n\r\n/**\r\n * Predefined API endpoints for different NHL services\r\n */\r\nexport type APIEndpoint = 'edge-adv' | 'edge-stats' | 'default';\r\n\r\n/**\r\n * Mapping of API endpoints to their base URLs\r\n */\r\nexport const API_BASE_URLS: Record<APIEndpoint, string> = {\r\n   'edge-adv': 'https://api-web.nhle.com/v1',\r\n   'edge-stats': 'https://api.nhle.com/stats/rest',\r\n   default: 'https://api-web.nhle.com/v1',\r\n};\r\n\r\nexport interface NHLApiResponse<T> {\r\n   data: T;\r\n   status: number;\r\n   statusText: string;\r\n   headers: Record<string, string>;\r\n}\r\n\r\nexport type APIResponse<T> =\r\n   | { status: 'success'; data: T }\r\n   | { status: 'error'; error: NHLError };\r\n\r\n/**\r\n * NHL API error response structure\r\n * @deprecated Use NHLError class instead\r\n */\r\nexport interface NHLApiError {\r\n   error: string;\r\n   status: number;\r\n   statusText: string;\r\n   headers: Record<string, string>;\r\n}\r\n\r\n/**\r\n * NHL API client interface\r\n */\r\nexport interface NHLClient {\r\n   /**\r\n    * Send a GET request to the NHL API\r\n    * @param endpoint - API endpoint path (will be appended to baseUrl)\r\n    * @param params - Optional query parameters\r\n    */\r\n   get: <T = unknown>(\r\n      endpoint: string,\r\n      params?: Record<string, unknown>,\r\n   ) => Promise<T>;\r\n}\r\n","/**\n * NHL API Client implementation\n * Internal client for making API requests to the NHL API\n */\n\nimport { envConfig } from '#/config/env.ts';\nimport {\n   ErrorCategory,\n   type ErrorConfig,\n   ErrorHandler,\n   NHLError,\n} from '#/errors/index.ts';\nimport type { APIEndpoint, APIResponse, NHLClientConfig } from './types.ts';\nimport { API_BASE_URLS } from './types.ts';\n\n/**\n * Extended configuration for the NHL API client including error handling\n */\nexport interface NHLClientWithErrorConfig extends NHLClientConfig {\n   /**\n    * Error handling configuration\n    */\n   errorConfig?: ErrorConfig;\n}\n\n/**\n * Default configuration for the NHL API client\n * Uses environment variables if set, otherwise falls back to sensible defaults\n */\nconst DEFAULT_CONFIG: Required<NHLClientConfig> = {\n   baseUrl: 'https://api-web.nhle.com/v1',\n   timeout: envConfig.timeout,\n   headers: {\n      Accept: 'application/json',\n   },\n   language: envConfig.language,\n};\n\n/**\n * NHL API Client class for making API requests to the NHL API\n * Provides methods for sending GET requests to the NHL API with automatic\n * URL construction, query parameter handling, timeout management, and\n * comprehensive error handling using the ErrorHandler utility.\n */\nexport class NHLClient {\n   private config: Required<NHLClientConfig>;\n   private errorHandler: ErrorHandler;\n\n   /**\n    * Creates a new NHL API client instance\n    * @param baseURL - Optional custom base URL or predefined API endpoint key\n    * @param errorConfig - Optional error handling configuration\n    */\n   constructor(baseURL?: string | APIEndpoint, errorConfig?: ErrorConfig) {\n      this.config = { ...DEFAULT_CONFIG };\n\n      // Check if baseURL is a predefined endpoint key\n      if (baseURL && baseURL in API_BASE_URLS) {\n         this.config.baseUrl = API_BASE_URLS[baseURL as APIEndpoint];\n      } else if (baseURL) {\n         this.config.baseUrl = baseURL;\n      }\n\n      // Initialize error handler with provided config\n      this.errorHandler = new ErrorHandler(errorConfig);\n   }\n\n   /**\n    * Helper to build URL with query parameters\n    * @private\n    */\n   private buildUrl(\n      endpoint: string,\n      params?: Record<string, unknown>,\n   ): string {\n      // Ensure endpoint doesn't have leading slash for URL construction\n      const cleanEndpoint = endpoint.startsWith('/')\n         ? endpoint.slice(1)\n         : endpoint;\n      const url = new URL(cleanEndpoint, `${this.config.baseUrl}/`);\n      if (params) {\n         Object.entries(params).forEach(([key, value]) => {\n            if (value !== undefined && value !== null) {\n               url.searchParams.append(key, String(value));\n            }\n         });\n      }\n      return url.toString();\n   }\n\n   /**\n    * Send a GET request to the NHL API\n    * @param endpoint - API endpoint path\n    * @param params - Optional query parameters\n    * @returns Promise resolving to an APIResponse containing either data or error\n    */\n   async get<T = unknown>(\n      endpoint: string,\n      params?: Record<string, unknown>,\n   ): Promise<APIResponse<T>> {\n      const url = this.buildUrl(endpoint, params);\n      const controller = new AbortController();\n      const timeoutId = setTimeout(\n         () => controller.abort(),\n         this.config.timeout,\n      );\n\n      try {\n         const response = await fetch(url, {\n            method: 'GET',\n            headers: {\n               ...this.config.headers,\n               'Accept-Language': this.config.language,\n            },\n            signal: controller.signal,\n         });\n\n         clearTimeout(timeoutId);\n\n         if (!response.ok) {\n            const error = await this.errorHandler.fromResponse(response, {\n               endpoint: url,\n            });\n            this.errorHandler.log(error);\n            return { status: 'error', error };\n         }\n\n         return { data: (await response.json()) as T, status: 'success' };\n      } catch (error) {\n         clearTimeout(timeoutId);\n\n         // If it's already an NHLError, return it\n         if (error instanceof NHLError) {\n            this.errorHandler.log(error);\n            return { status: 'error', error };\n         }\n\n         // Handle AbortError (timeout)\n         let nhlError: NHLError;\n         if (error instanceof Error && error.name === 'AbortError') {\n            nhlError = new NHLError(\n               'Request timeout',\n               ErrorCategory.CLIENT,\n               {\n                  endpoint,\n               },\n            );\n         } else {\n            // Convert other errors using ErrorHandler\n            nhlError = this.errorHandler.fromError(error, {\n               endpoint,\n               method: 'GET',\n            });\n         }\n\n         this.errorHandler.log(nhlError);\n         return { status: 'error', error: nhlError };\n      }\n   }\n\n   /**\n    * Configure error handling behavior\n    * @param config - Error configuration options\n    */\n   configureErrorHandling(config: Partial<ErrorConfig>): void {\n      this.errorHandler.configure(config);\n   }\n}\n\n/**\n * Factory function for backward compatibility\n * Creates a new NHL API client instance\n *\n * @param baseURL - Optional custom base URL or predefined API endpoint key\n * @param errorConfig - Optional error handling configuration\n * @returns A new NHL API client instance\n */\nexport function createNHLClient(\n   baseURL?: string | APIEndpoint,\n   errorConfig?: ErrorConfig,\n): NHLClient {\n   return new NHLClient(baseURL, errorConfig);\n}\n\n/**\n * Default client instance for edge-adv API endpoints\n */\nconst nhlClient = createNHLClient('default');\n\n/**\n * Client instance for edge-stats API endpoints\n */\nconst edgeStatsClient = createNHLClient('edge-stats');\n\nexport default nhlClient;\nexport { edgeStatsClient };\n","/**\r\n * Date utility functions for NHL API\r\n * Provides functions for formatting dates and handling seasons\r\n */\r\n\r\nexport const NHL_TIMEZONE = 'America/New_York';\r\nexport const NHL_START_DATE = new Date('1916-12-19'); // 1 year prior to the first NHL game\r\nexport const NHL_END_DATE = new Date('2026-04-17'); // 1 year after the last game of the 2024-2025 season\r\n\r\n/**\r\n * Formats a date object into a string in the format YYYY-MM-DD\r\n * @param date - The date object to format\r\n * @returns The formatted date string\r\n */\r\nexport const getDate = (date: Date): string =>\r\n   new Intl.DateTimeFormat('en-CA', {\r\n      timeZone: NHL_TIMEZONE,\r\n      year: 'numeric',\r\n      month: '2-digit',\r\n      day: '2-digit',\r\n   }).format(date);\r\n/**\r\n * Returns the current date formatted as YYYY-MM-DD.\r\n * This is a convenience method that calls getDate with the current date.\r\n * @returns The current date formatted as YYYY-MM-DD\r\n */\r\nexport const getCurrentDate = (): string => getDate(new Date());\r\n\r\n/**\r\n * Formats a date object into a string representing the month in YYYY-MM format\r\n * @param date - The date object to format\r\n * @returns The formatted month string\r\n */\r\nexport const getMonth = (date: Date): string => {\r\n   return new Intl.DateTimeFormat('en-CA', {\r\n      timeZone: NHL_TIMEZONE,\r\n      year: 'numeric',\r\n      month: '2-digit',\r\n   }).format(date);\r\n};\r\n\r\n/**\r\n * Returns the current month formatted as YYYY-MM\r\n * This is a convenience method that calls getMonth with the current date\r\n * @returns The current month formatted as YYYY-MM\r\n */\r\nexport const getCurrentMonth = (): string => getMonth(new Date());\r\n\r\n/**\r\n * Formats a date object into a string representing the year in YYYY format\r\n * @param date - The date object to format\r\n * @returns The formatted year string\r\n */\r\nexport const getYear = (date: Date): string =>\r\n   new Intl.DateTimeFormat('en-CA', {\r\n      timeZone: NHL_TIMEZONE,\r\n      year: 'numeric',\r\n   }).format(date);\r\n/**\r\n * Returns the current year formatted as YYYY\r\n * This is a convenience method that calls getYear with the current date\r\n * @returns The current year formatted as YYYY\r\n */\r\nexport const getCurrentYear = (): string => getYear(new Date());\r\n/**\r\n * Returns the season associated with the specified date in the format yyyyYYYY (e.g., 20232024)\r\n * @param date - The date object to parse the season from\r\n * @returns The current season formatted as yyyyYYYY\\\r\n * @throws Error if the provided date is invalid\r\n */\r\nexport const getSeason = (date: string | Date): string => {\r\n   const format = new Intl.DateTimeFormat('en-CA', {\r\n      timeZone: NHL_TIMEZONE,\r\n      year: 'numeric',\r\n      month: 'numeric',\r\n   }).formatToParts(date instanceof Date ? date : new Date(date));\r\n   const month = format.find((part) => part.type === 'month')?.value;\r\n   const year = format.find((part) => part.type === 'year')?.value;\r\n   if (!year) {\r\n      throw new Error('Invalid date provided, could not extract year');\r\n   }\r\n   if (month && parseInt(month, 10) < 7) {\r\n      console.log(month, parseInt(month, 10) < 7);\r\n      return `${parseInt(year, 10) - 1}${year}`;\r\n   }\r\n   return `${year}${parseInt(year, 10) + 1}`;\r\n};\r\n/**\r\n * Returns the current season in the format yyyyYYYY (e.g., 20232024)\r\n * This is a convenience method that calls getSeason with the current date\r\n * @returns The current season formatted as yyyyYYYY\r\n */\r\nexport const getCurrentSeason = (): string => getSeason(new Date());\r\n","/** Categories for save location top-10 list */\nexport const SaveLocationCategoryEnum = {\n   /** Save Percentage */\n   'SV%': 'save-pctg',\n   /** Saves */\n   SV: 'saves',\n   /** Shots Against */\n   SA: 'shots-against',\n   /** Goals Against */\n   GA: 'goals-against',\n} as const;\n\n/** Sort options for shot location top-10 list */\nexport const ShotLocationSortEnum = {\n   /** All shot locations */\n   ALL: 'all',\n   /** High-danger (i.e. close-range) shot locations */\n   HIGH: 'high',\n   /** Mid-range shot locations */\n   MID: 'mid',\n   /** Long-range shot locations */\n   LONG: 'long',\n} as const;\n\n/** Alias for ShotLocationSortEnum */\nexport const SaveLocationSortEnum = ShotLocationSortEnum;\n\n/** Sort options for 5v5 save percentage top-10 list */\nexport const SavePercentage5v5SortEnum = {\n   /**5v5 Save %: The percentage of shots a goalie stops at even strength (5-on-5). */\n   '5v5-SV%': 'save-pctg',\n   /**5v5 Save % in Close Situations: A “close situation” is the time during which a game is tied in the first or second period, or within one goal in the third period. This stats helps how goalies perform in high-pressure situations.*/\n   '5v5-SV%-Close': 'save-pctg-close',\n   /**5v5 Shots Against: The total number of shots a goalie faces at even strength (5-on-5).*/\n   '5v5-SA': 'shots',\n   /**5v5 Shots Against per 60 Minutes: The total number of shots a goalie faces at even strength (5-on-5) normalized to a 60-minute game. */\n   '5v5-SA/60': 'shots-per-60',\n} as const;\n\n/** Sort options for save percentage top-10 list */\nexport const SavePercentageSortEnum = {\n   /** Starts above .900 */\n   GAMES: 'games',\n   /** Percentage of starts above .900 */\n   PCTG: 'pctg',\n} as const;\n\n/** Filter options for player positions */\nexport const PositionFilterEnum = {\n   /** Center */\n   ALL: 'all',\n   /** Left Wing */\n   FWD: 'forwards',\n   /** Right Wing */\n   DEF: 'defense',\n} as const;\n\n/** Categories for skater strength */\nexport const SkatersStrengthEnum = {\n   /** All strengths */\n   ALL: 'all',\n   /** Even strength */\n   ES: 'es',\n   /** Power play */\n   PP: 'pp',\n   /** Short-handed */\n   PK: 'pk',\n} as const;\n\n/** Sorting options for shot speed top-10 list */\nexport const ShotSpeedSortEnum = {\n   /** Hardest shot recorded by player */\n   MAX: 'max',\n   /** Shots over 100 mph */\n   'OVER-100': 'over-100',\n   /** Shots between 90 and 99 mph */\n   '90-99': '90-99',\n   /** Shots between 80 and 89 mph */\n   '80-89': '80-89',\n   /** Shots between 70 and 79 mph */\n   '70-79': '70-79',\n} as const;\n\n/** Sorting options for skating speed top-10 list */\nexport const SkatingSpeedSortEnum = {\n   /** Fastest skating speed recorded by player */\n   TOP: 'max',\n   /** Speed bursts recorded over 22 mph */\n   'OVER-22': 'over-22',\n   /** Speed bursts recorded between 20 and 22 mph */\n   '20-22': '20-22',\n   /** Speed bursts recorded between 18 and 20 mph */\n   '18-20': '18-20',\n} as const;\n\n/** Sorting options for skating distance top-10 list */\nexport const SkatingDistanceSortEnum = {\n   /** Total distance skated */\n   TOTAL: 'total',\n   /** Average distance skated per 60 minutes */\n   'PER-60': 'per-60',\n   /** Maximum distance skated in a single period */\n   'MAX-PERIOD': 'max-period',\n   /** Maximum distance skated in a single game */\n   'MAX-GAME': 'max-game',\n};\n\n/** Categories for shot location top-10 list */\nexport const ShotLocationCategoryEnum = {\n   /** Total shots on goal */\n   SOG: 'sog',\n   /** Total goals */\n   G: 'goals',\n   /** Shooting percentage */\n   'SH%': 'shooting-pctg',\n} as const;\n\n/** Sorting options for zone time top-10 lists. */\nexport const ZoneTimeSortEnum = {\n   /** Percentage of time spent in the offensive zone */\n   OZ: 'offensive',\n   /** Percentage of time spent in the defensive zone */\n   DZ: 'defensive',\n   /** Percentage of time spent in the neutral zone */\n   NZ: 'neutral',\n} as const;\n","","// Values are based on the NHL API documentation and other sources.\r\n// Last updated: 2025-10-23\r\n\r\n/**\r\n * All valid NHL team abbreviations and their corresponding team IDs.\r\n */\r\nexport const TeamsEnum = {\r\n   /** Anaheim Ducks */\r\n   ANA: 24,\r\n   /** Boston Bruins */\r\n   BOS: 6,\r\n   /** Buffalo Sabres */\r\n   BUF: 7,\r\n   /** Calgary Flames */\r\n   CGY: 20,\r\n   /** Carolina Hurricanes */\r\n   CAR: 12,\r\n   /** Chicago Blackhawks */\r\n   CHI: 16,\r\n   /** Colorado Avalanche */\r\n   COL: 21,\r\n   /** Columbus Blue Jackets */\r\n   CBJ: 29,\r\n   /** Dallas Stars */\r\n   DAL: 25,\r\n   /** Detroit Red Wings */\r\n   DET: 17,\r\n   /** Edmonton Oilers */\r\n   EDM: 22,\r\n   /** Florida Panthers */\r\n   FLA: 13,\r\n   /** Los Angeles Kings */\r\n   LAK: 26,\r\n   /** Minnesota Wild*/\r\n   MIN: 30,\r\n   /** Montreal Canadiens */\r\n   MTL: 8,\r\n   /** New Jersey Devils */\r\n   NJD: 1,\r\n   /** Nashville Predators */\r\n   NSH: 18,\r\n   /** New York Islanders */\r\n   NYI: 2,\r\n   /** New York Rangers */\r\n   NYR: 3,\r\n   /** Ottawa Senators */\r\n   OTT: 9,\r\n   /** Philadelphia Flyers */\r\n   PHI: 4,\r\n   /** Pittsburgh Penguins */\r\n   PIT: 5,\r\n   /** San Jose Sharks */\r\n   SJS: 28,\r\n   /** Seattle Kraken */\r\n   SEA: 55,\r\n   /** St. Louis Blues */\r\n   STL: 19,\r\n   /** Tampa Bay Lightning */\r\n   TBL: 14,\r\n   /** Toronto Maple Leafs */\r\n   TOR: 10,\r\n   /** Utah Hockey Club */\r\n   UTA: 59,\r\n   /** Vancouver Canucks */\r\n   VAN: 23,\r\n   /** Vegas Golden Knights */\r\n   VGK: 54,\r\n   /** Winnipeg Jets */\r\n   WPG: 52,\r\n   /** Washington Capitals */\r\n   WSH: 15,\r\n} as const;\r\n\r\nexport const TeamsReverseEnum = Object.fromEntries(\r\n   Object.entries(TeamsEnum).map(([key, value]) => [value, key]),\r\n) as Record<\r\n   (typeof TeamsEnum)[keyof typeof TeamsEnum],\r\n   keyof typeof TeamsEnum\r\n>;\r\n\r\n/**\r\n * All inactive NHL teams and their corresponding team IDs.\r\n */\r\nexport const InactiveTeamsEnum = {\r\n   /** Atlanta Flames (not active) */\r\n   AFM: 47,\r\n   /** Arizona Coyotes (not active) */\r\n   ARI: 53,\r\n   /** Atlanta Thrashers (not active) */\r\n   ATL: 11,\r\n   /**  Brooklyn Americans - (not active) */\r\n   BRK: 51,\r\n   /** California Golden Seals (aka Bay Area Seals) - (not active) */\r\n   CGS: 56,\r\n   /** Cleveland Barons - (not active) */\r\n   CLE: 49,\r\n   /** Colorado Rockies - (not active) */\r\n   CLR: 35,\r\n   /** Detroit Cougars - (not active) */\r\n   DCG: 40,\r\n   /** Detroit Falcons - (not active) */\r\n   DFL: 50,\r\n   /** Hamilton Tigers - (not active) */\r\n   HAM: 37,\r\n   /** Hartford Whalers - (not active) */\r\n   HFD: 34,\r\n   /** Kansas City Scouts - (not active) */\r\n   KCS: 48,\r\n   /** Montreal Maroons - (not active) */\r\n   MMR: 43,\r\n   /** Minnesota North Stars - (not active) */\r\n   MNS: 31,\r\n   /** Montreal Wanderers - (not active) */\r\n   MWN: 41,\r\n   /** New York Americans - (not active) */\r\n   NYA: 44,\r\n   /** California Seals (aka Oakland Seals) - (not active) */\r\n   OAK: 46,\r\n   /** Phoenix Coyotes - (not active) */\r\n   PHX: 27,\r\n   /** Pittsburgh Pirates - (not active) */\r\n   PIR: 38,\r\n   /** Quebec Bulldogs - (not active) */\r\n   QBD: 42,\r\n   /** Philadelphia Quakers - (not active) */\r\n   QUA: 39,\r\n   /** Quebec Nordiques - (not active) */\r\n   QUE: 32,\r\n   /** Ottawa Senators (original franchise) - (not active) */\r\n   SEN: 36,\r\n   /** St. Louis Eagles - (not active) */\r\n   SLE: 45,\r\n   /** Toronto Hockey Club (aka Toronto Arenas) - (not active) */\r\n   TAN: 57,\r\n   /** Toronto St. Patricks - (not active) */\r\n   TSP: 58,\r\n   /** Winnipeg Jets (original franchise) - (not active) */\r\n   WIN: 33,\r\n} as const;\r\n\r\nexport const InactiveTeamsReverseEnum = Object.fromEntries(\r\n   Object.entries(InactiveTeamsEnum).map(([key, value]) => [value, key]),\r\n) as Record<\r\n   (typeof InactiveTeamsEnum)[keyof typeof InactiveTeamsEnum],\r\n   keyof typeof InactiveTeamsEnum\r\n>;\r\n/**\r\n * All valid NHL seasons in yyyyYYYY format.\r\n */\r\nexport const SeasonsArray = [\r\n   19171918, 19181919, 19191920, 19201921, 19211922, 19221923, 19231924,\r\n   19241925, 19251926, 19261927, 19271928, 19281929, 19291930, 19301931,\r\n   19311932, 19321933, 19331934, 19341935, 19351936, 19361937, 19371938,\r\n   19381939, 19391940, 19401941, 19411942, 19421943, 19431944, 19441945,\r\n   19451946, 19461947, 19471948, 19481949, 19491950, 19501951, 19511952,\r\n   19521953, 19531954, 19541955, 19551956, 19561957, 19571958, 19581959,\r\n   19591960, 19601961, 19611962, 19621963, 19631964, 19641965, 19651966,\r\n   19661967, 19671968, 19681969, 19691970, 19701971, 19711972, 19721973,\r\n   19731974, 19741975, 19751976, 19761977, 19771978, 19781979, 19791980,\r\n   19801981, 19811982, 19821983, 19831984, 19841985, 19851986, 19861987,\r\n   19871988, 19881989, 19891990, 19901991, 19911992, 19921993, 19931994,\r\n   19941995, 19951996, 19961997, 19971998, 19981999, 19992000, 20002001,\r\n   20012002, 20022003, 20032004, 20052006, 20062007, 20072008, 20082009,\r\n   20092010, 20102011, 20112012, 20122013, 20132014, 20142015, 20152016,\r\n   20162017, 20172018, 20182019, 20192020, 20202021, 20212022, 20222023,\r\n   20232024, 20242025, 20252026,\r\n] as const;\r\n\r\n/**\r\n * All valid NHL playoff series letters.\r\n */\r\nexport const SeriesLetterEnum = {\r\n   /** Atlantic Division Round 1: D1 vs WC# */\r\n   A: 'A',\r\n   /** Atlantic Division Round 1: D2 vs D3 */\r\n   B: 'B',\r\n   /** Metropolitan Division Round 1: D1 vs WC# */\r\n   C: 'C',\r\n   /** Metropolitan Division Round 1: D2 vs D3 */\r\n   D: 'D',\r\n   /** Central Division Round 1: D1 vs WC# */\r\n   E: 'E',\r\n   /** Central Division Round 1: D2 vs D3 */\r\n   F: 'F',\r\n   /** Pacific Division Round 1: D1 vs WC# */\r\n   G: 'G',\r\n   /** Pacific Division Round 1: D2 vs D3 */\r\n   H: 'H',\r\n   /** Atlantic Division Round 2: Aw vs Bw */\r\n   I: 'I',\r\n   /** Metropolitan Division Round 2: Cw vs Dw */\r\n   J: 'J',\r\n   /** Central Division Round 2: Ew vs Fw */\r\n   K: 'K',\r\n   /** Pacific Division Round 2: Gw vs Hw */\r\n   L: 'L',\r\n   /** Eastern Conference Finals */\r\n   M: 'M',\r\n   /** Western Conference Finals*/\r\n   N: 'N',\r\n   /** Stanley Cup Finals */\r\n   O: 'O',\r\n} as const;\r\n\r\n/**\r\n * All valid NHL playoff series letters grouped by round.\r\n */\r\nexport const SeriesLetterByRound = {\r\n   R1: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],\r\n   R2: ['I', 'J', 'K', 'L'],\r\n   CF: ['M', 'N'],\r\n   SCF: ['O'],\r\n};\r\n/**\r\n * All valid NHL playoff series letters mapped to human-readable names.\r\n */\r\nexport const PlayoffSeriesEnum = {\r\n   Atlantic_R1_D1_vs_WC: 'A',\r\n   Atlantic_R1_D2_vs_D3: 'B',\r\n   Metropolitan_R1_D1_vs_WC: 'C',\r\n   Metropolitan_R1_D2_vs_D3: 'D',\r\n   Central_R1_D1_vs_WC: 'E',\r\n   Central_R1_D2_vs_D3: 'F',\r\n   Pacific_R1_D1_vs_WC: 'G',\r\n   Pacific_R1_D2_vs_D3: 'H',\r\n   Atlantic_R2_Aw_vs_Bw: 'I',\r\n   Metropolitan_R2_Cw_vs_Dw: 'J',\r\n   Central_R2_Ew_vs_Fw: 'K',\r\n   Pacific_R2_Gw_vs_Hw: 'L',\r\n   Eastern_Conference_Finals: 'M',\r\n   Western_Conference_Finals: 'N',\r\n   Stanley_Cup_Finals: 'O',\r\n};\r\n\r\n/**\r\n * All valid NHL game states.\r\n */\r\nexport const GameStateEnum = {\r\n   /** Future */\r\n   FUT: 'FUT',\r\n   /** Live */\r\n   LIV: 'LIV',\r\n   /** Finished */\r\n   FIN: 'FIN',\r\n} as const;\r\n\r\n/**\r\n * All valid NHL period types.\r\n */\r\nexport const PeriodTypeEnum = {\r\n   /** Regulation */\r\n   REG: 'REG',\r\n   /** Overtime */\r\n   OT: 'OT',\r\n   /** Shootout */\r\n   SO: 'SO',\r\n} as const;\r\n\r\n/**\r\n * All valid NHL game types.\r\n */\r\nexport const GameTypeEnum = {\r\n   /** Pre-season */\r\n   PRE: 1,\r\n   /** Regular season */\r\n   REG: 2,\r\n   /** Post-season (aka playoffs) */\r\n   POST: 3,\r\n   /** All-Star Game (unconfirmed) */\r\n   ASG: 4,\r\n   /** International (unconfirmed) */\r\n   INTL: 19,\r\n} as const;\r\n\r\n/**  */\r\nexport const SEASON_RANGE = {\r\n   START: SeasonsArray[0] as number,\r\n   END: SeasonsArray.at(-1) as number,\r\n};\r\n/**  */\r\nexport const START_SEASON = SEASON_RANGE.START;\r\n/**  */\r\nexport const END_SEASON = SEASON_RANGE.END;\r\n/**  */\r\nexport const YEAR_RANGE = {\r\n   START: parseInt(SEASON_RANGE.START.toString().slice(0, 4), 10),\r\n   END: parseInt(SEASON_RANGE.END.toString().slice(4, 8), 10),\r\n};\r\n/**  */\r\nexport const START_YEAR = YEAR_RANGE.START;\r\n/**  */\r\nexport const END_YEAR = YEAR_RANGE.END;\r\n/**  */\r\nexport const CURRENT = {\r\n   SEASON: SEASON_RANGE.END,\r\n   YEAR: YEAR_RANGE.END,\r\n};\r\n/**  */\r\nexport const PLAYER_ID_RANGE = { MIN: 8444000, MAX: 8489999 } as const;\r\n/**  */\r\nexport const TEAM_ID_RANGE = { MIN: 1, MAX: 59 } as const;\r\n// export const TEAM_ID_RANGE = {\r\n//    MIN: Object.values(TeamsEnum).reduce(\r\n//       (min, team) => Math.min(min, team),\r\n//       Infinity,\r\n//    ),\r\n//    MAX: Object.values(TeamsEnum).reduce(\r\n//       (max, team) => Math.max(max, team),\r\n//       -Infinity,\r\n//    ),\r\n// } as const;\r\n","import * as EA from './edge-adv.ts';\nimport * as ES from './edge-stats.ts';\n\nexport const EDGE = { ...EA, ...ES };\nexport * as NHL from './nhl.ts';\n","import { type } from 'arktype';\nimport { EDGE, NHL } from '#/constants/index.ts';\nimport { ValidationError } from '#/errors/index.ts';\nimport { getCurrentDate } from '#/utils/date.ts';\n\nexport function isParseError(value: unknown): value is type.errors {\n   return value instanceof type.errors;\n}\n\nexport function createValidationError(\n   parsed: unknown,\n   path: string,\n): ValidationError | null {\n   if (parsed instanceof type.errors) {\n      return new ValidationError(parsed.summary, { endpoint: path });\n   }\n   return null;\n}\n\nexport const Year = type(`${NHL.START_YEAR} <= number <= ${NHL.END_YEAR}`)\n   .or(\n      type('string.numeric.parse').narrow((v) => {\n         return v >= NHL.START_YEAR && v <= NHL.END_YEAR;\n      }),\n   )\n   .describe(`a valid year from ${NHL.START_YEAR} to ${NHL.END_YEAR}`);\n\nexport const Season = type('number.integer | string.numeric.parse')\n   .narrow((v): v is number => {\n      const yr = Math.trunc(v / 10000);\n      return typeof Year(yr) === 'number' && yr + 1 === v % 10000;\n   })\n   .pipe((v) => v.toString())\n   .describe(`a valid NHL season, e.g. ${NHL.CURRENT.SEASON}`);\n\nexport const TeamAbbrev = type\n   .enumerated(\n      ...(Object.keys(NHL.TeamsEnum) as (keyof typeof NHL.TeamsEnum)[]),\n      ...(Object.keys(\n         NHL.InactiveTeamsEnum,\n      ) as (keyof typeof NHL.InactiveTeamsEnum)[]),\n   )\n   .describe('a valid NHL team abbreviation');\n\nexport const TeamId = type\n   .enumerated(...Object.values(NHL.TeamsEnum))\n   .describe('a valid NHL team ID');\n\nexport const GameType = type\n   .enumerated(\n      ...(Object.keys(\n         NHL.GameTypeEnum,\n      ) as (keyof typeof NHL.GameTypeEnum)[]),\n   )\n   .pipe((v) => NHL.GameTypeEnum[v])\n   .or(type('1|2|3|4|19|\"1\"|\"2\"|\"3\"|\"4\"|\"19\"'))\n   .describe('a valid NHL game type (e.g., REG, PRE, POST)');\n\nexport const GameNumber = type('number')\n   .atLeast(1)\n   .atMost((82 * 32) / 2) // Max possible games in a season - need to bump to 84 per team in 2026-27\n   .or(\n      type('string.numeric.parse').narrow((v) => {\n         return v >= 1 && v <= (82 * 32) / 2;\n      }),\n   )\n   .pipe((v) => v.toString())\n   .describe('a valid NHL game number between 1 and 1312');\n\nexport const DraftRound = type('1 <= number <= 7')\n   .or(type(/^(1|2|3|4|5|6|7)$/))\n   .pipe((v) => (typeof v === 'number' ? v.toString() : v))\n   .describe('a valid NHL draft round (1-7)');\n\nexport const PlayoffRound = type('1 <= number <= 4')\n   .or(type(/^(1|2|3|4)$/))\n   .pipe((v) => (typeof v === 'number' ? v.toString() : v))\n   .describe('a valid NHL playoff round (1-4)');\n\nexport const EventId = type('number.integer | string.numeric.parse')\n   .narrow((v): v is number => Number.isInteger(v) && v > 0)\n   .describe('a positive integer representing an NHL event ID');\n\nexport const NHLDate = type('Date | string.date.iso')\n   .pipe((v) =>\n      typeof v === 'string'\n         ? new Date(v).toISOString().slice(0, 10)\n         : v.toISOString().slice(0, 10),\n   )\n   .describe(\n      'a valid date, either as a string (ISO date string) or a Date object',\n   );\nexport const NHLMonth = type('Date | string')\n   .narrow((v) => {\n      if (typeof v === 'string') {\n         return /^\\d{4}-\\d{2}$/.test(v);\n      } else if (v instanceof Date) {\n         return true;\n      }\n      return false;\n   })\n   .pipe((v) => (typeof v === 'string' ? v : v.toISOString().slice(0, 7)))\n   .describe(\n      'a valid month, either as a string (formatted as YYYY-MM) or a Date object',\n   );\n\nexport const GameTypeCode = type('1|2|3|4|19').describe(\n   'a valid NHL game type code (1=PRE, 2=REG, 3=POST, 4=ASG, 19=INTL)',\n);\n\nconst parseGameIdParts = type({\n   year: Year,\n   gameType: GameType,\n   gameNumber: GameNumber,\n});\n\nexport const GameId = type('number.integer | string.numeric.parse')\n   .narrow((v) => {\n      if (Number.isInteger(v) && v < 0) return false;\n      const year = Math.trunc(v / 1e6); // remove last 6 digits\n      const gameType = Math.trunc(v / 1e4) % 1e2; // remove last 4 digits, then get last 2 digits\n      const gameNumber = v % 1e4; // get last 4 digits\n      const valid = !(\n         parseGameIdParts({ year, gameType, gameNumber }) instanceof\n         type.errors\n      );\n      return valid;\n   })\n   .describe('a positive integer representing an NHL game ID');\n\nexport const SeriesLetter = type\n   .enumerated(...Object.values(NHL.SeriesLetterEnum))\n   .describe('a valid NHL playoff series letter (A-O)');\n\nexport const GameState = type\n   .enumerated(...Object.values(NHL.GameStateEnum))\n   .describe('a valid NHL game state');\n\nexport const CountryCode = type(/^[a-zA-Z]{2}$/)\n   .pipe((v) => v.toLowerCase())\n   .describe('a valid ISO 3166-1 alpha-2 country code, e.g. US, CA, RU');\n\nexport const PostalCode = type(/^[a-zA-Z]\\d[a-zA-Z] \\d[a-zA-Z]\\d$/)\n   .or(type(/^\\d{5}$/))\n   .describe(\n      'a valid postal code, either US ZIP code (5 digit) or Canadian postal code (A1A 1A1 format; space required)',\n   );\n\nexport const PlayerId = type('number')\n   .atLeast(NHL.PLAYER_ID_RANGE.MIN)\n   .atMost(NHL.PLAYER_ID_RANGE.MAX)\n   .or(\n      type('string.numeric.parse').narrow((v) => {\n         return (\n            v >= NHL.PLAYER_ID_RANGE.MIN && v <= NHL.PLAYER_ID_RANGE.MAX\n         );\n      }),\n   )\n   .pipe((v) => v.toString())\n   .describe('a valid NHL player ID');\n\nexport const SaveLocationCategory = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.SaveLocationCategoryEnum,\n      ) as (keyof typeof EDGE.SaveLocationCategoryEnum)[]),\n   )\n   .pipe((v) => EDGE.SaveLocationCategoryEnum[v]);\n\nexport const ShotLocationSort = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.ShotLocationSortEnum,\n      ) as (keyof typeof EDGE.ShotLocationSortEnum)[]),\n   )\n   .pipe((v) => EDGE.ShotLocationSortEnum[v]);\n\nexport const SaveLocationSort = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.SaveLocationSortEnum,\n      ) as (keyof typeof EDGE.SaveLocationSortEnum)[]),\n   )\n   .pipe((v) => EDGE.SaveLocationSortEnum[v]);\n\nexport const SavePercentage5v5Sort = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.SavePercentage5v5SortEnum,\n      ) as (keyof typeof EDGE.SavePercentage5v5SortEnum)[]),\n   )\n   .pipe((v) => EDGE.SavePercentage5v5SortEnum[v]);\n\nexport const SavePercentageSort = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.SavePercentageSortEnum,\n      ) as (keyof typeof EDGE.SavePercentageSortEnum)[]),\n   )\n   .pipe((v) => EDGE.SavePercentageSortEnum[v]);\n\nexport const PositionFilter = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.PositionFilterEnum,\n      ) as (keyof typeof EDGE.PositionFilterEnum)[]),\n   )\n   .pipe((v) => EDGE.PositionFilterEnum[v]);\n\nexport const SkatersStrength = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.SkatersStrengthEnum,\n      ) as (keyof typeof EDGE.SkatersStrengthEnum)[]),\n   )\n   .pipe((v) => EDGE.SkatersStrengthEnum[v]);\n\nexport const ShotSpeedSort = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.ShotSpeedSortEnum,\n      ) as (keyof typeof EDGE.ShotSpeedSortEnum)[]),\n   )\n   .pipe((v) => EDGE.ShotSpeedSortEnum[v]);\n\nexport const SkatingSpeedSort = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.SkatingSpeedSortEnum,\n      ) as (keyof typeof EDGE.SkatingSpeedSortEnum)[]),\n   )\n   .pipe((v) => EDGE.SkatingSpeedSortEnum[v]);\n\nexport const SkatingDistanceSort = type.enumerated(\n   ...(Object.keys(\n      EDGE.SkatingDistanceSortEnum,\n   ) as (keyof typeof EDGE.SkatingDistanceSortEnum)[]),\n);\n// .pipe((v) => C.SkatingDistanceSortEnum[v]);\n\nexport const ShotLocationCategory = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.ShotLocationCategoryEnum,\n      ) as (keyof typeof EDGE.ShotLocationCategoryEnum)[]),\n   )\n   .pipe((v) => EDGE.ShotLocationCategoryEnum[v]);\n\nexport const ZoneTimeSort = type\n   .enumerated(\n      ...(Object.keys(\n         EDGE.ZoneTimeSortEnum,\n      ) as (keyof typeof EDGE.ZoneTimeSortEnum)[]),\n   )\n   .pipe((v) => EDGE.ZoneTimeSortEnum[v]);\n\n/** utility types */\n\nexport const BaseParams = type({\n   season: Season.or('undefined').pipe((v) => v ?? NHL.CURRENT.SEASON),\n   gameType: GameType.or('undefined').pipe(\n      (v) => v ?? NHL.GameTypeEnum.REG,\n   ),\n});\n\nexport const SeasonAndGameType = type({\n   season: Season.or('undefined').optional(),\n   gameType: GameType.or('undefined').optional(),\n});\n\nexport const PlayerParams = BaseParams.merge({\n   playerId: PlayerId,\n   season: Season,\n});\n\nexport const TeamParams = BaseParams.merge({\n   teamId: TeamId,\n});\n\nexport const top10Params = BaseParams.merge({\n   position: PositionFilter.default('ALL'),\n   strength: SkatersStrength.default('ALL'),\n});\n\nexport const DraftParams = type({\n   year: Year.or('undefined').pipe((v) => v ?? NHL.CURRENT.YEAR),\n   round: DraftRound.or('undefined').optional(),\n});\n\nexport const GameIdAndEventId = type({\n   gameId: GameId,\n   eventId: EventId,\n});\n\nexport const TeamAndSeasonParams = type({\n   team: TeamAbbrev,\n   season: Season.or('undefined').pipe((v) => v ?? NHL.CURRENT.SEASON),\n});\n\nexport const SeriesAndSeasonParams = type({\n   seriesLetter: SeriesLetter,\n   season: Season.or('undefined').pipe((v) => v ?? NHL.CURRENT.SEASON),\n});\n\nexport const SeriesParams = type({\n   seriesLetter: SeriesLetter,\n   year: Year.or('undefined').pipe((v) => v ?? NHL.CURRENT.YEAR),\n});\n\nexport const ScheduleParams = type({\n   team: TeamAbbrev,\n   date: NHLDate.or('undefined').pipe((v) => v ?? getCurrentDate()),\n   period: type('\"week\" | \"month\" | undefined').pipe((v) => v ?? 'week'),\n});\n","/**\n * Helper to construct API path with parameters\n */\nexport function route(\n   template: string,\n   params: Record<string, string | number | undefined>,\n): string {\n   let route = template;\n   for (const [key, value] of Object.entries(params)) {\n      if (value === undefined) continue;\n      route = route.replace(`{${key}}`, String(value));\n   }\n   return route;\n}\n","/**\n * Game-related API endpoints\n */\nimport nhlClient from '#/client/index.ts';\nimport type { APIResponse } from '#/client/types.ts';\nimport { ValidationError } from '#/errors/index.ts';\nimport type {\n   GamecenterBoxscore,\n   GamecenterLanding,\n   GamecenterPlayByPlay,\n   GamecenterReports,\n   LeagueSchedule,\n   NetworkTVSchedule,\n   PlayoffBracket,\n   PlayoffSeries,\n   PlayoffSeriesSchedule,\n   PPTReplayEvent,\n   PPTReplayGoal,\n   ScheduleCalendar,\n   WhereToWatch,\n   WSCGameStory,\n   WSCPlayByPlay,\n} from '#/types/responses/gamecenter/index.ts';\nimport {\n   getCurrentDate,\n   getCurrentSeason,\n   getCurrentYear,\n} from '#/utils/date.ts';\nimport {\n   GameId,\n   GameIdAndEventId,\n   isParseError,\n   NHLDate,\n   Season,\n   SeriesAndSeasonParams,\n   Year,\n} from '#/utils/schemas.ts';\nimport { route } from '#/utils/utils.ts';\n\nconst _paths = {\n   schedule: 'schedule/{date}',\n   scheduleCalendar: 'schedule-calendar/{date}',\n   playoffBracket: 'playoff-bracket/{year}',\n   playoffSeries: 'playoff-series/{season}',\n   playoffSeriesSchedule: 'schedule/playoff-series/{season}/{seriesLetter}',\n   gamecenter: {\n      playByPlay: 'gamecenter/{gameId}/play-by-play',\n      reports: 'gamecenter/{gameId}/right-rail',\n      landing: 'gamecenter/{gameId}/landing',\n      boxscore: 'gamecenter/{gameId}/boxscore',\n   },\n   wsc: {\n      gameStory: 'wsc/game-story/{gameId}',\n      playByPlay: 'wsc/play-by-play/{gameId}',\n   },\n   pptReplay: {\n      goal: 'ppt-replay/{gameId}/goal/{eventId}',\n      event: 'ppt-replay/{date}',\n   },\n   whereToWatch: 'where-to-watch',\n   networkTVSchedule: 'network/tv-schedule/{date}',\n};\n\n/**\n * Get play-by-play data for a specific game\n * @param gameId - The unique identifier for the game\n * @returns Promise resolving to play-by-play data\n */\nexport const playByPlay = (\n   gameId: string | number,\n): Promise<APIResponse<GamecenterPlayByPlay>> => {\n   const parsedGameId = GameId(gameId);\n   if (isParseError(parsedGameId)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedGameId.summary, {\n            endpoint: _paths.gamecenter.playByPlay,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.gamecenter.playByPlay, { gameId: parsedGameId }),\n   );\n};\n\n/**\n * Get reports data for a specific game\n * @param gameId - The unique identifier for the game\n * @returns Promise resolving to reports data\n * @note The official endpoint name is 'right-rail', as it is used\n * to populate the right rail UI component of the NHL website. The\n * function has been renamed to 'reports' for clarity.\n */\nexport const reports = (\n   gameId: string | number,\n): Promise<APIResponse<GamecenterReports>> => {\n   const parsedGameId = GameId(gameId);\n   if (isParseError(parsedGameId)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedGameId.summary, {\n            endpoint: _paths.gamecenter.reports,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.gamecenter.reports, { gameId: parsedGameId }),\n   );\n};\n/**\n * Get landing page data for a specific game\n * @param gameId - The unique identifier for the game\n * @returns Promise resolving to landing page data\n */\nexport const landing = (\n   gameId: string | number,\n): Promise<APIResponse<GamecenterLanding>> => {\n   const parsedGameId = GameId(gameId);\n   if (isParseError(parsedGameId)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedGameId.summary, {\n            endpoint: _paths.gamecenter.landing,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.gamecenter.landing, { gameId: parsedGameId }),\n   );\n};\n/**\n * Get boxscore data for a specific game\n * @param gameId - The unique identifier for the game\n * @returns Promise resolving to boxscore data\n */\nexport const boxscore = (\n   gameId: string | number,\n): Promise<APIResponse<GamecenterBoxscore>> => {\n   const parsedGameId = GameId(gameId);\n   if (isParseError(parsedGameId)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedGameId.summary, {\n            endpoint: _paths.gamecenter.boxscore,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.gamecenter.boxscore, { gameId: parsedGameId }),\n   );\n};\n\nexport const wsc = {\n   /**\n    * Get game story data for a specific game\n    * @param gameId - The unique identifier for the game\n    * @returns Promise resolving to game story data\n    */\n   gameStory: (\n      gameId: number | string,\n   ): Promise<APIResponse<WSCGameStory>> => {\n      const parsedGameId = GameId(gameId);\n      if (isParseError(parsedGameId)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsedGameId.summary, {\n               endpoint: _paths.wsc.gameStory,\n            }),\n         });\n      }\n      return nhlClient.get(\n         route(_paths.wsc.gameStory, { gameId: parsedGameId }),\n      );\n   },\n\n   /**\n    * Get play-by-play data for a specific game\n    * @param gameId - The unique identifier for the game\n    * @returns Promise resolving to play-by-play data\n    */\n   playByPlay: (\n      gameId: number | string,\n   ): Promise<APIResponse<WSCPlayByPlay>> => {\n      const parsedGameId = GameId(gameId);\n      if (isParseError(parsedGameId)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsedGameId.summary, {\n               endpoint: _paths.wsc.playByPlay,\n            }),\n         });\n      }\n      return nhlClient.get(\n         route(_paths.wsc.playByPlay, { gameId: parsedGameId }),\n      );\n   },\n};\n\n/**\n * Access PPT replay related endpoints\n */\nexport const pptReplay = {\n   /**\n    * Get goal replay data for a specific game and event\n    * @param gameId - The unique identifier for the game\n    * @param eventId - The unique identifier for the event\n    * @returns Promise resolving to goal replay data\n    */\n   goal: (\n      gameId: number | string,\n      eventId: number | string,\n   ): Promise<APIResponse<PPTReplayGoal>> => {\n      const parsed = GameIdAndEventId({ gameId, eventId });\n      if (isParseError(parsed)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsed.summary, {\n               endpoint: _paths.pptReplay.goal,\n            }),\n         });\n      }\n      return nhlClient.get(\n         route(_paths.pptReplay.goal, { gameId, eventId }),\n      );\n   },\n\n   /**\n    * Get event replay data for a specific date\n    * @param date - Date to get event replay data for (Date object or ISO date string)\n    * @returns Promise resolving to event replay data\n    */\n   event: async (\n      date: Date | string,\n   ): Promise<APIResponse<PPTReplayEvent>> => {\n      const parsedDate = NHLDate(date);\n      if (isParseError(parsedDate)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsedDate.summary, {\n               endpoint: _paths.pptReplay.event,\n            }),\n         });\n      }\n      return nhlClient.get(\n         route(_paths.pptReplay.event, { date: parsedDate }),\n      );\n   },\n};\n\n/**\n * Access schedule related endpoints\n */\nexport const schedule = (\n   date?: Date | string,\n): Promise<APIResponse<LeagueSchedule>> => {\n   const parsedDate = NHLDate(date ?? getCurrentDate());\n   if (isParseError(parsedDate)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedDate.summary, {\n            endpoint: _paths.schedule,\n         }),\n      });\n   }\n   return nhlClient.get(route(_paths.schedule, { date: parsedDate }));\n};\n\n/**\n * Access schedule calendar related endpoints\n */\nexport const scheduleCalendar = (\n   date?: Date | string,\n): Promise<APIResponse<ScheduleCalendar>> => {\n   const parsedDate = NHLDate(date);\n   if (isParseError(parsedDate)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedDate.summary, {\n            endpoint: _paths.scheduleCalendar,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.scheduleCalendar, { date: parsedDate }),\n   );\n};\n\n/**\n * Access playoff bracket related endpoints\n */\nexport const playoffBracket = (\n   year?: string,\n): Promise<APIResponse<PlayoffBracket>> => {\n   const parsedYear = Year(year ?? getCurrentYear());\n   if (isParseError(parsedYear)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedYear.summary, {\n            endpoint: _paths.playoffBracket,\n         }),\n      });\n   }\n   return nhlClient.get(route(_paths.playoffBracket, { year: parsedYear }));\n};\n\n/**\n * Access playoff series related endpoints\n */\nexport const playoffSeries = (\n   season?: string,\n): Promise<APIResponse<PlayoffSeries>> => {\n   const parsedSeason = Season(season ?? getCurrentSeason());\n   if (isParseError(parsedSeason)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedSeason.summary, {\n            endpoint: _paths.playoffSeries,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.playoffSeries, { season: parsedSeason }),\n   );\n};\n\n/**\n * Access playoff series schedule related endpoints\n */\nexport const playoffSeriesSchedule = (\n   seriesLetter: string,\n   season?: string,\n): Promise<APIResponse<PlayoffSeriesSchedule>> => {\n   const parsed = SeriesAndSeasonParams({\n      seriesLetter,\n      season: season ?? getCurrentSeason(),\n   });\n\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: _paths.playoffSeriesSchedule,\n         }),\n      });\n   }\n   // series letter is a single character from A to O (/[a-oA-O]/)\n   // Are series letters assigned in a pre determined manner?\n   return nhlClient.get(route(_paths.playoffSeriesSchedule, parsed));\n};\n\n/**\n * Access where-to-watch related endpoints\n */\nexport const whereToWatch = (): Promise<APIResponse<WhereToWatch>> =>\n   nhlClient.get(_paths.whereToWatch);\n\n/**\n * Access network related endpoints\n */\n/**\n * Get TV schedule data for a specific date\n * @param date - Date to get TV schedule data for (optional)\n * @returns Promise resolving to TV schedule data\n */\nexport const networkTVSchedule = (\n   date?: Date | string,\n): Promise<APIResponse<NetworkTVSchedule>> => {\n   const parsedDate = NHLDate(date ?? getCurrentDate());\n   if (isParseError(parsedDate)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedDate.summary, {\n            endpoint: _paths.networkTVSchedule,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.networkTVSchedule, { date: parsedDate }),\n   );\n};\n","/**\n * @module api/misc\n * @description Miscellaneous NHL API endpoints for meta information, location data, and other utility functions\n */\n\nimport nhlClient from '#/client/index.ts';\nimport type { APIResponse } from '#/client/types.ts';\nimport { ValidationError } from '#/errors/index.ts';\nimport type {\n   GameMeta,\n   LocationInfo,\n   NHLSeasons,\n   PartnerGameInfo,\n   PlayoffSeriesMeta,\n   PostalCodeInfo,\n} from '#/types/responses/gamecenter/index.ts';\nimport {\n   CountryCode,\n   GameId,\n   isParseError,\n   PostalCode,\n   SeriesParams,\n} from '#/utils/schemas.ts';\nimport { route } from '#/utils/utils.ts';\n\nconst _paths = {\n   season: 'season',\n   metaPlayoffSeries: 'meta/playoff-series/{year}/{seriesLetter}',\n   metaGame: 'meta/game/{gameId}',\n   postalLookup: 'postal-lookup/{postalCode}',\n   location: 'location',\n   partnerGame: 'partner-game/{countryCode}/now',\n};\n\n// returns a basic array of all valid NHL seasons\nexport const seasons = (): Promise<APIResponse<NHLSeasons>> => {\n   return nhlClient.get(_paths.season);\n};\n\nexport const meta = {\n   /**\n    * Get meta information for a playoff series\n    *\n    * @param year - The year in YYYY format\n    * @param seriesLetter - Single letter identifier for the playoff series\n    * @returns Promise resolving to playoff series meta information\n    */\n   playoffSeries: (\n      seriesLetter: string,\n      year?: number | string,\n   ): Promise<APIResponse<PlayoffSeriesMeta>> => {\n      const parsed = SeriesParams({ year, seriesLetter });\n      if (isParseError(parsed)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsed.summary, {\n               endpoint: _paths.metaPlayoffSeries,\n            }),\n         });\n      }\n      return nhlClient.get(route(_paths.metaPlayoffSeries, parsed));\n   },\n\n   /**\n    * Get meta information for a specific game\n    *\n    * @param gameId - The unique game identifier\n    * @returns Promise resolving to game meta information\n    */\n   game: (gameId: string | number): Promise<APIResponse<GameMeta>> => {\n      const parsedGameId = GameId(gameId);\n      if (isParseError(parsedGameId)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsedGameId.summary, {\n               endpoint: _paths.metaGame,\n            }),\n         });\n      }\n      return nhlClient.get(\n         route(_paths.metaGame, { gameId: parsedGameId }),\n      );\n   },\n};\n\n/**\n * Lookup information based on postal code\n *\n * @param postalCode - The postal/zip code to lookup\n * @returns Promise resolving to postal code information\n */\nexport const postalLookup = (\n   postalCode: string,\n): Promise<APIResponse<PostalCodeInfo>> => {\n   const parsedPostalCode = PostalCode(postalCode);\n   if (isParseError(parsedPostalCode)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedPostalCode.summary, {\n            endpoint: _paths.postalLookup,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.postalLookup, { postalCode: parsedPostalCode }),\n   );\n};\n\n/**\n * Get location information\n *\n * @returns Promise resolving to the location determined by the API\n *          (assumed to be based on the user's IP address)\n */\nexport const location = (): Promise<APIResponse<LocationInfo>> => {\n   return nhlClient.get(_paths.location);\n};\n\n/**\n * Get partner game information for a specific country\n *\n * @param countryCode - The two-letter country code (e.g. 'ca', 'se', 'cz', etc.)\n * @returns Promise resolving to partner game information\n */\nexport const partnerGame = (\n   countryCode: string,\n): Promise<APIResponse<PartnerGameInfo>> => {\n   const parsedCountryCode = CountryCode(countryCode);\n   if (isParseError(parsedCountryCode)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedCountryCode.summary, {\n            endpoint: _paths.partnerGame,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.partnerGame, { countryCode: parsedCountryCode }),\n   );\n};\n","/**\n *\n */\n\nimport nhlClient, { createNHLClient } from '#/client/index.ts';\nimport type { APIResponse } from '#/client/types.ts';\nimport { ValidationError } from '#/errors/index.ts';\nimport type {\n   GoalieStatsLeaders,\n   PlayerGameLog,\n   PlayerLanding,\n   PlayerSearchResult,\n   PlayerSpotlight,\n   SkaterStatsLeaders,\n} from '#/types/responses/gamecenter/index.ts';\nimport { BaseParams, isParseError, PlayerId } from '#/utils/schemas.ts';\nimport { route } from '#/utils/utils.ts';\n\nconst _paths = {\n   landing: 'player/{playerId}/landing',\n   gameLog: 'player/{playerId}/game-log/{season}/{gameType}',\n   spotlight: 'player-spotlight',\n   statsLeaders: {\n      skaters: 'skater-stats-leaders/{season}/{gameType}',\n      goalies: 'goalie-stats-leaders/{season}/{gameType}',\n   },\n   playerSearch: 'https://search.d3.nhle.com/api/v1/search/player',\n};\n\nconst nhlPlayerSearch = createNHLClient(_paths.playerSearch);\nconst searchUrlParams = { culture: 'en', q: '' };\n\n/**\n * Get player landing information\n * @param playerId - The unique player identifier\n * @returns Promise resolving to player landing information\n */\nexport const landing = (\n   playerId: number | string,\n): Promise<APIResponse<PlayerLanding>> => {\n   const parsedPlayerId = PlayerId(playerId);\n   if (isParseError(parsedPlayerId)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsedPlayerId.summary, {\n            endpoint: _paths.landing,\n         }),\n      });\n   }\n   return nhlClient.get(\n      route(_paths.landing, { playerId: parsedPlayerId }),\n   );\n};\n\nexport const gameLog = (\n   playerId: number | string,\n   season?: number | string,\n   gameType?: number | string,\n): Promise<APIResponse<PlayerGameLog>> => {\n   const Parser = BaseParams.merge({\n      playerId: PlayerId,\n   });\n   const parsed = Parser({ playerId, season, gameType });\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: _paths.gameLog,\n         }),\n      });\n   }\n   return nhlClient.get(route(_paths.gameLog, parsed));\n};\n\nexport const spotlight = (): Promise<APIResponse<PlayerSpotlight>> => {\n   return nhlClient.get(_paths.spotlight);\n};\n\nexport const search = (\n   query: string,\n): Promise<APIResponse<PlayerSearchResult>> => {\n   return nhlPlayerSearch.get('', {\n      ...searchUrlParams,\n      q: query,\n   });\n};\n\n/**\n * Access stats leaders related endpoints\n */\nexport const statsLeaders = {\n   /**\n    * Get skater stats leaders\n    * @param season - The season identifier (optional)\n    * @param gameType - The game type identifier (optional)\n    * @returns Promise resolving to skater stats leaders\n    */\n   skaters: (\n      season?: number | string,\n      gameType?: number | string,\n   ): Promise<APIResponse<SkaterStatsLeaders>> => {\n      const parsed = BaseParams({ season, gameType });\n      if (isParseError(parsed)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsed.summary, {\n               endpoint: _paths.statsLeaders.skaters,\n            }),\n         });\n      }\n      return nhlClient.get(route(_paths.statsLeaders.skaters, parsed));\n   },\n\n   /**\n    * Get goalie stats leaders\n    * @param season - The season identifier (optional)\n    * @param gameType - The game type identifier (optional)\n    * @returns Promise resolving to goalie stats leaders\n    */\n   goalies: (\n      season?: number | string,\n      gameType?: number | string,\n   ): Promise<APIResponse<GoalieStatsLeaders>> => {\n      const parsed = BaseParams({ season, gameType });\n      if (isParseError(parsed)) {\n         return Promise.resolve({\n            status: 'error',\n            error: new ValidationError(parsed.summary, {\n               endpoint: _paths.statsLeaders.goalies,\n            }),\n         });\n      }\n      return nhlClient.get(route(_paths.statsLeaders.goalies, parsed));\n   },\n};\n","import nhlClient from '#/client/index.ts';\nimport type { APIResponse } from '#/client/types.ts';\nimport { ValidationError } from '#/errors/index.ts';\nimport type { NHLScore, NHLScoreboard, TeamAbbrev } from '#/types/index.ts';\nimport { getCurrentDate } from '#/utils/date.ts';\nimport {\n   isParseError,\n   NHLDate,\n   TeamAbbrev as Team,\n} from '#/utils/schemas.ts';\nimport { route } from '#/utils/utils.ts';\n\nconst _paths = {\n   score: 'score/{date}',\n   scoreboard: {\n      now: 'scoreboard/now',\n      byTeam: 'scoreboard/{team}/now',\n      byDate: 'scoreboard/{date}',\n   },\n};\n\n/**\n * Access score related endpoints\n */\n/**\n * Get scores for a specific date\n * @param date - Date to get scores for (Date object or ISO date string)\n * @returns Promise resolving to scores for the specified date\n */\nexport const score = (\n   date?: Date | string,\n): Promise<APIResponse<NHLScore>> => {\n   const parsed = NHLDate(date ?? getCurrentDate());\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: _paths.score,\n         }),\n      });\n   }\n   return nhlClient.get(route(_paths.score, { date: parsed }));\n};\n\n/**\n * Access scoreboard related endpoints\n */\n\nexport const scoreboard = (): Promise<APIResponse<NHLScoreboard>> =>\n   nhlClient.get<NHLScoreboard>(_paths.scoreboard.now);\n/**\n * Get scoreboard data for a specific team\n * @param team - The team abbreviation\n * @returns Promise resolving to scoreboard data for the specified team\n */\nscoreboard.team = async (\n   team: TeamAbbrev,\n): Promise<APIResponse<NHLScoreboard>> => {\n   const parsed = Team(team);\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: _paths.scoreboard.byTeam,\n         }),\n      });\n   }\n   return nhlClient.get<NHLScoreboard>(\n      route(_paths.scoreboard.byTeam, { team: parsed }),\n   );\n};\n/**\n * Get scoreboard data for a specific date\n * @param date - Date to get scoreboard data for (Date object or ISO date string)\n * @returns Promise resolving to scoreboard data for the specified date\n */\nscoreboard.date = async (\n   date: Date | string,\n): Promise<APIResponse<NHLScoreboard>> => {\n   const parsed = NHLDate(date);\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: _paths.scoreboard.byDate,\n         }),\n      });\n   }\n   return nhlClient.get<NHLScoreboard>(\n      route(_paths.scoreboard.byDate, { date: parsed }),\n   );\n};\n","import nhlClient from '#/client/index.ts';\nimport type { APIResponse } from '#/client/types.ts';\nimport { ValidationError } from '#/errors/index.ts';\nimport type {\n   NHLMonth,\n   NHLStandings,\n   NHLStandingsSeason,\n   TeamProspects,\n   TeamRoster,\n   TeamRosterSeasons,\n   TeamScheduleMonth,\n   TeamScheduleSeason,\n   TeamScheduleWeek,\n   TeamStats,\n   TeamStatsSeason,\n} from '#/types/index.ts';\nimport { getCurrentDate } from '#/utils/date.ts';\nimport {\n   BaseParams,\n   isParseError,\n   NHLDate,\n   ScheduleParams,\n   TeamAbbrev,\n   TeamAndSeasonParams,\n} from '#/utils/schemas.ts';\nimport { route } from '../../utils/utils.ts';\n\nconst paths = {\n   rosterSeasons: 'roster-season/{team}',\n   roster: 'roster/{team}/{season}',\n   prospects: 'prospects/{team}',\n   clubStats: 'club-stats/{team}/{season}/{gameType}',\n   clubStatsSeason: 'club-stats-season/{team}',\n   standings: 'standings/{date}',\n   standingsSeason: 'standings-season',\n   clubSchedule: 'club-schedule/{team}/{period}/{date}',\n   clubScheduleSeason: 'club-schedule-season/{team}/{season}',\n};\n\n/**\n * Access roster seasons related endpoints\n */\nexport const rosterSeasons = (\n   team: string,\n): Promise<APIResponse<TeamRosterSeasons>> => {\n   const parsed = TeamAbbrev(team);\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.rosterSeasons,\n         }),\n      });\n   }\n   return nhlClient.get(route(paths.rosterSeasons, { team: parsed }));\n};\n\n/**\n * Access roster related endpoints\n */\nexport const roster = (\n   team: string,\n   season?: string | number,\n): Promise<APIResponse<TeamRoster>> => {\n   const parsed = TeamAndSeasonParams({ team, season });\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.roster,\n         }),\n      });\n   }\n   return nhlClient.get(route(paths.roster, parsed));\n};\n\n/**\n * Access prospects related endpoints\n */\nexport const prospects = (\n   team: string,\n): Promise<APIResponse<TeamProspects>> => {\n   const parsed = TeamAbbrev(team);\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.prospects,\n         }),\n      });\n   }\n   return nhlClient.get(route(paths.prospects, { team: parsed }));\n};\n\n/**\n * Access club stats related endpoints\n */\nexport const clubStats = (\n   team: string,\n   season?: string | number,\n   gameType?: string | number,\n): Promise<APIResponse<TeamStats>> => {\n   const Parser = BaseParams.merge({\n      team: TeamAbbrev,\n   });\n   const parsed = Parser({ team, season, gameType });\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.clubStats,\n         }),\n      });\n   }\n   return nhlClient.get(route(paths.clubStats, parsed));\n};\n\n/**\n * Access club stats season related endpoints\n */\nexport const clubStatsSeason = (\n   team: string,\n): Promise<APIResponse<TeamStatsSeason>> => {\n   const parsed = TeamAbbrev(team);\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.clubStatsSeason,\n         }),\n      });\n   }\n   return nhlClient.get(route(paths.clubStatsSeason, { team: parsed }));\n};\n\n/**\n * Access standings related endpoints\n */\nexport const standings = (\n   date?: Date | string,\n): Promise<APIResponse<NHLStandings>> => {\n   const parsed = NHLDate(date ?? getCurrentDate());\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.standings,\n         }),\n      });\n   }\n   return nhlClient.get(route(paths.standings, { date: parsed }));\n};\n\n/**\n * Access standings season related endpoints\n */\nexport const standingsSeason = (): Promise<\n   APIResponse<NHLStandingsSeason>\n> => {\n   return nhlClient.get(paths.standingsSeason);\n};\n\n/**\n * Access club schedule related endpoints\n */\nconst clubSchedule = (\n   team: string,\n   date?: Date | string,\n   period?: 'week' | 'month',\n): Promise<APIResponse<TeamScheduleWeek | TeamScheduleMonth>> => {\n   const parsed = ScheduleParams({ team, date, period });\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.clubSchedule,\n         }),\n      });\n   }\n   if (period === 'month') {\n      parsed.date = parsed.date?.slice(0, 7); // 'YYYY-MM'\n   }\n   return nhlClient.get(route(paths.clubSchedule, parsed));\n};\n\n/**\n * Access club schedule season related endpoints\n */\nconst clubScheduleSeason = (\n   team: string,\n   season?: number,\n): Promise<APIResponse<TeamScheduleSeason>> => {\n   const parsed = TeamAndSeasonParams({ team, season });\n   if (isParseError(parsed)) {\n      return Promise.resolve({\n         status: 'error',\n         error: new ValidationError(parsed.summary, {\n            endpoint: paths.clubScheduleSeason,\n         }),\n      });\n   }\n   return nhlClient.get(route(paths.clubScheduleSeason, parsed));\n};\n\nexport const schedule = {\n   /** Returns the full season schedule for the provided team and season\n    * @param team - The team abbreviation for the desired team\n    * @param season - The specific season (e.g. 20222023); if not provided, defaults to the current season.\n    * @returns A promise that resolves to the full season schedule for the specified team and season\n    * @example\n    * ```ts\n    * // Get the full season schedule for the Boston Bruins for the 2022-2023 season\n    * schedule.season('BOS', 20222023).then((data) => {\n    *    console.log(data);\n    * });\n    * ```\n    */\n   season: clubScheduleSeason,\n\n   /**\n    * Get the team schedule for any seven-day period\n    * @param team - The team abbreviation\n    * @param date - The date indicating the start of the seven-day period.\n    * If not provided, defaults to the current date. format: 'YYYY-MM'\n    * @returns A promise that resolves to the club schedule for the specified week\n    *\n    * @example\n    * ```ts\n    * import { schedule } from 'nhle-api';\n    *\n    * // Get the schedule for the Chicago Blackhawks for the week of November 4, 2023\n    * // This returns the schedule from November 4 to November 10, 2023\n    * schedule.week('CHI', '2023-11-04').then((data) => {\n    *    console.log(data);\n    * });\n    * ```\n    */\n   week: (\n      team: string,\n      date?: Date | string,\n   ): Promise<APIResponse<TeamScheduleWeek>> =>\n      clubSchedule(team, date, 'week'),\n\n   /**\n    * Get the team schedule for any month\n    * @param team - The team abbreviation\n    * @param date - The date indicating the month to get the schedule for.\n    * If not provided, defaults to the current month. format: 'YYYY-MM'\n    * @returns A promise that resolves to the club schedule for the specified month\n    *\n    * @example\n    * ```ts\n    * import { schedule } from 'nhle-api';\n    *\n    * // Get the schedule for the Toronto Maple Leafs for November 2023\n    * schedule.month('TOR', '2023-11').then((data) => {\n    *    console.log(data);\n    * });\n    * ```\n    */\n   month: (\n      team: string,\n      date?: NHLMonth,\n   ): Promise<APIResponse<TeamScheduleMonth>> =>\n      clubSchedule(team, date, 'month'),\n};\n"]}