UNPKG

@podlite/schema

Version:

AST tools for Podlite markup language

169 lines 8.28 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.version = exports.Writer = exports.toHtml = exports.parse = exports.toTree = exports.isValidateError = exports.validateAst = exports.validateAstTree = exports.validatePodliteAst = exports.getTextContentFromNode = exports.toAst = exports.frozenIds = exports.cleanIds = exports.podlitePluggable = exports.toAnyRules = exports.pluginCleanLocation = exports.makeAttrs = exports.toAny = exports.isSemanticBlock = exports.isNamedBlock = exports.makeTransformer = exports.makeInterator = void 0; const ajv_1 = __importDefault(require("ajv")); const pointer = __importStar(require("json-pointer")); const jsonShemes = __importStar(require("../schema")); const ast_inerator_1 = require("./ast-inerator"); __exportStar(require("./types"), exports); __exportStar(require("./blocks-helpers"), exports); __exportStar(require("./query-helpers"), exports); __exportStar(require("./ast-helpers"), exports); __exportStar(require("./helpers/handlers"), exports); var ast_inerator_2 = require("./ast-inerator"); Object.defineProperty(exports, "makeInterator", { enumerable: true, get: function () { return ast_inerator_2.makeInterator; } }); var makeTransformer_1 = require("./helpers/makeTransformer"); Object.defineProperty(exports, "makeTransformer", { enumerable: true, get: function () { return makeTransformer_1.makeTransformer; } }); Object.defineProperty(exports, "isNamedBlock", { enumerable: true, get: function () { return makeTransformer_1.isNamedBlock; } }); Object.defineProperty(exports, "isSemanticBlock", { enumerable: true, get: function () { return makeTransformer_1.isSemanticBlock; } }); var exportAny_1 = require("./exportAny"); Object.defineProperty(exports, "toAny", { enumerable: true, get: function () { return exportAny_1.toAny; } }); var config_1 = require("./helpers/config"); Object.defineProperty(exports, "makeAttrs", { enumerable: true, get: function () { return config_1.makeAttrs; } }); var plugin_clean_location_1 = require("./plugin-clean-location"); Object.defineProperty(exports, "pluginCleanLocation", { enumerable: true, get: function () { return plugin_clean_location_1.pluginCleanLocation; } }); var plugins_1 = require("./helpers/plugins"); Object.defineProperty(exports, "toAnyRules", { enumerable: true, get: function () { return plugins_1.toAnyRules; } }); var pluggableParser_1 = require("./pluggableParser"); Object.defineProperty(exports, "podlitePluggable", { enumerable: true, get: function () { return pluggableParser_1.podlitePluggable; } }); Object.defineProperty(exports, "cleanIds", { enumerable: true, get: function () { return pluggableParser_1.cleanIds; } }); Object.defineProperty(exports, "frozenIds", { enumerable: true, get: function () { return pluggableParser_1.frozenIds; } }); const parser = __importStar(require("./grammar")); const plugin_vmargin_1 = __importDefault(require("./plugin-vmargin")); const plugin_formatting_codes_1 = __importDefault(require("./plugin-formatting-codes")); const plugin_items_1 = __importDefault(require("./plugin-items")); const plugin_heading_1 = __importDefault(require("./plugin-heading")); const plugin_group_defn_1 = __importDefault(require("./plugin-group-defn")); const plugin_group_items_1 = __importDefault(require("./plugin-group-items")); const plugin_defn_fill_term_1 = __importDefault(require("./plugin-defn-fill-term")); const plugin_tables_1 = __importDefault(require("./plugin-tables")); function toAst() { return {}; } exports.toAst = toAst; const ajv = new ajv_1.default({ strict: true, allowUnionTypes: true }); function getTextContentFromNode(node) { let text = ''; const rules = { ':text': node => { text += node.value; }, ':verbatim': node => { text += node.value; }, }; const transformer = (0, ast_inerator_1.makeInterator)(rules); const res = transformer(node, {}); return text; } exports.getTextContentFromNode = getTextContentFromNode; function validatePodliteAst(data) { return validateAst(data, 'PodliteDocument'); } exports.validatePodliteAst = validatePodliteAst; function validateAstTree(data) { return validateAst(data, 'AstTree'); } exports.validateAstTree = validateAstTree; function validateAst(data, Name = 'AstTree') { const AstTreeSchema = jsonShemes[Name]; if (!AstTreeSchema) { console.warn(`[validateAst] Can't exists ${Name} scheme.`); } const validate = ajv.compile(AstTreeSchema); if (validate(data)) { return []; } return validate.errors || []; } exports.validateAst = validateAst; function isValidateError(result, src) { if (result.length > 0) { // get most erorred dataPath let errors_by_path = {}; const reducer = (acc, value) => { acc[value.dataPath] = (acc[value.dataPath] || 0) + 1; return acc; }; const pathMap = result.reduce(reducer, errors_by_path); const mostlyError = (Object.keys(pathMap).sort((a, b) => pathMap[b] - pathMap[a]) || [])[0]; return pointer.get(src, mostlyError); } return undefined; } exports.isValidateError = isValidateError; function makeTree() { var plugins = []; chain.use = use; chain.parse = parse; chain.use(plugin_vmargin_1.default); chain.use(plugin_items_1.default); chain.use(plugin_heading_1.default); chain.use(plugin_defn_fill_term_1.default); chain.use(plugin_tables_1.default); chain.use(plugin_formatting_codes_1.default); // save order for the next two plugins chain.use(plugin_group_items_1.default); chain.use(plugin_group_defn_1.default); return chain; function chain() { return; } function use(plugin) { if (!['function'].includes(typeof plugin)) { throw plugin; } plugins.push(plugin); return chain; } function parse(src, opt = { skipChain: 0, podMode: 1 }) { let tree = parser.parse(src, { podMode: opt.podMode }); if (!opt.skipChain) { for (let i = 0; i < plugins.length; i++) { const plugin = plugins[i]; // init const visitor = plugin(opt); // process tree tree = visitor(tree); } } return tree; } } exports.toTree = makeTree; const parse = makeTree().parse; exports.parse = parse; var exportHtml_1 = require("./exportHtml"); Object.defineProperty(exports, "toHtml", { enumerable: true, get: function () { return __importDefault(exportHtml_1).default; } }); var writer_1 = require("./writer"); Object.defineProperty(exports, "Writer", { enumerable: true, get: function () { return __importDefault(writer_1).default; } }); // Cannot be `import` as it's not under TS root dir // https://stackoverflow.com/questions/51070138/how-to-import-package-json-into-typescript-file-without-including-it-in-the-comp const { version: VERSION } = require('../package.json'); exports.version = VERSION; //# sourceMappingURL=index.js.map