diff --git a/packages/plugin-bundle/.babelrc b/packages/plugin-bundle/.babelrc new file mode 100644 index 00000000000..85af630bdd1 --- /dev/null +++ b/packages/plugin-bundle/.babelrc @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-object-rest-spread"] +} diff --git a/packages/plugin-bundle/README.md b/packages/plugin-bundle/README.md index 8a23b3ffc8a..09b122e2d0b 100644 --- a/packages/plugin-bundle/README.md +++ b/packages/plugin-bundle/README.md @@ -15,7 +15,12 @@ A freesewing plugin that provides the following plugins in one bundle: 3) [plugin-grainline](https://github.com/freesewing/plugin-grainline) : Add grainline indicators to your patterns 4) [plugin-logo](https://github.com/freesewing/plugin-logo) : Add our logo to your patterns 5) [plugin-title](https://github.com/freesewing/plugin-title) : Add pretty titles to your pattern parts - + +Note that these are all **build-time plugins**. In other words, plugins used by developers/pattern designers, +rather than run-time plugins that are used when generating patterns. + +Without exception, all freesewing patterns use all these 5 plugins, so it made sense to bundle them. + ## Usage To load this plugin, add it to your instantiated pattern. diff --git a/packages/plugin-bundle/package-lock.json b/packages/plugin-bundle/package-lock.json index b96ea4cb3a8..3ca276ccd2c 100644 --- a/packages/plugin-bundle/package-lock.json +++ b/packages/plugin-bundle/package-lock.json @@ -1,5 +1,5 @@ { - "name": "@freesewing/plugin-debug", + "name": "@freesewing/plugin-bundle", "version": "0.0.1", "lockfileVersion": 1, "requires": true, @@ -13,6 +13,12 @@ "@babel/highlight": "7.0.0-beta.53" } }, + "@babel/helper-plugin-utils": { + "version": "7.0.0-beta.56", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.56.tgz", + "integrity": "sha512-6IlFMU13X7gwnnMldDHwfc7IqngqCH/KfiU7I+GdNoZPnddmjghc87E/zKHaJpWdX1VvXCCelp2EnKq0rgBQ8w==", + "dev": true + }, "@babel/highlight": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz", @@ -24,6 +30,50 @@ "js-tokens": "3.0.2" } }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0-beta.56", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.56.tgz", + "integrity": "sha512-onVk2kI39dzkDP+SzX6eC3nAkq5yemiiZX+AuXAmshOyuz+ZYUu5b+zzXKw0oPFTSnMnlIfJItQCcVzesXcU6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.56", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.56" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0-beta.56", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.56.tgz", + "integrity": "sha512-rDqe3TN5cZaUg4zi3Kzfq5qySS6IcEs19WE7GHlmelgQ1QXy9d/tsPEAWHZTLrG4mjbbEFJZdLvAi+LSGdhJAQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.56" + } + }, + "@freesewing/plugin-cutonfold": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-cutonfold/-/plugin-cutonfold-0.9.0.tgz", + "integrity": "sha512-FZC6bSaDMgXKDzIU5ynByHmiVIVDXKzB9rlxZyldv+q8c0T/xfJ/x15wcey2Bffj/pv37hzLI+CocwGLHjWH7g==" + }, + "@freesewing/plugin-dimension": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-dimension/-/plugin-dimension-0.4.0.tgz", + "integrity": "sha512-W4O3p4LlvNVt9bRG/2obKrzAWqX7MogdX2E1TYN8nJX0+KMBKArvQyR6RnODXWHuK2Mh+KZkF/dqVKqAc9EMDg==" + }, + "@freesewing/plugin-grainline": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-grainline/-/plugin-grainline-0.0.2.tgz", + "integrity": "sha512-9aaUvxK9rdXMpOZhR+/Ew8VDa9CFmDKF8lULupETd99h0E8XT6iTVeiRWuufQ1hpidYzfshN3Iz2VIIjURj+mA==" + }, + "@freesewing/plugin-logo": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-logo/-/plugin-logo-0.3.2.tgz", + "integrity": "sha512-cYmMAcvWl7B0RC3LUaCNRVj98nDIsT47Uf+84fQAnsAeZeAyiA1Y1NmPlmb3n30znlFwiJYjII7cRBn73l6wGQ==" + }, + "@freesewing/plugin-title": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-title/-/plugin-title-0.6.2.tgz", + "integrity": "sha512-OpiM4qQ0kN8NAP/OZkjveiMcebwk/ZBwfng9sVFDxp3zAB1YisoYgYjFoURCqR7ePAMbAa66sXD+o0YgITR9wg==" + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -447,6 +497,22 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", @@ -3025,6 +3091,15 @@ "yallist": "2.1.2" } }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "0.2.3" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -3509,9 +3584,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "pify": { @@ -3814,7 +3889,7 @@ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "1.0.6" } }, "resolve-url": { @@ -3857,6 +3932,36 @@ "rollup-pluginutils": "1.5.2" } }, + "rollup-plugin-commonjs": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.5.tgz", + "integrity": "sha512-Hy7KbvsSMNu6aCO2xabp8gBcWrTiS+EzfHkzWwZwMjrcAYuYfCLU7fP1nM4xM0FMye/13r8mzTkfb9AmDaZ1hQ==", + "dev": true, + "requires": { + "estree-walker": "0.5.2", + "magic-string": "0.22.5", + "resolve": "1.8.1", + "rollup-pluginutils": "2.3.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + }, + "rollup-pluginutils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.1.tgz", + "integrity": "sha512-JZS8aJMHEHhqmY2QVPMXwKP6lsD1ShkrcGYjhAIvqKKdXQyPHw/9NF0tl3On/xOJ4ACkxfeG7AF+chfCN1NpBg==", + "dev": true, + "requires": { + "estree-walker": "0.5.2", + "micromatch": "2.3.11" + } + } + } + }, "rollup-plugin-filesize": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-4.0.1.tgz", @@ -4668,6 +4773,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/packages/plugin-bundle/package.json b/packages/plugin-bundle/package.json index 84ee611f951..d04321daeb6 100644 --- a/packages/plugin-bundle/package.json +++ b/packages/plugin-bundle/package.json @@ -28,7 +28,7 @@ "clean": "rimraf dist", "pretty": "npx prettier --write \"src/*.js\"", "lint": "eslint --fix \"src/*.js\"", - "browserbuild": "rollup -c rollup.js --file dist/browser.js --format iife --name freesewing.plugins.bundle", + "browserbuild": "rollup -c rollup.js -o dist/browser.js -f iife -n freesewing_plugins_bundle --footer 'freesewing.plugins.bundle = freesewing_plugins_bundle;'", "nodebuild": "rollup -c rollup.js --file dist/index.js --format cjs", "modulebuild": "rollup -c rollup.js --file dist/index.mjs --format es", "build": "npm run clean && npm run browserbuild && npm run nodebuild && npm run modulebuild" @@ -45,8 +45,10 @@ ] }, "devDependencies": { + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.56", "babel-core": "^6.26.3", "babel-eslint": "^8.2.6", + "babel-plugin-transform-object-rest-spread": "^6.26.0", "eslint": "^5.2.0", "eslint-config-prettier": "^2.9.0", "eslint-plugin-prettier": "^2.6.2", @@ -55,9 +57,10 @@ "prettier": "^1.13.7", "rimraf": "^2.6.2", "rollup-plugin-babel": "^3.0.7", + "rollup-plugin-commonjs": "9.1.5", "rollup-plugin-filesize": "^4.0.1", "rollup-plugin-json": "^3.0.0", - "rollup-plugin-node-resolve": "^3.3.0", + "rollup-plugin-node-resolve": "3.3.0", "rollup-plugin-terser": "^1.0.1" }, "files": [ @@ -65,5 +68,12 @@ "README.md", "package-lock.json", "package.json" - ] + ], + "dependencies": { + "@freesewing/plugin-cutonfold": "0.9.0", + "@freesewing/plugin-dimension": "0.4.0", + "@freesewing/plugin-grainline": "0.0.2", + "@freesewing/plugin-logo": "0.3.2", + "@freesewing/plugin-title": "0.6.2" + } } diff --git a/packages/plugin-bundle/rollup.js b/packages/plugin-bundle/rollup.js index 0e6fd94ff92..07ac3b6e4da 100644 --- a/packages/plugin-bundle/rollup.js +++ b/packages/plugin-bundle/rollup.js @@ -1,6 +1,7 @@ import { terser } from "rollup-plugin-terser"; import babel from "rollup-plugin-babel"; import resolve from "rollup-plugin-node-resolve"; +import commonjs from "rollup-plugin-commonjs"; import json from "rollup-plugin-json"; import { version, name, description, author, license } from "./package.json"; @@ -11,16 +12,13 @@ export default { browser: true }), json(), + commonjs(), babel({ exclude: "node_modules/**" }), terser({ output: { - preamble: `/**\n * ${name} | v${version}\n * ${ - description - }\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${ - license - }\n */` + preamble: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` } }) ] diff --git a/packages/plugin-bundle/src/index.js b/packages/plugin-bundle/src/index.js index 1ae37280a63..4905c6096e6 100644 --- a/packages/plugin-bundle/src/index.js +++ b/packages/plugin-bundle/src/index.js @@ -1,20 +1,40 @@ +import cutonfold from "@freesewing/plugin-cutonfold"; +import dimension from "@freesewing/plugin-dimension"; +import grainline from "@freesewing/plugin-grainline"; +import logo from "@freesewing/plugin-logo"; +import title from "@freesewing/plugin-title"; import { version, name } from "../package.json"; +let bundle = [cutonfold, dimension, grainline, logo, title]; + +function bundleHooks() { + let hooks = {}; + for (let plugin of bundle) { + for (let i in plugin.hooks) { + if (typeof hooks[i] === "undefined") hooks[i] = []; + let hook = plugin.hooks[i]; + if (typeof hook === "function") hooks[i].push(hook); + else if (typeof hook === "array") { + for (let method of hook) hooks[i].push(method); + } + } + } + + return hooks; +} + +function bundleMacros() { + let macros = {}; + for (let plugin of bundle) { + for (let i in plugin.macros) macros[i] = plugin.macros[i]; + } + + return macros; +} + export default { name: name, version: version, - hooks: { - debug: function(next, d = "", e = "", b = "", u = "", g = "") { - console.log( - "%cDebug", - "color: #dd69dd; font-weight: bold", - d, - e, - b, - u, - g - ); - next(); - } - } + hooks: bundleHooks(), + macros: bundleMacros() };