@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
JavaScript
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
};