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

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 (65) hide show
  1. package/dist/_chunks/assign.mjs +1 -1
  2. package/dist/_chunks/assign.mjs.map +1 -1
  3. package/dist/_chunks/assignments-delete.mjs +1 -1
  4. package/dist/_chunks/assignments-delete.mjs.map +1 -1
  5. package/dist/_chunks/calculate.mjs +1 -1
  6. package/dist/_chunks/calculate.mjs.map +1 -1
  7. package/dist/_chunks/cancel.mjs +1 -1
  8. package/dist/_chunks/cancel.mjs.map +1 -1
  9. package/dist/_chunks/config.mjs +5 -5
  10. package/dist/_chunks/config.mjs.map +1 -1
  11. package/dist/_chunks/constants.mjs +2 -2
  12. package/dist/_chunks/constants.mjs.map +1 -1
  13. package/dist/_chunks/criteria-delete.mjs +1 -1
  14. package/dist/_chunks/criteria-delete.mjs.map +1 -1
  15. package/dist/_chunks/criteria-update.mjs +1 -1
  16. package/dist/_chunks/criteria-update.mjs.map +1 -1
  17. package/dist/_chunks/delete.mjs +1 -1
  18. package/dist/_chunks/delete.mjs.map +1 -1
  19. package/dist/_chunks/delete2.mjs +1 -1
  20. package/dist/_chunks/delete2.mjs.map +1 -1
  21. package/dist/_chunks/delete3.mjs +1 -1
  22. package/dist/_chunks/delete3.mjs.map +1 -1
  23. package/dist/_chunks/delete4.mjs +1 -1
  24. package/dist/_chunks/delete4.mjs.map +1 -1
  25. package/dist/_chunks/delete5.mjs +1 -1
  26. package/dist/_chunks/delete5.mjs.map +1 -1
  27. package/dist/_chunks/get.mjs +1 -1
  28. package/dist/_chunks/get.mjs.map +1 -1
  29. package/dist/_chunks/get2.mjs +1 -1
  30. package/dist/_chunks/get2.mjs.map +1 -1
  31. package/dist/_chunks/get3.mjs +2 -2
  32. package/dist/_chunks/get3.mjs.map +1 -1
  33. package/dist/_chunks/get4.mjs +1 -1
  34. package/dist/_chunks/get4.mjs.map +1 -1
  35. package/dist/_chunks/invitations-cancel.mjs +1 -1
  36. package/dist/_chunks/invitations-cancel.mjs.map +1 -1
  37. package/dist/_chunks/judges-remove.mjs +1 -1
  38. package/dist/_chunks/judges-remove.mjs.map +1 -1
  39. package/dist/_chunks/login.mjs +4 -4
  40. package/dist/_chunks/login.mjs.map +1 -1
  41. package/dist/_chunks/org.mjs +1 -1
  42. package/dist/_chunks/org.mjs.map +1 -1
  43. package/dist/_chunks/publish.mjs +1 -1
  44. package/dist/_chunks/publish.mjs.map +1 -1
  45. package/dist/_chunks/result.mjs +1 -1
  46. package/dist/_chunks/result.mjs.map +1 -1
  47. package/dist/_chunks/results.mjs +1 -1
  48. package/dist/_chunks/results.mjs.map +1 -1
  49. package/dist/_chunks/submissions.mjs +1 -1
  50. package/dist/_chunks/submissions.mjs.map +1 -1
  51. package/dist/_chunks/unassign.mjs +1 -1
  52. package/dist/_chunks/unassign.mjs.map +1 -1
  53. package/dist/_chunks/unpublish.mjs +1 -1
  54. package/dist/_chunks/unpublish.mjs.map +1 -1
  55. package/dist/_chunks/update.mjs +1 -1
  56. package/dist/_chunks/update.mjs.map +1 -1
  57. package/dist/_chunks/update2.mjs +1 -1
  58. package/dist/_chunks/update2.mjs.map +1 -1
  59. package/dist/_chunks/update3.mjs +1 -1
  60. package/dist/_chunks/update3.mjs.map +1 -1
  61. package/dist/_chunks/update4.mjs +1 -1
  62. package/dist/_chunks/update4.mjs.map +1 -1
  63. package/dist/cli.mjs +8 -8
  64. package/dist/cli.mjs.map +1 -1
  65. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"result.mjs","names":[],"sources":["../../src/commands/jobs/result.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson } from \"../../output.js\"\nimport { POLL_INTERVAL_MS } from \"../../constants.js\"\n\ninterface JobResultOptions {\n poll?: boolean\n json?: boolean\n}\n\nexport function parseJobResultOptions(args: string[]): JobResultOptions {\n const options: JobResultOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--poll\":\n options.poll = true\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runJobsResult(\n client: OatmealClient,\n jobId: string,\n args: string[]\n): Promise<void> {\n if (!jobId) {\n console.error(\"Usage: oatmeal jobs result <job-id>\")\n process.exit(1)\n }\n\n const options = parseJobResultOptions(args)\n\n if (options.poll) {\n let attempts = 0\n const maxAttempts = 60\n while (attempts < maxAttempts) {\n const result = await client.get<{ status: string; result?: unknown }>(\n `/api/v1/jobs/${jobId}/result`\n )\n if (result.status === \"completed\" || result.result) {\n console.log(formatJson(result))\n return\n }\n console.error(`Job still running (attempt ${++attempts}/${maxAttempts})...`)\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS))\n }\n console.error(\"Timed out waiting for job result.\")\n process.exit(1)\n }\n\n const result = await client.get<{ status: string; result?: unknown }>(\n `/api/v1/jobs/${jobId}/result`\n )\n\n if (result.status !== \"completed\" && !result.result) {\n console.log(`Job is still ${result.status}. Use --poll to wait for completion.`)\n return\n }\n\n console.log(formatJson(result))\n}\n"],"mappings":";;;AASA,SAAgB,sBAAsB,MAAkC;CACtE,MAAM,UAA4B,EAAE;AACpC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO;AACf;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,cACpB,QACA,OACA,MACe;AACf,KAAI,CAAC,OAAO;AACV,UAAQ,MAAM,sCAAsC;AACpD,UAAQ,KAAK,EAAE;;AAKjB,KAFgB,sBAAsB,KAAK,CAE/B,MAAM;EAChB,IAAI,WAAW;EACf,MAAM,cAAc;AACpB,SAAO,WAAW,aAAa;GAC7B,MAAM,SAAS,MAAM,OAAO,IAC1B,gBAAgB,MAAM,SACvB;AACD,OAAI,OAAO,WAAW,eAAe,OAAO,QAAQ;AAClD,YAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAEF,WAAQ,MAAM,8BAA8B,EAAE,SAAS,GAAG,YAAY,MAAM;AAC5E,SAAM,IAAI,SAAS,YAAY,WAAW,SAAS,iBAAiB,CAAC;;AAEvE,UAAQ,MAAM,oCAAoC;AAClD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,IAC1B,gBAAgB,MAAM,SACvB;AAED,KAAI,OAAO,WAAW,eAAe,CAAC,OAAO,QAAQ;AACnD,UAAQ,IAAI,gBAAgB,OAAO,OAAO,sCAAsC;AAChF;;AAGF,SAAQ,IAAI,WAAW,OAAO,CAAC"}
1
+ {"version":3,"file":"result.mjs","names":[],"sources":["../../src/commands/jobs/result.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson } from \"../../output.js\"\nimport { POLL_INTERVAL_MS } from \"../../constants.js\"\n\ninterface JobResultOptions {\n poll?: boolean\n json?: boolean\n}\n\nexport function parseJobResultOptions(args: string[]): JobResultOptions {\n const options: JobResultOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--poll\":\n options.poll = true\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runJobsResult(\n client: OatmealClient,\n jobId: string,\n args: string[]\n): Promise<void> {\n if (!jobId) {\n console.error(\"Usage: hackathon jobs result <job-id>\")\n process.exit(1)\n }\n\n const options = parseJobResultOptions(args)\n\n if (options.poll) {\n let attempts = 0\n const maxAttempts = 60\n while (attempts < maxAttempts) {\n const result = await client.get<{ status: string; result?: unknown }>(\n `/api/v1/jobs/${jobId}/result`\n )\n if (result.status === \"completed\" || result.result) {\n console.log(formatJson(result))\n return\n }\n console.error(`Job still running (attempt ${++attempts}/${maxAttempts})...`)\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS))\n }\n console.error(\"Timed out waiting for job result.\")\n process.exit(1)\n }\n\n const result = await client.get<{ status: string; result?: unknown }>(\n `/api/v1/jobs/${jobId}/result`\n )\n\n if (result.status !== \"completed\" && !result.result) {\n console.log(`Job is still ${result.status}. Use --poll to wait for completion.`)\n return\n }\n\n console.log(formatJson(result))\n}\n"],"mappings":";;;AASA,SAAgB,sBAAsB,MAAkC;CACtE,MAAM,UAA4B,EAAE;AACpC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO;AACf;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,cACpB,QACA,OACA,MACe;AACf,KAAI,CAAC,OAAO;AACV,UAAQ,MAAM,wCAAwC;AACtD,UAAQ,KAAK,EAAE;;AAKjB,KAFgB,sBAAsB,KAAK,CAE/B,MAAM;EAChB,IAAI,WAAW;EACf,MAAM,cAAc;AACpB,SAAO,WAAW,aAAa;GAC7B,MAAM,SAAS,MAAM,OAAO,IAC1B,gBAAgB,MAAM,SACvB;AACD,OAAI,OAAO,WAAW,eAAe,OAAO,QAAQ;AAClD,YAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAEF,WAAQ,MAAM,8BAA8B,EAAE,SAAS,GAAG,YAAY,MAAM;AAC5E,SAAM,IAAI,SAAS,YAAY,WAAW,SAAS,iBAAiB,CAAC;;AAEvE,UAAQ,MAAM,oCAAoC;AAClD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,IAC1B,gBAAgB,MAAM,SACvB;AAED,KAAI,OAAO,WAAW,eAAe,CAAC,OAAO,QAAQ;AACnD,UAAQ,IAAI,gBAAgB,OAAO,OAAO,sCAAsC;AAChF;;AAGF,SAAQ,IAAI,WAAW,OAAO,CAAC"}
@@ -2,7 +2,7 @@ import { i as formatTable, n as formatJson } from "../cli.mjs";
2
2
  //#region src/commands/browse/results.ts
3
3
  async function runBrowseResults(client, slug, options) {
4
4
  if (!slug) {
5
- console.error("Usage: oatmeal browse results <slug>");
5
+ console.error("Usage: hackathon browse results <slug>");
6
6
  process.exit(1);
7
7
  }
8
8
  const data = await client.get(`/api/public/hackathons/${encodeURIComponent(slug)}/results`);
@@ -1 +1 @@
1
- {"version":3,"file":"results.mjs","names":[],"sources":["../../src/commands/browse/results.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { ResultsData } from \"../../types.js\"\n\nexport async function runBrowseResults(\n client: OatmealClient,\n slug: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!slug) {\n console.error(\"Usage: oatmeal browse results <slug>\")\n process.exit(1)\n }\n\n const data = await client.get<ResultsData>(\n `/api/public/hackathons/${encodeURIComponent(slug)}/results`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.published) {\n console.log(\"Results have not been published yet.\")\n return\n }\n\n if (!data.rankings?.length) {\n console.log(\"No rankings available.\")\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,iBACpB,QACA,MACA,SACe;AACf,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,uCAAuC;AACrD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAO,MAAM,OAAO,IACxB,0BAA0B,mBAAmB,KAAK,CAAC,UACpD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,WAAW;AACnB,UAAQ,IAAI,uCAAuC;AACnD;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,yBAAyB;AACrC;;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":"results.mjs","names":[],"sources":["../../src/commands/browse/results.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { ResultsData } from \"../../types.js\"\n\nexport async function runBrowseResults(\n client: OatmealClient,\n slug: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!slug) {\n console.error(\"Usage: hackathon browse results <slug>\")\n process.exit(1)\n }\n\n const data = await client.get<ResultsData>(\n `/api/public/hackathons/${encodeURIComponent(slug)}/results`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.published) {\n console.log(\"Results have not been published yet.\")\n return\n }\n\n if (!data.rankings?.length) {\n console.log(\"No rankings available.\")\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,iBACpB,QACA,MACA,SACe;AACf,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,yCAAyC;AACvD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAO,MAAM,OAAO,IACxB,0BAA0B,mBAAmB,KAAK,CAAC,UACpD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,WAAW;AACnB,UAAQ,IAAI,uCAAuC;AACnD;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,yBAAyB;AACrC;;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"}
@@ -2,7 +2,7 @@ import { i as formatTable, n as formatJson } from "../cli.mjs";
2
2
  //#region src/commands/browse/submissions.ts
3
3
  async function runBrowseSubmissions(client, slug, options) {
4
4
  if (!slug) {
5
- console.error("Usage: oatmeal browse submissions <slug>");
5
+ console.error("Usage: hackathon browse submissions <slug>");
6
6
  process.exit(1);
7
7
  }
8
8
  const data = await client.get(`/api/public/hackathons/${encodeURIComponent(slug)}/submissions`);
@@ -1 +1 @@
1
- {"version":3,"file":"submissions.mjs","names":[],"sources":["../../src/commands/browse/submissions.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Submission } from \"../../types.js\"\n\nexport async function runBrowseSubmissions(\n client: OatmealClient,\n slug: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!slug) {\n console.error(\"Usage: oatmeal browse submissions <slug>\")\n process.exit(1)\n }\n\n const data = await client.get<{ submissions: Submission[] }>(\n `/api/public/hackathons/${encodeURIComponent(slug)}/submissions`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.submissions?.length) {\n console.log(\"No submissions found.\")\n return\n }\n\n console.log(\n formatTable(data.submissions, [\n { key: \"name\", label: \"Name\" },\n { key: \"team_name\", label: \"Team\" },\n { key: \"submitted_at\", label: \"Submitted\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,qBACpB,QACA,MACA,SACe;AACf,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,2CAA2C;AACzD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAO,MAAM,OAAO,IACxB,0BAA0B,mBAAmB,KAAK,CAAC,cACpD;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;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAa,OAAO;GAAQ;EACnC;GAAE,KAAK;GAAgB,OAAO;;EAC/B,CAAC,CACH"}
1
+ {"version":3,"file":"submissions.mjs","names":[],"sources":["../../src/commands/browse/submissions.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Submission } from \"../../types.js\"\n\nexport async function runBrowseSubmissions(\n client: OatmealClient,\n slug: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!slug) {\n console.error(\"Usage: hackathon browse submissions <slug>\")\n process.exit(1)\n }\n\n const data = await client.get<{ submissions: Submission[] }>(\n `/api/public/hackathons/${encodeURIComponent(slug)}/submissions`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.submissions?.length) {\n console.log(\"No submissions found.\")\n return\n }\n\n console.log(\n formatTable(data.submissions, [\n { key: \"name\", label: \"Name\" },\n { key: \"team_name\", label: \"Team\" },\n { key: \"submitted_at\", label: \"Submitted\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,qBACpB,QACA,MACA,SACe;AACf,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,6CAA6C;AAC3D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAO,MAAM,OAAO,IACxB,0BAA0B,mBAAmB,KAAK,CAAC,cACpD;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;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAa,OAAO;GAAQ;EACnC;GAAE,KAAK;GAAgB,OAAO;;EAC/B,CAAC,CACH"}
@@ -3,7 +3,7 @@ import * as p from "@clack/prompts";
3
3
  //#region src/commands/prizes/unassign.ts
4
4
  async function runPrizesUnassign(client, hackathonId, prizeId, submissionId, options) {
5
5
  if (!prizeId || !submissionId) {
6
- console.error("Usage: oatmeal prizes unassign <hackathon-id> <prize-id> <submission-id>");
6
+ console.error("Usage: hackathon prizes unassign <hackathon-id> <prize-id> <submission-id>");
7
7
  process.exit(1);
8
8
  }
9
9
  if (!options.yes) {
@@ -1 +1 @@
1
- {"version":3,"file":"unassign.mjs","names":[],"sources":["../../src/commands/prizes/unassign.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runPrizesUnassign(\n client: OatmealClient,\n hackathonId: string,\n prizeId: string,\n submissionId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!prizeId || !submissionId) {\n console.error(\"Usage: oatmeal prizes unassign <hackathon-id> <prize-id> <submission-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Unassign prize ${prizeId} from submission ${submissionId}?` })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(\n `/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}/assign/${submissionId}`\n )\n console.log(formatSuccess(`Unassigned prize ${prizeId}`))\n}\n"],"mappings":";;;AAIA,eAAsB,kBACpB,QACA,aACA,SACA,cACA,SACe;AACf,KAAI,CAAC,WAAW,CAAC,cAAc;AAC7B,UAAQ,MAAM,2EAA2E;AACzF,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,kBAAkB,QAAQ,mBAAmB,aAAa,IAAI,CAAC;AAC1G,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OACX,6BAA6B,YAAY,UAAU,QAAQ,UAAU,eACtE;AACD,SAAQ,IAAI,cAAc,oBAAoB,UAAU,CAAC"}
1
+ {"version":3,"file":"unassign.mjs","names":[],"sources":["../../src/commands/prizes/unassign.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runPrizesUnassign(\n client: OatmealClient,\n hackathonId: string,\n prizeId: string,\n submissionId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!prizeId || !submissionId) {\n console.error(\"Usage: hackathon prizes unassign <hackathon-id> <prize-id> <submission-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Unassign prize ${prizeId} from submission ${submissionId}?` })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(\n `/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}/assign/${submissionId}`\n )\n console.log(formatSuccess(`Unassigned prize ${prizeId}`))\n}\n"],"mappings":";;;AAIA,eAAsB,kBACpB,QACA,aACA,SACA,cACA,SACe;AACf,KAAI,CAAC,WAAW,CAAC,cAAc;AAC7B,UAAQ,MAAM,6EAA6E;AAC3F,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,kBAAkB,QAAQ,mBAAmB,aAAa,IAAI,CAAC;AAC1G,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OACX,6BAA6B,YAAY,UAAU,QAAQ,UAAU,eACtE;AACD,SAAQ,IAAI,cAAc,oBAAoB,UAAU,CAAC"}
@@ -3,7 +3,7 @@ import * as p from "@clack/prompts";
3
3
  //#region src/commands/results/unpublish.ts
4
4
  async function runResultsUnpublish(client, hackathonId, options) {
5
5
  if (!hackathonId) {
6
- console.error("Usage: oatmeal results unpublish <hackathon-id>");
6
+ console.error("Usage: hackathon results unpublish <hackathon-id>");
7
7
  process.exit(1);
8
8
  }
9
9
  if (!options.yes) {
@@ -1 +1 @@
1
- {"version":3,"file":"unpublish.mjs","names":[],"sources":["../../src/commands/results/unpublish.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runResultsUnpublish(\n client: OatmealClient,\n hackathonId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!hackathonId) {\n console.error(\"Usage: oatmeal results unpublish <hackathon-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: \"Unpublish results?\" })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.post(`/api/dashboard/hackathons/${hackathonId}/results/unpublish`)\n console.log(formatSuccess(\"Results unpublished\"))\n}\n"],"mappings":";;;AAIA,eAAsB,oBACpB,QACA,aACA,SACe;AACf,KAAI,CAAC,aAAa;AAChB,UAAQ,MAAM,kDAAkD;AAChE,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,sBAAsB,CAAC;AAClE,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,KAAK,6BAA6B,YAAY,oBAAoB;AAC/E,SAAQ,IAAI,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"unpublish.mjs","names":[],"sources":["../../src/commands/results/unpublish.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runResultsUnpublish(\n client: OatmealClient,\n hackathonId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!hackathonId) {\n console.error(\"Usage: hackathon results unpublish <hackathon-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: \"Unpublish results?\" })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.post(`/api/dashboard/hackathons/${hackathonId}/results/unpublish`)\n console.log(formatSuccess(\"Results unpublished\"))\n}\n"],"mappings":";;;AAIA,eAAsB,oBACpB,QACA,aACA,SACe;AACf,KAAI,CAAC,aAAa;AAChB,UAAQ,MAAM,oDAAoD;AAClE,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,sBAAsB,CAAC;AAClE,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,KAAK,6BAA6B,YAAY,oBAAoB;AAC/E,SAAQ,IAAI,cAAc,sBAAsB,CAAC"}
@@ -21,7 +21,7 @@ function parseUpdateOptions(args) {
21
21
  }
22
22
  async function runHackathonsUpdate(client, idOrSlug, args) {
23
23
  if (!idOrSlug) {
24
- console.error("Usage: oatmeal hackathons update <id-or-slug> [--name ...] [--slug ...] [--description ...]");
24
+ console.error("Usage: hackathon hackathons update <id-or-slug> [--name ...] [--slug ...] [--description ...]");
25
25
  process.exit(1);
26
26
  }
27
27
  const options = parseUpdateOptions(args);
@@ -1 +1 @@
1
- {"version":3,"file":"update.mjs","names":[],"sources":["../../src/commands/hackathons/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\nimport { resolveHackathonId } from \"./resolve.js\"\n\ninterface UpdateOptions {\n name?: string\n slug?: string\n description?: string\n json?: boolean\n}\n\nexport function parseUpdateOptions(args: string[]): UpdateOptions {\n const options: UpdateOptions = {}\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 runHackathonsUpdate(\n client: OatmealClient,\n idOrSlug: string,\n args: string[]\n): Promise<void> {\n if (!idOrSlug) {\n console.error(\"Usage: oatmeal hackathons update <id-or-slug> [--name ...] [--slug ...] [--description ...]\")\n process.exit(1)\n }\n\n const options = parseUpdateOptions(args)\n const id = await resolveHackathonId(client, idOrSlug)\n\n const body: Record<string, string> = {}\n if (options.name) body.name = options.name\n if (options.slug) body.slug = options.slug\n if (options.description) body.description = options.description\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update (--name, --slug, --description)\")\n process.exit(1)\n }\n\n const hackathon = await client.patch<Hackathon>(`/api/dashboard/hackathons/${id}`, body)\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(formatSuccess(`Updated hackathon \"${hackathon.name}\"`))\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,UACA,MACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,8FAA8F;AAC5G,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,mBAAmB,KAAK;CACxC,MAAM,KAAK,MAAM,mBAAmB,QAAQ,SAAS;CAErD,MAAM,OAA+B,EAAE;AACvC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AAEpD,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8EAA8E;AAC5F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,YAAY,MAAM,OAAO,MAAiB,6BAA6B,MAAM,KAAK;AAExF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,SAAQ,IAAI,cAAc,sBAAsB,UAAU,KAAK,GAAG,CAAC"}
1
+ {"version":3,"file":"update.mjs","names":[],"sources":["../../src/commands/hackathons/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\nimport { resolveHackathonId } from \"./resolve.js\"\n\ninterface UpdateOptions {\n name?: string\n slug?: string\n description?: string\n json?: boolean\n}\n\nexport function parseUpdateOptions(args: string[]): UpdateOptions {\n const options: UpdateOptions = {}\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 runHackathonsUpdate(\n client: OatmealClient,\n idOrSlug: string,\n args: string[]\n): Promise<void> {\n if (!idOrSlug) {\n console.error(\"Usage: hackathon hackathons update <id-or-slug> [--name ...] [--slug ...] [--description ...]\")\n process.exit(1)\n }\n\n const options = parseUpdateOptions(args)\n const id = await resolveHackathonId(client, idOrSlug)\n\n const body: Record<string, string> = {}\n if (options.name) body.name = options.name\n if (options.slug) body.slug = options.slug\n if (options.description) body.description = options.description\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update (--name, --slug, --description)\")\n process.exit(1)\n }\n\n const hackathon = await client.patch<Hackathon>(`/api/dashboard/hackathons/${id}`, body)\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(formatSuccess(`Updated hackathon \"${hackathon.name}\"`))\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,UACA,MACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,gGAAgG;AAC9G,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,mBAAmB,KAAK;CACxC,MAAM,KAAK,MAAM,mBAAmB,QAAQ,SAAS;CAErD,MAAM,OAA+B,EAAE;AACvC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AAEpD,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8EAA8E;AAC5F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,YAAY,MAAM,OAAO,MAAiB,6BAA6B,MAAM,KAAK;AAExF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,SAAQ,IAAI,cAAc,sBAAsB,UAAU,KAAK,GAAG,CAAC"}
@@ -20,7 +20,7 @@ function parseJudgeDisplayUpdateOptions(args) {
20
20
  }
21
21
  async function runJudgeDisplayUpdate(client, hackathonId, profileId, args) {
22
22
  if (!profileId) {
23
- console.error("Usage: oatmeal judge-display update <hackathon-id> <profile-id> [--name ...]");
23
+ console.error("Usage: hackathon judge-display update <hackathon-id> <profile-id> [--name ...]");
24
24
  process.exit(1);
25
25
  }
26
26
  const options = parseJudgeDisplayUpdateOptions(args);
@@ -1 +1 @@
1
- {"version":3,"file":"update2.mjs","names":[],"sources":["../../src/commands/judge-display/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgeDisplayProfile } from \"../../types.js\"\n\ninterface JudgeDisplayUpdateOptions {\n name?: string\n title?: string\n bio?: string\n json?: boolean\n}\n\nexport function parseJudgeDisplayUpdateOptions(args: string[]): JudgeDisplayUpdateOptions {\n const options: JudgeDisplayUpdateOptions = {}\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 runJudgeDisplayUpdate(\n client: OatmealClient,\n hackathonId: string,\n profileId: string,\n args: string[]\n): Promise<void> {\n if (!profileId) {\n console.error(\"Usage: oatmeal judge-display update <hackathon-id> <profile-id> [--name ...]\")\n process.exit(1)\n }\n\n const options = parseJudgeDisplayUpdateOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.title) body.title = options.title\n if (options.bio) body.bio = options.bio\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 profile = await client.patch<JudgeDisplayProfile>(\n `/api/dashboard/hackathons/${hackathonId}/judges/display/${profileId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(profile))\n return\n }\n\n console.log(formatSuccess(`Updated judge display profile \"${profile.name}\"`))\n}\n"],"mappings":";;AAWA,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,WACA,MACe;AACf,KAAI,CAAC,WAAW;AACd,UAAQ,MAAM,+EAA+E;AAC7F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,+BAA+B,KAAK;CACpD,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AACxC,KAAI,QAAQ,IAAK,MAAK,MAAM,QAAQ;AAEpC,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,MAAM,OAAO,MAC3B,6BAA6B,YAAY,kBAAkB,aAC3D,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,QAAQ,CAAC;AAChC;;AAGF,SAAQ,IAAI,cAAc,kCAAkC,QAAQ,KAAK,GAAG,CAAC"}
1
+ {"version":3,"file":"update2.mjs","names":[],"sources":["../../src/commands/judge-display/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgeDisplayProfile } from \"../../types.js\"\n\ninterface JudgeDisplayUpdateOptions {\n name?: string\n title?: string\n bio?: string\n json?: boolean\n}\n\nexport function parseJudgeDisplayUpdateOptions(args: string[]): JudgeDisplayUpdateOptions {\n const options: JudgeDisplayUpdateOptions = {}\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 runJudgeDisplayUpdate(\n client: OatmealClient,\n hackathonId: string,\n profileId: string,\n args: string[]\n): Promise<void> {\n if (!profileId) {\n console.error(\"Usage: hackathon judge-display update <hackathon-id> <profile-id> [--name ...]\")\n process.exit(1)\n }\n\n const options = parseJudgeDisplayUpdateOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.title) body.title = options.title\n if (options.bio) body.bio = options.bio\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 profile = await client.patch<JudgeDisplayProfile>(\n `/api/dashboard/hackathons/${hackathonId}/judges/display/${profileId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(profile))\n return\n }\n\n console.log(formatSuccess(`Updated judge display profile \"${profile.name}\"`))\n}\n"],"mappings":";;AAWA,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,WACA,MACe;AACf,KAAI,CAAC,WAAW;AACd,UAAQ,MAAM,iFAAiF;AAC/F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,+BAA+B,KAAK;CACpD,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AACxC,KAAI,QAAQ,IAAK,MAAK,MAAM,QAAQ;AAEpC,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,MAAM,OAAO,MAC3B,6BAA6B,YAAY,kBAAkB,aAC3D,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,QAAQ,CAAC;AAChC;;AAGF,SAAQ,IAAI,cAAc,kCAAkC,QAAQ,KAAK,GAAG,CAAC"}
@@ -23,7 +23,7 @@ function parsePrizeUpdateOptions(args) {
23
23
  }
24
24
  async function runPrizesUpdate(client, hackathonId, prizeId, args) {
25
25
  if (!prizeId) {
26
- console.error("Usage: oatmeal prizes update <hackathon-id> <prize-id> [--name ...]");
26
+ console.error("Usage: hackathon prizes update <hackathon-id> <prize-id> [--name ...]");
27
27
  process.exit(1);
28
28
  }
29
29
  const options = parsePrizeUpdateOptions(args);
@@ -1 +1 @@
1
- {"version":3,"file":"update3.mjs","names":[],"sources":["../../src/commands/prizes/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Prize } from \"../../types.js\"\n\ninterface PrizeUpdateOptions {\n name?: string\n description?: string\n type?: string\n value?: string\n json?: boolean\n}\n\nexport function parsePrizeUpdateOptions(args: string[]): PrizeUpdateOptions {\n const options: PrizeUpdateOptions = {}\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 runPrizesUpdate(\n client: OatmealClient,\n hackathonId: string,\n prizeId: string,\n args: string[]\n): Promise<void> {\n if (!prizeId) {\n console.error(\"Usage: oatmeal prizes update <hackathon-id> <prize-id> [--name ...]\")\n process.exit(1)\n }\n\n const options = parsePrizeUpdateOptions(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.type) body.type = options.type\n if (options.value) body.value = options.value\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 prize = await client.patch<Prize>(\n `/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(prize))\n return\n }\n\n console.log(formatSuccess(`Updated prize \"${prize.name}\"`))\n}\n"],"mappings":";;AAYA,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,SACA,MACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,sEAAsE;AACpF,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,wBAAwB,KAAK;CAC7C,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AACpD,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AAExC,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,QAAQ,MAAM,OAAO,MACzB,6BAA6B,YAAY,UAAU,WACnD,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,MAAM,KAAK,GAAG,CAAC"}
1
+ {"version":3,"file":"update3.mjs","names":[],"sources":["../../src/commands/prizes/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Prize } from \"../../types.js\"\n\ninterface PrizeUpdateOptions {\n name?: string\n description?: string\n type?: string\n value?: string\n json?: boolean\n}\n\nexport function parsePrizeUpdateOptions(args: string[]): PrizeUpdateOptions {\n const options: PrizeUpdateOptions = {}\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 runPrizesUpdate(\n client: OatmealClient,\n hackathonId: string,\n prizeId: string,\n args: string[]\n): Promise<void> {\n if (!prizeId) {\n console.error(\"Usage: hackathon prizes update <hackathon-id> <prize-id> [--name ...]\")\n process.exit(1)\n }\n\n const options = parsePrizeUpdateOptions(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.type) body.type = options.type\n if (options.value) body.value = options.value\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 prize = await client.patch<Prize>(\n `/api/dashboard/hackathons/${hackathonId}/prizes/${prizeId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(prize))\n return\n }\n\n console.log(formatSuccess(`Updated prize \"${prize.name}\"`))\n}\n"],"mappings":";;AAYA,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,SACA,MACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,wEAAwE;AACtF,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,wBAAwB,KAAK;CAC7C,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AACpD,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AAExC,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,QAAQ,MAAM,OAAO,MACzB,6BAA6B,YAAY,UAAU,WACnD,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,MAAM,KAAK,GAAG,CAAC"}
@@ -23,7 +23,7 @@ function parseScheduleUpdateOptions(args) {
23
23
  }
24
24
  async function runSchedulesUpdate(client, scheduleId, args) {
25
25
  if (!scheduleId) {
26
- console.error("Usage: oatmeal schedules update <schedule-id> [--name ...] [--cron ...]");
26
+ console.error("Usage: hackathon schedules update <schedule-id> [--name ...] [--cron ...]");
27
27
  process.exit(1);
28
28
  }
29
29
  const options = parseScheduleUpdateOptions(args);
@@ -1 +1 @@
1
- {"version":3,"file":"update4.mjs","names":[],"sources":["../../src/commands/schedules/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Schedule } from \"../../types.js\"\n\ninterface ScheduleUpdateOptions {\n name?: string\n cron?: string\n enabled?: boolean\n json?: boolean\n}\n\nexport function parseScheduleUpdateOptions(args: string[]): ScheduleUpdateOptions {\n const options: ScheduleUpdateOptions = {}\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 \"--enable\":\n options.enabled = true\n break\n case \"--disable\":\n options.enabled = false\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runSchedulesUpdate(\n client: OatmealClient,\n scheduleId: string,\n args: string[]\n): Promise<void> {\n if (!scheduleId) {\n console.error(\"Usage: oatmeal schedules update <schedule-id> [--name ...] [--cron ...]\")\n process.exit(1)\n }\n\n const options = parseScheduleUpdateOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.cron) body.cron_expression = options.cron\n if (options.enabled !== undefined) body.enabled = options.enabled\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 schedule = await client.patch<Schedule>(\n `/api/dashboard/schedules/${scheduleId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(schedule))\n return\n }\n\n console.log(formatSuccess(`Updated schedule \"${schedule.name}\"`))\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,UAAU;AAClB;EACF,KAAK;AACH,WAAQ,UAAU;AAClB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,mBACpB,QACA,YACA,MACe;AACf,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,0EAA0E;AACxF,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,2BAA2B,KAAK;CAChD,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,KAAM,MAAK,kBAAkB,QAAQ;AACjD,KAAI,QAAQ,YAAY,KAAA,EAAW,MAAK,UAAU,QAAQ;AAE1D,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,MAC5B,4BAA4B,cAC5B,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":"update4.mjs","names":[],"sources":["../../src/commands/schedules/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Schedule } from \"../../types.js\"\n\ninterface ScheduleUpdateOptions {\n name?: string\n cron?: string\n enabled?: boolean\n json?: boolean\n}\n\nexport function parseScheduleUpdateOptions(args: string[]): ScheduleUpdateOptions {\n const options: ScheduleUpdateOptions = {}\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 \"--enable\":\n options.enabled = true\n break\n case \"--disable\":\n options.enabled = false\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runSchedulesUpdate(\n client: OatmealClient,\n scheduleId: string,\n args: string[]\n): Promise<void> {\n if (!scheduleId) {\n console.error(\"Usage: hackathon schedules update <schedule-id> [--name ...] [--cron ...]\")\n process.exit(1)\n }\n\n const options = parseScheduleUpdateOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.cron) body.cron_expression = options.cron\n if (options.enabled !== undefined) body.enabled = options.enabled\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 schedule = await client.patch<Schedule>(\n `/api/dashboard/schedules/${scheduleId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(schedule))\n return\n }\n\n console.log(formatSuccess(`Updated schedule \"${schedule.name}\"`))\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,UAAU;AAClB;EACF,KAAK;AACH,WAAQ,UAAU;AAClB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,mBACpB,QACA,YACA,MACe;AACf,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,4EAA4E;AAC1F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,2BAA2B,KAAK;CAChD,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,KAAM,MAAK,kBAAkB,QAAQ;AACjD,KAAI,QAAQ,YAAY,KAAA,EAAW,MAAK,UAAU,QAAQ;AAE1D,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,MAC5B,4BAA4B,cAC5B,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,GAAG,CAAC"}
package/dist/cli.mjs CHANGED
@@ -183,12 +183,12 @@ function parseGlobalFlags(args) {
183
183
  }
184
184
  function createPublicClient(flags) {
185
185
  const config = loadConfig();
186
- return new OatmealClient({ baseUrl: flags.baseUrl ?? config?.baseUrl ?? "https://oatmeal.app" });
186
+ return new OatmealClient({ baseUrl: flags.baseUrl ?? config?.baseUrl ?? "https://getoatmeal.com" });
187
187
  }
188
188
  function createAuthenticatedClient(flags) {
189
- const apiKey = flags.apiKey ?? process.env.OATMEAL_API_KEY;
189
+ const apiKey = flags.apiKey ?? process.env.HACKATHON_API_KEY;
190
190
  if (apiKey) return new OatmealClient({
191
- baseUrl: flags.baseUrl ?? "https://oatmeal.app",
191
+ baseUrl: flags.baseUrl ?? "https://getoatmeal.com",
192
192
  apiKey
193
193
  });
194
194
  const config = loadConfig();
@@ -199,10 +199,10 @@ function createAuthenticatedClient(flags) {
199
199
  });
200
200
  }
201
201
  const BANNER = `
202
- ${pc.bold("oatmeal")} — CLI for the Oatmeal hackathon platform
202
+ ${pc.bold("hackathon")} — CLI for the Oatmeal hackathon platform
203
203
 
204
204
  ${pc.dim("USAGE")}
205
- oatmeal <command> [options]
205
+ hackathon <command> [options]
206
206
 
207
207
  ${pc.dim("PUBLIC COMMANDS (no auth required)")}
208
208
  browse hackathons Search public hackathons
@@ -338,7 +338,7 @@ async function main() {
338
338
  break;
339
339
  }
340
340
  default:
341
- console.error(`Unknown browse command: ${sub}. Run "oatmeal browse --help" for usage.`);
341
+ console.error(`Unknown browse command: ${sub}. Run "hackathon browse --help" for usage.`);
342
342
  process.exit(1);
343
343
  }
344
344
  break;
@@ -372,7 +372,7 @@ async function main() {
372
372
  break;
373
373
  }
374
374
  default:
375
- console.error(`Unknown hackathons command: ${sub}. Run "oatmeal hackathons --help" for usage.`);
375
+ console.error(`Unknown hackathons command: ${sub}. Run "hackathon hackathons --help" for usage.`);
376
376
  process.exit(1);
377
377
  }
378
378
  break;
@@ -685,7 +685,7 @@ async function main() {
685
685
  break;
686
686
  }
687
687
  default:
688
- console.error(`Unknown command: ${command}. Run "oatmeal --help" for usage.`);
688
+ console.error(`Unknown command: ${command}. Run "hackathon --help" for usage.`);
689
689
  process.exit(1);
690
690
  }
691
691
  } catch (error) {
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","names":[],"sources":["../src/client.ts","../src/output.ts","../src/cli.ts"],"sourcesContent":["import { REQUEST_TIMEOUT_MS } from \"./constants.js\"\nimport { ApiError, AuthError, ScopeError } from \"./errors.js\"\n\ninterface ClientOptions {\n baseUrl: string\n apiKey?: string\n}\n\ninterface RequestOptions {\n method?: string\n body?: unknown\n params?: Record<string, string | number | undefined>\n timeout?: number\n}\n\nexport class OatmealClient {\n private baseUrl: string\n private apiKey?: string\n\n constructor(options: ClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\")\n this.apiKey = options.apiKey\n }\n\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"GET\" })\n }\n\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"POST\", body })\n }\n\n async patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"PATCH\", body })\n }\n\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"DELETE\" })\n }\n\n private async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { method = \"GET\", body, params, timeout = REQUEST_TIMEOUT_MS } = options\n\n let url = `${this.baseUrl}${path}`\n if (params) {\n const searchParams = new URLSearchParams()\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n searchParams.set(key, String(value))\n }\n }\n const qs = searchParams.toString()\n if (qs) url += `?${qs}`\n }\n\n const headers: Record<string, string> = {}\n if (this.apiKey) {\n headers[\"Authorization\"] = `Bearer ${this.apiKey}`\n }\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\"\n }\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeout)\n\n try {\n const response = await this.fetchWithRetry(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n })\n\n clearTimeout(timer)\n\n if (response.status === 204) {\n return undefined as T\n }\n\n const contentType = response.headers.get(\"content-type\") ?? \"\"\n let data: unknown\n\n if (contentType.includes(\"application/json\")) {\n data = await response.json()\n } else {\n const text = await response.text()\n data = { message: text }\n }\n\n if (!response.ok) {\n this.handleErrorResponse(response.status, data)\n }\n\n return data as T\n } catch (error) {\n clearTimeout(timer)\n if (error instanceof ApiError || error instanceof AuthError || error instanceof ScopeError) {\n throw error\n }\n if (error instanceof DOMException && error.name === \"AbortError\") {\n throw new ApiError(0, `Request timed out after ${timeout / 1000}s`)\n }\n if (error instanceof TypeError && (error.message.includes(\"fetch\") || error.message.includes(\"network\"))) {\n throw new ApiError(0, `Could not connect to ${this.baseUrl}. Is the server running?`)\n }\n throw new ApiError(0, `Network error: ${(error as Error).message}`)\n }\n }\n\n private async fetchWithRetry(\n url: string,\n init: RequestInit,\n retried = false\n ): Promise<Response> {\n const response = await fetch(url, init)\n\n if (response.status === 429 && !retried) {\n const retryAfter = response.headers.get(\"retry-after\")\n const delay = retryAfter ? parseInt(retryAfter, 10) * 1000 : 1000\n await new Promise((resolve) => setTimeout(resolve, Math.min(delay, 10_000)))\n return this.fetchWithRetry(url, init, true)\n }\n\n return response\n }\n\n private handleErrorResponse(status: number, data: unknown): never {\n const body = data as Record<string, unknown>\n const message = (body?.error as string) || (body?.message as string) || `Request failed`\n\n if (status === 401) {\n throw new AuthError(message)\n }\n\n if (status === 403) {\n const scope = body?.requiredScope as string | undefined\n if (scope) {\n throw new ScopeError(scope, body?.currentScopes as string[] | undefined)\n }\n throw new ApiError(403, message)\n }\n\n if (status === 404) {\n throw new ApiError(404, body?.message ? message : \"Resource not found\")\n }\n\n if (status === 429) {\n throw new ApiError(429, \"Rate limited. Please try again later.\", \"Wait a moment before retrying.\")\n }\n\n throw new ApiError(status, message)\n }\n}\n","import pc from \"picocolors\"\n\nconst noColor = !!process.env.NO_COLOR\n\nfunction color<T extends string>(fn: (s: T) => string, s: T): string {\n return noColor ? s : fn(s)\n}\n\ninterface Column<T> {\n key: keyof T\n label: string\n width?: number\n}\n\nexport function formatTable<T extends object>(\n rows: T[],\n columns: Column<T>[]\n): string {\n if (rows.length === 0) {\n return \"\"\n }\n\n const widths = columns.map((col) => {\n const headerWidth = col.label.length\n const maxDataWidth = rows.reduce((max, row) => {\n const val = String(row[col.key] ?? \"\")\n return Math.max(max, val.length)\n }, 0)\n return col.width ?? Math.min(Math.max(headerWidth, maxDataWidth), 50)\n })\n\n const header = columns.map((col, i) => col.label.padEnd(widths[i])).join(\" \")\n const separator = widths.map((w) => \"─\".repeat(w)).join(\"──\")\n\n const dataRows = rows.map((row) =>\n columns\n .map((col, i) => {\n const val = String(row[col.key] ?? \"\")\n return val.length > widths[i] ? val.slice(0, widths[i] - 1) + \"…\" : val.padEnd(widths[i])\n })\n .join(\" \")\n )\n\n return [color(pc.bold, header), separator, ...dataRows].join(\"\\n\")\n}\n\nexport function formatJson(data: unknown): string {\n return JSON.stringify(data, null, 2)\n}\n\nexport function formatDetail(fields: Array<{ label: string; value: string | undefined }>): string {\n const maxLabel = fields.reduce((max, f) => Math.max(max, f.label.length), 0)\n return fields\n .map((f) => `${color(pc.bold, f.label.padEnd(maxLabel))} ${f.value ?? color(pc.dim, \"—\")}`)\n .join(\"\\n\")\n}\n\nexport function formatError(error: { message: string; hint?: string }): string {\n const lines = [color(pc.red, `Error: ${error.message}`)]\n if (error.hint) {\n lines.push(color(pc.dim, `Hint: ${error.hint}`))\n }\n return lines.join(\"\\n\")\n}\n\nexport function formatSuccess(message: string): string {\n return color(pc.green, `✓ ${message}`)\n}\n\nexport function formatWarning(message: string): string {\n return color(pc.yellow, `⚠ ${message}`)\n}\n","import pc from \"picocolors\"\nimport { OatmealClient } from \"./client.js\"\nimport { loadConfig } from \"./config.js\"\nimport { VERSION, DEFAULT_BASE_URL } from \"./constants.js\"\nimport { ApiError, AuthError, ConfigError, ScopeError } from \"./errors.js\"\nimport { formatError } from \"./output.js\"\n\ninterface GlobalFlags {\n json: boolean\n yes: boolean\n baseUrl?: string\n apiKey?: string\n help: boolean\n}\n\nfunction parseGlobalFlags(args: string[]): { flags: GlobalFlags; rest: string[] } {\n const flags: GlobalFlags = { json: false, yes: false, help: false }\n const rest: string[] = []\n\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--json\":\n flags.json = true\n break\n case \"--yes\":\n case \"-y\":\n flags.yes = true\n break\n case \"--base-url\":\n flags.baseUrl = args[++i]\n break\n case \"--api-key\":\n flags.apiKey = args[++i]\n break\n case \"--help\":\n case \"-h\":\n flags.help = true\n break\n case \"--version\":\n case \"-v\":\n console.log(VERSION)\n process.exit(0)\n break\n default:\n rest.push(args[i])\n }\n }\n\n return { flags, rest }\n}\n\nfunction createPublicClient(flags: GlobalFlags): OatmealClient {\n const config = loadConfig()\n return new OatmealClient({\n baseUrl: flags.baseUrl ?? config?.baseUrl ?? DEFAULT_BASE_URL,\n })\n}\n\nfunction createAuthenticatedClient(flags: GlobalFlags): OatmealClient {\n const apiKey = flags.apiKey ?? process.env.OATMEAL_API_KEY\n if (apiKey) {\n return new OatmealClient({\n baseUrl: flags.baseUrl ?? DEFAULT_BASE_URL,\n apiKey,\n })\n }\n\n const config = loadConfig()\n if (!config?.apiKey) {\n throw new AuthError()\n }\n\n return new OatmealClient({\n baseUrl: flags.baseUrl ?? config.baseUrl,\n apiKey: config.apiKey,\n })\n}\n\nconst BANNER = `\n ${pc.bold(\"oatmeal\")} — CLI for the Oatmeal hackathon platform\n\n ${pc.dim(\"USAGE\")}\n oatmeal <command> [options]\n\n ${pc.dim(\"PUBLIC COMMANDS (no auth required)\")}\n browse hackathons Search public hackathons\n browse submissions <slug> View submissions for a hackathon\n browse results <slug> View published results\n browse org <slug> View organization profile\n\n ${pc.dim(\"AUTH\")}\n login Sign in via browser or API key\n logout Remove saved credentials\n whoami Show current auth info\n\n ${pc.dim(\"HACKATHON MANAGEMENT (auth required)\")}\n hackathons list List your hackathons\n hackathons get <id> Get hackathon details\n hackathons create Create a hackathon\n hackathons update <id> Update a hackathon\n hackathons delete <id> Delete a hackathon\n\n ${pc.dim(\"JUDGING\")}\n judging criteria list <id> List criteria\n judging criteria create <id> Create criteria\n judging criteria update <id> <cid> Update criteria\n judging criteria delete <id> <cid> Delete criteria\n judging judges list <id> List judges\n judging judges add <id> Add a judge\n judging judges remove <id> <pid> Remove a judge\n judging assignments list <id> List assignments\n judging assignments create <id> Create assignment\n judging assignments delete <id> <aid> Delete assignment\n judging auto-assign <id> Auto-assign judges\n judging invitations list <id> List invitations\n judging invitations cancel <id> <iid> Cancel invitation\n judging pick-results <id> View pick results\n\n ${pc.dim(\"PRIZES\")}\n prizes list <id> List prizes\n prizes create <id> Create a prize\n prizes update <id> <pid> Update a prize\n prizes delete <id> <pid> Delete a prize\n prizes reorder <id> Reorder prizes\n prizes assign <id> <pid> Assign prize\n prizes unassign <id> <pid> <sid> Unassign prize\n\n ${pc.dim(\"JUDGE DISPLAY\")}\n judge-display list <id> List display profiles\n judge-display create <id> Create display profile\n judge-display update <id> <jid> Update display profile\n judge-display delete <id> <jid> Delete display profile\n judge-display reorder <id> Reorder profiles\n\n ${pc.dim(\"RESULTS\")}\n results calculate <id> Calculate results\n results get <id> Get detailed results\n results publish <id> Publish results\n results unpublish <id> Unpublish results\n\n ${pc.dim(\"WEBHOOKS\")}\n webhooks list List webhooks\n webhooks create Create a webhook\n webhooks delete <id> Delete a webhook\n\n ${pc.dim(\"JOBS\")}\n jobs list List jobs\n jobs get <id> Get job details\n jobs create Create a job\n jobs result <id> Get job result\n jobs cancel <id> Cancel a job\n\n ${pc.dim(\"SCHEDULES\")}\n schedules list List schedules\n schedules create Create a schedule\n schedules get <id> Get schedule details\n schedules update <id> Update a schedule\n schedules delete <id> Delete a schedule\n\n ${pc.dim(\"GLOBAL OPTIONS\")}\n --json Output as JSON\n --yes, -y Skip confirmation prompts\n --base-url API base URL\n --api-key API key (overrides config)\n --help, -h Show help\n --version, -v Show version\n`\n\nasync function main() {\n const { flags, rest } = parseGlobalFlags(process.argv.slice(2))\n\n if (rest.length === 0 || flags.help) {\n console.log(BANNER)\n return\n }\n\n const command = rest[0]\n const sub = rest[1]\n const sub2 = rest[2]\n\n try {\n switch (command) {\n case \"login\": {\n const { runLogin } = await import(\"./commands/login.js\")\n await runLogin(rest.slice(1).concat(flags.yes ? [\"--yes\"] : []).concat(flags.baseUrl ? [\"--base-url\", flags.baseUrl] : []).concat(flags.apiKey ? [\"--api-key\", flags.apiKey] : []))\n break\n }\n\n case \"logout\": {\n const { runLogout } = await import(\"./commands/logout.js\")\n await runLogout()\n break\n }\n\n case \"whoami\": {\n const client = createAuthenticatedClient(flags)\n const { runWhoAmI } = await import(\"./commands/whoami.js\")\n await runWhoAmI(client, { json: flags.json })\n break\n }\n\n case \"browse\": {\n const client = createPublicClient(flags)\n switch (sub) {\n case \"hackathons\": {\n const { runBrowseHackathons } = await import(\"./commands/browse/hackathons.js\")\n await runBrowseHackathons(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"submissions\": {\n const { runBrowseSubmissions } = await import(\"./commands/browse/submissions.js\")\n await runBrowseSubmissions(client, rest[2], { json: flags.json })\n break\n }\n case \"results\": {\n const { runBrowseResults } = await import(\"./commands/browse/results.js\")\n await runBrowseResults(client, rest[2], { json: flags.json })\n break\n }\n case \"org\": {\n const { runBrowseOrg } = await import(\"./commands/browse/org.js\")\n await runBrowseOrg(client, rest[2], { json: flags.json })\n break\n }\n default:\n console.error(`Unknown browse command: ${sub}. Run \"oatmeal browse --help\" for usage.`)\n process.exit(1)\n }\n break\n }\n\n case \"hackathons\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runHackathonsList } = await import(\"./commands/hackathons/list.js\")\n await runHackathonsList(client, { json: flags.json })\n break\n }\n case \"get\": {\n const { runHackathonsGet } = await import(\"./commands/hackathons/get.js\")\n await runHackathonsGet(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runHackathonsCreate } = await import(\"./commands/hackathons/create.js\")\n await runHackathonsCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runHackathonsUpdate } = await import(\"./commands/hackathons/update.js\")\n await runHackathonsUpdate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runHackathonsDelete } = await import(\"./commands/hackathons/delete.js\")\n await runHackathonsDelete(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown hackathons command: ${sub}. Run \"oatmeal hackathons --help\" for usage.`)\n process.exit(1)\n }\n break\n }\n\n case \"judging\": {\n const client = createAuthenticatedClient(flags)\n const hackathonId = rest[2]\n switch (sub) {\n case \"criteria\":\n switch (sub2) {\n case \"list\": {\n const { runCriteriaList } = await import(\"./commands/judging/criteria-list.js\")\n await runCriteriaList(client, rest[3], { json: flags.json })\n break\n }\n case \"create\": {\n const { runCriteriaCreate } = await import(\"./commands/judging/criteria-create.js\")\n await runCriteriaCreate(client, rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runCriteriaUpdate } = await import(\"./commands/judging/criteria-update.js\")\n await runCriteriaUpdate(client, rest[3], rest[4], rest.slice(5).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runCriteriaDelete } = await import(\"./commands/judging/criteria-delete.js\")\n await runCriteriaDelete(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging criteria command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"judges\":\n switch (sub2) {\n case \"list\": {\n const { runJudgesList } = await import(\"./commands/judging/judges-list.js\")\n await runJudgesList(client, rest[3], { json: flags.json })\n break\n }\n case \"add\": {\n const { runJudgesAdd } = await import(\"./commands/judging/judges-add.js\")\n await runJudgesAdd(client, rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"remove\": {\n const { runJudgesRemove } = await import(\"./commands/judging/judges-remove.js\")\n await runJudgesRemove(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging judges command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"assignments\":\n switch (sub2) {\n case \"list\": {\n const { runAssignmentsList } = await import(\"./commands/judging/assignments-list.js\")\n await runAssignmentsList(client, rest[3], { json: flags.json })\n break\n }\n case \"create\": {\n const { runAssignmentsCreate } = await import(\"./commands/judging/assignments-create.js\")\n await runAssignmentsCreate(client, rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runAssignmentsDelete } = await import(\"./commands/judging/assignments-delete.js\")\n await runAssignmentsDelete(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging assignments command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"auto-assign\": {\n const { runAutoAssign } = await import(\"./commands/judging/auto-assign.js\")\n await runAutoAssign(client, hackathonId, rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n\n case \"invitations\":\n switch (sub2) {\n case \"list\": {\n const { runInvitationsList } = await import(\"./commands/judging/invitations-list.js\")\n await runInvitationsList(client, rest[3], { json: flags.json })\n break\n }\n case \"cancel\": {\n const { runInvitationsCancel } = await import(\"./commands/judging/invitations-cancel.js\")\n await runInvitationsCancel(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging invitations command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"pick-results\": {\n const { runPickResults } = await import(\"./commands/judging/pick-results.js\")\n await runPickResults(client, hackathonId, { json: flags.json })\n break\n }\n\n default:\n console.error(`Unknown judging command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"prizes\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runPrizesList } = await import(\"./commands/prizes/list.js\")\n await runPrizesList(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runPrizesCreate } = await import(\"./commands/prizes/create.js\")\n await runPrizesCreate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runPrizesUpdate } = await import(\"./commands/prizes/update.js\")\n await runPrizesUpdate(client, rest[2], rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runPrizesDelete } = await import(\"./commands/prizes/delete.js\")\n await runPrizesDelete(client, rest[2], rest[3], { yes: flags.yes })\n break\n }\n case \"reorder\": {\n const { runPrizesReorder } = await import(\"./commands/prizes/reorder.js\")\n await runPrizesReorder(client, rest[2], rest.slice(3))\n break\n }\n case \"assign\": {\n const { runPrizesAssign } = await import(\"./commands/prizes/assign.js\")\n await runPrizesAssign(client, rest[2], rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"unassign\": {\n const { runPrizesUnassign } = await import(\"./commands/prizes/unassign.js\")\n await runPrizesUnassign(client, rest[2], rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown prizes command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"judge-display\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runJudgeDisplayList } = await import(\"./commands/judge-display/list.js\")\n await runJudgeDisplayList(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runJudgeDisplayCreate } = await import(\"./commands/judge-display/create.js\")\n await runJudgeDisplayCreate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runJudgeDisplayUpdate } = await import(\"./commands/judge-display/update.js\")\n await runJudgeDisplayUpdate(client, rest[2], rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runJudgeDisplayDelete } = await import(\"./commands/judge-display/delete.js\")\n await runJudgeDisplayDelete(client, rest[2], rest[3], { yes: flags.yes })\n break\n }\n case \"reorder\": {\n const { runJudgeDisplayReorder } = await import(\"./commands/judge-display/reorder.js\")\n await runJudgeDisplayReorder(client, rest[2], rest.slice(3))\n break\n }\n default:\n console.error(`Unknown judge-display command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"results\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"calculate\": {\n const { runResultsCalculate } = await import(\"./commands/results/calculate.js\")\n await runResultsCalculate(client, rest[2], { json: flags.json })\n break\n }\n case \"get\": {\n const { runResultsGet } = await import(\"./commands/results/get.js\")\n await runResultsGet(client, rest[2], { json: flags.json })\n break\n }\n case \"publish\": {\n const { runResultsPublish } = await import(\"./commands/results/publish.js\")\n await runResultsPublish(client, rest[2], { yes: flags.yes })\n break\n }\n case \"unpublish\": {\n const { runResultsUnpublish } = await import(\"./commands/results/unpublish.js\")\n await runResultsUnpublish(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown results command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"webhooks\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runWebhooksList } = await import(\"./commands/webhooks/list.js\")\n await runWebhooksList(client, { json: flags.json })\n break\n }\n case \"create\": {\n const { runWebhooksCreate } = await import(\"./commands/webhooks/create.js\")\n await runWebhooksCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runWebhooksDelete } = await import(\"./commands/webhooks/delete.js\")\n await runWebhooksDelete(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown webhooks command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"jobs\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runJobsList } = await import(\"./commands/jobs/list.js\")\n await runJobsList(client, rest.slice(2), { json: flags.json })\n break\n }\n case \"get\": {\n const { runJobsGet } = await import(\"./commands/jobs/get.js\")\n await runJobsGet(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runJobsCreate } = await import(\"./commands/jobs/create.js\")\n await runJobsCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"result\": {\n const { runJobsResult } = await import(\"./commands/jobs/result.js\")\n await runJobsResult(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"cancel\": {\n const { runJobsCancel } = await import(\"./commands/jobs/cancel.js\")\n await runJobsCancel(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown jobs command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"schedules\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runSchedulesList } = await import(\"./commands/schedules/list.js\")\n await runSchedulesList(client, { json: flags.json })\n break\n }\n case \"create\": {\n const { runSchedulesCreate } = await import(\"./commands/schedules/create.js\")\n await runSchedulesCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"get\": {\n const { runSchedulesGet } = await import(\"./commands/schedules/get.js\")\n await runSchedulesGet(client, rest[2], { json: flags.json })\n break\n }\n case \"update\": {\n const { runSchedulesUpdate } = await import(\"./commands/schedules/update.js\")\n await runSchedulesUpdate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runSchedulesDelete } = await import(\"./commands/schedules/delete.js\")\n await runSchedulesDelete(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown schedules command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n default:\n console.error(`Unknown command: ${command}. Run \"oatmeal --help\" for usage.`)\n process.exit(1)\n }\n } catch (error) {\n if (error instanceof ScopeError) {\n console.error(formatError({ message: error.message, hint: error.hint }))\n } else if (error instanceof AuthError) {\n console.error(formatError({ message: error.message }))\n } else if (error instanceof ConfigError) {\n console.error(formatError({ message: error.message }))\n } else if (error instanceof ApiError) {\n console.error(formatError({ message: error.toString(), hint: error.hint }))\n } else if (error instanceof Error) {\n console.error(formatError({ message: error.message }))\n } else {\n console.error(formatError({ message: String(error) }))\n }\n process.exit(1)\n }\n}\n\nmain()\n"],"mappings":"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"}
1
+ {"version":3,"file":"cli.mjs","names":[],"sources":["../src/client.ts","../src/output.ts","../src/cli.ts"],"sourcesContent":["import { REQUEST_TIMEOUT_MS } from \"./constants.js\"\nimport { ApiError, AuthError, ScopeError } from \"./errors.js\"\n\ninterface ClientOptions {\n baseUrl: string\n apiKey?: string\n}\n\ninterface RequestOptions {\n method?: string\n body?: unknown\n params?: Record<string, string | number | undefined>\n timeout?: number\n}\n\nexport class OatmealClient {\n private baseUrl: string\n private apiKey?: string\n\n constructor(options: ClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\")\n this.apiKey = options.apiKey\n }\n\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"GET\" })\n }\n\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"POST\", body })\n }\n\n async patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"PATCH\", body })\n }\n\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"DELETE\" })\n }\n\n private async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { method = \"GET\", body, params, timeout = REQUEST_TIMEOUT_MS } = options\n\n let url = `${this.baseUrl}${path}`\n if (params) {\n const searchParams = new URLSearchParams()\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n searchParams.set(key, String(value))\n }\n }\n const qs = searchParams.toString()\n if (qs) url += `?${qs}`\n }\n\n const headers: Record<string, string> = {}\n if (this.apiKey) {\n headers[\"Authorization\"] = `Bearer ${this.apiKey}`\n }\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\"\n }\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeout)\n\n try {\n const response = await this.fetchWithRetry(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n })\n\n clearTimeout(timer)\n\n if (response.status === 204) {\n return undefined as T\n }\n\n const contentType = response.headers.get(\"content-type\") ?? \"\"\n let data: unknown\n\n if (contentType.includes(\"application/json\")) {\n data = await response.json()\n } else {\n const text = await response.text()\n data = { message: text }\n }\n\n if (!response.ok) {\n this.handleErrorResponse(response.status, data)\n }\n\n return data as T\n } catch (error) {\n clearTimeout(timer)\n if (error instanceof ApiError || error instanceof AuthError || error instanceof ScopeError) {\n throw error\n }\n if (error instanceof DOMException && error.name === \"AbortError\") {\n throw new ApiError(0, `Request timed out after ${timeout / 1000}s`)\n }\n if (error instanceof TypeError && (error.message.includes(\"fetch\") || error.message.includes(\"network\"))) {\n throw new ApiError(0, `Could not connect to ${this.baseUrl}. Is the server running?`)\n }\n throw new ApiError(0, `Network error: ${(error as Error).message}`)\n }\n }\n\n private async fetchWithRetry(\n url: string,\n init: RequestInit,\n retried = false\n ): Promise<Response> {\n const response = await fetch(url, init)\n\n if (response.status === 429 && !retried) {\n const retryAfter = response.headers.get(\"retry-after\")\n const delay = retryAfter ? parseInt(retryAfter, 10) * 1000 : 1000\n await new Promise((resolve) => setTimeout(resolve, Math.min(delay, 10_000)))\n return this.fetchWithRetry(url, init, true)\n }\n\n return response\n }\n\n private handleErrorResponse(status: number, data: unknown): never {\n const body = data as Record<string, unknown>\n const message = (body?.error as string) || (body?.message as string) || `Request failed`\n\n if (status === 401) {\n throw new AuthError(message)\n }\n\n if (status === 403) {\n const scope = body?.requiredScope as string | undefined\n if (scope) {\n throw new ScopeError(scope, body?.currentScopes as string[] | undefined)\n }\n throw new ApiError(403, message)\n }\n\n if (status === 404) {\n throw new ApiError(404, body?.message ? message : \"Resource not found\")\n }\n\n if (status === 429) {\n throw new ApiError(429, \"Rate limited. Please try again later.\", \"Wait a moment before retrying.\")\n }\n\n throw new ApiError(status, message)\n }\n}\n","import pc from \"picocolors\"\n\nconst noColor = !!process.env.NO_COLOR\n\nfunction color<T extends string>(fn: (s: T) => string, s: T): string {\n return noColor ? s : fn(s)\n}\n\ninterface Column<T> {\n key: keyof T\n label: string\n width?: number\n}\n\nexport function formatTable<T extends object>(\n rows: T[],\n columns: Column<T>[]\n): string {\n if (rows.length === 0) {\n return \"\"\n }\n\n const widths = columns.map((col) => {\n const headerWidth = col.label.length\n const maxDataWidth = rows.reduce((max, row) => {\n const val = String(row[col.key] ?? \"\")\n return Math.max(max, val.length)\n }, 0)\n return col.width ?? Math.min(Math.max(headerWidth, maxDataWidth), 50)\n })\n\n const header = columns.map((col, i) => col.label.padEnd(widths[i])).join(\" \")\n const separator = widths.map((w) => \"─\".repeat(w)).join(\"──\")\n\n const dataRows = rows.map((row) =>\n columns\n .map((col, i) => {\n const val = String(row[col.key] ?? \"\")\n return val.length > widths[i] ? val.slice(0, widths[i] - 1) + \"…\" : val.padEnd(widths[i])\n })\n .join(\" \")\n )\n\n return [color(pc.bold, header), separator, ...dataRows].join(\"\\n\")\n}\n\nexport function formatJson(data: unknown): string {\n return JSON.stringify(data, null, 2)\n}\n\nexport function formatDetail(fields: Array<{ label: string; value: string | undefined }>): string {\n const maxLabel = fields.reduce((max, f) => Math.max(max, f.label.length), 0)\n return fields\n .map((f) => `${color(pc.bold, f.label.padEnd(maxLabel))} ${f.value ?? color(pc.dim, \"—\")}`)\n .join(\"\\n\")\n}\n\nexport function formatError(error: { message: string; hint?: string }): string {\n const lines = [color(pc.red, `Error: ${error.message}`)]\n if (error.hint) {\n lines.push(color(pc.dim, `Hint: ${error.hint}`))\n }\n return lines.join(\"\\n\")\n}\n\nexport function formatSuccess(message: string): string {\n return color(pc.green, `✓ ${message}`)\n}\n\nexport function formatWarning(message: string): string {\n return color(pc.yellow, `⚠ ${message}`)\n}\n","import pc from \"picocolors\"\nimport { OatmealClient } from \"./client.js\"\nimport { loadConfig } from \"./config.js\"\nimport { VERSION, DEFAULT_BASE_URL } from \"./constants.js\"\nimport { ApiError, AuthError, ConfigError, ScopeError } from \"./errors.js\"\nimport { formatError } from \"./output.js\"\n\ninterface GlobalFlags {\n json: boolean\n yes: boolean\n baseUrl?: string\n apiKey?: string\n help: boolean\n}\n\nfunction parseGlobalFlags(args: string[]): { flags: GlobalFlags; rest: string[] } {\n const flags: GlobalFlags = { json: false, yes: false, help: false }\n const rest: string[] = []\n\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--json\":\n flags.json = true\n break\n case \"--yes\":\n case \"-y\":\n flags.yes = true\n break\n case \"--base-url\":\n flags.baseUrl = args[++i]\n break\n case \"--api-key\":\n flags.apiKey = args[++i]\n break\n case \"--help\":\n case \"-h\":\n flags.help = true\n break\n case \"--version\":\n case \"-v\":\n console.log(VERSION)\n process.exit(0)\n break\n default:\n rest.push(args[i])\n }\n }\n\n return { flags, rest }\n}\n\nfunction createPublicClient(flags: GlobalFlags): OatmealClient {\n const config = loadConfig()\n return new OatmealClient({\n baseUrl: flags.baseUrl ?? config?.baseUrl ?? DEFAULT_BASE_URL,\n })\n}\n\nfunction createAuthenticatedClient(flags: GlobalFlags): OatmealClient {\n const apiKey = flags.apiKey ?? process.env.HACKATHON_API_KEY\n if (apiKey) {\n return new OatmealClient({\n baseUrl: flags.baseUrl ?? DEFAULT_BASE_URL,\n apiKey,\n })\n }\n\n const config = loadConfig()\n if (!config?.apiKey) {\n throw new AuthError()\n }\n\n return new OatmealClient({\n baseUrl: flags.baseUrl ?? config.baseUrl,\n apiKey: config.apiKey,\n })\n}\n\nconst BANNER = `\n ${pc.bold(\"hackathon\")} — CLI for the Oatmeal hackathon platform\n\n ${pc.dim(\"USAGE\")}\n hackathon <command> [options]\n\n ${pc.dim(\"PUBLIC COMMANDS (no auth required)\")}\n browse hackathons Search public hackathons\n browse submissions <slug> View submissions for a hackathon\n browse results <slug> View published results\n browse org <slug> View organization profile\n\n ${pc.dim(\"AUTH\")}\n login Sign in via browser or API key\n logout Remove saved credentials\n whoami Show current auth info\n\n ${pc.dim(\"HACKATHON MANAGEMENT (auth required)\")}\n hackathons list List your hackathons\n hackathons get <id> Get hackathon details\n hackathons create Create a hackathon\n hackathons update <id> Update a hackathon\n hackathons delete <id> Delete a hackathon\n\n ${pc.dim(\"JUDGING\")}\n judging criteria list <id> List criteria\n judging criteria create <id> Create criteria\n judging criteria update <id> <cid> Update criteria\n judging criteria delete <id> <cid> Delete criteria\n judging judges list <id> List judges\n judging judges add <id> Add a judge\n judging judges remove <id> <pid> Remove a judge\n judging assignments list <id> List assignments\n judging assignments create <id> Create assignment\n judging assignments delete <id> <aid> Delete assignment\n judging auto-assign <id> Auto-assign judges\n judging invitations list <id> List invitations\n judging invitations cancel <id> <iid> Cancel invitation\n judging pick-results <id> View pick results\n\n ${pc.dim(\"PRIZES\")}\n prizes list <id> List prizes\n prizes create <id> Create a prize\n prizes update <id> <pid> Update a prize\n prizes delete <id> <pid> Delete a prize\n prizes reorder <id> Reorder prizes\n prizes assign <id> <pid> Assign prize\n prizes unassign <id> <pid> <sid> Unassign prize\n\n ${pc.dim(\"JUDGE DISPLAY\")}\n judge-display list <id> List display profiles\n judge-display create <id> Create display profile\n judge-display update <id> <jid> Update display profile\n judge-display delete <id> <jid> Delete display profile\n judge-display reorder <id> Reorder profiles\n\n ${pc.dim(\"RESULTS\")}\n results calculate <id> Calculate results\n results get <id> Get detailed results\n results publish <id> Publish results\n results unpublish <id> Unpublish results\n\n ${pc.dim(\"WEBHOOKS\")}\n webhooks list List webhooks\n webhooks create Create a webhook\n webhooks delete <id> Delete a webhook\n\n ${pc.dim(\"JOBS\")}\n jobs list List jobs\n jobs get <id> Get job details\n jobs create Create a job\n jobs result <id> Get job result\n jobs cancel <id> Cancel a job\n\n ${pc.dim(\"SCHEDULES\")}\n schedules list List schedules\n schedules create Create a schedule\n schedules get <id> Get schedule details\n schedules update <id> Update a schedule\n schedules delete <id> Delete a schedule\n\n ${pc.dim(\"GLOBAL OPTIONS\")}\n --json Output as JSON\n --yes, -y Skip confirmation prompts\n --base-url API base URL\n --api-key API key (overrides config)\n --help, -h Show help\n --version, -v Show version\n`\n\nasync function main() {\n const { flags, rest } = parseGlobalFlags(process.argv.slice(2))\n\n if (rest.length === 0 || flags.help) {\n console.log(BANNER)\n return\n }\n\n const command = rest[0]\n const sub = rest[1]\n const sub2 = rest[2]\n\n try {\n switch (command) {\n case \"login\": {\n const { runLogin } = await import(\"./commands/login.js\")\n await runLogin(rest.slice(1).concat(flags.yes ? [\"--yes\"] : []).concat(flags.baseUrl ? [\"--base-url\", flags.baseUrl] : []).concat(flags.apiKey ? [\"--api-key\", flags.apiKey] : []))\n break\n }\n\n case \"logout\": {\n const { runLogout } = await import(\"./commands/logout.js\")\n await runLogout()\n break\n }\n\n case \"whoami\": {\n const client = createAuthenticatedClient(flags)\n const { runWhoAmI } = await import(\"./commands/whoami.js\")\n await runWhoAmI(client, { json: flags.json })\n break\n }\n\n case \"browse\": {\n const client = createPublicClient(flags)\n switch (sub) {\n case \"hackathons\": {\n const { runBrowseHackathons } = await import(\"./commands/browse/hackathons.js\")\n await runBrowseHackathons(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"submissions\": {\n const { runBrowseSubmissions } = await import(\"./commands/browse/submissions.js\")\n await runBrowseSubmissions(client, rest[2], { json: flags.json })\n break\n }\n case \"results\": {\n const { runBrowseResults } = await import(\"./commands/browse/results.js\")\n await runBrowseResults(client, rest[2], { json: flags.json })\n break\n }\n case \"org\": {\n const { runBrowseOrg } = await import(\"./commands/browse/org.js\")\n await runBrowseOrg(client, rest[2], { json: flags.json })\n break\n }\n default:\n console.error(`Unknown browse command: ${sub}. Run \"hackathon browse --help\" for usage.`)\n process.exit(1)\n }\n break\n }\n\n case \"hackathons\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runHackathonsList } = await import(\"./commands/hackathons/list.js\")\n await runHackathonsList(client, { json: flags.json })\n break\n }\n case \"get\": {\n const { runHackathonsGet } = await import(\"./commands/hackathons/get.js\")\n await runHackathonsGet(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runHackathonsCreate } = await import(\"./commands/hackathons/create.js\")\n await runHackathonsCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runHackathonsUpdate } = await import(\"./commands/hackathons/update.js\")\n await runHackathonsUpdate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runHackathonsDelete } = await import(\"./commands/hackathons/delete.js\")\n await runHackathonsDelete(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown hackathons command: ${sub}. Run \"hackathon hackathons --help\" for usage.`)\n process.exit(1)\n }\n break\n }\n\n case \"judging\": {\n const client = createAuthenticatedClient(flags)\n const hackathonId = rest[2]\n switch (sub) {\n case \"criteria\":\n switch (sub2) {\n case \"list\": {\n const { runCriteriaList } = await import(\"./commands/judging/criteria-list.js\")\n await runCriteriaList(client, rest[3], { json: flags.json })\n break\n }\n case \"create\": {\n const { runCriteriaCreate } = await import(\"./commands/judging/criteria-create.js\")\n await runCriteriaCreate(client, rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runCriteriaUpdate } = await import(\"./commands/judging/criteria-update.js\")\n await runCriteriaUpdate(client, rest[3], rest[4], rest.slice(5).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runCriteriaDelete } = await import(\"./commands/judging/criteria-delete.js\")\n await runCriteriaDelete(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging criteria command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"judges\":\n switch (sub2) {\n case \"list\": {\n const { runJudgesList } = await import(\"./commands/judging/judges-list.js\")\n await runJudgesList(client, rest[3], { json: flags.json })\n break\n }\n case \"add\": {\n const { runJudgesAdd } = await import(\"./commands/judging/judges-add.js\")\n await runJudgesAdd(client, rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"remove\": {\n const { runJudgesRemove } = await import(\"./commands/judging/judges-remove.js\")\n await runJudgesRemove(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging judges command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"assignments\":\n switch (sub2) {\n case \"list\": {\n const { runAssignmentsList } = await import(\"./commands/judging/assignments-list.js\")\n await runAssignmentsList(client, rest[3], { json: flags.json })\n break\n }\n case \"create\": {\n const { runAssignmentsCreate } = await import(\"./commands/judging/assignments-create.js\")\n await runAssignmentsCreate(client, rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runAssignmentsDelete } = await import(\"./commands/judging/assignments-delete.js\")\n await runAssignmentsDelete(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging assignments command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"auto-assign\": {\n const { runAutoAssign } = await import(\"./commands/judging/auto-assign.js\")\n await runAutoAssign(client, hackathonId, rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n\n case \"invitations\":\n switch (sub2) {\n case \"list\": {\n const { runInvitationsList } = await import(\"./commands/judging/invitations-list.js\")\n await runInvitationsList(client, rest[3], { json: flags.json })\n break\n }\n case \"cancel\": {\n const { runInvitationsCancel } = await import(\"./commands/judging/invitations-cancel.js\")\n await runInvitationsCancel(client, rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown judging invitations command: ${sub2}`)\n process.exit(1)\n }\n break\n\n case \"pick-results\": {\n const { runPickResults } = await import(\"./commands/judging/pick-results.js\")\n await runPickResults(client, hackathonId, { json: flags.json })\n break\n }\n\n default:\n console.error(`Unknown judging command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"prizes\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runPrizesList } = await import(\"./commands/prizes/list.js\")\n await runPrizesList(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runPrizesCreate } = await import(\"./commands/prizes/create.js\")\n await runPrizesCreate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runPrizesUpdate } = await import(\"./commands/prizes/update.js\")\n await runPrizesUpdate(client, rest[2], rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runPrizesDelete } = await import(\"./commands/prizes/delete.js\")\n await runPrizesDelete(client, rest[2], rest[3], { yes: flags.yes })\n break\n }\n case \"reorder\": {\n const { runPrizesReorder } = await import(\"./commands/prizes/reorder.js\")\n await runPrizesReorder(client, rest[2], rest.slice(3))\n break\n }\n case \"assign\": {\n const { runPrizesAssign } = await import(\"./commands/prizes/assign.js\")\n await runPrizesAssign(client, rest[2], rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"unassign\": {\n const { runPrizesUnassign } = await import(\"./commands/prizes/unassign.js\")\n await runPrizesUnassign(client, rest[2], rest[3], rest[4], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown prizes command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"judge-display\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runJudgeDisplayList } = await import(\"./commands/judge-display/list.js\")\n await runJudgeDisplayList(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runJudgeDisplayCreate } = await import(\"./commands/judge-display/create.js\")\n await runJudgeDisplayCreate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"update\": {\n const { runJudgeDisplayUpdate } = await import(\"./commands/judge-display/update.js\")\n await runJudgeDisplayUpdate(client, rest[2], rest[3], rest.slice(4).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runJudgeDisplayDelete } = await import(\"./commands/judge-display/delete.js\")\n await runJudgeDisplayDelete(client, rest[2], rest[3], { yes: flags.yes })\n break\n }\n case \"reorder\": {\n const { runJudgeDisplayReorder } = await import(\"./commands/judge-display/reorder.js\")\n await runJudgeDisplayReorder(client, rest[2], rest.slice(3))\n break\n }\n default:\n console.error(`Unknown judge-display command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"results\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"calculate\": {\n const { runResultsCalculate } = await import(\"./commands/results/calculate.js\")\n await runResultsCalculate(client, rest[2], { json: flags.json })\n break\n }\n case \"get\": {\n const { runResultsGet } = await import(\"./commands/results/get.js\")\n await runResultsGet(client, rest[2], { json: flags.json })\n break\n }\n case \"publish\": {\n const { runResultsPublish } = await import(\"./commands/results/publish.js\")\n await runResultsPublish(client, rest[2], { yes: flags.yes })\n break\n }\n case \"unpublish\": {\n const { runResultsUnpublish } = await import(\"./commands/results/unpublish.js\")\n await runResultsUnpublish(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown results command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"webhooks\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runWebhooksList } = await import(\"./commands/webhooks/list.js\")\n await runWebhooksList(client, { json: flags.json })\n break\n }\n case \"create\": {\n const { runWebhooksCreate } = await import(\"./commands/webhooks/create.js\")\n await runWebhooksCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runWebhooksDelete } = await import(\"./commands/webhooks/delete.js\")\n await runWebhooksDelete(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown webhooks command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"jobs\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runJobsList } = await import(\"./commands/jobs/list.js\")\n await runJobsList(client, rest.slice(2), { json: flags.json })\n break\n }\n case \"get\": {\n const { runJobsGet } = await import(\"./commands/jobs/get.js\")\n await runJobsGet(client, rest[2], { json: flags.json })\n break\n }\n case \"create\": {\n const { runJobsCreate } = await import(\"./commands/jobs/create.js\")\n await runJobsCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"result\": {\n const { runJobsResult } = await import(\"./commands/jobs/result.js\")\n await runJobsResult(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"cancel\": {\n const { runJobsCancel } = await import(\"./commands/jobs/cancel.js\")\n await runJobsCancel(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown jobs command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n case \"schedules\": {\n const client = createAuthenticatedClient(flags)\n switch (sub) {\n case \"list\": {\n const { runSchedulesList } = await import(\"./commands/schedules/list.js\")\n await runSchedulesList(client, { json: flags.json })\n break\n }\n case \"create\": {\n const { runSchedulesCreate } = await import(\"./commands/schedules/create.js\")\n await runSchedulesCreate(client, rest.slice(2).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"get\": {\n const { runSchedulesGet } = await import(\"./commands/schedules/get.js\")\n await runSchedulesGet(client, rest[2], { json: flags.json })\n break\n }\n case \"update\": {\n const { runSchedulesUpdate } = await import(\"./commands/schedules/update.js\")\n await runSchedulesUpdate(client, rest[2], rest.slice(3).concat(flags.json ? [\"--json\"] : []))\n break\n }\n case \"delete\": {\n const { runSchedulesDelete } = await import(\"./commands/schedules/delete.js\")\n await runSchedulesDelete(client, rest[2], { yes: flags.yes })\n break\n }\n default:\n console.error(`Unknown schedules command: ${sub}`)\n process.exit(1)\n }\n break\n }\n\n default:\n console.error(`Unknown command: ${command}. Run \"hackathon --help\" for usage.`)\n process.exit(1)\n }\n } catch (error) {\n if (error instanceof ScopeError) {\n console.error(formatError({ message: error.message, hint: error.hint }))\n } else if (error instanceof AuthError) {\n console.error(formatError({ message: error.message }))\n } else if (error instanceof ConfigError) {\n console.error(formatError({ message: error.message }))\n } else if (error instanceof ApiError) {\n console.error(formatError({ message: error.toString(), hint: error.hint }))\n } else if (error instanceof Error) {\n console.error(formatError({ message: error.message }))\n } else {\n console.error(formatError({ message: String(error) }))\n }\n process.exit(1)\n }\n}\n\nmain()\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@agi-ventures-canada/hackathon-cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "CLI for the Oatmeal hackathon platform",
5
5
  "type": "module",
6
6
  "bin": {
7
- "oatmeal": "./bin/cli.mjs"
7
+ "hackathon": "./bin/cli.mjs"
8
8
  },
9
9
  "files": [
10
10
  "dist",
@@ -15,7 +15,7 @@
15
15
  "build": "obuild",
16
16
  "dev": "bun run src/cli.ts",
17
17
  "test": "bun test",
18
- "prepublishOnly": ""
18
+ "prepublishOnly": "npm run build"
19
19
  },
20
20
  "dependencies": {
21
21
  "@clack/prompts": "^0.10.0",