@ttt-productions/q-core 0.1.24 → 0.1.26

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.
Files changed (60) hide show
  1. package/dist/constants/admin-views.d.ts +3 -0
  2. package/dist/constants/admin-views.d.ts.map +1 -0
  3. package/dist/constants/admin-views.js +11 -0
  4. package/dist/constants/admin-views.js.map +1 -0
  5. package/dist/constants/index.d.ts +1 -0
  6. package/dist/constants/index.d.ts.map +1 -1
  7. package/dist/constants/index.js +1 -0
  8. package/dist/constants/index.js.map +1 -1
  9. package/dist/constants/scheduled-jobs.d.ts +7 -0
  10. package/dist/constants/scheduled-jobs.d.ts.map +1 -1
  11. package/dist/constants/scheduled-jobs.js +7 -0
  12. package/dist/constants/scheduled-jobs.js.map +1 -1
  13. package/dist/doc-schemas/audit-event.d.ts +4 -0
  14. package/dist/doc-schemas/audit-event.d.ts.map +1 -1
  15. package/dist/doc-schemas/pending-media.d.ts +0 -25
  16. package/dist/doc-schemas/pending-media.d.ts.map +1 -1
  17. package/dist/doc-schemas/registry.d.ts +6 -10
  18. package/dist/doc-schemas/registry.d.ts.map +1 -1
  19. package/dist/doc-schemas/sweep-state.d.ts +9 -0
  20. package/dist/doc-schemas/sweep-state.d.ts.map +1 -1
  21. package/dist/doc-schemas/sweep-state.js +11 -1
  22. package/dist/doc-schemas/sweep-state.js.map +1 -1
  23. package/dist/domain-events/domain-events.d.ts +0 -11
  24. package/dist/domain-events/domain-events.d.ts.map +1 -1
  25. package/dist/domain-events/domain-events.js +0 -7
  26. package/dist/domain-events/domain-events.js.map +1 -1
  27. package/dist/notifications/admin-notification-config.d.ts.map +1 -1
  28. package/dist/notifications/admin-notification-config.js +3 -3
  29. package/dist/notifications/admin-notification-config.js.map +1 -1
  30. package/dist/paths/app-routes.d.ts +40 -0
  31. package/dist/paths/app-routes.d.ts.map +1 -0
  32. package/dist/paths/app-routes.js +67 -0
  33. package/dist/paths/app-routes.js.map +1 -0
  34. package/dist/paths/index.d.ts +1 -0
  35. package/dist/paths/index.d.ts.map +1 -1
  36. package/dist/paths/index.js +1 -0
  37. package/dist/paths/index.js.map +1 -1
  38. package/dist/schemas/pictures.d.ts +0 -15
  39. package/dist/schemas/pictures.d.ts.map +1 -1
  40. package/dist/schemas/users.d.ts +1 -0
  41. package/dist/schemas/users.d.ts.map +1 -1
  42. package/dist/schemas/users.js +3 -0
  43. package/dist/schemas/users.js.map +1 -1
  44. package/dist/types/audit.d.ts +1 -1
  45. package/dist/types/audit.d.ts.map +1 -1
  46. package/dist/types/audit.js +4 -0
  47. package/dist/types/audit.js.map +1 -1
  48. package/dist/types/claims.d.ts +12 -3
  49. package/dist/types/claims.d.ts.map +1 -1
  50. package/dist/types/claims.js +15 -6
  51. package/dist/types/claims.js.map +1 -1
  52. package/dist/utils/index.d.ts +0 -1
  53. package/dist/utils/index.d.ts.map +1 -1
  54. package/dist/utils/index.js +0 -1
  55. package/dist/utils/index.js.map +1 -1
  56. package/package.json +2 -2
  57. package/dist/utils/app-routes.d.ts +0 -32
  58. package/dist/utils/app-routes.d.ts.map +0 -1
  59. package/dist/utils/app-routes.js +0 -59
  60. package/dist/utils/app-routes.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
@@ -5,7 +5,6 @@ export * from './team-creation.js';
5
5
  export * from './account-status.js';
6
6
  export * from './league-join-warning.js';
7
7
  export * from './schedules.js';
8
- export * from './app-routes.js';
9
8
  export * from './team-member-actions.js';
10
9
  export * from './league-mode.js';
11
10
  export * from './league-joining.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './display-name.js';\nexport * from './app-config.js';\nexport * from './league-calendar.js';\nexport * from './team-creation.js';\nexport * from './account-status.js';\nexport * from './league-join-warning.js';\nexport * from './schedules.js';\nexport * from './app-routes.js';\nexport * from './team-member-actions.js';\nexport * from './league-mode.js';\nexport * from './league-joining.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './display-name.js';\nexport * from './app-config.js';\nexport * from './league-calendar.js';\nexport * from './team-creation.js';\nexport * from './account-status.js';\nexport * from './league-join-warning.js';\nexport * from './schedules.js';\nexport * from './team-member-actions.js';\nexport * from './league-mode.js';\nexport * from './league-joining.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttt-productions/q-core",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "description": "Core types, Firestore path constants, zod schemas, and shared constants for Q-Sports",
5
5
  "repository": {
6
6
  "type": "git",
@@ -77,7 +77,7 @@
77
77
  "test": "vitest run"
78
78
  },
79
79
  "dependencies": {
80
- "@ttt-productions/input-format-core": "^0.1.3",
80
+ "@ttt-productions/input-format-core": "^0.1.4",
81
81
  "@ttt-productions/media-schemas": "^0.14.14",
82
82
  "@ttt-productions/notification-core": "^0.15.22",
83
83
  "@ttt-productions/theme-core": "^0.12.16",
@@ -1,32 +0,0 @@
1
- /** The one admin page; every admin group is a `?view=` of it. */
2
- export declare const ADMIN_PATH = "/admin";
3
- /** The query-string key the admin page's groups live under. */
4
- export declare const ADMIN_VIEW_PARAM = "view";
5
- /** The query-string key a group's sections live under. */
6
- export declare const ADMIN_SECTION_PARAM = "section";
7
- /** The query-string key the Leagues group names the league whose workspace is open under. */
8
- export declare const ADMIN_LEAGUE_PARAM = "league";
9
- /** The admin Leagues group: the league list, each league's workspace nested beneath it. */
10
- export declare const ADMIN_LEAGUES_HREF = "/admin?view=leagues";
11
- export declare const ADMIN_LEAGUE_WORKSPACE_SECTION_KEYS: readonly ["settings", "schedule", "teams", "free-agents"];
12
- export type AdminLeagueWorkspaceSection = (typeof ADMIN_LEAGUE_WORKSPACE_SECTION_KEYS)[number];
13
- /** The league workspace's section holding the league's weeks and games. */
14
- export declare const LEAGUE_SCHEDULE_SECTION = "schedule";
15
- /** The league workspace's section listing the league's teams, each opening its admin view. */
16
- export declare const LEAGUE_TEAMS_SECTION = "teams";
17
- /** The query-string key the Teams section names the team whose admin view is open under. */
18
- export declare const ADMIN_TEAM_PARAM = "team";
19
- /** The league workspace's section listing the league's free-agent signups. */
20
- export declare const LEAGUE_FREE_AGENTS_SECTION = "free-agents";
21
- /** An admin address on one of its sections — the one place a section joins a link. */
22
- export declare function withAdminSection(href: string, section: string): string;
23
- export declare function leagueHref(leagueId: string): string;
24
- export declare function leagueTeamHref(leagueId: string, teamId: string): string;
25
- export declare function sportGameHref(leagueId: string, gameId: string): string;
26
- /** A game's scoring page, where a scorer records its stats. */
27
- export declare function sportGameScoringHref(leagueId: string, gameId: string): string;
28
- /** A league's admin workspace, on one of its sections when one is named. */
29
- export declare function adminLeagueHref(leagueId: string, section?: AdminLeagueWorkspaceSection): string;
30
- /** One team's admin view, inside its league's workspace on the Teams section. */
31
- export declare function adminLeagueTeamHref(leagueId: string, teamId: string): string;
32
- //# sourceMappingURL=app-routes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-routes.d.ts","sourceRoot":"","sources":["../../src/utils/app-routes.ts"],"names":[],"mappings":"AAOA,iEAAiE;AACjE,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAIxD,eAAO,MAAM,mCAAmC,2DAKtC,CAAC;AACX,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,mCAAmC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/F,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,aAAmD,CAAC;AAExF,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,UAAgD,CAAC;AAElF,4FAA4F;AAC5F,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,gBAAsD,CAAC;AAE9F,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAG/F;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5E"}
@@ -1,59 +0,0 @@
1
- // The app addresses a link is built to: a league's pages — the league, one of its teams, one of its
2
- // games and that game's scoring page — and the admin Leagues workspace. Both roots build these links:
3
- // the server writes one onto an admin notification card, and the app links to every one of them, so
4
- // each address shape has one change point (RULE-STD-ARCH-101).
5
- const LEAGUE_PATH = '/league';
6
- /** The one admin page; every admin group is a `?view=` of it. */
7
- export const ADMIN_PATH = '/admin';
8
- /** The query-string key the admin page's groups live under. */
9
- export const ADMIN_VIEW_PARAM = 'view';
10
- /** The query-string key a group's sections live under. */
11
- export const ADMIN_SECTION_PARAM = 'section';
12
- /** The query-string key the Leagues group names the league whose workspace is open under. */
13
- export const ADMIN_LEAGUE_PARAM = 'league';
14
- /** The admin Leagues group: the league list, each league's workspace nested beneath it. */
15
- export const ADMIN_LEAGUES_HREF = '/admin?view=leagues';
16
- // The sections a league's admin workspace is addressed by. The workspace declares which of them it
17
- // has built as tabs; a link may name any of them.
18
- export const ADMIN_LEAGUE_WORKSPACE_SECTION_KEYS = [
19
- 'settings',
20
- 'schedule',
21
- 'teams',
22
- 'free-agents',
23
- ];
24
- /** The league workspace's section holding the league's weeks and games. */
25
- export const LEAGUE_SCHEDULE_SECTION = 'schedule';
26
- /** The league workspace's section listing the league's teams, each opening its admin view. */
27
- export const LEAGUE_TEAMS_SECTION = 'teams';
28
- /** The query-string key the Teams section names the team whose admin view is open under. */
29
- export const ADMIN_TEAM_PARAM = 'team';
30
- /** The league workspace's section listing the league's free-agent signups. */
31
- export const LEAGUE_FREE_AGENTS_SECTION = 'free-agents';
32
- /** An admin address on one of its sections — the one place a section joins a link. */
33
- export function withAdminSection(href, section) {
34
- const joiner = href.includes('?') ? '&' : '?';
35
- return `${href}${joiner}${ADMIN_SECTION_PARAM}=${encodeURIComponent(section)}`;
36
- }
37
- export function leagueHref(leagueId) {
38
- return `${LEAGUE_PATH}/${encodeURIComponent(leagueId)}`;
39
- }
40
- export function leagueTeamHref(leagueId, teamId) {
41
- return `${leagueHref(leagueId)}/team/${encodeURIComponent(teamId)}`;
42
- }
43
- export function sportGameHref(leagueId, gameId) {
44
- return `${leagueHref(leagueId)}/game/${encodeURIComponent(gameId)}`;
45
- }
46
- /** A game's scoring page, where a scorer records its stats. */
47
- export function sportGameScoringHref(leagueId, gameId) {
48
- return `${sportGameHref(leagueId, gameId)}/stats`;
49
- }
50
- /** A league's admin workspace, on one of its sections when one is named. */
51
- export function adminLeagueHref(leagueId, section) {
52
- const href = `${ADMIN_LEAGUES_HREF}&${ADMIN_LEAGUE_PARAM}=${encodeURIComponent(leagueId)}`;
53
- return section === undefined ? href : withAdminSection(href, section);
54
- }
55
- /** One team's admin view, inside its league's workspace on the Teams section. */
56
- export function adminLeagueTeamHref(leagueId, teamId) {
57
- return `${adminLeagueHref(leagueId, LEAGUE_TEAMS_SECTION)}&${ADMIN_TEAM_PARAM}=${encodeURIComponent(teamId)}`;
58
- }
59
- //# sourceMappingURL=app-routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-routes.js","sourceRoot":"","sources":["../../src/utils/app-routes.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,sGAAsG;AACtG,oGAAoG;AACpG,+DAA+D;AAE/D,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE7C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAExD,mGAAmG;AACnG,kDAAkD;AAClD,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,UAAU;IACV,UAAU;IACV,OAAO;IACP,aAAa;CACL,CAAC;AAGX,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAgD,CAAC;AAExF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAA6C,CAAC;AAElF,4FAA4F;AAC5F,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAmD,CAAC;AAE9F,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9C,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,mBAAmB,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,GAAG,WAAW,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,MAAc;IAC7D,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,MAAc;IAC5D,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,MAAc;IACnE,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAqC;IACrF,MAAM,IAAI,GAAG,GAAG,kBAAkB,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC3F,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,MAAc;IAClE,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE,oBAAoB,CAAC,IAAI,gBAAgB,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AAChH,CAAC","sourcesContent":["// The app addresses a link is built to: a league's pages — the league, one of its teams, one of its\n// games and that game's scoring page — and the admin Leagues workspace. Both roots build these links:\n// the server writes one onto an admin notification card, and the app links to every one of them, so\n// each address shape has one change point (RULE-STD-ARCH-101).\n\nconst LEAGUE_PATH = '/league';\n\n/** The one admin page; every admin group is a `?view=` of it. */\nexport const ADMIN_PATH = '/admin';\n\n/** The query-string key the admin page's groups live under. */\nexport const ADMIN_VIEW_PARAM = 'view';\n\n/** The query-string key a group's sections live under. */\nexport const ADMIN_SECTION_PARAM = 'section';\n\n/** The query-string key the Leagues group names the league whose workspace is open under. */\nexport const ADMIN_LEAGUE_PARAM = 'league';\n\n/** The admin Leagues group: the league list, each league's workspace nested beneath it. */\nexport const ADMIN_LEAGUES_HREF = '/admin?view=leagues';\n\n// The sections a league's admin workspace is addressed by. The workspace declares which of them it\n// has built as tabs; a link may name any of them.\nexport const ADMIN_LEAGUE_WORKSPACE_SECTION_KEYS = [\n 'settings',\n 'schedule',\n 'teams',\n 'free-agents',\n] as const;\nexport type AdminLeagueWorkspaceSection = (typeof ADMIN_LEAGUE_WORKSPACE_SECTION_KEYS)[number];\n\n/** The league workspace's section holding the league's weeks and games. */\nexport const LEAGUE_SCHEDULE_SECTION = 'schedule' satisfies AdminLeagueWorkspaceSection;\n\n/** The league workspace's section listing the league's teams, each opening its admin view. */\nexport const LEAGUE_TEAMS_SECTION = 'teams' satisfies AdminLeagueWorkspaceSection;\n\n/** The query-string key the Teams section names the team whose admin view is open under. */\nexport const ADMIN_TEAM_PARAM = 'team';\n\n/** The league workspace's section listing the league's free-agent signups. */\nexport const LEAGUE_FREE_AGENTS_SECTION = 'free-agents' satisfies AdminLeagueWorkspaceSection;\n\n/** An admin address on one of its sections — the one place a section joins a link. */\nexport function withAdminSection(href: string, section: string): string {\n const joiner = href.includes('?') ? '&' : '?';\n return `${href}${joiner}${ADMIN_SECTION_PARAM}=${encodeURIComponent(section)}`;\n}\n\nexport function leagueHref(leagueId: string): string {\n return `${LEAGUE_PATH}/${encodeURIComponent(leagueId)}`;\n}\n\nexport function leagueTeamHref(leagueId: string, teamId: string): string {\n return `${leagueHref(leagueId)}/team/${encodeURIComponent(teamId)}`;\n}\n\nexport function sportGameHref(leagueId: string, gameId: string): string {\n return `${leagueHref(leagueId)}/game/${encodeURIComponent(gameId)}`;\n}\n\n/** A game's scoring page, where a scorer records its stats. */\nexport function sportGameScoringHref(leagueId: string, gameId: string): string {\n return `${sportGameHref(leagueId, gameId)}/stats`;\n}\n\n/** A league's admin workspace, on one of its sections when one is named. */\nexport function adminLeagueHref(leagueId: string, section?: AdminLeagueWorkspaceSection): string {\n const href = `${ADMIN_LEAGUES_HREF}&${ADMIN_LEAGUE_PARAM}=${encodeURIComponent(leagueId)}`;\n return section === undefined ? href : withAdminSection(href, section);\n}\n\n/** One team's admin view, inside its league's workspace on the Teams section. */\nexport function adminLeagueTeamHref(leagueId: string, teamId: string): string {\n return `${adminLeagueHref(leagueId, LEAGUE_TEAMS_SECTION)}&${ADMIN_TEAM_PARAM}=${encodeURIComponent(teamId)}`;\n}\n"]}