diff --git a/packages/brian/package-lock.json b/packages/brian/package-lock.json index f48fbe261a3..4ff5d3462bc 100644 --- a/packages/brian/package-lock.json +++ b/packages/brian/package-lock.json @@ -910,18 +910,270 @@ } } }, + "@freesewing/aaron": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@freesewing/aaron/-/aaron-0.4.2.tgz", + "integrity": "sha512-pXtJjhfLVE97MoMMoUBx07hMdaeWtmtMS+cgO9ctqc7pvTQoE9gbRxQdoTPfGNR8PxtcMh35y111eLf2a+1oCw==", + "requires": { + "@freesewing/brian": "0.14.1" + }, + "dependencies": { + "@freesewing/brian": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@freesewing/brian/-/brian-0.14.1.tgz", + "integrity": "sha512-k9TWLNLZIx0cQDlSiJZhrDn2Vn+UBV5Za1qc8lsXI3aTxOkxfU0KX1ydUOCWDzxSB8eSNMrSwqZ8uRe+AKtL5w==", + "requires": { + "@freesewing/plugin-bundle": "0.5.1", + "freesewing": "^0.19" + } + }, + "freesewing": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/freesewing/-/freesewing-0.19.0.tgz", + "integrity": "sha512-/wSEhF/Z10Pd3IGl3Nq+v/txcOboK21VKdQ1sXuBGp17D6Kq5ah+wbDyBrQRGu0X5sbQo7DazEFZ1kgnxyk5tg==", + "requires": { + "bezier-js": "^2.2.15", + "bin-pack": "1.0.2", + "hooks-fixed": "2.0.2" + } + } + } + }, "@freesewing/antman": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@freesewing/antman/-/antman-0.2.0.tgz", "integrity": "sha512-ot9ipuDoHXHgPF5vtIEBa0aV+XVDkpKoNG91yDqaWmh1liXPgQiMAJrvQ+pKGFsGVkaxr61dAv+3B5VOPYiHtg==", "dev": true }, + "@freesewing/brian": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@freesewing/brian/-/brian-0.14.2.tgz", + "integrity": "sha512-gIbDMhqT4hnLtDrunqlzGqPGgcKOVKfrOT9QryD6w0u7PHENhiOA3qTtRJ8mRKv967wv9M5k1I0J5+GQseCsyw==", + "requires": { + "@freesewing/plugin-bundle": "0.5.1", + "freesewing": "^0.20.1" + } + }, + "@freesewing/bruce": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@freesewing/bruce/-/bruce-0.3.0.tgz", + "integrity": "sha512-kvtu/Y+wxpyPz1tlOhwJBXs09vo0mz0SEIz7ZhFpmjP3AAb5tPKCpvylL2VKkfMGG89/S3YapCaGQRTNYibMQQ==", + "requires": { + "@freesewing/plugin-bundle": "^0.3", + "freesewing": "^0.17" + }, + "dependencies": { + "@freesewing/plugin-bundle": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-bundle/-/plugin-bundle-0.3.0.tgz", + "integrity": "sha512-FUZmGgbrqb3md872w3aXQY+3TReoTeV25ak006UfCBzEJ0lm15QrCanqC46k+0Z6Iv98ChkCo1XZl/kWV1FYFQ==", + "requires": { + "@freesewing/plugin-cutonfold": "0.9.0", + "@freesewing/plugin-dimension": "0.6.1", + "@freesewing/plugin-grainline": "0.0.3", + "@freesewing/plugin-logo": "0.3.3", + "@freesewing/plugin-scalebox": "0.2.0", + "@freesewing/plugin-title": "0.7.0" + } + }, + "@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.6.1", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-dimension/-/plugin-dimension-0.6.1.tgz", + "integrity": "sha512-OUdF3JyLDIwjHHRyuL0DZnfhykZzozv00AekcVOK3TZ61p+UQO4EK1FbDVczCY5SJx5DpYyuastvZ/FEW3SQMw==" + }, + "@freesewing/plugin-grainline": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-grainline/-/plugin-grainline-0.0.3.tgz", + "integrity": "sha512-Oa+FvjsdDfWxIoXa8bATYwj1Neg6q+gNQWJyX7j1HlJnEflsQtJBB8fqwcGJzeK/QDJauvbAm3sBJP30gMwSTw==" + }, + "@freesewing/plugin-logo": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-logo/-/plugin-logo-0.3.3.tgz", + "integrity": "sha512-t9VBoZvFx0tR83bFQMpc4iH/oJaXVr41zX0N8AogTt+FEjnHnZSmCJGTfpYkPtp1mWJSc4ibS95Gyh9c4YNgGA==" + }, + "@freesewing/plugin-scalebox": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-scalebox/-/plugin-scalebox-0.2.0.tgz", + "integrity": "sha512-SskEtAyvYCpjmCHEgjNzuSsMqOyT/ExQVhEdfoS3vjW4I9/uAqhOcI4EYR+gP1N3Ga6yh99hf9gDtSpTJP78pg==" + }, + "@freesewing/plugin-title": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-title/-/plugin-title-0.7.0.tgz", + "integrity": "sha512-LVnokj+SIYPdxehiqoF+RPdLCaCd/MnTBzRebjPWRxGQnywzNyuwgHN8jmJEQGb6dJ/6J4zFEvAm9pS1ID6cug==" + }, + "freesewing": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/freesewing/-/freesewing-0.17.0.tgz", + "integrity": "sha512-LanZsKfdAan5LQH7HvTlRwF6cFxr64G666OeCY9Ij7NnZ79/+AEuffT0lrLpRa1dNU3SY7BWPlnkA8SMeiB8+Q==", + "requires": { + "bezier-js": "^2.2.13", + "bin-pack": "1.0.2", + "hooks": "^0.3.2" + } + } + } + }, + "@freesewing/cathrin": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@freesewing/cathrin/-/cathrin-0.2.0.tgz", + "integrity": "sha512-HuYLpWunrLrUnBiLc3B4NY2e4EcukIjzLIkPpC2xc2w/FUdDA2Q+FM4sdZLL+VmlkAF7iZjztgI0rh18x1ONBw==", + "requires": { + "@freesewing/plugin-bundle": "^0.3", + "freesewing": "^0.17" + }, + "dependencies": { + "@freesewing/plugin-bundle": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-bundle/-/plugin-bundle-0.3.0.tgz", + "integrity": "sha512-FUZmGgbrqb3md872w3aXQY+3TReoTeV25ak006UfCBzEJ0lm15QrCanqC46k+0Z6Iv98ChkCo1XZl/kWV1FYFQ==", + "requires": { + "@freesewing/plugin-cutonfold": "0.9.0", + "@freesewing/plugin-dimension": "0.6.1", + "@freesewing/plugin-grainline": "0.0.3", + "@freesewing/plugin-logo": "0.3.3", + "@freesewing/plugin-scalebox": "0.2.0", + "@freesewing/plugin-title": "0.7.0" + } + }, + "@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.6.1", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-dimension/-/plugin-dimension-0.6.1.tgz", + "integrity": "sha512-OUdF3JyLDIwjHHRyuL0DZnfhykZzozv00AekcVOK3TZ61p+UQO4EK1FbDVczCY5SJx5DpYyuastvZ/FEW3SQMw==" + }, + "@freesewing/plugin-grainline": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-grainline/-/plugin-grainline-0.0.3.tgz", + "integrity": "sha512-Oa+FvjsdDfWxIoXa8bATYwj1Neg6q+gNQWJyX7j1HlJnEflsQtJBB8fqwcGJzeK/QDJauvbAm3sBJP30gMwSTw==" + }, + "@freesewing/plugin-logo": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-logo/-/plugin-logo-0.3.3.tgz", + "integrity": "sha512-t9VBoZvFx0tR83bFQMpc4iH/oJaXVr41zX0N8AogTt+FEjnHnZSmCJGTfpYkPtp1mWJSc4ibS95Gyh9c4YNgGA==" + }, + "@freesewing/plugin-scalebox": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-scalebox/-/plugin-scalebox-0.2.0.tgz", + "integrity": "sha512-SskEtAyvYCpjmCHEgjNzuSsMqOyT/ExQVhEdfoS3vjW4I9/uAqhOcI4EYR+gP1N3Ga6yh99hf9gDtSpTJP78pg==" + }, + "@freesewing/plugin-title": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-title/-/plugin-title-0.7.0.tgz", + "integrity": "sha512-LVnokj+SIYPdxehiqoF+RPdLCaCd/MnTBzRebjPWRxGQnywzNyuwgHN8jmJEQGb6dJ/6J4zFEvAm9pS1ID6cug==" + }, + "freesewing": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/freesewing/-/freesewing-0.17.0.tgz", + "integrity": "sha512-LanZsKfdAan5LQH7HvTlRwF6cFxr64G666OeCY9Ij7NnZ79/+AEuffT0lrLpRa1dNU3SY7BWPlnkA8SMeiB8+Q==", + "requires": { + "bezier-js": "^2.2.13", + "bin-pack": "1.0.2", + "hooks": "^0.3.2" + } + } + } + }, + "@freesewing/hugo": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@freesewing/hugo/-/hugo-0.1.0.tgz", + "integrity": "sha512-6wx3UD31WQUlH5zGk7C0sIBgJSlTxSren5+oH4ZyYidoygca60dJ/IQDZw21u5bkNkcU2QN4Qd+kNXgl31Lk6Q==", + "requires": { + "@freesewing/brian": "^0.11", + "@freesewing/plugin-bundle": "^0.3", + "freesewing": "^0.17" + }, + "dependencies": { + "@freesewing/brian": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@freesewing/brian/-/brian-0.11.1.tgz", + "integrity": "sha512-+3xdcBEGKzlGLlmm1z+1C/x77WeByi7O1Q9hQa7Hb9O57mwKK6SmMwUcn6tBx5/fzxOlSpAUUq3WXUf5wK8yXg==", + "requires": { + "@freesewing/plugin-bundle": "^0.3", + "freesewing": "^0.17" + } + }, + "@freesewing/plugin-bundle": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-bundle/-/plugin-bundle-0.3.0.tgz", + "integrity": "sha512-FUZmGgbrqb3md872w3aXQY+3TReoTeV25ak006UfCBzEJ0lm15QrCanqC46k+0Z6Iv98ChkCo1XZl/kWV1FYFQ==", + "requires": { + "@freesewing/plugin-cutonfold": "0.9.0", + "@freesewing/plugin-dimension": "0.6.1", + "@freesewing/plugin-grainline": "0.0.3", + "@freesewing/plugin-logo": "0.3.3", + "@freesewing/plugin-scalebox": "0.2.0", + "@freesewing/plugin-title": "0.7.0" + } + }, + "@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.6.1", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-dimension/-/plugin-dimension-0.6.1.tgz", + "integrity": "sha512-OUdF3JyLDIwjHHRyuL0DZnfhykZzozv00AekcVOK3TZ61p+UQO4EK1FbDVczCY5SJx5DpYyuastvZ/FEW3SQMw==" + }, + "@freesewing/plugin-grainline": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-grainline/-/plugin-grainline-0.0.3.tgz", + "integrity": "sha512-Oa+FvjsdDfWxIoXa8bATYwj1Neg6q+gNQWJyX7j1HlJnEflsQtJBB8fqwcGJzeK/QDJauvbAm3sBJP30gMwSTw==" + }, + "@freesewing/plugin-logo": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-logo/-/plugin-logo-0.3.3.tgz", + "integrity": "sha512-t9VBoZvFx0tR83bFQMpc4iH/oJaXVr41zX0N8AogTt+FEjnHnZSmCJGTfpYkPtp1mWJSc4ibS95Gyh9c4YNgGA==" + }, + "@freesewing/plugin-scalebox": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-scalebox/-/plugin-scalebox-0.2.0.tgz", + "integrity": "sha512-SskEtAyvYCpjmCHEgjNzuSsMqOyT/ExQVhEdfoS3vjW4I9/uAqhOcI4EYR+gP1N3Ga6yh99hf9gDtSpTJP78pg==" + }, + "@freesewing/plugin-title": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@freesewing/plugin-title/-/plugin-title-0.7.0.tgz", + "integrity": "sha512-LVnokj+SIYPdxehiqoF+RPdLCaCd/MnTBzRebjPWRxGQnywzNyuwgHN8jmJEQGb6dJ/6J4zFEvAm9pS1ID6cug==" + }, + "freesewing": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/freesewing/-/freesewing-0.17.0.tgz", + "integrity": "sha512-LanZsKfdAan5LQH7HvTlRwF6cFxr64G666OeCY9Ij7NnZ79/+AEuffT0lrLpRa1dNU3SY7BWPlnkA8SMeiB8+Q==", + "requires": { + "bezier-js": "^2.2.13", + "bin-pack": "1.0.2", + "hooks": "^0.3.2" + } + } + } + }, "@freesewing/models": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@freesewing/models/-/models-0.4.0.tgz", "integrity": "sha512-0LlNkdertF5wkMtmzq4mUZoMMMOZ9Tx5ByMzz45tk+MOLaHQbiQxR5vJKCSVmn8G54MBAgFZCeGLDPHKiVRo/w==", "dev": true }, + "@freesewing/patterns": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@freesewing/patterns/-/patterns-0.3.0.tgz", + "integrity": "sha512-wZwbRKkdCApBVqevd+CHa1SNRqQ1qwAMCfFzvTRoavLOyqAdw1fJXyUS3Qlzu6+e8V+1UiaBGG26ShTFpJLm1A==", + "requires": { + "@freesewing/aaron": "^0.4", + "@freesewing/brian": "^0.14", + "@freesewing/bruce": "^0.3", + "@freesewing/cathrin": "^0.2", + "@freesewing/hugo": "^0.1" + } + }, "@freesewing/plugin-bundle": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@freesewing/plugin-bundle/-/plugin-bundle-0.5.1.tgz", @@ -2750,13 +3002,13 @@ } }, "freesewing": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/freesewing/-/freesewing-0.19.0.tgz", - "integrity": "sha512-/wSEhF/Z10Pd3IGl3Nq+v/txcOboK21VKdQ1sXuBGp17D6Kq5ah+wbDyBrQRGu0X5sbQo7DazEFZ1kgnxyk5tg==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/freesewing/-/freesewing-0.20.1.tgz", + "integrity": "sha512-/L9W+NU6QUwY619GLjbcvZRRj7A0QUk3qVjHoqqKYU3E07TB3GP2OGf/IoCXmC8cy9Pp7T5DBylBjVWFrs2Kgg==", "requires": { + "@freesewing/patterns": "0.3.0", "bezier-js": "^2.2.15", - "bin-pack": "1.0.2", - "hooks-fixed": "2.0.2" + "bin-pack": "1.0.2" } }, "fs-constants": { @@ -3033,6 +3285,11 @@ "os-tmpdir": "^1.0.1" } }, + "hooks": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/hooks/-/hooks-0.3.2.tgz", + "integrity": "sha1-ox8GDCAmzqbPHKPrF4Qw5xjhxKM=" + }, "hooks-fixed": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-2.0.2.tgz", diff --git a/packages/brian/src/index.js b/packages/brian/src/index.js index 0bd37e71b23..e47b1788212 100644 --- a/packages/brian/src/index.js +++ b/packages/brian/src/index.js @@ -8,54 +8,62 @@ import front from "./front"; import sleevecap from "./sleevecap"; import sleeve from "./sleeve"; -export default class Brian extends freesewing.Pattern { - constructor(settings = false) { - super({ version: version, ...config }).with(pluginBundle); - if (settings !== false) { - for (let key of Object.keys(settings)) { - this.settings[key] = settings[key]; - } +const Brian = function(settings = false) { + // Make this a new freesewing.Pattern instance + freesewing.Pattern.call(this, { version: version, ...config }); + // Load plugins + this.with(pluginBundle); + // Inject settings passed to the constructor + if (settings !== false) { + for (let key of Object.keys(settings)) { + this.settings[key] = settings[key]; } } +}; + +// Setup inheritance +Brian.prototype = Object.create(freesewing.Pattern.prototype); +Brian.prototype.constructor = Brian; + +// Draft method +Brian.prototype._draft = function() { + this.parts.base = this.draftBase(this.createPart()); + if (!this.needs("base", true)) this.parts.base.render = false; + if (this.needs(["back", "front", "sleeve", "sleevecap"])) { + this.parts.back = this.draftBack(this.createPart().copy(this.parts.base)); + } + if (this.needs(["front", "sleeve", "sleevecap"])) { + this.parts.front = this.draftFront(this.createPart().copy(this.parts.back)); + } + if (this.needs(["sleeve", "sleevecap"])) { + this.parts.sleevecap = this.draftSleevecap(this.createPart()); + // Don't render sleevecap unless specifically requested + if (!this.needs("sleevecap", true)) this.parts.sleevecap.render = false; + } + if (this.needs("sleeve")) { + this.parts.sleeve = this.draftSleeve( + this.createPart().copy(this.parts.sleevecap) + ); + } - _draft() { - this.parts.base = this.draftBase(this.createPart()); - if (!this.needs("base", true)) this.parts.base.render = false; - if (this.needs(["back", "front", "sleeve", "sleevecap"])) { - this.parts.back = this.draftBack(this.createPart().copy(this.parts.base)); - } - if (this.needs(["front", "sleeve", "sleevecap"])) { - this.parts.front = this.draftFront( - this.createPart().copy(this.parts.back) - ); - } - if (this.needs(["sleeve", "sleevecap"])) { - this.parts.sleevecap = this.draftSleevecap(this.createPart()); - // Don't render sleevecap unless specifically requested - if (!this.needs("sleevecap", true)) this.parts.sleevecap.render = false; - } - if (this.needs("sleeve")) { - this.parts.sleeve = this.draftSleeve( - this.createPart().copy(this.parts.sleevecap) - ); - } + return this; +}; - return this; - } +// Per-part draft methods +Brian.prototype.draftBase = function(part) { + return base.draft(part); +}; +Brian.prototype.draftBack = function(part) { + return back.draft(part); +}; +Brian.prototype.draftFront = function(part) { + return front.draft(part); +}; +Brian.prototype.draftSleevecap = function(part) { + return sleevecap.draft(part); +}; +Brian.prototype.draftSleeve = function(part) { + return sleeve.draft(part); +}; - draftBase(part) { - return base.draft(part); - } - draftBack(part) { - return back.draft(part); - } - draftFront(part) { - return front.draft(part); - } - draftSleevecap(part) { - return sleevecap.draft(part); - } - draftSleeve(part) { - return sleeve.draft(part); - } -} +export default Brian;