foundry-dsa41-game/node_modules/sass-build/dist/transformers/json-theme-transformer.js

131 lines
4.7 KiB
JavaScript

var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var json_theme_transformer_exports = {};
__export(json_theme_transformer_exports, {
JsonThemeTransformer: () => JsonThemeTransformer
});
module.exports = __toCommonJS(json_theme_transformer_exports);
var import_fs = __toESM(require("fs"));
var import_path = __toESM(require("path"));
var import_glob = __toESM(require("glob"));
var import_lodash = __toESM(require("lodash"));
var import_utils = require("../utils");
const JsonThemeTransformer = {
transformFile,
transformGlob
};
function __jsonTransformer(jsonFile) {
const json = JSON.parse(import_fs.default.readFileSync(jsonFile, "utf-8"));
const sassContent = [];
let groups;
if (Array.isArray(json)) {
groups = json;
} else {
groups = json.groups || [];
}
groups.forEach((group) => {
if (typeof group.value === "string") {
let name = group.name;
if (name[0] !== "$") {
name = `$${name}`;
}
sassContent.push(`${name}: ${group.value};`);
return;
}
for (const varEntry of Object.entries(group.variables)) {
let name = varEntry[0].trim();
let value = varEntry[1];
if (typeof value !== "string") {
value = value.value;
}
if (name[0] !== "$") {
name = `$${name}`;
}
sassContent.push(`${name}: ${value};`);
}
});
return sassContent.join("\n");
}
function transformFile(file, outFile, options) {
const _cwd = options.cwd;
const transformerOptions = options.transformerOptions;
let header = transformerOptions.header || "";
let footer = transformerOptions.footer || "";
if (import_path.default.isAbsolute(file) === false) {
file = (0, import_utils.padCwd)(_cwd, file);
}
if (import_path.default.isAbsolute(outFile) === false) {
outFile = (0, import_utils.padCwd)(_cwd, outFile);
}
const json = JSON.parse(import_fs.default.readFileSync(file, "utf-8"));
if (!Array.isArray(json)) {
if (json.private === true) {
import_utils.logger.info("transform", "Skipping %s", (0, import_utils.trimCwd)(import_utils.CWD, file));
return;
}
if (typeof header === "function") {
header = header(file, json);
}
if (typeof footer === "function") {
footer = footer(file, json);
}
}
import_utils.logger.info(
"transform",
"%s => %s",
(0, import_utils.trimCwd)(import_utils.CWD, file),
(0, import_utils.trimCwd)(import_utils.CWD, outFile)
);
const result = `${header}${__jsonTransformer(file)}${footer}`;
(0, import_utils.writeFile)(outFile, result);
}
function transformGlob(fileOrGlob, output, options) {
const _cwd = options.cwd;
if ((0, import_utils.isString)(fileOrGlob)) {
import_utils.logger.warn("config > transform > transformGlob", "Prefer string[] for fileOrGlob option.");
fileOrGlob = [fileOrGlob];
}
output = import_lodash.default.defaults({}, output, { path: "dist", filename: "[name].scss" });
if (import_path.default.isAbsolute(output.path) === false) {
output.path = (0, import_utils.padCwd)(_cwd, output.path);
}
fileOrGlob.forEach((fileOrGlob2) => {
if (import_path.default.isAbsolute(fileOrGlob2) === false) {
fileOrGlob2 = (0, import_utils.padCwd)(_cwd, fileOrGlob2);
}
fileOrGlob2 = fileOrGlob2.split(import_path.default.sep).join(import_path.default.posix.sep);
import_glob.default.sync(fileOrGlob2).forEach((file) => {
const outFile = import_path.default.resolve(
output.path,
(0, import_utils.replacePathVariables)(output.filename, file)
);
transformFile(file, outFile, options);
});
});
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
JsonThemeTransformer
});