@issue-linker/core
Version:
Core library for issue-linker functionality
96 lines • 2.79 kB
JavaScript
// Factory functions for creating CheckMessageResult objects
/**
* Create a result for when text is excluded from validation
*/
export function createExcludedResult(input, excludePattern) {
const message = excludePattern
? `Skipped: Matched exclude pattern "${excludePattern}"`
: "Skipped: Matched exclude pattern";
return {
success: true,
message,
reason: "excluded",
input,
};
}
/**
* Create a result for when validation is skipped due to skip marker
*/
export function createSkippedResult(input, skipMarker) {
const message = skipMarker
? `Skipped: Contains ${skipMarker} marker`
: "Skipped: Contains skip marker";
return {
success: true,
message,
reason: "skipped",
input,
};
}
/**
* Create a result for when no issue numbers are found
*/
export function createNoIssuesResult(input) {
return {
success: false,
message: "No issue number found in text",
reason: "no-issues",
input,
};
}
/**
* Create a result for when valid issues are found
*/
export function createValidResult(issues, input) {
return {
success: true,
message: `Valid issues: #${issues.valid.join(", #")} in ${input.repo}`,
reason: "valid",
input,
issues,
};
}
/**
* Create a result for when invalid issues are found
*/
export function createInvalidResult(issues, input) {
// Build detailed message
const parts = [];
if (issues.notFound.length > 0) {
parts.push(`Issues not found: #${issues.notFound.join(", #")}`);
}
if (issues.wrongState.length > 0) {
// Build detailed wrong state message
const wrongStateMessages = issues.wrongState.map((issue) => {
const expected = input.issueStatus === "all" ? "" : ` (expected: ${input.issueStatus})`;
return `#${issue.number} is ${issue.actualState}${expected}`;
});
parts.push(`Wrong state: ${wrongStateMessages.join(", ")}`);
}
const message = `${parts.join("; ")} in ${input.repo}`;
return {
success: false,
message,
reason: "invalid-issues",
input,
issues,
};
}
/**
* Create a result for when an error occurs
*/
export function createErrorResult(error, input) {
const errorInfo = {
type: error instanceof Error ? error.constructor.name : "UnknownError",
message: error instanceof Error ? error.message : String(error),
...(error instanceof Error && error.stack && { stack: error.stack }),
};
return {
success: false,
message: errorInfo.message,
reason: "error",
input,
error: errorInfo,
};
}
//# sourceMappingURL=result-factory.js.map