in packages/synthetics-sdk-broken-links/src/options_func.ts [233:335]
export function setDefaultOptions(
inputOptions: BrokenLinkCheckerOptions
): BrokenLinksResultV1_BrokenLinkCheckerOptions {
const defaultOptions: BrokenLinksResultV1_BrokenLinkCheckerOptions = {
origin_uri: '',
link_limit: 10,
query_selector_all: 'a',
get_attributes: ['href'],
link_order: BrokenLinksResultV1_BrokenLinkCheckerOptions_LinkOrder.FIRST_N,
link_timeout_millis: 30000,
max_retries: 0,
wait_for_selector: '',
per_link_options: {},
total_synthetic_timeout_millis: 60000,
screenshot_options: {
capture_condition: ApiCaptureCondition.NONE,
storage_location: '',
},
};
const outputOptions: BrokenLinksResultV1_BrokenLinkCheckerOptions =
{} as BrokenLinksResultV1_BrokenLinkCheckerOptions;
const optionsKeys = Object.keys(defaultOptions) as Array<
keyof BrokenLinksResultV1_BrokenLinkCheckerOptions
>;
for (const optionName of optionsKeys) {
// per_link_options and linkorder are handled below
if (
optionName === 'per_link_options' ||
optionName === 'link_order' ||
optionName === 'screenshot_options'
)
continue;
if (
!(optionName in inputOptions) ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(inputOptions as any)[optionName] === undefined
) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(outputOptions as any)[optionName] = defaultOptions[optionName];
} else {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(outputOptions as any)[optionName] = inputOptions[optionName];
}
}
// converting inputOptions.screenshot_options to
// BrokenLinksResultV1_BrokenLinkCheckerOptions_ScreenshotOptions
outputOptions.screenshot_options =
{} as BrokenLinksResultV1_BrokenLinkCheckerOptions_ScreenshotOptions;
if (inputOptions.screenshot_options?.capture_condition) {
outputOptions.screenshot_options!.capture_condition =
ApiCaptureCondition[inputOptions.screenshot_options.capture_condition];
} else {
outputOptions.screenshot_options!.capture_condition =
defaultOptions.screenshot_options!.capture_condition;
}
if (inputOptions.screenshot_options?.storage_location) {
outputOptions.screenshot_options.storage_location =
inputOptions.screenshot_options!.storage_location!;
} else {
outputOptions.screenshot_options.storage_location =
defaultOptions.screenshot_options!.storage_location!;
}
// converting inputOptions.link_order, type: LinkOrder to
// outputOptions.link_order, type BrokenLinksResultV1_BrokenLinkCheckerOptions_LinkOrder
if (inputOptions.link_order) {
outputOptions.link_order =
BrokenLinksResultV1_BrokenLinkCheckerOptions_LinkOrder[
inputOptions.link_order
];
} else {
outputOptions.link_order = defaultOptions.link_order;
}
// Convert `inputOptions.per_link_options`, type: {[key: string]: PerLinkOption}
// to `outputOptions.per_links_options`, type: {[key: string]: BrokenLinksResultV1_BrokenLinkCheckerOptions_PerLinkOption}
const perLinkOptions: {
[key: string]: BrokenLinksResultV1_BrokenLinkCheckerOptions_PerLinkOption;
} = {};
for (const [uri, perLinkOption] of Object.entries(
inputOptions.per_link_options || {}
)) {
const expected_status_code = inputExpectedStatusToResponseStatusCode(
perLinkOption.expected_status_code
);
const convertedPerLinkOption: BrokenLinksResultV1_BrokenLinkCheckerOptions_PerLinkOption =
{
expected_status_code: expected_status_code,
link_timeout_millis:
perLinkOption.link_timeout_millis ||
outputOptions.link_timeout_millis,
};
perLinkOptions[uri] = convertedPerLinkOption;
}
outputOptions.per_link_options = perLinkOptions;
return outputOptions;
}