mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 08:36:25 +00:00
fix(cli): reject negative and fractional count/pagination flags in Danish portal CLIs (#191)
Bare z.coerce.number() accepted negative and fractional values for count/pagination flags, and slice(0, limit) with a negative limit silently dropped trailing results instead of erroring. Tightens the schemas to .int().min(1) across all four Danish portal CLIs (including jobnet occupations --per-page) with network-free validation tests. By @ayobamiseun.
This commit is contained in:
@@ -21,7 +21,7 @@ export const occupations = defineCommand({
|
||||
"search-string": option(z.string().optional(), {
|
||||
description: "Search term for occupation, e.g. sygeplejerske",
|
||||
}),
|
||||
"per-page": option(z.coerce.number().default(10), {
|
||||
"per-page": option(z.coerce.number().int().min(1).default(10), {
|
||||
description: "Max results to return",
|
||||
}),
|
||||
format: option(z.enum(["json", "table", "plain"]).default("json"), {
|
||||
|
||||
@@ -131,10 +131,10 @@ export const search = defineCommand({
|
||||
"search-string": option(z.string().optional(), {
|
||||
description: "Free-text keyword search (job title, skills, employer)",
|
||||
}),
|
||||
page: option(z.coerce.number().default(1), {
|
||||
page: option(z.coerce.number().int().min(1).default(1), {
|
||||
description: "Page number (1-indexed)",
|
||||
}),
|
||||
"per-page": option(z.coerce.number().default(10), {
|
||||
"per-page": option(z.coerce.number().int().min(1).default(10), {
|
||||
description: "Results per page",
|
||||
}),
|
||||
order: option(z.string().default("PublicationDate"), {
|
||||
@@ -164,7 +164,7 @@ export const search = defineCommand({
|
||||
"occupation-group": option(z.string().optional(), {
|
||||
description: "Occupation group identifier, e.g. 10060",
|
||||
}),
|
||||
limit: option(z.coerce.number().optional(), {
|
||||
limit: option(z.coerce.number().int().min(1).optional(), {
|
||||
description: "Cap total results returned by CLI",
|
||||
}),
|
||||
format: option(z.enum(["json", "table", "plain"]).default("json"), {
|
||||
|
||||
@@ -9,7 +9,7 @@ export const suggestions = defineCommand({
|
||||
query: option(z.string().optional(), {
|
||||
description: "Partial search string to complete",
|
||||
}),
|
||||
limit: option(z.coerce.number().optional(), {
|
||||
limit: option(z.coerce.number().int().min(1).optional(), {
|
||||
description: "Cap number of suggestions returned",
|
||||
}),
|
||||
format: option(z.enum(["json", "table", "plain"]).default("json"), {
|
||||
|
||||
Reference in New Issue
Block a user