nhle-api 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants/edge-adv.ts","../src/constants/nhl.ts","../src/utils/date.ts","../src/constants/index.ts","../src/utils/cayenne-query-builder.ts","../src/utils/normalize.ts","../src/utils/team-branding.ts","../src/utils/utils.ts"],"names":[],"mappings":"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","file":"toolkit.cjs","sourcesContent":["/** 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","import { getCurrentSeason } from '#/utils/date.ts';\n\n// Values are based on the NHL API documentation and other sources.\n// Last updated: 2025-10-23\n\n/**\n * All valid NHL team abbreviations and their corresponding team IDs.\n */\nexport const TeamsEnum = {\n /** Anaheim Ducks */\n ANA: 24,\n /** Boston Bruins */\n BOS: 6,\n /** Buffalo Sabres */\n BUF: 7,\n /** Calgary Flames */\n CGY: 20,\n /** Carolina Hurricanes */\n CAR: 12,\n /** Chicago Blackhawks */\n CHI: 16,\n /** Colorado Avalanche */\n COL: 21,\n /** Columbus Blue Jackets */\n CBJ: 29,\n /** Dallas Stars */\n DAL: 25,\n /** Detroit Red Wings */\n DET: 17,\n /** Edmonton Oilers */\n EDM: 22,\n /** Florida Panthers */\n FLA: 13,\n /** Los Angeles Kings */\n LAK: 26,\n /** Minnesota Wild*/\n MIN: 30,\n /** Montreal Canadiens */\n MTL: 8,\n /** New Jersey Devils */\n NJD: 1,\n /** Nashville Predators */\n NSH: 18,\n /** New York Islanders */\n NYI: 2,\n /** New York Rangers */\n NYR: 3,\n /** Ottawa Senators */\n OTT: 9,\n /** Philadelphia Flyers */\n PHI: 4,\n /** Pittsburgh Penguins */\n PIT: 5,\n /** San Jose Sharks */\n SJS: 28,\n /** Seattle Kraken */\n SEA: 55,\n /** St. Louis Blues */\n STL: 19,\n /** Tampa Bay Lightning */\n TBL: 14,\n /** Toronto Maple Leafs */\n TOR: 10,\n /** Utah Hockey Club */\n UTA: 59,\n /** Vancouver Canucks */\n VAN: 23,\n /** Vegas Golden Knights */\n VGK: 54,\n /** Winnipeg Jets */\n WPG: 52,\n /** Washington Capitals */\n WSH: 15,\n} as const;\n\nexport const TeamsReverseEnum = Object.fromEntries(\n Object.entries(TeamsEnum).map(([key, value]) => [value, key]),\n) as Record<\n (typeof TeamsEnum)[keyof typeof TeamsEnum],\n keyof typeof TeamsEnum\n>;\n\n/**\n * All inactive NHL teams and their corresponding team IDs.\n */\nexport const InactiveTeamsEnum = {\n /** Atlanta Flames (not active) */\n AFM: 47,\n /** Arizona Coyotes (not active) */\n ARI: 53,\n /** Atlanta Thrashers (not active) */\n ATL: 11,\n /** Brooklyn Americans - (not active) */\n BRK: 51,\n /** California Golden Seals (aka Bay Area Seals) - (not active) */\n CGS: 56,\n /** Cleveland Barons - (not active) */\n CLE: 49,\n /** Colorado Rockies - (not active) */\n CLR: 35,\n /** Detroit Cougars - (not active) */\n DCG: 40,\n /** Detroit Falcons - (not active) */\n DFL: 50,\n /** Hamilton Tigers - (not active) */\n HAM: 37,\n /** Hartford Whalers - (not active) */\n HFD: 34,\n /** Kansas City Scouts - (not active) */\n KCS: 48,\n /** Montreal Maroons - (not active) */\n MMR: 43,\n /** Minnesota North Stars - (not active) */\n MNS: 31,\n /** Montreal Wanderers - (not active) */\n MWN: 41,\n /** New York Americans - (not active) */\n NYA: 44,\n /** California Seals (aka Oakland Seals) - (not active) */\n OAK: 46,\n /** Phoenix Coyotes - (not active) */\n PHX: 27,\n /** Pittsburgh Pirates - (not active) */\n PIR: 38,\n /** Quebec Bulldogs - (not active) */\n QBD: 42,\n /** Philadelphia Quakers - (not active) */\n QUA: 39,\n /** Quebec Nordiques - (not active) */\n QUE: 32,\n /** Ottawa Senators (original franchise) - (not active) */\n SEN: 36,\n /** St. Louis Eagles - (not active) */\n SLE: 45,\n /** Toronto Hockey Club (aka Toronto Arenas) - (not active) */\n TAN: 57,\n /** Toronto St. Patricks - (not active) */\n TSP: 58,\n /** Winnipeg Jets (original franchise) - (not active) */\n WIN: 33,\n} as const;\n\nexport const InactiveTeamsReverseEnum = Object.fromEntries(\n Object.entries(InactiveTeamsEnum).map(([key, value]) => [value, key]),\n) as Record<\n (typeof InactiveTeamsEnum)[keyof typeof InactiveTeamsEnum],\n keyof typeof InactiveTeamsEnum\n>;\n/**\n * All valid NHL seasons in yyyyYYYY format.\n */\nexport const SeasonsArray = [\n 19171918, 19181919, 19191920, 19201921, 19211922, 19221923, 19231924,\n 19241925, 19251926, 19261927, 19271928, 19281929, 19291930, 19301931,\n 19311932, 19321933, 19331934, 19341935, 19351936, 19361937, 19371938,\n 19381939, 19391940, 19401941, 19411942, 19421943, 19431944, 19441945,\n 19451946, 19461947, 19471948, 19481949, 19491950, 19501951, 19511952,\n 19521953, 19531954, 19541955, 19551956, 19561957, 19571958, 19581959,\n 19591960, 19601961, 19611962, 19621963, 19631964, 19641965, 19651966,\n 19661967, 19671968, 19681969, 19691970, 19701971, 19711972, 19721973,\n 19731974, 19741975, 19751976, 19761977, 19771978, 19781979, 19791980,\n 19801981, 19811982, 19821983, 19831984, 19841985, 19851986, 19861987,\n 19871988, 19881989, 19891990, 19901991, 19911992, 19921993, 19931994,\n 19941995, 19951996, 19961997, 19971998, 19981999, 19992000, 20002001,\n 20012002, 20022003, 20032004, 20052006, 20062007, 20072008, 20082009,\n 20092010, 20102011, 20112012, 20122013, 20132014, 20142015, 20152016,\n 20162017, 20172018, 20182019, 20192020, 20202021, 20212022, 20222023,\n 20232024, 20242025, 20252026,\n] as const;\n\n/**\n * All valid NHL playoff series letters.\n */\nexport const SeriesLetterEnum = {\n /** Atlantic Division Round 1: D1 vs WC# */\n A: 'A',\n /** Atlantic Division Round 1: D2 vs D3 */\n B: 'B',\n /** Metropolitan Division Round 1: D1 vs WC# */\n C: 'C',\n /** Metropolitan Division Round 1: D2 vs D3 */\n D: 'D',\n /** Central Division Round 1: D1 vs WC# */\n E: 'E',\n /** Central Division Round 1: D2 vs D3 */\n F: 'F',\n /** Pacific Division Round 1: D1 vs WC# */\n G: 'G',\n /** Pacific Division Round 1: D2 vs D3 */\n H: 'H',\n /** Atlantic Division Round 2: Aw vs Bw */\n I: 'I',\n /** Metropolitan Division Round 2: Cw vs Dw */\n J: 'J',\n /** Central Division Round 2: Ew vs Fw */\n K: 'K',\n /** Pacific Division Round 2: Gw vs Hw */\n L: 'L',\n /** Eastern Conference Finals */\n M: 'M',\n /** Western Conference Finals*/\n N: 'N',\n /** Stanley Cup Finals */\n O: 'O',\n} as const;\n\n/**\n * All valid NHL playoff series letters grouped by round.\n */\nexport const SeriesLetterByRound = {\n R1: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],\n R2: ['I', 'J', 'K', 'L'],\n CF: ['M', 'N'],\n SCF: ['O'],\n};\n/**\n * All valid NHL playoff series letters mapped to human-readable names.\n */\nexport const PlayoffSeriesEnum = {\n Atlantic_R1_D1_vs_WC: 'A',\n Atlantic_R1_D2_vs_D3: 'B',\n Metropolitan_R1_D1_vs_WC: 'C',\n Metropolitan_R1_D2_vs_D3: 'D',\n Central_R1_D1_vs_WC: 'E',\n Central_R1_D2_vs_D3: 'F',\n Pacific_R1_D1_vs_WC: 'G',\n Pacific_R1_D2_vs_D3: 'H',\n Atlantic_R2_Aw_vs_Bw: 'I',\n Metropolitan_R2_Cw_vs_Dw: 'J',\n Central_R2_Ew_vs_Fw: 'K',\n Pacific_R2_Gw_vs_Hw: 'L',\n Eastern_Conference_Finals: 'M',\n Western_Conference_Finals: 'N',\n Stanley_Cup_Finals: 'O',\n};\n\n/**\n * All valid NHL game states.\n */\nexport const GameStateEnum = {\n /** Future */\n FUT: 'FUT',\n /** Live */\n LIV: 'LIV',\n /** Finished */\n FIN: 'FIN',\n} as const;\n\n/**\n * All valid NHL period types.\n */\nexport const PeriodTypeEnum = {\n /** Regulation */\n REG: 'REG',\n /** Overtime */\n OT: 'OT',\n /** Shootout */\n SO: 'SO',\n} as const;\n\n/**\n * All valid NHL game types.\n */\nexport const GameTypeEnum = {\n /** Pre-season */\n PRE: 1,\n /** Regular season */\n REG: 2,\n /** Post-season (aka playoffs) */\n POST: 3,\n /** All-Star Game (unconfirmed) */\n ASG: 4,\n /** International (unconfirmed) */\n INTL: 19,\n} as const;\n\n/** */\nexport const SEASON_RANGE = {\n START: SeasonsArray[0] as number,\n END: SeasonsArray.at(-1) as number,\n};\n/** */\nexport const START_SEASON = SEASON_RANGE.START;\n/** */\nexport const END_SEASON = SEASON_RANGE.END;\n/** */\nexport const YEAR_RANGE = {\n START: parseInt(SEASON_RANGE.START.toString().slice(0, 4), 10),\n END: parseInt(SEASON_RANGE.END.toString().slice(4, 8), 10),\n};\n/** */\nexport const START_YEAR = YEAR_RANGE.START;\n/** */\nexport const END_YEAR = YEAR_RANGE.END;\n/** */\nexport const CURRENT = {\n /** The season for today's date, so the default never goes stale. */\n SEASON: Number(getCurrentSeason()),\n YEAR: YEAR_RANGE.END,\n};\n/** */\nexport const PLAYER_ID_RANGE = { MIN: 8444000, MAX: 8489999 } as const;\n/** */\nexport const TEAM_ID_RANGE = { MIN: 1, MAX: 59 } as const;\n// export const TEAM_ID_RANGE = {\n// MIN: Object.values(TeamsEnum).reduce(\n// (min, team) => Math.min(min, team),\n// Infinity,\n// ),\n// MAX: Object.values(TeamsEnum).reduce(\n// (max, team) => Math.max(max, team),\n// -Infinity,\n// ),\n// } as const;\n","/**\n * NHL season and date utilities.\n *\n * These helpers define the calendar semantics used by NHL API parameters.\n * Calendar values are evaluated in the NHL's eastern time zone\n * (`America/New_York`), regardless of the process's local time zone. Use\n * `getDate` and `getMonth` when converting `Date` values for API calls.\n */\n\n/** Canonical timezone for NHL calendar dates and API date parameters. */\nexport const NHL_TIMEZONE = 'America/New_York';\n\n/**\n * Formats a date as the NHL API's `YYYY-MM-DD` calendar parameter.\n *\n * The calendar date is resolved in {@link NHL_TIMEZONE}, not UTC.\n * @param date - A valid date to format.\n * @returns The date formatted as `YYYY-MM-DD`.\n * @throws RangeError If `date` is invalid.\n */\nexport const getNHLDate = (date: Date): string =>\n new Intl.DateTimeFormat('en-CA', {\n timeZone: NHL_TIMEZONE,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }).format(date);\n/**\n * Returns the current date as `YYYY-MM-DD` in the NHL eastern time zone.\n * @returns The current date formatted as `YYYY-MM-DD`.\n */\nexport const getCurrentNHLDate = (): string => getNHLDate(new Date());\n\n/**\n * Formats a date as the NHL API's `YYYY-MM` calendar parameter.\n *\n * The calendar month is resolved in {@link NHL_TIMEZONE}, not UTC.\n * @param date - A valid date to format.\n * @returns The month formatted as `YYYY-MM`.\n * @throws RangeError If `date` is invalid.\n */\nexport const getNHLMonth = (date: Date): string => {\n return new Intl.DateTimeFormat('en-CA', {\n timeZone: NHL_TIMEZONE,\n year: 'numeric',\n month: '2-digit',\n }).format(date);\n};\n\n/**\n * Returns the current month as `YYYY-MM` in the NHL eastern time zone.\n * @returns The current month formatted as `YYYY-MM`.\n */\nexport const getCurrentNHLMonth = (): string => getNHLMonth(new Date());\n\n/**\n * Formats a date as `YYYY` in the NHL eastern time zone.\n * @param date - A valid date to format.\n * @returns The year formatted as `YYYY`.\n * @throws RangeError If `date` is invalid.\n */\nexport const getYear = (date: Date): string =>\n new Intl.DateTimeFormat('en-CA', {\n timeZone: NHL_TIMEZONE,\n year: 'numeric',\n }).format(date);\n/**\n * Returns the current year as `YYYY` in the NHL eastern time zone.\n * @returns The current year formatted as `YYYY`.\n */\nexport const getCurrentNHLYear = (): string => getYear(new Date());\n/**\n * Returns the NHL season label associated with a date as `yyyyYYYY` (for\n * example, `20232024`). The season label starts on July 1: dates from\n * January through June belong to the season that started in the previous\n * calendar year, while dates from July through December belong to the season\n * starting in the current calendar year.\n *\n * The month is resolved in {@link NHL_TIMEZONE}.\n * @param date - A valid `Date` or a date string accepted by the `Date` constructor.\n * @returns The season formatted as `yyyyYYYY`.\n * @throws RangeError If the date is invalid.\n */\nexport const getSeason = (date: string | Date): string => {\n const format = new Intl.DateTimeFormat('en-CA', {\n timeZone: NHL_TIMEZONE,\n year: 'numeric',\n month: 'numeric',\n }).formatToParts(date instanceof Date ? date : new Date(date));\n const month = format.find((part) => part.type === 'month')?.value;\n const year = format.find((part) => part.type === 'year')?.value;\n if (!year) {\n throw new Error('Invalid date provided, could not extract year');\n }\n if (month && parseInt(month, 10) < 7) {\n return `${parseInt(year, 10) - 1}${year}`;\n }\n return `${year}${parseInt(year, 10) + 1}`;\n};\n/**\n * Returns the current NHL season as `yyyyYYYY` in the NHL eastern time zone.\n * @returns The current season formatted as `yyyyYYYY`.\n */\nexport const getCurrentSeason = (): string => getSeason(new Date());\n\n/** Lower bound used when validating NHL API date ranges. */\nexport const NHL_START_DATE = new Date('1917-12-01');\n\n/**\n * Upper bound for the current NHL season, set to June 30 of its ending year.\n */\nexport const NHL_END_DATE = new Date(\n `${getCurrentSeason().slice(4, 8)}-06-30`,\n);\n","import * as EA from './edge-adv.ts';\n\nexport const EDGE = { ...EA };\nexport * as NHL from './nhl.ts';\n","/**\n * Cayenne Expression Query Builder\n * A utility for constructing cayenneExp filter strings for the NHL Stats API\n * Cayenne expressions are filter strings used in the NHL Stats API to filter results\n *\n * Syntax: condition1=value1 and condition2=value2\n * Example: seasonId=20232024 and gameTypeId=2\n */\n\n/**\n * Represents a single condition in a Cayenne expression\n */\nexport interface CayenneCondition {\n field: string;\n operator: '=' | '!=' | '<' | '>' | '<=' | '>=' | 'in' | 'like';\n value: string | number | (string | number)[];\n logicalOp?: 'and' | 'or';\n}\n\n/**\n * Represents a grouped set of conditions\n */\nexport interface CayenneGroup {\n type: 'group';\n conditions: (CayenneCondition | CayenneGroup)[];\n logicalOp?: 'and' | 'or';\n}\n\n/**\n * Type for items that can be in the conditions array\n */\nexport type CayenneExpression = CayenneCondition | CayenneGroup;\n\n/**\n * Cayenne Expression Query Builder\n * Provides a fluent API for building complex filter strings\n */\nexport class CayenneQueryBuilder {\n private conditions: CayenneExpression[] = [];\n private currentLogicalOp: 'and' | 'or' = 'and';\n private groupStack: Array<{\n conditions: CayenneExpression[];\n logicalOp: 'and' | 'or';\n }> = [];\n\n /**\n * Start a new logical group\n * All subsequent conditions will be added to this group until endGroup() is called\n * @returns This builder instance for chaining\n * @example\n * builder\n * .equals('field1', 'value1')\n * .group()\n * .equals('field2', 'value2')\n * .or()\n * .equals('field3', 'value3')\n * .endGroup()\n * // Generates: \"field1=value1 and (field2=value2 or field3=value3)\"\n */\n group(): this {\n // Save the current conditions array and the logical operator that should connect this group\n this.groupStack.push({\n conditions: this.conditions,\n logicalOp: this.currentLogicalOp,\n });\n // Start a new conditions array for the group\n this.conditions = [];\n // Reset logical operator for the new group to AND (it will be overridden by the first condition's logicalOp)\n this.currentLogicalOp = 'and';\n return this;\n }\n\n /**\n * End the current logical group\n * @returns This builder instance for chaining\n * @throws Error if there's no open group\n */\n endGroup(): this {\n if (this.groupStack.length === 0) {\n throw new Error('Cannot end group: no open group found');\n }\n\n // Create a group from the current conditions\n const groupConditions = this.conditions;\n\n // Restore the parent conditions array and the logical operator for this group\n const parent = this.groupStack.pop();\n if (!parent) {\n throw new Error('Failed to restore parent context');\n }\n\n this.conditions = parent.conditions;\n // Use the parent's saved logical operator as the group's connecting operator\n const groupLogicalOp = parent.logicalOp;\n // Restore the parent's currentLogicalOp\n this.currentLogicalOp = parent.logicalOp;\n\n // Add the group to the parent\n const group: CayenneGroup = {\n type: 'group',\n conditions: groupConditions,\n logicalOp: groupLogicalOp,\n };\n\n this.conditions.push(group);\n return this;\n }\n\n /**\n * Set the logical operator to AND for subsequent conditions\n * @returns This builder instance for chaining\n */\n and(): this {\n this.currentLogicalOp = 'and';\n return this;\n }\n\n /**\n * Set the logical operator to OR for subsequent conditions\n * @returns This builder instance for chaining\n */\n or(): this {\n this.currentLogicalOp = 'or';\n return this;\n }\n\n /**\n * Add an equality condition\n * @param field - The field name to filter on\n * @param value - The value to match\n * @returns This builder instance for chaining\n */\n equals(field: string, value: string | number): this {\n this.conditions.push({\n field,\n operator: '=',\n value,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add a not-equal condition\n * @param field - The field name to filter on\n * @param value - The value to exclude\n * @returns This builder instance for chaining\n */\n notEquals(field: string, value: string | number): this {\n this.conditions.push({\n field,\n operator: '!=',\n value,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add a less-than condition\n * @param field - The field name to filter on\n * @param value - The upper bound (exclusive)\n * @returns This builder instance for chaining\n */\n lessThan(field: string, value: number): this {\n this.conditions.push({\n field,\n operator: '<',\n value,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add a greater-than condition\n * @param field - The field name to filter on\n * @param value - The lower bound (exclusive)\n * @returns This builder instance for chaining\n */\n greaterThan(field: string, value: number): this {\n this.conditions.push({\n field,\n operator: '>',\n value,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add a less-than-or-equal condition\n * @param field - The field name to filter on\n * @param value - The upper bound (inclusive)\n * @returns This builder instance for chaining\n */\n lessThanOrEqual(field: string, value: number): this {\n this.conditions.push({\n field,\n operator: '<=',\n value,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add a greater-than-or-equal condition\n * @param field - The field name to filter on\n * @param value - The lower bound (inclusive)\n * @returns This builder instance for chaining\n */\n greaterThanOrEqual(field: string, value: number): this {\n this.conditions.push({\n field,\n operator: '>=',\n value,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add an IN condition to match multiple values\n * @param field - The field name to filter on\n * @param values - Array of values to match against\n * @returns This builder instance for chaining\n * @example\n * builder.in('playerId', [8476791, 8477933, 8478402])\n * // Generates: \"playerId in (8476791, 8477933, 8478402)\"\n */\n in(field: string, values: (string | number)[]): this {\n if (values.length === 0) {\n throw new Error('IN condition requires at least one value');\n }\n this.conditions.push({\n field,\n operator: 'in',\n value: values,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add a LIKE condition for pattern matching\n * @param field - The field name to filter on\n * @param pattern - The pattern to match (supports % for wildcards)\n * @returns This builder instance for chaining\n * @example\n * builder.like('playerName', '%McDavid%')\n * // Generates: \"playerName like '%McDavid%'\"\n */\n like(field: string, pattern: string): this {\n this.conditions.push({\n field,\n operator: 'like',\n value: pattern,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Add a raw condition string\n * Useful for complex expressions or unsupported operators\n * @param condition - The raw condition string (e.g., \"playerId=8476791\")\n * @returns This builder instance for chaining\n */\n raw(condition: string): this {\n // Store as a special marker for raw conditions\n this.conditions.push({\n field: '__raw__',\n operator: '=',\n value: condition,\n logicalOp: this.currentLogicalOp,\n });\n return this;\n }\n\n /**\n * Build the cayenneExp string\n * @returns The formatted cayenneExp string ready for API consumption\n */\n build(): string {\n if (this.groupStack.length > 0) {\n throw new Error(\n `Cannot build: ${this.groupStack.length} group(s) still open. Call endGroup() to close them.`,\n );\n }\n\n const buildExpression = (\n items: CayenneExpression[],\n depth = 0,\n ): string => {\n return items\n .map((item, index) => {\n let expr = '';\n\n if ('type' in item && item.type === 'group') {\n // Handle grouped conditions\n const groupExpr = buildExpression(\n item.conditions,\n depth + 1,\n );\n expr = `(${groupExpr})`;\n } else if ('field' in item) {\n // Handle regular conditions\n const condition = item as CayenneCondition;\n\n if (condition.field === '__raw__') {\n expr = String(condition.value);\n } else if (condition.operator === 'in') {\n // Format IN operator with parentheses\n const values = Array.isArray(condition.value)\n ? condition.value.join(', ')\n : condition.value;\n expr = `${condition.field} in (${values})`;\n } else if (condition.operator === 'like') {\n // Format LIKE operator\n expr = `${condition.field} like '${condition.value}'`;\n } else {\n // Standard operators (=, !=, <, >, <=, >=)\n expr = `${condition.field}${condition.operator}${condition.value}`;\n }\n }\n\n // Add logical operator between conditions\n if (index < items.length - 1) {\n const nextItem = items[index + 1];\n if (nextItem) {\n const nextLogicalOp: string =\n ('logicalOp' in nextItem\n ? nextItem.logicalOp\n : undefined) || 'and';\n expr += ` ${nextLogicalOp}`;\n }\n }\n\n return expr;\n })\n .join(' ');\n };\n\n return buildExpression(this.conditions);\n }\n\n /**\n * Clear all conditions\n * @returns This builder instance for chaining\n */\n clear(): this {\n this.conditions = [];\n return this;\n }\n\n /**\n * Get the number of conditions currently in the builder\n */\n count(): number {\n return this.conditions.length;\n }\n}\n\n/**\n * Create a new CayenneQueryBuilder instance\n * @returns A new builder instance\n */\nexport function createCayenneQuery(): CayenneQueryBuilder {\n return new CayenneQueryBuilder();\n}\n\n/**\n * Quick helper to build a simple cayenneExp from an object\n * @param filters - An object where keys are field names and values are expected values\n * @returns The formatted cayenneExp string\n * @example\n * buildCayenneExp({ seasonId: '20232024', gameTypeId: 2 })\n * // Returns: \"seasonId=20232024 and gameTypeId=2\"\n */\nexport function buildCayenneExp(\n filters: Record<string, string | number>,\n): string {\n const builder = new CayenneQueryBuilder();\n Object.entries(filters).forEach(([field, value]) => {\n builder.equals(field, value);\n });\n return builder.build();\n}\n","const alternateAbbreviations: Record<string, string> = {\n CLS: 'CBJ',\n CAL: 'CGY',\n LA: 'LAK',\n 'L.A': 'LAK',\n MON: 'MTL',\n NJ: 'NJD',\n 'N.J': 'NJD',\n SJ: 'SJS',\n 'S.J': 'SJS',\n TB: 'TBL',\n 'T.B': 'TBL',\n UTAH: 'UTA',\n // confirm if the NHL has a standard for players with no team associated\n // NA: 'N/A',\n // '(N/A)': 'N/A',\n};\n\nexport const normalizeAbbrev = (abbrev: string): string => {\n const upperAbbrev = abbrev.toUpperCase();\n return alternateAbbreviations[upperAbbrev] ?? upperAbbrev;\n};\n","import type { NHL } from '#/constants/index.ts';\nimport { normalizeAbbrev } from '#/utils/normalize.ts';\n\n/** A CSS-compatible hexadecimal team colour. */\nexport type TeamColor = `#${string}`;\n\n/** The supported NHL logo treatments. */\nexport type TeamLogoTheme = 'light' | 'dark';\n\n/** Options for building an official NHL team logo URL. */\nexport interface TeamLogoOptions {\n theme?: TeamLogoTheme;\n secondary?: boolean;\n}\n\n/** Current colours and identity metadata for an NHL team. */\nexport interface TeamBranding {\n name: string;\n primaryColor: TeamColor;\n colors: Readonly<Record<string, TeamColor>>;\n}\n\n/** Historical colour set for a team or franchise. */\nexport interface HistoricalTeamColors {\n period: string;\n colors: Readonly<Record<string, TeamColor>>;\n}\n\ntype ActiveTeamAbbreviation = keyof typeof NHL.TeamsEnum;\n\n/**\n * Current NHL team colours.\n *\n * Values are based on the local NHL colour-code research dataset. The first\n * value in each `colors` object is the team's primary brand colour.\n */\nexport const TEAM_BRANDING = {\n ANA: {\n name: 'Anaheim Ducks',\n primaryColor: '#F47A38',\n colors: {\n orange: '#F47A38',\n metallicGold: '#B9975B',\n silver: '#C1C6C8',\n black: '#000000',\n },\n },\n BOS: {\n name: 'Boston Bruins',\n primaryColor: '#FFB81C',\n colors: { gold: '#FFB81C', black: '#000000' },\n },\n BUF: {\n name: 'Buffalo Sabres',\n primaryColor: '#003087',\n colors: {\n royalBlue: '#003087',\n gold: '#FFB81C',\n white: '#FFFFFF',\n },\n },\n CGY: {\n name: 'Calgary Flames',\n primaryColor: '#D2001C',\n colors: { red: '#D2001C', yellow: '#FAAF19', white: '#FFFFFF' },\n },\n CAR: {\n name: 'Carolina Hurricanes',\n primaryColor: '#CE1126',\n colors: {\n red: '#CE1126',\n white: '#FFFFFF',\n gray: '#A4A9AD',\n black: '#000000',\n },\n },\n CHI: {\n name: 'Chicago Blackhawks',\n primaryColor: '#CF0A2C',\n colors: {\n red: '#CF0A2C',\n orange: '#FF671B',\n green: '#00833E',\n yellow: '#FFD100',\n tan: '#D18A00',\n blue: '#001970',\n black: '#000000',\n white: '#FFFFFF',\n },\n },\n COL: {\n name: 'Colorado Avalanche',\n primaryColor: '#6F263D',\n colors: {\n burgundy: '#6F263D',\n blue: '#236192',\n silver: '#A2AAAD',\n black: '#000000',\n },\n },\n CBJ: {\n name: 'Columbus Blue Jackets',\n primaryColor: '#002654',\n colors: {\n unionBlue: '#002654',\n goalRed: '#CE1126',\n capitalSilver: '#A4A9AD',\n },\n },\n DAL: {\n name: 'Dallas Stars',\n primaryColor: '#006847',\n colors: {\n victoryGreen: '#006847',\n silver: '#8F8F8C',\n black: '#111111',\n },\n },\n DET: {\n name: 'Detroit Red Wings',\n primaryColor: '#CE1126',\n colors: { red: '#CE1126', white: '#FFFFFF' },\n },\n EDM: {\n name: 'Edmonton Oilers',\n primaryColor: '#041E42',\n colors: { blue: '#041E42', orange: '#FF4C00' },\n },\n FLA: {\n name: 'Florida Panthers',\n primaryColor: '#041E42',\n colors: { navy: '#041E42', red: '#C8102E', tan: '#B9975B' },\n },\n LAK: {\n name: 'Los Angeles Kings',\n primaryColor: '#111111',\n colors: { black: '#111111', silver: '#A2AAAD', white: '#FFFFFF' },\n },\n MIN: {\n name: 'Minnesota Wild',\n primaryColor: '#A6192E',\n colors: {\n ironRangeRed: '#A6192E',\n forestGreen: '#154734',\n gold: '#EAAA00',\n minnesotaWheat: '#DDCBA4',\n },\n },\n MTL: {\n name: 'Montreal Canadiens',\n primaryColor: '#AF1E2D',\n colors: { red: '#AF1E2D', blue: '#192168' },\n },\n NJD: {\n name: 'New Jersey Devils',\n primaryColor: '#CE1126',\n colors: { red: '#CE1126', black: '#000000', white: '#FFFFFF' },\n },\n NSH: {\n name: 'Nashville Predators',\n primaryColor: '#FFB81C',\n colors: { gold: '#FFB81C', navyBlue: '#041E42', white: '#FFFFFF' },\n },\n NYI: {\n name: 'New York Islanders',\n primaryColor: '#00539B',\n colors: { blue: '#00539B', orange: '#F47D30' },\n },\n NYR: {\n name: 'New York Rangers',\n primaryColor: '#0038A8',\n colors: { blue: '#0038A8', red: '#CE1126', white: '#FFFFFF' },\n },\n OTT: {\n name: 'Ottawa Senators',\n primaryColor: '#000000',\n colors: {\n black: '#000000',\n red: '#DA1A32',\n gold: '#B79257',\n white: '#FFFFFF',\n },\n },\n PHI: {\n name: 'Philadelphia Flyers',\n primaryColor: '#F74902',\n colors: {\n flyersOrange: '#F74902',\n black: '#000000',\n white: '#FFFFFF',\n },\n },\n PIT: {\n name: 'Pittsburgh Penguins',\n primaryColor: '#000000',\n colors: {\n black: '#000000',\n gold: '#CFC493',\n yellow: '#FCB514',\n white: '#FFFFFF',\n },\n },\n SJS: {\n name: 'San Jose Sharks',\n primaryColor: '#006D75',\n colors: {\n teal: '#006D75',\n orange: '#EA7200',\n black: '#000000',\n white: '#FFFFFF',\n },\n },\n SEA: {\n name: 'Seattle Kraken',\n primaryColor: '#001628',\n colors: {\n deepSeaBlue: '#001628',\n iceBlue: '#99D9D9',\n boundlessBlue: '#355464',\n shadowBlue: '#68A2B9',\n redAlert: '#E9072B',\n },\n },\n STL: {\n name: 'St. Louis Blues',\n primaryColor: '#002F87',\n colors: {\n blue: '#002F87',\n yellow: '#FCB514',\n navyBlue: '#041E42',\n white: '#FFFFFF',\n },\n },\n TBL: {\n name: 'Tampa Bay Lightning',\n primaryColor: '#002868',\n colors: { blue: '#002868', white: '#FFFFFF' },\n },\n TOR: {\n name: 'Toronto Maple Leafs',\n primaryColor: '#00205B',\n colors: { blue: '#00205B', white: '#FFFFFF' },\n },\n UTA: {\n name: 'Utah Mammoth',\n primaryColor: '#69B3E7',\n colors: {\n mountainBlue: '#69B3E7',\n rockBlack: '#010101',\n saltWhite: '#FFFFFF',\n },\n },\n VAN: {\n name: 'Vancouver Canucks',\n primaryColor: '#00205B',\n colors: {\n blue: '#00205B',\n green: '#00843D',\n darkBlue: '#041C2C',\n gray: '#99999A',\n white: '#FFFFFF',\n },\n },\n VGK: {\n name: 'Vegas Golden Knights',\n primaryColor: '#B4975A',\n colors: {\n gold: '#B4975A',\n steelGray: '#333F42',\n red: '#C8102E',\n black: '#000000',\n white: '#FFFFFF',\n },\n },\n WSH: {\n name: 'Washington Capitals',\n primaryColor: '#041E42',\n colors: { navy: '#041E42', red: '#C8102E', white: '#FFFFFF' },\n },\n WPG: {\n name: 'Winnipeg Jets',\n primaryColor: '#041E42',\n colors: {\n navy: '#041E42',\n blue: '#004C97',\n red: '#AC162C',\n maroon: '#7B303E',\n darkGray: '#55565A',\n silver: '#8E9090',\n white: '#FFFFFF',\n },\n },\n} as const satisfies Record<ActiveTeamAbbreviation, TeamBranding>;\n\n/** Historical colour palettes included in the local research dataset. */\nexport const HISTORICAL_TEAM_COLORS = {\n ANA: {\n period: '1993-2006',\n colors: {\n green: '#00685E',\n purple: '#532A44',\n yellow: '#FCC72C',\n black: '#241E24',\n },\n },\n ARI: {\n period: '1996-2014',\n colors: {\n brickRed: '#8C2633',\n green: '#154734',\n desertSand: '#DDCBA4',\n brown: '#A9431E',\n purple: '#5F259F',\n },\n },\n BUF: {\n period: '2006-2020',\n colors: {\n navyBlue: '#002654',\n yellow: '#FCB514',\n silver: '#ADAFAA',\n red: '#C8102E',\n },\n },\n CGY: {\n period: '1994-2020',\n colors: {\n red: '#C8102E',\n gold: '#F1BE48',\n black: '#111111',\n white: '#FFFFFF',\n },\n },\n LAK: {\n period: '1967-1988',\n colors: {\n purple: '#572A84',\n goldenYellow: '#FFC80C',\n white: '#FFFFFF',\n },\n },\n OTT: {\n period: '2007-2020',\n colors: {\n red: '#C52032',\n gold: '#C2912C',\n black: '#000000',\n white: '#FFFFFF',\n },\n },\n} as const satisfies Record<string, HistoricalTeamColors>;\n\nconst NHL_LOGO_ASSET_URL = 'https://assets.nhle.com/logos/nhl/svg';\n\n/**\n * Returns current branding for an active team abbreviation.\n *\n * Alternate abbreviations such as `TB`, `LA`, and `UTAH` are normalized before\n * lookup. Returns `undefined` for unknown or inactive abbreviations.\n */\nexport function getTeamBranding(\n abbreviation: string,\n): (typeof TEAM_BRANDING)[ActiveTeamAbbreviation] | undefined {\n const normalized = normalizeAbbrev(\n abbreviation,\n ) as ActiveTeamAbbreviation;\n return TEAM_BRANDING[normalized];\n}\n\n/**\n * Builds an official NHL SVG logo URL for an active team.\n *\n * @throws {RangeError} If `abbreviation` is not an active NHL team.\n */\nexport function getTeamLogoUrl(\n abbreviation: string,\n options: TeamLogoOptions = {},\n): string {\n const normalized = normalizeAbbrev(\n abbreviation,\n ) as ActiveTeamAbbreviation;\n if (!getTeamBranding(normalized)) {\n throw new RangeError(\n `Unknown active NHL team abbreviation: ${abbreviation}`,\n );\n }\n\n const theme = options.theme ?? 'light';\n const secondary = options.secondary ? '_secondary' : '';\n return `${NHL_LOGO_ASSET_URL}/${normalized}${secondary}_${theme}.svg`;\n}\n","/**\n * Resolves a path template by replacing placeholders with actual values from the params object.\n * Placeholders in the template should be in the format `{key}` where `key` corresponds to a key in the params object.\n * If a value in params is undefined, the placeholder will not be replaced.\n *\n * @param template - The path template containing placeholders (e.g., '/teams/{team}/stats')\n * @param params - An object mapping placeholder keys to their replacement values (e.g., { team: 'TOR' })\n * @returns The resolved path with placeholders replaced by actual values (e.g., '/teams/TOR/stats')\n *\n * @example\n * const pathTemplate = '/teams/{team}/stats';\n * const params = { team: 'TOR' };\n * const resolvedPath = resolvePath(pathTemplate, params);\n * console.log(resolvedPath); // Output: '/teams/TOR/stats'\n */\nexport function resolvePath(\n template: string,\n params: Record<string, string | number | undefined>,\n): string {\n let resolvedPath = template;\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n resolvedPath = resolvedPath.replace(`{${key}}`, String(value));\n }\n return resolvedPath;\n}\n"]}
@@ -0,0 +1,502 @@
1
+ import { T as TeamsEnum } from './nhl-B7Hg7iMB.cjs';
2
+ export { a as CayenneCondition, c as CayenneExpression, d as CayenneGroup, C as CayenneQueryBuilder, n as NHL, b as buildCayenneExp, e as createCayenneQuery } from './nhl-B7Hg7iMB.cjs';
3
+
4
+ /**
5
+ * NHL season and date utilities.
6
+ *
7
+ * These helpers define the calendar semantics used by NHL API parameters.
8
+ * Calendar values are evaluated in the NHL's eastern time zone
9
+ * (`America/New_York`), regardless of the process's local time zone. Use
10
+ * `getDate` and `getMonth` when converting `Date` values for API calls.
11
+ */
12
+ /** Canonical timezone for NHL calendar dates and API date parameters. */
13
+ declare const NHL_TIMEZONE = "America/New_York";
14
+ /**
15
+ * Formats a date as the NHL API's `YYYY-MM-DD` calendar parameter.
16
+ *
17
+ * The calendar date is resolved in {@link NHL_TIMEZONE}, not UTC.
18
+ * @param date - A valid date to format.
19
+ * @returns The date formatted as `YYYY-MM-DD`.
20
+ * @throws RangeError If `date` is invalid.
21
+ */
22
+ declare const getNHLDate: (date: Date) => string;
23
+ /**
24
+ * Returns the current date as `YYYY-MM-DD` in the NHL eastern time zone.
25
+ * @returns The current date formatted as `YYYY-MM-DD`.
26
+ */
27
+ declare const getCurrentNHLDate: () => string;
28
+ /**
29
+ * Formats a date as the NHL API's `YYYY-MM` calendar parameter.
30
+ *
31
+ * The calendar month is resolved in {@link NHL_TIMEZONE}, not UTC.
32
+ * @param date - A valid date to format.
33
+ * @returns The month formatted as `YYYY-MM`.
34
+ * @throws RangeError If `date` is invalid.
35
+ */
36
+ declare const getNHLMonth: (date: Date) => string;
37
+ /**
38
+ * Returns the current month as `YYYY-MM` in the NHL eastern time zone.
39
+ * @returns The current month formatted as `YYYY-MM`.
40
+ */
41
+ declare const getCurrentNHLMonth: () => string;
42
+ /**
43
+ * Formats a date as `YYYY` in the NHL eastern time zone.
44
+ * @param date - A valid date to format.
45
+ * @returns The year formatted as `YYYY`.
46
+ * @throws RangeError If `date` is invalid.
47
+ */
48
+ declare const getYear: (date: Date) => string;
49
+ /**
50
+ * Returns the current year as `YYYY` in the NHL eastern time zone.
51
+ * @returns The current year formatted as `YYYY`.
52
+ */
53
+ declare const getCurrentNHLYear: () => string;
54
+ /**
55
+ * Returns the NHL season label associated with a date as `yyyyYYYY` (for
56
+ * example, `20232024`). The season label starts on July 1: dates from
57
+ * January through June belong to the season that started in the previous
58
+ * calendar year, while dates from July through December belong to the season
59
+ * starting in the current calendar year.
60
+ *
61
+ * The month is resolved in {@link NHL_TIMEZONE}.
62
+ * @param date - A valid `Date` or a date string accepted by the `Date` constructor.
63
+ * @returns The season formatted as `yyyyYYYY`.
64
+ * @throws RangeError If the date is invalid.
65
+ */
66
+ declare const getSeason: (date: string | Date) => string;
67
+ /**
68
+ * Returns the current NHL season as `yyyyYYYY` in the NHL eastern time zone.
69
+ * @returns The current season formatted as `yyyyYYYY`.
70
+ */
71
+ declare const getCurrentSeason: () => string;
72
+ /** Lower bound used when validating NHL API date ranges. */
73
+ declare const NHL_START_DATE: Date;
74
+ /**
75
+ * Upper bound for the current NHL season, set to June 30 of its ending year.
76
+ */
77
+ declare const NHL_END_DATE: Date;
78
+
79
+ declare const normalizeAbbrev: (abbrev: string) => string;
80
+
81
+ /** A CSS-compatible hexadecimal team colour. */
82
+ type TeamColor = `#${string}`;
83
+ /** The supported NHL logo treatments. */
84
+ type TeamLogoTheme = 'light' | 'dark';
85
+ /** Options for building an official NHL team logo URL. */
86
+ interface TeamLogoOptions {
87
+ theme?: TeamLogoTheme;
88
+ secondary?: boolean;
89
+ }
90
+ /** Current colours and identity metadata for an NHL team. */
91
+ interface TeamBranding {
92
+ name: string;
93
+ primaryColor: TeamColor;
94
+ colors: Readonly<Record<string, TeamColor>>;
95
+ }
96
+ /** Historical colour set for a team or franchise. */
97
+ interface HistoricalTeamColors {
98
+ period: string;
99
+ colors: Readonly<Record<string, TeamColor>>;
100
+ }
101
+ type ActiveTeamAbbreviation = keyof typeof TeamsEnum;
102
+ /**
103
+ * Current NHL team colours.
104
+ *
105
+ * Values are based on the local NHL colour-code research dataset. The first
106
+ * value in each `colors` object is the team's primary brand colour.
107
+ */
108
+ declare const TEAM_BRANDING: {
109
+ readonly ANA: {
110
+ readonly name: "Anaheim Ducks";
111
+ readonly primaryColor: "#F47A38";
112
+ readonly colors: {
113
+ readonly orange: "#F47A38";
114
+ readonly metallicGold: "#B9975B";
115
+ readonly silver: "#C1C6C8";
116
+ readonly black: "#000000";
117
+ };
118
+ };
119
+ readonly BOS: {
120
+ readonly name: "Boston Bruins";
121
+ readonly primaryColor: "#FFB81C";
122
+ readonly colors: {
123
+ readonly gold: "#FFB81C";
124
+ readonly black: "#000000";
125
+ };
126
+ };
127
+ readonly BUF: {
128
+ readonly name: "Buffalo Sabres";
129
+ readonly primaryColor: "#003087";
130
+ readonly colors: {
131
+ readonly royalBlue: "#003087";
132
+ readonly gold: "#FFB81C";
133
+ readonly white: "#FFFFFF";
134
+ };
135
+ };
136
+ readonly CGY: {
137
+ readonly name: "Calgary Flames";
138
+ readonly primaryColor: "#D2001C";
139
+ readonly colors: {
140
+ readonly red: "#D2001C";
141
+ readonly yellow: "#FAAF19";
142
+ readonly white: "#FFFFFF";
143
+ };
144
+ };
145
+ readonly CAR: {
146
+ readonly name: "Carolina Hurricanes";
147
+ readonly primaryColor: "#CE1126";
148
+ readonly colors: {
149
+ readonly red: "#CE1126";
150
+ readonly white: "#FFFFFF";
151
+ readonly gray: "#A4A9AD";
152
+ readonly black: "#000000";
153
+ };
154
+ };
155
+ readonly CHI: {
156
+ readonly name: "Chicago Blackhawks";
157
+ readonly primaryColor: "#CF0A2C";
158
+ readonly colors: {
159
+ readonly red: "#CF0A2C";
160
+ readonly orange: "#FF671B";
161
+ readonly green: "#00833E";
162
+ readonly yellow: "#FFD100";
163
+ readonly tan: "#D18A00";
164
+ readonly blue: "#001970";
165
+ readonly black: "#000000";
166
+ readonly white: "#FFFFFF";
167
+ };
168
+ };
169
+ readonly COL: {
170
+ readonly name: "Colorado Avalanche";
171
+ readonly primaryColor: "#6F263D";
172
+ readonly colors: {
173
+ readonly burgundy: "#6F263D";
174
+ readonly blue: "#236192";
175
+ readonly silver: "#A2AAAD";
176
+ readonly black: "#000000";
177
+ };
178
+ };
179
+ readonly CBJ: {
180
+ readonly name: "Columbus Blue Jackets";
181
+ readonly primaryColor: "#002654";
182
+ readonly colors: {
183
+ readonly unionBlue: "#002654";
184
+ readonly goalRed: "#CE1126";
185
+ readonly capitalSilver: "#A4A9AD";
186
+ };
187
+ };
188
+ readonly DAL: {
189
+ readonly name: "Dallas Stars";
190
+ readonly primaryColor: "#006847";
191
+ readonly colors: {
192
+ readonly victoryGreen: "#006847";
193
+ readonly silver: "#8F8F8C";
194
+ readonly black: "#111111";
195
+ };
196
+ };
197
+ readonly DET: {
198
+ readonly name: "Detroit Red Wings";
199
+ readonly primaryColor: "#CE1126";
200
+ readonly colors: {
201
+ readonly red: "#CE1126";
202
+ readonly white: "#FFFFFF";
203
+ };
204
+ };
205
+ readonly EDM: {
206
+ readonly name: "Edmonton Oilers";
207
+ readonly primaryColor: "#041E42";
208
+ readonly colors: {
209
+ readonly blue: "#041E42";
210
+ readonly orange: "#FF4C00";
211
+ };
212
+ };
213
+ readonly FLA: {
214
+ readonly name: "Florida Panthers";
215
+ readonly primaryColor: "#041E42";
216
+ readonly colors: {
217
+ readonly navy: "#041E42";
218
+ readonly red: "#C8102E";
219
+ readonly tan: "#B9975B";
220
+ };
221
+ };
222
+ readonly LAK: {
223
+ readonly name: "Los Angeles Kings";
224
+ readonly primaryColor: "#111111";
225
+ readonly colors: {
226
+ readonly black: "#111111";
227
+ readonly silver: "#A2AAAD";
228
+ readonly white: "#FFFFFF";
229
+ };
230
+ };
231
+ readonly MIN: {
232
+ readonly name: "Minnesota Wild";
233
+ readonly primaryColor: "#A6192E";
234
+ readonly colors: {
235
+ readonly ironRangeRed: "#A6192E";
236
+ readonly forestGreen: "#154734";
237
+ readonly gold: "#EAAA00";
238
+ readonly minnesotaWheat: "#DDCBA4";
239
+ };
240
+ };
241
+ readonly MTL: {
242
+ readonly name: "Montreal Canadiens";
243
+ readonly primaryColor: "#AF1E2D";
244
+ readonly colors: {
245
+ readonly red: "#AF1E2D";
246
+ readonly blue: "#192168";
247
+ };
248
+ };
249
+ readonly NJD: {
250
+ readonly name: "New Jersey Devils";
251
+ readonly primaryColor: "#CE1126";
252
+ readonly colors: {
253
+ readonly red: "#CE1126";
254
+ readonly black: "#000000";
255
+ readonly white: "#FFFFFF";
256
+ };
257
+ };
258
+ readonly NSH: {
259
+ readonly name: "Nashville Predators";
260
+ readonly primaryColor: "#FFB81C";
261
+ readonly colors: {
262
+ readonly gold: "#FFB81C";
263
+ readonly navyBlue: "#041E42";
264
+ readonly white: "#FFFFFF";
265
+ };
266
+ };
267
+ readonly NYI: {
268
+ readonly name: "New York Islanders";
269
+ readonly primaryColor: "#00539B";
270
+ readonly colors: {
271
+ readonly blue: "#00539B";
272
+ readonly orange: "#F47D30";
273
+ };
274
+ };
275
+ readonly NYR: {
276
+ readonly name: "New York Rangers";
277
+ readonly primaryColor: "#0038A8";
278
+ readonly colors: {
279
+ readonly blue: "#0038A8";
280
+ readonly red: "#CE1126";
281
+ readonly white: "#FFFFFF";
282
+ };
283
+ };
284
+ readonly OTT: {
285
+ readonly name: "Ottawa Senators";
286
+ readonly primaryColor: "#000000";
287
+ readonly colors: {
288
+ readonly black: "#000000";
289
+ readonly red: "#DA1A32";
290
+ readonly gold: "#B79257";
291
+ readonly white: "#FFFFFF";
292
+ };
293
+ };
294
+ readonly PHI: {
295
+ readonly name: "Philadelphia Flyers";
296
+ readonly primaryColor: "#F74902";
297
+ readonly colors: {
298
+ readonly flyersOrange: "#F74902";
299
+ readonly black: "#000000";
300
+ readonly white: "#FFFFFF";
301
+ };
302
+ };
303
+ readonly PIT: {
304
+ readonly name: "Pittsburgh Penguins";
305
+ readonly primaryColor: "#000000";
306
+ readonly colors: {
307
+ readonly black: "#000000";
308
+ readonly gold: "#CFC493";
309
+ readonly yellow: "#FCB514";
310
+ readonly white: "#FFFFFF";
311
+ };
312
+ };
313
+ readonly SJS: {
314
+ readonly name: "San Jose Sharks";
315
+ readonly primaryColor: "#006D75";
316
+ readonly colors: {
317
+ readonly teal: "#006D75";
318
+ readonly orange: "#EA7200";
319
+ readonly black: "#000000";
320
+ readonly white: "#FFFFFF";
321
+ };
322
+ };
323
+ readonly SEA: {
324
+ readonly name: "Seattle Kraken";
325
+ readonly primaryColor: "#001628";
326
+ readonly colors: {
327
+ readonly deepSeaBlue: "#001628";
328
+ readonly iceBlue: "#99D9D9";
329
+ readonly boundlessBlue: "#355464";
330
+ readonly shadowBlue: "#68A2B9";
331
+ readonly redAlert: "#E9072B";
332
+ };
333
+ };
334
+ readonly STL: {
335
+ readonly name: "St. Louis Blues";
336
+ readonly primaryColor: "#002F87";
337
+ readonly colors: {
338
+ readonly blue: "#002F87";
339
+ readonly yellow: "#FCB514";
340
+ readonly navyBlue: "#041E42";
341
+ readonly white: "#FFFFFF";
342
+ };
343
+ };
344
+ readonly TBL: {
345
+ readonly name: "Tampa Bay Lightning";
346
+ readonly primaryColor: "#002868";
347
+ readonly colors: {
348
+ readonly blue: "#002868";
349
+ readonly white: "#FFFFFF";
350
+ };
351
+ };
352
+ readonly TOR: {
353
+ readonly name: "Toronto Maple Leafs";
354
+ readonly primaryColor: "#00205B";
355
+ readonly colors: {
356
+ readonly blue: "#00205B";
357
+ readonly white: "#FFFFFF";
358
+ };
359
+ };
360
+ readonly UTA: {
361
+ readonly name: "Utah Mammoth";
362
+ readonly primaryColor: "#69B3E7";
363
+ readonly colors: {
364
+ readonly mountainBlue: "#69B3E7";
365
+ readonly rockBlack: "#010101";
366
+ readonly saltWhite: "#FFFFFF";
367
+ };
368
+ };
369
+ readonly VAN: {
370
+ readonly name: "Vancouver Canucks";
371
+ readonly primaryColor: "#00205B";
372
+ readonly colors: {
373
+ readonly blue: "#00205B";
374
+ readonly green: "#00843D";
375
+ readonly darkBlue: "#041C2C";
376
+ readonly gray: "#99999A";
377
+ readonly white: "#FFFFFF";
378
+ };
379
+ };
380
+ readonly VGK: {
381
+ readonly name: "Vegas Golden Knights";
382
+ readonly primaryColor: "#B4975A";
383
+ readonly colors: {
384
+ readonly gold: "#B4975A";
385
+ readonly steelGray: "#333F42";
386
+ readonly red: "#C8102E";
387
+ readonly black: "#000000";
388
+ readonly white: "#FFFFFF";
389
+ };
390
+ };
391
+ readonly WSH: {
392
+ readonly name: "Washington Capitals";
393
+ readonly primaryColor: "#041E42";
394
+ readonly colors: {
395
+ readonly navy: "#041E42";
396
+ readonly red: "#C8102E";
397
+ readonly white: "#FFFFFF";
398
+ };
399
+ };
400
+ readonly WPG: {
401
+ readonly name: "Winnipeg Jets";
402
+ readonly primaryColor: "#041E42";
403
+ readonly colors: {
404
+ readonly navy: "#041E42";
405
+ readonly blue: "#004C97";
406
+ readonly red: "#AC162C";
407
+ readonly maroon: "#7B303E";
408
+ readonly darkGray: "#55565A";
409
+ readonly silver: "#8E9090";
410
+ readonly white: "#FFFFFF";
411
+ };
412
+ };
413
+ };
414
+ /** Historical colour palettes included in the local research dataset. */
415
+ declare const HISTORICAL_TEAM_COLORS: {
416
+ readonly ANA: {
417
+ readonly period: "1993-2006";
418
+ readonly colors: {
419
+ readonly green: "#00685E";
420
+ readonly purple: "#532A44";
421
+ readonly yellow: "#FCC72C";
422
+ readonly black: "#241E24";
423
+ };
424
+ };
425
+ readonly ARI: {
426
+ readonly period: "1996-2014";
427
+ readonly colors: {
428
+ readonly brickRed: "#8C2633";
429
+ readonly green: "#154734";
430
+ readonly desertSand: "#DDCBA4";
431
+ readonly brown: "#A9431E";
432
+ readonly purple: "#5F259F";
433
+ };
434
+ };
435
+ readonly BUF: {
436
+ readonly period: "2006-2020";
437
+ readonly colors: {
438
+ readonly navyBlue: "#002654";
439
+ readonly yellow: "#FCB514";
440
+ readonly silver: "#ADAFAA";
441
+ readonly red: "#C8102E";
442
+ };
443
+ };
444
+ readonly CGY: {
445
+ readonly period: "1994-2020";
446
+ readonly colors: {
447
+ readonly red: "#C8102E";
448
+ readonly gold: "#F1BE48";
449
+ readonly black: "#111111";
450
+ readonly white: "#FFFFFF";
451
+ };
452
+ };
453
+ readonly LAK: {
454
+ readonly period: "1967-1988";
455
+ readonly colors: {
456
+ readonly purple: "#572A84";
457
+ readonly goldenYellow: "#FFC80C";
458
+ readonly white: "#FFFFFF";
459
+ };
460
+ };
461
+ readonly OTT: {
462
+ readonly period: "2007-2020";
463
+ readonly colors: {
464
+ readonly red: "#C52032";
465
+ readonly gold: "#C2912C";
466
+ readonly black: "#000000";
467
+ readonly white: "#FFFFFF";
468
+ };
469
+ };
470
+ };
471
+ /**
472
+ * Returns current branding for an active team abbreviation.
473
+ *
474
+ * Alternate abbreviations such as `TB`, `LA`, and `UTAH` are normalized before
475
+ * lookup. Returns `undefined` for unknown or inactive abbreviations.
476
+ */
477
+ declare function getTeamBranding(abbreviation: string): (typeof TEAM_BRANDING)[ActiveTeamAbbreviation] | undefined;
478
+ /**
479
+ * Builds an official NHL SVG logo URL for an active team.
480
+ *
481
+ * @throws {RangeError} If `abbreviation` is not an active NHL team.
482
+ */
483
+ declare function getTeamLogoUrl(abbreviation: string, options?: TeamLogoOptions): string;
484
+
485
+ /**
486
+ * Resolves a path template by replacing placeholders with actual values from the params object.
487
+ * Placeholders in the template should be in the format `{key}` where `key` corresponds to a key in the params object.
488
+ * If a value in params is undefined, the placeholder will not be replaced.
489
+ *
490
+ * @param template - The path template containing placeholders (e.g., '/teams/{team}/stats')
491
+ * @param params - An object mapping placeholder keys to their replacement values (e.g., { team: 'TOR' })
492
+ * @returns The resolved path with placeholders replaced by actual values (e.g., '/teams/TOR/stats')
493
+ *
494
+ * @example
495
+ * const pathTemplate = '/teams/{team}/stats';
496
+ * const params = { team: 'TOR' };
497
+ * const resolvedPath = resolvePath(pathTemplate, params);
498
+ * console.log(resolvedPath); // Output: '/teams/TOR/stats'
499
+ */
500
+ declare function resolvePath(template: string, params: Record<string, string | number | undefined>): string;
501
+
502
+ export { HISTORICAL_TEAM_COLORS, type HistoricalTeamColors, NHL_END_DATE, NHL_START_DATE, NHL_TIMEZONE, TEAM_BRANDING, type TeamBranding, type TeamColor, type TeamLogoOptions, type TeamLogoTheme, getCurrentNHLDate, getCurrentNHLMonth, getCurrentNHLYear, getCurrentSeason, getNHLDate, getNHLMonth, getSeason, getTeamBranding, getTeamLogoUrl, getYear, normalizeAbbrev, resolvePath };