docs/api/dump.json
[
{
"__docId__": 0,
"kind": "file",
"name": "src/component/abstract-component.js",
"content": "'use strict';\n\nconst events = require('../events');\n\n/**\n * Abstract component\n */\nclass AbstractComponent {\n constructor() {\n this._logger = console;\n this._active = false;\n this._processing = 0;\n }\n \n /**\n * @returns {number}\n */\n get processing() {\n return this._processing;\n }\n \n /**\n * @param {number} interval\n *\n * @returns {Promise}\n */\n waitProcessing(interval = 200) {\n return new Promise(resolve => {\n if (!this.isProcessing) {\n return process.nextTick(() => resolve());\n }\n \n const id = setInterval(() => {\n if (!this.isProcessing) {\n clearInterval(id);\n process.nextTick(() => resolve());\n }\n }, interval);\n });\n }\n \n /**\n * @returns {AbstractComponent}\n */\n removeProcessing() {\n this._processing--;\n \n return this;\n }\n \n /**\n * @returns {AbstractComponent}\n */\n addProcessing() {\n this._processing++;\n \n return this;\n }\n \n /**\n * @returns {boolean}\n */\n get isProcessing() {\n return this.processing > 0;\n }\n \n /**\n * @returns {*}\n */\n get logger() {\n return this._logger;\n }\n \n /**\n * @param {*} logger\n *\n * @returns {AbstractComponent}\n */\n setLogger(logger) {\n this._logger = logger;\n \n return this;\n }\n \n /**\n * @param {boolean} state\n *\n * @returns {AbstractComponent}\n */\n setActive(state) {\n this._active = !!state;\n \n return this;\n }\n \n /**\n * @returns {boolean}\n */\n get isActive() {\n return !!this._active;\n }\n \n /**\n * @throws {Error}\n */\n get name() {\n throw new Error(`${ this.constructor.name }.name not implemented!`);\n }\n \n /**\n * @returns {*}\n */\n get events() {\n return events;\n }\n\n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n init(emitter) {\n return Promise.resolve();\n }\n\n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n run(emitter) {\n return Promise.resolve();\n }\n \n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n teardown(emitter) {\n return Promise.resolve();\n }\n \n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n subscribe(emitter) {\n return Promise.resolve();\n }\n \n /**\n * @returns {Promise}\n */\n ready() {\n return Promise.resolve();\n }\n}\n\nmodule.exports = AbstractComponent;\n",
"static": true,
"longname": "src/component/abstract-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 1,
"kind": "class",
"name": "AbstractComponent",
"memberof": "src/component/abstract-component.js",
"static": true,
"longname": "src/component/abstract-component.js~AbstractComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/abstract-component.js",
"importStyle": "AbstractComponent",
"description": "Abstract component",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 2,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#constructor",
"access": null,
"description": null,
"lineNumber": 9,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"params": []
},
{
"__docId__": 3,
"kind": "member",
"name": "_logger",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#_logger",
"access": null,
"description": null,
"lineNumber": 10,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 4,
"kind": "member",
"name": "_active",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#_active",
"access": null,
"description": null,
"lineNumber": 11,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"boolean"
]
}
},
{
"__docId__": 5,
"kind": "member",
"name": "_processing",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#_processing",
"access": null,
"description": null,
"lineNumber": 12,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 6,
"kind": "get",
"name": "processing",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#processing",
"access": null,
"description": "",
"lineNumber": 18,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 7,
"kind": "method",
"name": "waitProcessing",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#waitProcessing",
"access": null,
"description": "",
"lineNumber": 27,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "interval",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 8,
"kind": "method",
"name": "removeProcessing",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#removeProcessing",
"access": null,
"description": "",
"lineNumber": 45,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractComponent}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"AbstractComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 9,
"kind": "method",
"name": "addProcessing",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#addProcessing",
"access": null,
"description": "",
"lineNumber": 54,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractComponent}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"AbstractComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 10,
"kind": "get",
"name": "isProcessing",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#isProcessing",
"access": null,
"description": "",
"lineNumber": 63,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 11,
"kind": "get",
"name": "logger",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#logger",
"access": null,
"description": "",
"lineNumber": 70,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 12,
"kind": "method",
"name": "setLogger",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#setLogger",
"access": null,
"description": "",
"lineNumber": 79,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "logger",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 13,
"kind": "member",
"name": "_logger",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#_logger",
"access": null,
"description": null,
"lineNumber": 80,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 14,
"kind": "method",
"name": "setActive",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#setActive",
"access": null,
"description": "",
"lineNumber": 90,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"optional": false,
"name": "state",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 15,
"kind": "member",
"name": "_active",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#_active",
"access": null,
"description": null,
"lineNumber": 91,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 16,
"kind": "get",
"name": "isActive",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#isActive",
"access": null,
"description": "",
"lineNumber": 99,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 17,
"kind": "get",
"name": "name",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#name",
"access": null,
"description": "",
"lineNumber": 106,
"throws": [
{
"types": [
"Error"
],
"description": ""
}
]
},
{
"__docId__": 18,
"kind": "get",
"name": "events",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#events",
"access": null,
"description": "",
"lineNumber": 113,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 19,
"kind": "method",
"name": "init",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#init",
"access": null,
"description": "",
"lineNumber": 122,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 20,
"kind": "method",
"name": "run",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#run",
"access": null,
"description": "",
"lineNumber": 131,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 21,
"kind": "method",
"name": "teardown",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#teardown",
"access": null,
"description": "",
"lineNumber": 140,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 22,
"kind": "method",
"name": "subscribe",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#subscribe",
"access": null,
"description": "",
"lineNumber": 149,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 23,
"kind": "method",
"name": "ready",
"memberof": "src/component/abstract-component.js~AbstractComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/abstract-component.js~AbstractComponent#ready",
"access": null,
"description": "",
"lineNumber": 156,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 24,
"kind": "file",
"name": "src/component/cache/abstract-driver.js",
"content": "'use strict';\n\nconst fs = require('fs');\nconst jag = require('jag');\nconst fse = require('fs-extra');\nconst path = require('path');\nconst pify = require('pify');\nconst events = require('./events');\nconst EventEmitter = require('events');\n\n/**\n * Abstract cache driver\n */\nclass AbstractDriver extends EventEmitter {\n /**\n * @param {String} cacheDir\n */\n constructor(cacheDir) {\n super();\n \n this._cacheDir = cacheDir;\n this._progressType = null;\n }\n \n /**\n * @returns {string}\n */\n get cacheDir() {\n return this._cacheDir;\n }\n \n /**\n * @returns {Promise}\n */\n upload() {\n return this._switchProgressType('upload')\n ._removePackageFile()\n .then(() => this._pack())\n .then(() => this._upload())\n .then(() => this._resetOperation());\n }\n \n /**\n * @returns {Promise}\n */\n download() {\n return this._switchProgressType('download')\n ._removePackageFile()\n .then(() => this._download())\n .then(() => this._unpack())\n .then(() => this._resetOperation());\n }\n \n /**\n * @param {string} type\n *\n * @returns {AbstractDriver}\n *\n * @private\n */\n _switchProgressType(type) {\n this._progressType = type;\n \n return this;\n }\n \n /**\n * @param {number} total\n * @param {number} amount\n *\n * @returns {AbstractDriver}\n *\n * @private\n */\n _progress(total, amount) {\n const payload = {\n amount, total, remaining: total - amount,\n };\n \n this.emit(events.cache.progress, payload);\n this.emit(events.cache[this._progressType].progress, payload);\n \n return this;\n }\n \n /**\n * @returns {Promise}\n * \n * @private\n */\n _resetOperation() {\n this._progressType = null;\n \n return this._removePackageFile();\n }\n \n /**\n * @returns {Promise}\n * \n * @private\n */\n _removePackageFile() {\n return fse.remove(this._packagePath);\n }\n \n /**\n * @returns {string}\n *\n * @private\n */\n get _packagePath() {\n return path.join(\n path.dirname(this.cacheDir),\n (path.basename(this.cacheDir) || AbstractDriver.DEFAULT_NS) + '.tar.gz'\n );\n }\n \n /**\n * @returns {Promise}\n * @private\n */\n _pack() {\n return fse.pathExists(this.cacheDir).then(result => {\n if (!result) {\n return Promise.resolve();\n }\n\n return pify(jag.pack)(this.cacheDir, this._packagePath).then(() => {\n // @todo remove when fixed\n // @see https://github.com/coderaiser/node-jag/blob/master/lib/jag.js#L53\n const tmpPackagePath = path.join(\n path.dirname(this._packagePath),\n path.basename(this._packagePath, '.tar.gz')\n ) + '.tar.tar.gz';\n\n return fse.move(tmpPackagePath, this._packagePath, { overwrite: true });\n });\n });\n }\n \n /**\n * @returns {Promise}\n * @private\n */\n _unpack() {\n return fse.pathExists(this._packagePath).then(result => {\n if (!result) {\n return Promise.resolve();\n }\n\n return this._packageSize.then(packageSize => {\n if (packageSize <= 0) {\n return Promise.resolve();\n }\n\n return fse.ensureDir(this.cacheDir).then(() => pify(jag.unpack)(this._packagePath, this.cacheDir));\n });\n });\n }\n\n /**\n * @returns {Promise}\n *\n * @private\n */\n get _packageSize() {\n return pify(fs.stat)(this._packagePath)\n .then(stat => Promise.resolve(stat.size));\n }\n \n /**\n * @returns {Promise}\n *\n * @private\n */\n _upload() {\n return Promise.reject(new Error(\n `${ this.constructor.name }._upload() not implemented!`\n ));\n }\n \n /**\n * @throws {Error}\n */\n get name() {\n throw new Error(\n `${ this.constructor.name }.name not implemented!`\n );\n }\n\n /**\n * @returns {Promise}\n *\n * @private\n */\n _download() {\n return Promise.reject(new Error(\n `${ this.constructor.name }._download() not implemented!`\n ));\n }\n \n /**\n * @returns {string}\n */\n static get DEFAULT_NS() {\n return 'recink_package';\n }\n}\n\nmodule.exports = AbstractDriver;\n",
"static": true,
"longname": "src/component/cache/abstract-driver.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 25,
"kind": "class",
"name": "AbstractDriver",
"memberof": "src/component/cache/abstract-driver.js",
"static": true,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver",
"access": null,
"export": true,
"importPath": "recink/src/component/cache/abstract-driver.js",
"importStyle": "AbstractDriver",
"description": "Abstract cache driver",
"lineNumber": 14,
"interface": false,
"extends": [
"events~EventEmitter"
]
},
{
"__docId__": 26,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#constructor",
"access": null,
"description": "",
"lineNumber": 18,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "cacheDir",
"description": ""
}
]
},
{
"__docId__": 27,
"kind": "member",
"name": "_cacheDir",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_cacheDir",
"access": null,
"description": null,
"lineNumber": 21,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 28,
"kind": "member",
"name": "_progressType",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_progressType",
"access": null,
"description": null,
"lineNumber": 22,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 29,
"kind": "get",
"name": "cacheDir",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#cacheDir",
"access": null,
"description": "",
"lineNumber": 28,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 30,
"kind": "method",
"name": "upload",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#upload",
"access": null,
"description": "",
"lineNumber": 35,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 31,
"kind": "method",
"name": "download",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#download",
"access": null,
"description": "",
"lineNumber": 46,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 32,
"kind": "method",
"name": "_switchProgressType",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_switchProgressType",
"access": "private",
"description": "",
"lineNumber": 61,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "type",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 33,
"kind": "member",
"name": "_progressType",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_progressType",
"access": null,
"description": null,
"lineNumber": 62,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 34,
"kind": "method",
"name": "_progress",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_progress",
"access": "private",
"description": "",
"lineNumber": 75,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "total",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "amount",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 35,
"kind": "method",
"name": "_resetOperation",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_resetOperation",
"access": "private",
"description": "",
"lineNumber": 91,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 36,
"kind": "member",
"name": "_progressType",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_progressType",
"access": null,
"description": null,
"lineNumber": 92,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 37,
"kind": "method",
"name": "_removePackageFile",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_removePackageFile",
"access": "private",
"description": "",
"lineNumber": 102,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 38,
"kind": "get",
"name": "_packagePath",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_packagePath",
"access": "private",
"description": "",
"lineNumber": 111,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 39,
"kind": "method",
"name": "_pack",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_pack",
"access": "private",
"description": "",
"lineNumber": 122,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 40,
"kind": "method",
"name": "_unpack",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_unpack",
"access": "private",
"description": "",
"lineNumber": 145,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 41,
"kind": "get",
"name": "_packageSize",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_packageSize",
"access": "private",
"description": "",
"lineNumber": 166,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 42,
"kind": "method",
"name": "_upload",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_upload",
"access": "private",
"description": "",
"lineNumber": 176,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 43,
"kind": "get",
"name": "name",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#name",
"access": null,
"description": "",
"lineNumber": 185,
"throws": [
{
"types": [
"Error"
],
"description": ""
}
]
},
{
"__docId__": 44,
"kind": "method",
"name": "_download",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver#_download",
"access": "private",
"description": "",
"lineNumber": 196,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 45,
"kind": "get",
"name": "DEFAULT_NS",
"memberof": "src/component/cache/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/cache/abstract-driver.js~AbstractDriver.DEFAULT_NS",
"access": null,
"description": "",
"lineNumber": 205,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 46,
"kind": "file",
"name": "src/component/cache/events.js",
"content": "'use strict';\n\nconst dot = require('dot-object');\n\n/**\n * Cache component events\n */\nconst events = {};\n\nevents.$ = [\n 'cache.progress',\n 'cache.upload.progress',\n 'cache.download.progress',\n].map(eventPath => {\n dot.str(eventPath, eventPath, events);\n \n return eventPath;\n});\n\nmodule.exports = events;\n",
"static": true,
"longname": "src/component/cache/events.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 47,
"kind": "variable",
"name": "events",
"memberof": "src/component/cache/events.js",
"static": true,
"longname": "src/component/cache/events.js~events",
"access": null,
"export": true,
"importPath": "recink/src/component/cache/events.js",
"importStyle": "events",
"description": "Cache component events",
"lineNumber": 8,
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 48,
"kind": "file",
"name": "src/component/cache/factory.js",
"content": "'use strict';\n\nconst AbstractDriver = require('./abstract-driver');\n\n/**\n * Cache factory\n */\nclass Factory { \n /**\n * @param {string} name\n * @param {*} args\n *\n * @returns {AbstractDriver}\n */\n static create(name, ...args) {\n const DriverImplementation = require(`./${ name }-driver`);\n const driver = new DriverImplementation(...args);\n \n if (!(driver instanceof AbstractDriver)) {\n throw new Error(`${ name } driver should be an implementation of AbstractDriver`);\n }\n \n return driver;\n }\n \n /**\n * @param {*} args\n *\n * @returns {VoidDriver}\n */\n static s3(...args) {\n return this.create('s3', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {VoidDriver}\n */\n static void(...args) {\n return this.create('void', ...args);\n }\n}\n\nmodule.exports = Factory;\n",
"static": true,
"longname": "src/component/cache/factory.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 49,
"kind": "class",
"name": "Factory",
"memberof": "src/component/cache/factory.js",
"static": true,
"longname": "src/component/cache/factory.js~Factory",
"access": null,
"export": true,
"importPath": "recink/src/component/cache/factory.js",
"importStyle": "Factory",
"description": "Cache factory",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 50,
"kind": "method",
"name": "create",
"memberof": "src/component/cache/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/cache/factory.js~Factory.create",
"access": null,
"description": "",
"lineNumber": 15,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 51,
"kind": "method",
"name": "s3",
"memberof": "src/component/cache/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/cache/factory.js~Factory.s3",
"access": null,
"description": "",
"lineNumber": 31,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{VoidDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"VoidDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 52,
"kind": "method",
"name": "void",
"memberof": "src/component/cache/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/cache/factory.js~Factory.void",
"access": null,
"description": "",
"lineNumber": 40,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{VoidDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"VoidDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 53,
"kind": "file",
"name": "src/component/cache/s3-driver.js",
"content": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst pify = require('pify');\nconst md5File = require('md5-file');\nconst progress = require('progress-stream');\nconst AbstractDriver = require('./abstract-driver');\nconst AwsCredentials = require('../helper/aws-credentials');\n\n/**\n * AWS S3 cache driver\n */\nclass S3Driver extends AbstractDriver {\n /**\n * @param {String} cacheDir\n * @param {String} path\n * @param {*} options\n * @param {Boolean} includeNodeVersion\n */\n constructor(cacheDir, path, options, includeNodeVersion = true) {\n super(cacheDir);\n \n this._path = path;\n this._options = options;\n this._includeNodeVersion = includeNodeVersion;\n this._awsCredentials = new AwsCredentials(this.options);\n this._client = false;\n }\n\n /**\n * @returns {string}\n */\n get name() {\n return 's3';\n }\n \n /**\n * @returns {boolean}\n */\n get includeNodeVersion() {\n return this._includeNodeVersion;\n }\n \n /**\n * @returns {string}\n */\n get path() {\n return this._path;\n }\n\n /**\n * Get AWS.S3 client promise\n * @return {Promise}\n */\n get client() {\n if (this._client) {\n return Promise.resolve(this._client);\n }\n\n return this._awsCredentials.getConfig().then(AWS => {\n this._client = new AWS.S3();\n return Promise.resolve(this._client);\n });\n }\n \n /**\n * @returns {*}\n */\n get options() {\n return this._options;\n }\n \n /**\n * @returns {Promise}\n * @private\n */\n _upload() {\n return this._packageSize.then(contentLength => {\n if (contentLength <= 0) {\n return Promise.resolve();\n }\n\n return this._hasChanged.then(hasChanged => {\n return new Promise((resolve, reject) => {\n if (!hasChanged) {\n return resolve();\n }\n\n const { Bucket, Key } = this._s3Location(this.path);\n const packageStream = fs.createReadStream(this._packagePath);\n\n packageStream.on('error', error => reject(error));\n\n const Body = this._track(packageStream, contentLength);\n\n this.client\n .then(S3 => S3.upload({ Bucket, Key, Body }).promise())\n .then(() => resolve())\n .catch(error => reject(error));\n });\n });\n });\n }\n\n /**\n * @returns {Promise}\n * @private\n */\n get _hasChanged() {\n return pify(md5File)(this._packagePath).then(packageHash => {\n const { Bucket, Key } = this._s3Location(this.path);\n\n return this.client\n .then(S3 => S3.headObject({ Bucket, Key }).promise())\n .then(data => {\n const remoteHash = data.ETag.replace(/\"/g, '');\n\n return Promise.resolve(packageHash !== remoteHash);\n })\n .catch(error => {\n if (this._isMissingObject(error)) {\n return Promise.resolve(true);\n }\n\n return Promise.reject(error);\n });\n });\n }\n\n /**\n * @returns {Promise}\n * @private\n */\n _download() {\n return new Promise((resolve, reject) => {\n this.client.then(S3 => {\n const { Bucket, Key } = this._s3Location(this.path);\n const packageStream = fs.createWriteStream(this._packagePath);\n const remoteStream = S3.getObject({ Bucket, Key }).createReadStream();\n\n remoteStream.on('end', () => resolve());\n remoteStream.on('error', error => {\n if (this._isMissingObject(error)) {\n return resolve();\n }\n\n reject(error);\n });\n packageStream.on('error', error => reject(error));\n\n this._track(remoteStream).pipe(packageStream);\n });\n });\n }\n \n /**\n * @param {*} error\n *\n * @returns {boolean}\n * \n * @private\n */\n _isMissingObject(error) {\n return [ 'NoSuchKey', 'NotFound' ].indexOf(error.code) !== -1;\n }\n \n /**\n * @param {ReadableStream} stream\n * @param {number} length\n * @param {number} time\n *\n * @returns {ReadableStream}\n * \n * @private\n */\n _track(stream, length = null, time = 50) {\n const tracker = progress({ length, time, });\n \n tracker.on('progress', progress => {\n this._progress(progress.length, progress.transferred);\n });\n \n return stream.pipe(tracker);\n }\n \n /**\n * @param {String} s3Path\n * @returns {*}\n * @private\n */\n _s3Location(s3Path) {\n if (!s3Path) {\n throw new Error('S3 path is required!');\n }\n\n const matches = s3Path.match(\n /^(?:s3:\\/\\/|\\/)?([^\\/]+)(?:\\/(.*))?$/i\n );\n \n if (matches.length === 2) {\n matches.push('');\n }\n \n const [ , Bucket, keyPrefix ] = matches;\n \n const Key = path.join(\n keyPrefix || '',\n this.includeNodeVersion ? process.version : '',\n path.basename(this._packagePath)\n ).replace(/\\\\+/g, '/'); // ensure path delimiter set to slash\n \n return { Bucket, Key };\n }\n}\n\nmodule.exports = S3Driver;\n",
"static": true,
"longname": "src/component/cache/s3-driver.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 54,
"kind": "class",
"name": "S3Driver",
"memberof": "src/component/cache/s3-driver.js",
"static": true,
"longname": "src/component/cache/s3-driver.js~S3Driver",
"access": null,
"export": true,
"importPath": "recink/src/component/cache/s3-driver.js",
"importStyle": "S3Driver",
"description": "AWS S3 cache driver",
"lineNumber": 14,
"interface": false,
"extends": [
"src/component/cache/abstract-driver.js~AbstractDriver"
]
},
{
"__docId__": 55,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#constructor",
"access": null,
"description": "",
"lineNumber": 21,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "cacheDir",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "options",
"description": ""
},
{
"nullable": null,
"types": [
"Boolean"
],
"spread": false,
"optional": false,
"name": "includeNodeVersion",
"description": ""
}
]
},
{
"__docId__": 56,
"kind": "member",
"name": "_path",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_path",
"access": null,
"description": null,
"lineNumber": 24,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 57,
"kind": "member",
"name": "_options",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_options",
"access": null,
"description": null,
"lineNumber": 25,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 58,
"kind": "member",
"name": "_includeNodeVersion",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_includeNodeVersion",
"access": null,
"description": null,
"lineNumber": 26,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 59,
"kind": "member",
"name": "_awsCredentials",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_awsCredentials",
"access": null,
"description": null,
"lineNumber": 27,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 60,
"kind": "member",
"name": "_client",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_client",
"access": null,
"description": null,
"lineNumber": 28,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"boolean"
]
}
},
{
"__docId__": 61,
"kind": "get",
"name": "name",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#name",
"access": null,
"description": "",
"lineNumber": 34,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 62,
"kind": "get",
"name": "includeNodeVersion",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#includeNodeVersion",
"access": null,
"description": "",
"lineNumber": 41,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 63,
"kind": "get",
"name": "path",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#path",
"access": null,
"description": "",
"lineNumber": 48,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 64,
"kind": "get",
"name": "client",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#client",
"access": null,
"description": "Get AWS.S3 client promise",
"lineNumber": 56,
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 65,
"kind": "member",
"name": "_client",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_client",
"access": null,
"description": null,
"lineNumber": 62,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 66,
"kind": "get",
"name": "options",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#options",
"access": null,
"description": "",
"lineNumber": 70,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 67,
"kind": "method",
"name": "_upload",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_upload",
"access": "private",
"description": "",
"lineNumber": 78,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 68,
"kind": "get",
"name": "_hasChanged",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_hasChanged",
"access": "private",
"description": "",
"lineNumber": 110,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 69,
"kind": "method",
"name": "_download",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_download",
"access": "private",
"description": "",
"lineNumber": 135,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 70,
"kind": "method",
"name": "_isMissingObject",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_isMissingObject",
"access": "private",
"description": "",
"lineNumber": 164,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "error",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 71,
"kind": "method",
"name": "_track",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_track",
"access": "private",
"description": "",
"lineNumber": 177,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{ReadableStream}"
}
],
"params": [
{
"nullable": null,
"types": [
"ReadableStream"
],
"spread": false,
"optional": false,
"name": "stream",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "length",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "time",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"ReadableStream"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 72,
"kind": "method",
"name": "_s3Location",
"memberof": "src/component/cache/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-driver.js~S3Driver#_s3Location",
"access": "private",
"description": "",
"lineNumber": 192,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "s3Path",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 73,
"kind": "file",
"name": "src/component/cache/s3-unpacked-driver.js",
"content": "'use strict';\n\nconst fs = require('fs-extra');\nconst path = require('path');\nconst S3Driver = require('./s3-driver');\nconst { findFilesByPattern } = require('../../helper/util');\n\n/**\n * AWS S3 (unpacked) cache driver\n */\nclass S3UnpackedDriver extends S3Driver {\n /**\n * @param {String} cacheDir\n * @param {String} baseDir\n * @param {String} s3path\n * @param {Object} s3options\n */\n constructor(cacheDir, baseDir, s3path, s3options) {\n super(cacheDir, s3path, s3options, false);\n\n this._baseDir = baseDir;\n }\n\n /**\n * @returns {String}\n */\n get name() {\n return 's3-unpacked';\n }\n\n /**\n * @returns {String}\n * @private\n */\n get _packagePath() {\n return this.cacheDir;\n }\n\n /**\n * @returns {Promise}\n * @private\n */\n _download() {\n const { Bucket, Key } = this._s3Location(this.path);\n\n return this.client.then(S3 => {\n return S3.listObjectsV2({ Bucket: Bucket, Prefix: Key }).promise();\n }).then(listRes => {\n let keys = listRes.Contents.filter(item => item.Size).map(item => item.Key);\n\n return Promise.all(keys.map(key => {\n return this._getAndSaveS3Object(key, key.replace(Key, this.cacheDir));\n }));\n });\n }\n\n /**\n * @returns {Promise}\n * @private\n */\n _unpack() {\n return Promise.resolve();\n }\n\n /**\n * @returns {Promise}\n * @private\n */\n _pack() {\n return Promise.resolve();\n }\n\n /**\n * @returns {Promise}\n * @private\n */\n _removePackageFile() {\n return Promise.resolve();\n }\n\n /**\n * @returns {Promise}\n * @private\n */\n _upload() {\n const { Bucket, Key } = this._s3Location(this.path);\n const list = findFilesByPattern(this.cacheDir, /.*/);\n\n return Promise.all(\n list.map(filePath => {\n const stream = fs.createReadStream(filePath);\n const tfResource = Key.split('/').pop();\n const additionalKey = filePath.substring(filePath.lastIndexOf(tfResource) + tfResource.length);\n const fullS3Key = path.normalize(`${Key}/${additionalKey}`);\n\n return this.client.then(S3 => {\n return S3.upload({ Bucket: Bucket, Key: fullS3Key, Body: stream }).promise();\n });\n })\n );\n }\n\n /**\n * Get S3 object and save it to local path\n * @param {String} objectKey\n * @param {String} pathToSave\n * @returns {Promise}\n */\n _getAndSaveS3Object(objectKey, pathToSave) {\n return this.client.then(S3 => {\n const { Bucket } = this._s3Location(this.path);\n\n return S3.getObject({ Bucket: Bucket, Key: objectKey }).promise().then(content => {\n return fs.outputFile(pathToSave, content.Body);\n });\n });\n }\n}\n\nmodule.exports = S3UnpackedDriver;\n",
"static": true,
"longname": "src/component/cache/s3-unpacked-driver.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 74,
"kind": "class",
"name": "S3UnpackedDriver",
"memberof": "src/component/cache/s3-unpacked-driver.js",
"static": true,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"access": null,
"export": true,
"importPath": "recink/src/component/cache/s3-unpacked-driver.js",
"importStyle": "S3UnpackedDriver",
"description": "AWS S3 (unpacked) cache driver",
"lineNumber": 11,
"interface": false,
"extends": [
"src/component/cache/s3-driver.js~S3Driver"
]
},
{
"__docId__": 75,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#constructor",
"access": null,
"description": "",
"lineNumber": 18,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "cacheDir",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "baseDir",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "s3path",
"description": ""
},
{
"nullable": null,
"types": [
"Object"
],
"spread": false,
"optional": false,
"name": "s3options",
"description": ""
}
]
},
{
"__docId__": 76,
"kind": "member",
"name": "_baseDir",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_baseDir",
"access": null,
"description": null,
"lineNumber": 21,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 77,
"kind": "get",
"name": "name",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#name",
"access": null,
"description": "",
"lineNumber": 27,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 78,
"kind": "get",
"name": "_packagePath",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_packagePath",
"access": "private",
"description": "",
"lineNumber": 35,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 79,
"kind": "method",
"name": "_download",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_download",
"access": "private",
"description": "",
"lineNumber": 43,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 80,
"kind": "method",
"name": "_unpack",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_unpack",
"access": "private",
"description": "",
"lineNumber": 61,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 81,
"kind": "method",
"name": "_pack",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_pack",
"access": "private",
"description": "",
"lineNumber": 69,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 82,
"kind": "method",
"name": "_removePackageFile",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_removePackageFile",
"access": "private",
"description": "",
"lineNumber": 77,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 83,
"kind": "method",
"name": "_upload",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_upload",
"access": "private",
"description": "",
"lineNumber": 85,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 84,
"kind": "method",
"name": "_getAndSaveS3Object",
"memberof": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/s3-unpacked-driver.js~S3UnpackedDriver#_getAndSaveS3Object",
"access": null,
"description": "Get S3 object and save it to local path",
"lineNumber": 109,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "objectKey",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "pathToSave",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 85,
"kind": "file",
"name": "src/component/cache/void-driver.js",
"content": "'use strict';\n\nconst AbstractDriver = require('./abstract-driver');\n\n/**\n * Void cache driver\n */\nclass VoidDriver extends AbstractDriver {\n /**\n * @returns {string}\n */\n get name() {\n return 'void';\n }\n\n /**\n * @returns {Promise}\n *\n * @private\n */\n _upload() {\n return Promise.resolve();\n }\n \n /**\n * @returns {Promise}\n *\n * @private\n */\n _download() {\n return Promise.resolve();\n }\n}\n\nmodule.exports = VoidDriver;\n",
"static": true,
"longname": "src/component/cache/void-driver.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 86,
"kind": "class",
"name": "VoidDriver",
"memberof": "src/component/cache/void-driver.js",
"static": true,
"longname": "src/component/cache/void-driver.js~VoidDriver",
"access": null,
"export": true,
"importPath": "recink/src/component/cache/void-driver.js",
"importStyle": "VoidDriver",
"description": "Void cache driver",
"lineNumber": 8,
"interface": false,
"extends": [
"src/component/cache/abstract-driver.js~AbstractDriver"
]
},
{
"__docId__": 87,
"kind": "get",
"name": "name",
"memberof": "src/component/cache/void-driver.js~VoidDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/void-driver.js~VoidDriver#name",
"access": null,
"description": "",
"lineNumber": 12,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 88,
"kind": "method",
"name": "_upload",
"memberof": "src/component/cache/void-driver.js~VoidDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/void-driver.js~VoidDriver#_upload",
"access": "private",
"description": "",
"lineNumber": 21,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 89,
"kind": "method",
"name": "_download",
"memberof": "src/component/cache/void-driver.js~VoidDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache/void-driver.js~VoidDriver#_download",
"access": "private",
"description": "",
"lineNumber": 30,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 90,
"kind": "file",
"name": "src/component/cache-component.js",
"content": "'use strict';\n\nconst npmEvents = require('./npm/events');\nconst CacheFactory = require('./cache/factory');\nconst DependencyBasedComponent = require('./dependency-based-component');\nconst Spinner = require('./helper/spinner');\nconst cacheEvents = require('./cache/events');\nconst prettyBytes = require('pretty-bytes');\nconst SequentialPromise = require('./helper/sequential-promise');\n\n/**\n * Cache component\n */\nclass CacheComponent extends DependencyBasedComponent {\n /**\n * @param {*} args\n */\n constructor(...args) {\n super(...args);\n \n this._caches = [];\n }\n \n /**\n * @returns {string}\n */\n get name() {\n return 'cache';\n }\n \n /**\n * @returns {string[]}\n */\n get dependencies() {\n return [];\n }\n\n /**\n * @returns {AbstractDriver[]}\n */\n get caches() {\n return this._caches;\n }\n\n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n init(emitter) {\n return Promise.all([\n this._initCaches(emitter),\n this._initNpmCache(emitter)\n ]);\n }\n\n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n teardown(emitter) {\n if (this.caches.length <= 0) {\n return Promise.resolve();\n }\n\n return SequentialPromise.all(this.caches.map(cache => {\n return () => this._uploadCache(cache);\n }));\n }\n\n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n * \n * @private\n */\n _initCaches(emitter) {\n const cachePaths = this.container.get('paths', []);\n\n if (cachePaths.length <= 0) {\n return Promise.resolve();\n }\n\n return SequentialPromise.all(cachePaths.map(cacheDir => {\n return () => {\n const cache = this._createCache(cacheDir);\n\n this.caches.push(cache);\n\n return this._downloadCache(cache);\n };\n }));\n }\n\n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n * \n * @private\n */\n _initNpmCache(emitter) {\n const enabled = this.container.get('npm', true);\n\n if (!enabled || !emitter.component('npm')) {\n return Promise.resolve();\n }\n\n emitter.onBlocking(npmEvents.npm.cache.init, cacheDir => {\n const npmCache = this._createCache(cacheDir);\n\n this.caches.push(npmCache);\n\n return this._downloadCache(npmCache);\n });\n\n return Promise.resolve();\n }\n\n /**\n * @param {string} cacheDir\n *\n * @returns {AbstractDriver}\n *\n * @private\n */\n _createCache(cacheDir) {\n return CacheFactory.create(\n this.container.get('driver'),\n cacheDir,\n ...this.container.get('options', [])\n );\n }\n\n /**\n * @param {AbstractDriver} cache \n * \n * @returns {Promise}\n * \n * @private\n */\n _downloadCache(cache) {\n const spinner = new Spinner(`Downloading caches from #${ cache.name }`);\n \n return spinner.then(\n `Caches downloaded to ${ cache.cacheDir }`\n ).catch(\n `Failed to download caches to ${ cache.cacheDir }`\n ).promise(\n this._trackProgress(cache, spinner).download()\n );\n }\n\n /**\n * @param {AbstractDriver} cache \n * \n * @returns {Promise}\n * \n * @private\n */\n _uploadCache(cache) {\n const spinner = new Spinner(`Uploading caches to #${ cache.name }`);\n \n return spinner.then(\n `Caches uploaded from ${ cache.cacheDir }`\n ).catch(\n `Failed to upload caches from ${ cache.cacheDir }`\n ).promise(\n this._trackProgress(cache, spinner).upload()\n );\n }\n \n /**\n * @param {EventEmitter} emitter\n * @param {ora} spinner\n *\n * @returns {EventEmitter}\n *\n * @private\n */\n _trackProgress(emitter, spinner) {\n emitter.on(cacheEvents.cache.upload.progress, payload => {\n const { amount, total } = payload;\n \n spinner.prepend(`[${ prettyBytes(amount) }/${ prettyBytes(total) }]`);\n });\n \n spinner.prepend(`[0/0]`);\n \n return emitter;\n }\n}\n\nmodule.exports = CacheComponent;\n",
"static": true,
"longname": "src/component/cache-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 91,
"kind": "class",
"name": "CacheComponent",
"memberof": "src/component/cache-component.js",
"static": true,
"longname": "src/component/cache-component.js~CacheComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/cache-component.js",
"importStyle": "CacheComponent",
"description": "Cache component",
"lineNumber": 14,
"interface": false,
"extends": [
"src/component/dependency-based-component.js~DependencyBasedComponent"
]
},
{
"__docId__": 92,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#constructor",
"access": null,
"description": "",
"lineNumber": 18,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
]
},
{
"__docId__": 93,
"kind": "member",
"name": "_caches",
"memberof": "src/component/cache-component.js~CacheComponent",
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#_caches",
"access": null,
"description": null,
"lineNumber": 21,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*[]"
]
}
},
{
"__docId__": 94,
"kind": "get",
"name": "name",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#name",
"access": null,
"description": "",
"lineNumber": 27,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 95,
"kind": "get",
"name": "dependencies",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#dependencies",
"access": null,
"description": "",
"lineNumber": 34,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string[]}"
}
],
"return": {
"nullable": null,
"types": [
"string[]"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*[]"
]
}
},
{
"__docId__": 96,
"kind": "get",
"name": "caches",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#caches",
"access": null,
"description": "",
"lineNumber": 41,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractDriver[]}"
}
],
"return": {
"nullable": null,
"types": [
"AbstractDriver[]"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 97,
"kind": "method",
"name": "init",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#init",
"access": null,
"description": "",
"lineNumber": 50,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 98,
"kind": "method",
"name": "teardown",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#teardown",
"access": null,
"description": "",
"lineNumber": 62,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 99,
"kind": "method",
"name": "_initCaches",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#_initCaches",
"access": "private",
"description": "",
"lineNumber": 79,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 100,
"kind": "method",
"name": "_initNpmCache",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#_initNpmCache",
"access": "private",
"description": "",
"lineNumber": 104,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 101,
"kind": "method",
"name": "_createCache",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#_createCache",
"access": "private",
"description": "",
"lineNumber": 129,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "cacheDir",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 102,
"kind": "method",
"name": "_downloadCache",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#_downloadCache",
"access": "private",
"description": "",
"lineNumber": 144,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"optional": false,
"name": "cache",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 103,
"kind": "method",
"name": "_uploadCache",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#_uploadCache",
"access": "private",
"description": "",
"lineNumber": 163,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"optional": false,
"name": "cache",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 104,
"kind": "method",
"name": "_trackProgress",
"memberof": "src/component/cache-component.js~CacheComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/cache-component.js~CacheComponent#_trackProgress",
"access": "private",
"description": "",
"lineNumber": 183,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{EventEmitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"EventEmitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
},
{
"nullable": null,
"types": [
"ora"
],
"spread": false,
"optional": false,
"name": "spinner",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"EventEmitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 105,
"kind": "file",
"name": "src/component/config-based-component.js",
"content": "'use strict';\n\nconst path = require('path');\nconst Container = require('../container');\nconst AbstractComponent = require('./abstract-component');\n\n/**\n * Abstract configuration aware component\n */\nclass ConfigBasedComponent extends AbstractComponent {\n /**\n * @param {String} configPath\n */\n constructor(configPath = null) {\n super();\n \n this._container = null;\n this._readyPromise = Promise.resolve();\n this._configPath = configPath || `${ ConfigBasedComponent.MAIN_CONFIG_KEY }.${ this.name }`;\n this._configFileRealPath = null;\n }\n\n /**\n * @returns {*}\n */\n get container() {\n return this._container;\n }\n \n /**\n * @returns {String}\n */\n get configPath() {\n return this._configPath;\n }\n\n /**\n * @returns {String}\n */\n get configFileRealPath() {\n return this._configFileRealPath;\n }\n\n /**\n * @param {Emitter} emitter\n *\n * @returns {Promise}\n */\n subscribe(emitter) {\n this._readyPromise = this.waitConfig(emitter)\n .then(container => {\n this._container = container;\n });\n \n return Promise.resolve();\n }\n \n /**\n * @returns {Promise}\n */\n ready() {\n return this._readyPromise;\n }\n \n /**\n * @param {Emitter} emitter\n *\n * @returns {Promise}\n */\n waitConfig(emitter) {\n return new Promise((resolve, reject) => {\n emitter.on(this.events.config.load, (container, configFile) => {\n if (container.has(this.configPath)) {\n return this.prepareConfig(\n container.get(this.configPath, {}),\n configFile\n ).then(container => {\n this.setActive(true);\n \n resolve(container);\n }).catch(error => reject(error));\n }\n \n resolve(null);\n });\n });\n }\n \n /**\n * @param {*} config\n * @param {String} configFile\n * @returns {Container}\n */\n prepareConfig(config, configFile) {\n this._configFileRealPath = path.resolve(configFile);\n \n return Promise.resolve(this.createContainer(\n Object.assign({\n __file: this._configFileRealPath,\n __dir: path.dirname(this._configFileRealPath),\n }, config)\n ));\n }\n \n /**\n * @param {*} config\n * @returns {Container}\n */\n createContainer(config) {\n return new Container(config);\n }\n \n /**\n * @returns {string}\n */\n static get MAIN_CONFIG_KEY() {\n return '$';\n }\n}\n\nmodule.exports = ConfigBasedComponent;\n",
"static": true,
"longname": "src/component/config-based-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 106,
"kind": "class",
"name": "ConfigBasedComponent",
"memberof": "src/component/config-based-component.js",
"static": true,
"longname": "src/component/config-based-component.js~ConfigBasedComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/config-based-component.js",
"importStyle": "ConfigBasedComponent",
"description": "Abstract configuration aware component",
"lineNumber": 10,
"interface": false,
"extends": [
"src/component/abstract-component.js~AbstractComponent"
]
},
{
"__docId__": 107,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#constructor",
"access": null,
"description": "",
"lineNumber": 14,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "configPath",
"description": ""
}
]
},
{
"__docId__": 108,
"kind": "member",
"name": "_container",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#_container",
"access": null,
"description": null,
"lineNumber": 17,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 109,
"kind": "member",
"name": "_readyPromise",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#_readyPromise",
"access": null,
"description": null,
"lineNumber": 18,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 110,
"kind": "member",
"name": "_configPath",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#_configPath",
"access": null,
"description": null,
"lineNumber": 19,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 111,
"kind": "member",
"name": "_configFileRealPath",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#_configFileRealPath",
"access": null,
"description": null,
"lineNumber": 20,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 112,
"kind": "get",
"name": "container",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#container",
"access": null,
"description": "",
"lineNumber": 26,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 113,
"kind": "get",
"name": "configPath",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#configPath",
"access": null,
"description": "",
"lineNumber": 33,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 114,
"kind": "get",
"name": "configFileRealPath",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#configFileRealPath",
"access": null,
"description": "",
"lineNumber": 40,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 115,
"kind": "method",
"name": "subscribe",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#subscribe",
"access": null,
"description": "",
"lineNumber": 49,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 116,
"kind": "member",
"name": "_readyPromise",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#_readyPromise",
"access": null,
"description": null,
"lineNumber": 50,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 117,
"kind": "member",
"name": "_container",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#_container",
"access": null,
"description": null,
"lineNumber": 52,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 118,
"kind": "method",
"name": "ready",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#ready",
"access": null,
"description": "",
"lineNumber": 61,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 119,
"kind": "method",
"name": "waitConfig",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#waitConfig",
"access": null,
"description": "",
"lineNumber": 70,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 120,
"kind": "method",
"name": "prepareConfig",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#prepareConfig",
"access": null,
"description": "",
"lineNumber": 94,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "configFile",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 121,
"kind": "member",
"name": "_configFileRealPath",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#_configFileRealPath",
"access": null,
"description": null,
"lineNumber": 95,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 122,
"kind": "method",
"name": "createContainer",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/config-based-component.js~ConfigBasedComponent#createContainer",
"access": null,
"description": "",
"lineNumber": 109,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 123,
"kind": "get",
"name": "MAIN_CONFIG_KEY",
"memberof": "src/component/config-based-component.js~ConfigBasedComponent",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/config-based-component.js~ConfigBasedComponent.MAIN_CONFIG_KEY",
"access": null,
"description": "",
"lineNumber": 116,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 124,
"kind": "file",
"name": "src/component/coverage/abstract-driver.js",
"content": "'use strict';\n\n/**\n * Abstract coverage storage driver\n */\nclass AbstractDriver {\n /**\n * @param {string} name\n *\n * @returns {Promise}\n */\n read(name) {\n return this._read(name)\n .then(content => {\n if (!content) {\n return Promise.resolve(null);\n }\n \n return Promise.resolve(JSON.parse(content));\n });\n }\n \n /**\n * @param {string} name\n * @param {*} coverage\n *\n * @returns {Promise}\n */\n write(name, coverage) {\n return this._write(name, JSON.stringify(coverage));\n }\n\n /**\n * @param {string} name\n * \n * @returns {Promise}\n *\n * @private\n */\n _read(name) {\n return Promise.reject(new Error(\n `${ this.constructor.name }._read(name) not implemented!`\n ));\n }\n \n /**\n * @param {string} name\n * @param {string} content\n * \n * @returns {Promise}\n *\n * @private\n */\n _write(name, content) {\n return Promise.reject(new Error(\n `${ this.constructor.name }._write(name, content) not implemented!`\n ));\n }\n}\n\nmodule.exports = AbstractDriver;\n",
"static": true,
"longname": "src/component/coverage/abstract-driver.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 125,
"kind": "class",
"name": "AbstractDriver",
"memberof": "src/component/coverage/abstract-driver.js",
"static": true,
"longname": "src/component/coverage/abstract-driver.js~AbstractDriver",
"access": null,
"export": true,
"importPath": "recink/src/component/coverage/abstract-driver.js",
"importStyle": "AbstractDriver",
"description": "Abstract coverage storage driver",
"lineNumber": 6,
"interface": false
},
{
"__docId__": 126,
"kind": "method",
"name": "read",
"memberof": "src/component/coverage/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/abstract-driver.js~AbstractDriver#read",
"access": null,
"description": "",
"lineNumber": 12,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 127,
"kind": "method",
"name": "write",
"memberof": "src/component/coverage/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/abstract-driver.js~AbstractDriver#write",
"access": null,
"description": "",
"lineNumber": 29,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "coverage",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 128,
"kind": "method",
"name": "_read",
"memberof": "src/component/coverage/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/abstract-driver.js~AbstractDriver#_read",
"access": "private",
"description": "",
"lineNumber": 40,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 129,
"kind": "method",
"name": "_write",
"memberof": "src/component/coverage/abstract-driver.js~AbstractDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/abstract-driver.js~AbstractDriver#_write",
"access": "private",
"description": "",
"lineNumber": 54,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "content",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 130,
"kind": "file",
"name": "src/component/coverage/events.js",
"content": "'use strict';\n\nconst dot = require('dot-object');\n\n/**\n * Coverage component events\n */\nconst events = {};\n\nevents.$ = [\n 'coverage.report.create',\n 'coverage.report.compare',\n].map(eventPath => {\n dot.str(eventPath, eventPath, events);\n \n return eventPath;\n});\n\nmodule.exports = events;\n",
"static": true,
"longname": "src/component/coverage/events.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 131,
"kind": "variable",
"name": "events",
"memberof": "src/component/coverage/events.js",
"static": true,
"longname": "src/component/coverage/events.js~events",
"access": null,
"export": true,
"importPath": "recink/src/component/coverage/events.js",
"importStyle": "events",
"description": "Coverage component events",
"lineNumber": 8,
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 132,
"kind": "file",
"name": "src/component/coverage/factory.js",
"content": "'use strict';\n\nconst AbstractDriver = require('./abstract-driver');\n\n/**\n * Coverage storage factory\n */\nclass Factory { \n /**\n * @param {string} name\n * @param {*} args\n *\n * @returns {AbstractDriver}\n */\n static create(name, ...args) {\n const DriverImplementation = require(`./${ name }-driver`);\n const driver = new DriverImplementation(...args);\n \n if (!(driver instanceof AbstractDriver)) {\n throw new Error(`${ name } driver should be an implementation of AbstractDriver`);\n }\n \n return driver;\n }\n \n /**\n * @param {*} args\n *\n * @returns {VoidDriver}\n */\n static s3(...args) {\n return this.create('s3', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {VolatileDriver}\n */\n static volatile(...args) {\n return this.create('volatile', ...args);\n }\n}\n\nmodule.exports = Factory;\n",
"static": true,
"longname": "src/component/coverage/factory.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 133,
"kind": "class",
"name": "Factory",
"memberof": "src/component/coverage/factory.js",
"static": true,
"longname": "src/component/coverage/factory.js~Factory",
"access": null,
"export": true,
"importPath": "recink/src/component/coverage/factory.js",
"importStyle": "Factory",
"description": "Coverage storage factory",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 134,
"kind": "method",
"name": "create",
"memberof": "src/component/coverage/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/coverage/factory.js~Factory.create",
"access": null,
"description": "",
"lineNumber": 15,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 135,
"kind": "method",
"name": "s3",
"memberof": "src/component/coverage/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/coverage/factory.js~Factory.s3",
"access": null,
"description": "",
"lineNumber": 31,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{VoidDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"VoidDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 136,
"kind": "method",
"name": "volatile",
"memberof": "src/component/coverage/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/coverage/factory.js~Factory.volatile",
"access": null,
"description": "",
"lineNumber": 40,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{VolatileDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"VolatileDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 137,
"kind": "file",
"name": "src/component/coverage/s3-driver.js",
"content": "'use strict';\n\nconst path = require('path');\nconst AbstractDriver = require('./abstract-driver');\nconst AwsCredentials = require('../helper/aws-credentials');\n\n/**\n * AWS S3 coverage storage driver\n */\nclass S3Driver extends AbstractDriver {\n /**\n * @param {string} path\n * @param {*} options\n * @param {boolean} includeNodeVersion\n */\n constructor(path, options, includeNodeVersion = true) {\n super();\n \n this._path = path;\n this._options = options;\n this._includeNodeVersion = includeNodeVersion;\n this._awsCredentials = new AwsCredentials(this.options);\n this._client = false;\n }\n\n /**\n * @returns {boolean}\n */\n get includeNodeVersion() {\n return this._includeNodeVersion;\n }\n\n /**\n * @returns {string}\n */\n get path() {\n return this._path;\n }\n\n /**\n * Get AWS.S3 client promise\n * @return {Promise}\n */\n get client() {\n if (this._client) {\n return Promise.resolve(this._client);\n }\n\n return this._awsCredentials.getConfig().then(AWS => Promise.resolve(new AWS.S3()));\n }\n\n /**\n * @returns {*}\n */\n get options() {\n return this._options;\n }\n\n /**\n * @param {string} name\n * @returns {Promise}\n * @private\n */\n _read(name) {\n const { Bucket, Key } = this._s3Payload(name);\n\n return this.client\n .then(S3 => S3.getObject({ Bucket, Key }).promise())\n .then(data => Promise.resolve(data.Body.toString()))\n .catch(error => {\n if (this._isMissingObject(error)) {\n return Promise.resolve(null);\n }\n\n return Promise.reject(error);\n });\n }\n\n /**\n * @param {string} name\n * @param {string} content\n * @returns {Promise}\n * @private\n */\n _write(name, content) {\n const Body = content;\n const { Bucket, Key } = this._s3Payload(name);\n \n return this.client\n .then(S3 => S3.upload({ Bucket, Key, Body }).promise())\n .then(data => Promise.resolve());\n }\n\n /**\n * @param {*} error\n *\n * @returns {boolean}\n * \n * @private\n */\n _isMissingObject(error) {\n return [ 'NoSuchKey', 'NotFound' ].indexOf(error.code) !== -1;\n }\n \n /**\n * @param {string} name\n *\n * @returns {*}\n *\n * @private\n */\n _s3Payload(name) {\n const matches = this.path.match(\n /^(?:s3:\\/\\/|\\/)?([^\\/]+)(?:\\/(.*))?$/i\n );\n \n if (matches.length === 2) {\n matches.push('');\n }\n \n const [ , Bucket, keyPrefix ] = matches;\n \n const Key = path.join(\n keyPrefix || '',\n this.includeNodeVersion ? process.version : '',\n name\n ).replace(/\\\\+/g, '/'); // ensure path delimiter set to slash\n \n return { Bucket, Key };\n }\n}\n\nmodule.exports = S3Driver;\n",
"static": true,
"longname": "src/component/coverage/s3-driver.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 138,
"kind": "class",
"name": "S3Driver",
"memberof": "src/component/coverage/s3-driver.js",
"static": true,
"longname": "src/component/coverage/s3-driver.js~S3Driver",
"access": null,
"export": true,
"importPath": "recink/src/component/coverage/s3-driver.js",
"importStyle": "S3Driver",
"description": "AWS S3 coverage storage driver",
"lineNumber": 10,
"interface": false,
"extends": [
"src/component/coverage/abstract-driver.js~AbstractDriver"
]
},
{
"__docId__": 139,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#constructor",
"access": null,
"description": "",
"lineNumber": 16,
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "options",
"description": ""
},
{
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"optional": false,
"name": "includeNodeVersion",
"description": ""
}
]
},
{
"__docId__": 140,
"kind": "member",
"name": "_path",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_path",
"access": null,
"description": null,
"lineNumber": 19,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 141,
"kind": "member",
"name": "_options",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_options",
"access": null,
"description": null,
"lineNumber": 20,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 142,
"kind": "member",
"name": "_includeNodeVersion",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_includeNodeVersion",
"access": null,
"description": null,
"lineNumber": 21,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 143,
"kind": "member",
"name": "_awsCredentials",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_awsCredentials",
"access": null,
"description": null,
"lineNumber": 22,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 144,
"kind": "member",
"name": "_client",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_client",
"access": null,
"description": null,
"lineNumber": 23,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"boolean"
]
}
},
{
"__docId__": 145,
"kind": "get",
"name": "includeNodeVersion",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#includeNodeVersion",
"access": null,
"description": "",
"lineNumber": 29,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 146,
"kind": "get",
"name": "path",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#path",
"access": null,
"description": "",
"lineNumber": 36,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 147,
"kind": "get",
"name": "client",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#client",
"access": null,
"description": "Get AWS.S3 client promise",
"lineNumber": 44,
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 148,
"kind": "get",
"name": "options",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#options",
"access": null,
"description": "",
"lineNumber": 55,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 149,
"kind": "method",
"name": "_read",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_read",
"access": "private",
"description": "",
"lineNumber": 64,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 150,
"kind": "method",
"name": "_write",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_write",
"access": "private",
"description": "",
"lineNumber": 85,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "content",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 151,
"kind": "method",
"name": "_isMissingObject",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_isMissingObject",
"access": "private",
"description": "",
"lineNumber": 101,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "error",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 152,
"kind": "method",
"name": "_s3Payload",
"memberof": "src/component/coverage/s3-driver.js~S3Driver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/s3-driver.js~S3Driver#_s3Payload",
"access": "private",
"description": "",
"lineNumber": 112,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 153,
"kind": "file",
"name": "src/component/coverage/volatile-driver.js",
"content": "'use strict';\n\nconst AbstractDriver = require('./abstract-driver');\nconst path = require('path');\nconst fse = require('fs-extra');\nconst os = require('os');\nconst fs = require('fs');\nconst pify = require('pify');\n\n/**\n * Volatile coverage storage driver\n */\nclass VolatileDriver extends AbstractDriver {\n /**\n * @param {string} name\n * \n * @returns {Promise}\n *\n * @private\n */\n _read(name) {\n const file = this._storageFile(name);\n \n return fse.pathExists(file)\n .then(exists => {\n if (!exists) {\n return Promise.resolve(null);\n }\n \n return pify(fs.readFile)(file);\n });\n }\n \n /**\n * @param {string} name\n * @param {string} content\n * \n * @returns {Promise}\n *\n * @private\n */\n _write(name, content) {\n return fse.outputFile(this._storageFile(name), content);\n }\n \n /**\n * @param {string} name\n * \n * @returns {string}\n *\n * @private\n */\n _storageFile(name) {\n return path.join(os.tmpDir(), '__recink_coverage_volatile__', name);\n }\n}\n\nmodule.exports = VolatileDriver;\n",
"static": true,
"longname": "src/component/coverage/volatile-driver.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 154,
"kind": "class",
"name": "VolatileDriver",
"memberof": "src/component/coverage/volatile-driver.js",
"static": true,
"longname": "src/component/coverage/volatile-driver.js~VolatileDriver",
"access": null,
"export": true,
"importPath": "recink/src/component/coverage/volatile-driver.js",
"importStyle": "VolatileDriver",
"description": "Volatile coverage storage driver",
"lineNumber": 13,
"interface": false,
"extends": [
"src/component/coverage/abstract-driver.js~AbstractDriver"
]
},
{
"__docId__": 155,
"kind": "method",
"name": "_read",
"memberof": "src/component/coverage/volatile-driver.js~VolatileDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/volatile-driver.js~VolatileDriver#_read",
"access": "private",
"description": "",
"lineNumber": 21,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 156,
"kind": "method",
"name": "_write",
"memberof": "src/component/coverage/volatile-driver.js~VolatileDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/volatile-driver.js~VolatileDriver#_write",
"access": "private",
"description": "",
"lineNumber": 42,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "content",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 157,
"kind": "method",
"name": "_storageFile",
"memberof": "src/component/coverage/volatile-driver.js~VolatileDriver",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage/volatile-driver.js~VolatileDriver#_storageFile",
"access": "private",
"description": "",
"lineNumber": 53,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 158,
"kind": "file",
"name": "src/component/coverage-component.js",
"content": "'use strict';\n\n/* eslint no-useless-call: 0 */\n\nconst DependencyBasedComponent = require('./dependency-based-component');\nconst istanbul = require('istanbul');\nconst testEvents = require('./test/events');\nconst events = require('./coverage/events');\nconst ContainerTransformer = require('./helper/container-transformer');\nconst path = require('path');\nconst fs = require('fs');\nconst pify = require('pify');\nconst StorageFactory = require('./coverage/factory');\nconst ModuleCompile = require('./helper/module-compile');\n\n/**\n * Coverage component\n */\nclass CoverageComponent extends DependencyBasedComponent {\n /**\n * @param {*} args\n */\n constructor(...args) {\n super(...args);\n \n this._storage = null;\n }\n \n /**\n * @returns {string}\n */\n get name() {\n return 'coverage';\n }\n \n /**\n * @returns {string[]}\n */\n get dependencies() {\n return [ 'test' ];\n }\n \n /**\n * @returns {AbstractDriver}\n *\n * @private\n */\n get _comparatorStorage() {\n if (this._storage) {\n return this._storage;\n }\n \n const driver = this.container.get('compare.storage.driver', 'volatile');\n const options = this.container.get('compare.storage.options', []);\n \n this._storage = StorageFactory.create(driver, ...options);\n \n return this._storage;\n }\n \n /**\n * @param {istanbul.Collector} collector\n *\n * @returns {Promise}\n * \n * @private\n */\n _doCompare(collector) {\n const allowedDelta = Math.abs(parseFloat(\n this.container.get('compare.negative-delta', 100)\n ));\n \n if (!allowedDelta || allowedDelta >= 100) {\n return Promise.resolve();\n }\n \n const storage = this._comparatorStorage;\n \n if (storage.constructor.name === 'VolatileDriver') {\n this.logger.debug(\n `Coverage stored in ${ storage._storageFile(CoverageComponent.COVERAGE_FILE) }`\n );\n }\n \n return storage.read(CoverageComponent.COVERAGE_FILE)\n .then(coverage => {\n const newCoverage = collector.getFinalCoverage();\n \n if (!coverage) {\n this.logger.info(\n this.logger.emoji.bicycle,\n 'No previous coverage info saved...'\n );\n \n return storage.write(\n CoverageComponent.COVERAGE_FILE, \n newCoverage\n );\n }\n \n const delta = this._calculateDelta(coverage, newCoverage);\n \n if (delta > allowedDelta) { \n return Promise.reject(new Error(\n `Coverage delta decreased ${ delta.toFixed(2) } > ${ allowedDelta.toFixed(2) }`\n ));\n }\n \n this.logger.info(\n this.logger.emoji.bicycle,\n `Coverage delta checked ${ delta.toFixed(2) } >= ${ allowedDelta.toFixed(2) }`\n );\n \n return storage.write(\n CoverageComponent.COVERAGE_FILE, \n newCoverage\n );\n });\n }\n \n /**\n * @param {*} coverage\n * @param {*} newCoverage\n *\n * @returns {number}\n *\n * @private\n */\n _calculateDelta(coverage, newCoverage) {\n const summary = this._summarizeCoverage(coverage);\n const newSummary = this._summarizeCoverage(newCoverage);\n \n return CoverageComponent.COVERAGE_KEYS\n .reduce((accumulator, key) => {\n return accumulator + \n parseFloat(summary[key]) - \n parseFloat((newSummary[key] || 0));\n }, 0) / CoverageComponent.COVERAGE_KEYS.length;\n }\n \n /**\n * @param {*} coverage\n *\n * @returns {*}\n *\n * @private\n */\n _summarizeCoverage(coverage) {\n const summary = {};\n \n const summaries = Object.keys(coverage)\n .map(file => {\n return istanbul.utils\n .summarizeFileCoverage(coverage[file]);\n });\n \n const summaryObj = istanbul.utils\n .mergeSummaryObjects\n .apply(null, summaries);\n \n Object.keys(summaryObj)\n .map(key => {\n summary[key] = summaryObj[key].pct;\n });\n \n return summary;\n }\n \n /**\n * @param {*} assetsToInstrument\n * @param {*} dispatchedAssets\n * @param {EmitModule} module\n *\n * @returns {Promise}\n * \n * @private\n */\n _persistModuleBlankCoverage(assetsToInstrument, dispatchedAssets, module) {\n if (!assetsToInstrument[module.name]) {\n return Promise.resolve();\n }\n \n const coverageVariable = this._coverageVariable(module);\n \n return Promise.all(\n assetsToInstrument[module.name]\n .filter(asset => {\n return (dispatchedAssets[module.name] || []).indexOf(asset) === -1;\n })\n .map(asset => {\n return pify(fs.readFile)(asset)\n .then(content => {\n const instrumenter = new istanbul.Instrumenter({ coverageVariable });\n\n instrumenter.instrumentSync(\n content.toString(), \n asset\n );\n \n global[coverageVariable] = global[coverageVariable] || {};\n global[coverageVariable][asset] = instrumenter.lastFileCoverage();\n\n return Promise.resolve(); \n });\n })\n );\n }\n \n /**\n * @param {Emitter} emitter\n * @returns {Promise}\n * @todo split into several abstractions\n */\n run(emitter) {\n return new Promise((resolve, reject) => {\n const collector = new istanbul.Collector();\n const reporter = new istanbul.Reporter();\n const reporters = this.container.get('reporters', {});\n const coverageVariables = [];\n const assetsToInstrument = {};\n const dispatchedAssets = {};\n \n Object.keys(reporters).map(reporterName => {\n reporter.reports[reporterName] = istanbul.Report.create(reporterName, reporters[reporterName] || {});\n });\n \n emitter.onBlocking(testEvents.asset.test.skip, payload => {\n if (!this._match(payload.file)) {\n return Promise.resolve();\n }\n \n const { module, fileAbs } = payload;\n \n assetsToInstrument[module.name] = assetsToInstrument[module.name] || [];\n assetsToInstrument[module.name].push(fileAbs);\n \n return Promise.resolve();\n });\n \n emitter.onBlocking(testEvents.asset.tests.end, (mocha, module) => {\n return this._persistModuleBlankCoverage(assetsToInstrument, dispatchedAssets, module).then(() => {\n delete assetsToInstrument[module.name];\n delete dispatchedAssets[module.name];\n \n return Promise.resolve();\n });\n });\n \n emitter.onBlocking(testEvents.asset.tests.start, (mocha, module) => {\n return new Promise(resolve => {\n const instrumenterCache = {};\n const coverageVariable = this._coverageVariable(module);\n const instrumenter = new istanbul.Instrumenter({ coverageVariable });\n \n coverageVariables.push(coverageVariable);\n \n if (mocha) {\n mocha.loadFiles = (fn => {\n const self = this;\n const moduleRoot = module.container.get('root');\n const coverableAssets = assetsToInstrument[module.name] || [];\n\n const preprocessor = (source, filename) => {\n if (coverableAssets.indexOf(filename) !== -1\n && self._match(path.relative(moduleRoot, filename))) {\n\n if (instrumenterCache.hasOwnProperty(filename)) {\n return instrumenterCache[filename];\n }\n \n instrumenterCache[filename] = instrumenter.instrumentSync.call(instrumenter, source, filename);\n dispatchedAssets[module.name] = dispatchedAssets[module.name] || [];\n dispatchedAssets[module.name].push(filename);\n \n return instrumenterCache[filename];\n }\n \n return source;\n };\n \n mocha.files.map(file => {\n file = path.resolve(file);\n \n mocha.suite.emit('pre-require', global, file, mocha);\n mocha.suite.emit('require', ModuleCompile.require(file, {}, preprocessor), file, mocha);\n mocha.suite.emit('post-require', global, file, mocha);\n });\n \n fn && fn();\n });\n }\n \n resolve();\n });\n });\n \n emitter.onBlocking(testEvents.assets.test.end, () => { \n coverageVariables.map(coverageVariable => {\n collector.add(global[coverageVariable] || {});\n });\n \n return emitter.emitBlocking(events.coverage.report.create, istanbul, reporter, collector)\n .then(() => this._dumpCoverageStats(collector, reporter))\n .then(() => emitter.emitBlocking(events.coverage.report.compare, istanbul, reporter, collector))\n .then(() => this._doCompare(collector));\n });\n \n emitter.on(testEvents.assets.test.end, () => resolve());\n });\n }\n \n /**\n * @param {istanbul.Collector} collector\n * @param {istanbul.Reporter} reporter\n *\n * @returns {Promise}\n * \n * @private\n */\n _dumpCoverageStats(collector, reporter) {\n return new Promise(resolve => {\n reporter.write(collector, false, () => {\n \n // @todo find a smarter way to indent the output (buffer it?)\n process.stdout.write('\\n\\n');\n \n resolve();\n });\n });\n }\n \n /**\n * @param {EmitModule} module\n *\n * @returns {string}\n *\n * @private\n */\n _coverageVariable(module) {\n const cleanModuleName = module.name.replace(/[^a-z0-9]/g, '_');\n \n return `__recink_coverage__${ cleanModuleName }__`;\n }\n \n /**\n * @param {string} file\n *\n * @returns {boolean}\n * \n * @private\n */\n _match(file) {\n const pattern = this.container.get('pattern', []);\n const ignore = this.container.get('ignore', []);\n\n const result = pattern.filter(p => this._test(p, file)).length > 0\n && ignore.filter(i => this._test(i, file)).length <= 0;\n \n return result;\n }\n \n /**\n * @param {string|RegExp} pattern\n * @param {string} value\n *\n * @returns {boolean}\n *\n * @private\n */\n _test(pattern, value) {\n if (!(pattern instanceof RegExp)) {\n return value.indexOf(pattern.toString()) !== -1;\n }\n \n return pattern.test(value);\n }\n \n /**\n * @param {*} config\n * @param {string} configFile\n *\n * @returns {Container}\n */\n prepareConfig(config, configFile) {\n return super.prepareConfig(config, configFile)\n .then(container => {\n return (new ContainerTransformer(container))\n .addPattern('pattern')\n .addPattern('ignore')\n .transform();\n });\n }\n \n /**\n * @returns {Array}\n */\n static get COVERAGE_KEYS() {\n return [ 'lines', 'statements', 'functions', 'branches' ];\n }\n \n /**\n * @returns {string}\n */\n static get COVERAGE_FILE() {\n return 'coverage.json';\n }\n}\n\nmodule.exports = CoverageComponent;\n",
"static": true,
"longname": "src/component/coverage-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 159,
"kind": "class",
"name": "CoverageComponent",
"memberof": "src/component/coverage-component.js",
"static": true,
"longname": "src/component/coverage-component.js~CoverageComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/coverage-component.js",
"importStyle": "CoverageComponent",
"description": "Coverage component",
"lineNumber": 19,
"interface": false,
"extends": [
"src/component/dependency-based-component.js~DependencyBasedComponent"
]
},
{
"__docId__": 160,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#constructor",
"access": null,
"description": "",
"lineNumber": 23,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
]
},
{
"__docId__": 161,
"kind": "member",
"name": "_storage",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_storage",
"access": null,
"description": null,
"lineNumber": 26,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 162,
"kind": "get",
"name": "name",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#name",
"access": null,
"description": "",
"lineNumber": 32,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 163,
"kind": "get",
"name": "dependencies",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#dependencies",
"access": null,
"description": "",
"lineNumber": 39,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string[]}"
}
],
"return": {
"nullable": null,
"types": [
"string[]"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string[]"
]
}
},
{
"__docId__": 164,
"kind": "get",
"name": "_comparatorStorage",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_comparatorStorage",
"access": "private",
"description": "",
"lineNumber": 48,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractDriver}"
}
],
"return": {
"nullable": null,
"types": [
"AbstractDriver"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 165,
"kind": "member",
"name": "_storage",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_storage",
"access": null,
"description": null,
"lineNumber": 56,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 166,
"kind": "method",
"name": "_doCompare",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_doCompare",
"access": "private",
"description": "",
"lineNumber": 68,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"istanbul.Collector"
],
"spread": false,
"optional": false,
"name": "collector",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 167,
"kind": "method",
"name": "_calculateDelta",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_calculateDelta",
"access": "private",
"description": "",
"lineNumber": 129,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "coverage",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "newCoverage",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 168,
"kind": "method",
"name": "_summarizeCoverage",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_summarizeCoverage",
"access": "private",
"description": "",
"lineNumber": 148,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "coverage",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 169,
"kind": "method",
"name": "_persistModuleBlankCoverage",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_persistModuleBlankCoverage",
"access": "private",
"description": "",
"lineNumber": 178,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "assetsToInstrument",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "dispatchedAssets",
"description": ""
},
{
"nullable": null,
"types": [
"EmitModule"
],
"spread": false,
"optional": false,
"name": "module",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 170,
"kind": "method",
"name": "run",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#run",
"access": null,
"description": "",
"lineNumber": 214,
"todo": [
"split into several abstractions"
],
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 171,
"kind": "method",
"name": "_dumpCoverageStats",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_dumpCoverageStats",
"access": "private",
"description": "",
"lineNumber": 320,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"istanbul.Collector"
],
"spread": false,
"optional": false,
"name": "collector",
"description": ""
},
{
"nullable": null,
"types": [
"istanbul.Reporter"
],
"spread": false,
"optional": false,
"name": "reporter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 172,
"kind": "method",
"name": "_coverageVariable",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_coverageVariable",
"access": "private",
"description": "",
"lineNumber": 339,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [
{
"nullable": null,
"types": [
"EmitModule"
],
"spread": false,
"optional": false,
"name": "module",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 173,
"kind": "method",
"name": "_match",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_match",
"access": "private",
"description": "",
"lineNumber": 352,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "file",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 174,
"kind": "method",
"name": "_test",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#_test",
"access": "private",
"description": "",
"lineNumber": 370,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"string",
"RegExp"
],
"spread": false,
"optional": false,
"name": "pattern",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 175,
"kind": "method",
"name": "prepareConfig",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/coverage-component.js~CoverageComponent#prepareConfig",
"access": null,
"description": "",
"lineNumber": 384,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "configFile",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 176,
"kind": "get",
"name": "COVERAGE_KEYS",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/coverage-component.js~CoverageComponent.COVERAGE_KEYS",
"access": null,
"description": "",
"lineNumber": 397,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Array}"
}
],
"return": {
"nullable": null,
"types": [
"Array"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string[]"
]
}
},
{
"__docId__": 177,
"kind": "get",
"name": "COVERAGE_FILE",
"memberof": "src/component/coverage-component.js~CoverageComponent",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/coverage-component.js~CoverageComponent.COVERAGE_FILE",
"access": null,
"description": "",
"lineNumber": 404,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 178,
"kind": "file",
"name": "src/component/dependency-based-component.js",
"content": "'use strict';\n\nconst chalk = require('chalk');\nconst ConfigBasedComponent = require('./config-based-component');\n\n/**\n * Abstract dependency aware component\n */\nclass DependencyBasedComponent extends ConfigBasedComponent {\n /**\n * @param {*} args\n */\n constructor(...args) {\n super(...args);\n }\n \n /**\n * @returns {string[]}\n */\n get dependencies() {\n return [];\n }\n \n /**\n * @param {Emitter} emitter\n * @returns {Promise}\n */\n waitConfig(emitter) {\n return super.waitConfig(emitter).then(container => {\n if (container) {\n if (this.dependencies.length <= 0) {\n return Promise.resolve(container);\n }\n\n const waitComponents = this.dependencies.map(name => {\n const component = emitter.component(name);\n\n if (!component) {\n return Promise.resolve({ name, isActive: false });\n }\n\n return component.ready().then(() => Promise.resolve(component));\n });\n\n return Promise.all(waitComponents).then(components => {\n let failedComponents = [];\n\n components.map(component => {\n if (!component.isActive) {\n failedComponents.push(component.name);\n }\n });\n\n if (failedComponents.length > 0) {\n const failedInfo = failedComponents.map(c => chalk.red(c)).join(', ');\n\n this.setActive(false);\n this.logger.info(`${ this.logger.emoji.fire } ${ this.name } ~ ${ failedInfo }`);\n }\n\n return Promise.resolve(failedComponents.length <= 0 ? container : null);\n });\n }\n\n return Promise.resolve(null);\n });\n }\n}\n\nmodule.exports = DependencyBasedComponent;\n",
"static": true,
"longname": "src/component/dependency-based-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 179,
"kind": "class",
"name": "DependencyBasedComponent",
"memberof": "src/component/dependency-based-component.js",
"static": true,
"longname": "src/component/dependency-based-component.js~DependencyBasedComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/dependency-based-component.js",
"importStyle": "DependencyBasedComponent",
"description": "Abstract dependency aware component",
"lineNumber": 9,
"interface": false,
"extends": [
"src/component/config-based-component.js~ConfigBasedComponent"
]
},
{
"__docId__": 180,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/dependency-based-component.js~DependencyBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/dependency-based-component.js~DependencyBasedComponent#constructor",
"access": null,
"description": "",
"lineNumber": 13,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
]
},
{
"__docId__": 181,
"kind": "get",
"name": "dependencies",
"memberof": "src/component/dependency-based-component.js~DependencyBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/dependency-based-component.js~DependencyBasedComponent#dependencies",
"access": null,
"description": "",
"lineNumber": 20,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string[]}"
}
],
"return": {
"nullable": null,
"types": [
"string[]"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*[]"
]
}
},
{
"__docId__": 182,
"kind": "method",
"name": "waitConfig",
"memberof": "src/component/dependency-based-component.js~DependencyBasedComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/dependency-based-component.js~DependencyBasedComponent#waitConfig",
"access": null,
"description": "",
"lineNumber": 28,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 183,
"kind": "file",
"name": "src/component/emit/emit-module.js",
"content": "'use strict';\n\nconst print = require('print');\nconst path = require('path');\nconst fse = require('fs-extra');\nconst readdir = require('readdir-enhanced');\nconst events = require('./events');\n\n/**\n * Class representing emited test module\n */\nclass EmitModule {\n /**\n * @param {string} name\n * @param {Container} container\n * @param {Emitter} emitter\n * @param {*} logger\n */\n constructor(name, container, emitter, logger) {\n this._emitter = emitter;\n this._logger = logger;\n this._name = name;\n this._container = container;\n this._stats = {\n total: 0,\n emitted: 0,\n ignored: 0,\n dirs: 0,\n };\n }\n \n /**\n * @returns {Promise}\n */\n check() {\n const moduleRoot = this.container.get('root', null);\n \n if (!moduleRoot) {\n return Promise.reject(new Error(`Missing root for module ${ this.name }`));\n }\n \n return fse.pathExists(moduleRoot)\n .then(hasModuleRoot => {\n if (!hasModuleRoot) {\n return Promise.reject(new Error(\n `Module ${ this.name } root ${ moduleRoot } does not exists or wrong permissions set`\n ));\n }\n \n return Promise.resolve();\n })\n }\n \n /**\n * @param {*} container\n * \n * @returns {Promise}\n */\n process(container) {\n return new Promise((resolve, reject) => {\n const moduleRoot = this.container.get('root');\n \n const options = {\n deep: this._deepFilter(container).bind(this),\n filter: this._filter(container).bind(this),\n };\n \n let ended = false;\n let processing = 0;\n \n readdir.stream(moduleRoot, options)\n .on('data', filePath => {\n filePath = filePath.toString();\n \n processing++;\n \n const payload = {\n file: filePath,\n fileAbs: path.join(moduleRoot, filePath),\n module: this,\n };\n \n this.logger.debug('Emit asset', JSON.stringify(\n Object.assign({}, payload, { module: this.name })\n ));\n \n this.emitter\n .maxParallel(events.module.emit.asset, EmitModule.MAX_PARALLEL_ASSETS_EMIT)\n .emitBlocking(events.module.emit.asset, payload)\n .then(() => {\n processing--;\n \n if (processing <= 0 && ended) {\n resolve();\n }\n })\n .catch(error => {\n this.logger.warn(this.logger.emoji.poop, `failed dispatching asset ${ filePath }`);\n reject(error);\n });\n })\n .on('end', () => {\n ended = true;\n \n if (processing <= 0) {\n resolve();\n }\n })\n .on('error', error => reject(error));\n });\n }\n \n /**\n * @param {Container} container\n *\n * @returns {function}\n *\n * @private\n */\n _filter(container) {\n const pattern = container.get('pattern', []);\n const ignore = container.get('ignore', []);\n \n return stats => {\n const result = stats.isFile() \n && pattern.filter(p => this._test(p, stats.path)).length > 0\n && ignore.filter(i => this._test(i, stats.path)).length <= 0;\n \n if (stats.isFile()) {\n if (result) {\n this.stats.emitted++;\n } else {\n this.stats.ignored++;\n }\n \n this.stats.total++;\n } else if(stats.isDirectory()) {\n this.stats.dirs++;\n }\n \n return result; \n };\n }\n \n /**\n * @param {Container} container\n *\n * @returns {function}\n *\n * @private\n */\n _deepFilter(container) {\n const ignore = container.get('ignore', []);\n \n return stats => {\n return ignore.filter(i => this._test(i, stats.path)).length <= 0;\n };\n }\n \n /**\n * @param {string|RegExp} pattern\n * @param {string} value\n *\n * @returns {boolean}\n *\n * @private\n */\n _test(pattern, value) {\n if (!(pattern instanceof RegExp)) {\n return value.indexOf(pattern.toString()) !== -1;\n }\n \n return pattern.test(value);\n }\n \n /**\n * @returns {*}\n */\n get logger() {\n return this._logger;\n }\n \n /**\n * @returns {Emitter}\n */\n get emitter() {\n return this._emitter;\n }\n \n /**\n * @returns {string}\n */\n get name() {\n return this._name;\n }\n \n /**\n * @returns {Container}\n */\n get container() {\n return this._container;\n }\n \n /**\n * @returns {*}\n */\n get stats() {\n return this._stats;\n }\n \n /**\n * @returns {string}\n */\n dumpStats() {\n return print(this.stats, {\n showArrayIndices: true,\n showArrayLength: true,\n sortProps: false,\n }).replace(/\\t/g, ' ')\n }\n \n /**\n * @returns {number}\n *\n * @todo make it configurable for specific use cases\n */\n static get MAX_PARALLEL_ASSETS_EMIT() {\n return 1;\n }\n}\n\nmodule.exports = EmitModule;\n",
"static": true,
"longname": "src/component/emit/emit-module.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 184,
"kind": "class",
"name": "EmitModule",
"memberof": "src/component/emit/emit-module.js",
"static": true,
"longname": "src/component/emit/emit-module.js~EmitModule",
"access": null,
"export": true,
"importPath": "recink/src/component/emit/emit-module.js",
"importStyle": "EmitModule",
"description": "Class representing emited test module",
"lineNumber": 12,
"interface": false
},
{
"__docId__": 185,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#constructor",
"access": null,
"description": "",
"lineNumber": 19,
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"Container"
],
"spread": false,
"optional": false,
"name": "container",
"description": ""
},
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "logger",
"description": ""
}
]
},
{
"__docId__": 186,
"kind": "member",
"name": "_emitter",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_emitter",
"access": null,
"description": null,
"lineNumber": 20,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 187,
"kind": "member",
"name": "_logger",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_logger",
"access": null,
"description": null,
"lineNumber": 21,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 188,
"kind": "member",
"name": "_name",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_name",
"access": null,
"description": null,
"lineNumber": 22,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 189,
"kind": "member",
"name": "_container",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_container",
"access": null,
"description": null,
"lineNumber": 23,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 190,
"kind": "member",
"name": "_stats",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_stats",
"access": null,
"description": null,
"lineNumber": 24,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"{\"total\": *, \"emitted\": *, \"ignored\": *, \"dirs\": *}"
]
}
},
{
"__docId__": 191,
"kind": "method",
"name": "check",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#check",
"access": null,
"description": "",
"lineNumber": 35,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 192,
"kind": "method",
"name": "process",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#process",
"access": null,
"description": "",
"lineNumber": 59,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "container",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 193,
"kind": "method",
"name": "_filter",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_filter",
"access": "private",
"description": "",
"lineNumber": 120,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{function}"
}
],
"params": [
{
"nullable": null,
"types": [
"Container"
],
"spread": false,
"optional": false,
"name": "container",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"function"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 194,
"kind": "method",
"name": "_deepFilter",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_deepFilter",
"access": "private",
"description": "",
"lineNumber": 152,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{function}"
}
],
"params": [
{
"nullable": null,
"types": [
"Container"
],
"spread": false,
"optional": false,
"name": "container",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"function"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 195,
"kind": "method",
"name": "_test",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#_test",
"access": "private",
"description": "",
"lineNumber": 168,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"string",
"RegExp"
],
"spread": false,
"optional": false,
"name": "pattern",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 196,
"kind": "get",
"name": "logger",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#logger",
"access": null,
"description": "",
"lineNumber": 179,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 197,
"kind": "get",
"name": "emitter",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#emitter",
"access": null,
"description": "",
"lineNumber": 186,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 198,
"kind": "get",
"name": "name",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#name",
"access": null,
"description": "",
"lineNumber": 193,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 199,
"kind": "get",
"name": "container",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#container",
"access": null,
"description": "",
"lineNumber": 200,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 200,
"kind": "get",
"name": "stats",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#stats",
"access": null,
"description": "",
"lineNumber": 207,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 201,
"kind": "method",
"name": "dumpStats",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit/emit-module.js~EmitModule#dumpStats",
"access": null,
"description": "",
"lineNumber": 214,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 202,
"kind": "get",
"name": "MAX_PARALLEL_ASSETS_EMIT",
"memberof": "src/component/emit/emit-module.js~EmitModule",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/emit/emit-module.js~EmitModule.MAX_PARALLEL_ASSETS_EMIT",
"access": null,
"description": "",
"lineNumber": 227,
"todo": [
"make it configurable for specific use cases"
],
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 203,
"kind": "file",
"name": "src/component/emit/events.js",
"content": "'use strict';\n\nconst dot = require('dot-object');\n\n/**\n * Emit component events\n */\nconst events = {};\n\nevents.$ = [\n 'modules.process.start',\n 'modules.process.end',\n 'module.process.start',\n 'module.process.end',\n 'module.emit.asset',\n].map(eventPath => {\n dot.str(eventPath, eventPath, events);\n \n return eventPath;\n});\n\nmodule.exports = events;\n",
"static": true,
"longname": "src/component/emit/events.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 204,
"kind": "variable",
"name": "events",
"memberof": "src/component/emit/events.js",
"static": true,
"longname": "src/component/emit/events.js~events",
"access": null,
"export": true,
"importPath": "recink/src/component/emit/events.js",
"importStyle": "events",
"description": "Emit component events",
"lineNumber": 8,
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 205,
"kind": "file",
"name": "src/component/emit-component.js",
"content": "'use strict';\n\nconst path = require('path');\nconst events = require('./emit/events');\nconst EmitModule = require('./emit/emit-module');\nconst SequentialPromise = require('./helper/sequential-promise');\nconst ConfigBasedComponent = require('./config-based-component');\nconst ContainerTransformer = require('./helper/container-transformer');\n\n/**\n * Emit component\n */\nclass EmitComponent extends ConfigBasedComponent {\n /**\n * @param {*} args\n */\n constructor(...args) {\n super(...args);\n \n this._modules = [];\n }\n \n /**\n * @returns {String}\n */\n get name() {\n return 'emit';\n }\n \n /**\n * @param {Emitter} emitter\n * @returns {Promise}\n */\n run(emitter) {\n this._registerDebugers(emitter);\n \n emitter.emit(events.modules.process.start, this._modules, this.container);\n\n return SequentialPromise.all(this._modules.map(module => {\n return () => {\n return module.check()\n .then(() => emitter.emitBlocking(events.module.process.start, module, this.container))\n .then(() => module.process(this.container))\n .then(() => emitter.emitBlocking(events.module.process.end, module));\n };\n })).then(() => {\n emitter.emit(events.modules.process.end, this._modules, this.container);\n });\n }\n \n /**\n * @param {Emitter} emitter\n * @returns {Promise}\n */\n waitConfig(emitter) {\n return super.waitConfig(emitter)\n .then(container => {\n const moduleKeys = emitter.container.listKeys()\n .filter(key => key !== ConfigBasedComponent.MAIN_CONFIG_KEY);\n\n if (moduleKeys.length <= 0 || !container) {\n return Promise.resolve(container);\n }\n \n return Promise.all(moduleKeys.map(moduleKey => {\n return this.prepareModuleConfig(\n emitter.container.get(moduleKey),\n container\n ).then(moduleContainer => {\n const emitModule = new EmitModule(\n moduleKey, \n moduleContainer,\n emitter,\n this.logger\n );\n \n this._modules.push(emitModule);\n });\n })).then(() => {\n this.logger.info(\n this.logger.emoji.gift,\n `Modules to emit - ${ moduleKeys.join(', ') }`\n );\n \n return Promise.resolve(container);\n });\n });\n }\n \n /**\n * @param {*} config\n * @param {String} configFile\n * @returns {Container}\n */\n prepareConfig(config, configFile) {\n return super.prepareConfig(config, configFile)\n .then(container => {\n return (new ContainerTransformer(container))\n .addPattern('pattern')\n .addPattern('ignore')\n .transform();\n });\n }\n \n /**\n * @param {*} moduleConfig\n * @param {Container} mainContainer\n * @returns {Container}\n */\n prepareModuleConfig(moduleConfig, mainContainer) {\n const container = this.createContainer(moduleConfig);\n \n return (new ContainerTransformer(container))\n .add({\n path: 'root',\n transformer: value => {\n if (path.isAbsolute(value)) {\n return Promise.resolve(value);\n }\n \n return Promise.resolve(\n path.join(mainContainer.get('__dir'), value)\n );\n },\n })\n .transform();\n }\n \n /**\n * @param {Emitter} emitter\n * @private\n */\n _registerDebugers(emitter) {\n emitter.on(events.modules.process.start, (modules, container) => {\n const modulesStr = modules.map(m => m.name).join(', ');\n\n this.logger.info(\n this.logger.emoji.diamond,\n `Start processing modules ${ modules.length ? '- ' + modulesStr : '' }`\n );\n\n this.logger.debug(container.dump());\n });\n \n emitter.on(events.modules.process.end, modules => {\n const modulesStr = modules.map(m => m.name).join(', ');\n\n this.logger.info(\n this.logger.emoji.magic,\n `Finish processing modules ${ modules.length ? '- ' + modulesStr : '' }`\n );\n });\n \n emitter.on(events.module.process.start, module => {\n this.logger.debug(`Start processing module ${ module.name }`);\n this.logger.debug(module.container.dump());\n });\n \n emitter.on(events.module.process.end, module => {\n this.logger.debug(`Finish processing module ${ module.name }`);\n this.logger.debug(module.dumpStats());\n });\n }\n}\n\nmodule.exports = EmitComponent;\n",
"static": true,
"longname": "src/component/emit-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 206,
"kind": "class",
"name": "EmitComponent",
"memberof": "src/component/emit-component.js",
"static": true,
"longname": "src/component/emit-component.js~EmitComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/emit-component.js",
"importStyle": "EmitComponent",
"description": "Emit component",
"lineNumber": 13,
"interface": false,
"extends": [
"src/component/config-based-component.js~ConfigBasedComponent"
]
},
{
"__docId__": 207,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/emit-component.js~EmitComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#constructor",
"access": null,
"description": "",
"lineNumber": 17,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
]
},
{
"__docId__": 208,
"kind": "member",
"name": "_modules",
"memberof": "src/component/emit-component.js~EmitComponent",
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#_modules",
"access": null,
"description": null,
"lineNumber": 20,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*[]"
]
}
},
{
"__docId__": 209,
"kind": "get",
"name": "name",
"memberof": "src/component/emit-component.js~EmitComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#name",
"access": null,
"description": "",
"lineNumber": 26,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 210,
"kind": "method",
"name": "run",
"memberof": "src/component/emit-component.js~EmitComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#run",
"access": null,
"description": "",
"lineNumber": 34,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 211,
"kind": "method",
"name": "waitConfig",
"memberof": "src/component/emit-component.js~EmitComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#waitConfig",
"access": null,
"description": "",
"lineNumber": 55,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 212,
"kind": "method",
"name": "prepareConfig",
"memberof": "src/component/emit-component.js~EmitComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#prepareConfig",
"access": null,
"description": "",
"lineNumber": 95,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "configFile",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 213,
"kind": "method",
"name": "prepareModuleConfig",
"memberof": "src/component/emit-component.js~EmitComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#prepareModuleConfig",
"access": null,
"description": "",
"lineNumber": 110,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "moduleConfig",
"description": ""
},
{
"nullable": null,
"types": [
"Container"
],
"spread": false,
"optional": false,
"name": "mainContainer",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 214,
"kind": "method",
"name": "_registerDebugers",
"memberof": "src/component/emit-component.js~EmitComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/emit-component.js~EmitComponent#_registerDebugers",
"access": "private",
"description": "",
"lineNumber": 133,
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
]
},
{
"__docId__": 215,
"kind": "file",
"name": "src/component/factory.js",
"content": "'use strict';\n\nconst AbstractComponent = require('./abstract-component');\n\n/**\n * Component factory\n */\nclass Factory { \n /**\n * @param {string} name\n * @param {*} args\n *\n * @returns {AbstractComponent}\n */\n static create(name, ...args) {\n const ComponentImplementation = require(`./${ name }-component`);\n const component = new ComponentImplementation(...args);\n \n if (!(component instanceof AbstractComponent)) {\n throw new Error(`${ name } component should be an implementation of AbstractComponent`);\n }\n \n return component;\n }\n \n /**\n * @param {*} args\n *\n * @returns {EmitComponent}\n */\n static emit(...args) {\n return this.create('emit', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {CacheComponent}\n */\n static cache(...args) {\n return this.create('cache', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {CoverageComponent}\n */\n static coverage(...args) {\n return this.create('coverage', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {TestComponent}\n */\n static test(...args) {\n return this.create('test', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {E2EComponent}\n */\n static e2e(...args) {\n return this.create('e2e', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {NpmComponent}\n */\n static npm(...args) {\n return this.create('npm', ...args);\n }\n \n /**\n * @param {*} args\n *\n * @returns {PreprocessComponent}\n */\n static preprocess(...args) {\n return this.create('preprocess', ...args);\n }\n}\n\nmodule.exports = Factory;\n",
"static": true,
"longname": "src/component/factory.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 216,
"kind": "class",
"name": "Factory",
"memberof": "src/component/factory.js",
"static": true,
"longname": "src/component/factory.js~Factory",
"access": null,
"export": true,
"importPath": "recink/src/component/factory.js",
"importStyle": "Factory",
"description": "Component factory",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 217,
"kind": "method",
"name": "create",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.create",
"access": null,
"description": "",
"lineNumber": 15,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 218,
"kind": "method",
"name": "emit",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.emit",
"access": null,
"description": "",
"lineNumber": 31,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{EmitComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"EmitComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 219,
"kind": "method",
"name": "cache",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.cache",
"access": null,
"description": "",
"lineNumber": 40,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{CacheComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"CacheComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 220,
"kind": "method",
"name": "coverage",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.coverage",
"access": null,
"description": "",
"lineNumber": 49,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{CoverageComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"CoverageComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 221,
"kind": "method",
"name": "test",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.test",
"access": null,
"description": "",
"lineNumber": 58,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{TestComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"TestComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 222,
"kind": "method",
"name": "e2e",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.e2e",
"access": null,
"description": "",
"lineNumber": 67,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{E2EComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"E2EComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 223,
"kind": "method",
"name": "npm",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.npm",
"access": null,
"description": "",
"lineNumber": 76,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{NpmComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"NpmComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 224,
"kind": "method",
"name": "preprocess",
"memberof": "src/component/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/factory.js~Factory.preprocess",
"access": null,
"description": "",
"lineNumber": 85,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{PreprocessComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"PreprocessComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 225,
"kind": "file",
"name": "src/component/helper/aws-credentials.js",
"content": "'use strict';\n\nconst AWS = require('aws-sdk');\n\n/**\n * AWS security credentials\n */\nclass AwsCredentials {\n /**\n * @param {Object} options\n */\n constructor(options = {}) {\n this._options = options;\n this._providers = [\n new AWS.EnvironmentCredentials(\n this._options.hasOwnProperty('envPrefix') ? this._options.envPrefix : 'AWS'\n ),\n new AWS.SharedIniFileCredentials({\n profile: this._options.hasOwnProperty('profile') ? this._options.profile : 'default'\n }),\n AWS.ECSCredentials.prototype.isConfiguredForEcsCredentials()\n ? new AWS.ECSCredentials() : new AWS.EC2MetadataCredentials()\n ];\n\n if (this._options.hasOwnProperty('accessKeyId') && this._options.hasOwnProperty('secretAccessKey')) {\n this._providers.push(\n new AWS.Credentials({\n accessKeyId: this._options.accessKeyId,\n secretAccessKey: this._options.secretAccessKey\n })\n );\n }\n }\n\n /**\n * Get AWS Configuration\n * @return {Promise}\n */\n getConfig() {\n return new AWS.CredentialProviderChain(this._providers).resolvePromise().then(credentials => {\n let roleArn = this._getRoleArn();\n\n AWS.config.credentials = roleArn\n ? new AWS.TemporaryCredentials({ RoleArn: roleArn }, credentials)\n : credentials;\n\n if (this._options.hasOwnProperty('region')) {\n AWS.config.update({ region: this._options.region });\n }\n\n return Promise.resolve(AWS);\n });\n }\n\n /**\n * Compose and validate Role ARN\n * @return {boolean}\n * @private\n */\n _getRoleArn() {\n let roleArn = this._options.roleArn;\n\n if (this._options.hasOwnProperty('accountId') && this._options.hasOwnProperty('roleName')) {\n roleArn = `arn:aws:iam::${this._options.accountId}:role/${this._options.roleName}`\n }\n\n return /^arn:aws:iam::[0-9]{12}:role\\/[a-zA-Z0-9+=,.@\\-_]*$/.test(roleArn) ? roleArn : false;\n }\n}\n\nmodule.exports = AwsCredentials;\n",
"static": true,
"longname": "src/component/helper/aws-credentials.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 226,
"kind": "class",
"name": "AwsCredentials",
"memberof": "src/component/helper/aws-credentials.js",
"static": true,
"longname": "src/component/helper/aws-credentials.js~AwsCredentials",
"access": null,
"export": true,
"importPath": "recink/src/component/helper/aws-credentials.js",
"importStyle": "AwsCredentials",
"description": "AWS security credentials",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 227,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/helper/aws-credentials.js~AwsCredentials",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/aws-credentials.js~AwsCredentials#constructor",
"access": null,
"description": "",
"lineNumber": 12,
"params": [
{
"nullable": null,
"types": [
"Object"
],
"spread": false,
"optional": false,
"name": "options",
"description": ""
}
]
},
{
"__docId__": 228,
"kind": "member",
"name": "_options",
"memberof": "src/component/helper/aws-credentials.js~AwsCredentials",
"static": false,
"longname": "src/component/helper/aws-credentials.js~AwsCredentials#_options",
"access": null,
"description": null,
"lineNumber": 13,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 229,
"kind": "member",
"name": "_providers",
"memberof": "src/component/helper/aws-credentials.js~AwsCredentials",
"static": false,
"longname": "src/component/helper/aws-credentials.js~AwsCredentials#_providers",
"access": null,
"description": null,
"lineNumber": 14,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"undefined[]"
]
}
},
{
"__docId__": 230,
"kind": "method",
"name": "getConfig",
"memberof": "src/component/helper/aws-credentials.js~AwsCredentials",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/aws-credentials.js~AwsCredentials#getConfig",
"access": null,
"description": "Get AWS Configuration",
"lineNumber": 39,
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 231,
"kind": "method",
"name": "_getRoleArn",
"memberof": "src/component/helper/aws-credentials.js~AwsCredentials",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/aws-credentials.js~AwsCredentials#_getRoleArn",
"access": "private",
"description": "Compose and validate Role ARN",
"lineNumber": 60,
"params": [],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 232,
"kind": "file",
"name": "src/component/helper/container-transformer.js",
"content": "'use strict';\n\nconst Transformer = require('./transformer');\nconst patternTransformer = require('./pattern-transformer');\n\n/**\n * Apply transformations to an configuration container\n */\nclass ContainerTransformer {\n /**\n * @param {Container} container\n */\n constructor(container) {\n this._container = container;\n this._transformers = [];\n }\n \n /**\n * @param {string} path\n *\n * @returns {ContainerTransformer}\n */\n addPattern(path) {\n return this.add({ path, transformer: patternTransformer });\n }\n \n /**\n * @param {string} path\n * @param {function} transformer\n *\n * @returns {Transformer}\n */\n create(path, transformer) {\n return new Transformer(path, transformer);\n }\n \n /**\n * @param {Transformer} transformerInstance\n *\n * @returns {ContainerTransformer}\n */\n add(transformerInstance) {\n if (!(transformerInstance instanceof Transformer)) {\n const { path, transformer } = transformerInstance;\n \n transformerInstance = this.create(path, transformer);\n }\n\n this._transformers.push(transformerInstance);\n \n return this;\n }\n \n /**\n * @returns {Transformer[]}\n */\n get transformers() {\n return this._transformers;\n }\n \n /**\n * @returns {Promise}\n */\n transform() {\n return Promise.all(this.transformers.map(transformer => {\n if (this.container.has(transformer.path)) {\n return transformer.transform(this.container.get(transformer.path))\n .then(value => {\n this.container.set(transformer.path, value);\n \n return Promise.resolve();\n });\n }\n \n return Promise.resolve();\n })).then(() => Promise.resolve(this.container));\n }\n \n /**\n * @returns {Container}\n */\n get container() {\n return this._container;\n }\n}\n\nmodule.exports = ContainerTransformer;\n",
"static": true,
"longname": "src/component/helper/container-transformer.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 233,
"kind": "class",
"name": "ContainerTransformer",
"memberof": "src/component/helper/container-transformer.js",
"static": true,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer",
"access": null,
"export": true,
"importPath": "recink/src/component/helper/container-transformer.js",
"importStyle": "ContainerTransformer",
"description": "Apply transformations to an configuration container",
"lineNumber": 9,
"interface": false
},
{
"__docId__": 234,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#constructor",
"access": null,
"description": "",
"lineNumber": 13,
"params": [
{
"nullable": null,
"types": [
"Container"
],
"spread": false,
"optional": false,
"name": "container",
"description": ""
}
]
},
{
"__docId__": 235,
"kind": "member",
"name": "_container",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#_container",
"access": null,
"description": null,
"lineNumber": 14,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 236,
"kind": "member",
"name": "_transformers",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#_transformers",
"access": null,
"description": null,
"lineNumber": 15,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*[]"
]
}
},
{
"__docId__": 237,
"kind": "method",
"name": "addPattern",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#addPattern",
"access": null,
"description": "",
"lineNumber": 23,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{ContainerTransformer}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"ContainerTransformer"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 238,
"kind": "method",
"name": "create",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#create",
"access": null,
"description": "",
"lineNumber": 33,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Transformer}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
},
{
"nullable": null,
"types": [
"function"
],
"spread": false,
"optional": false,
"name": "transformer",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Transformer"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 239,
"kind": "method",
"name": "add",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#add",
"access": null,
"description": "",
"lineNumber": 42,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{ContainerTransformer}"
}
],
"params": [
{
"nullable": null,
"types": [
"Transformer"
],
"spread": false,
"optional": false,
"name": "transformerInstance",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"ContainerTransformer"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 240,
"kind": "get",
"name": "transformers",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#transformers",
"access": null,
"description": "",
"lineNumber": 57,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Transformer[]}"
}
],
"return": {
"nullable": null,
"types": [
"Transformer[]"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 241,
"kind": "method",
"name": "transform",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#transform",
"access": null,
"description": "",
"lineNumber": 64,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 242,
"kind": "get",
"name": "container",
"memberof": "src/component/helper/container-transformer.js~ContainerTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/container-transformer.js~ContainerTransformer#container",
"access": null,
"description": "",
"lineNumber": 82,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 243,
"kind": "file",
"name": "src/component/helper/module-compile.js",
"content": "'use strict';\n\nconst SandboxedModule = require('sandboxed-module');\n\n/**\n * Overwrites original Module to apply compilers\n */\nclass ModuleCompile {\n /**\n * @param {string} moduleId\n * @param {*} stubs\n * @param {Function[]} compilers\n *\n * @returns {*}\n */\n static require(moduleId, stubs = {}, ...compilers) {\n return SandboxedModule.require(moduleId, {\n requires: stubs,\n sourceTransformers: compilers.map(compiler => {\n return function (source) {\n const { filename } = this;\n\n return compiler(source, filename);\n };\n }),\n });\n }\n}\n\nmodule.exports = ModuleCompile;\n",
"static": true,
"longname": "src/component/helper/module-compile.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 244,
"kind": "class",
"name": "ModuleCompile",
"memberof": "src/component/helper/module-compile.js",
"static": true,
"longname": "src/component/helper/module-compile.js~ModuleCompile",
"access": null,
"export": true,
"importPath": "recink/src/component/helper/module-compile.js",
"importStyle": "ModuleCompile",
"description": "Overwrites original Module to apply compilers",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 245,
"kind": "method",
"name": "require",
"memberof": "src/component/helper/module-compile.js~ModuleCompile",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/helper/module-compile.js~ModuleCompile.require",
"access": null,
"description": "",
"lineNumber": 16,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "moduleId",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "stubs",
"description": ""
},
{
"nullable": null,
"types": [
"Function[]"
],
"spread": false,
"optional": false,
"name": "compilers",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 246,
"kind": "file",
"name": "src/component/helper/pattern-transformer.js",
"content": "'use strict';\n\n/**\n * @param {string} value\n *\n * @returns {RegExp}\n */\nfunction toRegexp(value) {\n const matches = value.match(/^\\/(.+)\\/([gmiyu])*$/);\n \n const [ , regex, modifiers ] = matches;\n \n return new RegExp(regex, modifiers);\n}\n\n/**\n * @param {string} value\n *\n * @returns {boolean}\n */\nfunction isRegexp(value) {\n return /\\/.+\\/[a-z]*/i.test(value);\n}\n\n/**\n * @param {*} value\n *\n * @returns {Promise}\n */\nmodule.exports = (value => { \n return Promise.resolve((Array.isArray(value) ? value : [ value ])\n .filter(pattern => !!((pattern || '').trim()))\n .map(pattern => {\n if (isRegexp(pattern)) {\n return toRegexp(pattern);\n }\n \n return pattern;\n }));\n});\n",
"static": true,
"longname": "src/component/helper/pattern-transformer.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 247,
"kind": "function",
"name": "toRegexp",
"memberof": "src/component/helper/pattern-transformer.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/helper/pattern-transformer.js~toRegexp",
"access": null,
"export": false,
"importPath": "recink/src/component/helper/pattern-transformer.js",
"importStyle": null,
"description": "",
"lineNumber": 8,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{RegExp}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"RegExp"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 248,
"kind": "function",
"name": "isRegexp",
"memberof": "src/component/helper/pattern-transformer.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/helper/pattern-transformer.js~isRegexp",
"access": null,
"export": false,
"importPath": "recink/src/component/helper/pattern-transformer.js",
"importStyle": null,
"description": "",
"lineNumber": 21,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 249,
"kind": "function",
"name": "patterntransformer",
"memberof": "src/component/helper/pattern-transformer.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/helper/pattern-transformer.js~patterntransformer",
"access": null,
"export": true,
"importPath": "recink/src/component/helper/pattern-transformer.js",
"importStyle": "patterntransformer",
"description": "",
"lineNumber": 30,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 250,
"kind": "file",
"name": "src/component/helper/sequential-promise.js",
"content": "'use strict';\n\n/**\n * Implements Promise.all() but sequential execution\n */\nclass SequentialPromise {\n /**\n * @param {function[]} promises\n * @param {*} value\n * \n * @returns {Promise}\n */\n static all(promises, value = null) {\n const promisesCloned = [].concat(promises);\n \n return this._sequential(promisesCloned, value);\n }\n \n /**\n * @param {function[]} promises\n * @param {*} result\n * \n * @returns {Promise}\n *\n * @private\n */\n static _sequential(promises, result) {\n if (promises.length <= 0) {\n return Promise.resolve(result);\n }\n \n return promises.shift()(result)\n .then(result => SequentialPromise._sequential(promises, result));\n }\n}\n\nmodule.exports = SequentialPromise;\n",
"static": true,
"longname": "src/component/helper/sequential-promise.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 251,
"kind": "class",
"name": "SequentialPromise",
"memberof": "src/component/helper/sequential-promise.js",
"static": true,
"longname": "src/component/helper/sequential-promise.js~SequentialPromise",
"access": null,
"export": true,
"importPath": "recink/src/component/helper/sequential-promise.js",
"importStyle": "SequentialPromise",
"description": "Implements Promise.all() but sequential execution",
"lineNumber": 6,
"interface": false
},
{
"__docId__": 252,
"kind": "method",
"name": "all",
"memberof": "src/component/helper/sequential-promise.js~SequentialPromise",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/helper/sequential-promise.js~SequentialPromise.all",
"access": null,
"description": "",
"lineNumber": 13,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"function[]"
],
"spread": false,
"optional": false,
"name": "promises",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 253,
"kind": "method",
"name": "_sequential",
"memberof": "src/component/helper/sequential-promise.js~SequentialPromise",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/helper/sequential-promise.js~SequentialPromise._sequential",
"access": "private",
"description": "",
"lineNumber": 27,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"function[]"
],
"spread": false,
"optional": false,
"name": "promises",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "result",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 254,
"kind": "file",
"name": "src/component/helper/spinner.js",
"content": "'use strict';\n\nconst ora = require('ora');\n\n/**\n * Terminal spinner implementation\n */\nclass Spinner {\n /**\n * @param {String} msg\n */\n constructor(msg) {\n this._main = msg;\n this._then = msg;\n this._catch = msg;\n this._spinner = null;\n }\n \n /**\n * @param {String} text\n * @returns {ora}\n */\n prepend(text) {\n this.spinner.text = `${ text } ${ this._main }`;\n \n return this;\n }\n \n /**\n * @param {String} text\n * @returns {ora}\n */\n append(text) {\n this.spinner.text = `${ this._main } ${ text }`;\n \n return this;\n }\n \n /**\n * @returns {ora}\n */\n get spinner() {\n if (!this._spinner) {\n this._spinner = ora(this._main);\n }\n \n return this._spinner;\n }\n \n /**\n * @param {Promise} promiseToWrap\n *\n * @returns {Promise}\n */\n promise(promiseToWrap) {\n this.spinner.start();\n \n return promiseToWrap\n .then(result => {\n this.spinner.succeed(this.thenText);\n \n return Promise.resolve(result);\n })\n .catch(error => {\n this.spinner.fail(this.catchText);\n \n return Promise.reject(error);\n });\n }\n \n /**\n * @param {String} msg\n * @returns {Spinner}\n */\n then(msg) {\n this._then = msg;\n \n return this;\n }\n \n /**\n * @param {String} msg\n * @returns {Spinner}\n */\n catch(msg) {\n this._catch = msg;\n \n return this;\n }\n \n /**\n * @returns {String}\n */\n get catchText() {\n return this._catch;\n }\n \n /**\n * @returns {String}\n */\n get thenText() {\n return this._then;\n }\n \n /**\n * @returns {String}\n */\n get mainText() {\n return this._main;\n }\n}\n\nmodule.exports = Spinner;\n",
"static": true,
"longname": "src/component/helper/spinner.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 255,
"kind": "class",
"name": "Spinner",
"memberof": "src/component/helper/spinner.js",
"static": true,
"longname": "src/component/helper/spinner.js~Spinner",
"access": null,
"export": true,
"importPath": "recink/src/component/helper/spinner.js",
"importStyle": "Spinner",
"description": "Terminal spinner implementation",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 256,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#constructor",
"access": null,
"description": "",
"lineNumber": 12,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "msg",
"description": ""
}
]
},
{
"__docId__": 257,
"kind": "member",
"name": "_main",
"memberof": "src/component/helper/spinner.js~Spinner",
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#_main",
"access": null,
"description": null,
"lineNumber": 13,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 258,
"kind": "member",
"name": "_then",
"memberof": "src/component/helper/spinner.js~Spinner",
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#_then",
"access": null,
"description": null,
"lineNumber": 14,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 259,
"kind": "member",
"name": "_catch",
"memberof": "src/component/helper/spinner.js~Spinner",
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#_catch",
"access": null,
"description": null,
"lineNumber": 15,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 260,
"kind": "member",
"name": "_spinner",
"memberof": "src/component/helper/spinner.js~Spinner",
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#_spinner",
"access": null,
"description": null,
"lineNumber": 16,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 261,
"kind": "method",
"name": "prepend",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#prepend",
"access": null,
"description": "",
"lineNumber": 23,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{ora}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "text",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"ora"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 262,
"kind": "method",
"name": "append",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#append",
"access": null,
"description": "",
"lineNumber": 33,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{ora}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "text",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"ora"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 263,
"kind": "get",
"name": "spinner",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#spinner",
"access": null,
"description": "",
"lineNumber": 42,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{ora}"
}
],
"return": {
"nullable": null,
"types": [
"ora"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 264,
"kind": "member",
"name": "_spinner",
"memberof": "src/component/helper/spinner.js~Spinner",
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#_spinner",
"access": null,
"description": null,
"lineNumber": 44,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 265,
"kind": "method",
"name": "promise",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#promise",
"access": null,
"description": "",
"lineNumber": 55,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"optional": false,
"name": "promiseToWrap",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 266,
"kind": "method",
"name": "then",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#then",
"access": null,
"description": "",
"lineNumber": 75,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Spinner}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "msg",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Spinner"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 267,
"kind": "member",
"name": "_then",
"memberof": "src/component/helper/spinner.js~Spinner",
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#_then",
"access": null,
"description": null,
"lineNumber": 76,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 268,
"kind": "method",
"name": "catch",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#catch",
"access": null,
"description": "",
"lineNumber": 85,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Spinner}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "msg",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Spinner"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 269,
"kind": "member",
"name": "_catch",
"memberof": "src/component/helper/spinner.js~Spinner",
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#_catch",
"access": null,
"description": null,
"lineNumber": 86,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 270,
"kind": "get",
"name": "catchText",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#catchText",
"access": null,
"description": "",
"lineNumber": 94,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 271,
"kind": "get",
"name": "thenText",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#thenText",
"access": null,
"description": "",
"lineNumber": 101,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 272,
"kind": "get",
"name": "mainText",
"memberof": "src/component/helper/spinner.js~Spinner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/spinner.js~Spinner#mainText",
"access": null,
"description": "",
"lineNumber": 108,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 273,
"kind": "file",
"name": "src/component/helper/transformer.js",
"content": "'use strict';\n\n/**\n * Apply transformer over a value\n */\nclass Transformer {\n /**\n * @param {string} path\n * @param {function} transformer\n */\n constructor(path, transformer) {\n this._path = path;\n this._transformer = transformer;\n }\n \n /**\n * @param {*} value\n *\n * @returns {Promise}\n */\n transform(value) {\n return this.transformer(value);\n }\n \n /**\n * @returns {function}\n */\n get transformer() {\n return this._transformer;\n }\n \n /**\n * @returns {string}\n */\n get path() {\n return this._path;\n }\n}\n\nmodule.exports = Transformer;\n",
"static": true,
"longname": "src/component/helper/transformer.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 274,
"kind": "class",
"name": "Transformer",
"memberof": "src/component/helper/transformer.js",
"static": true,
"longname": "src/component/helper/transformer.js~Transformer",
"access": null,
"export": true,
"importPath": "recink/src/component/helper/transformer.js",
"importStyle": "Transformer",
"description": "Apply transformer over a value",
"lineNumber": 6,
"interface": false
},
{
"__docId__": 275,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/helper/transformer.js~Transformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/transformer.js~Transformer#constructor",
"access": null,
"description": "",
"lineNumber": 11,
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
},
{
"nullable": null,
"types": [
"function"
],
"spread": false,
"optional": false,
"name": "transformer",
"description": ""
}
]
},
{
"__docId__": 276,
"kind": "member",
"name": "_path",
"memberof": "src/component/helper/transformer.js~Transformer",
"static": false,
"longname": "src/component/helper/transformer.js~Transformer#_path",
"access": null,
"description": null,
"lineNumber": 12,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 277,
"kind": "member",
"name": "_transformer",
"memberof": "src/component/helper/transformer.js~Transformer",
"static": false,
"longname": "src/component/helper/transformer.js~Transformer#_transformer",
"access": null,
"description": null,
"lineNumber": 13,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 278,
"kind": "method",
"name": "transform",
"memberof": "src/component/helper/transformer.js~Transformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/transformer.js~Transformer#transform",
"access": null,
"description": "",
"lineNumber": 21,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 279,
"kind": "get",
"name": "transformer",
"memberof": "src/component/helper/transformer.js~Transformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/transformer.js~Transformer#transformer",
"access": null,
"description": "",
"lineNumber": 28,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{function}"
}
],
"return": {
"nullable": null,
"types": [
"function"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 280,
"kind": "get",
"name": "path",
"memberof": "src/component/helper/transformer.js~Transformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/helper/transformer.js~Transformer#path",
"access": null,
"description": "",
"lineNumber": 35,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 281,
"kind": "file",
"name": "src/component/npm/cache.js",
"content": "'use strict';\n\nconst fse = require('fs-extra');\nconst path = require('path');\n\n/**\n * File system cache implementation\n */\nclass Cache {\n /**\n * @param {string} cacheDir\n * @param {string} prefix\n */\n constructor(cacheDir, prefix) {\n this._cacheDir = cacheDir;\n this._prefix = prefix;\n }\n \n /**\n * @returns {string}\n */\n get prefix() {\n return this._prefix;\n }\n \n /**\n * @returns {string}\n */\n get cacheDir() {\n return this._cacheDir;\n }\n \n /**\n * @param {string} key\n *\n * @returns {Promise}\n */\n has(key) {\n return fse.pathExists(this._cacheKey(key));\n }\n \n /**\n * @param {string} key\n * @param {string} src\n *\n * @returns {Promise}\n */\n save(key, src) {\n return fse.copy(src, this._cacheKey(key));\n }\n \n /**\n * @param {string} key\n * @param {string} dest\n *\n * @returns {Promise}\n */\n restore(key, dest) {\n return fse.copy(this._cacheKey(key), dest);\n }\n \n /**\n * @param {string} key\n *\n * @returns {Promise}\n */\n invalidate(key) {\n return fse.remove(this._cacheKey(key));\n }\n \n /**\n * @returns {Promise}\n */\n flush() {\n return fse.remove(this._base);\n }\n \n /**\n * @returns {string}\n *\n * @private\n */\n get _base() {\n return path.join(this.cacheDir, this.prefix);\n }\n \n /**\n * @param {string} key\n *\n * @returns {string}\n *\n * @private\n */\n _cacheKey(key) {\n return path.join(this._base, key);\n }\n}\n\nmodule.exports = Cache;\n",
"static": true,
"longname": "src/component/npm/cache.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 282,
"kind": "class",
"name": "Cache",
"memberof": "src/component/npm/cache.js",
"static": true,
"longname": "src/component/npm/cache.js~Cache",
"access": null,
"export": true,
"importPath": "recink/src/component/npm/cache.js",
"importStyle": "Cache",
"description": "File system cache implementation",
"lineNumber": 9,
"interface": false
},
{
"__docId__": 283,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#constructor",
"access": null,
"description": "",
"lineNumber": 14,
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "cacheDir",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "prefix",
"description": ""
}
]
},
{
"__docId__": 284,
"kind": "member",
"name": "_cacheDir",
"memberof": "src/component/npm/cache.js~Cache",
"static": false,
"longname": "src/component/npm/cache.js~Cache#_cacheDir",
"access": null,
"description": null,
"lineNumber": 15,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 285,
"kind": "member",
"name": "_prefix",
"memberof": "src/component/npm/cache.js~Cache",
"static": false,
"longname": "src/component/npm/cache.js~Cache#_prefix",
"access": null,
"description": null,
"lineNumber": 16,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 286,
"kind": "get",
"name": "prefix",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#prefix",
"access": null,
"description": "",
"lineNumber": 22,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 287,
"kind": "get",
"name": "cacheDir",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#cacheDir",
"access": null,
"description": "",
"lineNumber": 29,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 288,
"kind": "method",
"name": "has",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#has",
"access": null,
"description": "",
"lineNumber": 38,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "key",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 289,
"kind": "method",
"name": "save",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#save",
"access": null,
"description": "",
"lineNumber": 48,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "key",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "src",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 290,
"kind": "method",
"name": "restore",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#restore",
"access": null,
"description": "",
"lineNumber": 58,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "key",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "dest",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 291,
"kind": "method",
"name": "invalidate",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#invalidate",
"access": null,
"description": "",
"lineNumber": 67,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "key",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 292,
"kind": "method",
"name": "flush",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#flush",
"access": null,
"description": "",
"lineNumber": 74,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 293,
"kind": "get",
"name": "_base",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#_base",
"access": "private",
"description": "",
"lineNumber": 83,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 294,
"kind": "method",
"name": "_cacheKey",
"memberof": "src/component/npm/cache.js~Cache",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/cache.js~Cache#_cacheKey",
"access": "private",
"description": "",
"lineNumber": 94,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "key",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 295,
"kind": "file",
"name": "src/component/npm/events.js",
"content": "'use strict';\n\nconst dot = require('dot-object');\n\n/**\n * NPM component events\n */\nconst events = {};\n\nevents.$ = [\n 'npm.dependencies.install',\n 'npm.dependencies.postinstall',\n 'npm.cache.init',\n].map(eventPath => {\n dot.str(eventPath, eventPath, events);\n \n return eventPath;\n});\n\nmodule.exports = events;\n",
"static": true,
"longname": "src/component/npm/events.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 296,
"kind": "variable",
"name": "events",
"memberof": "src/component/npm/events.js",
"static": true,
"longname": "src/component/npm/events.js~events",
"access": null,
"export": true,
"importPath": "recink/src/component/npm/events.js",
"importStyle": "events",
"description": "NPM component events",
"lineNumber": 8,
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 297,
"kind": "file",
"name": "src/component/npm/npm-module.js",
"content": "'use strict';\n\nconst packageHash = require('package-hash');\nconst path = require('path');\nconst fse = require('fs-extra');\nconst Spinner = require('../helper/spinner');\nconst { spawn } = require('child_process');\nconst md5Hex = require('md5-hex');\nconst SequentialPromise = require('../helper/sequential-promise');\n\n/**\n * Abstraction over an NPM module\n */\nclass NpmModule {\n /**\n * @param {string} rootDir\n * @param {Cache} cache\n * @param {*} logger\n */\n constructor(rootDir, cache, logger) {\n this._rootDir = rootDir;\n this._cache = cache;\n this._logger = logger;\n }\n \n /**\n * @returns {*}\n */\n get logger() {\n return this._logger;\n }\n \n /**\n * @returns {string}\n */\n get rootDir() {\n return this._rootDir;\n }\n \n /**\n * @param {Cache} cache\n */\n get cache() {\n return this._cache;\n }\n \n /**\n * @returns {string}\n */\n get packageFileRelative() {\n return path.relative(process.cwd(), this.packageFile);\n }\n \n /**\n * @returns {string}\n */\n get packageFile() {\n return path.join(this.rootDir, NpmModule.PACKAGE_FILE);\n }\n \n /**\n * @returns {string}\n */\n get modulesDir() {\n return path.join(this.rootDir, NpmModule.MODULES_DIR);\n }\n \n /**\n * @returns {string}\n */\n get debugFile() {\n return path.join(this.rootDir, NpmModule.NPM_DEBUG_FILE);\n }\n \n /**\n * @param {*} deps\n * @param {array} scripts\n *\n * @returns {Promise}\n */\n install(deps = {}, scripts = []) {\n let cacheKey;\n const packageFile = this.packageFile;\n const modulesDir = this.modulesDir;\n \n return fse.ensureDir(modulesDir)\n .then(() => this._packageHash(packageFile, deps))\n .then(hash => {\n cacheKey = hash;\n \n return this.cache.has(hash);\n })\n .then(inCache => {\n if (inCache) {\n this.logger.debug(`Restore ${ this.rootDir } cache from #${ cacheKey }`);\n \n return this.cache.restore(cacheKey, modulesDir)\n .then(() => this._runScripts(scripts));\n }\n \n this.logger.debug(`Install dependencies in ${ this.rootDir }`);\n \n return this._install(packageFile, deps)\n .then(() => this._runScripts(scripts))\n .then(() => {\n this.logger.debug(`Save ${ this.rootDir } cache to #${ cacheKey }`);\n \n return this.cache.flush()\n .then(() => this.cache.save(cacheKey, modulesDir));\n });\n });\n }\n \n /**\n * @param {array} scripts\n * \n * @returns {Promise}\n *\n * @private\n */\n _runScripts(scripts) {\n if (scripts.length <= 0) {\n return Promise.resolve();\n }\n \n return SequentialPromise.all(scripts.map(script => {\n return () => this._runScript(script);\n }));\n }\n \n /**\n * @param {string} script\n * \n * @returns {Promise}\n *\n * @private\n */\n _runScript(script) {\n return (new Spinner(\n `Running ${ script } script in ${ this.rootDir }`\n )).then(\n `Script ${ script } execution succeed in ${ this.rootDir }`\n ).catch(\n `Script ${ script } execution failed in ${ this.rootDir }`\n ).promise(new Promise((resolve, reject) => {\n const options = {\n cwd: this.rootDir, \n stdio: 'ignore',\n };\n\n const npmRunScript = spawn('npm', [ 'run', script ], options);\n \n npmRunScript.on('close', code => {\n if (code !== 0) { \n return reject(new Error(\n `Failed to run script ${ script } in ${ this.rootDir }.\\n` +\n `To open logs type: 'open ${ this.debugFile }'`\n ));\n }\n \n resolve();\n });\n }));\n }\n \n /**\n * @param {string} packageFile\n * @param {*} additionalDeps\n *\n * @returns {Promise}\n *\n * @private\n */\n _install(packageFile, additionalDeps) {\n return fse.pathExists(packageFile)\n .then(hasPackageFile => {\n return hasPackageFile ? this._doInstall() : Promise.resolve();\n })\n .then(() => {\n const depsVector = Object.keys(additionalDeps)\n .map(depName => {\n return `${ depName }@${ additionalDeps[depName] }`;\n });\n\n return depsVector.length > 0 \n ? this._doInstall(depsVector) \n : Promise.resolve();\n });\n }\n \n /**\n * @param {string} depsDebug\n *\n * @returns {string}\n * \n * @private\n */\n _trimDepsDebugInfo(depsDebug) {\n if (depsDebug.length > 25) {\n return depsDebug.substr(0, 25) + '...';\n }\n \n return depsDebug;\n }\n \n /**\n * @param {array} deps\n *\n * @returns {Promise}\n *\n * @private\n */\n _doInstall(deps = []) {\n const depsDebug = this._trimDepsDebugInfo(deps.length > 0 ? deps.join(', ') : 'MAIN');\n \n return (new Spinner(\n `Installing dependencies in ${ this.rootDir } (${ depsDebug })`\n )).then(\n `Dependencies installation succeed in ${ this.rootDir } (${ depsDebug })`\n ).catch(\n `Dependencies installation failed in ${ this.rootDir } (${ depsDebug })`\n ).promise(new Promise((resolve, reject) => {\n const options = {\n cwd: this.rootDir, \n stdio: 'ignore',\n };\n \n // ignore running 'npm install' scripts\n if (deps.length <= 0) {\n deps = [ '--ignore-scripts' ];\n }\n\n const npmInstall = spawn('npm', [ 'install', '--no-shrinkwrap' ].concat(deps), options);\n \n npmInstall.on('close', code => {\n if (code !== 0) { \n return reject(new Error(\n `Failed to install dependencies in ${ this.rootDir }.\\n` +\n `To open logs type: 'open ${ this.debugFile }'`\n ));\n }\n \n resolve();\n });\n }));\n }\n \n /**\n * @param {string} packageFile\n * @param {*} deps\n *\n * @returns {Promise}\n *\n * @private\n */\n _packageHash(packageFile, deps) {\n return fse.pathExists(packageFile)\n .then(hasPackageFile => {\n const depsHash = this._depsHash(deps);\n const packageDebug = hasPackageFile ? 'exists' : 'missing';\n \n this.logger.debug(\n `File ${ NpmModule.PACKAGE_FILE } ${ packageDebug } in ${ this.rootDir }`\n );\n \n if (!hasPackageFile) {\n return Promise.resolve(`${ depsHash }-${ NpmModule.DEFAULT_HASH }`);\n }\n \n return packageHash(packageFile)\n .then(hash => {\n return Promise.resolve(`${ depsHash }-${ hash }`);\n });\n });\n }\n \n /**\n * @param {*} deps\n *\n * @returns {string}\n *\n * @private\n */\n _depsHash(deps) {\n const normalizedDeps = {};\n \n Object.keys(deps).sort().map(key => {\n normalizedDeps[key] = deps[key];\n });\n \n return md5Hex(JSON.stringify(normalizedDeps));\n }\n \n /**\n * @returns {string}\n */\n static get DEFAULT_HASH() {\n return 'x'.repeat(32);\n }\n \n /**\n * @returns {string}\n */\n static get NPM_DEBUG_FILE() {\n return 'npm-debug.log';\n }\n \n /**\n * @returns {string}\n */\n static get PACKAGE_FILE() {\n return 'package.json';\n }\n \n /**\n * @returns {string}\n */\n static get MODULES_DIR() {\n return 'node_modules';\n }\n}\n\nmodule.exports = NpmModule;\n",
"static": true,
"longname": "src/component/npm/npm-module.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 298,
"kind": "class",
"name": "NpmModule",
"memberof": "src/component/npm/npm-module.js",
"static": true,
"longname": "src/component/npm/npm-module.js~NpmModule",
"access": null,
"export": true,
"importPath": "recink/src/component/npm/npm-module.js",
"importStyle": "NpmModule",
"description": "Abstraction over an NPM module",
"lineNumber": 14,
"interface": false
},
{
"__docId__": 299,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#constructor",
"access": null,
"description": "",
"lineNumber": 20,
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "rootDir",
"description": ""
},
{
"nullable": null,
"types": [
"Cache"
],
"spread": false,
"optional": false,
"name": "cache",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "logger",
"description": ""
}
]
},
{
"__docId__": 300,
"kind": "member",
"name": "_rootDir",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_rootDir",
"access": null,
"description": null,
"lineNumber": 21,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 301,
"kind": "member",
"name": "_cache",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_cache",
"access": null,
"description": null,
"lineNumber": 22,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 302,
"kind": "member",
"name": "_logger",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_logger",
"access": null,
"description": null,
"lineNumber": 23,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 303,
"kind": "get",
"name": "logger",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#logger",
"access": null,
"description": "",
"lineNumber": 29,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 304,
"kind": "get",
"name": "rootDir",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#rootDir",
"access": null,
"description": "",
"lineNumber": 36,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 305,
"kind": "get",
"name": "cache",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#cache",
"access": null,
"description": "",
"lineNumber": 43,
"params": [
{
"nullable": null,
"types": [
"Cache"
],
"spread": false,
"optional": false,
"name": "cache",
"description": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 306,
"kind": "get",
"name": "packageFileRelative",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#packageFileRelative",
"access": null,
"description": "",
"lineNumber": 50,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 307,
"kind": "get",
"name": "packageFile",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#packageFile",
"access": null,
"description": "",
"lineNumber": 57,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 308,
"kind": "get",
"name": "modulesDir",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#modulesDir",
"access": null,
"description": "",
"lineNumber": 64,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 309,
"kind": "get",
"name": "debugFile",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#debugFile",
"access": null,
"description": "",
"lineNumber": 71,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 310,
"kind": "method",
"name": "install",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#install",
"access": null,
"description": "",
"lineNumber": 81,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "deps",
"description": ""
},
{
"nullable": null,
"types": [
"array"
],
"spread": false,
"optional": false,
"name": "scripts",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 311,
"kind": "method",
"name": "_runScripts",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_runScripts",
"access": "private",
"description": "",
"lineNumber": 121,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"array"
],
"spread": false,
"optional": false,
"name": "scripts",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 312,
"kind": "method",
"name": "_runScript",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_runScript",
"access": "private",
"description": "",
"lineNumber": 138,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "script",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 313,
"kind": "method",
"name": "_install",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_install",
"access": "private",
"description": "",
"lineNumber": 174,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "packageFile",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "additionalDeps",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 314,
"kind": "method",
"name": "_trimDepsDebugInfo",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_trimDepsDebugInfo",
"access": "private",
"description": "",
"lineNumber": 198,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "depsDebug",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 315,
"kind": "method",
"name": "_doInstall",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_doInstall",
"access": "private",
"description": "",
"lineNumber": 213,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"array"
],
"spread": false,
"optional": false,
"name": "deps",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 316,
"kind": "method",
"name": "_packageHash",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_packageHash",
"access": "private",
"description": "",
"lineNumber": 256,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "packageFile",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "deps",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 317,
"kind": "method",
"name": "_depsHash",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm/npm-module.js~NpmModule#_depsHash",
"access": "private",
"description": "",
"lineNumber": 284,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "deps",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 318,
"kind": "get",
"name": "DEFAULT_HASH",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/npm/npm-module.js~NpmModule.DEFAULT_HASH",
"access": null,
"description": "",
"lineNumber": 297,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 319,
"kind": "get",
"name": "NPM_DEBUG_FILE",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/npm/npm-module.js~NpmModule.NPM_DEBUG_FILE",
"access": null,
"description": "",
"lineNumber": 304,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 320,
"kind": "get",
"name": "PACKAGE_FILE",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/npm/npm-module.js~NpmModule.PACKAGE_FILE",
"access": null,
"description": "",
"lineNumber": 311,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 321,
"kind": "get",
"name": "MODULES_DIR",
"memberof": "src/component/npm/npm-module.js~NpmModule",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/npm/npm-module.js~NpmModule.MODULES_DIR",
"access": null,
"description": "",
"lineNumber": 318,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 322,
"kind": "file",
"name": "src/component/npm-component.js",
"content": "'use strict';\n\nconst DependencyBasedComponent = require('./dependency-based-component');\nconst emitEvents = require('./emit/events');\nconst events = require('./npm/events');\nconst os = require('os');\nconst fse = require('fs-extra');\nconst NpmModule = require('./npm/npm-module');\nconst Cache = require('./npm/cache');\nconst path = require('path');\n\n/**\n * NPM component\n */\nclass NpmComponent extends DependencyBasedComponent {\n /**\n * @param {*} args\n */\n constructor(...args) {\n super(...args);\n \n this._cacheDir = null;\n this._cache = {};\n }\n \n /**\n * @returns {string}\n */\n get name() {\n return 'npm';\n }\n \n /**\n * @returns {string[]}\n */\n get dependencies() {\n return [ 'emit' ];\n }\n \n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n cacheDir(emitter) {\n if (this._cacheDir) {\n return Promise.resolve(this._cacheDir);\n }\n \n this._cacheDir = path.join(os.tmpdir(), '_recink_npm_cache_');\n \n return fse.ensureDir(this._cacheDir)\n .then(() => {\n this.logger.debug('Npm cache', this._cacheDir);\n \n return emitter.emitBlocking(events.npm.cache.init, this._cacheDir)\n .then(() => Promise.resolve(this._cacheDir));\n });\n }\n \n /**\n * @param {Emitter} emitter\n * @param {string} name\n * \n * @returns {Promise}\n */\n cache(emitter, name) {\n if (this._cache.hasOwnProperty(name)) {\n return Promise.resolve(this._cache[name]);\n }\n \n return this.cacheDir(emitter)\n .then(cacheDir => {\n this._cache[name] = new Cache(cacheDir, name);\n \n return Promise.resolve(this._cache[name]);\n });\n }\n \n /**\n * @param {Emitter} emitter\n * \n * @returns {Promise}\n */\n run(emitter) {\n return new Promise(resolve => {\n emitter.onBlocking(emitEvents.module.process.start, emitModule => {\n return this.cache(emitter, emitModule.name)\n .then(cache => {\n const npmModule = new NpmModule(\n emitModule.container.get('root'),\n cache,\n this.logger\n );\n \n this.logger.info(\n this.logger.emoji.hat, \n `Ensure dependencies in place for ${ emitModule.name }`\n );\n \n emitter.emit(events.npm.dependencies.install, npmModule, emitModule);\n \n return npmModule.install(\n Object.assign(\n {}, \n this.container.get('dependencies', {}), \n emitModule.container.get('dependencies', {})\n ),\n [].concat(\n this.container.get('scripts', []),\n emitModule.container.get('scripts', [])\n )\n ).then(() => { \n emitter.emit(events.npm.dependencies.postinstall, npmModule, emitModule);\n });\n });\n });\n \n emitter.on(emitEvents.modules.process.end, () => {\n process.nextTick(() => resolve());\n });\n });\n }\n}\n\nmodule.exports = NpmComponent;\n",
"static": true,
"longname": "src/component/npm-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 323,
"kind": "class",
"name": "NpmComponent",
"memberof": "src/component/npm-component.js",
"static": true,
"longname": "src/component/npm-component.js~NpmComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/npm-component.js",
"importStyle": "NpmComponent",
"description": "NPM component",
"lineNumber": 15,
"interface": false,
"extends": [
"src/component/dependency-based-component.js~DependencyBasedComponent"
]
},
{
"__docId__": 324,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/npm-component.js~NpmComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#constructor",
"access": null,
"description": "",
"lineNumber": 19,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
]
},
{
"__docId__": 325,
"kind": "member",
"name": "_cacheDir",
"memberof": "src/component/npm-component.js~NpmComponent",
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#_cacheDir",
"access": null,
"description": null,
"lineNumber": 22,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 326,
"kind": "member",
"name": "_cache",
"memberof": "src/component/npm-component.js~NpmComponent",
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#_cache",
"access": null,
"description": null,
"lineNumber": 23,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 327,
"kind": "get",
"name": "name",
"memberof": "src/component/npm-component.js~NpmComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#name",
"access": null,
"description": "",
"lineNumber": 29,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 328,
"kind": "get",
"name": "dependencies",
"memberof": "src/component/npm-component.js~NpmComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#dependencies",
"access": null,
"description": "",
"lineNumber": 36,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string[]}"
}
],
"return": {
"nullable": null,
"types": [
"string[]"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string[]"
]
}
},
{
"__docId__": 329,
"kind": "method",
"name": "cacheDir",
"memberof": "src/component/npm-component.js~NpmComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#cacheDir",
"access": null,
"description": "",
"lineNumber": 45,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 330,
"kind": "member",
"name": "_cacheDir",
"memberof": "src/component/npm-component.js~NpmComponent",
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#_cacheDir",
"access": null,
"description": null,
"lineNumber": 50,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 331,
"kind": "method",
"name": "cache",
"memberof": "src/component/npm-component.js~NpmComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#cache",
"access": null,
"description": "",
"lineNumber": 67,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 332,
"kind": "method",
"name": "run",
"memberof": "src/component/npm-component.js~NpmComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/npm-component.js~NpmComponent#run",
"access": null,
"description": "",
"lineNumber": 85,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 333,
"kind": "file",
"name": "src/component/preprocess/abstract-transformer.js",
"content": "'use strict';\n\n/**\n * Transformer interface\n */\nclass AbstractTransformer {\n /**\n * @param {*} value\n *\n * @throws {Error}\n */\n transform(value) {\n throw new Error(\n `${ this.constructor.name }.transform(value) not implemented!`\n );\n }\n}\n\nmodule.exports = AbstractTransformer;\n",
"static": true,
"longname": "src/component/preprocess/abstract-transformer.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 334,
"kind": "class",
"name": "AbstractTransformer",
"memberof": "src/component/preprocess/abstract-transformer.js",
"static": true,
"longname": "src/component/preprocess/abstract-transformer.js~AbstractTransformer",
"access": null,
"export": true,
"importPath": "recink/src/component/preprocess/abstract-transformer.js",
"importStyle": "AbstractTransformer",
"description": "Transformer interface",
"lineNumber": 6,
"interface": false
},
{
"__docId__": 335,
"kind": "method",
"name": "transform",
"memberof": "src/component/preprocess/abstract-transformer.js~AbstractTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/preprocess/abstract-transformer.js~AbstractTransformer#transform",
"access": null,
"description": "",
"lineNumber": 12,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"throws": [
{
"types": [
"Error"
],
"description": ""
}
]
},
{
"__docId__": 336,
"kind": "file",
"name": "src/component/preprocess/eval-transformer.js",
"content": "'use strict';\n\n/* eslint no-eval: 0 */\n\nconst AbstractTransformer = require('./abstract-transformer');\nconst Logger = require('../../../src/logger');\n\n/**\n * Transformer implementation of 'eval'\n */\nclass EvalTransformer extends AbstractTransformer {\n /**\n * @param {*} value\n * \n * @returns {*}\n */\n transform(value) {\n try {\n return eval(value);\n } catch (err) {\n Logger.debug(Logger.emoji.bulb, `Is not possible to evaluate ${value} variable, leaving as is`);\n return value;\n }\n }\n}\n\nmodule.exports = EvalTransformer;\n",
"static": true,
"longname": "src/component/preprocess/eval-transformer.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 337,
"kind": "class",
"name": "EvalTransformer",
"memberof": "src/component/preprocess/eval-transformer.js",
"static": true,
"longname": "src/component/preprocess/eval-transformer.js~EvalTransformer",
"access": null,
"export": true,
"importPath": "recink/src/component/preprocess/eval-transformer.js",
"importStyle": "EvalTransformer",
"description": "Transformer implementation of 'eval'",
"lineNumber": 11,
"interface": false,
"extends": [
"src/component/preprocess/abstract-transformer.js~AbstractTransformer"
]
},
{
"__docId__": 338,
"kind": "method",
"name": "transform",
"memberof": "src/component/preprocess/eval-transformer.js~EvalTransformer",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/preprocess/eval-transformer.js~EvalTransformer#transform",
"access": null,
"description": "",
"lineNumber": 17,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 339,
"kind": "file",
"name": "src/component/preprocess/factory.js",
"content": "'use strict';\n\nconst AbstractTransformer = require('./abstract-transformer');\n\n/**\n * Transformer factory\n */\nclass Factory { \n /**\n * @param {string} name\n * @param {*} args\n *\n * @returns {AbstractTransformer}\n */\n static create(name, ...args) {\n const TransformerImplementation = require(`./${ name }-transformer`);\n const transformer = new TransformerImplementation(...args);\n \n if (!(transformer instanceof AbstractTransformer)) {\n throw new Error(`${ name } transformer should be an implementation of AbstractTransformer`);\n }\n \n return transformer;\n }\n \n /**\n * @param {*} args\n *\n * @returns {VoidDriver}\n */\n static eval(...args) {\n return this.create('eval', ...args);\n }\n}\n\nmodule.exports = Factory;\n",
"static": true,
"longname": "src/component/preprocess/factory.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 340,
"kind": "class",
"name": "Factory",
"memberof": "src/component/preprocess/factory.js",
"static": true,
"longname": "src/component/preprocess/factory.js~Factory",
"access": null,
"export": true,
"importPath": "recink/src/component/preprocess/factory.js",
"importStyle": "Factory",
"description": "Transformer factory",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 341,
"kind": "method",
"name": "create",
"memberof": "src/component/preprocess/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/preprocess/factory.js~Factory.create",
"access": null,
"description": "",
"lineNumber": 15,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractTransformer}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractTransformer"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 342,
"kind": "method",
"name": "eval",
"memberof": "src/component/preprocess/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/preprocess/factory.js~Factory.eval",
"access": null,
"description": "",
"lineNumber": 31,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{VoidDriver}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"VoidDriver"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 343,
"kind": "file",
"name": "src/component/preprocess-component.js",
"content": "'use strict';\n\nconst AbstractComponent = require('./abstract-component');\nconst ConfigBasedComponent = require('./config-based-component');\nconst factory = require('./preprocess/factory');\nconst Container = require('../container');\n\n/**\n * Preprocess component\n */\nclass PreprocessComponent extends AbstractComponent {\n /**\n * @param {string} configPath\n */\n constructor(configPath = null) {\n super();\n \n this._configPath = configPath \n || `${ ConfigBasedComponent.MAIN_CONFIG_KEY }.${ this.name }`;\n }\n \n /**\n * @returns {string}\n */\n get name() {\n return 'preprocess';\n }\n /**\n * @returns {string}\n */\n get configPath() {\n return this._configPath;\n }\n \n /**\n * @param {Emitter} emitter\n *\n * @returns {Promise}\n */\n subscribe(emitter) {\n emitter.onBlocking(this.events.config.preprocess, config => {\n const container = new Container(config);\n \n if (container.has(this.configPath)) {\n this.setActive(true);\n \n const preprocessObj = container.get(this.configPath, {});\n \n Object.keys(preprocessObj).map(configPath => {\n let preprocessors = preprocessObj[configPath];\n preprocessors = Array.isArray(preprocessors) \n ? preprocessors : [ preprocessors.toString() ];\n \n this.logger.debug(\n `Preprocess ${ configPath } using - ${preprocessors.join(', ') }`\n );\n \n const value = preprocessors.map(p => factory[p]()).reduce(\n (value, preprocessor) => preprocessor.transform(value),\n container.get(configPath)\n );\n \n container.set(configPath, value);\n });\n }\n \n return Promise.resolve();\n }, PreprocessComponent.DEFAULT_PRIORITY);\n \n return Promise.resolve();\n }\n \n /**\n * @returns {number}\n */\n static get DEFAULT_PRIORITY() {\n return 10;\n }\n}\n\nmodule.exports = PreprocessComponent;\n",
"static": true,
"longname": "src/component/preprocess-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 344,
"kind": "class",
"name": "PreprocessComponent",
"memberof": "src/component/preprocess-component.js",
"static": true,
"longname": "src/component/preprocess-component.js~PreprocessComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/preprocess-component.js",
"importStyle": "PreprocessComponent",
"description": "Preprocess component",
"lineNumber": 11,
"interface": false,
"extends": [
"src/component/abstract-component.js~AbstractComponent"
]
},
{
"__docId__": 345,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/preprocess-component.js~PreprocessComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/preprocess-component.js~PreprocessComponent#constructor",
"access": null,
"description": "",
"lineNumber": 15,
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "configPath",
"description": ""
}
]
},
{
"__docId__": 346,
"kind": "member",
"name": "_configPath",
"memberof": "src/component/preprocess-component.js~PreprocessComponent",
"static": false,
"longname": "src/component/preprocess-component.js~PreprocessComponent#_configPath",
"access": null,
"description": null,
"lineNumber": 18,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 347,
"kind": "get",
"name": "name",
"memberof": "src/component/preprocess-component.js~PreprocessComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/preprocess-component.js~PreprocessComponent#name",
"access": null,
"description": "",
"lineNumber": 25,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 348,
"kind": "get",
"name": "configPath",
"memberof": "src/component/preprocess-component.js~PreprocessComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/preprocess-component.js~PreprocessComponent#configPath",
"access": null,
"description": "",
"lineNumber": 31,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 349,
"kind": "method",
"name": "subscribe",
"memberof": "src/component/preprocess-component.js~PreprocessComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/preprocess-component.js~PreprocessComponent#subscribe",
"access": null,
"description": "",
"lineNumber": 40,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 350,
"kind": "get",
"name": "DEFAULT_PRIORITY",
"memberof": "src/component/preprocess-component.js~PreprocessComponent",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/preprocess-component.js~PreprocessComponent.DEFAULT_PRIORITY",
"access": null,
"description": "",
"lineNumber": 76,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 351,
"kind": "file",
"name": "src/component/test/events.js",
"content": "'use strict';\n\nconst dot = require('dot-object');\n\n/**\n * Test component events\n */\nconst events = {};\n\nevents.$ = [\n 'assets.test.end',\n 'asset.test.skip',\n 'asset.test.add',\n 'asset.tests.start',\n 'asset.tests.end',\n].map(eventPath => {\n dot.str(eventPath, eventPath, events);\n \n return eventPath;\n});\n\nmodule.exports = events;\n",
"static": true,
"longname": "src/component/test/events.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 352,
"kind": "variable",
"name": "events",
"memberof": "src/component/test/events.js",
"static": true,
"longname": "src/component/test/events.js~events",
"access": null,
"export": true,
"importPath": "recink/src/component/test/events.js",
"importStyle": "events",
"description": "Test component events",
"lineNumber": 8,
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 353,
"kind": "file",
"name": "src/component/test/unit-runner.js",
"content": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst Mocha = require('mocha');\nconst uuidv1 = require('uuid/v1');\nconst Logger = require('../../../src/logger');\n\n/**\n * Unit test runner\n */\nclass UnitRunner {\n /**\n * @param {Object} options\n */\n constructor(options = {}) {\n this._tmps = [];\n this._mocha = new Mocha(options);\n }\n\n /**\n * Run tests\n * @param {Array} tests\n * @returns {Promise}\n */\n run(tests) {\n return new Promise((resolve, reject) => {\n tests.forEach(test => {\n const testDir = path.dirname(test);\n const tmpTest = path.join(testDir, `${uuidv1()}.spec.js`);\n\n fs.writeFileSync(tmpTest, fs.readFileSync(test));\n this._tmps.push(tmpTest);\n this._mocha.addFile(tmpTest);\n });\n\n this._mocha.run(err => {\n if (err) {\n this._removeTmpFiles();\n return reject(err);\n }\n\n return resolve();\n });\n });\n }\n\n /**\n * Get mocha instance\n * @returns {Mocha}\n */\n getMocha() {\n return this._mocha;\n }\n\n /**\n * Cleanup action\n * @returns {Promise}\n */\n cleanup() {\n this._removeTmpFiles();\n\n return Promise.resolve();\n }\n\n /**\n * Remove tmp test files\n * @private\n */\n _removeTmpFiles() {\n this._tmps.forEach(tmpTest => {\n try {\n fs.unlinkSync(tmpTest);\n } catch (err) {\n if (err.code !== 'ENOENT') {\n Logger.warn(Logger.emoji.bulb, err.message);\n }\n }\n });\n }\n}\n\nmodule.exports = UnitRunner;\n",
"static": true,
"longname": "src/component/test/unit-runner.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 354,
"kind": "class",
"name": "UnitRunner",
"memberof": "src/component/test/unit-runner.js",
"static": true,
"longname": "src/component/test/unit-runner.js~UnitRunner",
"access": null,
"export": true,
"importPath": "recink/src/component/test/unit-runner.js",
"importStyle": "UnitRunner",
"description": "Unit test runner",
"lineNumber": 12,
"interface": false
},
{
"__docId__": 355,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/test/unit-runner.js~UnitRunner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test/unit-runner.js~UnitRunner#constructor",
"access": null,
"description": "",
"lineNumber": 16,
"params": [
{
"nullable": null,
"types": [
"Object"
],
"spread": false,
"optional": false,
"name": "options",
"description": ""
}
]
},
{
"__docId__": 356,
"kind": "member",
"name": "_tmps",
"memberof": "src/component/test/unit-runner.js~UnitRunner",
"static": false,
"longname": "src/component/test/unit-runner.js~UnitRunner#_tmps",
"access": null,
"description": null,
"lineNumber": 17,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*[]"
]
}
},
{
"__docId__": 357,
"kind": "member",
"name": "_mocha",
"memberof": "src/component/test/unit-runner.js~UnitRunner",
"static": false,
"longname": "src/component/test/unit-runner.js~UnitRunner#_mocha",
"access": null,
"description": null,
"lineNumber": 18,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 358,
"kind": "method",
"name": "run",
"memberof": "src/component/test/unit-runner.js~UnitRunner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test/unit-runner.js~UnitRunner#run",
"access": null,
"description": "Run tests",
"lineNumber": 26,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Array"
],
"spread": false,
"optional": false,
"name": "tests",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 359,
"kind": "method",
"name": "getMocha",
"memberof": "src/component/test/unit-runner.js~UnitRunner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test/unit-runner.js~UnitRunner#getMocha",
"access": null,
"description": "Get mocha instance",
"lineNumber": 52,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Mocha}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Mocha"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 360,
"kind": "method",
"name": "cleanup",
"memberof": "src/component/test/unit-runner.js~UnitRunner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test/unit-runner.js~UnitRunner#cleanup",
"access": null,
"description": "Cleanup action",
"lineNumber": 60,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 361,
"kind": "method",
"name": "_removeTmpFiles",
"memberof": "src/component/test/unit-runner.js~UnitRunner",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test/unit-runner.js~UnitRunner#_removeTmpFiles",
"access": "private",
"description": "Remove tmp test files",
"lineNumber": 70,
"params": []
},
{
"__docId__": 362,
"kind": "file",
"name": "src/component/test-component.js",
"content": "'use strict';\n\nconst print = require('print');\nconst unitEvents = require('./test/events');\nconst emitEvents = require('./emit/events');\nconst UnitRunner = require('./test/unit-runner');\nconst ContainerTransformer = require('./helper/container-transformer');\nconst DependencyBasedComponent = require('./dependency-based-component');\n\n/**\n * Test component\n */\nclass TestComponent extends DependencyBasedComponent {\n /**\n * @param {*} args\n */\n constructor(...args) {\n super(...args);\n\n /**\n * _units format\n * @type {{\n * moduleName: {\n * assets: [],\n * runner: UnitRunner\n * }\n * }}\n */\n this._units = {};\n this._stats = {\n total: 0,\n processed: 0,\n ignored: 0,\n };\n }\n \n /**\n * @returns {string}\n */\n get name() {\n return 'test';\n }\n \n /**\n * @returns {string[]}\n */\n get dependencies() {\n return [ 'emit' ];\n }\n\n /**\n * @param {Emitter} emitter\n * @returns {Promise}\n */\n run(emitter) {\n return new Promise((resolve, reject) => {\n const mochaOptions = this.container.get('mocha.options', {});\n\n emitter.onBlocking(emitEvents.module.emit.asset, payload => {\n if (!this._match(payload)) {\n return emitter.emitBlocking(unitEvents.asset.test.skip, payload);\n }\n\n return emitter.emitBlocking(unitEvents.asset.test.add, {}).then(() => {\n const { fileAbs, module } = payload;\n this.logger.info(this.logger.emoji.fist, `New test registered: ${ fileAbs }`);\n\n if (!this._units.hasOwnProperty(module.name)) {\n this._units[module.name] = {\n assets: [],\n runner: new UnitRunner(mochaOptions)\n };\n }\n\n this._units[module.name].assets.push(fileAbs);\n\n return Promise.resolve();\n });\n }, TestComponent.DEFAULT_PRIORITY);\n\n emitter.onBlocking(emitEvents.module.process.end, module => {\n if (!this._units.hasOwnProperty(module.name)) {\n return Promise.resolve();\n }\n\n const unitModule = this._units[module.name];\n const unitRunner = unitModule.runner;\n const mocha = unitRunner.getMocha();\n\n return emitter.emitBlocking(unitEvents.asset.tests.start, mocha, module).then(() => {\n if (unitModule.assets.length <= 0) {\n return Promise.resolve();\n }\n\n return unitRunner.run(unitModule.assets).then(failures => {\n if (failures > 0) {\n return Promise.reject(\n new Error(`Tests failed in module ${ module.name } with ${ failures } failures`)\n );\n }\n\n return unitRunner.cleanup();\n });\n }).then(() => emitter.emitBlocking(unitEvents.asset.tests.end, mocha, module));\n }, TestComponent.DEFAULT_PRIORITY);\n \n emitter.on(emitEvents.modules.process.end, () => {\n this.waitProcessing()\n .then(() => emitter.emitBlocking(unitEvents.assets.test.end, this))\n .then(() => {\n this.logger.info(this.logger.emoji.beer, `Finished processing ${ this.stats.processed } test assets`);\n this.logger.debug(this.dumpStats());\n\n resolve();\n })\n .catch(error => reject(error));\n });\n });\n }\n \n /**\n * @param {*} config\n * @param {string} configFile\n * @returns {Container}\n */\n prepareConfig(config, configFile) {\n return super.prepareConfig(config, configFile)\n .then(container => {\n return (new ContainerTransformer(container))\n .addPattern('pattern')\n .addPattern('ignore')\n .transform();\n });\n }\n \n /**\n * @param {*} payload\n *\n * @returns {boolean}\n * \n * @private\n */\n _match(payload) {\n const pattern = this.container.get('pattern', []);\n const ignore = this.container.get('ignore', []);\n\n const result = pattern.filter(p => this._test(p, payload.file)).length > 0\n && ignore.filter(i => this._test(i, payload.file)).length <= 0;\n \n if (result) {\n this.stats.processed++;\n } else {\n this.stats.ignored++;\n }\n \n this.stats.total++;\n \n return result;\n }\n \n /**\n * @param {string|RegExp} pattern\n * @param {string} value\n *\n * @returns {boolean}\n *\n * @private\n */\n _test(pattern, value) {\n if (!(pattern instanceof RegExp)) {\n return value.indexOf(pattern.toString()) !== -1;\n }\n \n return pattern.test(value);\n }\n \n /**\n * @returns {*}\n */\n get stats() {\n return this._stats;\n }\n \n /**\n * @returns {string}\n */\n dumpStats() {\n return print(this.stats, {\n showArrayIndices: true,\n showArrayLength: true,\n sortProps: false,\n }).replace(/\\t/g, ' ');\n }\n \n /**\n * @returns {number}\n */\n static get DEFAULT_PRIORITY() {\n return 10;\n }\n}\n\nmodule.exports = TestComponent;\n",
"static": true,
"longname": "src/component/test-component.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 363,
"kind": "class",
"name": "TestComponent",
"memberof": "src/component/test-component.js",
"static": true,
"longname": "src/component/test-component.js~TestComponent",
"access": null,
"export": true,
"importPath": "recink/src/component/test-component.js",
"importStyle": "TestComponent",
"description": "Test component",
"lineNumber": 13,
"interface": false,
"extends": [
"src/component/dependency-based-component.js~DependencyBasedComponent"
]
},
{
"__docId__": 364,
"kind": "constructor",
"name": "constructor",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#constructor",
"access": null,
"description": "",
"lineNumber": 17,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
]
},
{
"__docId__": 365,
"kind": "member",
"name": "_units",
"memberof": "src/component/test-component.js~TestComponent",
"static": false,
"longname": "src/component/test-component.js~TestComponent#_units",
"access": null,
"description": "_units format",
"lineNumber": 29,
"type": {
"nullable": null,
"types": [
"{\n moduleName: {\n assets: [],\n runner: UnitRunner\n "
],
"spread": false,
"description": null
}
},
{
"__docId__": 366,
"kind": "member",
"name": "_stats",
"memberof": "src/component/test-component.js~TestComponent",
"static": false,
"longname": "src/component/test-component.js~TestComponent#_stats",
"access": null,
"description": null,
"lineNumber": 30,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"{\"total\": *, \"processed\": *, \"ignored\": *}"
]
}
},
{
"__docId__": 367,
"kind": "get",
"name": "name",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#name",
"access": null,
"description": "",
"lineNumber": 40,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 368,
"kind": "get",
"name": "dependencies",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#dependencies",
"access": null,
"description": "",
"lineNumber": 47,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string[]}"
}
],
"return": {
"nullable": null,
"types": [
"string[]"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string[]"
]
}
},
{
"__docId__": 369,
"kind": "method",
"name": "run",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#run",
"access": null,
"description": "",
"lineNumber": 55,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"optional": false,
"name": "emitter",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 370,
"kind": "method",
"name": "prepareConfig",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#prepareConfig",
"access": null,
"description": "",
"lineNumber": 126,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "configFile",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 371,
"kind": "method",
"name": "_match",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#_match",
"access": "private",
"description": "",
"lineNumber": 143,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "payload",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 372,
"kind": "method",
"name": "_test",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#_test",
"access": "private",
"description": "",
"lineNumber": 169,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"string",
"RegExp"
],
"spread": false,
"optional": false,
"name": "pattern",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 373,
"kind": "get",
"name": "stats",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#stats",
"access": null,
"description": "",
"lineNumber": 180,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 374,
"kind": "method",
"name": "dumpStats",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": false,
"longname": "src/component/test-component.js~TestComponent#dumpStats",
"access": null,
"description": "",
"lineNumber": 187,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 375,
"kind": "get",
"name": "DEFAULT_PRIORITY",
"memberof": "src/component/test-component.js~TestComponent",
"generator": false,
"async": false,
"static": true,
"longname": "src/component/test-component.js~TestComponent.DEFAULT_PRIORITY",
"access": null,
"description": "",
"lineNumber": 198,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 376,
"kind": "file",
"name": "src/config/abstract-config.js",
"content": "'use strict';\n\nconst fs = require('fs');\nconst pify = require('pify');\nconst fse = require('fs-extra');\n\n/**\n * Abstract configuration manager\n */\nclass AbstractConfig {\n /**\n * @param {string} file\n */\n constructor(file = null) {\n this._file = file;\n }\n \n /**\n * @returns {string}\n */\n get file() {\n return this._file;\n }\n \n /**\n * @param {string} file\n *\n * @returns {Promise}\n */\n load(file = null) {\n const configFile = file || this.file;\n \n return fse.pathExists(configFile)\n .then(exists => {\n if (!exists) {\n return Promise.reject(new Error(\n `Missing configuration file ${ configFile }`\n ));\n }\n \n return pify(fs.readFile)(configFile)\n .then(rawConfig => this.decode(rawConfig));\n });\n }\n \n /**\n * @param {*} config\n * @param {string} file\n *\n * @returns {Promise}\n */\n dump(config, file = null) {\n return this.encode(config)\n .then(rawConfig => pify(fs.writeFile)(file || this.file, rawConfig));\n }\n \n /**\n * @param {string} rawConfig\n *\n * @returns {Promise}\n */\n decode(rawConfig) {\n return Promise.reject(new Error(`${ this.constructor.name }.decode(rawConfig) not implemented!`));\n }\n \n /**\n * @param {*} config\n *\n * @returns {Promise}\n */\n encode(config) {\n return Promise.reject(new Error(`${ this.constructor.name }.encode(config) not implemented!`));\n }\n}\n\nmodule.exports = AbstractConfig;\n",
"static": true,
"longname": "src/config/abstract-config.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 377,
"kind": "class",
"name": "AbstractConfig",
"memberof": "src/config/abstract-config.js",
"static": true,
"longname": "src/config/abstract-config.js~AbstractConfig",
"access": null,
"export": true,
"importPath": "recink/src/config/abstract-config.js",
"importStyle": "AbstractConfig",
"description": "Abstract configuration manager",
"lineNumber": 10,
"interface": false
},
{
"__docId__": 378,
"kind": "constructor",
"name": "constructor",
"memberof": "src/config/abstract-config.js~AbstractConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/abstract-config.js~AbstractConfig#constructor",
"access": null,
"description": "",
"lineNumber": 14,
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "file",
"description": ""
}
]
},
{
"__docId__": 379,
"kind": "member",
"name": "_file",
"memberof": "src/config/abstract-config.js~AbstractConfig",
"static": false,
"longname": "src/config/abstract-config.js~AbstractConfig#_file",
"access": null,
"description": null,
"lineNumber": 15,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 380,
"kind": "get",
"name": "file",
"memberof": "src/config/abstract-config.js~AbstractConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/abstract-config.js~AbstractConfig#file",
"access": null,
"description": "",
"lineNumber": 21,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 381,
"kind": "method",
"name": "load",
"memberof": "src/config/abstract-config.js~AbstractConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/abstract-config.js~AbstractConfig#load",
"access": null,
"description": "",
"lineNumber": 30,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "file",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 382,
"kind": "method",
"name": "dump",
"memberof": "src/config/abstract-config.js~AbstractConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/abstract-config.js~AbstractConfig#dump",
"access": null,
"description": "",
"lineNumber": 52,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "file",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 383,
"kind": "method",
"name": "decode",
"memberof": "src/config/abstract-config.js~AbstractConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/abstract-config.js~AbstractConfig#decode",
"access": null,
"description": "",
"lineNumber": 62,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "rawConfig",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 384,
"kind": "method",
"name": "encode",
"memberof": "src/config/abstract-config.js~AbstractConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/abstract-config.js~AbstractConfig#encode",
"access": null,
"description": "",
"lineNumber": 71,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 385,
"kind": "file",
"name": "src/config/factory.js",
"content": "'use strict';\n\nconst AbstractConfig = require('./abstract-config');\n\n/**\n * Configuration factory\n */\nclass Factory {\n /**\n * @param {string} file\n *\n * @returns {YamlConfig}\n */\n static guess(file) {\n if (/\\.ya?ml$/i.test(file)) {\n return this.yaml(file);\n }\n \n throw new Error(`Unknown config format in ${ file }`);\n }\n \n /**\n * @param {string} name\n * @param {*} args\n *\n * @returns {AbstractConfig}\n */\n static create(name, ...args) {\n const ConfigImplementation = require(`./${ name }-config`);\n const config = new ConfigImplementation(...args);\n \n if (!(config instanceof AbstractConfig)) {\n throw new Error(`${ name } config should be an implementation of AbstractConfig`);\n }\n \n return config;\n }\n \n /**\n * @param {*} args\n *\n * @returns {YamlConfig}\n */\n static yaml(...args) {\n return this.create('yaml', ...args);\n }\n}\n\nmodule.exports = Factory;\n",
"static": true,
"longname": "src/config/factory.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 386,
"kind": "class",
"name": "Factory",
"memberof": "src/config/factory.js",
"static": true,
"longname": "src/config/factory.js~Factory",
"access": null,
"export": true,
"importPath": "recink/src/config/factory.js",
"importStyle": "Factory",
"description": "Configuration factory",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 387,
"kind": "method",
"name": "guess",
"memberof": "src/config/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/config/factory.js~Factory.guess",
"access": null,
"description": "",
"lineNumber": 14,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{YamlConfig}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "file",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"YamlConfig"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 388,
"kind": "method",
"name": "create",
"memberof": "src/config/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/config/factory.js~Factory.create",
"access": null,
"description": "",
"lineNumber": 28,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractConfig}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractConfig"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 389,
"kind": "method",
"name": "yaml",
"memberof": "src/config/factory.js~Factory",
"generator": false,
"async": false,
"static": true,
"longname": "src/config/factory.js~Factory.yaml",
"access": null,
"description": "",
"lineNumber": 44,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{YamlConfig}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"YamlConfig"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 390,
"kind": "file",
"name": "src/config/yaml-config.js",
"content": "'use strict';\n\nconst AbstractConfig = require('./abstract-config');\nconst yamlReader = require('yaml-js');\nconst yamlWriter = require('yamljs');\n\n/**\n * YAML configuration manager\n */\nclass YamlConfig extends AbstractConfig {\n /**\n * @param {string} rawConfig\n *\n * @returns {Promise}\n */\n decode(rawConfig) {\n try {\n return Promise.resolve(yamlReader.load(rawConfig));\n } catch (error) {\n return Promise.reject(error);\n }\n }\n \n /**\n * @param {*} config\n *\n * @returns {Promise}\n */\n encode(config) {\n try {\n return Promise.resolve(yamlWriter.stringify(\n config, \n YamlConfig.INLINE_DEPTH, \n YamlConfig.INDENTATION\n ));\n } catch (error) {\n return Promise.reject(error);\n }\n }\n \n /**\n * @returns {number}\n */\n static get INLINE_DEPTH() {\n return 8;\n }\n \n /**\n * @returns {number}\n */\n static get INDENTATION() {\n return 2;\n }\n}\n\nmodule.exports = YamlConfig;\n",
"static": true,
"longname": "src/config/yaml-config.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 391,
"kind": "class",
"name": "YamlConfig",
"memberof": "src/config/yaml-config.js",
"static": true,
"longname": "src/config/yaml-config.js~YamlConfig",
"access": null,
"export": true,
"importPath": "recink/src/config/yaml-config.js",
"importStyle": "YamlConfig",
"description": "YAML configuration manager",
"lineNumber": 10,
"interface": false,
"extends": [
"src/config/abstract-config.js~AbstractConfig"
]
},
{
"__docId__": 392,
"kind": "method",
"name": "decode",
"memberof": "src/config/yaml-config.js~YamlConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/yaml-config.js~YamlConfig#decode",
"access": null,
"description": "",
"lineNumber": 16,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "rawConfig",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 393,
"kind": "method",
"name": "encode",
"memberof": "src/config/yaml-config.js~YamlConfig",
"generator": false,
"async": false,
"static": false,
"longname": "src/config/yaml-config.js~YamlConfig#encode",
"access": null,
"description": "",
"lineNumber": 29,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 394,
"kind": "get",
"name": "INLINE_DEPTH",
"memberof": "src/config/yaml-config.js~YamlConfig",
"generator": false,
"async": false,
"static": true,
"longname": "src/config/yaml-config.js~YamlConfig.INLINE_DEPTH",
"access": null,
"description": "",
"lineNumber": 44,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 395,
"kind": "get",
"name": "INDENTATION",
"memberof": "src/config/yaml-config.js~YamlConfig",
"generator": false,
"async": false,
"static": true,
"longname": "src/config/yaml-config.js~YamlConfig.INDENTATION",
"access": null,
"description": "",
"lineNumber": 51,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 396,
"kind": "file",
"name": "src/container.js",
"content": "'use strict';\n\nconst print = require('print');\nconst dot = require('dot-object');\ndot.overwrite = true;\n\n/**\n * Configuration container\n */\nclass Container {\n /**\n * @param {*} config\n */\n constructor(config = {}) {\n this._config = config;\n }\n \n /**\n * @param {*} config\n *\n * @returns {Container}\n */\n reload(config) {\n this._config = config;\n \n return this;\n }\n \n /**\n * @returns {Array}\n */\n listKeys() {\n return Object.keys(this._config);\n }\n \n /**\n * @param {string} path\n * @param {*} value\n *\n * @returns {Container}\n */\n set(path, value) {\n dot.str(path, value, this._config);\n \n return this;\n }\n \n /**\n * @param {string} path\n * @param {*} defaultValue\n *\n * @returns {*}\n */\n get(path, defaultValue = null) {\n if (!this.has(path)) {\n return defaultValue;\n }\n \n return dot.pick(path, this._config);\n }\n \n /**\n * @param {string} path\n *\n * @returns {boolean}\n */\n has(path) {\n return typeof dot.pick(path, this._config) !== 'undefined';\n }\n\n /**\n * Remove the value\n * @param {String} path\n * @return {Container}\n */\n del(path) {\n dot.del(path, this._config);\n\n return this;\n }\n \n /**\n * @returns {string}\n */\n dump() {\n return print(this.raw, {\n showArrayIndices: true,\n showArrayLength: true,\n sortProps: false,\n }).replace(/\\t/g, ' ');\n }\n \n /**\n * @returns {*}\n */\n get raw() {\n return this._config;\n }\n}\n\nmodule.exports = Container;\n",
"static": true,
"longname": "src/container.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 397,
"kind": "class",
"name": "Container",
"memberof": "src/container.js",
"static": true,
"longname": "src/container.js~Container",
"access": null,
"export": true,
"importPath": "recink/src/container.js",
"importStyle": "Container",
"description": "Configuration container",
"lineNumber": 10,
"interface": false
},
{
"__docId__": 398,
"kind": "constructor",
"name": "constructor",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#constructor",
"access": null,
"description": "",
"lineNumber": 14,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
}
]
},
{
"__docId__": 399,
"kind": "member",
"name": "_config",
"memberof": "src/container.js~Container",
"static": false,
"longname": "src/container.js~Container#_config",
"access": null,
"description": null,
"lineNumber": 15,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 400,
"kind": "method",
"name": "reload",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#reload",
"access": null,
"description": "",
"lineNumber": 23,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 401,
"kind": "member",
"name": "_config",
"memberof": "src/container.js~Container",
"static": false,
"longname": "src/container.js~Container#_config",
"access": null,
"description": null,
"lineNumber": 24,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 402,
"kind": "method",
"name": "listKeys",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#listKeys",
"access": null,
"description": "",
"lineNumber": 32,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Array}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Array"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 403,
"kind": "method",
"name": "set",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#set",
"access": null,
"description": "",
"lineNumber": 42,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "value",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 404,
"kind": "method",
"name": "get",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#get",
"access": null,
"description": "",
"lineNumber": 54,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "defaultValue",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 405,
"kind": "method",
"name": "has",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#has",
"access": null,
"description": "",
"lineNumber": 67,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 406,
"kind": "method",
"name": "del",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#del",
"access": null,
"description": "Remove the value",
"lineNumber": 76,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "path",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 407,
"kind": "method",
"name": "dump",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#dump",
"access": null,
"description": "",
"lineNumber": 85,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 408,
"kind": "get",
"name": "raw",
"memberof": "src/container.js~Container",
"generator": false,
"async": false,
"static": false,
"longname": "src/container.js~Container#raw",
"access": null,
"description": "",
"lineNumber": 96,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 409,
"kind": "file",
"name": "src/emitter.js",
"content": "'use strict';\n\nconst EventEmitter = require('events');\n\n/**\n * Extended Emitter implementation\n */\nclass Emitter extends EventEmitter {\n /**\n * @param {*} args\n */\n constructor(...args) {\n super(...args);\n \n this._blockingListeners = {};\n this._processing = {};\n this._parallel = {};\n }\n \n /**\n * @param {string} event\n * @param {number} count\n *\n * @returns {Emitter}\n */\n maxParallel(event, count) {\n this._parallel[event] = count;\n \n return this;\n }\n \n /**\n * @param {string} event\n * @param {*} args\n *\n * @returns {Promise}\n */\n emitBlocking(event, ...args) {\n return this._waitAllowParallel(event)\n .then(() => this._dispatch(event, args))\n .then(() => {\n this\n ._cleanupListeners(event)\n ._removeParallel(event)\n .emit(event, ...args);\n \n return Promise.resolve();\n })\n .catch(error => {\n this\n ._cleanupListeners(event)\n ._removeParallel(event);\n \n return Promise.reject(error);\n });\n }\n \n /**\n * @param {string} event\n * @param {function} listener\n * @param {number} priority\n *\n * @returns {Emitter}\n */\n onBlocking(event, listener, priority = Emitter.DEFAULT_PRIORITY) {\n return this._pushListener(event, listener, priority, 'on');\n }\n \n /**\n * @param {string} event\n * @param {function} listener\n * @param {number} priority\n *\n * @returns {Emitter}\n */\n onceBlocking(event, listener, priority = Emitter.DEFAULT_PRIORITY) {\n return this._pushListener(event, listener, priority, 'once');\n }\n \n /**\n * @param {string} event\n *\n * @returns {Emitter}\n *\n * @private\n */\n _removeParallel(event) {\n if (!this._processing.hasOwnProperty(event)) {\n return this;\n }\n \n this._processing[event]--;\n \n return this;\n }\n \n /**\n * @param {string} event\n *\n * @returns {Emitter}\n *\n * @private\n */\n _addParallel(event) {\n this._processing[event] = this._processing[event] || 0;\n this._processing[event]++;\n \n return this;\n }\n \n /**\n * @param {string} event\n *\n * @returns {boolean}\n *\n * @private\n */\n _allowParallel(event) {\n return !this._parallel.hasOwnProperty(event)\n || !this._processing.hasOwnProperty(event)\n || this._processing[event] < this._parallel[event];\n }\n \n /**\n * @param {string} event\n * @param {number} interval\n *\n * @returns {Promise}\n *\n * @private\n */\n _waitAllowParallel(event, interval = 100) {\n if (this._allowParallel(event)) {\n this._addParallel(event);\n return Promise.resolve();\n }\n \n return new Promise(resolve => {\n const id = setInterval(() => {\n if (this._allowParallel(event)) {\n this._addParallel(event);\n clearInterval(id);\n process.nextTick(() => resolve());\n }\n }, interval);\n });\n }\n \n /**\n * @param {string} event\n * @param {function} listener\n * @param {number} priority\n * @param {string} method\n *\n * @returns {Emitter}\n *\n * @private\n */\n _pushListener(event, listener, priority, method) {\n this._blockingListeners[event] = this._blockingListeners[event] || [];\n this._blockingListeners[event].push({ listener, priority, method });\n this._blockingListeners[event].sort((a, b) => {\n return b.priority - a.priority;\n });\n \n return this;\n }\n \n /**\n * @param {string} event\n *\n * @returns {Emitter}\n * \n * @private\n */\n _cleanupListeners(event) {\n if (!this._blockingListeners.hasOwnProperty(event) ) {\n return this;\n }\n \n this._blockingListeners[event] = this._blockingListeners[event].filter(l => !!l);\n \n return this;\n }\n \n /**\n * @param {string} event\n * @param {*} args\n * @param {number} _i\n * \n * @returns {Promise}\n * \n * @private\n */\n _dispatch(event, args, _i = 0) { \n if (!this._blockingListeners.hasOwnProperty(event) \n || this._blockingListeners[event].length < _i + 1) {\n return Promise.resolve();\n }\n \n const dispatcher = this._blockingListeners[event][_i];\n const result = dispatcher.listener(...args);\n \n if (dispatcher.method === 'once') {\n delete this._blockingListeners[event][_i];\n }\n \n if (!result || typeof result !== 'object' || !(result instanceof Promise)) {\n return this._dispatch(event, args, _i + 1);\n }\n \n return result.then(() => this._dispatch(event, args, _i + 1));\n }\n \n /**\n * @returns {number}\n */\n static get DEFAULT_PRIORITY() {\n return 0;\n }\n}\n\nmodule.exports = Emitter;\n",
"static": true,
"longname": "src/emitter.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 410,
"kind": "class",
"name": "Emitter",
"memberof": "src/emitter.js",
"static": true,
"longname": "src/emitter.js~Emitter",
"access": null,
"export": true,
"importPath": "recink/src/emitter.js",
"importStyle": "Emitter",
"description": "Extended Emitter implementation",
"lineNumber": 8,
"interface": false,
"extends": [
"events~EventEmitter"
]
},
{
"__docId__": 411,
"kind": "constructor",
"name": "constructor",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#constructor",
"access": null,
"description": "",
"lineNumber": 12,
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
]
},
{
"__docId__": 412,
"kind": "member",
"name": "_blockingListeners",
"memberof": "src/emitter.js~Emitter",
"static": false,
"longname": "src/emitter.js~Emitter#_blockingListeners",
"access": null,
"description": null,
"lineNumber": 15,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 413,
"kind": "member",
"name": "_processing",
"memberof": "src/emitter.js~Emitter",
"static": false,
"longname": "src/emitter.js~Emitter#_processing",
"access": null,
"description": null,
"lineNumber": 16,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 414,
"kind": "member",
"name": "_parallel",
"memberof": "src/emitter.js~Emitter",
"static": false,
"longname": "src/emitter.js~Emitter#_parallel",
"access": null,
"description": null,
"lineNumber": 17,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 415,
"kind": "method",
"name": "maxParallel",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#maxParallel",
"access": null,
"description": "",
"lineNumber": 26,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "count",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 416,
"kind": "method",
"name": "emitBlocking",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#emitBlocking",
"access": null,
"description": "",
"lineNumber": 38,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 417,
"kind": "method",
"name": "onBlocking",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#onBlocking",
"access": null,
"description": "",
"lineNumber": 65,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
},
{
"nullable": null,
"types": [
"function"
],
"spread": false,
"optional": false,
"name": "listener",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "priority",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 418,
"kind": "method",
"name": "onceBlocking",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#onceBlocking",
"access": null,
"description": "",
"lineNumber": 76,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
},
{
"nullable": null,
"types": [
"function"
],
"spread": false,
"optional": false,
"name": "listener",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "priority",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 419,
"kind": "method",
"name": "_removeParallel",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#_removeParallel",
"access": "private",
"description": "",
"lineNumber": 87,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 420,
"kind": "method",
"name": "_addParallel",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#_addParallel",
"access": "private",
"description": "",
"lineNumber": 104,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 421,
"kind": "method",
"name": "_allowParallel",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#_allowParallel",
"access": "private",
"description": "",
"lineNumber": 118,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 422,
"kind": "method",
"name": "_waitAllowParallel",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#_waitAllowParallel",
"access": "private",
"description": "",
"lineNumber": 132,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "interval",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 423,
"kind": "method",
"name": "_pushListener",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#_pushListener",
"access": "private",
"description": "",
"lineNumber": 159,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
},
{
"nullable": null,
"types": [
"function"
],
"spread": false,
"optional": false,
"name": "listener",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "priority",
"description": ""
},
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "method",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 424,
"kind": "method",
"name": "_cleanupListeners",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#_cleanupListeners",
"access": "private",
"description": "",
"lineNumber": 176,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Emitter}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Emitter"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 425,
"kind": "method",
"name": "_dispatch",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": false,
"longname": "src/emitter.js~Emitter#_dispatch",
"access": "private",
"description": "",
"lineNumber": 195,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "event",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
},
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "_i",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 426,
"kind": "get",
"name": "DEFAULT_PRIORITY",
"memberof": "src/emitter.js~Emitter",
"generator": false,
"async": false,
"static": true,
"longname": "src/emitter.js~Emitter.DEFAULT_PRIORITY",
"access": null,
"description": "",
"lineNumber": 218,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 427,
"kind": "file",
"name": "src/events.js",
"content": "'use strict';\n\nconst dot = require('dot-object');\n\n/**\n * REciNK main events\n */\nconst events = {};\n\nevents.$ = [\n 'config.preprocess',\n 'config.load',\n 'components.load',\n 'components.run',\n 'component.load',\n 'component.init',\n 'component.run',\n 'component.teardown',\n 'component.ready',\n 'component.subscribe',\n].map(eventPath => {\n dot.str(eventPath, eventPath, events);\n \n return eventPath;\n});\n\nmodule.exports = events;\n",
"static": true,
"longname": "src/events.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 428,
"kind": "variable",
"name": "events",
"memberof": "src/events.js",
"static": true,
"longname": "src/events.js~events",
"access": null,
"export": true,
"importPath": "recink/src/events.js",
"importStyle": "events",
"description": "REciNK main events",
"lineNumber": 8,
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 429,
"kind": "file",
"name": "src/helper/env.js",
"content": "'use strict';\n\n/**\n * Environment helpers\n */\nclass Env {\n /**\n * @returns {boolean}\n */\n static get isCI() {\n return Env.isTravis;\n }\n \n /**\n * @returns {boolean}\n */\n static get isTravis() {\n const isCI = !!(Env.read('CI', false) || Env.read('CONTINUOUS_INTEGRATION', false));\n \n return !!(isCI && Env.read('TRAVIS', false));\n }\n \n /**\n * @returns {boolean}\n */\n static get isGlobalInstallation() {\n return !!Env.read('npm_config_global', false);\n }\n \n /**\n * @param {string} name\n * \n * @returns {*}\n */\n static exists(name) {\n return process.env.hasOwnProperty(name);\n }\n \n /**\n * @param {string} name\n * @param {*} defaultValue\n * \n * @returns {*}\n */\n static read(name, defaultValue = null) {\n if (!Env.exists(name)) {\n return defaultValue;\n }\n \n return process.env[name];\n }\n}\n\nmodule.exports = Env;\n",
"static": true,
"longname": "src/helper/env.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 430,
"kind": "class",
"name": "Env",
"memberof": "src/helper/env.js",
"static": true,
"longname": "src/helper/env.js~Env",
"access": null,
"export": true,
"importPath": "recink/src/helper/env.js",
"importStyle": "Env",
"description": "Environment helpers",
"lineNumber": 6,
"interface": false
},
{
"__docId__": 431,
"kind": "get",
"name": "isCI",
"memberof": "src/helper/env.js~Env",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/env.js~Env.isCI",
"access": null,
"description": "",
"lineNumber": 10,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 432,
"kind": "get",
"name": "isTravis",
"memberof": "src/helper/env.js~Env",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/env.js~Env.isTravis",
"access": null,
"description": "",
"lineNumber": 17,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 433,
"kind": "get",
"name": "isGlobalInstallation",
"memberof": "src/helper/env.js~Env",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/env.js~Env.isGlobalInstallation",
"access": null,
"description": "",
"lineNumber": 26,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{boolean}"
}
],
"return": {
"nullable": null,
"types": [
"boolean"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 434,
"kind": "method",
"name": "exists",
"memberof": "src/helper/env.js~Env",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/env.js~Env.exists",
"access": null,
"description": "",
"lineNumber": 35,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 435,
"kind": "method",
"name": "read",
"memberof": "src/helper/env.js~Env",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/env.js~Env.read",
"access": null,
"description": "",
"lineNumber": 45,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "defaultValue",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 436,
"kind": "file",
"name": "src/helper/util.js",
"content": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\n\n/**\n * Read directory recursively\n * @param {String} dir Directory path\n * @param {RegExp} include Pattern to include files\n * @param {RegExp} exclude Pattern to exclude directories\n * @param {Function} callback\n * @private\n */\nfunction _walkDir(dir, include, exclude, callback) {\n if (!fs.existsSync(dir)) {\n return;\n }\n\n let files = fs.readdirSync(dir);\n\n for (let i = 0; i < files.length; i++) {\n let filename = path.join(dir, files[i]);\n let stat = fs.lstatSync(filename);\n\n if (stat.isDirectory()) {\n let dirName = path.basename(filename);\n\n if (exclude.test(dirName)) {\n continue;\n }\n\n _walkDir(filename, include, exclude, callback);\n } else if (include.test(filename)) {\n callback(filename);\n }\n }\n}\n\n/**\n * Find files by RegExp pattern except dirs\n * @param {String} dir Directory to search\n * @param {RegExp} include Pattern to filter\n * @param {RegExp} exclude Pattern to exclude directories\n * @return {Array}\n */\nfunction findFilesByPattern(dir, include = /.*/, exclude = /^$/) {\n let fileNames = [];\n _walkDir(dir, include, exclude, (fileName) => fileNames.push(fileName));\n\n return fileNames;\n}\n\nexports.findFilesByPattern = findFilesByPattern;\n\n/**\n * Remove all prefixes or suffixes from the given string\n * @param {String} string\n * @param {String} symbol\n * @returns {String}\n */\nfunction trimBoth(string, symbol = '\\s') {\n const leading = new RegExp(`^${symbol}`);\n const trailing = new RegExp(`${symbol}$`);\n\n return string.replace(leading, '').replace(trailing, '');\n}\n\nexports.trimBoth = trimBoth;\n\n/**\n * Fill string with symbols\n * @param {String} str\n * @param {Number} length\n * @param {String} symbol\n * @returns {String}\n */\nfunction fillString(str, length, symbol = 'x') {\n let result = str;\n\n while (result.length < length) {\n result += symbol;\n }\n\n return result;\n}\n\nexports.fillString = fillString;\n\n/**\n * Compare two software version\n * v1 == v2 => 0\n * v1 < v2 => -1\n * v1 > v2 => 1\n * @param {String} v1\n * @param {String} v2\n * @returns {Number}\n */\nfunction versionCompare(v1, v2) {\n const fillTo = 10;\n let ver1 = v1.split('.').map(x => fillString(x.trim().toLowerCase(), fillTo, '#')).join('');\n let ver2 = v2.split('.').map(x => fillString(x.trim().toLowerCase(), fillTo, '#')).join('');\n let maxLength = Math.max(ver1.length, ver2.length);\n\n ver1 = fillString(ver1, maxLength, '#');\n ver2 = fillString(ver2, maxLength, '#');\n\n for (let i = 0; i < maxLength; i++) {\n let char1 = ver1.charCodeAt(i);\n let char2 = ver2.charCodeAt(i);\n\n if (char1 > 96) {\n char1 -= 60;\n }\n\n if (char2 > 96) {\n char2 -= 60;\n }\n\n if (char1 !== char2) {\n return (char1 > char2) ? 1 : -1;\n }\n }\n\n return 0;\n}\n\nexports.versionCompare = versionCompare;\n",
"static": true,
"longname": "src/helper/util.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 437,
"kind": "function",
"name": "_walkDir",
"memberof": "src/helper/util.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/util.js~_walkDir",
"access": "private",
"export": false,
"importPath": "recink/src/helper/util.js",
"importStyle": null,
"description": "Read directory recursively",
"lineNumber": 14,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "dir",
"description": "Directory path"
},
{
"nullable": null,
"types": [
"RegExp"
],
"spread": false,
"optional": false,
"name": "include",
"description": "Pattern to include files"
},
{
"nullable": null,
"types": [
"RegExp"
],
"spread": false,
"optional": false,
"name": "exclude",
"description": "Pattern to exclude directories"
},
{
"nullable": null,
"types": [
"Function"
],
"spread": false,
"optional": false,
"name": "callback",
"description": ""
}
]
},
{
"__docId__": 438,
"kind": "function",
"name": "findFilesByPattern",
"memberof": "src/helper/util.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/util.js~findFilesByPattern",
"access": null,
"export": true,
"importPath": "recink/src/helper/util.js",
"importStyle": "{findFilesByPattern}",
"description": "Find files by RegExp pattern except dirs",
"lineNumber": 46,
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "dir",
"description": "Directory to search"
},
{
"nullable": null,
"types": [
"RegExp"
],
"spread": false,
"optional": false,
"name": "include",
"description": "Pattern to filter"
},
{
"nullable": null,
"types": [
"RegExp"
],
"spread": false,
"optional": false,
"name": "exclude",
"description": "Pattern to exclude directories"
}
],
"return": {
"nullable": null,
"types": [
"Array"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 439,
"kind": "function",
"name": "trimBoth",
"memberof": "src/helper/util.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/util.js~trimBoth",
"access": null,
"export": true,
"importPath": "recink/src/helper/util.js",
"importStyle": "{trimBoth}",
"description": "Remove all prefixes or suffixes from the given string",
"lineNumber": 61,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "string",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "symbol",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 440,
"kind": "function",
"name": "fillString",
"memberof": "src/helper/util.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/util.js~fillString",
"access": null,
"export": true,
"importPath": "recink/src/helper/util.js",
"importStyle": "{fillString}",
"description": "Fill string with symbols",
"lineNumber": 77,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{String}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "str",
"description": ""
},
{
"nullable": null,
"types": [
"Number"
],
"spread": false,
"optional": false,
"name": "length",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "symbol",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"String"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 441,
"kind": "function",
"name": "versionCompare",
"memberof": "src/helper/util.js",
"generator": false,
"async": false,
"static": true,
"longname": "src/helper/util.js~versionCompare",
"access": null,
"export": true,
"importPath": "recink/src/helper/util.js",
"importStyle": "{versionCompare}",
"description": "Compare two software version\n v1 == v2 => 0\n v1 < v2 => -1\n v1 > v2 => 1",
"lineNumber": 98,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Number}"
}
],
"params": [
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "v1",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "v2",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Number"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 442,
"kind": "file",
"name": "src/logger.js",
"content": "'use strict';\n\nconst chalk = require('chalk');\n\n/**\n * Logger abstraction\n */\nclass Logger {\n /**\n * @returns {chalk} chalk\n */\n static get chalk() {\n return chalk;\n }\n \n /**\n * @param {*} logger\n *\n * @returns {Logger}\n */\n static customLogger(logger) {\n this._customLogger = logger;\n \n return this;\n }\n \n /**\n * @param {number} level\n *\n * @returns {Logger}\n */\n static level(level) {\n this._dbgLevel = level;\n \n return this;\n }\n \n /**\n * @param {number} level\n *\n * @returns {Logger}\n */\n static addLevel(level) {\n this._dbgLevel = this._level | level;\n \n return this;\n }\n \n /**\n * @param {*} args\n * @returns {Logger}\n */\n static debug(...args) {\n return this._exec('debug', ...args);\n }\n \n /**\n * @param {*} args\n * @returns {Logger}\n */\n static log(...args) {\n return this._exec('log', ...args);\n }\n \n /**\n * @param {*} args\n * @returns {Logger}\n */\n static info(...args) {\n return this._exec('info', ...args);\n }\n \n /**\n * @param {*} args\n * \n * @returns {Logger}\n */\n static warn(...args) {\n return this._exec('warn', ...args);\n }\n \n /**\n * @param {*} args\n * \n * @returns {Logger}\n */\n static error(...args) {\n return this._exec('error', ...args);\n }\n \n /**\n * @returns {*}\n *\n * @private\n */\n static get _logger() {\n return this._customLogger || console;\n }\n \n /**\n * @returns {number}\n *\n * @private\n */\n static get _level() {\n return this._dbgLevel || (this.WARN | this.ERROR);\n }\n \n /**\n * @param {string} method\n * @param {*} args\n *\n * @returns {Logger}\n * \n * @private\n */\n static _exec(method, ...args) {\n if (this._logger instanceof console.constructor) {\n if (this._level & this[method.toUpperCase()]) {\n if (method === 'debug') {\n method = 'log';\n }\n \n this._logger[method](\n this._color(method).open,\n ...args,\n this._color(method).close\n );\n }\n } else { // rely on winston compatible logger\n this._logger[method](...args);\n }\n \n return this;\n }\n \n /**\n * @param {string} method\n * \n * @returns {string}\n *\n * @private\n */\n static _color(method) {\n let color;\n \n switch (method) {\n case 'info':\n color = 'green';\n break; \n case 'warn':\n color = 'yellow';\n break; \n case 'error':\n color = 'red';\n break; \n case 'log':\n default:\n color = 'white';\n break;\n }\n \n return chalk.styles[color];\n }\n \n /**\n * @returns {*}\n */\n static get emoji() {\n return {\n bulb: '💡 ',\n rocket: '🚀 ',\n cross: '❌ ',\n check: '✅ ',\n banana: '🍌 ',\n smiley: '😃 ',\n fire: '🔥 ',\n diamond: '💎 ',\n gift: '🎁 ',\n poop: '💩 ',\n magic: '✨ ',\n hat: '🎩 ',\n new: '🆕 ',\n fist: '👊 ',\n beer: '🍺 ',\n bicycle: '🚲 ',\n star: '⭐️ ',\n moon_full: '🌔 ',\n moon_half: '🌓 ',\n moon_empty: '🌘 ',\n };\n }\n \n /**\n * @returns {number}\n */\n static get ALL() {\n return this.LOG | this.DEBUG | this.INFO | this.WARN | this.ERROR;\n }\n \n /**\n * @returns {number}\n */\n static get LOG() {\n return 1;\n }\n \n /**\n * @returns {number}\n */\n static get DEBUG() {\n return 2;\n }\n \n /**\n * @returns {number}\n */\n static get INFO() {\n return 4;\n }\n \n /**\n * @returns {number}\n */\n static get WARN() {\n return 8;\n }\n \n /**\n * @returns {number}\n */\n static get ERROR() {\n return 16;\n }\n}\n\nmodule.exports = Logger;\n",
"static": true,
"longname": "src/logger.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 443,
"kind": "class",
"name": "Logger",
"memberof": "src/logger.js",
"static": true,
"longname": "src/logger.js~Logger",
"access": null,
"export": true,
"importPath": "recink/src/logger.js",
"importStyle": "Logger",
"description": "Logger abstraction",
"lineNumber": 8,
"interface": false
},
{
"__docId__": 444,
"kind": "get",
"name": "chalk",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.chalk",
"access": null,
"description": "",
"lineNumber": 12,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{chalk} chalk"
}
],
"return": {
"nullable": null,
"types": [
"chalk"
],
"spread": false,
"description": "chalk"
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 445,
"kind": "method",
"name": "customLogger",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.customLogger",
"access": null,
"description": "",
"lineNumber": 21,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "logger",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 446,
"kind": "member",
"name": "_customLogger",
"memberof": "src/logger.js~Logger",
"static": true,
"longname": "src/logger.js~Logger._customLogger",
"access": null,
"description": null,
"lineNumber": 22,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 447,
"kind": "method",
"name": "level",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.level",
"access": null,
"description": "",
"lineNumber": 32,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "level",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 448,
"kind": "member",
"name": "_dbgLevel",
"memberof": "src/logger.js~Logger",
"static": true,
"longname": "src/logger.js~Logger._dbgLevel",
"access": null,
"description": null,
"lineNumber": 33,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 449,
"kind": "method",
"name": "addLevel",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.addLevel",
"access": null,
"description": "",
"lineNumber": 43,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"number"
],
"spread": false,
"optional": false,
"name": "level",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 450,
"kind": "member",
"name": "_dbgLevel",
"memberof": "src/logger.js~Logger",
"static": true,
"longname": "src/logger.js~Logger._dbgLevel",
"access": null,
"description": null,
"lineNumber": 44,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 451,
"kind": "method",
"name": "debug",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.debug",
"access": null,
"description": "",
"lineNumber": 53,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 452,
"kind": "method",
"name": "log",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.log",
"access": null,
"description": "",
"lineNumber": 61,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 453,
"kind": "method",
"name": "info",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.info",
"access": null,
"description": "",
"lineNumber": 69,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 454,
"kind": "method",
"name": "warn",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.warn",
"access": null,
"description": "",
"lineNumber": 78,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 455,
"kind": "method",
"name": "error",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.error",
"access": null,
"description": "",
"lineNumber": 87,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 456,
"kind": "get",
"name": "_logger",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger._logger",
"access": "private",
"description": "",
"lineNumber": 96,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 457,
"kind": "get",
"name": "_level",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger._level",
"access": "private",
"description": "",
"lineNumber": 105,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 458,
"kind": "method",
"name": "_exec",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger._exec",
"access": "private",
"description": "",
"lineNumber": 117,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Logger}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "method",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "args",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Logger"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 459,
"kind": "method",
"name": "_color",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger._color",
"access": "private",
"description": "",
"lineNumber": 144,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "method",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 460,
"kind": "get",
"name": "emoji",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.emoji",
"access": null,
"description": "",
"lineNumber": 169,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{*}"
}
],
"return": {
"nullable": null,
"types": [
"*"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"{\"bulb\": string, \"rocket\": string, \"cross\": string, \"check\": string, \"banana\": string, \"smiley\": string, \"fire\": string, \"diamond\": string, \"gift\": string, \"poop\": string, \"magic\": string, \"hat\": string, \"new\": string, \"fist\": string, \"beer\": string, \"bicycle\": string, \"star\": string, \"moon_full\": string, \"moon_half\": string, \"moon_empty\": string}"
]
}
},
{
"__docId__": 461,
"kind": "get",
"name": "ALL",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.ALL",
"access": null,
"description": "",
"lineNumber": 197,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 462,
"kind": "get",
"name": "LOG",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.LOG",
"access": null,
"description": "",
"lineNumber": 204,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 463,
"kind": "get",
"name": "DEBUG",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.DEBUG",
"access": null,
"description": "",
"lineNumber": 211,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 464,
"kind": "get",
"name": "INFO",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.INFO",
"access": null,
"description": "",
"lineNumber": 218,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 465,
"kind": "get",
"name": "WARN",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.WARN",
"access": null,
"description": "",
"lineNumber": 225,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 466,
"kind": "get",
"name": "ERROR",
"memberof": "src/logger.js~Logger",
"generator": false,
"async": false,
"static": true,
"longname": "src/logger.js~Logger.ERROR",
"access": null,
"description": "",
"lineNumber": 232,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{number}"
}
],
"return": {
"nullable": null,
"types": [
"number"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"number"
]
}
},
{
"__docId__": 467,
"kind": "file",
"name": "src/recink.js",
"content": "'use strict';\n\nconst path = require('path');\nconst merge = require('merge');\nconst Emitter = require('./emitter');\nconst events = require('./events');\nconst logger = require('./logger');\nconst Container = require('./container');\nconst configFactory = require('./config/factory');\nconst AbstractComponent = require('./component/abstract-component');\n\n/**\n * Recink entry point\n */\nclass Recink extends Emitter {\n constructor() {\n super();\n \n this._config = {};\n this._components = [];\n this._container = new Container();\n this._registerDebugers();\n }\n \n /**\n * @private\n */\n _registerDebugers() {\n this.on(events.config.load, (container, configFile) => {\n logger.info(logger.emoji.smiley, `Load config from ${ configFile }`);\n logger.debug(container.dump());\n });\n \n this.on(events.components.load, (...components) => {\n logger.debug(\n 'Loading components -', components.map(c => c.name).join(', ') || 'None'\n );\n });\n \n this.on(events.component.load, component => {\n logger.debug(`Load component ${ component.name }`);\n });\n \n this.on(events.component.subscribe, component => {\n logger.debug(`Component ${ component.name } is subscribed`);\n });\n \n this.on(events.component.ready, component => {\n logger.debug(`Component ${ component.name } is ready`);\n });\n \n this.on(events.components.run, (...components) => {\n components.map(component => {\n logger.info(\n component.isActive ? logger.emoji.check : logger.emoji.cross,\n `${ component.name.toUpperCase() } component`\n );\n });\n });\n }\n \n /**\n * @returns {Promise}\n */\n run() {\n this.emit(events.components.run, ...this._components);\n \n const activeComponents = this._components.filter(component => component.isActive);\n\n if (activeComponents.length <= 0) {\n return Promise.resolve();\n }\n\n return Promise.all(activeComponents.map(component => {\n this.emit(events.component.init, component);\n \n return component.init(this);\n }))\n .then(() => {\n return Promise.all(activeComponents.map(component => {\n this.emit(events.component.run, component);\n \n return component.run(this);\n }));\n })\n .then(() => {\n return Promise.all(this._components.map(component => {\n this.emit(events.component.teardown, component);\n \n return component.teardown(this);\n }));\n });\n }\n \n /**\n * @param {Function} targetClass\n * @returns {string|null}\n * @private\n */\n _getBaseClass(targetClass) {\n if (targetClass instanceof Function) {\n let baseClass = targetClass;\n\n while (baseClass) {\n const newBaseClass = Object.getPrototypeOf(baseClass);\n\n if (newBaseClass && newBaseClass !== Object && newBaseClass.name) {\n baseClass = newBaseClass;\n } else {\n break;\n }\n }\n\n return baseClass.name;\n }\n \n return null;\n }\n \n /**\n * @param {AbstractComponent} components\n * @returns {Promise}\n */\n components(...components) {\n this.emit(events.components.load, ...components);\n\n if (components.length <= 0) {\n return Promise.resolve();\n }\n\n return Promise.all(components.map(component => {\n if (!(component instanceof AbstractComponent)\n && [ 'ConfigBasedComponent', 'AbstractComponent' ]\n .indexOf(this._getBaseClass(component.constructor)) === -1) {\n \n return Promise.reject(new Error(\n `Component ${ component.constructor.name } should be an instance of AbstractComponent`\n ));\n }\n\n component.setLogger(logger);\n this._components.push(component);\n this.emit(events.component.load, component);\n\n return component.subscribe(this)\n .then(() => {\n return this.emit(events.component.subscribe, component, this);\n })\n .then(() => component.ready())\n .then(() => {\n this.emit(events.component.ready, component);\n return Promise.resolve(component);\n });\n }));\n }\n \n /**\n * @param {string} configFile\n * @param {*} extendConfigs\n * @returns {Promise}\n */\n configureExtend(configFile, ...extendConfigs) {\n if (extendConfigs.length <= 0) {\n return this.configure(configFile);\n }\n \n const promises = extendConfigs\n .concat([ configFile ])\n .map(cfgFile => configFactory.guess(cfgFile).load());\n\n return Promise.all(promises).then(configVectors => {\n return Promise.resolve(merge.recursive(true, ...configVectors));\n });\n }\n\n /**\n * @param {string} configFile\n * @returns {Promise}\n */\n configure(configFile = Recink.CONFIG_FILE) {\n return configFactory.guess(configFile).load().then(config => Promise.resolve(config));\n }\n\n /**\n * @param {Object} config\n * @param {String} configFile\n * @returns {Promise}\n */\n configLoad(config, configFile) {\n return this.emitBlocking(events.config.preprocess, config).then(() => {\n this._config = config;\n this._container.reload(this._config);\n this.emit(events.config.load, this.container, configFile);\n\n return Promise.resolve(this._config);\n });\n }\n\n /**\n * @param {string} name\n *\n * @returns {AbstractComponent}\n */\n component(name) {\n return this._components.filter(c => c.name === name)[0] || null;\n }\n \n /**\n * @returns {AbstractComponent[]}\n */\n listComponents() {\n return this._components;\n }\n\n /**\n * @returns {Container}\n */\n get container() {\n return this._container;\n }\n\n /**\n * @returns {AbstractConfig}\n */\n get config() {\n return this._config;\n }\n\n /**\n * @returns {string}\n */\n static get CONFIG_FILE() {\n return path.resolve(process.cwd(), this.CONFIG_FILE_NAME);\n }\n\n /**\n * @returns {string}\n */\n static get CONFIG_FILE_NAME() {\n return '.recink.yml';\n }\n}\n\nmodule.exports = Recink;\n",
"static": true,
"longname": "src/recink.js",
"access": null,
"description": null,
"lineNumber": 1
},
{
"__docId__": 468,
"kind": "class",
"name": "Recink",
"memberof": "src/recink.js",
"static": true,
"longname": "src/recink.js~Recink",
"access": null,
"export": true,
"importPath": "recink",
"importStyle": "Recink",
"description": "Recink entry point",
"lineNumber": 15,
"interface": false,
"extends": [
"src/emitter.js~Emitter"
]
},
{
"__docId__": 469,
"kind": "constructor",
"name": "constructor",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#constructor",
"access": null,
"description": null,
"lineNumber": 16,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"params": []
},
{
"__docId__": 470,
"kind": "member",
"name": "_config",
"memberof": "src/recink.js~Recink",
"static": false,
"longname": "src/recink.js~Recink#_config",
"access": null,
"description": null,
"lineNumber": 19,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"{}"
]
}
},
{
"__docId__": 471,
"kind": "member",
"name": "_components",
"memberof": "src/recink.js~Recink",
"static": false,
"longname": "src/recink.js~Recink#_components",
"access": null,
"description": null,
"lineNumber": 20,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*[]"
]
}
},
{
"__docId__": 472,
"kind": "member",
"name": "_container",
"memberof": "src/recink.js~Recink",
"static": false,
"longname": "src/recink.js~Recink#_container",
"access": null,
"description": null,
"lineNumber": 21,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 473,
"kind": "method",
"name": "_registerDebugers",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#_registerDebugers",
"access": "private",
"description": "",
"lineNumber": 28,
"params": []
},
{
"__docId__": 474,
"kind": "method",
"name": "run",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#run",
"access": null,
"description": "",
"lineNumber": 65,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 475,
"kind": "method",
"name": "_getBaseClass",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#_getBaseClass",
"access": "private",
"description": "",
"lineNumber": 100,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string|null}"
}
],
"params": [
{
"nullable": null,
"types": [
"Function"
],
"spread": false,
"optional": false,
"name": "targetClass",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"string",
"null"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 476,
"kind": "method",
"name": "components",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#components",
"access": null,
"description": "",
"lineNumber": 124,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"AbstractComponent"
],
"spread": false,
"optional": false,
"name": "components",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 477,
"kind": "method",
"name": "configureExtend",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#configureExtend",
"access": null,
"description": "",
"lineNumber": 162,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "configFile",
"description": ""
},
{
"nullable": null,
"types": [
"*"
],
"spread": false,
"optional": false,
"name": "extendConfigs",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 478,
"kind": "method",
"name": "configure",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#configure",
"access": null,
"description": "",
"lineNumber": 180,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "configFile",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 479,
"kind": "method",
"name": "configLoad",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#configLoad",
"access": null,
"description": "",
"lineNumber": 189,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Promise}"
}
],
"params": [
{
"nullable": null,
"types": [
"Object"
],
"spread": false,
"optional": false,
"name": "config",
"description": ""
},
{
"nullable": null,
"types": [
"String"
],
"spread": false,
"optional": false,
"name": "configFile",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"Promise"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 480,
"kind": "member",
"name": "_config",
"memberof": "src/recink.js~Recink",
"static": false,
"longname": "src/recink.js~Recink#_config",
"access": null,
"description": null,
"lineNumber": 191,
"undocument": true,
"unknown": [
{
"tagName": "@_undocument",
"tagValue": ""
}
],
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 481,
"kind": "method",
"name": "component",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#component",
"access": null,
"description": "",
"lineNumber": 204,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractComponent}"
}
],
"params": [
{
"nullable": null,
"types": [
"string"
],
"spread": false,
"optional": false,
"name": "name",
"description": ""
}
],
"return": {
"nullable": null,
"types": [
"AbstractComponent"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 482,
"kind": "method",
"name": "listComponents",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#listComponents",
"access": null,
"description": "",
"lineNumber": 211,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractComponent[]}"
}
],
"params": [],
"return": {
"nullable": null,
"types": [
"AbstractComponent[]"
],
"spread": false,
"description": ""
}
},
{
"__docId__": 483,
"kind": "get",
"name": "container",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#container",
"access": null,
"description": "",
"lineNumber": 218,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{Container}"
}
],
"return": {
"nullable": null,
"types": [
"Container"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 484,
"kind": "get",
"name": "config",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": false,
"longname": "src/recink.js~Recink#config",
"access": null,
"description": "",
"lineNumber": 225,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{AbstractConfig}"
}
],
"return": {
"nullable": null,
"types": [
"AbstractConfig"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 485,
"kind": "get",
"name": "CONFIG_FILE",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": true,
"longname": "src/recink.js~Recink.CONFIG_FILE",
"access": null,
"description": "",
"lineNumber": 232,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"*"
]
}
},
{
"__docId__": 486,
"kind": "get",
"name": "CONFIG_FILE_NAME",
"memberof": "src/recink.js~Recink",
"generator": false,
"async": false,
"static": true,
"longname": "src/recink.js~Recink.CONFIG_FILE_NAME",
"access": null,
"description": "",
"lineNumber": 239,
"unknown": [
{
"tagName": "@returns",
"tagValue": "{string}"
}
],
"return": {
"nullable": null,
"types": [
"string"
],
"spread": false,
"description": ""
},
"type": {
"types": [
"string"
]
}
},
{
"__docId__": 488,
"kind": "external",
"name": "Infinity",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Infinity",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 489,
"kind": "external",
"name": "NaN",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~NaN",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 490,
"kind": "external",
"name": "undefined",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~undefined",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 491,
"kind": "external",
"name": "null",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~null",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 492,
"kind": "external",
"name": "Object",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Object",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 493,
"kind": "external",
"name": "object",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~object",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 494,
"kind": "external",
"name": "Function",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Function",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 495,
"kind": "external",
"name": "function",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~function",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 496,
"kind": "external",
"name": "Boolean",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Boolean",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 497,
"kind": "external",
"name": "boolean",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~boolean",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 498,
"kind": "external",
"name": "Symbol",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Symbol",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 499,
"kind": "external",
"name": "Error",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Error",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 500,
"kind": "external",
"name": "EvalError",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~EvalError",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 501,
"kind": "external",
"name": "InternalError",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~InternalError",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 502,
"kind": "external",
"name": "RangeError",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~RangeError",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 503,
"kind": "external",
"name": "ReferenceError",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~ReferenceError",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 504,
"kind": "external",
"name": "SyntaxError",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~SyntaxError",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 505,
"kind": "external",
"name": "TypeError",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~TypeError",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 506,
"kind": "external",
"name": "URIError",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~URIError",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 507,
"kind": "external",
"name": "Number",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Number",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 508,
"kind": "external",
"name": "number",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~number",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 509,
"kind": "external",
"name": "Date",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Date",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 510,
"kind": "external",
"name": "String",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~String",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 511,
"kind": "external",
"name": "string",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~string",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 512,
"kind": "external",
"name": "RegExp",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~RegExp",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 513,
"kind": "external",
"name": "Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 514,
"kind": "external",
"name": "Int8Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Int8Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 515,
"kind": "external",
"name": "Uint8Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 516,
"kind": "external",
"name": "Uint8ClampedArray",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8ClampedArray",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 517,
"kind": "external",
"name": "Int16Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Int16Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 518,
"kind": "external",
"name": "Uint16Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Uint16Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 519,
"kind": "external",
"name": "Int32Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Int32Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 520,
"kind": "external",
"name": "Uint32Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Uint32Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 521,
"kind": "external",
"name": "Float32Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Float32Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 522,
"kind": "external",
"name": "Float64Array",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Float64Array",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 523,
"kind": "external",
"name": "Map",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Map",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 524,
"kind": "external",
"name": "Set",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Set",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 525,
"kind": "external",
"name": "WeakMap",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~WeakMap",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 526,
"kind": "external",
"name": "WeakSet",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~WeakSet",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 527,
"kind": "external",
"name": "ArrayBuffer",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~ArrayBuffer",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 528,
"kind": "external",
"name": "DataView",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~DataView",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 529,
"kind": "external",
"name": "JSON",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~JSON",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 530,
"kind": "external",
"name": "Promise",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Promise",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 531,
"kind": "external",
"name": "Generator",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Generator",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 532,
"kind": "external",
"name": "GeneratorFunction",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~GeneratorFunction",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 533,
"kind": "external",
"name": "Reflect",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Reflect",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 534,
"kind": "external",
"name": "Proxy",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
"memberof": "BuiltinExternal/ECMAScriptExternal.js",
"static": true,
"longname": "BuiltinExternal/ECMAScriptExternal.js~Proxy",
"access": null,
"description": "",
"lineNumber": 193,
"builtinExternal": true
},
{
"__docId__": 536,
"kind": "external",
"name": "CanvasRenderingContext2D",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~CanvasRenderingContext2D",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 537,
"kind": "external",
"name": "DocumentFragment",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~DocumentFragment",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 538,
"kind": "external",
"name": "Element",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Element",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~Element",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 539,
"kind": "external",
"name": "Event",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Event",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~Event",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 540,
"kind": "external",
"name": "Node",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Node",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~Node",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 541,
"kind": "external",
"name": "NodeList",
"externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/NodeList",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~NodeList",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 542,
"kind": "external",
"name": "XMLHttpRequest",
"externalLink": "https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~XMLHttpRequest",
"access": null,
"description": "",
"builtinExternal": true
},
{
"__docId__": 543,
"kind": "external",
"name": "AudioContext",
"externalLink": "https://developer.mozilla.org/en/docs/Web/API/AudioContext",
"memberof": "BuiltinExternal/WebAPIExternal.js",
"static": true,
"longname": "BuiltinExternal/WebAPIExternal.js~AudioContext",
"access": null,
"description": "",
"lineNumber": 34,
"builtinExternal": true
}
]