UNPKG

@amisa/style-plugin

Version:

Transfom css's file to java scripts style element and js to script element

84 lines (81 loc) 3.45 kB
const fs = require("fs"); function AmisaCopy(fileName, code, replaceCallBackFunction, typeIsModule) { const type = typeIsModule ? 'type="module"' : "", replaced = replaceCallBackFunction ? replaceCallBackFunction(code) : code, freamworkPath = "/Volumes/Users/H.M/source/repos/Hamed228/Amisa.Framework/AmisaMe/AmisaMe.Component/AmisaPackages"; fs.existsSync(freamworkPath) ? fs.writeFileSync( `${freamworkPath}/${fileName}.razor`, `<script ${type} //* ${fileName} *// > //Hi this is amisa, www.amisa.co www.amisa.me emil: amisa@ieee.org ${replaced.replace(/@{1}/gm, "@@")} <\/script>` ) : console.log("razor no", fileName); const mono = "../../../amisa.mono/public", sub = "../../../amisa.sub.mono/public"; function copyMonos(path) { fs.existsSync(path) ? fs.writeFileSync( `${path}/${fileName}.js`, `//Hi this is amisa, www.amisa.co www.amisa.me ${fileName} emia: amisa@ieee.org ${replaced}` ) : console.log(fileName, "no"); } copyMonos(mono), copyMonos(sub); } function AmisaWriteBundle(options, bundle, replaceCallBackFunction, typeIsModule) { for (const property in bundle) { const { fileName, code } = bundle[property]; fileName.endsWith(".mjs") && AmisaCopy( fileName.replace(".mjs", ""), code, replaceCallBackFunction, typeof typeIsModule == "boolean" ? typeIsModule : !0 ); } } const regex$1 = /=\s*amisa.createStyleElement\(['|"].*\.css['|"]\)/g; function AmisaCssTransformStylePlugin() { return { name: "amisa-css-plugin", // Name of the plugin transform(code, id) { let m; if ((m = regex$1.exec(code)) !== null) { const cssFilePath = getCssFileName(m, id), cssContent = getCssContent(cssFilePath); return code.replace(regex$1, `= amisa.getAmisaStyleElement(\`${cssContent}\`);`) + " "; } else return console.error(id), code; } }; } function getCssFileName(m, path) { const fileName = m[0].replace(/=\s*amisa.createStyleElement\(['|"]\.\//, "").replace(/=\s*amisa.createStyleElement\(['|"]/, "").replace(/["|']\)/, ""), folderSrc = require("path").dirname(path).replace(/\/dist/, ""); return require("path").resolve(folderSrc, fileName); } function getCssContent(cssFilePath) { return require("fs").readFileSync(cssFilePath).toString().replace(/\n\s*/g, " "); } const regex = /=\s*amisa.amisaCreateScriptElement\(['|"].*\.js['|"]\)/g; function AmisaJsTransformScriptPlugin() { return { name: "amisa-js-plugin", // Name of the plugin transform(code, id) { let m; return !id.includes("/dist/") && (m = regex.exec(code)) !== null ? replaceIt(m, code, id) : code; } }; } function replaceIt(m, code, path) { const jsFilePath = getJsFileName(m, path), jsContent = getJsContent(jsFilePath), amisaMethod = ""; return code.replace(regex, `= amisa.getAmisaScriptElement(\`${jsContent}\`);`) + ` ` + amisaMethod + ` `; } function getJsFileName(m, path) { const fileName = m[0].replace(/=\s*amisa.amisaCreateScriptElement\(['|"]\.\//, "").replace(/=\s*amisa.amisaCreateScriptElement\(['|"]/, "").replace(/["|']\)/, ""), folder = require("path").dirname(path); return require("path").resolve(folder, fileName); } function getJsContent(jsFilePath) { return require("fs").readFileSync(jsFilePath).toString().replace(/\n\s*/g, " "); } export { AmisaCssTransformStylePlugin, AmisaJsTransformScriptPlugin, AmisaWriteBundle };