From 0c4187e12af33d22103b3e0711e4ddf771b7040f Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Thu, 2 May 2019 12:37:45 +0200 Subject: [PATCH] :sparkles: Added @freesewing/pattern-info --- packages/pattern-info/.gitignore | 1 + packages/pattern-info/README.md | 148 +++++++++++++++++++++++++ packages/pattern-info/info.md | 50 +++++++++ packages/pattern-info/package.json | 50 +++++++++ packages/pattern-info/rollup.config.js | 48 ++++++++ packages/pattern-info/src/index.js | 22 ++++ packages/pattern-info/src/prebuild.js | 44 ++++++++ 7 files changed, 363 insertions(+) create mode 100644 packages/pattern-info/.gitignore create mode 100644 packages/pattern-info/README.md create mode 100644 packages/pattern-info/info.md create mode 100644 packages/pattern-info/package.json create mode 100644 packages/pattern-info/rollup.config.js create mode 100644 packages/pattern-info/src/index.js create mode 100644 packages/pattern-info/src/prebuild.js diff --git a/packages/pattern-info/.gitignore b/packages/pattern-info/.gitignore new file mode 100644 index 00000000000..bb5f3defed6 --- /dev/null +++ b/packages/pattern-info/.gitignore @@ -0,0 +1 @@ +src/prebuild/ diff --git a/packages/pattern-info/README.md b/packages/pattern-info/README.md new file mode 100644 index 00000000000..4ace6c2883c --- /dev/null +++ b/packages/pattern-info/README.md @@ -0,0 +1,148 @@ +> **Note**: This is part of version 2 of FreeSewing. +> It is a work in progress, and not ready for prime-time yet +> +> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/). + +

Freesewing logo

+

FreeSewing is a free and open source library for made-to-measure sewing patterns

+

@freesewing/pattern-info on NPM + License: MIT + Open issues tagged pkg:pattern-info +

Follow @freesewing_org on Twitter + Chat with us on Gitter + Become a FreeSewing Patron + Follow @freesewing_org on Twitter +

+ +# @freesewing/pattern-info + +Information about available freesewing patterns + + +## Included patterns + +### Blocks + +Blocks or slopers are basic patterns shapes that you can extend into fully detailed patterns. + + - [brian](https://github.com/freesewing/brian) : A basic body block for menswear, and the basis for many of our menswear patterns. + - [bent](https://github.com/freesewing/bent) : A version of [brian](https://github.com/freesewing/brian) with a two-part sleeve, and the and the basis of our menswear coat and jacket patterns. + +### Menswear + + - [aaron](https://github.com/freesewing/aaron) : A tank top or A-shirt + - [bruce](https://github.com/freesewing/bruce) : Boxer briefs + - [carlton](https://github.com/freesewing/carlton) : A long coat, perfect for Sherlock Holmes cosplay + - [huey](https://github.com/freesewing/huey) : A zip-up hoodie + - [hugo](https://github.com/freesewing/hugo) : A hooded sweatshirt with raglan sleeves + - [jaeger](https://github.com/freesewing/jaeger) : A sportscoat + - [simon](https://github.com/freesewing/simon) : A versatile button-down shirt + - [sven](https://github.com/freesewing/sven) : A straightforward sweater + - [wahid](https://github.com/freesewing/wahid) : A classic waistcoat + + +### Womenswear + + - [cathrin](https://github.com/freesewing/cathrin) : An underbust corset or waist trainer + - [tamiko](https://github.com/freesewing/tamiko) : A zero-waste top + +### Accessories + + - [trayvon](https://github.com/freesewing/trayvon) : A (neck) tie + +> #### Note: menswear/womenswear has nothing to do with gender +> +> Freesewing is gender-neutral. When we use the terms **menswear** or **womenswear** +> we are not talking about clothes for men or women. It is merely a category of clothing +> much like **accessories** or **shoes** are categories. +> +> The category gives you an idea what to expect, and is there to help you find things. +> It is not a limitation, or even a suggestion, of what you can or should wear or make. +> +> Wear whatever you want, and be proud of the things you make. + +## Usage + +This package has 2 exports: + + - `patterns` : (the default export) An object holding pattern constructors + - `patternList` : An array of pattern names + + + +## About FreeSewing 🤔 + +Where the world of makers and developers collide, that's where you'll find FreeSewing. + +Our [core library](https://freesewing.dev/en/freesewing) is a *batteries-included* toolbox +for parametric design of sewing patterns. It's a modular system (check our list +of [plugins](https://freesewing.dev/en/plugins) and getting started is as simple as: + +```bash +npm init freesewing-pattern +``` + +The [getting started] section on [freesewing.dev](https://freesewing.dev/) is a good +entrypoint to our documentation, but you'll find a lot more there, including +our [API documentation](https://freesewing.dev/en/freesewing/api), +as well as [examples](https://freesewing.dev/en/freesewing/examples), +and [best practices](https://freesewing.dev/en/do). + +If you're a maker, checkout [freesewing.org](https://freesewing/) where you can generate +our sewing patterns adapted to your measurements. + +## Support FreeSewing: Become a patron 🥰 + +FreeSewing is an open source project run by a community, +and financially supported by our patrons. + +If you feel what we do is worthwhile, you too +should [become a patron](https://freesewing.org/patrons/join). + +## Links 👩‍💻 + + - 💻 Makers website: [freesewing.org](https://freesewing.org) + - 💻 Developers website: [freesewing.dev](https://freesewing.org) + - 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/freesewing) + - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) + - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org) + +## License: MIT 🤓 + +© [Joost De Cock](https://github.com/joostdecock). +See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details. + +## Where to get help 🤯 + +Our [chatroom on Gitter](https://gitter.im) is the best place to ask questions, +share your feedback, or just hang out. + +If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new). diff --git a/packages/pattern-info/info.md b/packages/pattern-info/info.md new file mode 100644 index 00000000000..bfdc194638c --- /dev/null +++ b/packages/pattern-info/info.md @@ -0,0 +1,50 @@ + +## Included patterns + +### Blocks + +Blocks or slopers are basic patterns shapes that you can extend into fully detailed patterns. + + - [brian](https://github.com/freesewing/brian) : A basic body block for menswear, and the basis for many of our menswear patterns. + - [bent](https://github.com/freesewing/bent) : A version of [brian](https://github.com/freesewing/brian) with a two-part sleeve, and the and the basis of our menswear coat and jacket patterns. + +### Menswear + + - [aaron](https://github.com/freesewing/aaron) : A tank top or A-shirt + - [bruce](https://github.com/freesewing/bruce) : Boxer briefs + - [carlton](https://github.com/freesewing/carlton) : A long coat, perfect for Sherlock Holmes cosplay + - [huey](https://github.com/freesewing/huey) : A zip-up hoodie + - [hugo](https://github.com/freesewing/hugo) : A hooded sweatshirt with raglan sleeves + - [jaeger](https://github.com/freesewing/jaeger) : A sportscoat + - [simon](https://github.com/freesewing/simon) : A versatile button-down shirt + - [sven](https://github.com/freesewing/sven) : A straightforward sweater + - [wahid](https://github.com/freesewing/wahid) : A classic waistcoat + + +### Womenswear + + - [cathrin](https://github.com/freesewing/cathrin) : An underbust corset or waist trainer + - [tamiko](https://github.com/freesewing/tamiko) : A zero-waste top + +### Accessories + + - [trayvon](https://github.com/freesewing/trayvon) : A (neck) tie + +> #### Note: menswear/womenswear has nothing to do with gender +> +> Freesewing is gender-neutral. When we use the terms **menswear** or **womenswear** +> we are not talking about clothes for men or women. It is merely a category of clothing +> much like **accessories** or **shoes** are categories. +> +> The category gives you an idea what to expect, and is there to help you find things. +> It is not a limitation, or even a suggestion, of what you can or should wear or make. +> +> Wear whatever you want, and be proud of the things you make. + +## Usage + +This package has 2 exports: + + - `patterns` : (the default export) An object holding pattern constructors + - `patternList` : An array of pattern names + diff --git a/packages/pattern-info/package.json b/packages/pattern-info/package.json new file mode 100644 index 00000000000..2a65d8cf0a8 --- /dev/null +++ b/packages/pattern-info/package.json @@ -0,0 +1,50 @@ +{ + "name": "@freesewing/pattern-info", + "version": "2.0.0-alpha.3", + "description": "Information about available freesewing patterns", + "author": "Joost De Cock (https://github.com/joostdecock)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "sewing" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "clean": "rimraf dist", + "nodebuild": "BABEL_ENV=production rollup -c -o dist/index.js -f cjs", + "modulebuild": "BABEL_ENV=production rollup -c -o dist/index.mjs -f es", + "build": "npm run clean && npm run nodebuild && npm run modulebuild", + "test": "echo \"pattern-info: No tests configured. Perhaps you'd like to do this?\" && exit 0", + "pubtest": "npm publish --registry http://localhost:6662", + "pubforce": "npm publish", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "prebuild": "node src/prebuild.js" + }, + "peerDependencies": {}, + "dependencies": {}, + "devDependencies": {}, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "alpha" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5" + } +} diff --git a/packages/pattern-info/rollup.config.js b/packages/pattern-info/rollup.config.js new file mode 100644 index 00000000000..dbee92ea2c2 --- /dev/null +++ b/packages/pattern-info/rollup.config.js @@ -0,0 +1,48 @@ +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 minify from "rollup-plugin-babel-minify"; +import yaml from "rollup-plugin-yaml"; +import url from "rollup-plugin-url"; +import postcss from "rollup-plugin-postcss"; +import svgr from "@svgr/rollup"; +import peerDepsExternal from "rollup-plugin-peer-deps-external"; +import { name, version, description, author, license } from "./package.json"; + +export default { + input: "src/index.js", + output: [ + { + file: "dist/index.js", + format: "cjs", + sourcemap: true + }, + { + file: "dist/index.mjs", + format: "es", + sourcemap: true + } + ], + plugins: [ + peerDepsExternal(), + resolve({ modulesOnly: true }), + url(), + commonjs(), + json(), + yaml(), + svgr(), + postcss({ + modules: true + }), + babel({ + exclude: "node_modules/**", + plugins: ["@babel/plugin-proposal-object-rest-spread"] + }), + minify({ + comments: false, + sourceMap: true, + banner: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` + }) + ] +}; diff --git a/packages/pattern-info/src/index.js b/packages/pattern-info/src/index.js new file mode 100644 index 00000000000..07c4260ff5a --- /dev/null +++ b/packages/pattern-info/src/index.js @@ -0,0 +1,22 @@ +import options from "./prebuild/options"; +import optionGroups from "./prebuild/option-groups"; +import versions from "./prebuild/versions"; + +const list = [ + "aaron", + "bent", + "brian", + "bruce", + "carlton", + "cathrin", + "huey", + "hugo", + "jaeger", + "simon", + "sven", + "tamiko", + "trayvon", + "wahid" +]; + +export { list, options, optionGroups, versions }; diff --git a/packages/pattern-info/src/prebuild.js b/packages/pattern-info/src/prebuild.js new file mode 100644 index 00000000000..10ccb879b51 --- /dev/null +++ b/packages/pattern-info/src/prebuild.js @@ -0,0 +1,44 @@ +const path = require("path"); +const fse = require("fs-extra"); +const patterns = require("@freesewing/patterns").default; + +const patternOptions = pattern => { + let all = []; + let groups = pattern.optionGroups; + for (let group of Object.keys(groups)) { + for (let option of groups[group]) { + if (typeof option === "string") all.push(option); + else { + for (let subgroup of Object.keys(option)) { + for (let suboption of option[subgroup]) all.push(suboption); + } + } + } + } + + return all; +}; + +let options = {}; +let optionGroups = {}; +let versions = {}; +for (let pattern of Object.keys(patterns)) { + let instance = new patterns[pattern](); + let p = pattern.toLowerCase(); + options[p] = patternOptions(instance.config); + optionGroups[p] = instance.config.optionGroups; + versions[p] = instance.config.version; +} + +fse.writeFileSync( + path.join(".", "src", "prebuild", "options.js"), + "module.exports = " + JSON.stringify(options) + "\n" +); +fse.writeFileSync( + path.join(".", "src", "prebuild", "option-groups.js"), + "module.exports = " + JSON.stringify(optionGroups) + "\n" +); +fse.writeFileSync( + path.join(".", "src", "prebuild", "versions.js"), + "module.exports = " + JSON.stringify(versions) + "\n" +);