@agi-ventures-canada/hackathon-cli 0.1.1 → 0.1.3

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 (72) hide show
  1. package/dist/_chunks/assign.mjs +1 -1
  2. package/dist/_chunks/assign.mjs.map +1 -1
  3. package/dist/_chunks/assignments-create.mjs +2 -2
  4. package/dist/_chunks/assignments-create.mjs.map +1 -1
  5. package/dist/_chunks/assignments-list.mjs +6 -6
  6. package/dist/_chunks/assignments-list.mjs.map +1 -1
  7. package/dist/_chunks/create.mjs.map +1 -1
  8. package/dist/_chunks/create3.mjs.map +1 -1
  9. package/dist/_chunks/create4.mjs.map +1 -1
  10. package/dist/_chunks/create5.mjs +1 -1
  11. package/dist/_chunks/create5.mjs.map +1 -1
  12. package/dist/_chunks/create6.mjs +9 -3
  13. package/dist/_chunks/create6.mjs.map +1 -1
  14. package/dist/_chunks/criteria-create.mjs +1 -1
  15. package/dist/_chunks/criteria-create.mjs.map +1 -1
  16. package/dist/_chunks/criteria-list.mjs +1 -1
  17. package/dist/_chunks/criteria-list.mjs.map +1 -1
  18. package/dist/_chunks/criteria-update.mjs +1 -1
  19. package/dist/_chunks/criteria-update.mjs.map +1 -1
  20. package/dist/_chunks/delete.mjs +1 -1
  21. package/dist/_chunks/delete.mjs.map +1 -1
  22. package/dist/_chunks/get.mjs +6 -6
  23. package/dist/_chunks/get.mjs.map +1 -1
  24. package/dist/_chunks/get2.mjs +2 -2
  25. package/dist/_chunks/get2.mjs.map +1 -1
  26. package/dist/_chunks/get3.mjs +5 -5
  27. package/dist/_chunks/get3.mjs.map +1 -1
  28. package/dist/_chunks/get4.mjs +5 -5
  29. package/dist/_chunks/get4.mjs.map +1 -1
  30. package/dist/_chunks/hackathons.mjs +2 -2
  31. package/dist/_chunks/hackathons.mjs.map +1 -1
  32. package/dist/_chunks/invitations-list.mjs +1 -1
  33. package/dist/_chunks/invitations-list.mjs.map +1 -1
  34. package/dist/_chunks/judges-add.mjs +1 -1
  35. package/dist/_chunks/judges-add.mjs.map +1 -1
  36. package/dist/_chunks/judges-list.mjs +1 -1
  37. package/dist/_chunks/judges-list.mjs.map +1 -1
  38. package/dist/_chunks/list.mjs +2 -2
  39. package/dist/_chunks/list.mjs.map +1 -1
  40. package/dist/_chunks/list2.mjs +1 -1
  41. package/dist/_chunks/list2.mjs.map +1 -1
  42. package/dist/_chunks/list4.mjs +1 -1
  43. package/dist/_chunks/list4.mjs.map +1 -1
  44. package/dist/_chunks/list5.mjs +4 -4
  45. package/dist/_chunks/list5.mjs.map +1 -1
  46. package/dist/_chunks/login.mjs +4 -0
  47. package/dist/_chunks/login.mjs.map +1 -1
  48. package/dist/_chunks/org.mjs +1 -1
  49. package/dist/_chunks/org.mjs.map +1 -1
  50. package/dist/_chunks/pick-results.mjs +23 -19
  51. package/dist/_chunks/pick-results.mjs.map +1 -1
  52. package/dist/_chunks/reorder.mjs +1 -1
  53. package/dist/_chunks/reorder.mjs.map +1 -1
  54. package/dist/_chunks/reorder2.mjs +1 -1
  55. package/dist/_chunks/reorder2.mjs.map +1 -1
  56. package/dist/_chunks/resolve.mjs +1 -4
  57. package/dist/_chunks/resolve.mjs.map +1 -1
  58. package/dist/_chunks/results.mjs +6 -6
  59. package/dist/_chunks/results.mjs.map +1 -1
  60. package/dist/_chunks/submissions.mjs +3 -3
  61. package/dist/_chunks/submissions.mjs.map +1 -1
  62. package/dist/_chunks/update-check.mjs +92 -0
  63. package/dist/_chunks/update-check.mjs.map +1 -0
  64. package/dist/_chunks/update.mjs +3 -3
  65. package/dist/_chunks/update.mjs.map +1 -1
  66. package/dist/_chunks/update4.mjs +2 -2
  67. package/dist/_chunks/update4.mjs.map +1 -1
  68. package/dist/_chunks/update5.mjs +56 -0
  69. package/dist/_chunks/update5.mjs.map +1 -0
  70. package/dist/cli.mjs +25 -8
  71. package/dist/cli.mjs.map +1 -1
  72. package/package.json +1 -1
@@ -22,7 +22,7 @@ async function runPrizesAssign(client, hackathonId, prizeId, args) {
22
22
  console.error("Error: --submission is required");
23
23
  process.exit(1);
24
24
  }
25
- const result = await client.post(`/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}/assign`, { submission_id: options.submission });
25
+ const result = await client.post(`/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}/assign`, { submissionId: options.submission });
26
26
  if (options.json) {
27
27
  console.log(formatJson(result));
28
28
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"assign.mjs","names":[],"sources":["../../src/commands/prizes/assign.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\ninterface AssignOptions {\n submission?: string\n json?: boolean\n}\n\nexport function parseAssignOptions(args: string[]): AssignOptions {\n const options: AssignOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--submission\":\n options.submission = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runPrizesAssign(\n client: OatmealClient,\n hackathonId: string,\n prizeId: string,\n args: string[]\n): Promise<void> {\n if (!prizeId) {\n console.error(\"Usage: hackathon prizes assign <hackathon-id> <prize-id> --submission <id>\")\n process.exit(1)\n }\n\n const options = parseAssignOptions(args)\n\n if (!options.submission) {\n console.error(\"Error: --submission is required\")\n process.exit(1)\n }\n\n const result = await client.post(\n `/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}/assign`,\n { submission_id: options.submission }\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Assigned prize ${prizeId} to submission ${options.submission}`))\n}\n"],"mappings":";;AAQA,SAAgB,mBAAmB,MAA+B;CAChE,MAAM,UAAyB,EAAE;AACjC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,aAAa,KAAK,EAAE;AAC5B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,gBACpB,QACA,aACA,SACA,MACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,6EAA6E;AAC3F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,mBAAmB,KAAK;AAExC,KAAI,CAAC,QAAQ,YAAY;AACvB,UAAQ,MAAM,kCAAkC;AAChD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,KAC1B,6BAA6B,YAAY,UAAU,QAAQ,UAC3D,EAAE,eAAe,QAAQ,YAAY,CACtC;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,QAAQ,iBAAiB,QAAQ,aAAa,CAAC"}
1
+ {"version":3,"file":"assign.mjs","names":[],"sources":["../../src/commands/prizes/assign.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\ninterface AssignOptions {\n submission?: string\n json?: boolean\n}\n\nexport function parseAssignOptions(args: string[]): AssignOptions {\n const options: AssignOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--submission\":\n options.submission = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runPrizesAssign(\n client: OatmealClient,\n hackathonId: string,\n prizeId: string,\n args: string[]\n): Promise<void> {\n if (!prizeId) {\n console.error(\"Usage: hackathon prizes assign <hackathon-id> <prize-id> --submission <id>\")\n process.exit(1)\n }\n\n const options = parseAssignOptions(args)\n\n if (!options.submission) {\n console.error(\"Error: --submission is required\")\n process.exit(1)\n }\n\n const result = await client.post(\n `/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}/assign`,\n { submissionId: options.submission }\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Assigned prize ${prizeId} to submission ${options.submission}`))\n}\n"],"mappings":";;AAQA,SAAgB,mBAAmB,MAA+B;CAChE,MAAM,UAAyB,EAAE;AACjC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,aAAa,KAAK,EAAE;AAC5B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,gBACpB,QACA,aACA,SACA,MACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,6EAA6E;AAC3F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,mBAAmB,KAAK;AAExC,KAAI,CAAC,QAAQ,YAAY;AACvB,UAAQ,MAAM,kCAAkC;AAChD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,KAC1B,6BAA6B,YAAY,UAAU,QAAQ,UAC3D,EAAE,cAAc,QAAQ,YAAY,CACrC;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,QAAQ,iBAAiB,QAAQ,aAAa,CAAC"}
@@ -22,8 +22,8 @@ async function runAssignmentsCreate(client, hackathonId, args) {
22
22
  process.exit(1);
23
23
  }
24
24
  const assignment = await client.post(`/api/dashboard/hackathons/${hackathonId}/judging/assignments`, {
25
- judge_id: options.judge,
26
- submission_id: options.submission
25
+ judgeParticipantId: options.judge,
26
+ submissionId: options.submission
27
27
  });
28
28
  if (options.json) {
29
29
  console.log(formatJson(assignment));
@@ -1 +1 @@
1
- {"version":3,"file":"assignments-create.mjs","names":[],"sources":["../../src/commands/judging/assignments-create.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgeAssignment } from \"../../types.js\"\n\ninterface AssignmentCreateOptions {\n judge?: string\n submission?: string\n json?: boolean\n}\n\nexport function parseAssignmentCreateOptions(args: string[]): AssignmentCreateOptions {\n const options: AssignmentCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--judge\":\n options.judge = args[++i]\n break\n case \"--submission\":\n options.submission = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runAssignmentsCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseAssignmentCreateOptions(args)\n\n if (!options.judge || !options.submission) {\n console.error(\"Error: --judge and --submission are required\")\n process.exit(1)\n }\n\n const assignment = await client.post<JudgeAssignment>(\n `/api/dashboard/hackathons/${hackathonId}/judging/assignments`,\n { judge_id: options.judge, submission_id: options.submission }\n )\n\n if (options.json) {\n console.log(formatJson(assignment))\n return\n }\n\n console.log(formatSuccess(`Created assignment ${assignment.id}`))\n}\n"],"mappings":";;AAUA,SAAgB,6BAA6B,MAAyC;CACpF,MAAM,UAAmC,EAAE;AAC3C,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,aAAa,KAAK,EAAE;AAC5B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,qBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,6BAA6B,KAAK;AAElD,KAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ,YAAY;AACzC,UAAQ,MAAM,+CAA+C;AAC7D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,aAAa,MAAM,OAAO,KAC9B,6BAA6B,YAAY,uBACzC;EAAE,UAAU,QAAQ;EAAO,eAAe,QAAQ;EAAY,CAC/D;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,WAAW,CAAC;AACnC;;AAGF,SAAQ,IAAI,cAAc,sBAAsB,WAAW,KAAK,CAAC"}
1
+ {"version":3,"file":"assignments-create.mjs","names":[],"sources":["../../src/commands/judging/assignments-create.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgeAssignment } from \"../../types.js\"\n\ninterface AssignmentCreateOptions {\n judge?: string\n submission?: string\n json?: boolean\n}\n\nexport function parseAssignmentCreateOptions(args: string[]): AssignmentCreateOptions {\n const options: AssignmentCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--judge\":\n options.judge = args[++i]\n break\n case \"--submission\":\n options.submission = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runAssignmentsCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseAssignmentCreateOptions(args)\n\n if (!options.judge || !options.submission) {\n console.error(\"Error: --judge and --submission are required\")\n process.exit(1)\n }\n\n const assignment = await client.post<JudgeAssignment>(\n `/api/dashboard/hackathons/${hackathonId}/judging/assignments`,\n { judgeParticipantId: options.judge, submissionId: options.submission }\n )\n\n if (options.json) {\n console.log(formatJson(assignment))\n return\n }\n\n console.log(formatSuccess(`Created assignment ${assignment.id}`))\n}\n"],"mappings":";;AAUA,SAAgB,6BAA6B,MAAyC;CACpF,MAAM,UAAmC,EAAE;AAC3C,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,aAAa,KAAK,EAAE;AAC5B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,qBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,6BAA6B,KAAK;AAElD,KAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ,YAAY;AACzC,UAAQ,MAAM,+CAA+C;AAC7D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,aAAa,MAAM,OAAO,KAC9B,6BAA6B,YAAY,uBACzC;EAAE,oBAAoB,QAAQ;EAAO,cAAc,QAAQ;EAAY,CACxE;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,WAAW,CAAC;AACnC;;AAGF,SAAQ,IAAI,cAAc,sBAAsB,WAAW,KAAK,CAAC"}
@@ -12,20 +12,20 @@ async function runAssignmentsList(client, hackathonId, options) {
12
12
  }
13
13
  console.log(formatTable(data.assignments, [
14
14
  {
15
- key: "judge_name",
15
+ key: "judgeName",
16
16
  label: "Judge"
17
17
  },
18
18
  {
19
- key: "submission_name",
19
+ key: "submissionTitle",
20
20
  label: "Submission"
21
21
  },
22
22
  {
23
- key: "status",
24
- label: "Status"
23
+ key: "isComplete",
24
+ label: "Complete"
25
25
  },
26
26
  {
27
- key: "scored_at",
28
- label: "Scored At"
27
+ key: "assignedAt",
28
+ label: "Assigned At"
29
29
  }
30
30
  ]));
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assignments-list.mjs","names":[],"sources":["../../src/commands/judging/assignments-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgeAssignment } from \"../../types.js\"\n\nexport async function runAssignmentsList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ assignments: JudgeAssignment[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/assignments`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.assignments?.length) {\n console.log(\"No assignments found.\")\n return\n }\n\n console.log(\n formatTable(data.assignments, [\n { key: \"judge_name\", label: \"Judge\" },\n { key: \"submission_name\", label: \"Submission\" },\n { key: \"status\", label: \"Status\" },\n { key: \"scored_at\", label: \"Scored At\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,mBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,sBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,aAAa,QAAQ;AAC7B,UAAQ,IAAI,wBAAwB;AACpC;;AAGF,SAAQ,IACN,YAAY,KAAK,aAAa;EAC5B;GAAE,KAAK;GAAc,OAAO;GAAS;EACrC;GAAE,KAAK;GAAmB,OAAO;GAAc;EAC/C;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAa,OAAO;;EAC5B,CAAC,CACH"}
1
+ {"version":3,"file":"assignments-list.mjs","names":[],"sources":["../../src/commands/judging/assignments-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgeAssignment } from \"../../types.js\"\n\nexport async function runAssignmentsList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ assignments: JudgeAssignment[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/assignments`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.assignments?.length) {\n console.log(\"No assignments found.\")\n return\n }\n\n console.log(\n formatTable(data.assignments, [\n { key: \"judgeName\", label: \"Judge\" },\n { key: \"submissionTitle\", label: \"Submission\" },\n { key: \"isComplete\", label: \"Complete\" },\n { key: \"assignedAt\", label: \"Assigned At\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,mBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,sBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,aAAa,QAAQ;AAC7B,UAAQ,IAAI,wBAAwB;AACpC;;AAGF,SAAQ,IACN,YAAY,KAAK,aAAa;EAC5B;GAAE,KAAK;GAAa,OAAO;GAAS;EACpC;GAAE,KAAK;GAAmB,OAAO;GAAc;EAC/C;GAAE,KAAK;GAAc,OAAO;GAAY;EACxC;GAAE,KAAK;GAAc,OAAO;;EAC7B,CAAC,CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.mjs","names":[],"sources":["../../src/commands/hackathons/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\n\ninterface CreateOptions {\n name?: string\n slug?: string\n description?: string\n json?: boolean\n}\n\nexport function parseCreateOptions(args: string[]): CreateOptions {\n const options: CreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--slug\":\n options.slug = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runHackathonsCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseCreateOptions(args)\n\n let name = options.name\n let slug = options.slug\n let description = options.description\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Hackathon name:\", validate: (v) => (v ? undefined : \"Name is required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n if (!slug && process.stdout.isTTY) {\n const suggested = name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\")\n const result = await p.text({ message: \"Slug:\", initialValue: suggested })\n if (p.isCancel(result)) return\n slug = result\n }\n\n if (!description && process.stdout.isTTY) {\n const result = await p.text({ message: \"Description (optional):\" })\n if (!p.isCancel(result)) description = result || undefined\n }\n\n const hackathon = await client.post<Hackathon>(\"/api/dashboard/hackathons\", {\n name,\n slug,\n description,\n })\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(formatSuccess(`Created hackathon \"${hackathon.name}\" (${hackathon.id})`))\n}\n"],"mappings":";;;AAYA,SAAgB,mBAAmB,MAA+B;CAChE,MAAM,UAAyB,EAAE;AACjC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,oBACpB,QACA,MACe;CACf,MAAM,UAAU,mBAAmB,KAAK;CAExC,IAAI,OAAO,QAAQ;CACnB,IAAI,OAAO,QAAQ;CACnB,IAAI,cAAc,QAAQ;AAE1B,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAmB,WAAW,MAAO,IAAI,KAAA,IAAY;GAAqB,CAAC;AAClH,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,YAAY,KAAK,aAAa,CAAC,QAAQ,eAAe,IAAI,CAAC,QAAQ,UAAU,GAAG;EACtF,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAS,cAAc;GAAW,CAAC;AAC1E,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,eAAe,QAAQ,OAAO,OAAO;EACxC,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,2BAA2B,CAAC;AACnE,MAAI,CAAC,EAAE,SAAS,OAAO,CAAE,eAAc,UAAU,KAAA;;CAGnD,MAAM,YAAY,MAAM,OAAO,KAAgB,6BAA6B;EAC1E;EACA;EACA;EACD,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,SAAQ,IAAI,cAAc,sBAAsB,UAAU,KAAK,KAAK,UAAU,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"create.mjs","names":[],"sources":["../../src/commands/hackathons/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\n\ninterface CreateOptions {\n name?: string\n slug?: string\n description?: string\n json?: boolean\n}\n\nexport function parseCreateOptions(args: string[]): CreateOptions {\n const options: CreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--slug\":\n options.slug = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runHackathonsCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseCreateOptions(args)\n\n let name = options.name\n let slug = options.slug\n let description = options.description\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Hackathon name:\", validate: (v: string) => (v ? undefined : \"Name is required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n if (!slug && process.stdout.isTTY) {\n const suggested = name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\")\n const result = await p.text({ message: \"Slug:\", initialValue: suggested })\n if (p.isCancel(result)) return\n slug = result\n }\n\n if (!description && process.stdout.isTTY) {\n const result = await p.text({ message: \"Description (optional):\" })\n if (!p.isCancel(result)) description = result || undefined\n }\n\n const hackathon = await client.post<Hackathon>(\"/api/dashboard/hackathons\", {\n name,\n slug,\n description,\n })\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(formatSuccess(`Created hackathon \"${hackathon.name}\" (${hackathon.id})`))\n}\n"],"mappings":";;;AAYA,SAAgB,mBAAmB,MAA+B;CAChE,MAAM,UAAyB,EAAE;AACjC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,oBACpB,QACA,MACe;CACf,MAAM,UAAU,mBAAmB,KAAK;CAExC,IAAI,OAAO,QAAQ;CACnB,IAAI,OAAO,QAAQ;CACnB,IAAI,cAAc,QAAQ;AAE1B,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAmB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAqB,CAAC;AAC1H,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,YAAY,KAAK,aAAa,CAAC,QAAQ,eAAe,IAAI,CAAC,QAAQ,UAAU,GAAG;EACtF,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAS,cAAc;GAAW,CAAC;AAC1E,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,eAAe,QAAQ,OAAO,OAAO;EACxC,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,2BAA2B,CAAC;AACnE,MAAI,CAAC,EAAE,SAAS,OAAO,CAAE,eAAc,UAAU,KAAA;;CAGnD,MAAM,YAAY,MAAM,OAAO,KAAgB,6BAA6B;EAC1E;EACA;EACA;EACD,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,SAAQ,IAAI,cAAc,sBAAsB,UAAU,KAAK,KAAK,UAAU,GAAG,GAAG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create3.mjs","names":[],"sources":["../../src/commands/judge-display/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgeDisplayProfile } from \"../../types.js\"\n\ninterface JudgeDisplayCreateOptions {\n name?: string\n title?: string\n bio?: string\n json?: boolean\n}\n\nexport function parseJudgeDisplayCreateOptions(args: string[]): JudgeDisplayCreateOptions {\n const options: JudgeDisplayCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--title\":\n options.title = args[++i]\n break\n case \"--bio\":\n options.bio = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runJudgeDisplayCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseJudgeDisplayCreateOptions(args)\n\n let name = options.name\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Judge name:\", validate: (v) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n const profile = await client.post<JudgeDisplayProfile>(\n `/api/dashboard/hackathons/${hackathonId}/judges/display`,\n { name, title: options.title, bio: options.bio }\n )\n\n if (options.json) {\n console.log(formatJson(profile))\n return\n }\n\n console.log(formatSuccess(`Created judge display profile \"${profile.name}\" (${profile.id})`))\n}\n"],"mappings":";;;AAYA,SAAgB,+BAA+B,MAA2C;CACxF,MAAM,UAAqC,EAAE;AAC7C,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,MAAM,KAAK,EAAE;AACrB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,sBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,+BAA+B,KAAK;CAEpD,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAe,WAAW,MAAO,IAAI,KAAA,IAAY;GAAa,CAAC;AACtG,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,MAAM,OAAO,KAC3B,6BAA6B,YAAY,kBACzC;EAAE;EAAM,OAAO,QAAQ;EAAO,KAAK,QAAQ;EAAK,CACjD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,QAAQ,CAAC;AAChC;;AAGF,SAAQ,IAAI,cAAc,kCAAkC,QAAQ,KAAK,KAAK,QAAQ,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"create3.mjs","names":[],"sources":["../../src/commands/judge-display/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgeDisplayProfile } from \"../../types.js\"\n\ninterface JudgeDisplayCreateOptions {\n name?: string\n title?: string\n bio?: string\n json?: boolean\n}\n\nexport function parseJudgeDisplayCreateOptions(args: string[]): JudgeDisplayCreateOptions {\n const options: JudgeDisplayCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--title\":\n options.title = args[++i]\n break\n case \"--bio\":\n options.bio = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runJudgeDisplayCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseJudgeDisplayCreateOptions(args)\n\n let name = options.name\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Judge name:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n const profile = await client.post<JudgeDisplayProfile>(\n `/api/dashboard/hackathons/${hackathonId}/judges/display`,\n { name, title: options.title, bio: options.bio }\n )\n\n if (options.json) {\n console.log(formatJson(profile))\n return\n }\n\n console.log(formatSuccess(`Created judge display profile \"${profile.name}\" (${profile.id})`))\n}\n"],"mappings":";;;AAYA,SAAgB,+BAA+B,MAA2C;CACxF,MAAM,UAAqC,EAAE;AAC7C,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,MAAM,KAAK,EAAE;AACrB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,sBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,+BAA+B,KAAK;CAEpD,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAe,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AAC9G,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,MAAM,OAAO,KAC3B,6BAA6B,YAAY,kBACzC;EAAE;EAAM,OAAO,QAAQ;EAAO,KAAK,QAAQ;EAAK,CACjD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,QAAQ,CAAC;AAChC;;AAGF,SAAQ,IAAI,cAAc,kCAAkC,QAAQ,KAAK,KAAK,QAAQ,GAAG,GAAG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create4.mjs","names":[],"sources":["../../src/commands/prizes/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Prize } from \"../../types.js\"\n\ninterface PrizeCreateOptions {\n name?: string\n description?: string\n type?: string\n value?: string\n json?: boolean\n}\n\nexport function parsePrizeCreateOptions(args: string[]): PrizeCreateOptions {\n const options: PrizeCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--type\":\n options.type = args[++i]\n break\n case \"--value\":\n options.value = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runPrizesCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parsePrizeCreateOptions(args)\n\n let name = options.name\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Prize name:\", validate: (v) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n const prize = await client.post<Prize>(\n `/api/dashboard/hackathons/${hackathonId}/prizes`,\n {\n name,\n description: options.description,\n type: options.type,\n value: options.value,\n }\n )\n\n if (options.json) {\n console.log(formatJson(prize))\n return\n }\n\n console.log(formatSuccess(`Created prize \"${prize.name}\" (${prize.id})`))\n}\n"],"mappings":";;;AAaA,SAAgB,wBAAwB,MAAoC;CAC1E,MAAM,UAA8B,EAAE;AACtC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,gBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,wBAAwB,KAAK;CAE7C,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAe,WAAW,MAAO,IAAI,KAAA,IAAY;GAAa,CAAC;AACtG,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,QAAQ,MAAM,OAAO,KACzB,6BAA6B,YAAY,UACzC;EACE;EACA,aAAa,QAAQ;EACrB,MAAM,QAAQ;EACd,OAAO,QAAQ;EAChB,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,MAAM,KAAK,KAAK,MAAM,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"create4.mjs","names":[],"sources":["../../src/commands/prizes/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Prize } from \"../../types.js\"\n\ninterface PrizeCreateOptions {\n name?: string\n description?: string\n type?: string\n value?: string\n json?: boolean\n}\n\nexport function parsePrizeCreateOptions(args: string[]): PrizeCreateOptions {\n const options: PrizeCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--type\":\n options.type = args[++i]\n break\n case \"--value\":\n options.value = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runPrizesCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parsePrizeCreateOptions(args)\n\n let name = options.name\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Prize name:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n const prize = await client.post<Prize>(\n `/api/dashboard/hackathons/${hackathonId}/prizes`,\n {\n name,\n description: options.description,\n type: options.type,\n value: options.value,\n }\n )\n\n if (options.json) {\n console.log(formatJson(prize))\n return\n }\n\n console.log(formatSuccess(`Created prize \"${prize.name}\" (${prize.id})`))\n}\n"],"mappings":";;;AAaA,SAAgB,wBAAwB,MAAoC;CAC1E,MAAM,UAA8B,EAAE;AACtC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,gBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,wBAAwB,KAAK;CAE7C,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAe,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AAC9G,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,QAAQ,MAAM,OAAO,KACzB,6BAA6B,YAAY,UACzC;EACE;EACA,aAAa,QAAQ;EACrB,MAAM,QAAQ;EACd,OAAO,QAAQ;EAChB,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,MAAM,KAAK,KAAK,MAAM,GAAG,GAAG,CAAC"}
@@ -46,7 +46,7 @@ async function runSchedulesCreate(client, args) {
46
46
  }
47
47
  const schedule = await client.post("/api/dashboard/schedules", {
48
48
  name,
49
- cron_expression: cron
49
+ cronExpression: cron
50
50
  });
51
51
  if (options.json) {
52
52
  console.log(formatJson(schedule));
@@ -1 +1 @@
1
- {"version":3,"file":"create5.mjs","names":[],"sources":["../../src/commands/schedules/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Schedule } from \"../../types.js\"\n\ninterface ScheduleCreateOptions {\n name?: string\n cron?: string\n json?: boolean\n}\n\nexport function parseScheduleCreateOptions(args: string[]): ScheduleCreateOptions {\n const options: ScheduleCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--cron\":\n options.cron = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runSchedulesCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseScheduleCreateOptions(args)\n\n let name = options.name\n let cron = options.cron\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Schedule name:\", validate: (v) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n if (!cron && process.stdout.isTTY) {\n const result = await p.text({ message: \"Cron expression:\", validate: (v) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n cron = result\n }\n\n if (!cron) {\n console.error(\"Error: --cron is required\")\n process.exit(1)\n }\n\n const schedule = await client.post<Schedule>(\"/api/dashboard/schedules\", {\n name,\n cron_expression: cron,\n })\n\n if (options.json) {\n console.log(formatJson(schedule))\n return\n }\n\n console.log(formatSuccess(`Created schedule \"${schedule.name}\" (${schedule.id})`))\n}\n"],"mappings":";;;AAWA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,mBACpB,QACA,MACe;CACf,MAAM,UAAU,2BAA2B,KAAK;CAEhD,IAAI,OAAO,QAAQ;CACnB,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAkB,WAAW,MAAO,IAAI,KAAA,IAAY;GAAa,CAAC;AACzG,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAoB,WAAW,MAAO,IAAI,KAAA,IAAY;GAAa,CAAC;AAC3G,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,KAAe,4BAA4B;EACvE;EACA,iBAAiB;EAClB,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"create5.mjs","names":[],"sources":["../../src/commands/schedules/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Schedule } from \"../../types.js\"\n\ninterface ScheduleCreateOptions {\n name?: string\n cron?: string\n json?: boolean\n}\n\nexport function parseScheduleCreateOptions(args: string[]): ScheduleCreateOptions {\n const options: ScheduleCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--cron\":\n options.cron = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runSchedulesCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseScheduleCreateOptions(args)\n\n let name = options.name\n let cron = options.cron\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Schedule name:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n if (!cron && process.stdout.isTTY) {\n const result = await p.text({ message: \"Cron expression:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n cron = result\n }\n\n if (!cron) {\n console.error(\"Error: --cron is required\")\n process.exit(1)\n }\n\n const schedule = await client.post<Schedule>(\"/api/dashboard/schedules\", {\n name,\n cronExpression: cron,\n })\n\n if (options.json) {\n console.log(formatJson(schedule))\n return\n }\n\n console.log(formatSuccess(`Created schedule \"${schedule.name}\" (${schedule.id})`))\n}\n"],"mappings":";;;AAWA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,mBACpB,QACA,MACe;CACf,MAAM,UAAU,2BAA2B,KAAK;CAEhD,IAAI,OAAO,QAAQ;CACnB,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAkB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AACjH,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAoB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AACnH,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,KAAe,4BAA4B;EACvE;EACA,gBAAgB;EACjB,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import { a as formatWarning, n as formatJson, r as formatSuccess } from "../cli.mjs";
2
2
  import * as p from "@clack/prompts";
3
3
  //#region src/commands/webhooks/create.ts
4
+ function normalizeUrl(input) {
5
+ const trimmed = input.trim();
6
+ if (!trimmed) return trimmed;
7
+ if (/^https?:\/\//i.test(trimmed)) return trimmed;
8
+ return `https://${trimmed}`;
9
+ }
4
10
  function parseWebhookCreateOptions(args) {
5
11
  const options = {};
6
12
  for (let i = 0; i < args.length; i++) switch (args[i]) {
@@ -38,7 +44,7 @@ async function runWebhooksCreate(client, args) {
38
44
  events = result.split(",").map((s) => s.trim());
39
45
  }
40
46
  const webhook = await client.post("/api/v1/webhooks", {
41
- url,
47
+ url: normalizeUrl(url),
42
48
  events
43
49
  });
44
50
  if (options.json) {
@@ -46,9 +52,9 @@ async function runWebhooksCreate(client, args) {
46
52
  return;
47
53
  }
48
54
  console.log(formatSuccess(`Created webhook ${webhook.id}`));
49
- if (webhook.signing_secret) {
55
+ if (webhook.signingSecret) {
50
56
  console.log(formatWarning("Save this signing secret — it won't be shown again:"));
51
- console.log(webhook.signing_secret);
57
+ console.log(webhook.signingSecret);
52
58
  }
53
59
  }
54
60
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"create6.mjs","names":[],"sources":["../../src/commands/webhooks/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess, formatWarning } from \"../../output.js\"\nimport type { Webhook } from \"../../types.js\"\n\ninterface WebhookCreateOptions {\n url?: string\n events?: string[]\n json?: boolean\n}\n\nexport function parseWebhookCreateOptions(args: string[]): WebhookCreateOptions {\n const options: WebhookCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--url\":\n options.url = args[++i]\n break\n case \"--events\":\n options.events = args[++i]?.split(\",\").map((s) => s.trim())\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runWebhooksCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseWebhookCreateOptions(args)\n\n let url = options.url\n let events = options.events\n\n if (!url && process.stdout.isTTY) {\n const result = await p.text({ message: \"Webhook URL:\", validate: (v) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n url = result\n }\n\n if (!url) {\n console.error(\"Error: --url is required\")\n process.exit(1)\n }\n\n if (!events?.length && process.stdout.isTTY) {\n const result = await p.text({ message: \"Events (comma-separated):\" })\n if (p.isCancel(result)) return\n events = result.split(\",\").map((s) => s.trim())\n }\n\n const webhook = await client.post<Webhook>(\"/api/v1/webhooks\", { url, events })\n\n if (options.json) {\n console.log(formatJson(webhook))\n return\n }\n\n console.log(formatSuccess(`Created webhook ${webhook.id}`))\n if (webhook.signing_secret) {\n console.log(formatWarning(\"Save this signing secret — it won't be shown again:\"))\n console.log(webhook.signing_secret)\n }\n}\n"],"mappings":";;;AAWA,SAAgB,0BAA0B,MAAsC;CAC9E,MAAM,UAAgC,EAAE;AACxC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,MAAM,KAAK,EAAE;AACrB;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE,IAAI,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;AAC3D;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,MACe;CACf,MAAM,UAAU,0BAA0B,KAAK;CAE/C,IAAI,MAAM,QAAQ;CAClB,IAAI,SAAS,QAAQ;AAErB,KAAI,CAAC,OAAO,QAAQ,OAAO,OAAO;EAChC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAgB,WAAW,MAAO,IAAI,KAAA,IAAY;GAAa,CAAC;AACvG,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,QAAM;;AAGR,KAAI,CAAC,KAAK;AACR,UAAQ,MAAM,2BAA2B;AACzC,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,UAAU,QAAQ,OAAO,OAAO;EAC3C,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,6BAA6B,CAAC;AACrE,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,WAAS,OAAO,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;;CAGjD,MAAM,UAAU,MAAM,OAAO,KAAc,oBAAoB;EAAE;EAAK;EAAQ,CAAC;AAE/E,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,QAAQ,CAAC;AAChC;;AAGF,SAAQ,IAAI,cAAc,mBAAmB,QAAQ,KAAK,CAAC;AAC3D,KAAI,QAAQ,gBAAgB;AAC1B,UAAQ,IAAI,cAAc,sDAAsD,CAAC;AACjF,UAAQ,IAAI,QAAQ,eAAe"}
1
+ {"version":3,"file":"create6.mjs","names":[],"sources":["../../src/commands/webhooks/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess, formatWarning } from \"../../output.js\"\nimport type { Webhook } from \"../../types.js\"\n\ninterface WebhookCreateOptions {\n url?: string\n events?: string[]\n json?: boolean\n}\n\nfunction normalizeUrl(input: string): string {\n const trimmed = input.trim()\n if (!trimmed) return trimmed\n if (/^https?:\\/\\//i.test(trimmed)) return trimmed\n return `https://${trimmed}`\n}\n\nexport function parseWebhookCreateOptions(args: string[]): WebhookCreateOptions {\n const options: WebhookCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--url\":\n options.url = args[++i]\n break\n case \"--events\":\n options.events = args[++i]?.split(\",\").map((s) => s.trim())\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runWebhooksCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseWebhookCreateOptions(args)\n\n let url = options.url\n let events = options.events\n\n if (!url && process.stdout.isTTY) {\n const result = await p.text({ message: \"Webhook URL:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n url = result\n }\n\n if (!url) {\n console.error(\"Error: --url is required\")\n process.exit(1)\n }\n\n if (!events?.length && process.stdout.isTTY) {\n const result = await p.text({ message: \"Events (comma-separated):\" })\n if (p.isCancel(result)) return\n events = result.split(\",\").map((s: string) => s.trim())\n }\n\n const webhook = await client.post<Webhook>(\"/api/v1/webhooks\", {\n url: normalizeUrl(url),\n events,\n })\n\n if (options.json) {\n console.log(formatJson(webhook))\n return\n }\n\n console.log(formatSuccess(`Created webhook ${webhook.id}`))\n if (webhook.signingSecret) {\n console.log(formatWarning(\"Save this signing secret — it won't be shown again:\"))\n console.log(webhook.signingSecret)\n }\n}\n"],"mappings":";;;AAWA,SAAS,aAAa,OAAuB;CAC3C,MAAM,UAAU,MAAM,MAAM;AAC5B,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,gBAAgB,KAAK,QAAQ,CAAE,QAAO;AAC1C,QAAO,WAAW;;AAGpB,SAAgB,0BAA0B,MAAsC;CAC9E,MAAM,UAAgC,EAAE;AACxC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,MAAM,KAAK,EAAE;AACrB;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE,IAAI,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;AAC3D;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,MACe;CACf,MAAM,UAAU,0BAA0B,KAAK;CAE/C,IAAI,MAAM,QAAQ;CAClB,IAAI,SAAS,QAAQ;AAErB,KAAI,CAAC,OAAO,QAAQ,OAAO,OAAO;EAChC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAgB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AAC/G,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,QAAM;;AAGR,KAAI,CAAC,KAAK;AACR,UAAQ,MAAM,2BAA2B;AACzC,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,UAAU,QAAQ,OAAO,OAAO;EAC3C,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,6BAA6B,CAAC;AACrE,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,WAAS,OAAO,MAAM,IAAI,CAAC,KAAK,MAAc,EAAE,MAAM,CAAC;;CAGzD,MAAM,UAAU,MAAM,OAAO,KAAc,oBAAoB;EAC7D,KAAK,aAAa,IAAI;EACtB;EACD,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,QAAQ,CAAC;AAChC;;AAGF,SAAQ,IAAI,cAAc,mBAAmB,QAAQ,KAAK,CAAC;AAC3D,KAAI,QAAQ,eAAe;AACzB,UAAQ,IAAI,cAAc,sDAAsD,CAAC;AACjF,UAAQ,IAAI,QAAQ,cAAc"}
@@ -62,7 +62,7 @@ async function runCriteriaCreate(client, hackathonId, args) {
62
62
  const criteria = await client.post(`/api/dashboard/hackathons/${hackathonId}/judging/criteria`, {
63
63
  name,
64
64
  description: options.description,
65
- max_score: maxScore ?? 10,
65
+ maxScore: maxScore ?? 10,
66
66
  weight: weight ?? 1
67
67
  });
68
68
  if (options.json) {
@@ -1 +1 @@
1
- {"version":3,"file":"criteria-create.mjs","names":[],"sources":["../../src/commands/judging/criteria-create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaCreateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n json?: boolean\n}\n\nexport function parseCriteriaCreateOptions(args: string[]): CriteriaCreateOptions {\n const options: CriteriaCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseCriteriaCreateOptions(args)\n\n let name = options.name\n let maxScore = options.maxScore\n let weight = options.weight\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Criteria name:\", validate: (v) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n if (maxScore === undefined && process.stdout.isTTY) {\n const result = await p.text({ message: \"Max score:\", initialValue: \"10\" })\n if (p.isCancel(result)) return\n maxScore = parseInt(result, 10)\n }\n\n if (maxScore !== undefined && (isNaN(maxScore) || maxScore <= 0)) {\n console.error(\"Error: --max-score must be a positive integer\")\n process.exit(1)\n }\n\n if (weight === undefined && process.stdout.isTTY) {\n const result = await p.text({ message: \"Weight:\", initialValue: \"1\" })\n if (p.isCancel(result)) return\n weight = parseFloat(result)\n }\n\n const criteria = await client.post<JudgingCriteria>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria`,\n {\n name,\n description: options.description,\n max_score: maxScore ?? 10,\n weight: weight ?? 1,\n }\n )\n\n if (options.json) {\n console.log(formatJson(criteria))\n return\n }\n\n console.log(formatSuccess(`Created criteria \"${criteria.name}\" (${criteria.id})`))\n}\n"],"mappings":";;;AAaA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,GAAG;AAC1C;EACF,KAAK;AACH,WAAQ,SAAS,WAAW,KAAK,EAAE,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,2BAA2B,KAAK;CAEhD,IAAI,OAAO,QAAQ;CACnB,IAAI,WAAW,QAAQ;CACvB,IAAI,SAAS,QAAQ;AAErB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAkB,WAAW,MAAO,IAAI,KAAA,IAAY;GAAa,CAAC;AACzG,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,aAAa,KAAA,KAAa,QAAQ,OAAO,OAAO;EAClD,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAc,cAAc;GAAM,CAAC;AAC1E,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,aAAW,SAAS,QAAQ,GAAG;;AAGjC,KAAI,aAAa,KAAA,MAAc,MAAM,SAAS,IAAI,YAAY,IAAI;AAChE,UAAQ,MAAM,gDAAgD;AAC9D,UAAQ,KAAK,EAAE;;AAGjB,KAAI,WAAW,KAAA,KAAa,QAAQ,OAAO,OAAO;EAChD,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAW,cAAc;GAAK,CAAC;AACtE,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,WAAS,WAAW,OAAO;;CAG7B,MAAM,WAAW,MAAM,OAAO,KAC5B,6BAA6B,YAAY,oBACzC;EACE;EACA,aAAa,QAAQ;EACrB,WAAW,YAAY;EACvB,QAAQ,UAAU;EACnB,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"criteria-create.mjs","names":[],"sources":["../../src/commands/judging/criteria-create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaCreateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n json?: boolean\n}\n\nexport function parseCriteriaCreateOptions(args: string[]): CriteriaCreateOptions {\n const options: CriteriaCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseCriteriaCreateOptions(args)\n\n let name = options.name\n let maxScore = options.maxScore\n let weight = options.weight\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Criteria name:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n if (maxScore === undefined && process.stdout.isTTY) {\n const result = await p.text({ message: \"Max score:\", initialValue: \"10\" })\n if (p.isCancel(result)) return\n maxScore = parseInt(result, 10)\n }\n\n if (maxScore !== undefined && (isNaN(maxScore) || maxScore <= 0)) {\n console.error(\"Error: --max-score must be a positive integer\")\n process.exit(1)\n }\n\n if (weight === undefined && process.stdout.isTTY) {\n const result = await p.text({ message: \"Weight:\", initialValue: \"1\" })\n if (p.isCancel(result)) return\n weight = parseFloat(result)\n }\n\n const criteria = await client.post<JudgingCriteria>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria`,\n {\n name,\n description: options.description,\n maxScore: maxScore ?? 10,\n weight: weight ?? 1,\n }\n )\n\n if (options.json) {\n console.log(formatJson(criteria))\n return\n }\n\n console.log(formatSuccess(`Created criteria \"${criteria.name}\" (${criteria.id})`))\n}\n"],"mappings":";;;AAaA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,GAAG;AAC1C;EACF,KAAK;AACH,WAAQ,SAAS,WAAW,KAAK,EAAE,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,2BAA2B,KAAK;CAEhD,IAAI,OAAO,QAAQ;CACnB,IAAI,WAAW,QAAQ;CACvB,IAAI,SAAS,QAAQ;AAErB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAkB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AACjH,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,aAAa,KAAA,KAAa,QAAQ,OAAO,OAAO;EAClD,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAc,cAAc;GAAM,CAAC;AAC1E,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,aAAW,SAAS,QAAQ,GAAG;;AAGjC,KAAI,aAAa,KAAA,MAAc,MAAM,SAAS,IAAI,YAAY,IAAI;AAChE,UAAQ,MAAM,gDAAgD;AAC9D,UAAQ,KAAK,EAAE;;AAGjB,KAAI,WAAW,KAAA,KAAa,QAAQ,OAAO,OAAO;EAChD,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAW,cAAc;GAAK,CAAC;AACtE,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,WAAS,WAAW,OAAO;;CAG7B,MAAM,WAAW,MAAM,OAAO,KAC5B,6BAA6B,YAAY,oBACzC;EACE;EACA,aAAa,QAAQ;EACrB,UAAU,YAAY;EACtB,QAAQ,UAAU;EACnB,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG,CAAC"}
@@ -16,7 +16,7 @@ async function runCriteriaList(client, hackathonId, options) {
16
16
  label: "Name"
17
17
  },
18
18
  {
19
- key: "max_score",
19
+ key: "maxScore",
20
20
  label: "Max Score"
21
21
  },
22
22
  {
@@ -1 +1 @@
1
- {"version":3,"file":"criteria-list.mjs","names":[],"sources":["../../src/commands/judging/criteria-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\nexport async function runCriteriaList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ criteria: JudgingCriteria[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.criteria?.length) {\n console.log(\"No judging criteria found.\")\n return\n }\n\n console.log(\n formatTable(data.criteria, [\n { key: \"name\", label: \"Name\" },\n { key: \"max_score\", label: \"Max Score\" },\n { key: \"weight\", label: \"Weight\" },\n { key: \"description\", label: \"Description\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,mBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,6BAA6B;AACzC;;AAGF,SAAQ,IACN,YAAY,KAAK,UAAU;EACzB;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAa,OAAO;GAAa;EACxC;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAe,OAAO;;EAC9B,CAAC,CACH"}
1
+ {"version":3,"file":"criteria-list.mjs","names":[],"sources":["../../src/commands/judging/criteria-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\nexport async function runCriteriaList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ criteria: JudgingCriteria[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.criteria?.length) {\n console.log(\"No judging criteria found.\")\n return\n }\n\n console.log(\n formatTable(data.criteria, [\n { key: \"name\", label: \"Name\" },\n { key: \"maxScore\", label: \"Max Score\" },\n { key: \"weight\", label: \"Weight\" },\n { key: \"description\", label: \"Description\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,mBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,6BAA6B;AACzC;;AAGF,SAAQ,IACN,YAAY,KAAK,UAAU;EACzB;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAY,OAAO;GAAa;EACvC;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAe,OAAO;;EAC9B,CAAC,CACH"}
@@ -30,7 +30,7 @@ async function runCriteriaUpdate(client, hackathonId, criteriaId, args) {
30
30
  const body = {};
31
31
  if (options.name) body.name = options.name;
32
32
  if (options.description) body.description = options.description;
33
- if (options.maxScore !== void 0) body.max_score = options.maxScore;
33
+ if (options.maxScore !== void 0) body.maxScore = options.maxScore;
34
34
  if (options.weight !== void 0) body.weight = options.weight;
35
35
  if (Object.keys(body).length === 0) {
36
36
  console.error("Error: provide at least one field to update");
@@ -1 +1 @@
1
- {"version":3,"file":"criteria-update.mjs","names":[],"sources":["../../src/commands/judging/criteria-update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaUpdateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n json?: boolean\n}\n\nexport function parseCriteriaUpdateOptions(args: string[]): CriteriaUpdateOptions {\n const options: CriteriaUpdateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaUpdate(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n args: string[]\n): Promise<void> {\n if (!criteriaId) {\n console.error(\"Usage: hackathon judging criteria update <hackathon-id> <criteria-id> [--name ...] [--max-score ...]\")\n process.exit(1)\n }\n\n const options = parseCriteriaUpdateOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.description) body.description = options.description\n if (options.maxScore !== undefined) body.max_score = options.maxScore\n if (options.weight !== undefined) body.weight = options.weight\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update\")\n process.exit(1)\n }\n\n const criteria = await client.patch<JudgingCriteria>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(criteria))\n return\n }\n\n console.log(formatSuccess(`Updated criteria \"${criteria.name}\"`))\n}\n"],"mappings":";;AAYA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,GAAG;AAC1C;EACF,KAAK;AACH,WAAQ,SAAS,WAAW,KAAK,EAAE,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,aACA,YACA,MACe;AACf,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,uGAAuG;AACrH,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,2BAA2B,KAAK;CAChD,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AACpD,KAAI,QAAQ,aAAa,KAAA,EAAW,MAAK,YAAY,QAAQ;AAC7D,KAAI,QAAQ,WAAW,KAAA,EAAW,MAAK,SAAS,QAAQ;AAExD,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,MAC5B,6BAA6B,YAAY,oBAAoB,cAC7D,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,GAAG,CAAC"}
1
+ {"version":3,"file":"criteria-update.mjs","names":[],"sources":["../../src/commands/judging/criteria-update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaUpdateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n json?: boolean\n}\n\nexport function parseCriteriaUpdateOptions(args: string[]): CriteriaUpdateOptions {\n const options: CriteriaUpdateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaUpdate(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n args: string[]\n): Promise<void> {\n if (!criteriaId) {\n console.error(\"Usage: hackathon judging criteria update <hackathon-id> <criteria-id> [--name ...] [--max-score ...]\")\n process.exit(1)\n }\n\n const options = parseCriteriaUpdateOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.description) body.description = options.description\n if (options.maxScore !== undefined) body.maxScore = options.maxScore\n if (options.weight !== undefined) body.weight = options.weight\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update\")\n process.exit(1)\n }\n\n const criteria = await client.patch<JudgingCriteria>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(criteria))\n return\n }\n\n console.log(formatSuccess(`Updated criteria \"${criteria.name}\"`))\n}\n"],"mappings":";;AAYA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,GAAG;AAC1C;EACF,KAAK;AACH,WAAQ,SAAS,WAAW,KAAK,EAAE,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,aACA,YACA,MACe;AACf,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,uGAAuG;AACrH,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,2BAA2B,KAAK;CAChD,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AACpD,KAAI,QAAQ,aAAa,KAAA,EAAW,MAAK,WAAW,QAAQ;AAC5D,KAAI,QAAQ,WAAW,KAAA,EAAW,MAAK,SAAS,QAAQ;AAExD,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,MAC5B,6BAA6B,YAAY,oBAAoB,cAC7D,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,GAAG,CAAC"}
@@ -4,7 +4,7 @@ import * as p from "@clack/prompts";
4
4
  //#region src/commands/hackathons/delete.ts
5
5
  async function runHackathonsDelete(client, idOrSlug, options) {
6
6
  if (!idOrSlug) {
7
- console.error("Usage: hackathon hackathons delete <id-or-slug>");
7
+ console.error("Usage: hackathon events delete <id-or-slug>");
8
8
  process.exit(1);
9
9
  }
10
10
  const id = await resolveHackathonId(client, idOrSlug);
@@ -1 +1 @@
1
- {"version":3,"file":"delete.mjs","names":[],"sources":["../../src/commands/hackathons/delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\nimport { resolveHackathonId } from \"./resolve.js\"\n\nexport async function runHackathonsDelete(\n client: OatmealClient,\n idOrSlug: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!idOrSlug) {\n console.error(\"Usage: hackathon hackathons delete <id-or-slug>\")\n process.exit(1)\n }\n\n const id = await resolveHackathonId(client, idOrSlug)\n\n if (!options.yes) {\n const confirm = await p.confirm({\n message: `Delete hackathon ${idOrSlug}? This cannot be undone.`,\n })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(`/api/dashboard/hackathons/${id}`)\n console.log(formatSuccess(`Deleted hackathon ${idOrSlug}`))\n}\n"],"mappings":";;;;AAKA,eAAsB,oBACpB,QACA,UACA,SACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,kDAAkD;AAChE,UAAQ,KAAK,EAAE;;CAGjB,MAAM,KAAK,MAAM,mBAAmB,QAAQ,SAAS;AAErD,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAC9B,SAAS,oBAAoB,SAAS,2BACvC,CAAC;AACF,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OAAO,6BAA6B,KAAK;AACtD,SAAQ,IAAI,cAAc,qBAAqB,WAAW,CAAC"}
1
+ {"version":3,"file":"delete.mjs","names":[],"sources":["../../src/commands/hackathons/delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\nimport { resolveHackathonId } from \"./resolve.js\"\n\nexport async function runHackathonsDelete(\n client: OatmealClient,\n idOrSlug: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!idOrSlug) {\n console.error(\"Usage: hackathon events delete <id-or-slug>\")\n process.exit(1)\n }\n\n const id = await resolveHackathonId(client, idOrSlug)\n\n if (!options.yes) {\n const confirm = await p.confirm({\n message: `Delete hackathon ${idOrSlug}? This cannot be undone.`,\n })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(`/api/dashboard/hackathons/${id}`)\n console.log(formatSuccess(`Deleted hackathon ${idOrSlug}`))\n}\n"],"mappings":";;;;AAKA,eAAsB,oBACpB,QACA,UACA,SACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,KAAK,MAAM,mBAAmB,QAAQ,SAAS;AAErD,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAC9B,SAAS,oBAAoB,SAAS,2BACvC,CAAC;AACF,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OAAO,6BAA6B,KAAK;AACtD,SAAQ,IAAI,cAAc,qBAAqB,WAAW,CAAC"}
@@ -3,7 +3,7 @@ import { t as resolveHackathonId } from "./resolve.mjs";
3
3
  //#region src/commands/hackathons/get.ts
4
4
  async function runHackathonsGet(client, idOrSlug, options) {
5
5
  if (!idOrSlug) {
6
- console.error("Usage: hackathon hackathons get <id-or-slug>");
6
+ console.error("Usage: hackathon events get <id-or-slug>");
7
7
  process.exit(1);
8
8
  }
9
9
  const id = await resolveHackathonId(client, idOrSlug);
@@ -35,23 +35,23 @@ async function runHackathonsGet(client, idOrSlug, options) {
35
35
  },
36
36
  {
37
37
  label: "Starts",
38
- value: hackathon.starts_at
38
+ value: hackathon.startsAt
39
39
  },
40
40
  {
41
41
  label: "Ends",
42
- value: hackathon.ends_at
42
+ value: hackathon.endsAt
43
43
  },
44
44
  {
45
45
  label: "Registration Opens",
46
- value: hackathon.registration_opens_at
46
+ value: hackathon.registrationOpensAt
47
47
  },
48
48
  {
49
49
  label: "Registration Closes",
50
- value: hackathon.registration_closes_at
50
+ value: hackathon.registrationClosesAt
51
51
  },
52
52
  {
53
53
  label: "Created",
54
- value: hackathon.created_at
54
+ value: hackathon.createdAt
55
55
  }
56
56
  ]));
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get.mjs","names":[],"sources":["../../src/commands/hackathons/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatDetail, formatJson } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\nimport { resolveHackathonId } from \"./resolve.js\"\n\nexport async function runHackathonsGet(\n client: OatmealClient,\n idOrSlug: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!idOrSlug) {\n console.error(\"Usage: hackathon hackathons get <id-or-slug>\")\n process.exit(1)\n }\n\n const id = await resolveHackathonId(client, idOrSlug)\n const hackathon = await client.get<Hackathon>(`/api/dashboard/hackathons/${id}`)\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(\n formatDetail([\n { label: \"ID\", value: hackathon.id },\n { label: \"Name\", value: hackathon.name },\n { label: \"Slug\", value: hackathon.slug },\n { label: \"Status\", value: hackathon.status },\n { label: \"Description\", value: hackathon.description },\n { label: \"Starts\", value: hackathon.starts_at },\n { label: \"Ends\", value: hackathon.ends_at },\n { label: \"Registration Opens\", value: hackathon.registration_opens_at },\n { label: \"Registration Closes\", value: hackathon.registration_closes_at },\n { label: \"Created\", value: hackathon.created_at },\n ])\n )\n}\n"],"mappings":";;;AAKA,eAAsB,iBACpB,QACA,UACA,SACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,+CAA+C;AAC7D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,KAAK,MAAM,mBAAmB,QAAQ,SAAS;CACrD,MAAM,YAAY,MAAM,OAAO,IAAe,6BAA6B,KAAK;AAEhF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,SAAQ,IACN,aAAa;EACX;GAAE,OAAO;GAAM,OAAO,UAAU;GAAI;EACpC;GAAE,OAAO;GAAQ,OAAO,UAAU;GAAM;EACxC;GAAE,OAAO;GAAQ,OAAO,UAAU;GAAM;EACxC;GAAE,OAAO;GAAU,OAAO,UAAU;GAAQ;EAC5C;GAAE,OAAO;GAAe,OAAO,UAAU;GAAa;EACtD;GAAE,OAAO;GAAU,OAAO,UAAU;GAAW;EAC/C;GAAE,OAAO;GAAQ,OAAO,UAAU;GAAS;EAC3C;GAAE,OAAO;GAAsB,OAAO,UAAU;GAAuB;EACvE;GAAE,OAAO;GAAuB,OAAO,UAAU;GAAwB;EACzE;GAAE,OAAO;GAAW,OAAO,UAAU;;EACtC,CAAC,CACH"}
1
+ {"version":3,"file":"get.mjs","names":[],"sources":["../../src/commands/hackathons/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatDetail, formatJson } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\nimport { resolveHackathonId } from \"./resolve.js\"\n\nexport async function runHackathonsGet(\n client: OatmealClient,\n idOrSlug: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!idOrSlug) {\n console.error(\"Usage: hackathon events get <id-or-slug>\")\n process.exit(1)\n }\n\n const id = await resolveHackathonId(client, idOrSlug)\n const hackathon = await client.get<Hackathon>(`/api/dashboard/hackathons/${id}`)\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(\n formatDetail([\n { label: \"ID\", value: hackathon.id },\n { label: \"Name\", value: hackathon.name },\n { label: \"Slug\", value: hackathon.slug },\n { label: \"Status\", value: hackathon.status },\n { label: \"Description\", value: hackathon.description },\n { label: \"Starts\", value: hackathon.startsAt },\n { label: \"Ends\", value: hackathon.endsAt },\n { label: \"Registration Opens\", value: hackathon.registrationOpensAt },\n { label: \"Registration Closes\", value: hackathon.registrationClosesAt },\n { label: \"Created\", value: hackathon.createdAt },\n ])\n )\n}\n"],"mappings":";;;AAKA,eAAsB,iBACpB,QACA,UACA,SACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,2CAA2C;AACzD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,KAAK,MAAM,mBAAmB,QAAQ,SAAS;CACrD,MAAM,YAAY,MAAM,OAAO,IAAe,6BAA6B,KAAK;AAEhF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,SAAQ,IACN,aAAa;EACX;GAAE,OAAO;GAAM,OAAO,UAAU;GAAI;EACpC;GAAE,OAAO;GAAQ,OAAO,UAAU;GAAM;EACxC;GAAE,OAAO;GAAQ,OAAO,UAAU;GAAM;EACxC;GAAE,OAAO;GAAU,OAAO,UAAU;GAAQ;EAC5C;GAAE,OAAO;GAAe,OAAO,UAAU;GAAa;EACtD;GAAE,OAAO;GAAU,OAAO,UAAU;GAAU;EAC9C;GAAE,OAAO;GAAQ,OAAO,UAAU;GAAQ;EAC1C;GAAE,OAAO;GAAsB,OAAO,UAAU;GAAqB;EACrE;GAAE,OAAO;GAAuB,OAAO,UAAU;GAAsB;EACvE;GAAE,OAAO;GAAW,OAAO,UAAU;;EACtC,CAAC,CACH"}
@@ -25,11 +25,11 @@ async function runJobsGet(client, jobId, options) {
25
25
  },
26
26
  {
27
27
  label: "Created",
28
- value: job.created_at
28
+ value: job.createdAt
29
29
  },
30
30
  {
31
31
  label: "Completed",
32
- value: job.completed_at
32
+ value: job.completedAt
33
33
  },
34
34
  {
35
35
  label: "Error",
@@ -1 +1 @@
1
- {"version":3,"file":"get2.mjs","names":[],"sources":["../../src/commands/jobs/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatDetail, formatJson } from \"../../output.js\"\nimport type { Job } from \"../../types.js\"\n\nexport async function runJobsGet(\n client: OatmealClient,\n jobId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!jobId) {\n console.error(\"Usage: hackathon jobs get <job-id>\")\n process.exit(1)\n }\n\n const job = await client.get<Job>(`/api/dashboard/jobs/${jobId}`)\n\n if (options.json) {\n console.log(formatJson(job))\n return\n }\n\n console.log(\n formatDetail([\n { label: \"ID\", value: job.id },\n { label: \"Type\", value: job.type },\n { label: \"Status\", value: job.status },\n { label: \"Created\", value: job.created_at },\n { label: \"Completed\", value: job.completed_at },\n { label: \"Error\", value: job.error },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,WACpB,QACA,OACA,SACe;AACf,KAAI,CAAC,OAAO;AACV,UAAQ,MAAM,qCAAqC;AACnD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,MAAM,MAAM,OAAO,IAAS,uBAAuB,QAAQ;AAEjE,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,IAAI,CAAC;AAC5B;;AAGF,SAAQ,IACN,aAAa;EACX;GAAE,OAAO;GAAM,OAAO,IAAI;GAAI;EAC9B;GAAE,OAAO;GAAQ,OAAO,IAAI;GAAM;EAClC;GAAE,OAAO;GAAU,OAAO,IAAI;GAAQ;EACtC;GAAE,OAAO;GAAW,OAAO,IAAI;GAAY;EAC3C;GAAE,OAAO;GAAa,OAAO,IAAI;GAAc;EAC/C;GAAE,OAAO;GAAS,OAAO,IAAI;;EAC9B,CAAC,CACH"}
1
+ {"version":3,"file":"get2.mjs","names":[],"sources":["../../src/commands/jobs/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatDetail, formatJson } from \"../../output.js\"\nimport type { Job } from \"../../types.js\"\n\nexport async function runJobsGet(\n client: OatmealClient,\n jobId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!jobId) {\n console.error(\"Usage: hackathon jobs get <job-id>\")\n process.exit(1)\n }\n\n const job = await client.get<Job>(`/api/dashboard/jobs/${jobId}`)\n\n if (options.json) {\n console.log(formatJson(job))\n return\n }\n\n console.log(\n formatDetail([\n { label: \"ID\", value: job.id },\n { label: \"Type\", value: job.type },\n { label: \"Status\", value: job.status },\n { label: \"Created\", value: job.createdAt },\n { label: \"Completed\", value: job.completedAt },\n { label: \"Error\", value: job.error },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,WACpB,QACA,OACA,SACe;AACf,KAAI,CAAC,OAAO;AACV,UAAQ,MAAM,qCAAqC;AACnD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,MAAM,MAAM,OAAO,IAAS,uBAAuB,QAAQ;AAEjE,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,IAAI,CAAC;AAC5B;;AAGF,SAAQ,IACN,aAAa;EACX;GAAE,OAAO;GAAM,OAAO,IAAI;GAAI;EAC9B;GAAE,OAAO;GAAQ,OAAO,IAAI;GAAM;EAClC;GAAE,OAAO;GAAU,OAAO,IAAI;GAAQ;EACtC;GAAE,OAAO;GAAW,OAAO,IAAI;GAAW;EAC1C;GAAE,OAAO;GAAa,OAAO,IAAI;GAAa;EAC9C;GAAE,OAAO;GAAS,OAAO,IAAI;;EAC9B,CAAC,CACH"}
@@ -10,25 +10,25 @@ async function runResultsGet(client, hackathonId, options) {
10
10
  console.log(formatJson(data));
11
11
  return;
12
12
  }
13
- if (!data.rankings?.length) {
13
+ if (!data.results?.length) {
14
14
  console.log("No results available. Run 'hackathon results calculate <id>' first.");
15
15
  return;
16
16
  }
17
- console.log(formatTable(data.rankings, [
17
+ console.log(formatTable(data.results, [
18
18
  {
19
19
  key: "rank",
20
20
  label: "#"
21
21
  },
22
22
  {
23
- key: "submission_name",
23
+ key: "submissionTitle",
24
24
  label: "Submission"
25
25
  },
26
26
  {
27
- key: "team_name",
27
+ key: "teamName",
28
28
  label: "Team"
29
29
  },
30
30
  {
31
- key: "total_score",
31
+ key: "totalScore",
32
32
  label: "Score"
33
33
  }
34
34
  ]));
@@ -1 +1 @@
1
- {"version":3,"file":"get3.mjs","names":[],"sources":["../../src/commands/results/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { ResultsData } from \"../../types.js\"\n\nexport async function runResultsGet(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!hackathonId) {\n console.error(\"Usage: hackathon results get <hackathon-id>\")\n process.exit(1)\n }\n\n const data = await client.get<ResultsData>(\n `/api/dashboard/hackathons/${hackathonId}/results`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.rankings?.length) {\n console.log(\"No results available. Run 'hackathon results calculate <id>' first.\")\n return\n }\n\n console.log(\n formatTable(data.rankings, [\n { key: \"rank\", label: \"#\" },\n { key: \"submission_name\", label: \"Submission\" },\n { key: \"team_name\", label: \"Team\" },\n { key: \"total_score\", label: \"Score\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,cACpB,QACA,aACA,SACe;AACf,KAAI,CAAC,aAAa;AAChB,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,UAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,sEAAsE;AAClF;;AAGF,SAAQ,IACN,YAAY,KAAK,UAAU;EACzB;GAAE,KAAK;GAAQ,OAAO;GAAK;EAC3B;GAAE,KAAK;GAAmB,OAAO;GAAc;EAC/C;GAAE,KAAK;GAAa,OAAO;GAAQ;EACnC;GAAE,KAAK;GAAe,OAAO;;EAC9B,CAAC,CACH"}
1
+ {"version":3,"file":"get3.mjs","names":[],"sources":["../../src/commands/results/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { ResultsData } from \"../../types.js\"\n\nexport async function runResultsGet(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!hackathonId) {\n console.error(\"Usage: hackathon results get <hackathon-id>\")\n process.exit(1)\n }\n\n const data = await client.get<ResultsData>(\n `/api/dashboard/hackathons/${hackathonId}/results`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.results?.length) {\n console.log(\"No results available. Run 'hackathon results calculate <id>' first.\")\n return\n }\n\n console.log(\n formatTable(data.results, [\n { key: \"rank\", label: \"#\" },\n { key: \"submissionTitle\", label: \"Submission\" },\n { key: \"teamName\", label: \"Team\" },\n { key: \"totalScore\", label: \"Score\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,cACpB,QACA,aACA,SACe;AACf,KAAI,CAAC,aAAa;AAChB,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,UAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,SAAS,QAAQ;AACzB,UAAQ,IAAI,sEAAsE;AAClF;;AAGF,SAAQ,IACN,YAAY,KAAK,SAAS;EACxB;GAAE,KAAK;GAAQ,OAAO;GAAK;EAC3B;GAAE,KAAK;GAAmB,OAAO;GAAc;EAC/C;GAAE,KAAK;GAAY,OAAO;GAAQ;EAClC;GAAE,KAAK;GAAc,OAAO;;EAC7B,CAAC,CACH"}
@@ -21,23 +21,23 @@ async function runSchedulesGet(client, scheduleId, options) {
21
21
  },
22
22
  {
23
23
  label: "Cron",
24
- value: schedule.cron_expression
24
+ value: schedule.cronExpression
25
25
  },
26
26
  {
27
27
  label: "Enabled",
28
- value: String(schedule.enabled)
28
+ value: String(schedule.isActive)
29
29
  },
30
30
  {
31
31
  label: "Last Run",
32
- value: schedule.last_run_at
32
+ value: schedule.lastRunAt
33
33
  },
34
34
  {
35
35
  label: "Next Run",
36
- value: schedule.next_run_at
36
+ value: schedule.nextRunAt
37
37
  },
38
38
  {
39
39
  label: "Created",
40
- value: schedule.created_at
40
+ value: schedule.createdAt
41
41
  }
42
42
  ]));
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get4.mjs","names":[],"sources":["../../src/commands/schedules/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatDetail, formatJson } from \"../../output.js\"\nimport type { Schedule } from \"../../types.js\"\n\nexport async function runSchedulesGet(\n client: OatmealClient,\n scheduleId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!scheduleId) {\n console.error(\"Usage: hackathon schedules get <schedule-id>\")\n process.exit(1)\n }\n\n const schedule = await client.get<Schedule>(`/api/dashboard/schedules/${scheduleId}`)\n\n if (options.json) {\n console.log(formatJson(schedule))\n return\n }\n\n console.log(\n formatDetail([\n { label: \"ID\", value: schedule.id },\n { label: \"Name\", value: schedule.name },\n { label: \"Cron\", value: schedule.cron_expression },\n { label: \"Enabled\", value: String(schedule.enabled) },\n { label: \"Last Run\", value: schedule.last_run_at },\n { label: \"Next Run\", value: schedule.next_run_at },\n { label: \"Created\", value: schedule.created_at },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,YACA,SACe;AACf,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,+CAA+C;AAC7D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,IAAc,4BAA4B,aAAa;AAErF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IACN,aAAa;EACX;GAAE,OAAO;GAAM,OAAO,SAAS;GAAI;EACnC;GAAE,OAAO;GAAQ,OAAO,SAAS;GAAM;EACvC;GAAE,OAAO;GAAQ,OAAO,SAAS;GAAiB;EAClD;GAAE,OAAO;GAAW,OAAO,OAAO,SAAS,QAAA;GAAU;EACrD;GAAE,OAAO;GAAY,OAAO,SAAS;GAAa;EAClD;GAAE,OAAO;GAAY,OAAO,SAAS;GAAa;EAClD;GAAE,OAAO;GAAW,OAAO,SAAS;;EACrC,CAAC,CACH"}
1
+ {"version":3,"file":"get4.mjs","names":[],"sources":["../../src/commands/schedules/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatDetail, formatJson } from \"../../output.js\"\nimport type { Schedule } from \"../../types.js\"\n\nexport async function runSchedulesGet(\n client: OatmealClient,\n scheduleId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!scheduleId) {\n console.error(\"Usage: hackathon schedules get <schedule-id>\")\n process.exit(1)\n }\n\n const schedule = await client.get<Schedule>(`/api/dashboard/schedules/${scheduleId}`)\n\n if (options.json) {\n console.log(formatJson(schedule))\n return\n }\n\n console.log(\n formatDetail([\n { label: \"ID\", value: schedule.id },\n { label: \"Name\", value: schedule.name },\n { label: \"Cron\", value: schedule.cronExpression },\n { label: \"Enabled\", value: String(schedule.isActive) },\n { label: \"Last Run\", value: schedule.lastRunAt },\n { label: \"Next Run\", value: schedule.nextRunAt },\n { label: \"Created\", value: schedule.createdAt },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,YACA,SACe;AACf,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,+CAA+C;AAC7D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,IAAc,4BAA4B,aAAa;AAErF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IACN,aAAa;EACX;GAAE,OAAO;GAAM,OAAO,SAAS;GAAI;EACnC;GAAE,OAAO;GAAQ,OAAO,SAAS;GAAM;EACvC;GAAE,OAAO;GAAQ,OAAO,SAAS;GAAgB;EACjD;GAAE,OAAO;GAAW,OAAO,OAAO,SAAS,SAAA;GAAW;EACtD;GAAE,OAAO;GAAY,OAAO,SAAS;GAAW;EAChD;GAAE,OAAO;GAAY,OAAO,SAAS;GAAW;EAChD;GAAE,OAAO;GAAW,OAAO,SAAS;;EACrC,CAAC,CACH"}
@@ -49,11 +49,11 @@ async function runBrowseHackathons(client, args) {
49
49
  label: "Status"
50
50
  },
51
51
  {
52
- key: "starts_at",
52
+ key: "startsAt",
53
53
  label: "Starts"
54
54
  },
55
55
  {
56
- key: "ends_at",
56
+ key: "endsAt",
57
57
  label: "Ends"
58
58
  }
59
59
  ]));
@@ -1 +1 @@
1
- {"version":3,"file":"hackathons.mjs","names":[],"sources":["../../src/commands/browse/hackathons.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\n\ninterface BrowseHackathonsOptions {\n search?: string\n page?: number\n limit?: number\n json?: boolean\n}\n\nexport function parseBrowseHackathonsOptions(args: string[]): BrowseHackathonsOptions {\n const options: BrowseHackathonsOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--search\":\n case \"-s\":\n options.search = args[++i]\n break\n case \"--page\":\n options.page = parseInt(args[++i], 10)\n break\n case \"--limit\":\n options.limit = parseInt(args[++i], 10)\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runBrowseHackathons(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseBrowseHackathonsOptions(args)\n\n const params: Record<string, string | number | undefined> = {\n q: options.search,\n page: options.page,\n limit: options.limit,\n }\n\n const data = await client.get<{ hackathons: Hackathon[] }>(\"/api/public/hackathons\", {\n params,\n })\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.hackathons?.length) {\n console.log(\"No hackathons found.\")\n return\n }\n\n console.log(\n formatTable(data.hackathons, [\n { key: \"name\", label: \"Name\" },\n { key: \"slug\", label: \"Slug\" },\n { key: \"status\", label: \"Status\" },\n { key: \"starts_at\", label: \"Starts\" },\n { key: \"ends_at\", label: \"Ends\" },\n ])\n )\n}\n"],"mappings":";;AAWA,SAAgB,6BAA6B,MAAyC;CACpF,MAAM,UAAmC,EAAE;AAC3C,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;EACL,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE;AACxB;EACF,KAAK;AACH,WAAQ,OAAO,SAAS,KAAK,EAAE,IAAI,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,QAAQ,SAAS,KAAK,EAAE,IAAI,GAAG;AACvC;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,oBACpB,QACA,MACe;CACf,MAAM,UAAU,6BAA6B,KAAK;CAElD,MAAM,SAAsD;EAC1D,GAAG,QAAQ;EACX,MAAM,QAAQ;EACd,OAAO,QAAQ;EAChB;CAED,MAAM,OAAO,MAAM,OAAO,IAAiC,0BAA0B,EACnF,QACD,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,YAAY,QAAQ;AAC5B,UAAQ,IAAI,uBAAuB;AACnC;;AAGF,SAAQ,IACN,YAAY,KAAK,YAAY;EAC3B;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAa,OAAO;GAAU;EACrC;GAAE,KAAK;GAAW,OAAO;;EAC1B,CAAC,CACH"}
1
+ {"version":3,"file":"hackathons.mjs","names":[],"sources":["../../src/commands/browse/hackathons.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\n\ninterface BrowseHackathonsOptions {\n search?: string\n page?: number\n limit?: number\n json?: boolean\n}\n\nexport function parseBrowseHackathonsOptions(args: string[]): BrowseHackathonsOptions {\n const options: BrowseHackathonsOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--search\":\n case \"-s\":\n options.search = args[++i]\n break\n case \"--page\":\n options.page = parseInt(args[++i], 10)\n break\n case \"--limit\":\n options.limit = parseInt(args[++i], 10)\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runBrowseHackathons(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseBrowseHackathonsOptions(args)\n\n const params: Record<string, string | number | undefined> = {\n q: options.search,\n page: options.page,\n limit: options.limit,\n }\n\n const data = await client.get<{ hackathons: Hackathon[] }>(\"/api/public/hackathons\", {\n params,\n })\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.hackathons?.length) {\n console.log(\"No hackathons found.\")\n return\n }\n\n console.log(\n formatTable(data.hackathons, [\n { key: \"name\", label: \"Name\" },\n { key: \"slug\", label: \"Slug\" },\n { key: \"status\", label: \"Status\" },\n { key: \"startsAt\", label: \"Starts\" },\n { key: \"endsAt\", label: \"Ends\" },\n ])\n )\n}\n"],"mappings":";;AAWA,SAAgB,6BAA6B,MAAyC;CACpF,MAAM,UAAmC,EAAE;AAC3C,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;EACL,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE;AACxB;EACF,KAAK;AACH,WAAQ,OAAO,SAAS,KAAK,EAAE,IAAI,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,QAAQ,SAAS,KAAK,EAAE,IAAI,GAAG;AACvC;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,oBACpB,QACA,MACe;CACf,MAAM,UAAU,6BAA6B,KAAK;CAElD,MAAM,SAAsD;EAC1D,GAAG,QAAQ;EACX,MAAM,QAAQ;EACd,OAAO,QAAQ;EAChB;CAED,MAAM,OAAO,MAAM,OAAO,IAAiC,0BAA0B,EACnF,QACD,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,YAAY,QAAQ;AAC5B,UAAQ,IAAI,uBAAuB;AACnC;;AAGF,SAAQ,IACN,YAAY,KAAK,YAAY;EAC3B;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAY,OAAO;GAAU;EACpC;GAAE,KAAK;GAAU,OAAO;;EACzB,CAAC,CACH"}
@@ -20,7 +20,7 @@ async function runInvitationsList(client, hackathonId, options) {
20
20
  label: "Status"
21
21
  },
22
22
  {
23
- key: "created_at",
23
+ key: "createdAt",
24
24
  label: "Sent"
25
25
  }
26
26
  ]));
@@ -1 +1 @@
1
- {"version":3,"file":"invitations-list.mjs","names":[],"sources":["../../src/commands/judging/invitations-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgeInvitation } from \"../../types.js\"\n\nexport async function runInvitationsList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ invitations: JudgeInvitation[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/invitations`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.invitations?.length) {\n console.log(\"No pending invitations.\")\n return\n }\n\n console.log(\n formatTable(data.invitations, [\n { key: \"email\", label: \"Email\" },\n { key: \"status\", label: \"Status\" },\n { key: \"created_at\", label: \"Sent\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,mBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,sBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,aAAa,QAAQ;AAC7B,UAAQ,IAAI,0BAA0B;AACtC;;AAGF,SAAQ,IACN,YAAY,KAAK,aAAa;EAC5B;GAAE,KAAK;GAAS,OAAO;GAAS;EAChC;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAc,OAAO;;EAC7B,CAAC,CACH"}
1
+ {"version":3,"file":"invitations-list.mjs","names":[],"sources":["../../src/commands/judging/invitations-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgeInvitation } from \"../../types.js\"\n\nexport async function runInvitationsList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ invitations: JudgeInvitation[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/invitations`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.invitations?.length) {\n console.log(\"No pending invitations.\")\n return\n }\n\n console.log(\n formatTable(data.invitations, [\n { key: \"email\", label: \"Email\" },\n { key: \"status\", label: \"Status\" },\n { key: \"createdAt\", label: \"Sent\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,mBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,sBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,aAAa,QAAQ;AAC7B,UAAQ,IAAI,0BAA0B;AACtC;;AAGF,SAAQ,IACN,YAAY,KAAK,aAAa;EAC5B;GAAE,KAAK;GAAS,OAAO;GAAS;EAChC;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAa,OAAO;;EAC5B,CAAC,CACH"}
@@ -23,7 +23,7 @@ async function runJudgesAdd(client, hackathonId, args) {
23
23
  }
24
24
  const body = {};
25
25
  if (options.email) body.email = options.email;
26
- if (options.userId) body.user_id = options.userId;
26
+ if (options.userId) body.clerkUserId = options.userId;
27
27
  const judge = await client.post(`/api/dashboard/hackathons/${hackathonId}/judging/judges`, body);
28
28
  if (options.json) {
29
29
  console.log(formatJson(judge));
@@ -1 +1 @@
1
- {"version":3,"file":"judges-add.mjs","names":[],"sources":["../../src/commands/judging/judges-add.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Judge } from \"../../types.js\"\n\ninterface JudgesAddOptions {\n email?: string\n userId?: string\n json?: boolean\n}\n\nexport function parseJudgesAddOptions(args: string[]): JudgesAddOptions {\n const options: JudgesAddOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--email\":\n options.email = args[++i]\n break\n case \"--user-id\":\n options.userId = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runJudgesAdd(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseJudgesAddOptions(args)\n\n if (!options.email && !options.userId) {\n console.error(\"Error: provide --email or --user-id\")\n process.exit(1)\n }\n\n const body: Record<string, string> = {}\n if (options.email) body.email = options.email\n if (options.userId) body.user_id = options.userId\n\n const judge = await client.post<Judge>(\n `/api/dashboard/hackathons/${hackathonId}/judging/judges`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(judge))\n return\n }\n\n console.log(formatSuccess(`Added judge ${judge.name ?? judge.email ?? judge.id}`))\n}\n"],"mappings":";;AAUA,SAAgB,sBAAsB,MAAkC;CACtE,MAAM,UAA4B,EAAE;AACpC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE;AACxB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,aACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,sBAAsB,KAAK;AAE3C,KAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ,QAAQ;AACrC,UAAQ,MAAM,sCAAsC;AACpD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAA+B,EAAE;AACvC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AACxC,KAAI,QAAQ,OAAQ,MAAK,UAAU,QAAQ;CAE3C,MAAM,QAAQ,MAAM,OAAO,KACzB,6BAA6B,YAAY,kBACzC,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,eAAe,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAK,CAAC"}
1
+ {"version":3,"file":"judges-add.mjs","names":[],"sources":["../../src/commands/judging/judges-add.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Judge } from \"../../types.js\"\n\ninterface JudgesAddOptions {\n email?: string\n userId?: string\n json?: boolean\n}\n\nexport function parseJudgesAddOptions(args: string[]): JudgesAddOptions {\n const options: JudgesAddOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--email\":\n options.email = args[++i]\n break\n case \"--user-id\":\n options.userId = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runJudgesAdd(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseJudgesAddOptions(args)\n\n if (!options.email && !options.userId) {\n console.error(\"Error: provide --email or --user-id\")\n process.exit(1)\n }\n\n const body: Record<string, string> = {}\n if (options.email) body.email = options.email\n if (options.userId) body.clerkUserId = options.userId\n\n const judge = await client.post<Judge>(\n `/api/dashboard/hackathons/${hackathonId}/judging/judges`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(judge))\n return\n }\n\n console.log(formatSuccess(`Added judge ${judge.name ?? judge.email ?? judge.id}`))\n}\n"],"mappings":";;AAUA,SAAgB,sBAAsB,MAAkC;CACtE,MAAM,UAA4B,EAAE;AACpC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE;AACxB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,aACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,sBAAsB,KAAK;AAE3C,KAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ,QAAQ;AACrC,UAAQ,MAAM,sCAAsC;AACpD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAA+B,EAAE;AACvC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AACxC,KAAI,QAAQ,OAAQ,MAAK,cAAc,QAAQ;CAE/C,MAAM,QAAQ,MAAM,OAAO,KACzB,6BAA6B,YAAY,kBACzC,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,eAAe,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAK,CAAC"}
@@ -12,7 +12,7 @@ async function runJudgesList(client, hackathonId, options) {
12
12
  }
13
13
  const rows = data.judges.map((j) => ({
14
14
  ...j,
15
- progress: `${j.completed_count ?? 0}/${j.total_count ?? 0}`
15
+ progress: `${j.completedCount ?? 0}/${j.totalCount ?? 0}`
16
16
  }));
17
17
  console.log(formatTable(rows, [
18
18
  {
@@ -1 +1 @@
1
- {"version":3,"file":"judges-list.mjs","names":[],"sources":["../../src/commands/judging/judges-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Judge } from \"../../types.js\"\n\nexport async function runJudgesList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ judges: Judge[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/judges`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.judges?.length) {\n console.log(\"No judges found.\")\n return\n }\n\n const rows = data.judges.map((j) => ({\n ...j,\n progress: `${j.completed_count ?? 0}/${j.total_count ?? 0}`,\n }))\n\n console.log(\n formatTable(rows, [\n { key: \"name\", label: \"Name\" },\n { key: \"email\", label: \"Email\" },\n { key: \"progress\", label: \"Progress\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,cACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,iBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,UAAQ,IAAI,mBAAmB;AAC/B;;CAGF,MAAM,OAAO,KAAK,OAAO,KAAK,OAAO;EACnC,GAAG;EACH,UAAU,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe;EACzD,EAAE;AAEH,SAAQ,IACN,YAAY,MAAM;EAChB;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAS,OAAO;GAAS;EAChC;GAAE,KAAK;GAAY,OAAO;;EAC3B,CAAC,CACH"}
1
+ {"version":3,"file":"judges-list.mjs","names":[],"sources":["../../src/commands/judging/judges-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Judge } from \"../../types.js\"\n\nexport async function runJudgesList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ judges: Judge[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/judges`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.judges?.length) {\n console.log(\"No judges found.\")\n return\n }\n\n const rows = data.judges.map((j) => ({\n ...j,\n progress: `${j.completedCount ?? 0}/${j.totalCount ?? 0}`,\n }))\n\n console.log(\n formatTable(rows, [\n { key: \"name\", label: \"Name\" },\n { key: \"email\", label: \"Email\" },\n { key: \"progress\", label: \"Progress\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,cACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,iBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,UAAQ,IAAI,mBAAmB;AAC/B;;CAGF,MAAM,OAAO,KAAK,OAAO,KAAK,OAAO;EACnC,GAAG;EACH,UAAU,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,cAAc;EACvD,EAAE;AAEH,SAAQ,IACN,YAAY,MAAM;EAChB;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAS,OAAO;GAAS;EAChC;GAAE,KAAK;GAAY,OAAO;;EAC3B,CAAC,CACH"}