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