From 74c43fc9808741cc38fd8e368a49971aacaad949 Mon Sep 17 00:00:00 2001 From: Mickael Jeanroy Date: Sat, 3 Dec 2016 18:43:53 +0100 Subject: [PATCH] release: prepare next release --- dist/dependency.js | 146 ----------------- dist/eol.js | 27 ---- dist/generate-block-comment.js | 42 ----- dist/index.js | 90 ----------- dist/license-plugin.js | 286 --------------------------------- dist/person.js | 116 ------------- 6 files changed, 707 deletions(-) delete mode 100644 dist/dependency.js delete mode 100644 dist/eol.js delete mode 100644 dist/generate-block-comment.js delete mode 100644 dist/index.js delete mode 100644 dist/license-plugin.js delete mode 100644 dist/person.js diff --git a/dist/dependency.js b/dist/dependency.js deleted file mode 100644 index e571a5d6..00000000 --- a/dist/dependency.js +++ /dev/null @@ -1,146 +0,0 @@ -'use strict'; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * The MIT License (MIT) - * - * Copyright (c) 2016 Mickael Jeanroy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -var _ = require('lodash'); -var EOL = require('./eol.js'); -var Person = require('./person.js'); - -/** - * Dependency structure. - */ - -var Dependency = function () { - /** - * Create new dependency from package description. - * - * @param {Object} pkg Package description. - * @constructor - */ - function Dependency(pkg) { - _classCallCheck(this, Dependency); - - var dependency = _.pick(pkg, ['name', 'author', 'contributors', 'maintainers', 'version', 'description', 'license', 'licenses', 'repository', 'homepage', 'private']); - - // Parse the author field to get an object. - if (dependency.author) { - dependency.author = new Person(dependency.author); - } - - // Parse the contributor array. - if (dependency.contributors) { - // Translate to an array if it is not already. - if (_.isString(dependency.contributors)) { - dependency.contributors = [dependency.contributors]; - } - - // Parse each contributor to produce a single object for each person. - dependency.contributors = _.map(dependency.contributors, function (contributor) { - return new Person(contributor); - }); - } - - // The `licenses` field is deprecated but may be used in some packages. - // Map it to a standard license field. - if (!dependency.license && dependency.licenses) { - // Map it to a valid license field. - // See: https://docs.npmjs.com/files/package.json#license - dependency.license = '(' + _.chain(dependency.licenses).map(function (license) { - return license.type || license; - }).join(' OR ').value() + ')'; - - // Remove it. - delete dependency.licenses; - } - - _.extend(this, dependency); - } - - /** - * Serialize dependency as a string. - * - * @param {string} prefix Optional prefix prepended to the output string. - * @param {suffix} suffix Optional suffix appended to the output string. - * @param {string} joiner Optional character used to join all the lines. - * @return {string} The dependency correctly formatted. - */ - - - _createClass(Dependency, [{ - key: 'text', - value: function text() { - var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var suffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var joiner = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EOL; - - var lines = []; - - lines.push(prefix + 'Name: ' + this.name + suffix); - lines.push(prefix + 'Version: ' + this.version + suffix); - lines.push(prefix + 'License: ' + this.license + suffix); - lines.push(prefix + 'Private: ' + (this.private || false) + suffix); - - if (this.description) { - lines.push(prefix + 'Description: ' + (this.description || false) + suffix); - } - - if (this.repository) { - lines.push(prefix + 'Repository: ' + this.repository.url + suffix); - } - - if (this.homepage) { - lines.push(prefix + 'Homepage: ' + this.homepage + suffix); - } - - if (this.author) { - lines.push(prefix + 'Author: ' + this.author.text() + suffix); - } - - if (this.contributors) { - lines.push(prefix + 'Contributors:' + suffix); - - var allContributors = _.chain(this.contributors).map(function (contributor) { - return contributor.text(); - }).map(function (line) { - return prefix + ' ' + line + suffix; - }).value(); - - lines.push.apply(lines, _toConsumableArray(allContributors)); - } - - return lines.join(joiner); - } - }]); - - return Dependency; -}(); - -module.exports = Dependency; \ No newline at end of file diff --git a/dist/eol.js b/dist/eol.js deleted file mode 100644 index 62fbc7c6..00000000 --- a/dist/eol.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -/** - * The MIT License (MIT) - * - * Copyright (c) 2016 Mickael Jeanroy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -module.exports = '\n'; \ No newline at end of file diff --git a/dist/generate-block-comment.js b/dist/generate-block-comment.js deleted file mode 100644 index 99e66ae9..00000000 --- a/dist/generate-block-comment.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -/** - * The MIT License (MIT) - * - * Copyright (c) 2016 Mickael Jeanroy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -var _ = require('lodash'); -var EOL = require('./eol.js'); - -/** - * Generate block comment from given text content. - * - * @param {string} text Text content. - * @return {string} Block comment. - */ -module.exports = function generateBlockComment(text) { - var bannerContent = _.chain(text).trim().split(EOL).map(function (line) { - return _.trimEnd(' * ' + line); - }).join(EOL).value(); - - return '/**' + EOL + bannerContent + EOL + ' */' + EOL; -}; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index a4c75fb1..00000000 --- a/dist/index.js +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; - -/** - * The MIT License (MIT) - * - * Copyright (c) 2016 Mickael Jeanroy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -var LicensePlugin = require('./license-plugin.js'); - -module.exports = function () { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var plugin = new LicensePlugin(options); - - return { - /** - * Name of the plugin, used automatically by rollup. - * @type {string} - */ - name: plugin.name, - - /** - * Function called by rollup when a JS file is loaded: it is used to scan - * third-party dependencies. - * - * @param {string} id JS file path. - * @return {void} - */ - load: function load(id) { - plugin.scanDependency(id); - }, - - - /** - * Function called by rollup to read global options: if source map parameter - * is truthy, enable it on the plugin. - * - * @param {object} opts Rollup options. - * @return {void} - */ - options: function options(opts) { - if (opts && opts.sourceMap) { - plugin.enableSourceMap(); - } - }, - - - /** - * Function called by rollup when the final bundle is generated: it is used - * to prepend the banner file on the generated bundle. - * - * @param {string} code Bundle content. - * @return {void} - */ - transformBundle: function transformBundle(code) { - return plugin.prependBanner(code); - }, - - - /** - * Function called by rollup when the final bundle will be written on disk: it - * is used to generate a file containing a summary of all third-party dependencies - * with license information. - * - * @return {void} - */ - ongenerate: function ongenerate() { - plugin.exportThirdParties(); - } - }; -}; \ No newline at end of file diff --git a/dist/license-plugin.js b/dist/license-plugin.js deleted file mode 100644 index 415f944e..00000000 --- a/dist/license-plugin.js +++ /dev/null @@ -1,286 +0,0 @@ -'use strict'; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * The MIT License (MIT) - * - * Copyright (c) 2016 Mickael Jeanroy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -var fs = require('fs'); -var path = require('path'); -var mkdirp = require('mkdirp'); -var _ = require('lodash'); -var moment = require('moment'); -var MagicString = require('magic-string'); -var Dependency = require('./dependency.js'); -var generateBlockComment = require('./generate-block-comment.js'); -var EOL = require('./eol.js'); - -/** - * Rollup Plugin. - */ - -var LicensePlugin = function () { - /** - * Initialize plugin. - * - * @param {Object} options Plugin options. - */ - function LicensePlugin() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - _classCallCheck(this, LicensePlugin); - - // Plugin name, used by rollup. - this.name = 'rollup-plugin-license'; - - this._options = options; - this._sourceMap = false; - this._cwd = process.cwd(); - this._dependencies = {}; - this._pkg = require(path.join(this._cwd, 'package.json')); - this._debug = options.debug || false; - - // This is a cache storing a directory path to associated package. - // This is an improvement to avoid looking for package information for - // already scanned directory. - this._cache = {}; - } - - /** - * Enable source map. - * - * @return {void} - */ - - - _createClass(LicensePlugin, [{ - key: 'enableSourceMap', - value: function enableSourceMap() { - this._sourceMap = true; - } - - /** - * Hook triggered by `rollup` to load code from given path file. - * - * This hook is used here to analyze a JavaScript file to extract - * associated `package.json` file and store the main information about - * it (license, author, etc.). - * - * This method is used to analyse all the files added to the final bundle - * to extract license informations. - * - * @param {string} id Module identifier. - * @return {void} - */ - - }, { - key: 'scanDependency', - value: function scanDependency(id) { - var _this = this; - - this.debug('scanning ' + id); - - // Look for the `package.json` file - var dir = path.parse(id).dir; - var pkg = null; - - var scannedDirs = []; - - while (dir && dir !== this._cwd) { - // Try the cache. - if (_.has(this._cache, dir)) { - pkg = this._cache[dir]; - if (pkg) { - this.debug('found package.json in cache (package: ' + pkg.name + ')'); - this.addDependency(pkg); - } - - break; - } - - scannedDirs.push(dir); - - var pkgPath = path.join(dir, 'package.json'); - var exists = fs.existsSync(pkgPath); - if (exists) { - this.debug('found package.json at: ' + pkgPath + ', read it'); - - // Read `package.json` file - pkg = require(pkgPath); - - // Add the new dependency to the set of third-party dependencies. - this.addDependency(pkg); - - // We can stop now. - break; - } - - // Go up in the directory tree. - dir = path.normalize(path.join(dir, '..')); - } - - // Update the cache - _.forEach(scannedDirs, function (scannedDir) { - _this._cache[scannedDir] = pkg; - }); - } - - /** - * Hook triggered by `rollup` to transform the final generated bundle. - * This hook is used here to prepend the license banner to the final bundle. - * - * @param {string} code The bundle content. - * @return {Object} The result containing the code and, optionnally, the source map - * if it has been enabled (using `enableSourceMap` method). - */ - - }, { - key: 'prependBanner', - value: function prependBanner(code) { - var banner = this._options.banner; - var file = banner ? banner.file : banner; - - // Create a magicString: do not manipulate the string directly since it - // will be used to generate the sourcemap. - var magicString = new MagicString(code); - - if (file) { - this.debug('prepend banner from file: ' + file); - - var filePath = path.resolve(file); - var exists = fs.existsSync(filePath); - - if (exists) { - var content = fs.readFileSync(filePath, 'utf-8'); - - // Create the template function with lodash. - var tmpl = _.template(content); - - // Generate the banner. - var _banner = tmpl({ - _: _, - moment: moment, - pkg: this._pkg, - dependencies: _.values(this._dependencies) - }); - - // Make a block comment if needed - var trimmedBanner = _banner.trim(); - var start = trimmedBanner.slice(0, 3); - if (start !== '/**' && start !== '/*!') { - _banner = generateBlockComment(_banner); - } - - // Prepend the banner. - magicString.prepend('' + _banner + EOL); - } - } - - var result = { - code: magicString.toString() - }; - - if (this._sourceMap) { - result.map = magicString.generateMap({ - hires: true - }); - } - - return result; - } - - /** - * Add new dependency to the bundle descriptor. - * - * @param {Object} pkg Dependency package information. - * @return {void} - */ - - }, { - key: 'addDependency', - value: function addDependency(pkg) { - var name = pkg.name; - if (!_.has(this._dependencies, name)) { - this._dependencies[name] = new Dependency(pkg); - } - } - - /** - * Generate third-party dependencies summary. - * - * @param {boolean} includePrivate Flag that can be used to include / exclude private dependencies. - * @return {void} - */ - - }, { - key: 'exportThirdParties', - value: function exportThirdParties() { - var _this2 = this; - - var thirdParty = this._options.thirdParty; - if (!thirdParty) { - return; - } - - var output = thirdParty.output; - if (output) { - (function () { - _this2.debug('exporting third-party summary to ' + output); - - // Create directory if it does not already exist. - mkdirp(path.parse(output).dir); - - var includePrivate = thirdParty.includePrivate; - var text = _.chain(_this2._dependencies).values().filter(function (dependency) { - return includePrivate || !dependency.private; - }).map(function (dependency) { - return dependency.text(); - }).join('' + EOL + EOL + '---' + EOL + EOL).trim().value(); - - fs.writeFileSync(output, text || 'No third parties dependencies'); - })(); - } - } - - /** - * Log debug message if debug mode is enabled. - * - * @param {string} msg Log message. - */ - - }, { - key: 'debug', - value: function debug(msg) { - if (this._debug) { - console.log('[' + this.name + '] -- ' + msg); - } - } - }]); - - return LicensePlugin; -}(); - -module.exports = LicensePlugin; \ No newline at end of file diff --git a/dist/person.js b/dist/person.js deleted file mode 100644 index 4d235b8f..00000000 --- a/dist/person.js +++ /dev/null @@ -1,116 +0,0 @@ -'use strict'; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * The MIT License (MIT) - * - * Copyright (c) 2016 Mickael Jeanroy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -var _ = require('lodash'); - -/** - * Person, defined by: - * - A name. - * - An email (optional). - * - An URL (optional). - */ - -var Person = function () { - /** - * Create the person. - * - * If parameter is a string, it will be automatically parsed according to - * this format: NAME (URL) (where email and url are optional). - * - * @param {string|object} person The person identity. - * @constructor - */ - function Person(person) { - _classCallCheck(this, Person); - - if (_.isString(person)) { - (function () { - var o = {}; - - var current = 'name'; - - for (var i = 0, size = person.length; i < size; ++i) { - var character = person.charAt(i); - if (character === '<') { - current = 'email'; - } else if (character === '(') { - current = 'url'; - } else if (character !== ')' && character !== '>') { - o[current] = (o[current] || '') + character; - } - } - - _.forEach(['name', 'email', 'url'], function (prop) { - if (_.has(o, prop)) { - o[prop] = _.trim(o[prop]); - } - }); - - person = o; - })(); - } - - _.extend(this, person); - } - - /** - * Serialize the person to a string with the following format: - * NAME (URL) - * - * @param {string} prefix Optional prefix prepended to the output string. - * @param {string} suffix Optional suffix appended to the output string. - * @return {string} The person as a string. - */ - - - _createClass(Person, [{ - key: 'text', - value: function text() { - var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var suffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - - var text = '' + this.name; - - if (this.email) { - text += ' <' + this.email + '>'; - } - - if (this.url) { - text += ' (' + this.url + ')'; - } - - return '' + prefix + text + suffix; - } - }]); - - return Person; -}(); - -module.exports = Person; \ No newline at end of file