
const fs = require('fs');
const path = require('path');
const qs = require('qs');
// const {getOptions} = require('loader-utils');


const hasAddDiv = new Set();
const replaceDomTag = require('./replace-dom-tag');

module.exports = function blSappRenderPreLoader (source) {
    // const opts = getOptions()
  
    const vueFileContent = fs.readFileSync(this.resourcePath, 'utf8');


    const query = qs.parse(this.resourceQuery);

    if (query.type === 'template') {
        // 将页面中的a标签，替换为span，避免点击a标签后，页面进行跳转。
        source = replaceDomTag(source, 'a', 'span', {
            resourcePath: this.resourcePath,
            warningText: '检测到使用了 a 标签，会自动被替换成 span。请使用 bl api 进行路由跳转！'
        });
    }


    if (vueFileContent.substr(0, 21) === '<!-- webview only -->'
      || hasAddDiv.has(this.resource) 
      || /pages[/\\]([^\\^/]+)[/\\]index\.vue$/.test(this.resourcePath)
      || query.type !== 'template') {
        return source;
    }

    hasAddDiv.add(this.resource);
  
    // uni-app 需要在 vue template 外层再包裹一层 div，确保dom 层级正确
    return `<div>${source}</div>`;
};