async resolveIdImpl (container, id, parentFilePath, options = {}) {
        options.isEntry = options.isEntry || false;
        options.custom = options.hasOwnProperty('custom')? options.custom : {};

        let __plugins = container.__plugins.filter(p => !this.resolveIdSkips.contains(p.execute, parentFilePath, id));
        let hr = await callAsyncFirstHook(/** @type {PluginContainer} */ ({ __plugins, __config: container.__config }), 'resolveId', [id, parentFilePath, options]);

        if (hr === false || isExternal(container.__config, id)) {
            return {
                id,
                external: true
            };
        }

        if (typeof hr === 'string') {
            hr = {
                id: path.isAbsolute(hr)? path.normalize(hr) : hr,
                external: false
            };
        }

        if (!hr) {
            let parent = parentFilePath || path.resolve(process.cwd(), '__entry');
            hr = {
                id: path.normalize(resolvePath(id, parent)),
                external: false
            };

            if (!fs.existsSync(hr.id)) {
                hr.external = true;
                hr.id = id;
            }
        }

        handleMetaProperty(container, hr.id, hr.meta);

        return hr;
    }
@param {PluginContainer} container 
@param {string} id 
@param {string} parentFilePath 
@return {Promise<RollupResolveIdResult>}