skypager-project
Version:
skypager project framework
1,552 lines (1,223 loc) • 53.2 kB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmory imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmory exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 137);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/document-types/babel-es6.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.decorate = exports.transpile = exports.toAST = exports.compile = exports.testDocument = exports.rules = exports.docblockParser = undefined;
var _assign = __webpack_require__(1);
var _assign2 = _interopRequireDefault(_assign);
var _pathMatcher = __webpack_require__(7);
var _pathMatcher2 = _interopRequireDefault(_pathMatcher);
var _pick = __webpack_require__(33);
var _pick2 = _interopRequireDefault(_pick);
var _omit = __webpack_require__(17);
var _omit2 = _interopRequireDefault(_omit);
var _mapValues = __webpack_require__(21);
var _mapValues2 = _interopRequireDefault(_mapValues);
var _omitBy = __webpack_require__(69);
var _omitBy2 = _interopRequireDefault(_omitBy);
var _isEmpty = __webpack_require__(32);
var _isEmpty2 = _interopRequireDefault(_isEmpty);
var _docblockParser = __webpack_require__(19);
var _docblockParser2 = _interopRequireDefault(_docblockParser);
var _entity = __webpack_require__(34);
var _entity2 = _interopRequireDefault(_entity);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var docblockParser = exports.docblockParser = (0, _docblockParser2.default)({
tags: {
name: _docblockParser2.default.singleParameterTag
}
});
var rules = exports.rules = [/\.(js|es6|jsx)$/];
var testDocument = exports.testDocument = function testDocument(doc) {
return typeof rules.find(function (rule) {
return (0, _pathMatcher2.default)(rule, doc.fileBaseName);
}) !== 'undefined';
};
var compile = exports.compile = function compile(code, options) {
return transpile(code, options).code;
};
var toAST = exports.toAST = function toAST(code, options) {
return __webpack_require__(27).transform(code, babelOptions(options)).ast;
};
var transpile = exports.transpile = function transpile() {
var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return __webpack_require__(27).transform(code, babelOptions(options));
};
var decorate = exports.decorate = function decorate(doc) {
(0, _assign2.default)(doc, {
toEntity: function toEntity() {
var exportables = doc.exportables;
var frontmatter = exportables.frontmatter;
return (0, _assign2.default)({ id: doc.id }, frontmatter, {
imports: exportables.imports,
exports: exportables.exports
});
},
/**
multilineTilTag
multilineTilEmptyLineOrTag
booleanTag
singleParameterTag
multiParameterTag(delimiter)
*/
docblockParser: function docblockParser() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var parser = (0, _docblockParser2.default)({
tags: (0, _assign2.default)({
name: _docblockParser2.default.singleParameterTag
}, options)
});
return parser.parse;
},
createExportable: function createExportable() {
var exportable = (0, _entity2.default)({
id: doc.id,
file: (0, _omit2.default)(doc.file, 'contents')
});
exportable.lazy('babel', function () {
return doc.transformBabel();
});
exportable.lazy('ast', function () {
return exportable.babel.ast;
});
exportable.lazy('code', function () {
return exportable.babel.code;
});
exportable.lazy('meta', function () {
return exportable.babel.metadata;
});
exportable.lazy('commentNodes', function () {
return exportable.get('ast.comments', []);
});
exportable.lazy('imports', function () {
return exportable.get('babel.metadata.modules.imports', []).map(function (m) {
return m.source;
});
}, true);
exportable.lazy('exports', function () {
return exportable.get('babel.metadata.modules.exports.exported', []);
}, true);
exportable.getter('contents', function () {
return doc.readFile().getFileContents();
});
exportable.lazy('frontmatter', function () {
try {
var result = docblockParser.parse(exportable.get('ast.comments[0].value', "/**\n**/"));
var _result$tags = result.tags,
tags = _result$tags === undefined ? {} : _result$tags,
_result$text = result.text,
text = _result$text === undefined ? '' : _result$text;
var values = (0, _mapValues2.default)((0, _assign2.default)({ text: text, id: doc.id }, tags), function (v) {
return typeof v === 'string' ? v.trim() : v;
});
return (0, _omitBy2.default)(values, function (v) {
return (0, _isEmpty2.default)(v);
});
} catch (error) {
return {};
}
}, true);
return exportable;
},
readFrontmatter: function readFrontmatter() {
return doc.exportables.frontmatter;
},
transformBabel: function transformBabel(options) {
options = options || doc.project.babelRc || { presets: ['skypager'] };
var code = options.code || doc.file.contents.toString();
return __webpack_require__(27).transform(code, babelOptions(options));
}
});
doc.lazy('exportables', function () {
return doc.createExportable();
});
return doc;
};
exports.default = decorate;
var babelOptions = function babelOptions(options) {
return (0, _pick2.default)(options, "filename", "filenameRelative", "presets", "plugins", "parserOpts", "generatorOpts", "highlightCode", "only", "ignore", "auxiliaryCommentBefore", "auxiliaryCommentAfter", "sourceMaps", "inputSourceMap", "sourceMapTarget", "sourceFileName", "sourceRoot", "moduleRoot", "moduleIds", "moduleId", "getModuleId", "resolveModuleSource", "code", "no-babelrc", "ast", "compact", "minified", "comments", "shouldPrintComment", "env", "retainLines", "extends");
};
/***/ },
/***/ "./src/document-types/markdown.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.decorate = exports.testDocument = exports.toAST = exports.compile = exports.getUtils = exports.getTransforms = exports.transformPresets = exports.rules = undefined;
var _typeof2 = __webpack_require__(23);
var _typeof3 = _interopRequireDefault(_typeof2);
var _toConsumableArray2 = __webpack_require__(5);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _extends2 = __webpack_require__(0);
var _extends3 = _interopRequireDefault(_extends2);
var _promise = __webpack_require__(6);
var _promise2 = _interopRequireDefault(_promise);
var _defineEnumerableProperties2 = __webpack_require__(73);
var _defineEnumerableProperties3 = _interopRequireDefault(_defineEnumerableProperties2);
var _assign = __webpack_require__(1);
var _assign2 = _interopRequireDefault(_assign);
var _keys = __webpack_require__(13);
var _keys2 = _interopRequireDefault(_keys);
var _jsYaml = __webpack_require__(47);
var _jsYaml2 = _interopRequireDefault(_jsYaml);
var _markdown2 = __webpack_require__("./src/transformers/markdown.js");
var _markdown3 = _interopRequireDefault(_markdown2);
var _pathMatcher = __webpack_require__(7);
var _pathMatcher2 = _interopRequireDefault(_pathMatcher);
var _string = __webpack_require__(15);
var _omit = __webpack_require__(17);
var _omit2 = _interopRequireDefault(_omit);
var _babelEs = __webpack_require__("./src/document-types/babel-es6.js");
var _lodash = __webpack_require__(35);
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var rules = exports.rules = [/\.md$/];
var transformPresets = exports.transformPresets = function transformPresets() {
return {
markdown: (0, _keys2.default)(_markdown2.profiles)
};
};
var getTransforms = exports.getTransforms = function getTransforms() {
return {
markdown: __webpack_require__("./src/transformers/markdown.js").default
};
};
var getUtils = exports.getUtils = function getUtils() {
var loaders = (0, _markdown2.utilLoaders)();
return (0, _keys2.default)(loaders).reduce(function (memo, key) {
var _Object$assign2, _mutatorMap;
return (0, _assign2.default)(memo, (_Object$assign2 = {}, _mutatorMap = {}, _mutatorMap[key] = _mutatorMap[key] || {}, _mutatorMap[key].get = function () {
return loaders[key]();
}, (0, _defineEnumerableProperties3.default)(_Object$assign2, _mutatorMap), _Object$assign2));
}, {});
};
var compile = exports.compile = function compile(contents) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var profile = options.profile || 'standard';
var html = 'html';
try {
var ast = toAST(contents, {
profile: profile
});
return (0, _markdown3.default)({ profile: 'html' }).stringify(ast);
} catch (error) {
var stack = ["```", error.stack, "```"].join("\n");
return (0, _markdown3.default)({ profile: 'html' }).stringify(toAST('# Error\n\n' + error.message + '\n\n' + stack + '\n'));
}
};
var toAST = exports.toAST = function toAST(contents, options) {
var profile = options.profile || 'standard';
try {
return (0, _markdown3.default)(profile, options).parse(contents);
} catch (error) {
return (0, _markdown3.default)(profile, options).parse('# Error\n\n' + error.message + '\n\n' + createBlock(error.stack) + '\n## Contents\n' + createBlock(contents));
}
};
var testDocument = exports.testDocument = function testDocument(doc) {
return typeof rules.find(function (rule) {
return (0, _pathMatcher2.default)(rule, doc.fileBaseName);
}) !== 'undefined';
};
var decorate = exports.decorate = function decorate(doc) {
doc.lazy('exportables', function () {
return doc.createExportable();
});
doc.lazy('exports', function () {
return doc.createExportable();
});
(0, _assign2.default)(doc, {
stringify: function stringify() {
return this.markdown('stringify', {}).stringify(doc.ast);
},
toCode: function toCode() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var codeBlocks = doc.compileCodeBlocks({ keyBy: 'accessor' });
return codeBlocks.mapValues(function (block, id) {
return ('\n // ' + block.docPath + ' at ' + block.index + '\n ' + block.value + '\n ').trim();
}).values().join("\n\n");
},
toModule: function toModule() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return doc.project.createModule(doc.toCode(), options);
},
toEntity: function toEntity() {
var selectorMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var obj = doc.exportables;
var frontmatter = obj.frontmatter;
var instance = (0, _assign2.default)({}, obj, frontmatter);
if (_lodash2.default.isEmpty(selectorMap)) {
(0, _assign2.default)(instance, doc.se);
}
},
transformWith: function transformWith(transformerFn) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var doc = this;
transformerFn.call(doc, doc, options);
return doc;
},
createExportable: function createExportable() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var html = doc.markdown('html', options);
var source = typeof options.transform === 'function' ? doc.transformWith(options.transform, options) || doc : doc;
var contents = source.contents || source.result('file.contents', function () {
return doc.readFile().get('file.contents', '');
});
var exportable = (0, _assign2.default)({}, doc.frontmatter, {
id: source.id,
get contents() {
return contents;
},
get frontmatter() {
return doc.frontmatter;
},
get ast() {
return source.ast;
},
get file() {
return (0, _omit2.default)(doc.file, 'contents');
},
get html() {
return doc.remarkHTML({
ast: source.renderAST || source.ast
});
}
});
return exportable;
},
compileCodeBlocks: function compileCodeBlocks() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var babelRc = doc.result('project.babelRc', { presets: ['skypager'], plugins: ['transform-decorators-legacy'] });
return doc.selectChain('code-blocks', options).mapValues(function (nodes) {
return nodes.map(function (node) {
var result = void 0;
try {
result = (0, _babelEs.transpile)(node.value, babelRc);
} catch (error) {
result = { error: error, code: '', metadata: {} };
}
(0, _assign2.default)(node, {
run: function run() {
if (result.error) {
return _promise2.default.resolve((0, _assign2.default)(node, { error: error }));
}
return doc.asyncRunner(result.code)().then(function (result) {
return (0, _assign2.default)(node, {
get result() {
return typeof result.value === 'function' ? result.value() : result;
},
inspectResult: function inspectResult() {
return __webpack_require__(78).inspect(node.result);
}
});
}).catch(function (error) {
return (0, _assign2.default)(node, { error: error });
});
},
get compiled() {
return result.code;
},
get metadata() {
return result.metadata;
}
});
return node;
});
});
},
updateFrontmatter: function updateFrontmatter() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var save = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var ast = doc.ast;
var frontmatter = doc.frontmatter;
if (!this.hasFrontmatter()) {
this.ast.children.unshift({});
}
frontmatter = (0, _assign2.default)(frontmatter, { updatedAt: Math.floor(new Date() / 1000) }, data);
var _doc$markdown$parse = doc.markdown().parse('---\n' + _jsYaml2.default.safeDump(frontmatter) + '\n---\n'),
children = _doc$markdown$parse.children;
this.ast.children[0] = children[0];
if (save) {
var contents = doc.contents = doc.file.contents = doc.stringify();
doc.project.writeFileSync(doc.path, contents);
}
return this;
},
hasFrontmatter: function hasFrontmatter() {
var zero = this.firstNode();
return zero && zero.type === 'yaml';
},
remarkAST: function remarkAST() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var profile = options.profile || 'standard';
var contents = options.contents || this.contents || this.getFileContents();
try {
var result = doc.markdown(profile, options).parse(contents);
return (0, _assign2.default)(result, {
children: result.children.map(function (node) {
return doc.decorateNode(node);
})
});
} catch (error) {
return doc.markdown(profile, options).parse('# Error\n\n' + error.message + '\n\n' + createBlock(error.stack) + '\n## Contents\n' + createBlock(contents));
}
},
remarkHTML: function remarkHTML() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var profile = options.profile || 'standard';
var parser = options.parser || doc.markdown(profile, options);
var contents = !options.ast && (options.contents || this.contents || this.getFileContents());
var ast = options.ast || parser.parse(contents);
var html = 'html';
try {
return doc.markdown(html, options).stringify(ast);
} catch (error) {
var stack = ["```", error.stack, "```"].join("\n");
return doc.markdown(html, {}).stringify(doc.markdown(profile, {}).parse('# Error\n\n' + error.message + '\n\n' + stack + '\n'));
}
},
markdown: function markdown() {
var profile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'parser';
var options = arguments[1];
return (0, _markdown3.default)((0, _extends3.default)({ profile: profile }, options));
},
createTree: function createTree() {
var headings = this.createHeadingsMap('headingPath');
var tree = {};
(0, _keys2.default)(headings).forEach(function (headingPath) {
var treePath = headingPath.split('/').map(function (v) {
return (0, _string.camelCase)((0, _string.kebabCase)(v));
});
_lodash2.default.set(tree, treePath, headings[headingPath]);
});
return tree;
},
createHeadingsMap: function createHeadingsMap() {
var keyBy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'accessor';
var stayChained = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var obj = this.chain.invoke('selectHeadingNodes').map(function (heading) {
heading.accessorMethod = (0, _string.camelCase)((0, _string.snakeCase)(heading.textContent()));
heading.headingPath = heading.getHeadingPath();
heading.accessors = heading.headingPath.split('/').map(function (i) {
return (0, _string.camelCase)((0, _string.snakeCase)(i));
});
heading.accessor = (0, _string.camelCase)((0, _string.snakeCase)(heading.headingPath.replace(/\//g, '_')));
return heading;
}).keyBy(keyBy);
return stayChained ? obj : obj.value();
},
stringifyNode: function stringifyNode(node) {
return __webpack_require__(14)(node);
},
getSourceForNode: function getSourceForNode(node) {
return __webpack_require__(18)(node);
},
decorateNode: function decorateNode(node) {
var _original = _lodash2.default.cloneDeep(node);
return (0, _assign2.default)(node, {
original: function original() {
return _original;
},
slug: function slug() {
return _lodash2.default.kebabCase(this.textContent());
},
textContent: function textContent() {
return doc.stringifyNode(node) || '';
},
getHeadingPath: function getHeadingPath() {
if (node.type !== 'heading') {
var prev = node.previousHeading();
return prev && prev.getHeadingPath();
}
var textContent = (0, _string.kebabCase)(node.textContent().toLowerCase());
var prevSuperior = node.getPreviousSuperior();
var previousPath = typeof prevSuperior === 'undefined' ? '' : prevSuperior.depth >= 2 && prevSuperior.getHeadingPath() || '';
return [previousPath, textContent].filter(function (i) {
return i && i.length > 0;
}).join('/');
},
headingRangeSync: function headingRangeSync() {
var alpha = node;
var bravo = node.getFinalHeading() || doc.finalNode();
return doc.getNodesBetweenPositions(alpha, bravo || 50000).value();
},
headingRange: function headingRange() {
var test = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : node.textContent();
var ast = doc.ast;
return new _promise2.default(function (resolve, reject) {
try {
__webpack_require__(16)(ast, test, function (startNode, nodes, endNode) {
resolve({ startNode: startNode, nodes: nodes, endNode: endNode });
});
} catch (error) {
reject(error);
}
});
},
getFinalHeading: function getFinalHeading() {
return doc.findAllNodesAfter(node, function (n) {
return n.type === 'heading' && n.depth <= node.depth;
})[0];
},
getPreviousSuperior: function getPreviousSuperior() {
return node && node.getNodesBefore && node.getNodesBefore(function (n) {
return n.type === 'heading' && n.depth < node.depth;
})[0];
},
previousHeading: function previousHeading() {
return node.getNodesBefore(function (n) {
return n.type === 'heading';
}).shift();
},
nextHeading: function nextHeading() {
return node.type === 'heading' ? node.getNextNode(function (n) {
return n.type === 'heading' && n.depth >= node.depth;
}) : node.getNextNode(function (n) {
return n.type === 'heading';
});
},
getNextNode: function getNextNode() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return doc.findNodeAfter.apply(doc, [node].concat((0, _toConsumableArray3.default)(args)));
},
getNodesAfter: function getNodesAfter() {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return doc.findAllNodesAfter.apply(doc, [node].concat((0, _toConsumableArray3.default)(args)));
},
getNodesBefore: function getNodesBefore() {
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
return doc.findAllNodesBefore.apply(doc, [node].concat((0, _toConsumableArray3.default)(args)));
},
selectChildren: function selectChildren(selector, testFn) {
if (node.type === 'heading') {
return node.selectHeadingChildren(selector, testFn);
}
var results = __webpack_require__(4)(node)(selector);
return typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
},
virtualAST: function virtualAST() {
return {
type: 'root',
children: node.headingRangeSync().map(function (n) {
return n.original();
}).map(function (n, i) {
n.index = i;
return n;
})
};
},
selectHeadingChildrenSync: function selectHeadingChildrenSync() {
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
var testFn = arguments[1];
var results = __webpack_require__(4)(node.virtualAST())(selector);
results = typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
return results;
},
selectHeadingChildren: function selectHeadingChildren() {
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
var testFn = arguments[1];
return node.headingRange().then(function (_ref) {
var nodes = _ref.nodes;
var base = {
type: 'root',
children: nodes
};
return __webpack_require__(4)(base)(selector);
}).then(function (results) {
return typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
});
}
});
},
headingRange: function headingRange(test) {
var ast = doc.ast;
return new _promise2.default(function (resolve, reject) {
try {
__webpack_require__(16)(ast, test, function (startNode, nodes, endNode) {
resolve({ startNode: startNode, nodes: nodes, endNode: endNode });
});
} catch (error) {
reject(error);
}
});
},
documentTitle: function documentTitle() {
var titleNode = doc.titleNode();
if (!titleNode) {
return this.get('frontmatter.title', doc.variations.humanized);
} else {
return titleNode.textContent();
}
},
yamlBlocks: function yamlBlocks() {
return this.selectNodes('code[lang="yaml"], yaml');
},
introParagraphs: function introParagraphs() {
var until = this.selectHeadingNodes()[1] || this.finalNode();
if (!until) {
return doc.selectNodes('paragraph');
} else {
var _children = until.getNodesBefore(function (node) {
return ['paragraph'].indexOf(node.type) >= 0;
}).reverse();
return __webpack_require__(14)({ type: 'root', children: _children });
}
},
wrapSections: function wrapSections() {
var _this = this;
var asts = this.sectionHeadingNodes().map(function (node) {
return _this.createAstFromSection(node, {
offset: false,
type: 'div',
data: {
hName: 'section',
hProperties: {
'data-section-path': node.getHeadingPath(),
'data-node-index': node.index
}
}
});
});
return asts;
},
createDocumentFromSection: function createDocumentFromSection(node) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _node$headingRange = node.headingRange(),
_node$headingRange$st = _node$headingRange.startNode,
startNode = _node$headingRange$st === undefined ? node : _node$headingRange$st,
endNode = _node$headingRange.endNode,
_node$headingRange$no = _node$headingRange.nodes,
nodes = _node$headingRange$no === undefined ? [] : _node$headingRange$no;
var ast = doc.createAstFromSection(startNode, nodes);
return {
id: doc.id + '/~/' + (node.headingPath || node.getHeadingPath()),
ast: ast,
contents: __webpack_require__(18)(ast)
};
},
createAstFromSection: function createAstFromSection(node, children) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var startDepth = node.depth;
var offset = options.offset !== false ? 1 - startDepth : 0;
children = children.map(function (node) {
return node.original ? node.original() : node;
}).map(function (child) {
return child.type === 'heading' ? (0, _assign2.default)(child, { depth: child.depth + offset }) : child;
});
var newAST = {
type: options.type || 'root',
children: children,
data: options.data || {}
};
return newAST;
},
withoutNodeIndexes: function withoutNodeIndexes() {
var indexList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var ast = this.ast;
return {
type: 'root',
children: children.filter(function (node) {
return indexList.indexOf(node.index) === -1;
}),
data: ast.data
};
},
replaceSection: function replaceSection(sectionNode, newNode) {
var _this2 = this;
return this.extractSectionNodes(sectionNode).then(function (nodes) {
return _this2.withoutNodeIndexes(nodes.map(function (n) {
return n.index;
}));
}).then(function (newAst) {
return newAst;
});
},
createContentNode: function createContentNode(tagName) {
var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var value = arguments[2];
var node = {
type: 'div',
data: {
hName: tagName || 'div',
hProperties: attributes
}
};
if (typeof value === 'string') {
node.value = value;
}
return node;
},
createAST: function createAST() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var newAST = {
type: options.type || 'root',
children: options.children || [],
data: options.data || {}
};
return newAST;
},
extractSectionNodes: function extractSectionNodes(node) {
return node.headingRange().then(function (_ref2) {
var nodes = _ref2.nodes;
return nodes;
});
},
inspectOutline: function inspectOutline() {
var headings = this.selectHeadingNodes();
return headings.map(function (headingNode) {
var content = '- ' + headingNode.textContent();
return _lodash2.default.padStart(content, content.length + (headingNode.depth - 1) * 2);
}).join("\n");
},
headingIndexes: function headingIndexes(depth) {
return this.chain.invoke('selectHeadingNodes', depth && '[depth=' + depth + ']').sortBy(function (node) {
return node.position ? node.position.start.line : node.index;
}).map(function (node) {
return node.index;
}).value();
},
references: function references() {
return (0, _assign2.default)({}, this.referenceImages(), this.referenceLinks());
},
referenceImages: function referenceImages() {
return this.chain.invoke('selectNodes', 'imageReference').keyBy('identifier').mapValues(function (refLink, identifier) {
var definitionNodes = doc.definitionNodes();
return (0, _assign2.default)(refLink, {
definitionNode: function definitionNode() {
return definitionNodes[identifier];
},
get definition() {
return _lodash2.default.pick(definitionNodes[identifier], 'title', 'url', 'identifier');
}
});
}).value();
},
imageNodes: function imageNodes() {
return this.selectNodes('image');
},
referenceLinks: function referenceLinks() {
return this.chain.invoke('selectNodes', 'linkReference').keyBy('identifier').mapValues(function (refLink, identifier) {
var definitionNodes = doc.definitionNodes();
return (0, _assign2.default)(refLink, {
definitionNode: function definitionNode() {
return definitionNodes[identifier];
},
get definition() {
return _lodash2.default.pick(definitionNodes[identifier], 'title', 'url', 'identifier');
}
});
}).value();
},
definitionNodes: function definitionNodes() {
return this.chain.invoke('selectNodes', 'definition').keyBy('identifier').value();
},
selectHeadingsByDepth: function selectHeadingsByDepth() {
var depth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
return this.selectHeadingNodes('[depth=' + depth + ']');
},
selectOneNode: function selectOneNode(selector) {
return __webpack_require__(4)(this.ast)(selector)[0];
},
selectNodes: function selectNodes() {
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
var testFn = arguments[1];
var results = __webpack_require__(4)(this.ast)(selector);
return typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
},
selectHeadingNodes: function selectHeadingNodes() {
var enhance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
return doc.selectNodes(('heading' + enhance).trim());
},
selectCodeBlocks: function selectCodeBlocks() {
var lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'javascript';
var enhance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return doc.selectNodes(('code[lang=' + lang + ']' + enhance).trim());
},
findNodeAfter: function findNodeAfter(node) {
for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
args[_key4 - 1] = arguments[_key4];
}
return __webpack_require__(24).apply(undefined, [this.ast, node].concat((0, _toConsumableArray3.default)(args)));
},
findAllNodesAfter: function findAllNodesAfter(node) {
for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
args[_key5 - 1] = arguments[_key5];
}
return __webpack_require__(25).apply(undefined, [this.ast, node].concat((0, _toConsumableArray3.default)(args)));
},
findAllNodesBefore: function findAllNodesBefore(node) {
for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {
args[_key6 - 1] = arguments[_key6];
}
return __webpack_require__(26).apply(undefined, [this.ast, node].concat((0, _toConsumableArray3.default)(args)));
},
nodesIndexedByPosition: function nodesIndexedByPosition() {
return doc.chain.get('ast.children').keyBy(function (node) {
return parseInt(node.position.start.line);
}).value();
},
introNodes: function introNodes() {
var f = this.selectNodes('heading');
var m = f.find(function (n) {
return n.depth > 1;
});
var nodes = m ? m.getNodesBefore().reverse() : this.ast.children;
return nodes.filter(function (n) {
return n.type !== 'yaml';
});
},
finalHeading: function finalHeading() {
return this.selectNodes('heading:last-of-type');
},
titleNode: function titleNode() {
return this.selectOneNode('heading[depth=1]') || this.selectOneNode('heading:first-of-type');
},
firstSectionHeadingNode: function firstSectionHeadingNode() {
return this.selectOneNode('heading[depth=2]');
},
sectionHeadingNodes: function sectionHeadingNodes() {
return this.selectNodes('heading[depth=2]');
},
articleHeadingNodes: function articleHeadingNodes() {
return this.selectNodes('heading[depth=3]');
},
subarticleHeadingNodes: function subarticleHeadingNodes() {
return this.selectNodes('heading').filter(function (n) {
return n.depth >= 4;
});
},
getNodesBetweenPositions: function getNodesBetweenPositions(alpha, bravo) {
var start = isNode(alpha) ? alpha.position.start.line : parseInt(alpha);
var end = isNode(bravo) ? bravo.position.start.line : parseInt(bravo);
return doc.chain.get('ast.children').filter(function (node) {
var line = node.position.start.line;
return line > start && line < end;
});
},
firstNode: function firstNode() {
return this.chain.get('ast.children', []).first().value();
},
finalNode: function finalNode() {
return this.chain.get('ast.children', []).last().value();
},
getAST: function getAST() {
var _ast = doc.remarkAST();
return (0, _assign2.default)(_ast, {
children: _ast.children.map(function (n, i) {
var d = doc.decorateNode(n);
d.index = i;
return d;
})
});
},
getResults: function getResults() {
var _this3 = this;
var codeBlocks = doc.compileCodeBlocks().values().flatten().invokeMap('run').thru(function (r) {
return _promise2.default.all(r);
}).value();
return codeBlocks.then(function (results) {
doc.hide('codeBlockResults', results);
}).then(function () {
return _this3;
});
}
});
doc.lazy('ast', function () {
return doc.getAST();
});
doc.lazy('renderAST', function () {
return doc.remarkAST();
});
doc.hide('parseFrontmatter', function (val) {
if (!val) {
var firstNode = doc.get('ast.children[0]', {});
val = firstNode.type === 'yaml' ? firstNode.value : undefined;
}
return val && val.length > 0 ? _jsYaml2.default.safeLoad(val) : {};
});
doc.lazy('frontmatter', function () {
var firstNode = doc.get('ast.children[0]', {});
return firstNode.type === 'yaml' ? _jsYaml2.default.load(firstNode.value) : {};
});
doc.lazy('headingsMap', function () {
return doc.createHeadingsMap();
});
return doc;
};
exports.default = decorate;
function isNode(obj) {
return (typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) === 'object' && typeof obj.type === 'string' && obj.position;
}
function createBlock(contents) {
var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return ["```" + lang, contents, "```"].join("\n");
}
/***/ },
/***/ "./src/document-types/spec.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.markdown = exports.javascript = exports.decorate = exports.testDocument = exports.rules = undefined;
var _markdown = __webpack_require__("./src/document-types/markdown.js");
var _pathMatcher = __webpack_require__(7);
var _pathMatcher2 = _interopRequireDefault(_pathMatcher);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var rules = exports.rules = [/.*\.(test|spec).*\.(md|js)$/i];
var testDocument = exports.testDocument = function testDocument(doc) {
return typeof rules.find(function (rule) {
return (0, _pathMatcher2.default)(rule, doc.fileBaseName);
}) !== 'undefined';
};
var decorate = exports.decorate = function decorate(doc) {
if (doc.isJavascript) {
doc = javascript(doc);
}
if (doc.isMarkdown) {
doc = markdown(doc);
}
return doc;
};
var javascript = exports.javascript = function javascript(doc) {
return doc;
};
var markdown = exports.markdown = function markdown(doc) {
return doc;
};
/***/ },
/***/ "./src/transformers/markdown.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.utilLoaders = exports.addons = exports.profiles = exports.github = exports.stringifier = exports.html = exports.parser = exports.comments = exports.standard = exports.applyTo = undefined;
var _promise = __webpack_require__(6);
var _promise2 = _interopRequireDefault(_promise);
var _remark = __webpack_require__(51);
var _remark2 = _interopRequireDefault(_remark);
var _remarkCommentBlocks = __webpack_require__(53);
var _remarkCommentBlocks2 = _interopRequireDefault(_remarkCommentBlocks);
var _remarkCommentConfig = __webpack_require__(54);
var _remarkCommentConfig2 = _interopRequireDefault(_remarkCommentConfig);
var _remarkHtml = __webpack_require__(56);
var _remarkHtml2 = _interopRequireDefault(_remarkHtml);
var _remarkSlug = __webpack_require__(59);
var _remarkSlug2 = _interopRequireDefault(_remarkSlug);
var _remarkSqueezeParagraphs = __webpack_require__(60);
var _remarkSqueezeParagraphs2 = _interopRequireDefault(_remarkSqueezeParagraphs);
var _remarkStringify = __webpack_require__(61);
var _remarkStringify2 = _interopRequireDefault(_remarkStringify);
var _remarkNormalizeHeadings = __webpack_require__(57);
var _remarkNormalizeHeadings2 = _interopRequireDefault(_remarkNormalizeHeadings);
var _remarkGithub = __webpack_require__(70);
var _remarkGithub2 = _interopRequireDefault(_remarkGithub);
var _remarkToc = __webpack_require__(63);
var _remarkToc2 = _interopRequireDefault(_remarkToc);
var _remarkAutolinkHeadings = __webpack_require__(52);
var _remarkAutolinkHeadings2 = _interopRequireDefault(_remarkAutolinkHeadings);
var _remarkContributors = __webpack_require__(55);
var _remarkContributors2 = _interopRequireDefault(_remarkContributors);
var _remarkStripBadges = __webpack_require__(62);
var _remarkStripBadges2 = _interopRequireDefault(_remarkStripBadges);
var _remarkParse = __webpack_require__(58);
var _remarkParse2 = _interopRequireDefault(_remarkParse);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Run a remark parser profile with optional add-ons. Available profiles
* can be found @see profiles and addOns @see addOns
*
* @param {Object} options - the options object
* @param {String} options.profile - which parser profile to use?
* @param {Array} options.addOns - which addons to include?
*/
exports.default = function () {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _options$profile = options.profile,
profile = _options$profile === undefined ? 'parser' : _options$profile,
_options$addOns = options.addOns,
addOns = _options$addOns === undefined ? [] : _options$addOns;
var unified = profiles[profile] || parser;
return addOns.reduce(function (memo, addon) {
return addons[addOn] ? memo.use(addons[addOn]) : memo;
}, unified(options));
};
var applyTo = exports.applyTo = function applyTo(input, options) {
var _options$method = options.method,
method = _options$method === undefined ? 'process' : _options$method,
_options$parser = options.parser,
parser = _options$parser === undefined ? 'github' : _options$parser;
return new _promise2.default(function (resolve, reject) {
profiles[parser](options)[method](input, function (err, file) {
err ? reject(err) : resolve(file);
});
});
};
var standard = exports.standard = function standard() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return (0, _remark2.default)().use(_remarkCommentConfig2.default).use(_remarkNormalizeHeadings2.default).use(_remarkSqueezeParagraphs2.default).use(_remarkSlug2.default).use(_remarkAutolinkHeadings2.default);
};
var comments = exports.comments = function comments() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return standard(options).use(_remarkCommentBlocks2.default);
};
var parser = exports.parser = function parser() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return standard(options).use(_remarkParse2.default);
};
var html = exports.html = function html() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return standard(options).use(_remarkHtml2.default);
};
var stringifier = exports.stringifier = function stringifier() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return standard(options).use(_remarkStringify2.default);
};
var github = exports.github = function github() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return standard(options).use(_remarkGithub2.default).use(_remarkAutolinkHeadings2.default);
};
var profiles = exports.profiles = {
parser: parser,
standard: standard,
comments: comments,
github: github,
html: html,
stringifier: stringifier
};
var addons = exports.addons = {
contributors: _remarkContributors2.default,
stripBadges: _remarkStripBadges2.default,
toc: _remarkToc2.default
};
var utilLoaders = exports.utilLoaders = function utilLoaders() {
return {
filter: function filter() {
return __webpack_require__(37);
},
findAfter: function findAfter() {
return __webpack_require__(24);
},
findAllAfter: function findAllAfter() {
return __webpack_require__(25);
},
findAllBefore: function findAllBefore() {
return __webpack_require__(26);
},
index: function index() {
return __webpack_require__(38);
},
map: function map() {
return __webpack_require__(39);
},
parents: function parents() {
return __webpack_require__(40);
},
position: function position() {
return __webpack_require__(41);
},
removePosition: function removePosition() {
return __webpack_require__(42);
},
select: function select() {
return __webpack_require__(4);
},
source: function source() {
return __webpack_require__(18);
},
visit: function visit() {
return __webpack_require__(43);
},
reporter: function reporter() {
return __webpack_require__(44);
},
docblockParser: function docblockParser() {
return __webpack_require__(19);
},
toString: function toString() {
return __webpack_require__(14);
},
headingRange: function headingRange() {
return __webpack_require__(16);
},
inject: function inject() {
return __webpack_require__(45);
}
};
};
/***/ },
/***/ 0:
/***/ function(module, exports) {
module.exports = require("babel-runtime/helpers/extends");
/***/ },
/***/ 1:
/***/ function(module, exports) {
module.exports = require("babel-runtime/core-js/object/assign");
/***/ },
/***/ 13:
/***/ function(module, exports) {
module.exports = require("babel-runtime/core-js/object/keys");
/***/ },
/***/ 137:
/***/ function(module, exports, __webpack_require__) {
module.exports = __webpack_require__("./src/document-types/spec.js");
/***/ },
/***/ 14:
/***/ function(module, exports) {
module.exports = require("mdast-util-to-string");
/***/ },
/***/ 15:
/***/ function(module, exports) {
module.exports = require("skypager-util/lib/string");
/***/ },
/***/ 16:
/***/ function(module, exports) {
module.exports = require("mdast-util-heading-range");
/***/ },
/***/ 17:
/***/ function(module, exports) {
module.exports = require("lodash/omit");
/***/ },
/***/ 18:
/***/ function(module, exports) {
module.exports = require("unist-util-source");
/***/ },
/***/ 19:
/***/ function(module, exports) {
module.exports = require("docblock-parser");
/***/ },
/***/ 21:
/***/ function(module, exports) {
module.exports = require("lodash/mapValues");
/***/ },
/***/ 23:
/***/ function(module, exports) {
module.exports = require("babel-runtime/helpers/typeof");
/***/ },
/***/ 24:
/***/ function(module, exports) {
module.exports = require("unist-util-find-after");
/***/ },
/***/ 25:
/***/ function(module, exports) {
module.exports = require("unist-util-find-all-after");
/***/ },
/***/ 26:
/***/ function(module, exports) {
module.exports = require("unist-util-find-all-before");
/***/ },
/***/ 27:
/***/ function(module, exports) {
module.exports = require("babel-core");
/***/ },
/***/ 32:
/***/ function(module, exports) {
module.exports = require("lodash/isEmpty");
/***/ },
/***/ 33:
/***/ function(module, exports) {
module.exports = require("lodash/pick");
/***/ },
/***/ 34:
/***/ function(module, exports) {
module.exports = require("skypager-util/lib/entity");
/***/ },
/***/ 35:
/***/ function(module, exports) {
module.exports = require("lodash");
/***/ },
/***/ 37:
/***/ function(module, exports) {
module.exports = require("unist-util-fi