public validate()

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
    }