{"record":{"id":"0dd2a3e738328b4a","repo":"Budibase/budibase","slug":"project-trimmed-not-found","errorCode":null,"errorMessage":"Project '${trimmed}' not found.","messagePattern":"Project '(.+?)' not found\\.","errorType":"http","errorClass":"HTTPError","httpStatus":404,"severity":"error","filePath":"packages/server/src/utilities/projects.ts","lineNumber":23,"sourceCode":"const validateProjectIds = (projectIds?: string[] | null) => {\n  if (projectIds === undefined) {\n    return undefined\n  }\n  if (projectIds === null) {\n    throw new HTTPError(\"Project ids must be an array.\", 400)\n  }\n\n  if (!Array.isArray(projectIds)) {\n    throw new HTTPError(\"Project ids must be an array.\", 400)\n  }\n\n  return projectIds.map(projectId => {\n    if (typeof projectId !== \"string\" || !projectId.trim()) {\n      throw new HTTPError(\"Project ids must be non-empty strings.\", 400)\n    }\n    const trimmed = projectId.trim()\n    if (!trimmed.startsWith(prefixed(DocumentType.PROJECT))) {\n      throw new HTTPError(`Project '${trimmed}' not found.`, 404)\n    }\n    return trimmed\n  })\n}\n\nconst dedupeProjectIds = (projectIds: string[]) => {\n  const deduped = Array.from(new Set(projectIds))\n  return deduped.length ? deduped : undefined\n}\n\nexport const resolveProjectIds = async (projectIds?: string[] | null) => {\n  const validated = validateProjectIds(projectIds)\n  if (!validated?.length) {\n    return undefined\n  }\n\n  const ids = dedupeProjectIds(validated)\n  if (!ids?.length) {","sourceCodeStart":5,"sourceCodeEnd":41,"githubUrl":"https://github.com/Budibase/budibase/blob/a81a902e9a8fe55b467d106765f6638f12e35c49/packages/server/src/utilities/projects.ts#L5-L41","documentation":"Error \"Project '${trimmed}' not found.\" thrown in Budibase/budibase.","triggerScenarios":"Thrown at packages/server/src/utilities/projects.ts:23 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a81a902e9a8fe55b467d106765f6638f12e35c49","analyzedAt":"2026-08-29T01:03:10.972Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}