@agi-ventures-canada/hackathon-cli 0.1.6 → 0.1.8

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/activate-round.mjs +18 -0
  2. package/dist/_chunks/activate-round.mjs.map +1 -0
  3. package/dist/_chunks/activity.mjs +82 -0
  4. package/dist/_chunks/activity.mjs.map +1 -0
  5. package/dist/_chunks/buckets.mjs +56 -0
  6. package/dist/_chunks/buckets.mjs.map +1 -0
  7. package/dist/_chunks/calculate-results.mjs +18 -0
  8. package/dist/_chunks/calculate-results.mjs.map +1 -0
  9. package/dist/_chunks/create.mjs +1 -1
  10. package/dist/_chunks/create.mjs.map +1 -1
  11. package/dist/_chunks/create6.mjs +29 -38
  12. package/dist/_chunks/create6.mjs.map +1 -1
  13. package/dist/_chunks/create7.mjs +63 -0
  14. package/dist/_chunks/create7.mjs.map +1 -0
  15. package/dist/_chunks/criteria-create.mjs +9 -22
  16. package/dist/_chunks/criteria-create.mjs.map +1 -1
  17. package/dist/_chunks/criteria-list.mjs +4 -0
  18. package/dist/_chunks/criteria-list.mjs.map +1 -1
  19. package/dist/_chunks/criteria-update.mjs +13 -5
  20. package/dist/_chunks/criteria-update.mjs.map +1 -1
  21. package/dist/_chunks/delete5.mjs +8 -8
  22. package/dist/_chunks/delete5.mjs.map +1 -1
  23. package/dist/_chunks/delete6.mjs +22 -0
  24. package/dist/_chunks/delete6.mjs.map +1 -0
  25. package/dist/_chunks/get5.mjs +42 -0
  26. package/dist/_chunks/get5.mjs.map +1 -0
  27. package/dist/_chunks/levels-add.mjs +53 -0
  28. package/dist/_chunks/levels-add.mjs.map +1 -0
  29. package/dist/_chunks/levels-delete.mjs +53 -0
  30. package/dist/_chunks/levels-delete.mjs.map +1 -0
  31. package/dist/_chunks/levels-list.mjs +39 -0
  32. package/dist/_chunks/levels-list.mjs.map +1 -0
  33. package/dist/_chunks/levels-update.mjs +61 -0
  34. package/dist/_chunks/levels-update.mjs.map +1 -0
  35. package/dist/_chunks/list6.mjs +22 -19
  36. package/dist/_chunks/list6.mjs.map +1 -1
  37. package/dist/_chunks/list7.mjs +40 -0
  38. package/dist/_chunks/list7.mjs.map +1 -0
  39. package/dist/_chunks/track-assign.mjs +37 -0
  40. package/dist/_chunks/track-assign.mjs.map +1 -0
  41. package/dist/_chunks/track-unassign.mjs +49 -0
  42. package/dist/_chunks/track-unassign.mjs.map +1 -0
  43. package/dist/_chunks/update-round.mjs +49 -0
  44. package/dist/_chunks/update-round.mjs.map +1 -0
  45. package/dist/_chunks/update5.mjs +41 -48
  46. package/dist/_chunks/update5.mjs.map +1 -1
  47. package/dist/_chunks/update6.mjs +56 -0
  48. package/dist/_chunks/update6.mjs.map +1 -0
  49. package/dist/cli.mjs +160 -86
  50. package/dist/cli.mjs.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/_chunks/hackathons-delete.mjs +0 -26
  53. package/dist/_chunks/hackathons-delete.mjs.map +0 -1
  54. package/dist/_chunks/hackathons-get.mjs +0 -34
  55. package/dist/_chunks/hackathons-get.mjs.map +0 -1
  56. package/dist/_chunks/hackathons-list.mjs +0 -64
  57. package/dist/_chunks/hackathons-list.mjs.map +0 -1
  58. package/dist/_chunks/hackathons-update.mjs +0 -73
  59. package/dist/_chunks/hackathons-update.mjs.map +0 -1
  60. package/dist/_chunks/scenarios-list.mjs +0 -24
  61. package/dist/_chunks/scenarios-list.mjs.map +0 -1
  62. package/dist/_chunks/scenarios-run.mjs +0 -23
  63. package/dist/_chunks/scenarios-run.mjs.map +0 -1
  64. package/dist/_chunks/stats.mjs +0 -37
  65. package/dist/_chunks/stats.mjs.map +0 -1
@@ -1,22 +1,22 @@
1
1
  import { r as formatSuccess } from "../cli.mjs";
2
2
  import * as p from "@clack/prompts";
3
- //#region src/commands/webhooks/delete.ts
4
- async function runWebhooksDelete(client, webhookId, options) {
5
- if (!webhookId) {
6
- console.error("Usage: hackathon webhooks delete <webhook-id>");
3
+ //#region src/commands/tracks/delete.ts
4
+ async function runTracksDelete(client, hackathonId, trackId, options) {
5
+ if (!trackId) {
6
+ console.error("Usage: hackathon tracks delete <hackathon-id> <track-id>");
7
7
  process.exit(1);
8
8
  }
9
9
  if (!options.yes) {
10
- const confirm = await p.confirm({ message: `Delete webhook ${webhookId}?` });
10
+ const confirm = await p.confirm({ message: `Delete track ${trackId}? This removes all rounds, buckets, and responses.` });
11
11
  if (p.isCancel(confirm) || !confirm) {
12
12
  p.log.info("Cancelled.");
13
13
  return;
14
14
  }
15
15
  }
16
- await client.delete(`/api/v1/webhooks/${webhookId}`);
17
- console.log(formatSuccess(`Deleted webhook ${webhookId}`));
16
+ await client.delete(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`);
17
+ console.log(formatSuccess(`Deleted track ${trackId}`));
18
18
  }
19
19
  //#endregion
20
- export { runWebhooksDelete };
20
+ export { runTracksDelete };
21
21
 
22
22
  //# sourceMappingURL=delete5.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete5.mjs","names":[],"sources":["../../src/commands/webhooks/delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runWebhooksDelete(\n client: OatmealClient,\n webhookId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!webhookId) {\n console.error(\"Usage: hackathon webhooks delete <webhook-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Delete webhook ${webhookId}?` })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(`/api/v1/webhooks/${webhookId}`)\n console.log(formatSuccess(`Deleted webhook ${webhookId}`))\n}\n"],"mappings":";;;AAIA,eAAsB,kBACpB,QACA,WACA,SACe;AACf,KAAI,CAAC,WAAW;AACd,UAAQ,MAAM,gDAAgD;AAC9D,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,kBAAkB,UAAU,IAAI,CAAC;AAC5E,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OAAO,oBAAoB,YAAY;AACpD,SAAQ,IAAI,cAAc,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"delete5.mjs","names":[],"sources":["../../src/commands/tracks/delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runTracksDelete(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!trackId) {\n console.error(\"Usage: hackathon tracks delete <hackathon-id> <track-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Delete track ${trackId}? This removes all rounds, buckets, and responses.` })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`)\n console.log(formatSuccess(`Deleted track ${trackId}`))\n}\n"],"mappings":";;;AAIA,eAAsB,gBACpB,QACA,aACA,SACA,SACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,2DAA2D;AACzE,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,gBAAgB,QAAQ,qDAAqD,CAAC;AACzH,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OAAO,6BAA6B,YAAY,gBAAgB,UAAU;AACvF,SAAQ,IAAI,cAAc,iBAAiB,UAAU,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { r as formatSuccess } from "../cli.mjs";
2
+ import * as p from "@clack/prompts";
3
+ //#region src/commands/webhooks/delete.ts
4
+ async function runWebhooksDelete(client, webhookId, options) {
5
+ if (!webhookId) {
6
+ console.error("Usage: hackathon webhooks delete <webhook-id>");
7
+ process.exit(1);
8
+ }
9
+ if (!options.yes) {
10
+ const confirm = await p.confirm({ message: `Delete webhook ${webhookId}?` });
11
+ if (p.isCancel(confirm) || !confirm) {
12
+ p.log.info("Cancelled.");
13
+ return;
14
+ }
15
+ }
16
+ await client.delete(`/api/v1/webhooks/${webhookId}`);
17
+ console.log(formatSuccess(`Deleted webhook ${webhookId}`));
18
+ }
19
+ //#endregion
20
+ export { runWebhooksDelete };
21
+
22
+ //# sourceMappingURL=delete6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete6.mjs","names":[],"sources":["../../src/commands/webhooks/delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runWebhooksDelete(\n client: OatmealClient,\n webhookId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!webhookId) {\n console.error(\"Usage: hackathon webhooks delete <webhook-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Delete webhook ${webhookId}?` })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(`/api/v1/webhooks/${webhookId}`)\n console.log(formatSuccess(`Deleted webhook ${webhookId}`))\n}\n"],"mappings":";;;AAIA,eAAsB,kBACpB,QACA,WACA,SACe;AACf,KAAI,CAAC,WAAW;AACd,UAAQ,MAAM,gDAAgD;AAC9D,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,kBAAkB,UAAU,IAAI,CAAC;AAC5E,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OAAO,oBAAoB,YAAY;AACpD,SAAQ,IAAI,cAAc,mBAAmB,YAAY,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { n as formatJson, t as formatDetail } from "../cli.mjs";
2
+ //#region src/commands/tracks/get.ts
3
+ async function runTracksGet(client, hackathonId, trackId, options) {
4
+ if (!trackId) {
5
+ console.error("Usage: hackathon tracks get <hackathon-id> <track-id>");
6
+ process.exit(1);
7
+ }
8
+ const track = await client.get(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`);
9
+ if (options.json) {
10
+ console.log(formatJson(track));
11
+ return;
12
+ }
13
+ console.log(formatDetail([
14
+ {
15
+ label: "ID",
16
+ value: track.id
17
+ },
18
+ {
19
+ label: "Name",
20
+ value: track.name
21
+ },
22
+ {
23
+ label: "Description",
24
+ value: track.description ?? void 0
25
+ },
26
+ {
27
+ label: "Intent",
28
+ value: track.intent
29
+ }
30
+ ]));
31
+ if (track.rounds.length > 0) {
32
+ console.log(`\nRounds (${track.rounds.length}):`);
33
+ for (const round of track.rounds) {
34
+ console.log(` ${round.name} — ${round.style ?? "no style"} [${round.status}]`);
35
+ if (round.buckets.length > 0) for (const b of round.buckets) console.log(` ${b.level}. ${b.label}${b.description ? ` — ${b.description}` : ""}`);
36
+ }
37
+ }
38
+ }
39
+ //#endregion
40
+ export { runTracksGet };
41
+
42
+ //# sourceMappingURL=get5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get5.mjs","names":[],"sources":["../../src/commands/tracks/get.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatDetail } from \"../../output.js\"\nimport type { TrackDetail } from \"../../types.js\"\n\nexport async function runTracksGet(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!trackId) {\n console.error(\"Usage: hackathon tracks get <hackathon-id> <track-id>\")\n process.exit(1)\n }\n\n const track = await client.get<TrackDetail>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`\n )\n\n if (options.json) {\n console.log(formatJson(track))\n return\n }\n\n console.log(\n formatDetail([\n { label: \"ID\", value: track.id },\n { label: \"Name\", value: track.name },\n { label: \"Description\", value: track.description ?? undefined },\n { label: \"Intent\", value: track.intent },\n ])\n )\n\n if (track.rounds.length > 0) {\n console.log(`\\nRounds (${track.rounds.length}):`)\n for (const round of track.rounds) {\n console.log(` ${round.name} — ${round.style ?? \"no style\"} [${round.status}]`)\n if (round.buckets.length > 0) {\n for (const b of round.buckets) {\n console.log(` ${b.level}. ${b.label}${b.description ? ` — ${b.description}` : \"\"}`)\n }\n }\n }\n }\n}\n"],"mappings":";;AAIA,eAAsB,aACpB,QACA,aACA,SACA,SACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,wDAAwD;AACtE,UAAQ,KAAK,EAAE;;CAGjB,MAAM,QAAQ,MAAM,OAAO,IACzB,6BAA6B,YAAY,gBAAgB,UAC1D;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IACN,aAAa;EACX;GAAE,OAAO;GAAM,OAAO,MAAM;GAAI;EAChC;GAAE,OAAO;GAAQ,OAAO,MAAM;GAAM;EACpC;GAAE,OAAO;GAAe,OAAO,MAAM,eAAe,KAAA;GAAW;EAC/D;GAAE,OAAO;GAAU,OAAO,MAAM;;EACjC,CAAC,CACH;AAED,KAAI,MAAM,OAAO,SAAS,GAAG;AAC3B,UAAQ,IAAI,aAAa,MAAM,OAAO,OAAO,IAAI;AACjD,OAAK,MAAM,SAAS,MAAM,QAAQ;AAChC,WAAQ,IAAI,KAAK,MAAM,KAAK,KAAK,MAAM,SAAS,WAAW,IAAI,MAAM,OAAO,GAAG;AAC/E,OAAI,MAAM,QAAQ,SAAS,EACzB,MAAK,MAAM,KAAK,MAAM,QACpB,SAAQ,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,cAAc,MAAM,EAAE,gBAAgB,KAAK"}
@@ -0,0 +1,53 @@
1
+ import { n as formatJson, r as formatSuccess } from "../cli.mjs";
2
+ //#region src/commands/judging/levels-add.ts
3
+ function parseLevelsAddOptions(args) {
4
+ const options = {};
5
+ for (let i = 0; i < args.length; i++) switch (args[i]) {
6
+ case "--hackathon-id":
7
+ options.hackathonId = args[++i];
8
+ break;
9
+ case "--criteria-id":
10
+ options.criteriaId = args[++i];
11
+ break;
12
+ case "--label":
13
+ options.label = args[++i];
14
+ break;
15
+ case "--description":
16
+ options.description = args[++i];
17
+ break;
18
+ case "--json":
19
+ options.json = true;
20
+ break;
21
+ }
22
+ return options;
23
+ }
24
+ async function runLevelsAdd(client, hackathonId, criteriaId, args) {
25
+ const options = parseLevelsAddOptions(args);
26
+ const resolvedHackathonId = options.hackathonId ?? hackathonId;
27
+ const resolvedCriteriaId = options.criteriaId ?? criteriaId;
28
+ if (!resolvedHackathonId) {
29
+ console.error("Error: --hackathon-id is required");
30
+ process.exit(1);
31
+ }
32
+ if (!resolvedCriteriaId) {
33
+ console.error("Error: --criteria-id is required");
34
+ process.exit(1);
35
+ }
36
+ if (!options.label) {
37
+ console.error("Error: --label is required");
38
+ process.exit(1);
39
+ }
40
+ const level = await client.post(`/api/dashboard/hackathons/${resolvedHackathonId}/judging/criteria/${resolvedCriteriaId}/levels`, {
41
+ label: options.label,
42
+ description: options.description
43
+ });
44
+ if (options.json) {
45
+ console.log(formatJson(level));
46
+ return;
47
+ }
48
+ console.log(formatSuccess(`Added level "${level.label}" (${level.id})`));
49
+ }
50
+ //#endregion
51
+ export { runLevelsAdd };
52
+
53
+ //# sourceMappingURL=levels-add.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels-add.mjs","names":[],"sources":["../../src/commands/judging/levels-add.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { RubricLevel } from \"../../types.js\"\n\ninterface LevelsAddOptions {\n hackathonId?: string\n criteriaId?: string\n label?: string\n description?: string\n json?: boolean\n}\n\nexport function parseLevelsAddOptions(args: string[]): LevelsAddOptions {\n const options: LevelsAddOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--hackathon-id\":\n options.hackathonId = args[++i]\n break\n case \"--criteria-id\":\n options.criteriaId = args[++i]\n break\n case \"--label\":\n options.label = 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 runLevelsAdd(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n args: string[]\n): Promise<void> {\n const options = parseLevelsAddOptions(args)\n\n const resolvedHackathonId = options.hackathonId ?? hackathonId\n const resolvedCriteriaId = options.criteriaId ?? criteriaId\n\n if (!resolvedHackathonId) {\n console.error(\"Error: --hackathon-id is required\")\n process.exit(1)\n }\n\n if (!resolvedCriteriaId) {\n console.error(\"Error: --criteria-id is required\")\n process.exit(1)\n }\n\n if (!options.label) {\n console.error(\"Error: --label is required\")\n process.exit(1)\n }\n\n const level = await client.post<RubricLevel>(\n `/api/dashboard/hackathons/${resolvedHackathonId}/judging/criteria/${resolvedCriteriaId}/levels`,\n {\n label: options.label,\n description: options.description,\n }\n )\n\n if (options.json) {\n console.log(formatJson(level))\n return\n }\n\n console.log(formatSuccess(`Added level \"${level.label}\" (${level.id})`))\n}\n"],"mappings":";;AAYA,SAAgB,sBAAsB,MAAkC;CACtE,MAAM,UAA4B,EAAE;AACpC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,aAAa,KAAK,EAAE;AAC5B;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,aACpB,QACA,aACA,YACA,MACe;CACf,MAAM,UAAU,sBAAsB,KAAK;CAE3C,MAAM,sBAAsB,QAAQ,eAAe;CACnD,MAAM,qBAAqB,QAAQ,cAAc;AAEjD,KAAI,CAAC,qBAAqB;AACxB,UAAQ,MAAM,oCAAoC;AAClD,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,oBAAoB;AACvB,UAAQ,MAAM,mCAAmC;AACjD,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,OAAO;AAClB,UAAQ,MAAM,6BAA6B;AAC3C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,QAAQ,MAAM,OAAO,KACzB,6BAA6B,oBAAoB,oBAAoB,mBAAmB,UACxF;EACE,OAAO,QAAQ;EACf,aAAa,QAAQ;EACtB,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,gBAAgB,MAAM,MAAM,KAAK,MAAM,GAAG,GAAG,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { i as formatTable, n as formatJson, r as formatSuccess } from "../cli.mjs";
2
+ import * as p from "@clack/prompts";
3
+ //#region src/commands/judging/levels-delete.ts
4
+ async function runLevelsDelete(client, hackathonId, criteriaId, levelId, options) {
5
+ if (!hackathonId) {
6
+ console.error("Usage: hackathon judging levels delete --hackathon-id <id> --criteria-id <id> --level-id <id>");
7
+ process.exit(1);
8
+ }
9
+ if (!criteriaId) {
10
+ console.error("Usage: hackathon judging levels delete --hackathon-id <id> --criteria-id <id> --level-id <id>");
11
+ process.exit(1);
12
+ }
13
+ if (!levelId) {
14
+ console.error("Usage: hackathon judging levels delete --hackathon-id <id> --criteria-id <id> --level-id <id>");
15
+ process.exit(1);
16
+ }
17
+ if (!options.yes) {
18
+ const confirm = await p.confirm({ message: `Delete level ${levelId}?` });
19
+ if (p.isCancel(confirm) || !confirm) {
20
+ p.log.info("Cancelled.");
21
+ return;
22
+ }
23
+ }
24
+ await client.delete(`/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}/levels/${levelId}`);
25
+ console.log(formatSuccess(`Deleted level ${levelId}`));
26
+ const data = await client.get(`/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}/levels`);
27
+ if (options.json) {
28
+ console.log(formatJson(data));
29
+ return;
30
+ }
31
+ if (!data.levels?.length) {
32
+ console.log("No rubric levels remaining.");
33
+ return;
34
+ }
35
+ console.log(formatTable(data.levels, [
36
+ {
37
+ key: "levelNumber",
38
+ label: "Level #"
39
+ },
40
+ {
41
+ key: "label",
42
+ label: "Label"
43
+ },
44
+ {
45
+ key: "description",
46
+ label: "Description"
47
+ }
48
+ ]));
49
+ }
50
+ //#endregion
51
+ export { runLevelsDelete };
52
+
53
+ //# sourceMappingURL=levels-delete.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels-delete.mjs","names":[],"sources":["../../src/commands/judging/levels-delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess, formatTable } from \"../../output.js\"\nimport type { RubricLevel } from \"../../types.js\"\n\nexport async function runLevelsDelete(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n levelId: string,\n options: { yes?: boolean; json?: boolean }\n): Promise<void> {\n if (!hackathonId) {\n console.error(\"Usage: hackathon judging levels delete --hackathon-id <id> --criteria-id <id> --level-id <id>\")\n process.exit(1)\n }\n\n if (!criteriaId) {\n console.error(\"Usage: hackathon judging levels delete --hackathon-id <id> --criteria-id <id> --level-id <id>\")\n process.exit(1)\n }\n\n if (!levelId) {\n console.error(\"Usage: hackathon judging levels delete --hackathon-id <id> --criteria-id <id> --level-id <id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Delete level ${levelId}?` })\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}/judging/criteria/${criteriaId}/levels/${levelId}`\n )\n console.log(formatSuccess(`Deleted level ${levelId}`))\n\n const data = await client.get<{ levels: RubricLevel[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}/levels`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.levels?.length) {\n console.log(\"No rubric levels remaining.\")\n return\n }\n\n console.log(\n formatTable(data.levels, [\n { key: \"levelNumber\", label: \"Level #\" },\n { key: \"label\", label: \"Label\" },\n { key: \"description\", label: \"Description\" },\n ])\n )\n}\n"],"mappings":";;;AAKA,eAAsB,gBACpB,QACA,aACA,YACA,SACA,SACe;AACf,KAAI,CAAC,aAAa;AAChB,UAAQ,MAAM,gGAAgG;AAC9G,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,gGAAgG;AAC9G,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,gGAAgG;AAC9G,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,gBAAgB,QAAQ,IAAI,CAAC;AACxE,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OACX,6BAA6B,YAAY,oBAAoB,WAAW,UAAU,UACnF;AACD,SAAQ,IAAI,cAAc,iBAAiB,UAAU,CAAC;CAEtD,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,oBAAoB,WAAW,SACzE;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,UAAQ,IAAI,8BAA8B;AAC1C;;AAGF,SAAQ,IACN,YAAY,KAAK,QAAQ;EACvB;GAAE,KAAK;GAAe,OAAO;GAAW;EACxC;GAAE,KAAK;GAAS,OAAO;GAAS;EAChC;GAAE,KAAK;GAAe,OAAO;;EAC9B,CAAC,CACH"}
@@ -0,0 +1,39 @@
1
+ import { i as formatTable, n as formatJson } from "../cli.mjs";
2
+ //#region src/commands/judging/levels-list.ts
3
+ async function runLevelsList(client, hackathonId, criteriaId, options) {
4
+ if (!hackathonId) {
5
+ console.error("Usage: hackathon judging levels list --hackathon-id <id> --criteria-id <id>");
6
+ process.exit(1);
7
+ }
8
+ if (!criteriaId) {
9
+ console.error("Usage: hackathon judging levels list --hackathon-id <id> --criteria-id <id>");
10
+ process.exit(1);
11
+ }
12
+ const data = await client.get(`/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}/levels`);
13
+ if (options.json) {
14
+ console.log(formatJson(data));
15
+ return;
16
+ }
17
+ if (!data.levels?.length) {
18
+ console.log("No rubric levels found.");
19
+ return;
20
+ }
21
+ console.log(formatTable(data.levels, [
22
+ {
23
+ key: "levelNumber",
24
+ label: "Level #"
25
+ },
26
+ {
27
+ key: "label",
28
+ label: "Label"
29
+ },
30
+ {
31
+ key: "description",
32
+ label: "Description"
33
+ }
34
+ ]));
35
+ }
36
+ //#endregion
37
+ export { runLevelsList };
38
+
39
+ //# sourceMappingURL=levels-list.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels-list.mjs","names":[],"sources":["../../src/commands/judging/levels-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { RubricLevel } from \"../../types.js\"\n\nexport async function runLevelsList(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!hackathonId) {\n console.error(\"Usage: hackathon judging levels list --hackathon-id <id> --criteria-id <id>\")\n process.exit(1)\n }\n\n if (!criteriaId) {\n console.error(\"Usage: hackathon judging levels list --hackathon-id <id> --criteria-id <id>\")\n process.exit(1)\n }\n\n const data = await client.get<{ levels: RubricLevel[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}/levels`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.levels?.length) {\n console.log(\"No rubric levels found.\")\n return\n }\n\n console.log(\n formatTable(data.levels, [\n { key: \"levelNumber\", label: \"Level #\" },\n { key: \"label\", label: \"Label\" },\n { key: \"description\", label: \"Description\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,cACpB,QACA,aACA,YACA,SACe;AACf,KAAI,CAAC,aAAa;AAChB,UAAQ,MAAM,8EAA8E;AAC5F,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,8EAA8E;AAC5F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,oBAAoB,WAAW,SACzE;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,UAAQ,IAAI,0BAA0B;AACtC;;AAGF,SAAQ,IACN,YAAY,KAAK,QAAQ;EACvB;GAAE,KAAK;GAAe,OAAO;GAAW;EACxC;GAAE,KAAK;GAAS,OAAO;GAAS;EAChC;GAAE,KAAK;GAAe,OAAO;;EAC9B,CAAC,CACH"}
@@ -0,0 +1,61 @@
1
+ import { n as formatJson, r as formatSuccess } from "../cli.mjs";
2
+ //#region src/commands/judging/levels-update.ts
3
+ function parseLevelsUpdateOptions(args) {
4
+ const options = {};
5
+ for (let i = 0; i < args.length; i++) switch (args[i]) {
6
+ case "--hackathon-id":
7
+ options.hackathonId = args[++i];
8
+ break;
9
+ case "--criteria-id":
10
+ options.criteriaId = args[++i];
11
+ break;
12
+ case "--level-id":
13
+ options.levelId = args[++i];
14
+ break;
15
+ case "--label":
16
+ options.label = args[++i];
17
+ break;
18
+ case "--description":
19
+ options.description = args[++i];
20
+ break;
21
+ case "--json":
22
+ options.json = true;
23
+ break;
24
+ }
25
+ return options;
26
+ }
27
+ async function runLevelsUpdate(client, hackathonId, criteriaId, levelId, args) {
28
+ const options = parseLevelsUpdateOptions(args);
29
+ const resolvedHackathonId = options.hackathonId ?? hackathonId;
30
+ const resolvedCriteriaId = options.criteriaId ?? criteriaId;
31
+ const resolvedLevelId = options.levelId ?? levelId;
32
+ if (!resolvedHackathonId) {
33
+ console.error("Error: --hackathon-id is required");
34
+ process.exit(1);
35
+ }
36
+ if (!resolvedCriteriaId) {
37
+ console.error("Error: --criteria-id is required");
38
+ process.exit(1);
39
+ }
40
+ if (!resolvedLevelId) {
41
+ console.error("Error: --level-id is required");
42
+ process.exit(1);
43
+ }
44
+ const body = {};
45
+ if (options.label) body.label = options.label;
46
+ if (options.description !== void 0) body.description = options.description;
47
+ if (Object.keys(body).length === 0) {
48
+ console.error("Error: provide at least one field to update (--label, --description)");
49
+ process.exit(1);
50
+ }
51
+ const level = await client.patch(`/api/dashboard/hackathons/${resolvedHackathonId}/judging/criteria/${resolvedCriteriaId}/levels/${resolvedLevelId}`, body);
52
+ if (options.json) {
53
+ console.log(formatJson(level));
54
+ return;
55
+ }
56
+ console.log(formatSuccess(`Updated level "${level.label}"`));
57
+ }
58
+ //#endregion
59
+ export { runLevelsUpdate };
60
+
61
+ //# sourceMappingURL=levels-update.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels-update.mjs","names":[],"sources":["../../src/commands/judging/levels-update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { RubricLevel } from \"../../types.js\"\n\ninterface LevelsUpdateOptions {\n hackathonId?: string\n criteriaId?: string\n levelId?: string\n label?: string\n description?: string\n json?: boolean\n}\n\nexport function parseLevelsUpdateOptions(args: string[]): LevelsUpdateOptions {\n const options: LevelsUpdateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--hackathon-id\":\n options.hackathonId = args[++i]\n break\n case \"--criteria-id\":\n options.criteriaId = args[++i]\n break\n case \"--level-id\":\n options.levelId = args[++i]\n break\n case \"--label\":\n options.label = 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 runLevelsUpdate(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n levelId: string,\n args: string[]\n): Promise<void> {\n const options = parseLevelsUpdateOptions(args)\n\n const resolvedHackathonId = options.hackathonId ?? hackathonId\n const resolvedCriteriaId = options.criteriaId ?? criteriaId\n const resolvedLevelId = options.levelId ?? levelId\n\n if (!resolvedHackathonId) {\n console.error(\"Error: --hackathon-id is required\")\n process.exit(1)\n }\n\n if (!resolvedCriteriaId) {\n console.error(\"Error: --criteria-id is required\")\n process.exit(1)\n }\n\n if (!resolvedLevelId) {\n console.error(\"Error: --level-id is required\")\n process.exit(1)\n }\n\n const body: Record<string, unknown> = {}\n if (options.label) body.label = options.label\n if (options.description !== undefined) body.description = options.description\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update (--label, --description)\")\n process.exit(1)\n }\n\n const level = await client.patch<RubricLevel>(\n `/api/dashboard/hackathons/${resolvedHackathonId}/judging/criteria/${resolvedCriteriaId}/levels/${resolvedLevelId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(level))\n return\n }\n\n console.log(formatSuccess(`Updated level \"${level.label}\"`))\n}\n"],"mappings":";;AAaA,SAAgB,yBAAyB,MAAqC;CAC5E,MAAM,UAA+B,EAAE;AACvC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,aAAa,KAAK,EAAE;AAC5B;EACF,KAAK;AACH,WAAQ,UAAU,KAAK,EAAE;AACzB;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,gBACpB,QACA,aACA,YACA,SACA,MACe;CACf,MAAM,UAAU,yBAAyB,KAAK;CAE9C,MAAM,sBAAsB,QAAQ,eAAe;CACnD,MAAM,qBAAqB,QAAQ,cAAc;CACjD,MAAM,kBAAkB,QAAQ,WAAW;AAE3C,KAAI,CAAC,qBAAqB;AACxB,UAAQ,MAAM,oCAAoC;AAClD,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,oBAAoB;AACvB,UAAQ,MAAM,mCAAmC;AACjD,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,iBAAiB;AACpB,UAAQ,MAAM,gCAAgC;AAC9C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AACxC,KAAI,QAAQ,gBAAgB,KAAA,EAAW,MAAK,cAAc,QAAQ;AAElE,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,uEAAuE;AACrF,UAAQ,KAAK,EAAE;;CAGjB,MAAM,QAAQ,MAAM,OAAO,MACzB,6BAA6B,oBAAoB,oBAAoB,mBAAmB,UAAU,mBAClG,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,MAAM,MAAM,GAAG,CAAC"}
@@ -1,40 +1,43 @@
1
1
  import { i as formatTable, n as formatJson } from "../cli.mjs";
2
- //#region src/commands/webhooks/list.ts
3
- async function runWebhooksList(client, options) {
4
- const data = await client.get("/api/v1/webhooks");
2
+ //#region src/commands/tracks/list.ts
3
+ async function runTracksList(client, hackathonId, options) {
4
+ const data = await client.get(`/api/dashboard/hackathons/${hackathonId}/prize-tracks`);
5
5
  if (options.json) {
6
6
  console.log(formatJson(data));
7
7
  return;
8
8
  }
9
- if (!data.webhooks?.length) {
10
- console.log("No webhooks found.");
9
+ if (!data.tracks?.length) {
10
+ console.log("No prize tracks found.");
11
11
  return;
12
12
  }
13
- const rows = data.webhooks.map((w) => ({
14
- ...w,
15
- events_list: w.events.join(", "),
16
- active_str: w.active ? "Active" : "Inactive"
17
- }));
18
- console.log(formatTable(rows, [
13
+ console.log(formatTable(data.tracks, [
19
14
  {
20
- key: "id",
15
+ key: "trackId",
21
16
  label: "ID"
22
17
  },
23
18
  {
24
- key: "url",
25
- label: "URL"
19
+ key: "trackName",
20
+ label: "Name"
26
21
  },
27
22
  {
28
- key: "events_list",
29
- label: "Events"
23
+ key: "intent",
24
+ label: "Intent"
30
25
  },
31
26
  {
32
- key: "active_str",
33
- label: "Status"
27
+ key: "style",
28
+ label: "Style"
29
+ },
30
+ {
31
+ key: "totalAssignments",
32
+ label: "Assignments"
33
+ },
34
+ {
35
+ key: "completedAssignments",
36
+ label: "Completed"
34
37
  }
35
38
  ]));
36
39
  }
37
40
  //#endregion
38
- export { runWebhooksList };
41
+ export { runTracksList };
39
42
 
40
43
  //# sourceMappingURL=list6.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list6.mjs","names":[],"sources":["../../src/commands/webhooks/list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Webhook } from \"../../types.js\"\n\nexport async function runWebhooksList(\n client: OatmealClient,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ webhooks: Webhook[] }>(\"/api/v1/webhooks\")\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.webhooks?.length) {\n console.log(\"No webhooks found.\")\n return\n }\n\n const rows = data.webhooks.map((w) => ({\n ...w,\n events_list: w.events.join(\", \"),\n active_str: w.active ? \"Active\" : \"Inactive\",\n }))\n\n console.log(\n formatTable(rows, [\n { key: \"id\", label: \"ID\" },\n { key: \"url\", label: \"URL\" },\n { key: \"events_list\", label: \"Events\" },\n { key: \"active_str\", label: \"Status\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IAA6B,mBAAmB;AAE1E,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,qBAAqB;AACjC;;CAGF,MAAM,OAAO,KAAK,SAAS,KAAK,OAAO;EACrC,GAAG;EACH,aAAa,EAAE,OAAO,KAAK,KAAK;EAChC,YAAY,EAAE,SAAS,WAAW;EACnC,EAAE;AAEH,SAAQ,IACN,YAAY,MAAM;EAChB;GAAE,KAAK;GAAM,OAAO;GAAM;EAC1B;GAAE,KAAK;GAAO,OAAO;GAAO;EAC5B;GAAE,KAAK;GAAe,OAAO;GAAU;EACvC;GAAE,KAAK;GAAc,OAAO;;EAC7B,CAAC,CACH"}
1
+ {"version":3,"file":"list6.mjs","names":[],"sources":["../../src/commands/tracks/list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { PrizeTrack } from \"../../types.js\"\n\nexport async function runTracksList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ tracks: PrizeTrack[] }>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.tracks?.length) {\n console.log(\"No prize tracks found.\")\n return\n }\n\n console.log(\n formatTable(data.tracks, [\n { key: \"trackId\", label: \"ID\" },\n { key: \"trackName\", label: \"Name\" },\n { key: \"intent\", label: \"Intent\" },\n { key: \"style\", label: \"Style\" },\n { key: \"totalAssignments\", label: \"Assignments\" },\n { key: \"completedAssignments\", label: \"Completed\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,cACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,eAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,UAAQ,IAAI,yBAAyB;AACrC;;AAGF,SAAQ,IACN,YAAY,KAAK,QAAQ;EACvB;GAAE,KAAK;GAAW,OAAO;GAAM;EAC/B;GAAE,KAAK;GAAa,OAAO;GAAQ;EACnC;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAS,OAAO;GAAS;EAChC;GAAE,KAAK;GAAoB,OAAO;GAAe;EACjD;GAAE,KAAK;GAAwB,OAAO;;EACvC,CAAC,CACH"}
@@ -0,0 +1,40 @@
1
+ import { i as formatTable, n as formatJson } from "../cli.mjs";
2
+ //#region src/commands/webhooks/list.ts
3
+ async function runWebhooksList(client, options) {
4
+ const data = await client.get("/api/v1/webhooks");
5
+ if (options.json) {
6
+ console.log(formatJson(data));
7
+ return;
8
+ }
9
+ if (!data.webhooks?.length) {
10
+ console.log("No webhooks found.");
11
+ return;
12
+ }
13
+ const rows = data.webhooks.map((w) => ({
14
+ ...w,
15
+ events_list: w.events.join(", "),
16
+ active_str: w.active ? "Active" : "Inactive"
17
+ }));
18
+ console.log(formatTable(rows, [
19
+ {
20
+ key: "id",
21
+ label: "ID"
22
+ },
23
+ {
24
+ key: "url",
25
+ label: "URL"
26
+ },
27
+ {
28
+ key: "events_list",
29
+ label: "Events"
30
+ },
31
+ {
32
+ key: "active_str",
33
+ label: "Status"
34
+ }
35
+ ]));
36
+ }
37
+ //#endregion
38
+ export { runWebhooksList };
39
+
40
+ //# sourceMappingURL=list7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list7.mjs","names":[],"sources":["../../src/commands/webhooks/list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { Webhook } from \"../../types.js\"\n\nexport async function runWebhooksList(\n client: OatmealClient,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ webhooks: Webhook[] }>(\"/api/v1/webhooks\")\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.webhooks?.length) {\n console.log(\"No webhooks found.\")\n return\n }\n\n const rows = data.webhooks.map((w) => ({\n ...w,\n events_list: w.events.join(\", \"),\n active_str: w.active ? \"Active\" : \"Inactive\",\n }))\n\n console.log(\n formatTable(rows, [\n { key: \"id\", label: \"ID\" },\n { key: \"url\", label: \"URL\" },\n { key: \"events_list\", label: \"Events\" },\n { key: \"active_str\", label: \"Status\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IAA6B,mBAAmB;AAE1E,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,qBAAqB;AACjC;;CAGF,MAAM,OAAO,KAAK,SAAS,KAAK,OAAO;EACrC,GAAG;EACH,aAAa,EAAE,OAAO,KAAK,KAAK;EAChC,YAAY,EAAE,SAAS,WAAW;EACnC,EAAE;AAEH,SAAQ,IACN,YAAY,MAAM;EAChB;GAAE,KAAK;GAAM,OAAO;GAAM;EAC1B;GAAE,KAAK;GAAO,OAAO;GAAO;EAC5B;GAAE,KAAK;GAAe,OAAO;GAAU;EACvC;GAAE,KAAK;GAAc,OAAO;;EAC7B,CAAC,CACH"}
@@ -0,0 +1,37 @@
1
+ import { n as formatJson, r as formatSuccess } from "../cli.mjs";
2
+ //#region src/commands/judging/track-assign.ts
3
+ function parseOptions(args) {
4
+ const options = {};
5
+ for (let i = 0; i < args.length; i++) switch (args[i]) {
6
+ case "--judge":
7
+ options.judgeParticipantId = args[++i];
8
+ break;
9
+ case "--track":
10
+ options.trackId = args[++i];
11
+ break;
12
+ case "--json":
13
+ options.json = true;
14
+ break;
15
+ }
16
+ return options;
17
+ }
18
+ async function runTrackAssign(client, hackathonId, args) {
19
+ const options = parseOptions(args);
20
+ if (!options.judgeParticipantId || !options.trackId) {
21
+ console.error("Usage: hackathon judging track-assign <hackathon-id> --judge <participant-id> --track <track-id>");
22
+ process.exit(1);
23
+ }
24
+ const result = await client.post(`/api/dashboard/hackathons/${hackathonId}/judging/track-assign`, {
25
+ judgeParticipantId: options.judgeParticipantId,
26
+ trackId: options.trackId
27
+ });
28
+ if (options.json) {
29
+ console.log(formatJson(result));
30
+ return;
31
+ }
32
+ console.log(formatSuccess(`Assigned judge to track (${result.assignedCount} submissions)`));
33
+ }
34
+ //#endregion
35
+ export { runTrackAssign };
36
+
37
+ //# sourceMappingURL=track-assign.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-assign.mjs","names":[],"sources":["../../src/commands/judging/track-assign.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\ninterface TrackAssignOptions {\n judgeParticipantId?: string\n trackId?: string\n json?: boolean\n}\n\nfunction parseOptions(args: string[]): TrackAssignOptions {\n const options: TrackAssignOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--judge\":\n options.judgeParticipantId = args[++i]\n break\n case \"--track\":\n options.trackId = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runTrackAssign(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseOptions(args)\n\n if (!options.judgeParticipantId || !options.trackId) {\n console.error(\"Usage: hackathon judging track-assign <hackathon-id> --judge <participant-id> --track <track-id>\")\n process.exit(1)\n }\n\n const result = await client.post<{ assignedCount: number }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/track-assign`,\n {\n judgeParticipantId: options.judgeParticipantId,\n trackId: options.trackId,\n }\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Assigned judge to track (${result.assignedCount} submissions)`))\n}\n"],"mappings":";;AASA,SAAS,aAAa,MAAoC;CACxD,MAAM,UAA8B,EAAE;AACtC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,qBAAqB,KAAK,EAAE;AACpC;EACF,KAAK;AACH,WAAQ,UAAU,KAAK,EAAE;AACzB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,eACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,aAAa,KAAK;AAElC,KAAI,CAAC,QAAQ,sBAAsB,CAAC,QAAQ,SAAS;AACnD,UAAQ,MAAM,mGAAmG;AACjH,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,KAC1B,6BAA6B,YAAY,wBACzC;EACE,oBAAoB,QAAQ;EAC5B,SAAS,QAAQ;EAClB,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,4BAA4B,OAAO,cAAc,eAAe,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { n as formatJson, r as formatSuccess } from "../cli.mjs";
2
+ import * as p from "@clack/prompts";
3
+ //#region src/commands/judging/track-unassign.ts
4
+ function parseOptions(args) {
5
+ const options = {};
6
+ for (let i = 0; i < args.length; i++) switch (args[i]) {
7
+ case "--judge":
8
+ options.judgeParticipantId = args[++i];
9
+ break;
10
+ case "--track":
11
+ options.trackId = args[++i];
12
+ break;
13
+ case "--json":
14
+ options.json = true;
15
+ break;
16
+ case "--yes":
17
+ case "-y":
18
+ options.yes = true;
19
+ break;
20
+ }
21
+ return options;
22
+ }
23
+ async function runTrackUnassign(client, hackathonId, args) {
24
+ const options = parseOptions(args);
25
+ if (!options.judgeParticipantId || !options.trackId) {
26
+ console.error("Usage: hackathon judging track-unassign <hackathon-id> --judge <participant-id> --track <track-id>");
27
+ process.exit(1);
28
+ }
29
+ if (!options.yes) {
30
+ const confirm = await p.confirm({ message: "Remove judge from this track?" });
31
+ if (p.isCancel(confirm) || !confirm) {
32
+ p.log.info("Cancelled.");
33
+ return;
34
+ }
35
+ }
36
+ const result = await client.delete(`/api/dashboard/hackathons/${hackathonId}/judging/track-assign`, { body: {
37
+ judgeParticipantId: options.judgeParticipantId,
38
+ trackId: options.trackId
39
+ } });
40
+ if (options.json) {
41
+ console.log(formatJson(result));
42
+ return;
43
+ }
44
+ console.log(formatSuccess(`Removed judge from track (${result.removedCount} assignments removed)`));
45
+ }
46
+ //#endregion
47
+ export { runTrackUnassign };
48
+
49
+ //# sourceMappingURL=track-unassign.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-unassign.mjs","names":[],"sources":["../../src/commands/judging/track-unassign.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\ninterface TrackUnassignOptions {\n judgeParticipantId?: string\n trackId?: string\n json?: boolean\n yes?: boolean\n}\n\nfunction parseOptions(args: string[]): TrackUnassignOptions {\n const options: TrackUnassignOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--judge\":\n options.judgeParticipantId = args[++i]\n break\n case \"--track\":\n options.trackId = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n case \"--yes\":\n case \"-y\":\n options.yes = true\n break\n }\n }\n return options\n}\n\nexport async function runTrackUnassign(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseOptions(args)\n\n if (!options.judgeParticipantId || !options.trackId) {\n console.error(\"Usage: hackathon judging track-unassign <hackathon-id> --judge <participant-id> --track <track-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: \"Remove judge from this track?\" })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n const result = await client.delete<{ removedCount: number }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/track-assign`,\n {\n body: {\n judgeParticipantId: options.judgeParticipantId,\n trackId: options.trackId,\n },\n }\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Removed judge from track (${result.removedCount} assignments removed)`))\n}\n"],"mappings":";;;AAWA,SAAS,aAAa,MAAsC;CAC1D,MAAM,UAAgC,EAAE;AACxC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,qBAAqB,KAAK,EAAE;AACpC;EACF,KAAK;AACH,WAAQ,UAAU,KAAK,EAAE;AACzB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;EACF,KAAK;EACL,KAAK;AACH,WAAQ,MAAM;AACd;;AAGN,QAAO;;AAGT,eAAsB,iBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,aAAa,KAAK;AAElC,KAAI,CAAC,QAAQ,sBAAsB,CAAC,QAAQ,SAAS;AACnD,UAAQ,MAAM,qGAAqG;AACnH,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,iCAAiC,CAAC;AAC7E,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;CAIJ,MAAM,SAAS,MAAM,OAAO,OAC1B,6BAA6B,YAAY,wBACzC,EACE,MAAM;EACJ,oBAAoB,QAAQ;EAC5B,SAAS,QAAQ;EAClB,EACF,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,6BAA6B,OAAO,aAAa,uBAAuB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { n as formatJson, r as formatSuccess } from "../cli.mjs";
2
+ //#region src/commands/tracks/update-round.ts
3
+ function parseOptions(args) {
4
+ const options = {};
5
+ for (let i = 0; i < args.length; i++) switch (args[i]) {
6
+ case "--name":
7
+ options.name = args[++i];
8
+ break;
9
+ case "--style":
10
+ options.style = args[++i];
11
+ break;
12
+ case "--status":
13
+ options.status = args[++i];
14
+ break;
15
+ case "--advancement":
16
+ options.advancement = args[++i];
17
+ break;
18
+ case "--json":
19
+ options.json = true;
20
+ break;
21
+ }
22
+ return options;
23
+ }
24
+ async function runTracksUpdateRound(client, hackathonId, trackId, roundId, args) {
25
+ if (!trackId || !roundId) {
26
+ console.error("Usage: hackathon tracks update-round <hackathon-id> <track-id> <round-id> [--style ...]");
27
+ process.exit(1);
28
+ }
29
+ const options = parseOptions(args);
30
+ const body = {};
31
+ if (options.name) body.name = options.name;
32
+ if (options.style) body.style = options.style;
33
+ if (options.status) body.status = options.status;
34
+ if (options.advancement) body.advancement = options.advancement;
35
+ if (Object.keys(body).length === 0) {
36
+ console.error("Error: provide at least one field to update");
37
+ process.exit(1);
38
+ }
39
+ const result = await client.patch(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}`, body);
40
+ if (options.json) {
41
+ console.log(formatJson(result));
42
+ return;
43
+ }
44
+ console.log(formatSuccess(`Updated round ${result.id} [${result.style}, ${result.status}]`));
45
+ }
46
+ //#endregion
47
+ export { runTracksUpdateRound };
48
+
49
+ //# sourceMappingURL=update-round.mjs.map