UNPKG

skypager-project

Version:
1,702 lines (1,393 loc) 271 kB
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 = 148); /******/ }) /************************************************************************/ /******/ ({ /***/ "../../node_modules/find-up/index.js": /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; var path = __webpack_require__(12); var pathExists = __webpack_require__("../../node_modules/path-exists/index.js"); var Promise = __webpack_require__(95); function splitPath(x) { return path.resolve(x || '').split(path.sep); } function join(parts, filename) { return path.resolve(parts.join(path.sep) + path.sep, filename); } module.exports = function (filename, opts) { opts = opts || {}; var parts = splitPath(opts.cwd); return new Promise(function (resolve) { (function find() { var fp = join(parts, filename); pathExists(fp).then(function (exists) { if (exists) { resolve(fp); } else if (parts.pop()) { find(); } else { resolve(null); } }); })(); }); }; module.exports.sync = function (filename, opts) { opts = opts || {}; var parts = splitPath(opts.cwd); var len = parts.length; while (len--) { var fp = join(parts, filename); if (pathExists.sync(fp)) { return fp; } parts.pop(); } return null; }; /***/ }, /***/ "../../node_modules/path-exists/index.js": /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; var fs = __webpack_require__(64); var Promise = __webpack_require__(95); module.exports = function (fp) { var fn = typeof fs.access === 'function' ? fs.access : fs.stat; return new Promise(function (resolve) { fn(fp, function (err) { resolve(!err); }); }); }; module.exports.sync = function (fp) { var fn = typeof fs.accessSync === 'function' ? fs.accessSync : fs.statSync; try { fn(fp); return true; } catch (err) { return false; } }; /***/ }, /***/ "../skypager/node_modules/webpack/buildin/module.js": /***/ function(module, exports) { module.exports = function(module) { if(!module.webpackPolyfill) { module.deprecate = function() {}; module.paths = []; // module.parent = undefined by default if(!module.children) module.children = []; Object.defineProperty(module, "loaded", { enumerable: true, configurable: false, get: function() { return module.l; } }); Object.defineProperty(module, "id", { enumerable: true, configurable: false, get: function() { return module.i; } }); module.webpackPolyfill = 1; } return module; } /***/ }, /***/ "./src/cache.js": /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Cache = undefined; var _defineProperty = __webpack_require__(22); var _defineProperty2 = _interopRequireDefault(_defineProperty); var _map = __webpack_require__(67); var _map2 = _interopRequireDefault(_map); var _classCallCheck2 = __webpack_require__(2); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = __webpack_require__(3); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Cache = exports.Cache = function () { function Cache(init) { var _this = this; (0, _classCallCheck3.default)(this, Cache); hide(this, 'hide', function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return hide.apply(undefined, [_this].concat(args)); }); this.clear(init); this.write = function (k, v) { return _this.set(k, v).get(k); }; } (0, _createClass3.default)(Cache, [{ key: 'fetch', value: function fetch(k, defaultValue) { if (this.has(k)) { return this.get(k); } else { this.set(k, typeof defaultValue === 'function' ? defaultValue(k) : defaultValue); return this.get(k); } } }, { key: 'clear', value: function clear(init) { delete this._wm; this._wm = new _map2.default(init); } }, { key: 'delete', value: function _delete(k) { return this._wm.delete(k); } }, { key: 'get', value: function get(k) { return this._wm.get(k); } }, { key: 'has', value: function has(k) { return this._wm.has(k); } }, { key: 'set', value: function set(k, v) { this._wm.set(k, v); return this; } }]); return Cache; }(); exports.default = Cache; function hide(target, propName, value) { var configurable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; (0, _defineProperty2.default)(target, propName, { enumerable: false, configurable: configurable, value: value }); return target; } /***/ }, /***/ "./src/collection/index.js": /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.PatternMapping = exports.Collection = undefined; var _typeof2 = __webpack_require__(23); var _typeof3 = _interopRequireDefault(_typeof2); var _promise = __webpack_require__(6); var _promise2 = _interopRequireDefault(_promise); var _toConsumableArray2 = __webpack_require__(5); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _defineProperty2 = __webpack_require__(29); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _extends2 = __webpack_require__(0); var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = __webpack_require__(2); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = __webpack_require__(3); var _createClass3 = _interopRequireDefault(_createClass2); var _values = __webpack_require__(30); var _values2 = _interopRequireDefault(_values); exports.create = create; var _lodash = __webpack_require__(35); var _lodash2 = _interopRequireDefault(_lodash); var _path = __webpack_require__(12); var _properties = __webpack_require__(11); var _query = __webpack_require__(66); var _query2 = _interopRequireDefault(_query); var _router = __webpack_require__(76); var _router2 = _interopRequireDefault(_router); var _document = __webpack_require__("./src/document/index.js"); var _document2 = _interopRequireDefault(_document); var _nodeVinyl = __webpack_require__("./src/importers/node-vinyl.js"); var _vinyl = __webpack_require__(79); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var compact = _lodash2.default.compact, set = _lodash2.default.set, groupBy = _lodash2.default.groupBy, snakeCase = _lodash2.default.snakeCase, uniq = _lodash2.default.uniq, chain = _lodash2.default.chain, mapValues = _lodash2.default.mapValues; var values = _values2.default; var Collection = exports.Collection = function () { (0, _createClass3.default)(Collection, null, [{ key: 'mount', value: function mount(cwd) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return create((0, _extends3.default)({ cwd: cwd }, options)).imported.withDocuments; } /** * Create a collection which wraps a directory and creates a queryable index * of all of the files inside of it. Files exist as VFile (@see https://github.com/wooorm/vfile) and are * wrapped by Document classes which provide the interface for metadata, transformations, and things of that nature. * A collection also provides a lodash wrapper interface for building extraction functions from the collections * files and data. * * @param {Object} options - the options hash * @param {String} options.type - the type of document - will determine which document model wrapper is used * @param {String} options.cwd - the root of the collection, defaults to process.cwd() * @param {String} options.cwd - the cwd, if different from the base * @param {Array} options.include - an array of glob patterns to include * @param {Array} options.exclude - an array of glob patterns to exclude * @param {Object} options.documentOptions - an object that will be passed to the document wrapper when created * @param {Object} options.importerOptions - an object that will be passed to the document importer when created */ }]); function Collection() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _classCallCheck3.default)(this, Collection); (0, _properties.mixinPropertyUtils)(this); this.hide('cwd', options.cwd || options.root || options.base || options.basePath); this.hide('options', normalize(options)); this.pathId = this.cwd.split('/').reverse().slice(0, 2).join('-'); this.instanceId = this.pathId + '-' + Math.floor(Date.now() / 1000); this.hideGetter('collection', options.collection); this.hide('filesIndex', {}); this.hide('documentsIndex', {}); this.hide('project', options.project); } (0, _createClass3.default)(Collection, [{ key: 'shouldRejectFile', value: function shouldRejectFile(file) { if (typeof this.options.rejectFile === 'function') { return this.options.rejectFile.call(this, file); } if (file.path.indexOf('/ios/') >= 0) { return true; } if (file.path.indexOf('/android/') >= 0) { return true; } return !file.path.startsWith(this.cwd); } }, { key: 'createDocuments', value: function createDocuments() { var _this = this; var documentOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var Document = this.Document; _lodash2.default.mapValues(this.filesIndex, function (file, path) { path = (0, _path.relative)(_this.cwd, path); _this.documentsIndex[path] = _this.documentsIndex[path] || new Document(file, (0, _extends3.default)({}, _this.documentOptions, documentOptions, { project: _this.project, collection: _this })); }); return this; } }, { key: 'isDirectory', value: function isDirectory(file) { var path = file.path ? file.path : file; return typeof file.isDirectory === 'function' ? file.isDirectory() : !path.match(/\.\w+$/); } }, { key: 'add', value: function add(file) { if (file.path && !this.isDirectory(file)) { _lodash2.default.assign(this.filesIndex, (0, _defineProperty3.default)({}, (0, _path.relative)(this.cwd, file.path), file)); } } }, { key: 'prepareImportedFilesForIndexing', value: function prepareImportedFilesForIndexing() { var _this2 = this; var files = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var cwd = this.cwd; return _lodash2.default.chain(files).reject(function (f) { return _this2.isDirectory(f); }).reject(function (f) { return _this2.shouldRejectFile(f); }).compact().sortBy(function (f) { return f.path.length; }).keyBy(function (f) { return (0, _path.relative)(cwd, f.path); }).value(); } }, { key: 'indexFiles', value: function indexFiles() { var _this3 = this; var files = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; files.forEach(function (file) { return _this3.loadFile(file); }); return this; } }, { key: 'loadFile', value: function loadFile() { var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var cwd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.cwd; _lodash2.default.assign(this.filesIndex, (0, _defineProperty3.default)({}, this.resolve(cwd, file.path), this.prepareFileObject(file, cwd))); return this; } }, { key: 'prepareFileObject', value: function prepareFileObject(file) { var cwd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.cwd; return this.options.prepareFile ? this.options.prepareFile.call(this, file) : ensureVFile(file, cwd); } }, { key: 'loadFiles', value: function loadFiles() { var _this4 = this; var files = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; _lodash2.default.compact(files).filter(function (f) { return !_this4.isDirectory(f); }).forEach(function (f) { return _this4.loadFile(f); }); return this; } }, { key: 'loadFilesFromImporter', value: function loadFilesFromImporter() { var _this5 = this; return this.importer.fileWrappers.then(files = this.prepareImportedFilesForIndexing(files)).then(function (files) { return _this5.indexFiles(files.map(function (file) { return file.toVFile ? file.toVFile() : file; })); }).then(function (collection) { return collection.withDocuments; }).catch(function (error) { return error; }); } }, { key: 'createRouter', value: function createRouter(name) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (options.getter) { options.pathsGetter = options.getter; } if (options.property) { options.pathProperty = options.property; } (0, _router2.default)(this._routers, (0, _extends3.default)({ routerProperty: name, pathsGetter: name, pathProperty: 'id' }, options, { host: this, matchesOnly: true })); } }, { key: 'createDelegators', value: function createDelegators(receiver) { var _this6 = this; for (var _len = arguments.length, propNames = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { propNames[_key - 1] = arguments[_key]; } propNames.forEach(function (propName) { receiver.hideGetter(propName, function () { return _this6[propName]; }); }); } }, { key: 'getFileByRelativePath', value: function getFileByRelativePath(relativeFilePath) { var index = this.filesIndex[relativeFilePath].index; return this.files[index]; } }, { key: 'join', value: function join() { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return _path.join.apply(undefined, [this.cwd].concat(args)); } }, { key: 'relative', value: function relative() { for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } return _path.relative.apply(undefined, [this.cwd].concat(args)); } }, { key: 'resolve', value: function resolve() { for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } return _path.resolve.apply(undefined, [this.cwd].concat(args)); } }, { key: 'select', value: function select() { return this.selectChain.apply(this, arguments).value(); } }, { key: 'selectChain', value: function selectChain() { var _chain; for (var _len5 = arguments.length, paths = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { paths[_key5] = arguments[_key5]; } var set = function set(obj, path, val) { _lodash2.default.set(obj, path, val); return obj; }; return (_chain = this.chain).at.apply(_chain, (0, _toConsumableArray3.default)(_lodash2.default.sortBy(paths, function (p) { return p.length; }))).map(function (value, index) { return [paths[index], value]; }).reduce(function (memo, pair) { return set.apply(undefined, [memo].concat((0, _toConsumableArray3.default)(pair))); }, {}); } }, { key: 'selectByObject', value: function selectByObject(pathObject) { var _chain2; var keys = keys(pathObject); var paths = values(pathObject); return (_chain2 = this.chain).at.apply(_chain2, (0, _toConsumableArray3.default)(paths)).reduce(function (memo, val, index) { return set(memo, keys[index], val); }, {}).value(); } }, { key: 'findDocumentById', value: function findDocumentById(documentId) { return this.documents.find(function (doc) { return doc.id === documentId; }); } }, { key: 'applyFilesRoute', value: function applyFilesRoute(pattern) { var path = route()(pattern); var results = this.files.map(function (f) { return { path: f.relative, pathData: path(f.relative) }; }).filter(function (f) { return f.pathData; }); return { results: results, pattern: pattern }; } }, { key: 'gitInfo', get: function get() { try { return __webpack_require__("./src/git/index.js")(this.cwd); } catch (error) { return {}; } } }, { key: 'importer', get: function get() { return new this.Importer(this.cwd, (0, _extends3.default)({}, this.importerOptions, { patterns: this.patterns })); } }, { key: 'type', get: function get() { return snakeCase(this.options.type || 'Project').replace(/s$/i, ''); } }, { key: 'files', get: function get() { return _lodash2.default.chain(this.filesIndex).values().compact().sortBy(function (d) { return d.path; }).value(); } }, { key: 'documents', get: function get() { return _lodash2.default.chain(this.documentsIndex).values().compact().sortBy(function (d) { return d.file.path; }).value(); } }, { key: 'documentClass', get: function get() { return this.options.documentClass || _document2.default; } }, { key: 'importerOptions', get: function get() { var c = this; return (0, _extends3.default)({}, c.options.importerOptions, { patterns: _lodash2.default.uniq([].concat((0, _toConsumableArray3.default)(c.patterns || []), (0, _toConsumableArray3.default)(c.options.importerOptions.patterns || []))) }); } }, { key: 'documentOptions', get: function get() { var collection = this; return (0, _extends3.default)({ collectionType: collection.type }, collection.options.documentOptions || {}, { cwd: collection.cwd }); } }, { key: 'Document', get: function get() { return this.documentClass; } }, { key: 'withDocuments', get: function get() { this.createDocuments(); return this; } }, { key: 'loaderPrefix', get: function get() { return this.get('options.loaderPrefix', ''); } }, { key: 'documentEntryPoints', get: function get() { var _this7 = this; return this.chain.get('documents').keyBy('id').mapValues(function (doc) { return ['' + _this7.loaderPrefix + doc.file.path]; }).mapValues(function (array) { return compact(array); }).value(); } }, { key: 'documentsMappedById', get: function get() { return this.chain.get('documents').keyBy('id').value(); } }, { key: 'documentsMap', get: function get() { return this.documentsIndex; } }, { key: 'Importer', get: function get() { return this.options.importer ? __webpack_require__(70)("./" + this.options.importer + '.js') : __webpack_require__("./src/importers/node-vinyl.js").DocumentImporter; } }, { key: 'patterns', get: function get() { return _lodash2.default.uniq(this.includePatterns.concat(this.excludePatterns)); } }, { key: 'includePatterns', get: function get() { return _lodash2.default.uniq(this.options.include.concat(this.typePatterns)); } }, { key: 'typePatterns', get: function get() { switch (this.type.toUpperCase()) { case PACKAGE: return PatternMapping.Package; break; case SCRIPT: return PatternMapping.Script; break; case (SETTINGS_FILE, COPY_FILE): return PatternMapping.SettingsFile; break; case DOCUMENT: return PatternMapping.Document; break; case STYLESHEET: return PatternMapping.Stylesheet; break; case VECTOR: return PatternMapping.Vector; break; case PROJECT: default: return PatternMapping.Project; } } }, { key: 'router', get: function get() { return this.routers.documents; } }, { key: 'routers', get: function get() { if (!this._routers) { this.hide('_routers', {}); this.createRouter('files', { pathProperty: 'relative' }); this.createRouter('documents', { pathProperty: 'baseRelativePath', pathsGetter: 'documents' }); this.createRouter('folders', { pathProperty: 'toString', pathsGetter: 'subFolderNames' }); } return mapValues(this._routers, function (router) { return router.get.bind(router); }); } }, { key: 'chain', get: function get() { return chain(this); } }, { key: 'relativeObjectPaths', get: function get() { var _this8 = this; return this.chain.get('files').sortBy(function (f) { return f.dirname.length; }).map(function (f) { return [_this8.relative(f.dirname).replace(/\//g, '.'), f.basename, f.relative]; }).groupBy(function (i) { return i.shift(); }).value(); } }, { key: 'subFolderObjectPaths', get: function get() { return this.chain.get('subFolderNames').sortBy(function (v) { return v.length; }).map(function (p) { return p.replace(/\//g, '.'); }).value(); } }, { key: 'excludePatterns', get: function get() { if (this.options.includeAll || this.options.exclude === false) { return []; } return this.options.exclude // HACK tmp .concat(this.project ? this.project.skypagerIgnoreContents || [] : []).map(function (p) { return p.startsWith('!') ? p : '!' + p; }).concat(['!**/node_modules/**', '*.xcodeproj', '!_*']); } }, { key: 'imported', get: function get() { if (this.files.length === 0) { this.indexFiles(this.importer.readFilesSync(false)); } return this; } }, { key: 'rootFiles', get: function get() { return this.chains.files.filter(function (f) { return f.dirname === project.root; }).value(); } }, { key: 'groupedByChildFolder', get: function get() { var _this9 = this; return this.chains.files.groupBy(function (f) { return _this9.relative(f.dirname).split('/').shift(); }).pickBy(function (v, k) { return k.length > 0; }).value(); } }, { key: 'groupedByChildFolderAndExtension', get: function get() { var _this10 = this; return this.chains.files.groupBy(function (f) { return _this10.relative(f.dirname).split('/').shift(); }).mapValues(function (v) { return groupBy(v, function (v) { return v.extname; }); }).pickBy(function (v, k) { return k.length > 0; }).value(); } }, { key: 'chains', get: function get() { return { documents: chain(this.documents), files: chain(this.files) }; } }, { key: 'query', get: function get() { var collection = this; return { get files() { return _query2.default.bind(_query2.default, collection.files); }, get documents() { return _query2.default.bind(_query2.default, collection.documents); } }; } }, { key: 'depths', get: function get() { var _this11 = this; return this.chains.files.map(function (f) { return _this11.relative(f.dirname); }).uniq().groupBy(function (f) { return f.split(_path.sep).length - 1; }).omit('').value(); } }, { key: 'relativeFilePaths', get: function get() { var _this12 = this; return this.files.map(function (file) { return (0, _path.relative)(_this12.cwd, file.path); }); } }, { key: 'relativeSubFolderPaths', get: function get() { var _this13 = this; return this.files.map(function (file) { return (0, _path.relative)(_this13.cwd, file.dirname); }); } }, { key: 'subFolderPaths', get: function get() { return uniq(this.files.map(function (f) { return f.dirname; })); } }, { key: 'subFolderNames', get: function get() { var _this14 = this; return this.subFolderPaths.map(function (f) { return (0, _path.relative)(_this14.cwd, f); }).filter(function (f) { return f.length > 0; }); } }, { key: 'subFolderBasenames', get: function get() { var _this15 = this; return this.subFolderPaths.map(function (f) { return (0, _path.relative)(_this15.cwd, f); }).map(function (f) { return (0, _path.basename)(f); }); } }, { key: 'childFolderNames', get: function get() { return uniq(this.subFolderNames.map(function (p) { return p.split('/').shift(); })); } }, { key: 'childFolderPaths', get: function get() { var _this16 = this; return uniq(this.childFolderNames.map(function (p) { return _this16.join(p); })); } }, { key: 'ready', get: function get() { var _this17 = this; return this.importer.status === 'LOADED' ? _promise2.default.resolve(this) : this.loadFilesFromImporter().then(function () { return _this17; }); } }], [{ key: 'create', value: function create() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var ready = arguments[1]; var collection = new Collection(options); return typeof ready === 'function' ? ready(collection, Collection) : collection; } }, { key: 'Document', get: function get() { return _document2.default; } }]); return Collection; }(); exports.default = Collection; var PACKAGE = 'PACKAGE'; var SCRIPT = 'SCRIPT'; var DOCUMENT = 'DOCUMENT'; var SETTINGS_FILE = 'SETTINGS_FILE'; var COPY_FILE = 'COPY_FILE'; var PROJECT = 'PROJECT'; var VECTOR = 'VECTOR'; var STYLESHEET = 'STYLESHEET'; var PatternMapping = exports.PatternMapping = { 'Package': ['**/package.json'], 'Document': ['**/*.md'], 'Script': ['**/*.js', '**/*.jsx'], 'Stylesheet': ['**/*.{css,less,sass,scss,styl'], 'SettingsFile': ['**/*.yml'], 'CopyFile': ['**/*.yml'], 'Vector': ['**/*.svg'], 'DataSource': ['**/*.json', '**/*.yml', '**/*.data.js'], 'Project': ['**/*'] }; function create() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Collection.create(options); } function normalize() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return (0, _extends3.default)({}, options, { importerOptions: options.importerOptions || {}, documentOptions: options.documentOptions || {}, include: [].concat((0, _toConsumableArray3.default)(options.include || []), (0, _toConsumableArray3.default)(options.patterns || [])), exclude: [].concat((0, _toConsumableArray3.default)(options.exclude || []), (0, _toConsumableArray3.default)(options.ignore || [])) }); } function ensureVFile() { var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var cwd = arguments[1]; if (cwd) { object.cwd = cwd; } if (typeof object.toVFile === 'function') { return object.toVFile(); } else if ((0, _vinyl.isVinyl)(object)) { return (0, _nodeVinyl.toVFile)(object); } else if ((typeof object === 'undefined' ? 'undefined' : (0, _typeof3.default)(object)) === 'object' && object.contents && object.path) { return (0, _nodeVinyl.toVFile)({ contents: new Buffer(object.contents.toString()), path: object.path, cwd: object.cwd }); } else { return (0, _nodeVinyl.toVFile)(object); } } /***/ }, /***/ "./src/document-types/asset.js": /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.testDocument = exports.rules = undefined; var _pathMatcher = __webpack_require__(7); var _pathMatcher2 = _interopRequireDefault(_pathMatcher); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var rules = exports.rules = [/\.(png|jpg|gif)$/i]; var testDocument = exports.testDocument = function testDocument(doc) { return typeof rules.find(function (rule) { return (0, _pathMatcher2.default)(rule, doc.fileBaseName); }) !== 'undefined'; }; /***/ }, /***/ "./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__(68); 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/datafile.js": /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.decorate = exports.testDocument = undefined; var _assign = __webpack_require__(1); var _assign2 = _interopRequireDefault(_assign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var testDocument = exports.testDocument = function testDocument(doc) { return doc.fileExtname.match(/(json|yml)$/i); }; var decorate = exports.decorate = function decorate(doc) { return (0, _assign2.default)(doc, { readDataSync: function readDataSync() { if (doc.fileExtname === '.json') { return (0, _assign2.default)({ id: doc.id }, doc.project.readJsonSync(doc.path)); } else if (doc.fileExtname === '.yml') { return __webpack_require__(47).safeLoad(doc.readFile().getFileContents()); } } }); }; /***/ }, /***/ "./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__(72); 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 = {};