"use strict";
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createImportRuleListener = void 0;
function createImportRuleListener(validateImport) {
    function _checkImport(node) {
        if (node && node.type === 'Literal' && typeof node.value === 'string') {
            validateImport(node, node.value);
        }
    }
    return {
        // import ??? from 'module'
        ImportDeclaration: (node) => {
            _checkImport(node.source);
        },
        // import('module').then(...) OR await import('module')
        ['CallExpression[callee.type="Import"][arguments.length=1] > Literal']: (node) => {
            _checkImport(node);
        },
        // import foo = ...
        ['TSImportEqualsDeclaration > TSExternalModuleReference > Literal']: (node) => {
            _checkImport(node);
        },
        // export ?? from 'module'
        ExportAllDeclaration: (node) => {
            _checkImport(node.source);
        },
        // export {foo} from 'module'
        ExportNamedDeclaration: (node) => {
            _checkImport(node.source);
        },
    };
}
exports.createImportRuleListener = createImportRuleListener;