UNPKG

esbuild-yaml

Version:

An esbuild plugin, that allows imports of YAML files

76 lines (68 loc) 2.47 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var promises = require('fs/promises'); var path = require('path'); var yaml = require('yaml'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var path__default = /*#__PURE__*/_interopDefault(path); // src/index.ts function YAMLPlugin(options = {}) { const type = options.type || "single"; const parserOptions = options.parserOptions || {}; return { name: "yaml", setup(build) { build.onResolve({ filter: /\.ya?ml$/ }, (args) => { if (args.resolveDir === "") return; return { path: path__default.default.isAbsolute(args.path) ? args.path : path__default.default.join(args.resolveDir, args.path), namespace: "yaml" }; }); build.onLoad({ filter: /\.ya?ml$/, namespace: "yaml" }, async (args) => { const yamlContent = await promises.readFile(args.path, "utf8"); let parsed = {}; if (type === "multi") { parsed = yaml.parseAllDocuments(yamlContent, parserOptions).map((doc) => doc.toJSON()); } else { parsed = yaml.parse(yamlContent, parserOptions); } let content = parsed; if (options.transform != null && typeof options.transform === "function") { const transformed = options.transform(content, args.path); if (transformed != null) { content = transformed; } } const code = `var data = ${JSON.stringify(content, null, 2)}; `; return { loader: "js", contents: `${code} export default data;` }; }); build.onResolve({ filter: /\.ya?ml\?raw$/ }, (args) => { if (args.resolveDir === "") return; if (args.path.endsWith("?raw")) { args.path = args.path.slice(0, -4); } return { path: path__default.default.isAbsolute(args.path) ? args.path : path__default.default.join(args.resolveDir, args.path), namespace: "yaml-raw" }; }); build.onLoad({ filter: /\.ya?ml$/, namespace: "yaml-raw" }, async (args) => { const yamlContent = await promises.readFile(args.path, "utf8"); return { loader: "text", contents: yamlContent }; }); } }; } var index_default = YAMLPlugin; module.exports = module.exports.default; exports.YAMLPlugin = YAMLPlugin; exports.default = index_default;