in src/shared/sam/debugger/awsSamDebugConfigurationValidator.ts [39:93]
public validate(config: AwsSamDebuggerConfiguration, resolveVars?: boolean): ValidationResult {
let rv: ValidationResult = { isValid: false, message: undefined }
if (resolveVars) {
config = doTraverseAndReplace(config, this.workspaceFolder?.uri.fsPath ?? '')
}
if (!config.request) {
rv.message = localize(
'AWS.sam.debugger.missingField',
'Missing required field "{0}" in debug config',
'request'
)
} else if (!AWS_SAM_DEBUG_REQUEST_TYPES.includes(config.request)) {
rv.message = localize(
'AWS.sam.debugger.invalidRequest',
'Debug Configuration has an unsupported request type. Supported types: {0}',
AWS_SAM_DEBUG_REQUEST_TYPES.join(', ')
)
} else if (!AWS_SAM_DEBUG_TARGET_TYPES.includes(config.invokeTarget.target)) {
rv.message = localize(
'AWS.sam.debugger.invalidTarget',
'Debug Configuration has an unsupported target type. Supported types: {0}',
AWS_SAM_DEBUG_TARGET_TYPES.join(', ')
)
} else if (
config.invokeTarget.target === TEMPLATE_TARGET_TYPE ||
config.invokeTarget.target === API_TARGET_TYPE
) {
let cfnTemplate
if (config.invokeTarget.templatePath) {
const fullpath = tryGetAbsolutePath(this.workspaceFolder, config.invokeTarget.templatePath)
// Normalize to absolute path for use in the runner.
config.invokeTarget.templatePath = fullpath
cfnTemplate = globals.templateRegistry.getRegisteredItem(fullpath)?.item
}
rv = this.validateTemplateConfig(config, config.invokeTarget.templatePath, cfnTemplate)
} else if (config.invokeTarget.target === CODE_TARGET_TYPE) {
rv = this.validateCodeConfig(config)
}
// Validate additional properties of API target type
if (rv.isValid && config.invokeTarget.target === API_TARGET_TYPE) {
rv = this.validateApiConfig(config)
}
if (rv.isValid) {
rv = this.validateLambda(config)
}
if (!rv.isValid && !rv.message) {
// Missing message, should never happen.
throw Error(`invalid debug-config: ${rv.message}`)
}
return rv
}